Scénario #20497
Les variables inchangeables (auto_freeze) doivent accepter d’être renseignées par un calcul
100%
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 :
- Démarrer un
aca.horus-2.6.0-Daily
- 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>
- Démarrer
gen_config
- Saisir
auie
dans la variableIdentifiant de l'établissement (exemple UAI)
- Sélectionner l’onglet
Samba
- 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
Révisions associées
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
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/2017supprimé - Tâche parente
#20318supprimé
#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 MENSRsupprimé
#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 hsupprimé - 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)