Project

General

Profile

Scénario #35068

Zéphir : une erreur dans les dictionnaires empêche l'affichage de l'état

Added by Emmanuel GARETTE over 1 year ago. Updated 10 months ago.

Status:
Terminé (Sprint)
Priority:
Normal
Assigned To:
Category:
-
Start date:
10/01/2022
Due date:
01/01/2024
% Done:

100%

Story points:
1.0
Remaining (hours):
0.00 hour
Velocity based estimate:
Release:
Release relationship:
Auto

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

Subtasks

Tâche #35422: Gestion d'un dictionnaire invalide dans zéphir pour l'affichage d'étatFerméLaurent Gourvenec

Tâche #35423: TestFerméBenjamin Bohard

History

#1 Updated by Emmanuel GARETTE over 1 year ago

  • Description updated (diff)

#2 Updated by Joël Cuissinat about 1 year ago

  • Parent task set to #35222

#3 Updated by Joël Cuissinat 11 months ago

  • Parent task deleted (#35222)
  • Story points set to 1.0

#4 Updated by Joël Cuissinat 11 months ago

  • Tracker changed from Tâche to Scénario
  • Start date deleted (11/24/2022)
  • Release set to Carnet de produit (Cadoles)

#5 Updated by Benjamin Bohard 11 months ago

  • Due date set to 01/01/2024
  • Assigned To set to Benjamin Bohard
  • Target version set to Carnet Cadoles
  • Start date set to 10/01/2022

#6 Updated by Laurent Gourvenec 11 months ago

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 Updated by Laurent Gourvenec 11 months ago

  • Assigned To changed from Benjamin Bohard to Laurent Gourvenec

#8 Updated by Joël Cuissinat 10 months ago

  • Status changed from Nouveau to Terminé (Sprint)
  • Target version changed from Carnet Cadoles to Livraison Cadoles 31/05/2023
  • Release changed from Carnet de produit (Cadoles) to EOLE 2.8.0

Also available in: Atom PDF