Anomalie #4765
Ordre des actions dans instance/reconfigure
Description
L'ordre actuel est le suivant (creole/reconfigure.py fourni par creole 2.4.0-56) :
prepare() services(action='stop') containers() packages() templates() services(action='configure') services(action='start') users() certificates() finalize() update_server()
Il peut donc arriver qu'on tente d'arrêter un service appartenant à un paquet qui n'a pas encore été installé ce qui provoque une erreur Exemple avec 30_ltsp_fichier.xml et le paquet eole-ltsp-fichier-pkg :
root@eoleng-24:~# instance WARNING:pyeole.pkg:python-yum not found Début de configuration Arrêt des services invoke-rc.d: unknown initscript, /etc/init.d/ltsp-cluster-accountmanager not found. reconfigure -
Demandes liées
Révisions associées
pyeole/service.py: Création de l'exception "UnknowServiceError"
Cette exception est retournée lorsque le fichier de configuration du
service n'est pas trouvé.
ref #4765 @1h
creole/reconfigure.py: Correction du problème de services non présents
au reconfigure
Application du patch de Daniel, on attend l'exception
UnknownServiceError lors d'un reconfigure ou de l'instance si le script
d'init n'a pas encore été installé par l'appel à package().
package() doit être appelée après containers() qui elle même doit être
précédée par services(action='stop'). Cette dernière pose problème car
elle essaye de stopper des services (listés dans les dicos) qui n'ont
peut être pas encore été installer par package().
fixes #4765 @20m
pyeole/service.py: Ajout d'une exception pour creole_service_code
C'est la méthode creole_service_code qui renvois l'erreur a
reconfigure.py. Il faut donc retourner cette exception dans cette
méthode aussi.
fixes #4765 @30m
creole/reconfigure.py: Correction de l'ordre des actions de reconfigure
certificats() est appellé avant service(action='start')
ajout de param_kernel pour l'application de paramètres noyau
ajout de kill_dhclient pour l'arrêt de dhclient3 en mode 'statique'
ref #4765 @45m
- creole/reconfigure.py : certificates before posttemplate
Ref #4765 @10m
Historique
#1 Mis à jour par Joël Cuissinat il y a environ 11 ans
- Echéance mis à 01/03/2013
#2 Mis à jour par Joël Cuissinat il y a environ 11 ans
- les certificats doivent être générés avant que les services redémarrent (plusieurs les utilisent !)
- les appels à "sysctl" et "killall dhclient3" arrivent bien tard
...
#3 Mis à jour par Luc Bourdot il y a environ 11 ans
- Echéance changé de 01/03/2013 à 08/03/2013
#4 Mis à jour par Daniel Dehennin il y a environ 11 ans
Une possibilité serait d’intercepter une exception, mais cela nécessite de modifier creole_service_code
(python-pyeole:source:pyeole/service.py?rev=e03dace0#L609) afin de faire des tests sur le code de retour de la commande exécutée.
Cela nécessiterait aussi de définir une exception supplémentaire pour gérer le cas d’un service inconnu, par exemple une exception UnknownServiceError
.
index aeab9cb..fa2b370 100644
--- a/creole/reconfigure.py
+++ b/creole/reconfigure.py
@@ -405,7 +405,11 @@ def main():
log.info("Début de configuration")
fonctionseole.zephir("INIT" , "Début de configuration", COMPAT_NAME.upper())
prepare()
- services(action='stop')
+ try:
+ services(action='stop')
+ except UnknownServiceError, e:
+ # Unknown service are OK waiting for packages()
+ pass
containers()
packages()
templates()
#5 Mis à jour par Philippe Caseiro il y a environ 11 ans
- Statut changé de Nouveau à Résolu
- % réalisé changé de 0 à 100
Appliqué par commit ce06c3f7974531e2bcb7d6315bce290f4783d045.
#6 Mis à jour par Philippe Caseiro il y a environ 11 ans
- Statut changé de Résolu à Accepté
- % réalisé changé de 100 à 0
#7 Mis à jour par Philippe Caseiro il y a environ 11 ans
- Statut changé de Accepté à Résolu
- % réalisé changé de 0 à 100
Appliqué par commit python-pyeole:9e67bb60fc3b1e183afab2bf7b67250e8c15855a.