Projet

Général

Profil

Anomalie #6087

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

Ajouté par Fabrice Barconnière il y a plus de 10 ans. Mis à jour il y a plus de 10 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Début:
24/09/2013
Echéance:
27/09/2013
% réalisé:

100%

Temps passé:
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

Révisions associées

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

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

Historique

#1 Mis à jour par Emmanuel GARETTE il y a plus de 10 ans

  • Assigné à Emmanuel GARETTE supprimé

#2 Mis à jour par Fabrice Barconnière il y a plus de 10 ans

  • Projet changé de creole à python-pyeole
  • Assigné à mis à Daniel Dehennin

#3 Mis à jour par Daniel Dehennin il y a plus de 10 ans

  • Début mis à 24/09/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 Mis à jour par Fabrice Barconnière il y a plus de 10 ans

  • Statut changé de Nouveau à Accepté

ça me va

#5 Mis à jour par Daniel Dehennin il y a plus de 10 ans

  • Statut changé de Accepté à Résolu
  • % réalisé changé de 0 à 100

#6 Mis à jour par Joël Cuissinat il y a plus de 10 ans

  • Statut changé de Résolu à Fermé

#7 Mis à jour par Joël Cuissinat il y a plus de 10 ans

Exemple d'utilisation dans le commit : arv:ed3607d

Formats disponibles : Atom PDF