Aller au contenu | Aller au menu | Aller à la recherche

DOT Generator

Graphviz - Exemple de grapheMa tâche actuelle au boulot consiste à mettre à jour une chaîne de jobs Control-M en fonction des mises à jour de l'applicatif maison. Toutefois, n'ayant pas accès à Control-M, je dois mettre à jour le fichier d'exportation Control-M qui sera, par la suite, réinjecter dans le serveur. Je n'ai donc aucune autre interface qu'un document austère listant tous les groupe de jobs possibles et ce sur plus de 800 lignes. Bien sûr, les chaînes de dépendances sont telles que si je me plante, c'est tout le système qui part à vau-l'eau. Donc, plutôt que de passer trois heures par lignes pour vérifier toutes les dépendances, j'ai préféré créer des graphes de dépendances. Pour aller plus vite. Mais comme il y avait encore un gain à faire, j'ai automatisé cette tâche. C'est là où intervient le script dont je parle aujourd'hui : à partir d'un export de la chaîne Control-M au format CSV, ce script crée tous les graphes de dépendances des différents groupes de jobs.
Ce que je sous-entend par là, c'est que ce script prend en entrée un fichier CSV généré par Control-M pour produire autant de fichiers de groupes de job que nécessaires et ces fichiers au format DOT pourront être utilisé par des ressources comprenant ce type de fichiers (au hasard, Graphviz ;-) ). De plus, si Graphviz est déjà installé sur la machine où est exécuté ce script (dot_gen.sh de son petit nom), il est possible de générer directement un fichier PNG ou JPEG.
Par exemple, prenons cette chaîne-ci :
Fichier d'import Excel - Control-M
Bien que courte, c'est déjà compliqué à lire alors, il faut imaginer des groupes de 300 jobs et pleurer :-s Bref, à l'aide de dot_gen.sh et des arguments qui vont bien :

dot_gen.sh --label 4 1 5 < fichier_entree.csv

--label indique la colonne des intitulés et où 1 et 5 sont respectivement les colonnes des noms de jobs et des conditions à leur exécution, on obtient le fichier suivant :

digraph JDEMA {
JDEMA000 [label="Début du démarrage"]
JDEMA999 [label="Fin du démarrage"]
JDEMAAA [label="Application A"]
JDEMAAB [label="Application B"]
JDEMAAC [label="Application C"]
JDEMAAD [label="Application D"]
JDEMATA [label="Test Appli A"]
JDEMATB [label="Test Appli B"]
JDEMATC [label="Test Appli C"]
JDEMATD [label="Test Appli D"]
JDEMA000 -> JDEMA999
JDEMATD -> JDEMA999
JDEMA000 -> JDEMAAA
JDEMA000 -> JDEMAAB
JDEMATA -> JDEMAAC
JDEMATB -> JDEMAAC
JDEMATC -> JDEMAAD
JDEMAAA -> JDEMATA
JDEMAAB -> JDEMATB
JDEMAAC -> JDEMATC
JDEMAAD -> JDEMATD
}

Celui-ci peur-être directement géré en PNG via l'option --png à dot_gen.sh où alors, a posteriori, en utilisant Graphviz :

dot -Tpng JDEMA.dot -o JDEMA.png

On obtient le graphe suivant :
Graph de dépendance - ControlM
Avouez que c'est quand bien beaucoup plus facile à lire que l'original au format Excel ;-)

N.B. : Pour avoir accès à toutes les options de dot_gen.sh, lancer le script sans aucun argument pour faire apparaitre l'aide en ligne.

QR code
Jean-Baptiste Langlois

Auteur: Jean-Baptiste Langlois

Restez au courant de l'actualité et abonnez-vous au Flux RSS de cette catégorie

Commentaires (0)

Soyez le premier à réagir sur cet article

Ajouter un commentaire Fil des commentaires de ce billet

:-) ;-) :-/ :mdr: :-D :-( :-C 8-) :-O :-s :siffle: :-P :love: :oops: :money: :caca:


À voir également

ServiceNow-logo-300x200.jpg

Modules Python

Interface de communications liés à mon travail actuel

Lire la suite

Amazon Web Services

Ansible Extended Modules

Modules Ansible pour Amazon EC2, écrit en Python

Lire la suite