Development #8219
nouvelle command 'notify' pour traiter les notifications provisionnement/déprovisionnement des rôles en provenance d'authentic
100%
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Lié à Development #8217: Ajouter une tâche hobo pour notifier les agents des nouveaux rôles, connecter cette tâche aux signaux post_save, post_delete sur les rôles ajouté
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Lié à Project management #8006: Supprimer la création de rôles dans w.c.s. ajouté
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Fichier 0001-new-notify-command-to-handle-role-provisionning-depr.patch 0001-new-notify-command-to-handle-role-provisionning-depr.patch ajouté
- Patch proposed changé de Non à Oui
Mis à jour par Thomas Noël il y a plus de 8 ans
- Version cible changé de v1.13.4 à v1.13.5
→ 1.13.5 car la 1.13.4 est déjà releasée
Mis à jour par Serghei Mihai il y a plus de 8 ans
if action == 'provision': # Provision/rename role.name = name role.slug = uuid role.store() elif action == 'provision': <-- 'deprovision' ? # Deprovision role.remove_self()
Mis à jour par Frédéric Péters il y a plus de 8 ans
Taper dans une méthode séparée ce qui suit le notification = json.load..., histoire de faciliter la création de tests.
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Fichier 0001-new-notify-command-to-handle-role-provisionning-depr.patch 0001-new-notify-command-to-handle-role-provisionning-depr.patch ajouté
Remarques intégrées.
Mis à jour par Frédéric Péters il y a plus de 8 ans
Ah j'ai du mal m'exprimer. Pour faciliter les tests mon idée c'est de réduire le execute(), qui ferait en gros
[...] notification = self.load_notification(args) if not self.check_valid_input(notification): sys.exit(1) self.process_notification(notification)
Comme ça on peut avoir des tests sur le process_notification().
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Fichier 0001-new-notify-command-to-handle-role-provisionning-depr.patch 0001-new-notify-command-to-handle-role-provisionning-depr.patch ajouté
Voilà avec des tests qui passent.
Mis à jour par Frédéric Péters il y a plus de 8 ans
Cool; (ett → etat, dans le slug ? (j'ai d'abord cru que c'était partie intégrante du test d'avoir la lettre manquante)).
On n'a jamais de full=True, il me semble; tu imagines ce passage arriver quand ?
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
Le full=True est dans le dernier patch du ticket #8217 ou alors je n'ai pas attaché le bon. Le 'ett' est volontaire.
Mis à jour par Frédéric Péters il y a plus de 8 ans
(je n'arrive pas à comprendre le sens de ett, pas grave).
Je vois le full: True; maintenant que c'est le cas de manière systématique, il pourrait juste ne pas exister ? Et/ou on le garde simplement par anticipation du moment où on voudra qu'il ne soit plus systématique ?
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
Je préfère garder les deux modes; je ne sais pas encore comment ça va se comporter à Montpellier particulièrement, je me laisse le choix de revenir sur des envois ponctuels et du full de temps en temps.
Un autre souci que je vois pour Montpellier c'est le cas de rôles pour Sussargues et pas pour Clapiers, qui n'est pas géŕé, tout les w.c.s. reçoivent tous les rôles.
Mis à jour par Frédéric Péters il y a plus de 8 ans
Ah oui, ça va pas du tout aller :/
Quand des entités sont utilisées, il faudrait grouper par entité et mettre en "audience" uniquement les SP attachés à celle-ci ?
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
Yep je pense que c'est un peu ça: lors de la modification d'un rôle lié à une entité on balance tous les rôles de l'entité et tous les rôle sans entités aux SPs de cette entité, sauf les rôles d'administration (ceux qui ont un admin_scope non nul).
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Fichier 0001-add-new-agent-task-to-provision-objects-to-tenants-f.patch ajouté
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Fichier
0001-add-new-agent-task-to-provision-objects-to-tenants-f.patchsupprimé
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Fichier 0001-new-notify-command-to-handle-role-provisionning-depr.patch 0001-new-notify-command-to-handle-role-provisionning-depr.patch ajouté
Changement de nom -> hobo_notify
Mis à jour par Frédéric Péters il y a plus de 8 ans
Il reste une mention du nom :
class CmdNotify(Command): name = 'notify'
Mis à jour par Thomas Noël il y a plus de 8 ans
et mini-truc, dans test_process_notification_wrong_audience, les deux rôles ont le même uuid (12345, lignes 38 et 44 de tests/test_hobo_notify.py)
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Fichier 0001-new-hobo_notify-command-to-handle-role-provisionning.patch 0001-new-hobo_notify-command-to-handle-role-provisionning.patch ajouté
Thomas Noël a écrit :
et mini-truc, dans test_process_notification_wrong_audience, les deux rôles ont le même uuid (12345, lignes 38 et 44 de tests/test_hobo_notify.py)
Bien vu mais ça n'a pas d'impact, c'est justement un test qui vérifie que rien n'est chargé.
Mis à jour par Thomas Noël il y a plus de 8 ans
en relisant je me dis que ça pourrait planter si un rôle n'existe pas alors qu'il doit être "déprovisionné".
je propose:- ajouter un
role = None
avant letry
ligne 95 (Find existing role) - et alors
elif action == 'deprovision' and role:
ligne 110
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
Il y a un if action != 'provision': continue
pour ça ? Dans quel cas ça pourrait continuer ? L'exception KeyError ne serait pas levé et role serait quand même None ?
Mis à jour par Thomas Noël il y a plus de 8 ans
J'avais raté le "if action != 'provision':". Sorry.
Mis à jour par Frédéric Péters il y a plus de 8 ans
Truc que j'avais raté, qui m'est revenu ce matin; dans wcs on a absolument besoin d'un attribut email aux rôles. (et en fait, dans wcs, c'est une liste d'emails, je vais vérifier si c'est utilisé avec plusieurs emails parfois, mais je pense que oui).
Concernant les autres attributs :
- details, pour contenir une description, pas indispensable immédiatement, mais tant qu'à ajouter email, autant prendre celui-là aussi ;
- emails_to_members, qui détermine si les mails sont également distribués aux adresses individuelles des membres; là-dessus je dirais que s'il n'y a pas d'emails du tout, ça doit être mis à True, et dans le cas contraire, ça ne doit pas être touché ;
- allows_backoffice_access, ne doit pas être touché mais nécessite l'ajout d'un nouveau panneau de paramétrage où pourront être sélectionnés les rôles ayant accès au backoffice. (la valeur par défaut c'est True, on ne la change pas, on verra plus tard). (je m'occupe de cette partie, #8239)
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
Frédéric Péters a écrit :
Truc que j'avais raté, qui m'est revenu ce matin; dans wcs on a absolument besoin d'un attribut email aux rôles. (et en fait, dans wcs, c'est une liste d'emails, je vais vérifier si c'est utilisé avec plusieurs emails parfois, mais je pense que oui).
Concernant les autres attributs :
- details, pour contenir une description, pas indispensable immédiatement, mais tant qu'à ajouter email, autant prendre celui-là aussi ;
Je pense que peux projeter le champ description du modèle Role là dessus sans trop de soucis, ça me semble être la même chose.
Celui-là et emails je vais les gérer comme suit:
- emails_to_members, qui détermine si les mails sont également distribués aux adresses individuelles des membres; là-dessus je dirais que s'il n'y a pas d'emails du tout, ça doit être mis à True, et dans le cas contraire, ça ne doit pas être touché ;
- j'ai ajouté un setting pour surcharger la classe de formulaire utilisée dans le manager pour éditer la définition d'un rôle
- dans l'application hobo.agent spécifique à authentic2 je vais ajouter la définition d'une telle class qui sauvegardera la valeur de ces deux champs dans des modèles RoleAttribute
- dans le AppConfig de la même application je poserai le setting A2_MANAGER_ROLE_FORM_CLASS qu'il faut
- allows_backoffice_access, ne doit pas être touché mais nécessite l'ajout d'un nouveau panneau de paramétrage où pourront être sélectionnés les rôles ayant accès au backoffice. (la valeur par défaut c'est True, on ne la change pas, on verra plus tard). (je m'occupe de cette partie, #8239)
Ok.
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
Autre chose, pour ne pas perdre les données actuellement stockés dans les champs emails et emails_to_members il faudrait que les dernières exécutions de import-wcs-roles les recopient dans les modèles RoleAttribute, mais pour cela il faudrait qu'ils soient exportés par l'API /api/roles ce qui ne semble pas le cas -> #8254.
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Fichier 0001-new-hobo_notify-command-to-handle-role-provisionning.patch 0001-new-hobo_notify-command-to-handle-role-provisionning.patch ajouté
Dernière version.
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Fichier 0001-add-new-agent-task-to-provision-objects-to-tenants-f.patch 0001-add-new-agent-task-to-provision-objects-to-tenants-f.patch ajouté
Dernière dernière version.
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Fichier 0001-new-hobo_notify-command-to-handle-role-provisionning.patch 0001-new-hobo_notify-command-to-handle-role-provisionning.patch ajouté
J'attache vraiment n'importe quoi, le bon patch.
Mis à jour par Frédéric Péters il y a plus de 8 ans
(comme #8254) Il manque la gestion de description→details.
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Fichier 0001-api-export-Role.emails-and-.emails_to_members-8254.patch ajouté
Voilà voilà.
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Fichier
0001-api-export-Role.emails-and-.emails_to_members-8254.patchsupprimé
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Fichier 0001-new-hobo_notify-command-to-handle-role-provisionning.patch 0001-new-hobo_notify-command-to-handle-role-provisionning.patch ajouté
Ajout importation description -> details, tests mis à jour et passant.
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Statut changé de Nouveau à Résolu (à déployer)
- % réalisé changé de 0 à 100
Appliqué par commit e894d0ce2e2447dd620411dd303f7dba74a2ee21.
new hobo_notify command to handle role provisionning/deprovisionning messages (fixes #8219)
It gets wcs roles from uuid or slug of the authentic2 role; if role is
using a slug it's replaced by the uuid. It handles rename by using uuid
as the slug of roles.
Targetted tenants are identified through their SAML entity id.