Development #14155
Provisionning de masse des rôles
0%
Description
Nécessaire pour déployer une instance Matrik
Fichiers
Demandes liées
Historique
Mis à jour par Frédéric Péters il y a environ 7 ans
Au-delà de Matrik ça serait bien utile aussi à l'ajout de nouveaux services, ou quand rabbitmq est un down un certain temps et que des messages sont donc perdus.
Mis à jour par Frédéric Péters il y a environ 6 ans
- Lié à Development #19853: Provisionning "full" ajouté
Mis à jour par Benjamin Dauvergne il y a environ 6 ans
- Fichier 0001-agent-authentic2-add-an-hobo_provision-command-19853.patch 0001-agent-authentic2-add-an-hobo_provision-command-19853.patch ajouté
- Patch proposed changé de Non à Oui
Poser sur le le mauvais ticket (ticket chapeau Publik).
Testé en live sur authentic.dev (il y est toujours si vous voulez jouer), je veux bien des idées de test parce que là j'ai trouvé plus simple de tester directement sur le tenant authentic-devmo.dev.entrouvert.org.
Je batch les utilisateurs par paquet de 512 en séparant les utilisateurs normaux des utilisateurs ayant un rôle admin parce que ces derniers ne peuvent être provisionnés en masse actuellement.
On peut tenter d'aller jusqu'à du vrai full pour les utilisateurs, notamment pour supprimer les utilisateurs ayant disparus. Je ne sais pas si ça vaut la peine ou s'il vaut mieux développer quelque chose de plus simple comme l'envoi de tous les uuids.
Mis à jour par Benjamin Dauvergne il y a environ 6 ans
- Fichier 0001-agent-authentic2-add-an-hobo_provision-command-19853.patch 0001-agent-authentic2-add-an-hobo_provision-command-19853.patch ajouté
Avec des if verbosity
et correction au distinct() manquant sur la jointure
avec les rôles donnant un droit d'administration.
Mis à jour par Thomas Noël il y a environ 6 ans
Mon interrogation actuelle sur une instance avec 30000 users, on va envoyer 60 batches de 500 users. Mais ils doivent tous être exécutés dans le délai de vie du message rabbitmq (2 minutes). Donc je me dis qu'on pourrait avoir un paramètre "batch-sleep" ou autre nom, pour temporiser entre deux batches.
(Plus globalement, mais très très en dehors de ce ticket, à un moment il faudra qu'on étudie la question d'envoyer dans rabbitmq des messages pour lesquels on attendrait des messages de retour des SP impliqués)
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
Thomas Noël a écrit :
Mon interrogation actuelle sur une instance avec 30000 users, on va envoyer 60 batches de 500 users. Mais ils doivent tous être exécutés dans le délai de vie du message rabbitmq (2 minutes). Donc je me dis qu'on pourrait avoir un paramètre "batch-sleep" ou autre nom, pour temporiser entre deux batches.
Ok.
(Plus globalement, mais très très en dehors de ce ticket, à un moment il faudra qu'on étudie la question d'envoyer dans rabbitmq des messages pour lesquels on attendrait des messages de retour des SP impliqués)
Ce n'est pas possible on fait du broadcast pas du point à point, l'avenir c'est plutôt d'avoir des notifications simples et vide et que les SPs viennent poller les API /api/users/ et /api/roles/ d'A2.
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
- Fichier 0001-agent-authentic2-add-an-hobo_provision-command-19853.patch 0001-agent-authentic2-add-an-hobo_provision-command-19853.patch ajouté
Avec le paramètre --batch-sleep et un test banal.
Mis à jour par Thomas Noël il y a presque 6 ans
L'envie d'être pénible : un affichage de la progression au niveau de do_provision(qs)
? (parce que ça va prendre rapidement prendre 5 minutes, avoir un petit message toutes les 30 secondes ça sera bien). Genre des lignes "batch-provisionning 512 users, and wait for 30s.".
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
- Fichier 0001-agent-authentic2-add-an-hobo_provision-command-19853.patch 0001-agent-authentic2-add-an-hobo_provision-command-19853.patch ajouté
avec ajout d'un log si verbosity > 1.
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
- Fichier 0001-agent-authentic2-add-an-hobo_provision-command-19853.patch 0001-agent-authentic2-add-an-hobo_provision-command-19853.patch ajouté
niveau redéscendu à verbosity > 0 comme pour les autres logs.
Mis à jour par Thomas Noël il y a presque 6 ans
Je ne comprends pas bien le children à la fin de :
roles_with_attributes = get_role_model().objects.filter(attributes__name='is_superuser').children()
Peut-être que «roles_with_attributes» pourrait être nommé «admin_roles» ?
Sinon, typo sur le commentaire juste en dessous "# first those without and admin attribute" : and → an
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
Think of the children ? Non ? C'est pas ça ? Bon...
Donc je cherches tous les rôles qui ont un attribut is_superuser
, i.e. tous les rôles "Administrateur de <service>", ensuite je prends tous leurs fils (eux inclus, par défaut quand on demande les enfants ou les parents, le rôle lui même est inclus).
Ensuite j'exclue les utilisateurs avec de tels rôles pour obtenir les utilisateurs normaux, ensuite je cherche uniquement les utilisateurs avec de tels rôles pour obtenir les administrateurs.
Mis à jour par Thomas Noël il y a presque 6 ans
Ok, "le rôle lui même est inclus" j'eusse pu lire un peu le code du manager children pour comprendre ça, merci.
Ack, donc !
Mis à jour par Frédéric Péters il y a presque 6 ans
- Statut changé de Nouveau à Solution validée
(pour que le ack soit bien visible)
Mis à jour par Frédéric Péters il y a presque 6 ans
- Statut changé de Solution validée à Résolu (à déployer)
En fait déjà poussé, mais avec un autre numéro.
commit f31d522206397a9e8a849e53cf8e8aceac65b6a2 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Fri Apr 13 16:30:12 2018 +0200 agent/authentic2: add an hobo_provision command (#19853) To provision all users or roles, the role provisionning is full, i.e. it removes old roles. The user provisionning is not currently.
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Fermé