Project

General

Profile

Scénario #20497

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

Added by Daniel Dehennin almost 6 years ago. Updated over 5 years ago.

Status:
Terminé (Sprint)
Priority:
Normal
Assigned To:
Category:
-
Start date:
06/26/2017
Due date:
07/13/2017
% Done:

100%

Estimated time:
(Total: 5.00 h)
Spent time:
2.50 h (Total: 5.25 h)
Story points:
1.0
Remaining (hours):
1.00 hour
Velocity based estimate:
Release:
Release relationship:
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.

Subtasks

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

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

Associated revisions

Revision 7f2cb388 (diff)
Added by Daniel Dehennin almost 6 years ago

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

Revision 31224bd1 (diff)
Added by Emmanuel GARETTE over 5 years ago

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

History

#1 Updated by Daniel Dehennin almost 6 years ago

  • Parent task changed from #20361 to #20318

#2 Updated by Daniel Dehennin almost 6 years ago

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 Updated by Daniel Dehennin almost 6 years ago

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 Updated by Joël Cuissinat almost 6 years ago

  • Start date deleted (05/11/2017)
  • Parent task deleted (#20318)

#5 Updated by Joël Cuissinat almost 6 years ago

  • Tracker changed from Tâche to Proposition Scénario
  • Target version deleted (sprint 2017 19-21 Equipe MENSR)

#6 Updated by Joël Cuissinat almost 6 years ago

  • Subject changed from Les variables inchangeables (auto_freeze) doivent accepter d’être renseigner par un calcul to Les variables inchangeables (auto_freeze) doivent accepter d’être renseignées par un calcul

#7 Updated by Joël Cuissinat almost 6 years ago

  • Tracker changed from Proposition Scénario to Scénario
  • Assigned To set to force orange
  • Estimated time deleted (3.00 h)
  • Story points set to 1.0

#8 Updated by Joël Cuissinat almost 6 years ago

  • Due date set to 07/13/2017
  • Target version set to sprint 2017 26-28 Equipe MENSR
  • Start date set to 06/26/2017

#9 Updated by Scrum Master almost 6 years ago

  • Description updated (diff)
  • Assigned To changed from force orange to Emmanuel GARETTE
  • Release set to EOLE 2.6.2

En binôme avec Lionel.

#10 Updated by Daniel Dehennin over 5 years ago

  • Status changed from Nouveau to Terminé (Sprint)

Also available in: Atom PDF