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.
Subtasks
Associated revisions
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
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)