Projet

Général

Profil

Tâche #27094

Scénario #27095: Correction de bug 2.7.0

Messages d'erreur sur des problèmes d’encodage des chaînes de caractères sur 2.7

Ajouté par Patrice THEBAULT il y a environ 5 ans. Mis à jour il y a environ 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Début:
04/03/2019
Echéance:
% réalisé:

100%

Restant à faire (heures):
0.0

Description

sur un seth membre, dans ead3/Sauvegardes les différentes fonctions renvoient les messages :

An error occured: erreur inattendue "cannot use a string pattern on a bytes-like object" dans la fonction "is_fs_type" avec les arguments "['ext4']" et "{}" pour l'option "Format du système de fichiers"

puis

Connexion au serveur Salt perdue/impossible.

Révisions associées

Révision dfc23ca8 (diff)
Ajouté par Benjamin Bohard il y a environ 5 ans

Do not decode unicode string

Decoding is now done in system_out if python is v3.

Ref #27094

Révision 2098a740 (diff)
Ajouté par Benjamin Bohard il y a environ 5 ans

Decode subprocess output to prevent `str` VS `bytes` pitfall.

When used in python 3 environment, system_out should output `str`
objects to be compatible with methods used on python 2 `str` before.

Ref #27094

Révision a9ea176e (diff)
Ajouté par Benjamin Bohard il y a environ 5 ans

Do not decode unicode string

Decoding is now done in system_out if python is v3.

Ref #27094

Révision a4e57ab3 (diff)
Ajouté par Benjamin Bohard il y a environ 5 ans

Decode subprocess output to prevent `str` VS `bytes` pitfall.

When used in python 3 environment, system_out should output `str`
objects to be compatible with methods used on python 2 `str` before.

Ref #27094

Historique

#1 Mis à jour par Emmanuel IHRY il y a environ 5 ans

  • Tâche parente mis à #27095

#2 Mis à jour par Philippe Carre il y a environ 5 ans

Quasiment le même message d'erreur avec la conf DHCP dans EAD3, sur esbl et essl 2.7.0 :

menu 'Paramétrer le DHCP'

 The minion function caused an exception: Traceback (most recent call last): File "/usr/lib/python3/dist-packages/salt/minion.py", line 1493, in _thread_return return_data = executor.execute() File "/usr/lib/python3/dist-packages/salt/executors/direct_call.py", line 28, in execute return self.func(*self.args, **self.kwargs) File "/var/cache/salt/minion/extmods/modules/ead/__init__.py", line 55, in func return getattr(module, function)(*args, **kwargs) File "/var/cache/salt/minion/extmods/modules/ead/dhcp/__init__.py", line 34, in wrapper cfg = _get_loader() File "/var/cache/salt/minion/extmods/modules/ead/dhcp/__init__.py", line 47, in _get_loader force_eoleextraconfig=_force_eoleextraconfig, reload_config=_reload_config) File "/usr/lib/python3/dist-packages/creole/loader.py", line 830, in creole_loader force_instanciate=force_instanciate) File "/usr/lib/python3/dist-packages/creole/loader1.py", line 325, in load_config_eol force_instanciate=force_instanciate) File "/usr/lib/python3/dist-packages/creole/loader1.py", line 724, in config_load_values force_load_owner=force_load_owner) File "/usr/lib/python3/dist-packages/creole/loader1.py", line 662, in config_load_store config.setattr(path, value, force_permissive=True) File "/usr/lib/python3/dist-packages/tiramisu/config.py", line 225, in setattr not_raises, index=index) File "/usr/lib/python3/dist-packages/tiramisu/config.py", line 240, in setattr not_raises=not_raises, index=index) File "/usr/lib/python3/dist-packages/tiramisu/value.py", line 420, in setitem err = opt.impl_validate(value, fake_context, display_warnings=False, force_index=index) File "/usr/lib/python3/dist-packages/tiramisu/option/baseoption.py", line 655, in impl_validate return do_validation(value, None, None) File "/usr/lib/python3/dist-packages/tiramisu/option/baseoption.py", line 615, in do_validation error = calculation_validator(_value, _index) File "/usr/lib/python3/dist-packages/tiramisu/option/baseoption.py", line 585, in calculation_validator is_validator=True) File "/usr/lib/python3/dist-packages/tiramisu/autolib.py", line 239, in carry_out_calculation ret = calculate(option, callback, is_validator, args, kwargs) File "/usr/lib/python3/dist-packages/tiramisu/autolib.py", line 286, in calculate raise ConfigError(msg) tiramisu.error.ConfigError: erreur inattendue "sequence item 0: expected str instance, bytes found" dans la fonction "is_lv_name" avec les arguments "['home']" et "{}" pour l'option "Volume logique à étendre" 

menu 'DHCP : Compatibilité EAD2/EAD3'

 An error occured: erreur inattendue "sequence item 0: expected str instance, bytes found" dans la fonction "is_lv_name" avec les arguments "['var+log']" et "{}" pour l'option "Volume logique à étendre" ✕ 

#3 Mis à jour par Benjamin Bohard il y a environ 5 ans

  • Sujet changé de Message d'erreur sur les fonctions Sauvegardes (Bareos) sur un seth membre à Messages d'erreur sur des problèmes d’encodage des chaînes de caractères sur 2.7

Autre cas où on peut suspecter un problème de version de python pour le traitement des chaînes de caractère :

mars 06 09:55:26 file creoled[15216]: 127.0.0.1 - - [06/Mar/2019:09:55:26] "GET /get/quota/quota/directories HTTP/1.1" 200 36 "" "python-requests/2.18.4" 
mars 06 09:55:28 file salt-minion-ead3[17708]: Traceback (most recent call last):
mars 06 09:55:28 file salt-minion-ead3[17708]:   File "/var/lib/ead3/var/cache/salt/minion/extmods/modules/ead/bareosfilesselection/__init__.py", line 29, in submit
mars 06 09:55:28 file salt-minion-ead3[17708]:     return custom.submit(*args, **kwargs)
mars 06 09:55:28 file salt-minion-ead3[17708]:   File "/var/lib/ead3/var/cache/salt/minion/extmods/modules/ead/bareosfilesselection/custom.py", line 37, in submit
mars 06 09:55:28 file salt-minion-ead3[17708]:     return __action__.submit(*args, **kwargs)
mars 06 09:55:28 file salt-minion-ead3[17708]:   File "/var/lib/ead3/var/cache/salt/minion/extmods/modules/ead/bareosfilesselection/action.py", line 64, in submit
mars 06 09:55:28 file salt-minion-ead3[17708]:     config_save_values(config, modname)
mars 06 09:55:28 file salt-minion-ead3[17708]:   File "/usr/lib/python3/dist-packages/creole/loader1.py", line 801, in config_save_values
mars 06 09:55:28 file salt-minion-ead3[17708]:     store = config_get_values(config, namespace, check_mandatory)
mars 06 09:55:28 file salt-minion-ead3[17708]:   File "/usr/lib/python3/dist-packages/creole/loader1.py", line 740, in config_get_values
mars 06 09:55:28 file salt-minion-ead3[17708]:     ).mandatory_warnings(force_permissive=True))
mars 06 09:55:28 file salt-minion-ead3[17708]:   File "/usr/lib/python3/dist-packages/tiramisu/value.py", line 690, in mandatory_warnings
mars 06 09:55:28 file salt-minion-ead3[17708]:     for path in _mandatory_warnings(descr):
mars 06 09:55:28 file salt-minion-ead3[17708]:   File "/usr/lib/python3/dist-packages/tiramisu/value.py", line 661, in _mandatory_warnings
mars 06 09:55:28 file salt-minion-ead3[17708]:     for path in _mandatory_warnings(opt, currpath + [name]):
mars 06 09:55:28 file salt-minion-ead3[17708]:   File "/usr/lib/python3/dist-packages/tiramisu/value.py", line 661, in _mandatory_warnings
mars 06 09:55:28 file salt-minion-ead3[17708]:     for path in _mandatory_warnings(opt, currpath + [name]):
mars 06 09:55:28 file salt-minion-ead3[17708]:   File "/usr/lib/python3/dist-packages/tiramisu/value.py", line 685, in _mandatory_warnings
mars 06 09:55:28 file salt-minion-ead3[17708]:     ret = _is_properties_option(err, path)
mars 06 09:55:28 file salt-minion-ead3[17708]:   File "/usr/lib/python3/dist-packages/tiramisu/value.py", line 648, in _is_properties_option
mars 06 09:55:28 file salt-minion-ead3[17708]:     raise err
mars 06 09:55:28 file salt-minion-ead3[17708]: ValueError: "b'/home'" est une valeur invalide pour l'option "Répertoire gérant les quotas" de type nom de fichier, invalide caractère

#4 Mis à jour par Benjamin Bohard il y a environ 5 ans

On utilise directement la sortie de la fonction system_out comme si c’était du type str alors qu’avec le passage avec python 3, c’est du type bytes.

En ajoutant une conversion conditionnée par la version de python dans process.py et en retirant les decode qu’on avait mis en place sur certaines fonctions uniquement, ça corrige le problème. À vérifier si la suppression des decode n’introduit pas une régression dans le cas où c’est utilisé avec python 2 (est-ce que c’est encore le cas ?)

#5 Mis à jour par Benjamin Bohard il y a environ 5 ans

  • Projet changé de eole-ead3 à Distribution EOLE
  • Statut changé de Nouveau à En cours

#6 Mis à jour par Benjamin Bohard il y a environ 5 ans

  • Description mis à jour (diff)
  • Assigné à mis à Benjamin Bohard

#7 Mis à jour par Benjamin Bohard il y a environ 5 ans

Liste des fichiers de fonction présents sur un 2.7.0 :

usr/share/creole/funcs/__init__.py        admin/creole-common
usr/share/creole/funcs/calc_ldap_dn.py        admin/eole-ecdl,admin/eole-zephir-medde
usr/share/creole/funcs/cron_schedule.py        admin/eole-ad-dc
usr/share/creole/funcs/eole_smartmontools.py        admin/eole-smartmontools
usr/share/creole/funcs/eos-ldapreader.py        admin/eole-client-annuaire
usr/share/creole/funcs/get_etc_hosts.py        admin/eole-server
usr/share/creole/funcs/master_network_interfaces.py        admin/eole-server
usr/share/creole/funcs/partitioning_utils.py        admin/eole-server
usr/share/creole/funcs/pg_funcs.py        admin/eole-postgresql
usr/share/creole/funcs/quota.py        admin/eole-fichier-actions
usr/share/creole/funcs/submulti_utils.py        admin/eole-zephir-medde,admin/seth-ecologie
usr/share/creole/funcs/uploadedfiles.py        web/eole-ead3

system_out est utilisé dans :
  • usr/share/creole/funcs/partitioning_utils.py admin/eole-server
  • usr/share/creole/funcs/quota.py admin/eole-fichier-actions

Dans partitioning_utils.py, le résultat est décodé pour obtenir de l’unicode. Ce décodage ne peut pas être effectué sur un type str en python 3 mais doit toujours être fait sur un type str en python 2.

#8 Mis à jour par Benjamin Bohard il y a environ 5 ans

  • Statut changé de En cours à Résolu

#9 Mis à jour par Patrice THEBAULT il y a environ 5 ans

  • Statut changé de Résolu à Fermé
  • % réalisé changé de 0 à 100
  • Restant à faire (heures) mis à 0.0

testé sur un seth 2.7.0 -> plus de message d'erreur

Formats disponibles : Atom PDF