Anomalie #6087
Pouvoir gérer un service non déclaré dans un dico
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
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 :
- L’action
- Le service sous forme de dictionnaire avec les clef suivantes :
name
: le nom, utilisé pour chercher les fichiers sur le disque durmethod
: la méthode de gestion :service
: pour les scripts System Vupstart
: pour les scripts upstartapache
: pour les services apache
activate
:True
ouFalse
si le service est à démarrer ou pascontainer
: le conteneur où le service tournepty
:True
(je ne sais pas vraiment à quoi ça sert mais tous les services ont ça)
- Le contexte où l’action est à effectuer (le conteneur quoi), sous forme de dictionnaire avec les clef suivantes :
name
: le nom du conteneurpath
: le chemin où se trouve la racine du conteneur,u''
pourroot
ip
: l’adresse IP du conteneur,127.0.0.1
pourroot
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
Appliqué par commit e4ca92ba26c3ab0063a9d49a365e53cc1419f0f0.
#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