Scénario #35068
Zéphir : une erreur dans les dictionnaires empêche l'affichage de l'état
100%
Description
Je ne devrais pas avoir d'erreur dans les dictionnaires, mais si cela était le cas, l'état du serveur passe au vert dans la page : https://zephir.temmii.com:8070/serveur/aff_groupe?id_groupe=XXXX
Pour reproduire :
- générer une erreur sur le serveur distant
- ajouter une dictionnaire incorrect
Dans la page "Liste des serveurs sélectionnés" l'état passe au vert.
Le problème est dans le fichier : /usr/lib/python3/dist-packages/zephir/backend/lib_backend.py
def check_maj_status(self, maj_checker, show_installed = False, debnames = []):
"""vérifie l'état de mise à jour d'un serveur
"""
# liste des paquets remontés par le serveur
if type(debnames) != list:
debnames = [debnames]
liste_pkgs = []
# on regarde le type de mise à jour configurée (minimale/complète) et le serveur de mise à jour
type_maj = 'complete'
dico = self.parsedico()
# champ type_maj inexistant sur eole 2.4 et >
serv_maj = dico['serveur_maj']
# utilisation de serveur spécifique pour les mises à jour ubuntu selon la configuration
if dico.get('ubuntu_update_mirrors', ''):
serv_maj_ubuntu = dico['ubuntu_update_mirrors']
else:
serv_maj_ubuntu = serv_maj
# utilisation de serveur spécifique pour les mises à jour envole selon la configuration
if dico.get('envole_update_mirrors', ''):
serv_maj_envole = dico['envole_update_mirrors']
else:
serv_maj_envole = serv_maj
version = self.module_version
pkg_file = os.path.join(os.path.abspath(config.PATH_ZEPHIR),'data','packages%s.list' % self.id_s)
# on compare les paquets installés avec ceux disponibles sur le serveur de maj
liste_pkgs, maj_infos = maj_checker.check_packages(self.id_s, self.maj_infos,
pkg_file, debnames, version,
serv_maj, serv_maj_ubuntu,
serv_maj_envole, type_maj,
show_installed)
if maj_infos is not None and not debnames and not show_installed and maj_infos != self.maj_infos:
# la liste des paquets non à jour a changé, on met à jour l'état du serveur
try:
nb_pack = len(maj_infos[0])
if len(maj_infos[0]) > 0:
self.edit_serveur({'maj':len(maj_infos[0])})
self.maj_params({'query_maj':[len(maj_infos[0]),time.ctime()]})
else:
self.edit_serveur({'maj':0})
self.maj_params({'query_maj':[0,time.ctime()]})
self.maj_infos = maj_infos
except:
traceback.print_exc()
pass
return liste_pkgs
Devient :
def check_maj_status(self, maj_checker, show_installed = False, debnames = []):
"""vérifie l'état de mise à jour d'un serveur
"""
# liste des paquets remontés par le serveur
if type(debnames) != list:
debnames = [debnames]
liste_pkgs = []
# on regarde le type de mise à jour configurée (minimale/complète) et le serveur de mise à jour
type_maj = 'complete'
try:
dico = self.parsedico()
# champ type_maj inexistant sur eole 2.4 et >
serv_maj = dico['serveur_maj']
# utilisation de serveur spécifique pour les mises à jour ubuntu selon la configuration
if dico.get('ubuntu_update_mirrors', ''):
serv_maj_ubuntu = dico['ubuntu_update_mirrors']
else:
serv_maj_ubuntu = serv_maj
# utilisation de serveur spécifique pour les mises à jour envole selon la configuration
if dico.get('envole_update_mirrors', ''):
serv_maj_envole = dico['envole_update_mirrors']
else:
serv_maj_envole = serv_maj
version = self.module_version
pkg_file = os.path.join(os.path.abspath(config.PATH_ZEPHIR),'data','packages%s.list' % self.id_s)
# on compare les paquets installés avec ceux disponibles sur le serveur de maj
liste_pkgs, maj_infos = maj_checker.check_packages(self.id_s, self.maj_infos,
pkg_file, debnames, version,
serv_maj, serv_maj_ubuntu,
serv_maj_envole, type_maj,
show_installed)
if maj_infos is not None and not debnames and not show_installed and maj_infos != self.maj_infos:
# la liste des paquets non à jour a changé, on met à jour l'état du serveur
try:
nb_pack = len(maj_infos[0])
if len(maj_infos[0]) > 0:
self.edit_serveur({'maj':len(maj_infos[0])})
self.maj_params({'query_maj':[len(maj_infos[0]),time.ctime()]})
else:
self.edit_serveur({'maj':0})
self.maj_params({'query_maj':[0,time.ctime()]})
self.maj_infos = maj_infos
except:
traceback.print_exc()
pass
except:
pass
return liste_pkgs
Sous-tâches
Historique
#1 Mis à jour par Emmanuel GARETTE il y a plus de 3 ans
- Description mis à jour (diff)
#2 Mis à jour par Joël Cuissinat il y a environ 3 ans
- Tâche parente mis à #35222
#3 Mis à jour par Joël Cuissinat il y a presque 3 ans
- Tâche parente
#35222supprimé - Points de scénarios mis à 1.0
#4 Mis à jour par Joël Cuissinat il y a presque 3 ans
- Tracker changé de Tâche à Scénario
- Début
24/11/2022supprimé - Release mis à Carnet de produit Cadoles - MEN
#5 Mis à jour par Benjamin Bohard il y a presque 3 ans
- Echéance mis à 01/01/2024
- Assigné à mis à Benjamin Bohard
- Version cible mis à Carnet Cadoles - MEN
- Début mis à 01/10/2022
#6 Mis à jour par Laurent Gourvenec il y a presque 3 ans
Je ne reproduit pas le problème avec un zéphir 2.9 et un scribe 2.7.2.
J'ai créé 2 erreurs : 1 problème bareos remonté par l'agent zéphir et des mises-à-jour à faire.
J'ai ajouté un dictionnaire invalide dans /usr/share/creole/dicos puis dans /usr/share/creole/dicos/local et via un dico local sur zéphir (non envoyé) mais l'état reste en erreur.
Emmanuel, est-ce que tu aurais plus de précision à apporter stp ? La manière d'ajouter le dico, le type d'erreur dans le dico, les versions de zéphir et du serveur, le type d'erreur qui se retrouve masquée, etc...
Edit : j'arrive à produire la traceback et effectivement, l'état ne se mets pas à jour corrrectement.
#7 Mis à jour par Laurent Gourvenec il y a presque 3 ans
- Assigné à changé de Benjamin Bohard à Laurent Gourvenec
#8 Mis à jour par Joël Cuissinat il y a presque 3 ans
- Statut changé de Nouveau à Terminé (Sprint)
- Version cible changé de Carnet Cadoles - MEN à Livraison Cadoles 31/05/2023
- Release changé de Carnet de produit Cadoles - MEN à EOLE 2.8.0