Projet

Général

Profil

Tâche #9461

Distribution EOLE - Scénario #9446: Divers 2.4

KeyError non gérée découvert avec CreoleLint

Ajouté par Philippe Caseiro il y a plus de 9 ans. Mis à jour il y a plus de 9 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Début:
31/10/2014
Echéance:
% réalisé:

100%

Temps estimé:
1.00 h
Temps passé:
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

Révision eebfde58 (diff)
Ajouté par Joël Cuissinat il y a plus de 9 ans

SymLinkOption avec variable inexistante

  • creole/var_loader.py : traitement de la KeyError

Fixes #9461 @30m

Révision 0267b05e (diff)
Ajouté par Joël Cuissinat il y a plus de 9 ans

Ajout des traductions sur les exceptions ajoutées

Ref: #9495 @5m
Ref: #9461 @5m

Historique

#1 Mis à jour par Joël Cuissinat il y a plus de 9 ans

  • Projet changé de Distribution EOLE à creole
  • Temps estimé mis à 1.00 h
  • Tâche parente #9446 supprimé
  • 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 9 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 9 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 9 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 9 ans

  • Statut changé de Nouveau à En cours

#6 Mis à jour par Joël Cuissinat il y a plus de 9 ans

  • Statut changé de En cours à Résolu
  • % réalisé changé de 0 à 100

#7 Mis à jour par Joël Cuissinat il y a plus de 9 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 9 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.

Formats disponibles : Atom PDF