Projet

Général

Profil

Scénario #20497

Les variables inchangeables (auto_freeze) doivent accepter d’être renseignées par un calcul

Ajouté par Daniel Dehennin il y a presque 7 ans. Mis à jour il y a presque 7 ans.

Statut:
Terminé (Sprint)
Priorité:
Normal
Assigné à:
Catégorie:
-
Début:
26/06/2017
Echéance:
13/07/2017
% réalisé:

100%

Temps estimé:
(Total: 5.00 h)
Temps passé:
2.50 h (Total: 5.25 h)
Points de scénarios:
1.0
Restant à faire (heures):
1.00 heure
Estimation basée sur la vélocité:
Release:
Liens avec la release:
Auto

Description

Problème

Depuis 2.6.0, il n’est pas possible de remplir automatiquement les variables inchangeables (auto_freeze) avec un fill.

Pour reproduire le problème :

  1. Démarrer un aca.horus-2.6.0-Daily
  2. Ajouter le dictionnaire local suivant
    <creole>
    
        <files />
    
        <containers />
    
        <variables />
    
        <constraints>
        <fill name='calc_val' target='smb_workgroup'>
            <param type='eole'>numero_etab</param>
        </fill>
        </constraints>
    
        <help />
    </creole>
    
  3. Démarrer gen_config
  4. Saisir auie dans la variable Identifiant de l'établissement (exemple UAI)
  5. Sélectionner l’onglet Samba
  6. Vérifier la valeur de la variable Nom du domaine Samba (ex: mondomaine)

Proposition de solution

Il semblerait que les variables auto_freeze soit aussi auto_save, la variable est donc sauvegardée avec la valeur initiale de numero_etab et n’est plus jamais actualisée.

Branche de travail

La branche 2.6.0/20497-fill-auto-freeze contient le test fonctionnel qui est actuellement en erreur.

Critère d'acceptation

  • Test fonctionnel doit être passant.

Sous-tâches

Tâche #20975: Meilleur gestion de l'auto_freezeFerméEmmanuel GARETTE

Tâche #20976: Backporter la correctionNe sera pas résolu

Révisions associées

Révision 7f2cb388 (diff)
Ajouté par Daniel Dehennin il y a presque 7 ans

Test if a filled auto_freeze variable behave correctly

- Before setting the fill source variable: the “auto_freeze” variable
must be “None”.

- When setting the fill source variable: the “auto_freeze” variable must
be updated.

  • tests/dicos/autofreeze/99_autofreeze.xml: Add fill source variable
    “fixedvariable” without value.
    Add filled “auto_freeze” variable “autofreeze_filled” with its fill
    constraint.
  • tests/test_genconfig.py (test_auto_freeze): Add tests to check the behaviour of
    filled “auto_freeze” variable.

Ref: #20497

Révision 31224bd1 (diff)
Ajouté par Emmanuel GARETTE il y a presque 7 ans

Les variables auto_freeze avec un calcul sont fixés au moment de l'enregistrement

Ces variables étaient fixées au chargement des dictionnaires. Ce qui pose problème en cas de calcul sur des variables modifiées par l'utilisateur

ref #20497

Historique

#1 Mis à jour par Daniel Dehennin il y a presque 7 ans

  • Tâche parente changé de #20361 à #20318

#2 Mis à jour par Daniel Dehennin il y a presque 7 ans

En appliquant le patch suivant cela ne fonctionne pas non plus :

diff --git a/creole/var_loader.py b/creole/var_loader.py
index 5d13b9bc..c71120c2 100644
--- a/creole/var_loader.py
+++ b/creole/var_loader.py
@@ -1585,10 +1585,9 @@ class CreoleVarLoader(CreoleFamily, CreoleConstraint, CreoleGeneric):
             if self._is_auto(vname):
                 raise Exception(_('{0} is auto, so must not be auto_freeze or auto_save').format(vname))
             if not self.no_auto_store:
-                properties.extend(['auto_freeze', 'force_store_value'])
+                properties.extend(['auto_freeze'])
             if mode != 'expert':
                 mode = modes_level[0]
-            self.force_store_vars.add(self.paths[namespace][vname])
         if vdata['auto_save'] is True:
             if self._is_auto(vname):
                 raise Exception(_('{0} is auto, so must not be auto_freeze or auto_save').format(vname))

J’avoue que le raise Exception(_('{0} is auto, so must not be auto_freeze or auto_save').format(vname)) me parait étrange dans la mesure où nous sommes en train de gérer le auto_freeze, je ne vois pas pourquoi on parle de auto_save.

Il semble y avoir un mix entre les deux que je ne comprends pas.

#3 Mis à jour par Daniel Dehennin il y a presque 7 ans

Création de la branche 2.6.0/20497-fill-auto-freeze avec un premier commit ajoutant les tests :

root@horus:~# py.test -k auto_freeze /usr/share/creole/tests/test_genconfig.py 
================================================= test session starts =================================================
platform linux2 -- Python 2.7.12, pytest-2.8.7, py-1.4.31, pluggy-0.3.1
rootdir: /usr/share/creole/tests, inifile: 
collected 14 items 

../usr/share/creole/tests/test_genconfig.py F

====================================================== FAILURES =======================================================
__________________________________________________ test_auto_freeze ___________________________________________________

    def test_auto_freeze():
        """ 
        Comportement des variables auto_freeze='True'
        """ 
        config = _load('autofreeze')
        lib.set_mode(ID_, 'expert')
        # variable auto_freeze => mode basic
        assert lib.get_variable(ID_, 'test', 'autofreeze')['mode'] == 'basic'
        # mais exception si mode='expert' (#7349)
        assert lib.get_variable(ID_, 'test', 'autofreeze_x')['mode'] == 'expert'
        lib.set_value(ID_, 'test', 'autofreeze', 'freeze')

        # filling automatically an auto_freeze variable
        assert config.creole.test.autofreeze_filled is None
        lib.set_value(ID_, 'test', 'fixedvariable', 'filled')
>       assert config.creole.test.autofreeze_filled == 'filled'
E       assert None == 'filled'
E        +  where None = fixedvariable = filled\nautofreeze = freeze\nautofreeze_x = None\nautofreeze_filled = None.autofreeze_filled
E        +    where fixedvariable = filled\nautofreeze = freeze\nautofreeze_x = None\nautofreeze_filled = None = [general]\n[test].test
E        +      where [general]\n[test] = [creole]\n[containers].creole

/usr/share/creole/tests/test_genconfig.py:115: AssertionError
------------------------------------------------ Captured stdout call -------------------------------------------------
/usr/share/creole/funcs/eos-ldapreader.py - déjà défini : pwdreader
/usr/share/creole/funcs/get_etc_hosts.py - déjà défini : _gen_crossed_hosts
/usr/share/creole/funcs/get_etc_hosts.py - déjà défini : _gen_hosts
/usr/share/creole/funcs/get_etc_hosts.py - déjà défini : get_etc_hosts
/usr/share/creole/funcs/get_etc_hosts.py - déjà défini : stderr
/usr/share/creole/funcs/master_network_interfaces.py - déjà défini : _gen_alias_interfaces
/usr/share/creole/funcs/master_network_interfaces.py - déjà défini : _gen_bridge_interface
/usr/share/creole/funcs/master_network_interfaces.py - déjà défini : _gen_mtu_option
/usr/share/creole/funcs/master_network_interfaces.py - déjà défini : _gen_physical_interface
/usr/share/creole/funcs/master_network_interfaces.py - déjà défini : _gen_pppoe_interface
/usr/share/creole/funcs/master_network_interfaces.py - déjà défini : _gen_unmanage_interface
/usr/share/creole/funcs/master_network_interfaces.py - déjà défini : _gen_vlan_interfaces
/usr/share/creole/funcs/master_network_interfaces.py - déjà défini : get_master_interfaces
------------------------------------------------ Captured stderr call -------------------------------------------------
No handlers could be found for logger "creole.upgrade" 
======================================= 13 tests deselected by '-kauto_freeze' ========================================
======================================= 1 failed, 13 deselected in 0.22 seconds =======================================

#4 Mis à jour par Joël Cuissinat il y a presque 7 ans

  • Début 11/05/2017 supprimé
  • Tâche parente #20318 supprimé

#5 Mis à jour par Joël Cuissinat il y a presque 7 ans

  • Tracker changé de Tâche à Proposition Scénario
  • Version cible sprint 2017 19-21 Equipe MENSR supprimé

#6 Mis à jour par Joël Cuissinat il y a presque 7 ans

  • Sujet changé de Les variables inchangeables (auto_freeze) doivent accepter d’être renseigner par un calcul à Les variables inchangeables (auto_freeze) doivent accepter d’être renseignées par un calcul

#7 Mis à jour par Joël Cuissinat il y a presque 7 ans

  • Tracker changé de Proposition Scénario à Scénario
  • Assigné à mis à force orange
  • Temps estimé 3.00 h supprimé
  • Points de scénarios mis à 1.0

#8 Mis à jour par Joël Cuissinat il y a presque 7 ans

  • Echéance mis à 13/07/2017
  • Version cible mis à sprint 2017 26-28 Equipe MENSR
  • Début mis à 26/06/2017

#9 Mis à jour par Scrum Master il y a presque 7 ans

  • Description mis à jour (diff)
  • Assigné à changé de force orange à Emmanuel GARETTE
  • Release mis à EOLE 2.6.2

En binôme avec Lionel.

#10 Mis à jour par Daniel Dehennin il y a presque 7 ans

  • Statut changé de Nouveau à Terminé (Sprint)

Formats disponibles : Atom PDF