Tâche #4100
Distribution EOLE - Scénario #8326: Focus conteneurs 2.4
Organisation arborescente de la configuration des conteneurs et requête
Description
L’arborescence de la configuration des conteneurs est organisée comme suit :
client.get_value('containers/', recursive=True) Out[7]: {u'group': [], u'master': {}, u'option': {u'containers.containers.container0.ip': u'127.0.0.1', u'containers.containers.container0.name': u'root', u'containers.containers.container0.path': u'', u'containers.files.file0.container': u'root', u'containers.files.file0.del_comment': u'', u'containers.files.file0.mkdir': False, u'containers.files.file0.name': u'/etc/eole/release', […] u'containers.network.adresse_broadcast_br0': u'192.0.2.255', u'containers.network.adresse_ip_br0': u'192.0.2.1', u'containers.network.adresse_netmask_br0': u'255.255.255.0', u'containers.network.adresse_network_br0': u'192.0.2.0', […] u'containers.services.service0.activate': True, u'containers.services.service0.container': u'root', u'containers.services.service0.method': u'initd', u'containers.services.service0.name': u'networking', u'containers.services.service0.pty': True, u'containers.services.service1.activate': True, u'containers.services.service1.container': u'root', u'containers.services.service1.method': u'upstart', u'containers.services.service1.name': u'cron',
Je propose de tout centrée autour des conteneurs, par exemple :
u'containers.network.adresse_broadcast_br0': u'192.0.2.255', u'containers.network.adresse_ip_br0': u'192.0.2.1', u'containers.network.adresse_netmask_br0': u'255.255.255.0', u'containers.network.adresse_network_br0': u'192.0.2.0', […] u'containers.container.container0.name' : u'root', u'containers.container.container0.ip' : u'127.0.0.1', u'containers.container.container0.path' : u'', […] u'containers.container.container0.files.file0.name' : u'/etc/eole/release', u'containers.container.container0.files.file0.mkdir' : False, […] u'containers.container.container0.services.service0.activate' : True, u'containers.container.container0.services.service0.name' : u'networking', u'containers.container.container0.services.service0.method' : u'initd', u'containers.container.container0.services.service0.pty' : True, u'containers.container.container0.services.service1.activate' : True, u'containers.container.container0.services.service1.name' : u'cron', u'containers.container.container0.services.service1.method' : u'upstart', u'containers.container.container0.services.service1.pty' : True,
Cela requiert d’avoir une méthode d’interrogation, par exemple creole.client.get_path()
, dont l’utilisation pourrait ressembler à :
from creole import client
root_container = client.get_path(path='containers/container/', name='root')
root_files = client.get_path(path=root_container + '/files/')
for file in root_files:
print "Root container file name '{0}'".format(file.name)
Ce qui permettrait de réécrire certaines méthode comme wrapper à creole.client.get_path()
:
creole.client.get_containers
=>creole.client.get_path('containers/container/')
creole.client.get_files
=>creole.client.get_path('containers/container/', key='files')
creole.client.get_packages
=>creole.client.get_path('containers/container/', key='packages')
creole.client.get_services
=>creole.client.get_path('containers/container/', key='services')
creole.client.get_disknods
=>creole.client.get_path('containers/container/', key='disknods')
NB: l’API est à voir, peut-être en se basant sur quelque chose comme XPath
Demandes liées
Révisions associées
Passage d’arguments aux commandes « GET » entre « CreoleClient » et « CreoleServer »
Utile pour « CreoleClient.get_creole() » afin d’éviter de télécharger
l’intégralité des variables lorsque l’utilisateur n’en demande qu’une
seule.
- creole/server.py (CreoleServer.get): Ajout du paramètre « **kwargs »
afin de recueillir les paramètres des requêtes.
Si la clef « variable » est présente dans les paramètres de requête,
alors on ne requête qu’un seul élément de tiramisu.
- creole/client.py (CreoleClient._request): Ajout du paramètre
« **kwargs » afin de passer des paramètres aux requêtes.
- creole/client.py (CreoleClient.request): Idem.
- creole/client.py (CreoleClient.get): Ajout du paramètre
« **kwargs » afin de passer des paramètres aux requêtes.
- creole/client.py (CreoleClient.get_creole): Passage du nom de la
variable en paramètres à la requête.
Ref: #4100 @45m
Historique
#1 Mis à jour par Daniel Dehennin il y a plus de 11 ans
- Version cible mis à Eole 2.4-dev-1
#2 Mis à jour par Daniel Dehennin il y a plus de 11 ans
#3 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
#4 Mis à jour par Joël Cuissinat il y a environ 11 ans
- Version cible
Eole 2.4-dev-2supprimé
#5 Mis à jour par Daniel Dehennin il y a presque 10 ans
- Statut changé de Nouveau à Résolu
Je dirais que cette demande n’a plus lieu d’être, le comportement actuel de CreoleClient.get_container_infos()
et CreoleClient.get_group_infos()
m’est suffisant.
#6 Mis à jour par Daniel Dehennin il y a presque 10 ans
- Statut changé de Résolu à Fermé
#7 Mis à jour par Daniel Dehennin il y a presque 10 ans
- Tâche parente mis à #8326