Project

General

Profile

Tâche #4100

Distribution EOLE - Scénario #8326: Focus conteneurs 2.4

Organisation arborescente de la configuration des conteneurs et requête

Added by Daniel Dehennin over 8 years ago. Updated over 6 years ago.

Status:
Fermé
Priority:
Normal
Assigned To:
-
Start date:
09/19/2012
Due date:
% Done:

0%

Spent time:
Remaining (hours):

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


Related issues

Blocked by Tiramisu - Evolution #4172: Requête sur la configuration Fermé 09/19/2012 04/04/2014

Associated revisions

Revision f22a3d29 (diff)
Added by Daniel Dehennin about 8 years ago

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

History

#1 Updated by Daniel Dehennin over 8 years ago

  • Target version set to Eole 2.4-dev-1

#2 Updated by Daniel Dehennin over 8 years ago

Avant d’en arriver à la partie creole client/serveur, il faut que la configuration Tiramisu soit interrogeable.

Je copie donc la demande pour Tiramisu afin de pouvoir faire des recherches dans l’objet de configuration.

#3 Updated by Joël Cuissinat over 8 years ago

  • Target version changed from Eole 2.4-dev-1 to Eole 2.4-dev-2

#4 Updated by Joël Cuissinat about 8 years ago

  • Target version deleted (Eole 2.4-dev-2)

#5 Updated by Daniel Dehennin almost 7 years ago

  • Status changed from Nouveau to 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 Updated by Daniel Dehennin almost 7 years ago

  • Status changed from Résolu to Fermé

#7 Updated by Daniel Dehennin almost 7 years ago

  • Parent task set to #8326

Also available in: Atom PDF