Projet

Général

Profil

Development #51462

l'import --dry-run provoque quand même les appels aux signaux (et donc le provisionning)

Ajouté par Frédéric Péters il y a environ 3 ans. Mis à jour il y a presque 3 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
25 février 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

(ticket authentic ou hobo)

Dry run
2 roles created
0 roles updated
0 ous created
0 ous updated
0 parentings created
0 parentings deleted
0 permissions created
0 permissions deleted
0 attributes created
0 attributes deleted
Success
[2021-02-25 Thu 18:55:09] - - - INFO hobo.agent.authentic2.provisionning.helper: provisionning roles {nouveaux rôles...

Fichiers


Demandes liées

Lié à Hobo - Development #52355: agent/authentic2: ne provisionner que si la transaction courante commitFermé24 mars 2021

Actions

Révisions associées

Révision 24d42824 (diff)
Ajouté par Valentin Deniaud il y a presque 3 ans

import_site: remove obsolete dry run provisionning protection (#51462)

Historique

#1

Mis à jour par Valentin Deniaud il y a environ 3 ans

Je confirme le bug, l'import dry-run n'importe pas les rôles dans a2 mais par contre les envoie aux autres briques, pas cool.

L'affaire est très embrouillée pour moi, j'ai essayé de trouver à quel moment le bug avait été introduit (côté hobo, certainement) mais pas réussi à revenir aux versions de l'époque, j'imagine que le passage à python 3 n'aide pas.

Pour ne pas vraiment importer les rôles dans a2, la commande joue l'import dans un bloc atomic() puis lève une exception. Donc les méthodes save() sont vraiment appelés et les signaux vraiment envoyés, normal. Il sont liés à des méthodes de provisionning dans hobo/agent/authentic2/apps.py.

Face à ça la commande fait

    if dry_run and 'hobo.agent.authentic2' in settings.INSTALLED_APPS:
        import hobo.agent.authentic2
        with hobo.agent.authentic2.provisionning.Provisionning():
            yield

Ce qui j'imagine devait permettre d'éviter un vrai provisionning, mais aucune idée de comment c'est censé marcher, ça ne redirige absolument pas les signaux vers d'autres fonctions, le provisionning normal continue à être appelé. Je pense qu'il faut quelqu'un qui comprenne ce bout de code pour continuer l'analyse.

#2

Mis à jour par Benjamin Dauvergne il y a environ 3 ans

Sans encore avoir réfléchi à tous les tenants et aboutissants je me dis qu'on pourrait encadrer dans hobo/agent/authentic2/provisionning.py tous les add_saved/add_deleted par des transaction.on_commit(...) et virer le code spécifique de import.

#3

Mis à jour par Benjamin Dauvergne il y a environ 3 ans

  • Lié à Development #52355: agent/authentic2: ne provisionner que si la transaction courante commit ajouté
#4

Mis à jour par Valentin Deniaud il y a presque 3 ans

  • Assigné à mis à Valentin Deniaud

C'est donc corrigé côté hobo, je vais virer le code qui gérait ça dans a2.

#5

Mis à jour par Valentin Deniaud il y a presque 3 ans

#6

Mis à jour par Benjamin Dauvergne il y a presque 3 ans

  • Statut changé de Solution proposée à Solution validée
#7

Mis à jour par Valentin Deniaud il y a presque 3 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 24d42824ddfe4798e8168e9489a9281546b26748
Author: Valentin Deniaud <vdeniaud@entrouvert.com>
Date:   Tue May 25 15:00:53 2021 +0200

    import_site: remove obsolete dry run provisionning protection (#51462)
#8

Mis à jour par Frédéric Péters il y a presque 3 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF