Evolution #4317
Revoir la détection du mode conteneur en 2.4
Description
Le code de source:creole/config.py?rev=2.3 est à revoir pour la détection du mode conteneur.
Demandes liées
Révisions associées
Préparation LXC pour EOLE 2.4
L’installation des conteneurs LXC en 2.4 se fera avec la commande
lxc-create et un template d’installation EOLE :
lxc-create n test -t eole - --release precise
L’utilitaire « gen_conteneurs » n’est pas encore utilisable pour EOLE
2.4.
Suppression de l’arborescence source eole-conteneur avec dispersion des
fichiers encore utiles. On supprime le fstab et le répertoire hosts
devenu obsolète avec les nouvelles balises creole.
- Makefile (eole_lxc_templates_PROG_DIR): Répertoire des templates
lxc-create.
- lxc/templates/lxc-eole: Installation d’un conteneur EOLE, basé sur
lxc-ubuntu.
- scripts/gen_conteneurs: n’est pas encore utilisable.
- dicos/01_container.xml: Forcer la variable « mode_conteneur_actif » à
oui.
Installer une configuration sshd dans tous les conteneurs.
Créer un fichier témoin d’activation du mode conteneur.
- tmpl/lxc-controller.enable: Verrou d’activation du mode conteneur.
Nettoyage du fichier de configuration de creole.
- creole/config.py: Suppression des variables inutiles en 2.4.
Ref: #4317 @2m
L’attribut « group » d’un conteneur est son « name » par défaut
Un conteneur pouvait avoir un groupe à « None » si aucun dictionnaire ne
défini de groupe pour un conteneur.
- creole/loader.py (CreoleContainer._get_containers): Correction et
factorisation de la définition des attributs de conteneurs.
Ref: #4317 @10m
Utilisation d’une variable inexistante dans les calculs de chemins
- creole/loader.py (CreoleContainer.gen_containers_creole): Utilisation
de la clef « group » du dictionnaire « container ».
(CreoleContainer.gen_files): Récupération de la définition du conteneur
pour calculer le chemin du fichier.
Ref: #4317 @10m
Détection de l’activation du mode conteneur depuis les dictionnaires
- creole/loader.py (CreoleVarLoader.__init__): Définition d’un nouvel
attribut « containers_enabled ».
(CreoleVarLoader._init_creole_varloader): Initialisation de l’attribut
« containers_enabled » en fonction de la valeur
de « self.families['general']['vars']['mode_conteneur_actif']['value'] ».
Fixes: #4317 @45m
Vérification de la cohérence de l’état d’activation du mode conteneur
L’activation du mode conteneur est gérée par une variable de dictionnaire
uniquement.
La fonction « is_lxc_enabled » vérifie si le mode conteneur est activé
dans la configuration et si cet état est cohérent avec les verrous.
- creole/config.py: Suppression des tests liés aux conteneurs.
Suppression de « VIRTDISABLED ».
- creole/containers.py (is_lxc_locked): Renvoi l’état des verrous LXC:
« enable », « disable » ou « None ». Lève une exception si les deux
sont présents.
(is_lxc_enabled): Renvoi l’état de configuration du mode conteneur,
vérifie la cohérence avec les verrous.
- creole/eosfunc.py: Ne plus utiliser « VIRTDISABLED » et suppression du
code inutile lié aux conteneurs.
Ref: #4317 @20m
La variable « VIRTDISABLED » n’existe plus
- data/gen_config.py: Suppression du test sur le lancement
de « gen_conteneurs ».
Ref: #4317 @2m
Génération des verrous du mode conteneur
La variable « mode_conteneur_actif » n’est gérée que par dictionnaire.
- dicos/00_common.xml: Instanciation d’un verrou de désactivation.
Suppression du calcul automatique sur « mode_conteneur_actif ».
- dicos/01_container.xml: Instanciation du verrou d’activation du mode
conteneur.
Surcharge de la variable « mode_conteneur_actif » pour l’activer.
- tmpl/lxc-controller.lockfile: Fichier servant de verrou.
Les chemins ne sont jamais relatifs aux conteneurs
Le commit « c69e10 Utilisation d’une variable inexistante dans les
calculs de chemins » a transformé une variable « string » en dictionnaire
python.
- creole/loader.py (CreoleContainer.gen_files): La variable « container »
est désormais un dictionnaire.
Ref: #4317 @2m
L’attribut « instance_mode » remplace « in_container » et « container_only »
L’idée est qu’une ressource, quelle soit dans sur le maître ou dans un
conteneur, peut n’être à générée que si le mode conteneur est activé ou
désactivé :
instance_mode | mode conteneur | mode non conteneur |
-------------------+----------------+-------------------- | ||
when_container | ✓ | x |
when_no_container | x | ✓ |
always (default) | ✓ | ✓ |
- data/creole.dtd: Ajout de l’attribut « instance_mode » aux balises
« service », « host », « package » et « files »
- creole/loader.py (COMMON_KEY): Remplacement de « in_container » par
« instance_mode ».
(CreoleContainer.gen_files): Suppression de la gestion
de « in_container » et et « container_only »
- creole/loader.py (CreoleContainer._check_instance_mode): Valide la
resource en fonction de son attribut « instance_mode » et de l’état du
mode conteneur.
- creole/loader.py (CreoleContainer._config_list_to_dict): Ne pas tenir
compte des resources non actives en fonction du mode conteneur.
Ref: #4317 @25m
Historique
#1 Mis à jour par Joël Cuissinat il y a plus de 11 ans
- Version cible changé de Eole 2.4-dev-1 à Eole 2.4-dev-2
#2 Mis à jour par Benjamin Bohard il y a plus de 11 ans
- Echéance mis à 01/02/2013
- Statut changé de Nouveau à Accepté
- Début changé de 22/10/2012 à 28/01/2013
#3 Mis à jour par Joël Cuissinat il y a plus de 11 ans
- Echéance changé de 01/02/2013 à 08/02/2013
#4 Mis à jour par Daniel Dehennin il y a environ 11 ans
- Assigné à changé de developpeurs_eole à Daniel Dehennin
#5 Mis à jour par Daniel Dehennin il y a environ 11 ans
- Statut changé de Accepté à Résolu
- % réalisé changé de 0 à 100
Appliqué par commit 8885998695e5ae7774cb7daa47259553d9fd12eb.
#6 Mis à jour par Joël Cuissinat il y a environ 11 ans
- Statut changé de Résolu à Fermé
- "Eclair" 2.4 :
root@eolebase:~# CreoleGet mode_conteneur_actif oui
- "Scribe" 2.4 :
root@scribe:~# CreoleGet mode_conteneur_actif non