Project

General

Profile

Tâche #20847

Scénario #20668: Finaliser Upgrade-Auto de 2.5.2 vers 2.6.1 (suite)

Upgrade-Auto Amonecole : l'instance ne devrait pas être possible si gen_conteneurs n'a pas été exécuté

Added by Fabrice Barconnière over 2 years ago. Updated over 2 years ago.

Status:
Fermé
Priority:
Normal
Assigned To:
Start date:
04/24/2017
Due date:
% Done:

100%

Estimated time:
1.00 h
Spent time:
Remaining (hours):
0.0

Associated revisions

Revision 1e0d2474 (diff)
Added by Laurent Flori over 2 years ago

Warning si gen_conteneur n'est pas executé après upgrade et avant instance

ref: #20847

Mise en place d'un message d'erreur si tentative d'instance avant gen_conteneurs apres upgrade

Revision 1e911550 (diff)
Added by Laurent Flori over 2 years ago

Mise en place d'un nouveau semaphore pour détecter la procédure d'upgrade en cours

ref: #20847

Revision fa254fbd (diff)
Added by Laurent Flori over 2 years ago

Mise en place d'un lock avant upgrade poru amonecole

ref: #20847

Revision a256f5ff (diff)
Added by Fabrice Barconnière over 2 years ago

Upgrade en mode conteneur : typo sur la variable indiquant le mode conteneur

ref #20847

Revision ce46f31a (diff)
Added by Fabrice Barconnière over 2 years ago

Il manquait la suppression du semaphore gen_conteurs en fin de procédure

ref #20847

History

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

L'Upgrade devrait supprimer le fichier de lock défini par :

>>> from creole.reconfigure import container_instance_lockfile
>>> print container_instance_lockfile
/etc/eole/.container_instance.lock

#2 Updated by Laurent Flori over 2 years ago

Le fichier de lock ne sert pas à empêcher instance si un gen_conteneur est nécessaire.

S'il faut absolument exécuter gen_conteneur avant instance, ce serait de déclarer un nouveau fichier de lock dans creole/config.py:

GEN_CONTAINER_NEEDED = '/etc/eole/.gen_container.lock'

Et de créer ce fichier en post_upgrade

De patcher creole/reconfigure.py:

--- /usr/lib/python2.7/dist-packages/creole/reconfigure.py    2017-05-12 14:35:23.000000000 +0200
+++ ./reconfigure.py    2017-06-20 17:13:57.430921160 +0200
@@ -39,7 +39,7 @@
 import fonctionseole, template, cert
 from .eosfunc import is_instanciate
 from .config import configeol, INSTANCE_LOCKFILE, UPGRADE_LOCKFILE, \
-    container_instance_lockfile, VIRTROOT, charset
+    container_instance_lockfile,GEN_CONTAINER_NEEDED, VIRTROOT, charset
 from .containers import is_lxc_enabled, is_lxc_running, is_lxc_started, \
     generate_lxc_container, create_mount_point, lxc_need_restart
 from .error import NetworkConfigError
@@ -283,6 +283,9 @@
     if os.path.isfile(container_instance_lockfile) and not options.interactive:
         raise Exception(_('you have run gen_conteneurs, please use instance instead of reconfigure'))

+    if os.path.isfile(GEN_CONTAINER_NEEDED):
+        raise Exception(_('you have to run gen_conteneurs, please use gen_conteneurs to generate containers'))
+
     if display_info:
         print
         print error_msg_documentation

Il faut aussi effacer le nouveau fichier de lock après le gen_conteneurs dans /usr/sbin/gen_conteneurs:
--- /usr/sbin/gen_conteneurs    2017-05-19 10:33:09.000000000 +0200
+++ ./gen_conteneurs    2017-06-20 17:23:00.158898434 +0200
@@ -20,7 +20,7 @@
 import sys
 import argparse
 import traceback
-from os import system
+from os import system, remove
 from os.path import isdir

 from pyeole import scriptargs
@@ -32,7 +32,7 @@
 _ = i18n('eole-common')

 from creole.reconfigure import containers, install_packages, \
-   container_instance_lockfile, options, restart_creoled
+   container_instance_lockfile, GEN_CONTAINER_NEEDED, options, restart_creoled

 _CACHE_DIR = '/opt/cache'

@@ -83,6 +83,7 @@
                 user_exit()

         file(container_instance_lockfile, 'w').write('')
+        remove(GEN_CONTAINER_NEEDED)
         containers(minimal=True, log_=log)
         ihm.print_title(_("Installing additional packages"))
         if options.log_level in ['info', 'debug']:

Pour bien faire il faudrait aussi traduire le message de warning en francais et le donner à gettext (sauf si on prend l'option de la note 3)

#3 Updated by Laurent Flori over 2 years ago

Une idée complémentaire serait de forcer le gen_conteneurs si le fichier de lock existe (GEN_CONTAINER_NEEDED dans la note précédente) du coup l'utilisateur n'aurait plus besoin de lancer gen_conteneurs avant instance

#4 Updated by Scrum Master over 2 years ago

  • Status changed from Nouveau to En cours

#5 Updated by Laurent Flori over 2 years ago

  • Assigned To set to Laurent Flori

#6 Updated by Laurent Flori over 2 years ago

  • Remaining (hours) changed from 1.0 to 0.5

#7 Updated by Laurent Flori over 2 years ago

  • Status changed from En cours to Résolu

#8 Updated by Fabrice Barconnière over 2 years ago

  • Remaining (hours) changed from 0.5 to 0.0

#9 Updated by Fabrice Barconnière over 2 years ago

  • % Done changed from 0 to 100

Le paquet n'avait pas été refait.
Test avec le nouveau paquet et le correctif de la typo en cours

#10 Updated by Fabrice Barconnière over 2 years ago

Pour tester correctement, il faudrait que les modifications apportées soient sur l'ISO 2.6.1 téléchargée à l'upgrade.
Je testerai en modifiant le sources.list pour inclure les paquets proposed-updates 2.6.1

#11 Updated by Fabrice Barconnière over 2 years ago

  • % Done changed from 100 to 80
  • Remaining (hours) changed from 0.0 to 1.0
root@amonecole:~# instance
---------------------------------------------------------------------------------------------------------------------------------------
                                                        Début de configuration                                                         
---------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------
                                                       Préparation pour instance                                                       
---------------------------------------------------------------------------------------------------------------------------------------
Vous devez utiliser la commande gen_conteneurs avant d'utiliser la commande instance.

Même chose après gen_conteneurs. Il doit manquer la suppression du semaphore une fois la procédure gen_conteneurs terminée.

#12 Updated by Fabrice Barconnière over 2 years ago

  • % Done changed from 80 to 100
  • Remaining (hours) changed from 1.0 to 0.0

Cette fois, c'est bon.

#13 Updated by Fabrice Barconnière over 2 years ago

  • Status changed from Résolu to Fermé

Also available in: Atom PDF