Development #35345
provisionner tous les rôles à un nouveau service déployé
0%
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
Revert "agent: redeploy roles when authentic get a new service to manage (#35345)"
This reverts commit a1258182235788b7e1a70cbbda5c27775a2dda24.
authentic agent: mass provision roles on new services (#35345)
Historique
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):
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.
Mis à jour par Nicolas Roche (absent jusqu'au 3 avril) il y a plus de 4 ans
- Fichier 0001-agent-redeploy-roles-when-authentic-get-a-new-servic.patch 0001-agent-redeploy-roles-when-authentic-get-a-new-servic.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Je propose le patch de Fred en l'état (je n'ai pas réussi à écrire un test dédié).
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.
Mis à jour par Nicolas Roche (absent jusqu'au 3 avril) il y a plus de 4 ans
- Fichier 0001-agent-redeploy-roles-when-authentic-get-a-new-servic.patch 0001-agent-redeploy-roles-when-authentic-get-a-new-servic.patch ajouté
Merci pour la piste.
Je reçois les messages via 'hobo.agent.authentic2.provisionning.notify_agents'.
Mis à jour par Thomas Noël il y a plus de 4 ans
- Statut changé de Solution proposée à Solution validée
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)
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)
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.
Mis à jour par Thomas Noël il y a plus de 4 ans
- Fichier 0001-authentic-agent-mass-provision-roles-on-new-services.patch 0001-authentic-agent-mass-provision-roles-on-new-services.patch ajouté
- Statut changé de En cours à Solution proposée
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)
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.
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)
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
agent: redeploy roles when authentic get a new service to manage (#35345)