Perso je fais de plus en plus de fichiers de config sous la forme de modules Python (valable pour des configs qui seront éditées par des programmeurs ou adminsys, moins bon pour du monsieur tout le monde car il y a une syntaxe a respecter plus sioux que du .ini par exemple - mais quelqu'un qui peut éditer du XML à la mano ne devrais pas avoir de problème avec des données en Python).
Et en général ça donne, pour reprendre ton exemple:
(si c'est une config dans un outil que pour moi, ça va directement dans le fichier de config, si c'est destiné à être plus réutilisé, ça va dans un module importé au début du fichier de config).
Et après le fichier de config devient: Host("monserveur", "unix-www", "X.X.X.X")
L'avantage que j'y vois, c'est que tu peux utiliser toutes les fonctionnalités de Python pour faciliter l'expression de la configuration et les contrôles. Tu peux définir des constantes globales (par exemple UNIX_WWW="unix-www") pour éviter les fautes de frappe, tu peux ajouter des méthodes, utiliser des listes, etc...
Si tu organise bien les outils, ça fait quelque chose de bien lisible, facile à maintenir, et versionnable.
Par exemple, si tu fairefaire des modèles réutilisables: class ServicesSet(object) :...
Ca a un inconvénient par rapport à XML: c'est pour Python et difficilement réutilisable si tu recodes ton application dans un autre langage. Encore que... rien n'empêche de réécrire un fichier XML à partir d'une telle description en Python.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN
[^] # Re: Vachement gore
Posté par lolop (site web personnel) . En réponse au journal Nagios va-t-il quitter le C pour le Python?. Évalué à 3.
Et en général ça donne, pour reprendre ton exemple:
Une définition de classe, du genre:
hosts_list = []
class Host(object) ;
....def __init__(self,name,services_list,ip) :
........# ...
........hosts_list.append(self)
(si c'est une config dans un outil que pour moi, ça va directement dans le fichier de config, si c'est destiné à être plus réutilisé, ça va dans un module importé au début du fichier de config).
Et après le fichier de config devient:
Host("monserveur", "unix-www", "X.X.X.X")
L'avantage que j'y vois, c'est que tu peux utiliser toutes les fonctionnalités de Python pour faciliter l'expression de la configuration et les contrôles. Tu peux définir des constantes globales (par exemple UNIX_WWW="unix-www") pour éviter les fautes de frappe, tu peux ajouter des méthodes, utiliser des listes, etc...
Si tu organise bien les outils, ça fait quelque chose de bien lisible, facile à maintenir, et versionnable.
Par exemple, si tu fairefaire des modèles réutilisables:
class ServicesSet(object) :...
servicemail = ServiceSet("imap","pop","simap","spop","smtp")
Host("monserveur,"servicemail,"X.X.X.X")
Ca a un inconvénient par rapport à XML: c'est pour Python et difficilement réutilisable si tu recodes ton application dans un autre langage. Encore que... rien n'empêche de réécrire un fichier XML à partir d'une telle description en Python.
Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN