Il est possible de faire référence aux autres tâches du job (ou à un autre job et ses tâches1) via les macros ok, err et le hash %result. Les variables du job sont utilisables dans les scripts et sont remplacées avant l'exécution.
Les scripts sont exécutés dans un environnement Safe. L'accès est alors restreint aux fonctions définies dans les modules Script et Cond.
ok('id1') $result{'id1'} mailto('${EMAIL}', '${SUBJECT}', 'message') ; max_start_time('+3 hours') ; # 3 heures depuis de debut du job max_start_time('23:00') ; # maintenant < aujoud'hui 23:00 open(FP, '>/tmp/test') ; # impossible
Le champ cond des éléments job et task est une expression perl interprétée avant l'exécution de la commande ou à la fin du job.
Si la condition échoue (renvoie undef ou bien 0), la commande ne sera pas exécutée. Si les autres tâches ne sont pas terminées, la condition est mise en attente et sera réévaluée après la fin des tâches dépendantes.
Si toutes les tâches dépendantes ne sont pas terminées, le script échoue sans être exécuté.
ok('${ID}') or mailto('root', 'Erreur sur tache ${ID}', 'Cette tache est en erreur...') ;
Macro | Informations | Exemple |
---|---|---|
ok('task_id') | Renvoi vrai si task_id a un code de retour valant 0 | ok('test1') |
err('task_id') | Renvoi vrai si task_id a un code de retour différent de 0 | ok('id1') && err('id2') |
finish('id') | Renvoi vrai si id a un code de retour | finish('id2') |
job_end([status [,info]]) | Déclenche la fin de l'exécution d'un job | job_end(1) if err('id1') |
mailto(to,subject,msg) | Envoi un mail | mailto('root', 'sub', 'msg') |
max_start_time(date) | Renvoie ok si la date en argument est dans le future | max_start_time('12:00') |
master_connection_is_ok() | Renvoie ok si la connexion au master est ok | master_connection_is_ok() |
Eric 2005-12-17