Tâche #4255
Distribution EOLE - Scénario #8829: Demandes EOLE 2.4 déjà résolues
Fournir un serveur et un client creole
Description
Le serveur prototype actuel est basé sur basicHTTPServer.
API REST:- /get: récupère une valeur ou un arbre de configuration tiramisu
- /list: liste les éléments à un niveau de l’arbre.
Révisions associées
Nouveau serveur creole et son client
Le serveur écoute par défaut sur 127.0.0.1:8000 et répond aux requêtes
HTTP « /get » et « /list ».
- creole/server.py: Nouveau serveur utilisant cherrypy.
- creole/client.py: Nouveau client utilisant la nouvelle API REST du
serveur.
Définition de wrapper pour obtenir des informations ciblées et les
présenter.
- sbin/creoled: Lanceur pour le daemon creole.
- init/creoled: Script d’init du daemon creole.
- setup.py: Install le script d’init et le lanceur.
Mise à niveau de l’utilisation de creole.client
- creole/cert.py: Utilisation de l’API de l’objet CreoleClient.
- creole/containers.py: Idem.
- creole/service.py: Idem.
- data/diag.py: Idem.
Ref: #4255 @15m
Mise à niveau du moteur de templatisation creole
- creole/template.py: Utilisation de l’API de l’objet CreoleClient.
Création d’un objet CreoleTemplateEngine pour regrouper les méthodes
d’instanciation de template cheetah. Création d’un objet CreoleMaster
pour gérer les variables master/slave.
(CreoleTemplateEngine.patch_template): Méthode d’application des
patches.
(CreoleTemplateEngine.strip_template_comment): Méthode de suppression
des commentaires.
(CreoleTemplateEngine._copy_to_template_dir): Copie des templates dans
le répertoire de travail.
(CreoleTemplateEngine.prepare_template): Wrapper de préparation des
templates.
(CreoleTemplateEngine.change_properties): Force le propriétaire et le
groupe principal à « root:root » si rien n’est défini.
Force les permissions à « 0644 » si rien n’est défini.
(CreoleTemplateEngine.instance_file): Instancie un fichier par son nom
de destination (attribut « name » des « file » des dictionnaires creole).
(CreoleTemplateEngine.instance_files): Instancie des fichiers en masse,
par défaut tous les fichiers de tous les conteneurs.
Ref: #4255 @34h
Correction et simplification du logger creole
- creole/log.py: Fourni une fonction init_creole_log qui retourne un
logger vers le fichier de log creole pour le namespace « creole ».
- tests/test_log.py: Mise à jour.
Ref: #4255 @3h
Mise à niveau des commandes shell
Utilisation de l’API de l’objet CreoleClient.
Nécessite une version à jour de python-pyeole.
- bin/CreoleCat: Instanciation d’un template depuis son nom ou d’un
fichier source.
- bin/CreoleGet: Renvoie la valeur d’une variable.
- bin/CreoleService: Actions sur les services.
Ref: #4255 @17h
Interdépendance creole et pyeole
- debian/control (Depends): Ajout de la version minimale de python-pyeole.
(Breaks): Casse pyeole à cause du changement d’API.
Ref: #4255 @10m
Ajout des la dépendance python pour le serveur et le client
- debian/control (Depends): Ajout de python-cherrypy3 et python-requests.
Ref: #4255 @2m
CreoleService n’est pas fonctionel
- bin/CreoleService: Ajout des import manquants.
(parse_cmdline): Les arguments positionnels ne supporte pas l’option
« required » car ils le sont par défaut.
(main): On groupe les services par conteneurs et on boucle sur les
conteneurs/services.
Ref: #4255 @2m
Mise à jour de la gestion des services
- creole/service.py (instance_services): Passage du dictionnaire
décrivant le service à pyeole.service suite au changement d’API.
(stop_services): Arrête tous les services, sauf le réseau.
(start_services): Démarre tous les services, sauf le réseau qui est
redémarré.
(_restart_service): L’argument « container » est devenu obsolète avec
le passage du dictionnaire de service complet.
(restart_services): Utilisation de la nouvelle API
de « _restart_service ».
L’instanciation doit s’arrêter à la première erreur
- creole/template.py (CreoleTemplateEngine.instance_file): Ne pas
intercepter les exceptions.
(CreoleTemplateEngine.instance_files): Idem.
Typo de nom de variable.
Ref: #4255 @2m
Permettre l’utilisation d’un objet « CreoleClient() » dans les templates
- creole/template.py (CheetahTemplate.__init__): N’utilise plus le
dictionnaire de toutes les variables.
Remplacer les appels « %%creole_get() » par « %%creole_client() » dans
les templates.
(init): Suppression de la variable d’instance inutile
all_variables_dict.
(CreoleTemplateEngine.process): Utilisation de la nouvelle API de « CheetahTemplate() »
Ref: #4255 @5m
Corriger le logger du daemon creole
- creole/server.py: Utilisation de pyeole.log et création d’un logger
global.
(CreoleDaemon._load_argparse): Utilisation de pyeole.scriptargs.
(CreoleDaemon._configure_log): Création du logger et configuration de
cherrypy pour ne pas gérer lui même les logs.
Ref: #4255 @20m
Ne pas logger creoled via syslog
Lorsqu’un fichier est instancié dans le répertoire /etc/eole creoled
redémarre et plante car le SysLogHandler ne gére pas la reconnection.
- creole/server.py (CreoleDaemon._configure_log): On log dans un fichier
en mode daemon.
Ref: #4255 @2m
Historique
#1 Mis à jour par Daniel Dehennin il y a plus de 11 ans
- Statut changé de Nouveau à Résolu
- % réalisé changé de 0 à 100
Appliqué par commit 64313fd21d4c761f58b02edb3278543615fb55a8.
#2 Mis à jour par Joël Cuissinat il y a plus de 11 ans
- Statut changé de Résolu à Fermé
Formidable \o/
#3 Mis à jour par Daniel Dehennin il y a plus de 9 ans
- Tâche parente mis à #8829
#4 Mis à jour par Daniel Dehennin il y a plus de 9 ans
- Echéance mis à 12/09/2014
#5 Mis à jour par Daniel Dehennin il y a plus de 9 ans
- Echéance changé de 12/09/2014 à 14/11/2012