Project

General

Profile

Anomalie #4765

Ordre des actions dans instance/reconfigure

Added by Joël Cuissinat over 7 years ago. Updated over 7 years ago.

Status:
Fermé
Priority:
Normal
Assigned To:
Category:
-
Start date:
Due date:
03/08/2013
% Done:

100%

Estimated time:
0.50 h
Spent time:
Distribution:
EOLE 2.4

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 -


Related issues

Related to ead - Evolution #4979: Réintégrer l'enrôlement automatique du frontend EAD local sur 2.4 Fermé 06/17/2013 06/21/2013
Precedes creole - Anomalie #5021: UnknownServiceError fait sortir sortir de la boucle reconfigure : services(action='stop') Fermé 07/22/2013 07/26/2013

Associated revisions

Revision 91bd2d06 (diff)
Added by Philippe Caseiro over 7 years ago

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

Revision ce06c3f7 (diff)
Added by Philippe Caseiro over 7 years ago

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

Revision 9e67bb60 (diff)
Added by Philippe Caseiro over 7 years ago

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

Revision 66fbdd36 (diff)
Added by Philippe Caseiro over 7 years ago

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

Revision efbbf978 (diff)
Added by Joël Cuissinat over 7 years ago

  • creole/reconfigure.py : certificates before posttemplate

Ref #4765 @10m

Revision 7db126a5 (diff)
Added by Joël Cuissinat almost 7 years ago

  • creole/reconfigure.py : suppression du try sur
    services(action='stop') car appelé trop tôt

Ref #4765
Ref #5021 @15m

History

#1 Updated by Joël Cuissinat over 7 years ago

  • Due date set to 03/01/2013

#2 Updated by Joël Cuissinat over 7 years ago

Remarques supplémentaires :
  • 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 Updated by Luc Bourdot over 7 years ago

  • Due date changed from 03/01/2013 to 03/08/2013

#4 Updated by Daniel Dehennin over 7 years ago

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 Updated by Philippe Caseiro over 7 years ago

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

#6 Updated by Philippe Caseiro over 7 years ago

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

#7 Updated by Philippe Caseiro over 7 years ago

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

#8 Updated by Joël Cuissinat over 7 years ago

  • Status changed from Résolu to Fermé

Vu

Also available in: Atom PDF