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 13 ans
- Version cible mis à Eole 2.4-dev-1
#2 Mis à jour par Daniel Dehennin il y a plus de 13 ans
#3 Mis à jour par Joël Cuissinat il y a plus de 13 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 13 ans
- Version cible
Eole 2.4-dev-2supprimé
#5 Mis à jour par Daniel Dehennin il y a presque 12 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 12 ans
- Statut changé de Résolu à Fermé
#7 Mis à jour par Daniel Dehennin il y a presque 12 ans
- Tâche parente mis à #8326