Anomalie #5970
problème dans le dictionnaire 23_proxy.xml avec creole 2.4
Description
Les fonctions 'disabled_if_in' sur les variables xxx_ethx_proxy_link provoquent une erreur dans creoled/reconfigure.
Pour reproduire : python -d "from creole.loader import creole_loader; creole_loader(load_extras=True)" (ne plante pas sans load_extras)
Traceback (most recent call last): File "<string>", line 1, in <module> File "/usr/lib/python2.7/dist-packages/creole/loader.py", line 191, in creole_loader loader.read_dir(dirs, namespace) File "/usr/lib/python2.7/dist-packages/creole/var_loader.py", line 801, in read_dir self._gen_descr(namespace) File "/usr/lib/python2.7/dist-packages/creole/var_loader.py", line 1149, in _gen_descr containers = self.gen_container(paths) File "/usr/lib/python2.7/dist-packages/creole/var_loader.py", line 352, in gen_container ret.append(getattr(self, func_name)(paths)) File "/usr/lib/python2.7/dist-packages/creole/loader.py", line 103, in gen_interfaces return self.gen_generic('interfaces', paths, copy_requires='ip') File "/usr/lib/python2.7/dist-packages/creole/var_loader.py", line 132, in gen_generic copy_requires=copy_requires) File "/usr/lib/python2.7/dist-packages/creole/var_loader.py", line 342, in _gen_tiramisu_config '', options, requires=requires, properties=properties)) File "/usr/lib/python2.7/dist-packages/tiramisu/option.py", line 927, in __init__ super(OptionDescription, self).__init__(name, doc, requires, properties) File "/usr/lib/python2.7/dist-packages/tiramisu/option.py", line 74, in __init__ requires, self._name) File "/usr/lib/python2.7/dist-packages/tiramisu/option.py", line 1235, in validate_requires_arg " action: {1}").format(name, action)) ValueError: inconsistency in action types for option: interface1 action: disabled
En commentant ces fonctions, il n'y a plus de message d'erreur (mais il y a surement des effets de bord...).
<!-- <condition name='disabled_if_not_in' source='nombre_interfaces'> <param>1</param> <target type='interfacelist'>eth0_proxy_link</target> <target>adresse_ip_eth0_proxy_link</target> <target>adresse_mask_eth0_proxy_link</target> <target>adresse_bcast_eth0_proxy_link</target> <target>proxy_eth0_adresse</target> <target>proxy_eth0_network</target> </condition> <condition name='disabled_if_not_in' source='mode_conteneur_actif'> <param>oui</param> <target>adresse_ip_eth0_proxy_link</target> <target>adresse_mask_eth0_proxy_link</target> <target>adresse_bcast_eth0_proxy_link</target> <target>adresse_ip_eth1_proxy_link</target> <target>adresse_mask_eth1_proxy_link</target> <target>adresse_bcast_eth1_proxy_link</target> <target>adresse_ip_eth2_proxy_link</target> <target>adresse_mask_eth2_proxy_link</target> <target>adresse_bcast_eth2_proxy_link</target> <target>adresse_ip_eth3_proxy_link</target> <target>adresse_mask_eth3_proxy_link</target> <target>adresse_bcast_eth3_proxy_link</target> </condition> -->
Related issues
Associated revisions
Interface-1 étant "disabled" avec un hidden_if_in, adresse_ip_eth1_proxy_link ne peut avoir de hidden_if_not_in
Fixes: #5970 @30m
History
#1 Updated by Bruno Boiget about 10 years ago
- Description updated (diff)
#2 Updated by Bruno Boiget about 10 years ago
- Description updated (diff)
#3 Updated by Emmanuel GARETTE about 10 years ago
Cela veut dire que tu as un disabled_if_in quelque part.
Tu ne peux pas mélanger des disabled_if_not_in et disabled_if_in pour une même variable, sinon on ne sait pas quoi mettre comme valeur par défaut si rien ne match.
Par exemple si tu fais veux disabled une variable si ssh_eth0 ou admin_eth0 est à 'oui' avec comme valeur pour admin_eth0 à 'oui' et ssh_eth0 à non , si tu as :
disabled_if_not_in : admin_eth0 'non'
disabled_if_not_in : ssh_eth0 'non'
aucun des deux exigences ne matchs donc on disabled
Ou :
disabled_if_in : admin_eth0 'oui'
disabled_if_in : ssh_eth0 'oui'
au moins une des deux exigences matchs donc on disabled.
Par contre si tu dis :
disabled_if_not_in : admin_eth0 'non'
disabled_if_in : ssh_eth0 'oui'
aucune des deux conditions ne matchera. La valeur par défaut n'est pas du tout prévisible (on ne peut pas faire l'inverse de la première exigence, ni de la deuxième).
Si on fait le disabled_if_not_in en première, puis le disable_if_in on considèrera à tord qu'il ne faut pas 'disabled'.
#4 Updated by Joël Cuissinat about 10 years ago
- Target version changed from Eole 2.4-alpha to Eole 2.4-alpha2
#5 Updated by Emmanuel GARETTE about 10 years ago
- Assigned To set to Emmanuel GARETTE
#6 Updated by Emmanuel GARETTE about 10 years ago
- Status changed from Nouveau to Résolu
- % Done changed from 0 to 100
Appliqué par commit 84d21f59cc9f5138bf7441656a0a1b09008833f3.