Projet

Général

Profil

Development #14155

Provisionning de masse des rôles

Ajouté par Pierre Cros il y a plus de 7 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
29 novembre 2016
Echéance:
31 janvier 2017
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Nécessaire pour déployer une instance Matrik


Fichiers


Demandes liées

Lié à Publik - Development #19853: Provisionning "full"Fermé02 novembre 201715 décembre 2017

Actions

Historique

#1

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.

#2

Mis à jour par Frédéric Péters il y a environ 6 ans

#3

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

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.

#4

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

Avec des if verbosity et correction au distinct() manquant sur la jointure
avec les rôles donnant un droit d'administration.

#5

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)

#6

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.

#8

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.".

#11

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

niveau redéscendu à verbosity > 0 comme pour les autres logs.

#12

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

#13

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.

#14

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 !

#15

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)

#16

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.
#17

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

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

Formats disponibles : Atom PDF