Project

General

Profile

Anomalie #6087

Pouvoir gérer un service non déclaré dans un dico

Added by Fabrice Barconnière about 10 years ago. Updated almost 10 years ago.

Status:
Fermé
Priority:
Normal
Assigned To:
Category:
-
Start date:
09/24/2013
Due date:
09/27/2013
% Done:

100%

Spent time:
Distribution:
EOLE 2.4

Description

run-parts: executing /usr/share/eole/posttemplate/00-arv reconfigure
Traceback (most recent call last):
  File "/usr/share/eole/posttemplate/00-arv", line 85, in <module>
    creole_service_out({'name': 'arv', 'method': 'upstart'}, 'stop', container={'name': 'root'})
  File "/usr/lib/python2.7/dist-packages/pyeole/decorator.py", line 192, in wrapper
    return self.decorate(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/pyeole/decorator.py", line 439, in decorate
    ret = self.decorated(*args, **kwargs)
  File "/usr/lib/python2.7/dist-packages/pyeole/service/__init__.py", line 478, in creole_service_out
    manage_service(action, service[u'name'], container=container[u'name'])
  File "/usr/lib/python2.7/dist-packages/pyeole/service/__init__.py", line 171, in manage_service
    _manage_service(action, services=names, ctx=ctx)
  File "/usr/lib/python2.7/dist-packages/pyeole/service/__init__.py", line 218, in _manage_service
    raise UnknownServiceError(msg)
pyeole.service.error.UnknownServiceError: Service unknown to creoled in root: arv
run-parts: /usr/share/eole/posttemplate/00-arv exited with return code 1
Traceback (most recent call last):
  File "/usr/bin/reconfigure", line 9, in <module>
    main()
  File "/usr/lib/python2.7/dist-packages/creole/reconfigure.py", line 433, in main
    run_parts(u'posttemplate')
  File "/usr/lib/python2.7/dist-packages/creole/reconfigure.py", line 157, in run_parts
    raise Exception(u'Erreur {0}'.format(directory))
Exception: Erreur posttemplate

depuis version creole 2.4.0-180

Associated revisions

Revision e4ca92ba (diff)
Added by Daniel Dehennin about 10 years ago

Appliquer des actions sur des services non gérés par « creole »

La nouvelle API n’expose aucune fonction publique pour appliquer facilement
des actions à des services non présents dans les dictionnaires
« creole ».

  • pyeole/service/__init__.py (unmanaged_service): Nouvelle fonction
    permettant de démarrer ou arrêter un service System V ou
    upstart.

Fixes: #6087 @30m

History

#1 Updated by Emmanuel GARETTE about 10 years ago

  • Assigned To deleted (Emmanuel GARETTE)

#2 Updated by Fabrice Barconnière about 10 years ago

  • Project changed from creole to python-pyeole
  • Assigned To set to Daniel Dehennin

#3 Updated by Daniel Dehennin about 10 years ago

  • Start date set to 09/24/2013

Il faut utiliser la fonction privée pyeole.service._manage_service() source:pyeole/service/__init__.py?rev=e6afcf0#L179

Cette fonction requiert 3 paramètres :

  1. L’action
  2. Le service sous forme de dictionnaire avec les clef suivantes :
    1. name : le nom, utilisé pour chercher les fichiers sur le disque dur
    2. method : la méthode de gestion :
      • service : pour les scripts System V
      • upstart : pour les scripts upstart
      • apache : pour les services apache
    3. activate : True ou False si le service est à démarrer ou pas
    4. container : le conteneur où le service tourne
    5. pty : True (je ne sais pas vraiment à quoi ça sert mais tous les services ont ça)
  3. Le contexte où l’action est à effectuer (le conteneur quoi), sous forme de dictionnaire avec les clef suivantes :
    1. name : le nom du conteneur
    2. path : le chemin où se trouve la racine du conteneur, u'' pour root
    3. ip : l’adresse IP du conteneur, 127.0.0.1 pour root
    4. services : liste des services du conteneurs, permet de vérifier que le second argument est bien déclaré dans le conteneur

On peut déclarer une nouvelle fonction qui prend un nom de service, une méthode et un nom de conteneur et qui génère les dictionnaires qui vont bien et ensuite appel pyeole.service._manage_service().

Je propose pyeole.service.unmanaged_service(action, service_name, service_method, container='root')

Ça convient à tout le monde ?

#4 Updated by Fabrice Barconnière about 10 years ago

  • Status changed from Nouveau to Accepté

ça me va

#5 Updated by Daniel Dehennin about 10 years ago

  • Status changed from Accepté to Résolu
  • % Done changed from 0 to 100

#6 Updated by Joël Cuissinat almost 10 years ago

  • Status changed from Résolu to Fermé

#7 Updated by Joël Cuissinat almost 10 years ago

Exemple d'utilisation dans le commit : arv:ed3607d

Also available in: Atom PDF