Projet

Général

Profil

Development #55092

Provisionning des roles de des utilisateurs : utiliser les spooler uwsgi

Ajouté par Emmanuel Cazenave il y a presque 3 ans. Mis à jour il y a plus de 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
22 juin 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Lorsque l'on est en mode provisionning HTTP, passer le boulot au spooler et répondre OK sans attendre.


Fichiers


Demandes liées

Lié à BiJoe - Development #55566: Debian : permettre l'utilisation d'un spooler uwsgiFermé13 juillet 2021

Actions
Lié à Hobo - Development #55567: Debian : permettre l'utilisation d'un spooler uwsgiFermé13 juillet 2021

Actions
Lié à Fargo - Development #55568: Debian : permettre l'utilisation d'un spooler uwsgiFermé13 juillet 2021

Actions
Lié à Welco - Development #55570: Debian : permettre l'utilisation d'un spooler uwsgiFermé13 juillet 2021

Actions
Lié à w.c.s. - Development #55571: Provisionning HTTP : utiliser le spooler uwsgiFermé13 juillet 2021

Actions
Lié à Hobo - Development #56920: ajouter un paramètre pour garantir la synchronicité dans /api/provisionFermé14 septembre 2021

Actions

Révisions associées

Révision cf3c111e (diff)
Ajouté par Emmanuel Cazenave il y a plus de 2 ans

uwsgi: enable provisionning spooler (#55092)

Révision 4d2d6a05 (diff)
Ajouté par Emmanuel Cazenave il y a plus de 2 ans

provisionning: use uwsgi spooler (#55092)

Historique

#1

Mis à jour par Emmanuel Cazenave il y a presque 3 ans

  • Statut changé de Nouveau à En cours
  • Assigné à mis à Emmanuel Cazenave
#2

Mis à jour par Emmanuel Cazenave il y a presque 3 ans

Ça pourrait être un truc dans ce goût là.

Le préalable étant bien sûr d'avoir ajouté du --spooler /var/lib/XXX/spooler/ etc là ou ça n'est pas encore fait et aussi de rajouter un spooler-python-import = hobo.provisionning.spooler dans les confs uwsgi.

J'anticipe pour assurer la même chose sur le provisionning utilisateurs ça s'annonce plus compliqué :

for i in range(20):
    try:
        getattr(self, 'provision_' + object_type)(
                issuer, action, notification['objects']['data'], full=full
        )
    except TryAgain:
       continue
    break

(il y a que provision_user qui lance des TryAgain). Je ne sais pas comment on peut re-essayer 20 fois puis stop une tache passée à un spooler uwsgi.

#3

Mis à jour par Emmanuel Cazenave il y a presque 3 ans

Emmanuel Cazenave a écrit :

J'anticipe pour assurer la même chose sur le provisionning utilisateurs ça s'annonce plus compliqué :

En fait c'est très simple, il suffit de boucler dans le job uwsgi plutôt qu'en dehors.

Nouvelle version qui gère aussi les utilisateurs, parce que c'est tout à fait immédiat de gérer les utilisateurs et rôles plutôt que de chercher à faire ça dans deux tickets distincts.

Le seul truc loufoque est le le import hobo.multitenant.settings_loaders, voit commentaire dans le code.

#4

Mis à jour par Emmanuel Cazenave il y a presque 3 ans

#5

Mis à jour par Emmanuel Cazenave il y a presque 3 ans

#6

Mis à jour par Emmanuel Cazenave il y a presque 3 ans

#7

Mis à jour par Emmanuel Cazenave il y a presque 3 ans

#8

Mis à jour par Emmanuel Cazenave il y a presque 3 ans

#9

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

  • Statut changé de Solution proposée à En cours

Je serai d'avis de factoriser ce bout de code entre le chemin spool/pas spool :

            for i in range(20):
                try:
                    getattr(self, 'provision_' + object_type)(
                        issuer, action, notification['objects']['data'], full=full
                    )
                except TryAgain:
                    continue
                break


Les exceptions interceptées il faut les logger, avec un bête logging.getLogger(__name__).exception('provisionning failed').

#10

Mis à jour par Emmanuel Cazenave il y a plus de 2 ans

Voilà.

#11

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

  • Statut changé de Solution proposée à Solution validée

Ok.

#12

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

J'étais sur le point de tagger chrono & combo, mais il se passe quoi si je le fais alors qu'il y a spooler-python-import = hobo.provisionning.spooler dedans et pas de hobo taggué avec ça ?

+        # we nedd to catch every exceptions otherwise the task will be re scheduled for ever and ever

need.

#13

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

mais il se passe quoi si je le fais alors qu'il y a spooler-python-import = hobo.provisionning.spooler dedans et pas de hobo taggué avec ça

Je me réponds, testé sur la plateforme de dev, ça fait juste dans les logs cette ligne, ça ne bloque pas le démarrage,

sep 01 10:24:36 combo uwsgi[16623]: ModuleNotFoundError: No module named 'hobo.provisionning.spooler'
#14

Mis à jour par Emmanuel Cazenave il y a plus de 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 4d2d6a05d1a9850afe54c87a9116cc3f2402d562 (HEAD -> main, origin/main, wip/55092-uwsgi-roles-clean)
Author: Emmanuel Cazenave <ecazenave@entrouvert.com>
Date:   Tue Jun 29 11:35:00 2021 +0200

    provisionning: use uwsgi spooler (#55092)
#15

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

  • Statut changé de Résolu (à déployer) à Solution déployée
#16

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

  • Lié à Development #56920: ajouter un paramètre pour garantir la synchronicité dans /api/provision ajouté

Formats disponibles : Atom PDF