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 d'un an
- Description mis à jour (diff)
#2 Mis à jour par Joël Cuissinat il y a environ un an
- Tâche parente mis à #35222
#3 Mis à jour par Joël Cuissinat il y a 11 mois
- Tâche parente
#35222supprimé - Points de scénarios mis à 1.0
#4 Mis à jour par Joël Cuissinat il y a 11 mois
- Tracker changé de Tâche à Scénario
- Début
24/11/2022supprimé - Release mis à Carnet de produit (Cadoles)
#5 Mis à jour par Benjamin Bohard il y a 11 mois
- Echéance mis à 01/01/2024
- Assigné à mis à Benjamin Bohard
- Version cible mis à Carnet Cadoles
- Début mis à 01/10/2022
#6 Mis à jour par Laurent Gourvenec il y a 11 mois
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 11 mois
- Assigné à changé de Benjamin Bohard à Laurent Gourvenec
#8 Mis à jour par Joël Cuissinat il y a 10 mois
- Statut changé de Nouveau à Terminé (Sprint)
- Version cible changé de Carnet Cadoles à Livraison Cadoles 31/05/2023
- Release changé de Carnet de produit (Cadoles) à EOLE 2.8.0