Project

General

Profile

Development #33873

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

Added by Nicolas Roche 2 months ago. Updated about 2 months ago.

Status:
Solution déployée
Priority:
Normal
Assignee:
Category:
agent
Target version:
-
Start date:
12 Jun 2019
Due date:
% Done:

0%

Patch proposed:
Yes
Planning:
No

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.

0001-hobo_deploy-internally-call-import_template-using-te.patch View (6.29 KB) Nicolas Roche, 12 Jun 2019 05:39 PM

0001-hobo_deploy-internally-call-import_template-using-te.patch View (3.56 KB) Nicolas Roche, 17 Jun 2019 03:36 PM

Associated revisions

Revision 43c082bf (diff)
Added by Nicolas Roche about 2 months ago

hobo_deploy: internally call import_template using tenant_command (#33873)

History

#1 Updated by Nicolas Roche 2 months ago

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 Updated by Christophe Siraut 2 months ago

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 Updated by Benjamin Dauvergne 2 months ago

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 Updated by Nicolas Roche 2 months ago

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 Updated by Christophe Siraut about 2 months ago

  • Status changed from Solution proposée to Solution validée

#7 Updated by Nicolas Roche about 2 months ago

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 Updated by Benjamin Dauvergne about 2 months ago

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

#9 Updated by Frédéric Péters about 2 months ago

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

#10 Updated by Nicolas Roche about 2 months ago

  • Status changed from Solution validée to 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 Updated by Benjamin Dauvergne about 2 months ago

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

#12 Updated by Frédéric Péters about 2 months ago

  • Status changed from Résolu (à déployer) to Solution déployée

Also available in: Atom PDF