Projet

Général

Profil

Development #35345

provisionner tous les rôles à un nouveau service déployé

Ajouté par Frédéric Péters il y a plus de 4 ans. Mis à jour il y a plus de 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Catégorie:
-
Version cible:
-
Début:
09 août 2019
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Pour ne pas se trouver à devoir attendre la nuit qu'un provisionning full soit effectué, particulièrement utile aussi pour le déploiement de signal publik, cf #34464#note-28.


Fichiers

Révisions associées

Révision a1258182 (diff)
Ajouté par Nicolas Roche (absent jusqu'au 3 avril) il y a plus de 4 ans

agent: redeploy roles when authentic get a new service to manage (#35345)

Révision 430c184d (diff)
Ajouté par Thomas Noël il y a plus de 4 ans

Revert "agent: redeploy roles when authentic get a new service to manage (#35345)"

This reverts commit a1258182235788b7e1a70cbbda5c27775a2dda24.

Révision 513d1f9e (diff)
Ajouté par Thomas Noël il y a plus de 4 ans

authentic agent: mass provision roles on new services (#35345)

Historique

#1

Mis à jour par Frédéric Péters il y a plus de 4 ans

Pas testé ni même exécuté, genre ça serait :

--- a/hobo/agent/authentic2/management/commands/hobo_deploy.py
+++ b/hobo/agent/authentic2/management/commands/hobo_deploy.py
@@ -20,6 +20,7 @@ from django.conf import settings
 from tenant_schemas.utils import tenant_context

 from hobo.agent.common.management.commands import hobo_deploy
+from hobo.agent.authentic2.provisionning import Provisionning

 User = get_user_model()

@@ -205,6 +206,13 @@ class Command(hobo_deploy.Command):
                     self.load_skeleton(provider, service['service-id'],
                                        service['template_name'])

+                if service_created:
+                    # mass provision roles
+                    engine = Provisionning()
+                    roles = get_role_model().objects.all()
+                    ous = {provider.ou.id: provider.ou}
+                    engine.notify_roles(ous, roles, full=True)
+
     def load_skeleton(self, provider, service_id, template_name,
                       create_ou=False):
         if not getattr(settings, 'HOBO_SKELETONS_DIR', None):
#2

Mis à jour par Nicolas Roche (absent jusqu'au 3 avril) il y a plus de 4 ans

Oui, cela fonctionne.
J'ai une dizaine de messages (j'imagine à chaque redéploiement) avec la bonne audience qui apparaissent avant les messages qui me posaient problème avec #34464#note-20.

#3

Mis à jour par Nicolas Roche (absent jusqu'au 3 avril) il y a plus de 4 ans

Je propose le patch de Fred en l'état (je n'ai pas réussi à écrire un test dédié).

#4

Mis à jour par Benjamin Dauvergne il y a plus de 4 ans

Nicolas Roche a écrit :

Je propose le patch de Fred en l'état (je n'ai pas réussi à écrire un test dédié).

Tu peux en faire un dans tests_authentic/test_hobo_deploy.py:test_hobo_deploy() en mockant hobo.agent.common.notify_agents pour vérifier que les messages attendus partent bien.

#5

Mis à jour par Nicolas Roche (absent jusqu'au 3 avril) il y a plus de 4 ans

Merci pour la piste.
Je reçois les messages via 'hobo.agent.authentic2.provisionning.notify_agents'.

#7

Mis à jour par Thomas Noël il y a plus de 4 ans

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

Mis à jour par Nicolas Roche (absent jusqu'au 3 avril) il y a plus de 4 ans

commit a1258182235788b7e1a70cbbda5c27775a2dda24
Author: Nicolas ROCHE <nroche@entrouvert.com>
Date:   Fri Aug 9 15:23:19 2019 +0200

    agent: redeploy roles when authentic get a new service to manage (#35345)
#9

Mis à jour par Frédéric Péters il y a plus de 4 ans

  • Statut changé de Solution validée à Résolu (à déployer)
#10

Mis à jour par Thomas Noël il y a plus de 4 ans

  • Statut changé de Résolu (à déployer) à En cours

Le patch appliqué n'est pas bon, il y a un mélange avec #35351 ; je le reverte.

commit 430c184de6f2580f22538d76a187314a1d84d793
Author: Thomas NOEL <tnoel@entrouvert.com>
Date:   Wed Aug 14 22:47:17 2019 +0200

    Revert "agent: redeploy roles when authentic get a new service to manage (#35345)" 

    This reverts commit a1258182235788b7e1a70cbbda5c27775a2dda24.

Il faut reprendre l'idée mais le notify ne se fera pas au même endroit.

#11

Mis à jour par Thomas Noël il y a plus de 4 ans

Voici ma proposition, un poil plus rusée (et donc aussi moins lisible), qui répertorie les OUs sur lesquelles envoyer les notifications, et fait tout ça une seule fois après la création de tous les services (et pas à chaque service)

#12

Mis à jour par Nicolas Roche (absent jusqu'au 3 avril) il y a plus de 4 ans

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

(désolé de paraphraser, mais j'ai eu tellement de mal à écrire mon laïus ci-dessous que je n'arrive pas à le supprimer)

Quand on deploy authentic, on boucle sur les services de la recette du cook.

# create or update Service Providers

Or, ces services n'ont pas forcément la même OU.

# if there are more than one w.c.s. service we will create an
# ou of the same name

La fonction notify_roles() permet d'envoyer un message destiné à tous les services d'une OU, pour qu'ils récupèrent les rôles existants.

L'idée est de limiter le nombre de messages envoyés en appelant 'notify_roles' pour chaque OU et non pas pour chaque service.

Dans le test on récupère bien 2 messages, un pour chaque OU (on a un second wcs dans le test...) et ayants pour audiences chacune des briques concernées par l'OU.

#13

Mis à jour par Thomas Noël il y a plus de 4 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 513d1f9e094b649cf98b79e2095bc5f130face1b
Author: Thomas NOEL <tnoel@entrouvert.com>
Date:   Wed Aug 14 23:42:22 2019 +0200

    authentic agent: mass provision roles on new services (#35345)

#14

Mis à jour par Frédéric Péters il y a plus de 4 ans

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

Formats disponibles : Atom PDF