Jobs

Lancer un formulaire, suivre le job, l’interrompre, le relancer ou l’approuver

  1. Lancer un formulaire
  2. Téléverser un fichier
  3. Suivre le job
  4. Trouver des jobs
  5. Plus d’informations sur un job
  6. Autres actions

Un job est une exécution d’un formulaire. Lancez-le avec le nom et les valeurs du formulaire, puis suivez-le par son ID.


Lancer un formulaire

Envoyez le nom du formulaire et ses valeurs à POST /api/v2/job :

curl -X POST https://af.example.com/api/v2/job \
  -H "Authorization: Bearer <token>" -H "Content-Type: application/json" \
  -d '{
        "formName": "Create Virtual Machine",
        "extravars": { "vm_name": "test-vm", "datacenter": "dc1" },
        "rawFormData": { "vm_name": "test-vm", "datacenter": "dc1" }
      }'

La requête accepte ces propriétés :

Propriété Signification
formName Le nom du formulaire à lancer. Obligatoire.
extravars Les variables supplémentaires du job. payload est accepté comme autre nom.
rawFormData Les valeurs des champs du formulaire, telles que le navigateur les détient. La validation au lancement les vérifie, et construit les extravars à partir d’elles.
credentials Les identifiants à transmettre au job, par nom.
files Les fichiers téléversés des champs fichier du formulaire (voir Téléversement de fichiers).

La réponse contient l’ID du nouveau job :

{ "id": 42 }

Pour exécuter le job en mode verbeux, ajoutez "__verbose__": true aux extravars. Il faut l’option de rôle allowVerboseMode, sinon le lancement répond 403.


Téléverser un fichier

Un formulaire avec un champ fichier a besoin que le fichier soit d’abord téléversé. Envoyez-le comme partie multipart file à POST /api/v2/job/upload :

curl -X POST https://af.example.com/api/v2/job/upload \
  -H "Authorization: Bearer <token>" -F "file=@firmware.bin"

La réponse décrit le fichier stocké :

{ "fieldname": "file", "originalname": "firmware.bin", "encoding": "7bit", "mimetype": "application/octet-stream",
  "destination": "<UPLOAD_PATH>", "filename": "3f9c...", "path": "<UPLOAD_PATH>/3f9c...", "size": 1048576 }

Transmettez-la telle quelle dans les files du lancement, sous le nom du champ fichier : "files": { "firmware": { ... } }. Le serveur la vérifie par rapport à son propre disque (voir Téléversement de fichiers).


Suivre le job

Lisez le job par son ID :

curl https://af.example.com/api/v2/job/42 -H "Authorization: Bearer <token>"

Le job contient son status, ses extravars (aussi sous payload, le même objet), ses subjobs et son output. La sortie est du HTML avec les couleurs de la page du job ; ajoutez ?text=true pour du texte brut, qui convient à un script ou à un journal :

curl "https://af.example.com/api/v2/job/42?text=true" -H "Authorization: Bearer <token>"

Son status vaut running pendant son exécution, et approve pendant qu’il attend une approbation. Un job se termine avec l’un de ces statuts :

Statut Signification
success Le job s’est terminé sans erreur
failed Le job a échoué
warning Un job multi-étapes s’est terminé, mais une étape qui a continue défini a échoué en cours de route
aborted Le job a été interrompu
rejected L’approbation a été refusée, ce qui l’attendait ne s’est donc pas exécuté
abandoned Le processus qui suivait le job s’est arrêté (un redémarrage, un conteneur remplacé) et le job a été abandonné

Un job qui tournait sur un runner au moment où il a été abandonné peut encore se terminer avec son vrai résultat, si ce runner finit par le mener à bien.


Trouver des jobs

GET /api/v2/job liste les jobs les plus récents en premier, sous la forme { "count": ..., "records": [ ... ] }. Ces paramètres de requête affinent la liste :

Paramètre Signification
records Le nombre maximal de jobs. La valeur par défaut est JOBS_LIST_SIZE (1000), et 5000 au maximum sauf si JOBS_LIST_SIZE est plus élevé.
user, user_type Seulement les jobs de cet utilisateur. user_type vaut local quand il est omis (ldap, azuread, oidc pour les autres).
runner Seulement les jobs exécutés sur ce runner
curl "https://af.example.com/api/v2/job?records=20&user=automation" -H "Authorization: Bearer <token>"

Un utilisateur voit ses propres jobs et les jobs qui attendent une approbation que l’un de ses rôles peut donner. Un admin, ou un rôle avec l’option showAllJobLogs ou manageAllJobs, voit tous les jobs. Un enregistrement contient le résumé du job (id, form, status, start, end, user, runner, …) ; lisez le job lui-même pour ses extravars et sa sortie.

GET /api/v2/job/approvals répond par un nombre : combien de jobs attendent une approbation que l’utilisateur peut donner.


Plus d’informations sur un job

Ces endpoints lisent davantage d’informations sur un job :

Appel Ce qu’il renvoie
GET /api/v2/job/{id}/rawformdata Les valeurs des champs avec lesquelles le job a été lancé, telles que le formulaire les détenait. Les mêmes permissions que pour une relance s’appliquent : votre propre job (ou tous les jobs pour un admin ou un rôle avec manageAllJobs), un formulaire qui autorise la relance, et l’option de rôle allowJobRelaunch.
GET /api/v2/job/{id}/events Les événements structurés d’un job de playbook (depuis la 7.3.0, pour un playbook sur un RTE 7.3.0 ou ultérieur) : chaque play, tâche, résultat d’hôte et le récapitulatif, avec leurs order, type, play, task, host, duration et time
GET /api/v2/job/{id}/events/{order} L’un de ces événements avec son result complet, tel que l’affiche la boîte de dialogue Résultat de la tâche ; 400 quand order n’est pas un nombre entier, 404 quand le job n’a pas cet événement
GET /api/v2/job/{id}/node/{nodeId} Un nœud d’un job de workflow : { "node", "job", "extravars", "artifacts" }, où job est l’ID du job propre au nœud, ou null quand le nœud ne s’est pas exécuté.

Autres actions

Ces endpoints agissent sur un job existant :

Appel Action
POST /api/v2/job/{id}/abort Interrompre un job en cours
POST /api/v2/job/{id}/relaunch Relancer un job, tel qu’il s’est exécuté ou avec des changements (voir Relancer)
POST /api/v2/job/{id}/approve Approuver un job qui attend une approbation ; votre propre job répond 403, sauf si son approbation définit allowSelf: true ou si vous êtes admin
POST /api/v2/job/{id}/reject Rejeter un job qui attend une approbation
GET /api/v2/job/{id}/download Télécharger la sortie du job
DELETE /api/v2/job/{id} Supprimer un job

L’interruption, l’approbation, le rejet et la suppression répondent par un message, et une relance aussi par l’ID du nouveau job :

{ "message": "Job has been relaunched with job id 43", "id": 43 }

Ajoutez ?verbose=true à une relance pour exécuter le nouveau job en mode verbeux, avec l’option de rôle allowVerboseMode. Un job qui n’est pas dans le bon état pour l’action, par exemple l’interruption d’un job déjà terminé, répond 409.