Development #8440
Ajouter le provisionning des utilisateurs
0%
Description
Je commence par définir cela au niveau des applications Django, les tests sont plus simples. Ensuite construira la version w.c.s. dessus, mais j'entrevois déjà quelques difficultés en plus pour les doublons.
Fichiers
Demandes liées
Révisions associées
agent/authentic2: make objects homogenous in a provisionning message (#8440)
In order to support 'full' provisionning of different kinds of objects,
we impose that in the same message all objects are of the same type.
agent/common: add user provisionning and tests for common agent (#8440)
agent/authentic2: add hooks on signals to provision users (#8440)
Signals intercepted:
- post_save and post_delete on User
- m2m_changed on Role.members.through
Historique
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Fichier 0001-agent-common-prepare-for-user-provisionning-8440.patch 0001-agent-common-prepare-for-user-provisionning-8440.patch ajouté
- Fichier 0002-agent-authentic2-make-objects-homogenous-in-a-provis.patch 0002-agent-authentic2-make-objects-homogenous-in-a-provis.patch ajouté
- Fichier 0003-agent-common-add-user-provisionning-and-tests-for-co.patch 0003-agent-common-add-user-provisionning-and-tests-for-co.patch ajouté
- Patch proposed changé de Non à Oui
Ces patchs s'appliquent au dessus de ceux du #8425 pour avoir la base pour les tests.
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Fichier 0004-agent-authentic2-add-hooks-on-signals-to-provision-u.patch 0004-agent-authentic2-add-hooks-on-signals-to-provision-u.patch ajouté
Les hooks pour authentic.
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Fichier 0001-agent-common-prepare-for-user-provisionning-8440.patch 0001-agent-common-prepare-for-user-provisionning-8440.patch ajouté
- Fichier 0002-agent-authentic2-make-objects-homogenous-in-a-provis.patch 0002-agent-authentic2-make-objects-homogenous-in-a-provis.patch ajouté
- Fichier 0003-agent-common-add-user-provisionning-and-tests-for-co.patch 0003-agent-common-add-user-provisionning-and-tests-for-co.patch ajouté
- Fichier 0004-agent-authentic2-add-hooks-on-signals-to-provision-u.patch 0004-agent-authentic2-add-hooks-on-signals-to-provision-u.patch ajouté
Patchs refaits, avec des tests coté authentic, ça passe au dessus de #8425.
Mis à jour par Frédéric Péters il y a plus de 8 ans
Après avoir installé les patchs (ici et côté wcs), j'ai fait une modif à un utilisateur existant et semblerait-il qu'il a passé un full=True dedans :
[2015-10-12 19:11:23,768: ERROR/MainProcess] Task hobo-notify[f7dc7420-e762-4218-857d-e99ce5228caf] raised unexpected: RuntimeError('command "/home/fred/src/eo/venv/bin/python /home/fred/src/eo/fargo/manage.py hobo_notify -" failed: '' 'Traceback (most recent call last): File "/home/fred/src/eo/fargo/manage.py", line 10, in <module> execute_from_command_line(sys.argv) File "/home/fred/src/eo/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line utility.execute() File "/home/fred/src/eo/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 377, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/home/fred/src/eo/venv/local/lib/python2.7/site-packages/django/core/management/base.py", line 288, in run_from_argv self.execute(*args, **options.__dict__) File "/home/fred/src/eo/venv/local/lib/python2.7/site-packages/django/core/management/base.py", line 338, in execute output = self.handle(*args, **options) File "/home/fred/src/eo/hobo/hobo/agent/common/management/commands/hobo_notify.py", line 46, in handle self.process_notification(tenant, notification) File "/home/fred/src/eo/hobo/hobo/agent/common/management/commands/hobo_notify.py", line 160, in process_notification getattr(cls, 'provision_' + object_type)(issuer, action, notification['objects']['data'], full=full) File "/home/fred/src/eo/hobo/hobo/agent/common/management/commands/hobo_notify.py", line 79, in provision_user assert not full # provisionning all users is dangerous, we prefer deprovision AssertionError
Mis à jour par Frédéric Péters il y a plus de 8 ans
Il doit y avoir un truc que je comprends très mal, ou les patchs 3 et 4 viennent de dimensions différentes :
Patch 0004, dans le signal authentic :
+def provision_user(sender, instance, **kwargs): + notify_agents({ + '@type': 'provision', + 'issuer': unicode(get_entity_id()), + 'audience': get_audience(instance), + 'full': True,
mais avec un seul utilisateur, et derrière, patch 0003, dans l'agent il y a le "assert not full".
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Fichier 0004-agent-authentic2-add-hooks-on-signals-to-provision-u.patch 0004-agent-authentic2-add-hooks-on-signals-to-provision-u.patch ajouté
J'ai réussi à écrire le même bug dans le test et dans le code, patch corrigé.
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Fichier 0004-agent-authentic2-add-hooks-on-signals-to-provision-u.patch ajouté
Encore des corrections, et ajout d'un test de deprovisionning des utilisateurs.
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Lié à Bug #8444: Ajouter le provisionning des utilisateurs dans hobo_notify ajouté
Mis à jour par Frédéric Péters il y a plus de 8 ans
Il y a un toujours un '@type': 'instance' que wcs vit de la même manière.
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Fichier 0004-agent-authentic2-add-hooks-on-signals-to-provision-u.patch 0004-agent-authentic2-add-hooks-on-signals-to-provision-u.patch ajouté
Mauvais patch.
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Fichier
0004-agent-authentic2-add-hooks-on-signals-to-provision-u.patchsupprimé
Mis à jour par Frédéric Péters il y a plus de 8 ans
RuntimeError: command "/home/fred/src/eo/venv/bin/python /home/fred/src/eo/combo/manage.py hobo_notify -" failed: '' 'Traceback (most recent call last): File "/home/fred/src/eo/combo/manage.py", line 10, in <module> execute_from_command_line(sys.argv) File "/home/fred/src/eo/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 385, in execute_from_command_line utility.execute() File "/home/fred/src/eo/venv/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 377, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/home/fred/src/eo/venv/local/lib/python2.7/site-packages/django/core/management/base.py", line 288, in run_from_argv self.execute(*args, **options.__dict__) File "/home/fred/src/eo/venv/local/lib/python2.7/site-packages/django/core/management/base.py", line 338, in execute output = self.handle(*args, **options) File "/home/fred/src/eo/hobo/hobo/agent/common/management/commands/hobo_notify.py", line 46, in handle self.process_notification(tenant, notification) File "/home/fred/src/eo/hobo/hobo/agent/common/management/commands/hobo_notify.py", line 160, in process_notification getattr(cls, 'provision_' + object_type)(issuer, action, notification['objects']['data'], full=full) File "/home/fred/src/eo/hobo/hobo/agent/common/management/commands/hobo_notify.py", line 85, in provision_user assert cls.check_valid_user(o) AssertionError
Mis à jour par Frédéric Péters il y a plus de 8 ans
(il y a seulement l'attribut uuid qui est passé)
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Fichier 0003-agent-common-add-user-provisionning-and-tests-for-co.patch 0003-agent-common-add-user-provisionning-and-tests-for-co.patch ajouté
Correction au patch 3, ne valide que la présence du champ uuid dans agent/common/../hobo_notify.py et mise en cohérence du test.
Mis à jour par Frédéric Péters il y a plus de 8 ans
Ça marche, la même modification est nécessaire côté wcs.
Mis à jour par Frédéric Péters il y a plus de 8 ans
Ok pour moi pour pousser hobo et wcs, et qu'on se coordonne ensuite rapidement pour tagger des deux côtés et passer en paires vers la recette puis la prod.
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Statut changé de En cours à Résolu (à déployer)
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Statut changé de Résolu (à déployer) à Fermé
agent/common: prepare for user provisionning (#8440)
We factorize the processing of notifications between a part agnostic to
the type objects and another which is specific, here process_notification()
and provision_role().