Projet

Général

Profil

Tâche #4100

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

Organisation arborescente de la configuration des conteneurs et requête

Ajouté par Daniel Dehennin il y a plus de 11 ans. Mis à jour il y a plus de 9 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Début:
19/09/2012
Echéance:
% réalisé:

0%

Temps passé:
Restant à faire (heures):

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

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

Révisions associées

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

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

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 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-2 supprimé

#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

Formats disponibles : Atom PDF