Development #7176
Créer une commande import-wcs-roles pour l'agent authentic2
100%
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Benjamin Dauvergne il y a presque 9 ans
- Fichier 0001-agent-authentic2-add-new-command-import-wcs-roles.patch 0001-agent-authentic2-add-new-command-import-wcs-roles.patch ajouté
- Patch proposed changé de Non à Oui
Patch pas encore testé mais l'idée est là.
Mis à jour par Frédéric Péters il y a presque 9 ans
Le lien vers w.c.s. devrait passer par des slugs, je pensais que le ticket existait déjà mais non, je viens de le créer. (#7180)
url = self.wcs_url + 'roles?%s' % urllib.urlencode({'orig': self.orig})
C'est peut-être à changer mais aujourd'hui l'API exige un utilisateur.
role_extractor = role_extractors.WcsRoleExtractor
Même si je reste convaincu qu'abstraire prématurément est inutile, en gardant la structure actuelle, j'aurais quand même WcsRoleExtractor dans le fichier import-wcs-roles.
hobo/agent/authentic2/management/signature.py
Ça a quand même des chances de se retrouver utile de manière plus générale, ça pourrait aller dans hobo/ (dans utils.py?)
W.C.S.
w.c.s., en minuscules.
self.logger
Perdu sur une ligne ?
Ça mériterait aussi l'ajout de quelques mots sur les particularités de l'agent authentic dans le README (il y a déjà un bout sur wcs).
Mis à jour par Benjamin Dauvergne il y a presque 9 ans
J'ai changé la commande pour générer tous les paramètres depuis le hobo.json autant que possible. Le seul truc un peu sioux c'est de trouver un email connu (ou même un NameID) dont on soit sûr qu'il existe sur l'instance de w.c.s. J'ai choisi de prendre le superuser le plus ancien. Ce code dépend maintenant du ticket #7192.
Frédéric Péters a écrit :
Le lien vers w.c.s. devrait passer par des slugs, je pensais que le ticket existait déjà mais non, je viens de le créer. (#7180)
J'ai modifié le code pour prendre ce futur slug comme identifiant.
url = self.wcs_url + 'roles?%s' % urllib.urlencode({'orig': self.orig})
C'est peut-être à changer mais aujourd'hui l'API exige un utilisateur.
Ajouté le paramètre email (voir remarque avant).
role_extractor = role_extractors.WcsRoleExtractor
Même si je reste convaincu qu'abstraire prématurément est inutile, en gardant la structure actuelle, j'aurais quand même WcsRoleExtractor dans le fichier import-wcs-roles.
Je voulais surtout séparer l'extraction de leur définition de leur création effective, j'ai tout réuni en une classe mais avec toujours plusieurs méthodes.
hobo/agent/authentic2/management/signature.py
Ça a quand même des chances de se retrouver utile de manière plus générale, ça pourrait aller dans hobo/ (dans utils.py?)
Déplacé dans hobo/.
W.C.S.
w.c.s., en minuscules.
Corrigé.
self.logger
Perdu sur une ligne ?
Enlevé.
Ça mériterait aussi l'ajout de quelques mots sur les particularités de l'agent authentic dans le README (il y a déjà un bout sur wcs).
Ajouté.
Mis à jour par Benjamin Dauvergne il y a presque 9 ans
- Fichier 0001-agent-authentic2-add-new-command-import-wcs-roles.patch 0001-agent-authentic2-add-new-command-import-wcs-roles.patch ajouté
Avec le patch.
Mis à jour par Benjamin Dauvergne il y a presque 9 ans
- Fichier 0001-agent-authentic2-add-new-command-import-wcs-roles.patch 0001-agent-authentic2-add-new-command-import-wcs-roles.patch ajouté
Avec un message de commit mis à jour.
Mis à jour par Frédéric Péters il y a presque 9 ans
- Lié à Project management #7175: Importation des rôles de w.c.s. dans authentic ajouté
Mis à jour par Frédéric Péters il y a presque 9 ans
- Fichier 0001-agent-authentic2-add-new-command-import-wcs-roles.patch 0001-agent-authentic2-add-new-command-import-wcs-roles.patch ajouté
url = self.wcs_url + 'roles?%s'
Pour accompagner l'ajout des slugs il y a aussi la mise à disposition de l'API à l'adresse api/roles, plutôt que roles; l'ancien endpoint reste fonctionnel mais tant qu'à faire, autant utiliser le nouveau directement.
Par ailleurs je me demande si c'est vraiment utile de nécessiter une requête authentifiée/signée pour ce endpoint, mais c'est une autre affaire.
À part ça, en imaginant l'affaire testée, ce serait ok. (bon, en vrai il y a le "from .. import role_extractors" à retirer, puis import os et json à mettre, puis faire me = me0, puis ne pas passer sur les services qui ont un service-id != 'wcs', puis passer Accept: application/json, puis prendre en compte que la clé est créée sur une base ne contenant pas le port, et puis on arrive à une mise à jour à faire par rapport aux changements rbac dans authentic, parce qu'il n'y a plus de external_id, et ça je laisse faire).
Mis à jour par Benjamin Dauvergne il y a presque 9 ans
Frédéric Péters a écrit :
url = self.wcs_url + 'roles?%s'
Pour accompagner l'ajout des slugs il y a aussi la mise à disposition de l'API à l'adresse api/roles, plutôt que roles; l'ancien endpoint reste fonctionnel mais tant qu'à faire, autant utiliser le nouveau directement.
C'est pour tout de suite ?
Par ailleurs je me demande si c'est vraiment utile de nécessiter une requête authentifiée/signée pour ce endpoint, mais c'est une autre affaire.
Oui.
À part ça, en imaginant l'affaire testée, ce serait ok. (bon, en vrai il y a le "from .. import role_extractors" à retirer, puis import os et json à mettre, puis faire me = me0, puis ne pas passer sur les services qui ont un service-id != 'wcs', puis passer Accept: application/json, puis prendre en compte que la clé est créée sur une base ne contenant pas le port, et puis on arrive à une mise à jour à faire par rapport aux changements rbac dans authentic, parce qu'il n'y a plus de external_id, et ça je laisse faire).
Vu tout ça. J'ai fait un test d'intégration manuel de bout en bout, ça roule. Par contre je pense pousser l'extracteur directement dans authentic et seulement la commande dans hobo. C'est un peu chiant de tester avec hobo, je préfère faire mes tests en monotenant. Et si j'arrive à m'interposer dans les appels à requests j'aimerai bien avoir des tests.
Mis à jour par Frédéric Péters il y a presque 9 ans
url = self.wcs_url + 'roles?%s'
Pour accompagner l'ajout des slugs il y a aussi la mise à disposition de l'API à l'adresse api/roles, plutôt que roles; l'ancien endpoint reste fonctionnel mais tant qu'à faire, autant utiliser le nouveau directement.
C'est pour tout de suite ?
Ça a été mis en place avec la mise à disposition des slugs (#7180).
Vu tout ça. J'ai fait un test d'intégration manuel de bout en bout, ça roule. Par contre je pense pousser l'extracteur directement dans authentic et seulement la commande dans hobo. C'est un peu chiant de tester avec hobo, je préfère faire mes tests en monotenant. Et si j'arrive à m'interposer dans les appels à requests j'aimerai bien avoir des tests.
Je ne suis pas sûr de la séparation que ça va donner, tu mettrais signature.py et la classe WcsRoleImporter du côté d'Authentic, c'est ça ?
Mis à jour par Benjamin Dauvergne il y a presque 9 ans
- Bloqué par Development #7299: a2_rbac: add external_id field to Role object ajouté
Mis à jour par Benjamin Dauvergne il y a presque 9 ans
Mis à jour par Frédéric Péters il y a presque 9 ans
Si ça a été testé de bout en bout, c'est ok mais je suggérais url = self.wcs_url + 'roles?%s' % urllib.urlencode(...
, que ça soit plutôt /api/roles qui soit appelé. Et print response.content
à retirer.
Mis à jour par Benjamin Dauvergne il y a presque 9 ans
- Fichier 0001-agent-authentic2-add-new-command-import-wcs-roles.patch 0001-agent-authentic2-add-new-command-import-wcs-roles.patch ajouté
Non c'est pas testé de bout en bout je n'ai testé que la classe WcsRoleImported depuis un shell, je n'ai aucune certitude que la partie intégration hobo marche. Si on m'indique une plateforme sûre pour tester j'y vais.
Attaché le patch mis à jour pour api/roles et le print.
Mis à jour par Frédéric Péters il y a presque 9 ans
- Fichier 0001-agent-authentic2-add-new-command-import-wcs-roles.patch 0001-agent-authentic2-add-new-command-import-wcs-roles.patch ajouté
- Fichier t.diff t.diff ajouté
- Statut changé de Nouveau à En cours
Patch testé et modifié (en fichiers joints le fixup du patch, puis le diff par rapport à ta version).
Mis à jour par Benjamin Dauvergne il y a presque 9 ans
- Statut changé de En cours à Résolu (à déployer)
- % réalisé changé de 0 à 100
Appliqué par commit 9d4b9f9e6c63e47b5d7cf498f6c776e2ca2633e4.
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Bloqué par Development #7299: a2_rbac: add external_id field to Role object supprimé
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Lié à Development #7299: a2_rbac: add external_id field to Role object ajouté
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Statut changé de Résolu (à déployer) à Fermé
agent/authentic2: add new command import-wcs-roles
The command make a signed get to the "roles" web-service of w.c.s. and try to
created services roles for all found roles. It traverses all tenants and
generate credentials from hobo.json keys (base_url and secret_key) and existing
superusers:
Use the --delete option if you want roles which have disappeared to be removed.
fixes #7176