Projet

Général

Profil

Development #33873

l'appel à "import_template" via "hobo_deploy" doit spécifier un tenant

Ajouté par Nicolas Roche il y a presque 5 ans. Mis à jour il y a presque 5 ans.

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

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

La commande "import_template" se lance via "tenant_command" (#20769).
Aussi, lorsque la commande "hobo_deploy" se fini en invoquant "import_template", elle doit également préciser le tenant.


Fichiers

Révisions associées

Révision 43c082bf (diff)
Ajouté par Nicolas Roche il y a presque 5 ans

hobo_deploy: internally call import_template using tenant_command (#33873)

Historique

#1

Mis à jour par Nicolas Roche il y a presque 5 ans

les 3 commandes (indépendantes) suivantes sont chaînées : hobo_deploy -> import_template -> import_site

  • par exemple avec passerelle on fait :
    $ passerelle-manage tenant_command import_site /var/lib/passerelle/skeletons/signal-publik.json \
        -d passerelle.dev.publik.love
    
  • qui sinon est appelée de façon générique par :
    $ passerelle-manage tenant_command import_template signal-publik -d passerelle.dev.publik.love
    
  • cette précédente commande étant elle même par ailleurs appelée en fin de 'hobo_deploy'
    $ passerelle-manage hobo_deploy https://passerelle.dev.publik.love/ env.json --ignore-timestamp
    

ce patch permet de réaliser ce troisième point.

#2

Mis à jour par Christophe Siraut il y a presque 5 ans

execute_from_command_line ne me semble pas approprié ici, je serais tenté par connection.set_tenant() avant dans lancer call_command, mais ça n'est pas top non-plus.

#3

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

Christophe Siraut a écrit :

execute_from_command_line ne me semble pas approprié ici, je serais tenté par connection.set_tenant() avant dans lancer call_command, mais ça n'est pas top non-plus.

Il faut éviter les set_tenant() direct et préférer un with tenant_context(tenant) et oui un call_command serait plus joli.

#4

Mis à jour par Nicolas Roche il y a presque 5 ans

Merci pour les précisions.

Pour mémoire, la première version avait le mérite d'éviter d'être obligé d'exécuter le test hobo/tests_schemas/test_hobo_deploy.py::test_import_template avant les autres tests qui patchent get_commands ou call_command.

C'est un effet de bord lié au fait que la fonction get_commands de Django est mise en cache et qui risque d'être pénalisant par la suite.

#5

Mis à jour par Christophe Siraut il y a presque 5 ans

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

Mis à jour par Nicolas Roche il y a presque 5 ans

merci,
pour info j'ai aussi essayé :

call_command('tenant_command', 'import_template', me['template_name'],
             '-d', tenant.domain)

mais je bute comme pour #25657

#8

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

domain=tenant.comain je pense, call_command prend les arguments déjà parsés.

#9

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

Oui mais de toute façon non, https://github.com/bernardopires/django-tenant-schemas/issues/495 (positional arguments ko).

#10

Mis à jour par Nicolas Roche il y a presque 5 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit 43c082bf3bbfd4d49738e45ba2c3079a2efd1d07
Author: Nicolas ROCHE <nroche@entrouvert.com>
Date:   Wed Jun 12 16:22:45 2019 +0200

    hobo_deploy: internally call import_template using tenant_command (#33873)
#11

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

De toute façon je suis pour ne pas utiliser tenant_command dans des scripts, tenant_context() fait très bien le job.

#12

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

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

Formats disponibles : Atom PDF