Projet

Général

Profil

Evolution #5740

Permettre d’obtenir toutes les informations utiles à un conteneur ou groupe de conteneur

Ajouté par Daniel Dehennin il y a plus de 10 ans. Mis à jour il y a presque 10 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Début:
10/07/2013
Echéance:
% réalisé:

100%

Temps passé:
Distribution:
EOLE 2.4

Description

Il est utilise de disposer des informations par conteneur ou par groupe de conteneur.

Cela sera utilisé par le processus de templatisation afin de transmettre ses informations dans les templates.

Plusieurs options pour accéder aux informations dans les templates :

  • Accès aux informations du groupe de conteneurs
    • Séparer les informations de groupe et de conteneur dans %%current_container et %%current_group ;
    • Mettre les informations de groupe dans %%current_container sous group
      Le conteneur actuel est %%current_container.name
      Le nom du groupe de conteneur est %%current_container.group.name
      La liste des fichiers du groupe de conteneurs est
      %for %%file in %%current_container.group.files
      - %%file.relative_name
      %end for
      
  • Accès aux informations du conteneur courant
    • Conserver un nombre d’informations minimale: name, ip, group, path
    • Enrichir %%current_container des informations sur les fichiers, services, etc du conteneur courant
      La liste des fichiers du conteneur courant est
      %for %%file in %%current_container.files
      - %%file.relative_name
      %end for
      

Demandes liées

Lié à creole - Anomalie #8469: Mauvaise gestion des doublons par groupe de conteneurs Fermé 26/06/2014 04/07/2014
Lié à creole - Anomalie #8515: L’inventaire par groupe ne conserve par l’ordre de déclaration Fermé 01/07/2014 04/07/2014

Révisions associées

Révision 56b86284 (diff)
Ajouté par Daniel Dehennin il y a plus de 10 ans

Récupérer la liste des groupes de conteneurs

Tous les groupes sont des conteneurs mais tous les conteneurs ne sont pas
des groupes.

  • creole/client.py (CreoleClient.get_groups): Retourne la liste des noms
    de groupe de conteneurs

Ref: #5740 @2m

Révision 7c061108 (diff)
Ajouté par Daniel Dehennin il y a plus de 10 ans

Récupérer toutes les informations par conteneur ou groupe de conteneurs

Ajout de deux méthodes pour le client :

- « CreoleClient.get_container_infos() » permet de récupérer toutes les
informations pour un conteneur

- « CreoleClient.get_group_infos() » permet de récupérer toutes les
informations pour tous les conteneurs d’un groupe.

Les informations retournées sont sous forme de dictionnaire :

{composant: valeur}

« CreoleClient.get_group_infos() » supprime les doublons pour les valeurs
de type list.

  • creole/client.py (_remove_duplicates_in_components): Supprime les
    doublons dans les composants de conteneurs. On utilise la clef
    « name ».
    (CreoleClient.get_containers_components): Récupère les informations des
    composants d’une liste de conteneurs.
    (CreoleClient.get_container_infos): Agrège les informations d’un
    conteneur avec ces composants.
    (CreoleClient.get_group_infos): Agrège les informations du groupe de
    conteneurs avec les composants de tous les conteneurs du groupes.

Ref: #5740 @2h

Révision ebafdd0e (diff)
Ajouté par Daniel Dehennin il y a plus de 10 ans

Utilisation de l’API « CreoleClient » pour les groupes de conteneurs

  • creole/reconfigure.py (install_packages): Installation des paquets par
    groupe de conteneurs.
  • creole/template.py (CreoleTemplateEngine.instance_file):
    « %%current_container » contient toutes les informations du conteneur.
    (CreoleTemplateEngine.instance_files): « %%current_container » contient
    toutes les informations du groupe de conteneurs.
  • creole/containers.py (generate_lxc_containers): Utilisation de
    « CreoleClient.get_groups ».
    (instance_lxc_file): Les informations du groupe de conteneurs sont
    récupérées par « CreoleClient.get_group_infos() ».
    L’instanciation en mode « minimal » ne conserve que l’interface
    inter-conteneurs.
    (instance_lxc_files): Instanciation pour la liste des groupes obtenue
    par « CreoleClient.get_groups() ».
    Si un groupe est passé en paramètre, on valide sont existance par un
    appel à « CreoleClient.get_container() ».

Fixes: #5740 @3h

Révision e20a293d (diff)
Ajouté par Daniel Dehennin il y a plus de 10 ans

Tous les conteneurs n’ont pas d’interface « containers »

La nouvelle API « CreoleClient.get_container_infos() » permettant
d’obtenir les informations pour un conteneur peut renvoyer des
informations incomplètes.

L’interface inter-conteneurs « containers » n’était ajoutée qu’au premier
conteneur d’un group afin de ne pas la générer plusieurs fois dans les
fichiers de configuration.

La nouvelle API « CreoleClient.get_group_infos() » permettant d’obtenir
les informations par groupe de conteneurs gére les doublons entre tous
les conteneurs d’un même groupe, le loader n’a donc pas à supprimer
d’informations.

  • creole/loader.py (CreoleContainer.gen_interfaces): Génerer l’interface
    « containers » pour tous les conteneurs (sauf « all » et « root »).

Ref: #5740 @5m

Révision 6bcc22eb (diff)
Ajouté par Daniel Dehennin il y a plus de 10 ans

Impossible de trouver un fichier pour tous les conteneurs

La celf « name » du dictionnaire d’un fichier est le nom complet avec
préfix du conteneur.

La méthode « CreoleClient.get_file() » prend en argument un nom de
fichier qui est comparé à cette clef « name », elle ne retourne que
l’instance du fichier pour le conteneur « root ».

On inverse la logique introduite par le commit 7e11b59 :

- La clef « name » contient le nom relatif au conteneur ;

- La clef « full_name » contient le chemin préfixé par le conteneur.

  • creole/loader.py (CreoleContainer._gen_file): « name » n’est plus
    modifié. « full_name » est préfixé par le chemin du conteneur.
  • creole/template.py (CreoleTemplateEngine._check_filevar): Prise en
    compte des changements entre « name » et « full_name ».
    (CreoleTemplateEngine.verify): Idem.
    (CreoleTemplateEngine.process): Idem.
    (CreoleTemplateEngine.change_properties): Idem.
    (CreoleTemplateEngine.remove_destfile): Idem.
    (CreoleTemplateEngine._instance_file): Idem.
    (CreoleTemplateEngine._instance_file): Idem.
    (CreoleTemplateEngine.instance_file): Idem.
    (CreoleTemplateEngine.instance_files): Idem.
  • creole/containers.py (ContainerTemplateEngine.instance_lxc_file): Idem.
  • bin/CreoleCat (main): Idem.

Ref: #5740 @5m

Révision 0e7fa0ed (diff)
Ajouté par Daniel Dehennin il y a plus de 10 ans

Utilisation de l’API « CreoleClient » pour les groupes de conteneurs

  • bin/CreoleCat (_find_file): Renvoi un fichier en fonction du nom du
    template.
    (main): Simplification du code en travaillant sur les groupes de
    conteneurs.

Ref: #5740 @10m

Révision e3e312de (diff)
Ajouté par Daniel Dehennin il y a plus de 10 ans

Add missing get_group_infos

Something fails during rebase.

Ref: #5740

Historique

#1 Mis à jour par Daniel Dehennin il y a plus de 10 ans

  • % réalisé changé de 0 à 80

J’ai créé une branche de développement (source:?rev=feature/get-all-info-for-container-and-group) afin de faire tester avant de tout intégrer à master.

Vous pouvez récupérer cette branche sur un serveur de test et copier les fichiers modifiés afin de tester.

Il reste à voir où seront stockées les informations pour les rendre accessibles dans les templates.

#2 Mis à jour par Daniel Dehennin il y a plus de 10 ans

Il y a deux mode d’instanciations des fichiers supportés par CreoleTemplateEngine.instance_files() (source:creole/template.py?rev=c214f1cf#L474)

  1. Pour tous les conteneurs en laissant le paramètre container à None
  2. Pour un seul conteneur en passant le nom du conteneur au paramètre container

Le contexte %%current_container dépend de ce paramètre, la clef containers ne sera disponible que dans le cas d’un groupe de conteneurs.

  1. reconfigure:
    Le nom du conteneur actuel %%current_container.name est égal au nom du groupe de conteneur %%current_container.group
    La liste des conteneurs de ce groupe est
    %for %%name in %%current_container.containers
    - %%name
    %end for
    La liste des fichiers du groupe de conteneurs est
    %for %%file in %%current_container.files
    - %%file.relative_name
    %end for
    
  2. CreoleCat -c bidule -t fichier
    Le nom du conteneur actuel %%current_container.name est peut-être différent du nom du groupe de conteneur %%current_container.group, ça dépend s’il est son propre groupe
    Il n’y a aucune liste de conteneur.
    La liste des fichiers du conteneur est
    %for %%file in %%current_container.files
    - %%file.relative_name
    %end for
    

#3 Mis à jour par Daniel Dehennin il y a plus de 10 ans

  • Statut changé de Nouveau à Résolu
  • % réalisé changé de 80 à 100

#4 Mis à jour par Joël Cuissinat il y a plus de 10 ans

  • Version cible mis à 209

#5 Mis à jour par Joël Cuissinat il y a environ 10 ans

  • Version cible changé de 209 à Eole 2.4-RC3

#6 Mis à jour par Joël Cuissinat il y a presque 10 ans

  • Statut changé de Résolu à Fermé
Utilisé dans les templates suivants (en mode non conteneur) :
  • 02eoleproxy
  • 50-nat_rules
  • ouvre.firewall

Formats disponibles : Atom PDF