Projet

Général

Profil

Anomalie #4765

Ordre des actions dans instance/reconfigure

Ajouté par Joël Cuissinat il y a environ 11 ans. Mis à jour il y a environ 11 ans.

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

100%

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


Demandes liées

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

Révisions associées

Révision 91bd2d06 (diff)
Ajouté par Philippe Caseiro il y a environ 11 ans

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

Révision ce06c3f7 (diff)
Ajouté par Philippe Caseiro il y a environ 11 ans

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

Révision 9e67bb60 (diff)
Ajouté par Philippe Caseiro il y a environ 11 ans

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

Révision 66fbdd36 (diff)
Ajouté par Philippe Caseiro il y a environ 11 ans

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

Révision efbbf978 (diff)
Ajouté par Joël Cuissinat il y a environ 11 ans

  • creole/reconfigure.py : certificates before posttemplate

Ref #4765 @10m

Révision 7db126a5 (diff)
Ajouté par Joël Cuissinat il y a plus de 10 ans

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

Ref #4765
Ref #5021 @15m

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

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 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

#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

#8 Mis à jour par Joël Cuissinat il y a environ 11 ans

  • Statut changé de Résolu à Fermé

Vu

Formats disponibles : Atom PDF