Tâche #9461
Distribution EOLE - Scénario #9446: Divers 2.4
KeyError non gérée découvert avec CreoleLint
Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
Restant à faire (heures):
0.0
Description
Pour reproduire :
Faire un dico avec un SymLinkOption avec une valeur qui n'est pas un nom de variable
Par exemple :
<service_access service='webserver'> <port port_type="SymLinkOption">443</port> <port>80</port> </service_access>
voici le résultat :
DTD Non valide (valid_dtd:ERROR:error)
/usr/share/eole/creole/dicos/97_libvirt.xml:4: element service: validity error : No declaration for attribute type of element service
Document /usr/share/eole/creole/dicos/97_libvirt.xml does not validate against /usr/share/creole/creole.dtd
Lint wrong_dicos_name désactivé (niveau info)
Tabulation dans le dictionnaire au lieu de 4 espaces (tabs_in_dicos:NAME:warning)
\-- /usr/share/eole/creole/dicos/90_openvswitch.xml
Traceback (most recent call last):
File "/usr/bin/CreoleLint", line 55, in main
validate(keyword, ansi, tmpl)
File "/usr/lib/python2.7/dist-packages/creole/lint/creolelint.py", line 1070, in validate
ansi.process(cl)
File "/usr/lib/python2.7/dist-packages/creole/lint/ansiwriter.py", line 47, in process
checks = linter.check()
File "/usr/lib/python2.7/dist-packages/creole/lint/creolelint.py", line 939, in check
self.load_dics()
File "/usr/lib/python2.7/dist-packages/creole/lint/creolelint.py", line 146, in load_dics
self._collect_vars_in_dicos()
File "/usr/lib/python2.7/dist-packages/creole/lint/creolelint.py", line 228, in _collect_vars_in_dicos
self.creoledic.read_dir(self.eoledirs, 'creole')
File "/usr/lib/python2.7/dist-packages/creole/var_loader.py", line 968, in read_dir
self._gen_descr(namespace)
File "/usr/lib/python2.7/dist-packages/creole/var_loader.py", line 1413, in _gen_descr
containers = self.gen_container(paths, namespace='containers')
File "/usr/lib/python2.7/dist-packages/creole/var_loader.py", line 427, in gen_container
ret.append(getattr(self, func_name)(paths))
File "/usr/lib/python2.7/dist-packages/creole/loader.py", line 112, in gen_service_accesss
return self.__gen_service_access_restriction('service_access', paths)
File "/usr/lib/python2.7/dist-packages/creole/loader.py", line 136, in __gen_service_access_restriction
return self.gen_generic(generic_name, paths, verify_exists_redefine=False)
File "/usr/lib/python2.7/dist-packages/creole/var_loader.py", line 193, in gen_generic
verify_exists_redefine=verify_exists_redefine)
File "/usr/lib/python2.7/dist-packages/creole/var_loader.py", line 369, in _gen_tiramisu_config
path = paths[option_value]
KeyError: '443'
Révisions associées
SymLinkOption avec variable inexistante
- creole/var_loader.py : traitement de la KeyError
Fixes #9461 @30m
Historique
#1 Mis à jour par Joël Cuissinat il y a plus de 11 ans
- Projet changé de Distribution EOLE à creole
- Temps estimé mis à 1.00 h
- Tâche parente
#9446supprimé - Restant à faire (heures) mis à 1.0
L'erreur en question n'est pas spécifique à CreoleLint, il faudrait ajouter un raise dans var_loader.py
root@eolebase:~# creoled --debug
creoled - Chargement de la configuration tiramisu
creoled - Set umask to 0022
creoled - Impossible de charger la configuration Creole.443
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/creole/server.py", line 199, in reload_config
try_upgrade=False)
File "/usr/lib/python2.7/dist-packages/creole/loader.py", line 287, in creole_loader
loader.read_dir(dirs, namespace)
File "/usr/lib/python2.7/dist-packages/creole/var_loader.py", line 979, in read_dir
self._gen_descr(namespace)
File "/usr/lib/python2.7/dist-packages/creole/var_loader.py", line 1437, in _gen_descr
containers = self.gen_container(paths, namespace='containers')
File "/usr/lib/python2.7/dist-packages/creole/var_loader.py", line 427, in gen_container
ret.append(getattr(self, func_name)(paths))
File "/usr/lib/python2.7/dist-packages/creole/loader.py", line 112, in gen_service_accesss
return self.__gen_service_access_restriction('service_access', paths)
File "/usr/lib/python2.7/dist-packages/creole/loader.py", line 136, in __gen_service_access_restriction
return self.gen_generic(generic_name, paths, verify_exists_redefine=False)
File "/usr/lib/python2.7/dist-packages/creole/var_loader.py", line 193, in gen_generic
verify_exists_redefine=verify_exists_redefine)
File "/usr/lib/python2.7/dist-packages/creole/var_loader.py", line 369, in _gen_tiramisu_config
path = paths[option_value]
KeyError: '443'
#2 Mis à jour par Joël Cuissinat il y a plus de 11 ans
- Tâche parente mis à #9446
Le titre était trompeur, j'ai cru qu'il pouvait s'agir d'un scénario en soi :)
Je suggère au correcteur de résoudre également #9495 dans la foulée...
#3 Mis à jour par Joël Cuissinat il y a plus de 11 ans
- Sujet changé de Amélioration de gestion d'erreurs dans CreoleLint à KeyError non géré découvert avec CreoleLint
#4 Mis à jour par Joël Cuissinat il y a plus de 11 ans
- Sujet changé de KeyError non géré découvert avec CreoleLint à KeyError non gérée découvert avec CreoleLint
#5 Mis à jour par Joël Cuissinat il y a plus de 11 ans
- Statut changé de Nouveau à En cours
#6 Mis à jour par Joël Cuissinat il y a plus de 11 ans
- Statut changé de En cours à Résolu
- % réalisé changé de 0 à 100
Appliqué par commit eebfde58326257b03d1cf756c1e13a4750fff54b.
#7 Mis à jour par Joël Cuissinat il y a plus de 11 ans
- Assigné à mis à Joël Cuissinat
- Restant à faire (heures) changé de 1.0 à 0.15
#8 Mis à jour par Klaas TJEBBES il y a plus de 11 ans
- Statut changé de Résolu à Fermé
- Restant à faire (heures) changé de 0.15 à 0.0
root@scribek24:~# CreoleL
CreoleLint CreoleLock
root@scribek24:~# CreoleLint
DTD Non valide (valid_dtd:ERROR:error)
Lint wrong_dicos_name désactivé (niveau info)
Traceback (most recent call last):
File "/usr/bin/CreoleLint", line 55, in main
validate(keyword, ansi, tmpl)
File "/usr/lib/python2.7/dist-packages/creole/lint/creolelint.py", line 1070, in validate
ansi.process(cl)
File "/usr/lib/python2.7/dist-packages/creole/lint/ansiwriter.py", line 47, in process
checks = linter.check()
File "/usr/lib/python2.7/dist-packages/creole/lint/creolelint.py", line 939, in check
self.load_dics()
File "/usr/lib/python2.7/dist-packages/creole/lint/creolelint.py", line 146, in load_dics
self._collect_vars_in_dicos()
File "/usr/lib/python2.7/dist-packages/creole/lint/creolelint.py", line 228, in _collect_vars_in_dicos
self.creoledic.read_dir(self.eoledirs, 'creole')
File "/usr/lib/python2.7/dist-packages/creole/var_loader.py", line 983, in read_dir
self._gen_descr(namespace)
File "/usr/lib/python2.7/dist-packages/creole/var_loader.py", line 1444, in _gen_descr
containers = self.gen_container(paths, namespace='containers')
File "/usr/lib/python2.7/dist-packages/creole/var_loader.py", line 431, in gen_container
ret.append(getattr(self, func_name)(paths))
File "/usr/lib/python2.7/dist-packages/creole/loader.py", line 112, in gen_service_accesss
return self.__gen_service_access_restriction('service_access', paths)
File "/usr/lib/python2.7/dist-packages/creole/loader.py", line 136, in __gen_service_access_restriction
return self.gen_generic(generic_name, paths, verify_exists_redefine=False)
File "/usr/lib/python2.7/dist-packages/creole/var_loader.py", line 193, in gen_generic
verify_exists_redefine=verify_exists_redefine)
File "/usr/lib/python2.7/dist-packages/creole/var_loader.py", line 373, in _gen_tiramisu_config
_(u"SymLinkOption targetting unexistent variable: {0}.").format(option_value))
Exception: Variable 443 inexistante utilis\xe9e comme cible d'une SymLinkOption.