Development #58908
Infrastructure de base pour pouvoir changer le nom de domaine d'un service
0%
Description
Genre ... change_domain src.bar.com target.foo.com
.
Pour un premier pas au plus simple, se cantonner à un seul service qui ne soit ni hobo, ni authentic, ni wcs.
L'idée est qu'au final, du coté du service dont on change le nom de domaine, ce soit géré par un hobo_deploy "classique", et que c'est cette commande qui doit être enrichie pour pouvoir gérer la situation changement de nom de domaine.
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Emmanuel Cazenave il y a plus de 2 ans
- Lié à Support #57729: Migration d'instances de Publik : changement de nom de domaine ajouté
Mis à jour par Emmanuel Cazenave il y a plus de 2 ans
- Fichier hobo.json hobo.json ajouté
- Fichier 0001-hobo_deploy-handle-url-change-on-a-service-58908.patch 0001-hobo_deploy-handle-url-change-on-a-service-58908.patch ajouté
- Fichier 0002-environment-add-migrate_service-command-58908.patch 0002-environment-add-migrate_service-command-58908.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Par dessus #59094.
1. 0001 : enrichissement de hobo_deploy
Ajout de legacy_urls dans le modèle des services, on met tous les URLS de "l'ancien" service plus un timestamp (voir le hobo.json ci-joint pour voir ce que ça donne), en pratique pour ce patch je n'avais pas besoin de tous les URLS ni du timestamp mais je me dis que ça mange pas de pain et donc pour l'avenir, ça parait raisonnable de tout mettre.
Ensuite l'agent hobo se sert de cette donné pour comprendre qu'on lui demande de changer un tenant existant plutôt que d'en créer un nouveau, pas bien compliqué.
2. 0002 la commande migrate_service : hobo-manage tenant_command migrate_service https://passerelle.dev.publik.love/ https://toto-passerelle.dev.publik.love/ -d hobo.dev.publik.love
Qui s'occupe permet de changer l'URL d'un service et pas seulement son nom de domaine parce que ce n'est pas plus compliqué donc autant avoir cette souplesse qui servira peut-être un jour.
Commande dont sont exclues pour l'instant wcs (parce qu'il a son propre agent qui attend son ticket et son patch), hobo (parce que ça va plutôt passer par un enrichissement de create_hobo_tenant je pense, façon #59094), authentic (parce que je ne mesure pas pour l'instant si ça demande des choses particulières, il faut que je me plonge dedans).
Il y a aussi l'aspect multi-collectivités que je dois tester pour voir si ça nécessite une attention particulière mais bref, un pas après l'autre.
Mis à jour par Emmanuel Cazenave il y a plus de 2 ans
Emmanuel Cazenave a écrit :
Ajout de legacy_urls dans le modèle des services,
Avec aussi l'idée qu'on pourra se servir de cette info pour faire des substitutions d'URL, genre dans les actions d'appel websevcices wcs (plutôt que chercher à aller modifier en masse toutes les données relatives à des URL en DB) et partout ailleurs où ce sera nécessaire.
Mis à jour par Emmanuel Cazenave il y a environ 2 ans
- Statut changé de Solution proposée à En cours
Il y a des trous dans la requête pour les muticollectivités, en l'état un hobo non primaire ne comprends pas qu'il y a eu changement d'URL sur un service, il créé un service supplémentaire.
Mis à jour par Emmanuel Cazenave il y a environ 2 ans
- Sujet changé de Commande pour changer le nom de domaine d'un service à Infrastrcuture de base pour pouvoir changer le nom de domaine d'un service
Enrichie pour les muticollectivité, ie l'agent hobo/hobo (et pas l'agent hobo/common) qui sait interpréter les "legacy_urls" dans les hobo.json.
Ça commence à faire un gros premier patch, pour faciliter les relectures je réduis la portée de ce ticket à "infra de base pour le changement de nom de domaine".
Je met le deuxième patch dans un ticket à part (la commande qui exploite cette infra).
Mis à jour par Emmanuel Cazenave il y a environ 2 ans
- Fichier 0001-hobo_deploy-handle-url-change-on-a-service-58908.patch 0001-hobo_deploy-handle-url-change-on-a-service-58908.patch ajouté
- Statut changé de En cours à Solution proposée
Mis à jour par Emmanuel Cazenave il y a environ 2 ans
- Statut changé de Solution proposée à En cours
Relecture avec Thomas sur mes genoux.
Arrêter les for/else qui font mal à la tête, plutôt for tout court puis if machin (on se comprend).
Mis à jour par Thomas Noël il y a environ 2 ans
On pourrait sans doute éviter cette partie :
if service_dict.get('base_url') == me['base_url']: # URL might have changed, need to update emitter hobo local_hobo = get_or_create_local_hobo() if local_hobo and local_hobo.get_base_url_path() != service_dict.get('base_url'): local_hobo.change_base_url(service_dict.get('base_url')) local_hobo.save() continue
en gérant ça directement au niveau du create_tenant (qui aura reçu le --legacy-hostname et donc aura crée ou mis à jour le local_hobo)
Mis à jour par Frédéric Péters il y a environ 2 ans
- Sujet changé de Infrastrcuture de base pour pouvoir changer le nom de domaine d'un service à Infrastructure de base pour pouvoir changer le nom de domaine d'un service
Mis à jour par Emmanuel Cazenave il y a environ 2 ans
- Fichier 0001-hobo_deploy-handle-url-change-on-a-service-58908.patch 0001-hobo_deploy-handle-url-change-on-a-service-58908.patch ajouté
- Statut changé de En cours à Solution proposée
Emmanuel Cazenave a écrit :
Arrêter les for/else qui font mal à la tête, plutôt for tout court puis if machin (on se comprend).
Pris en compte.
Thomas Noël a écrit :
On pourrait sans doute éviter cette partie :
[...]
en gérant ça directement au niveau du create_tenant (qui aura reçu le --legacy-hostname et donc aura crée ou mis à jour le local_hobo)
En fait ça ne passe pas dans le create_tenant
parce qu'à ce niveau on a plus que le nom de domaine, alors qu'on a besoin de l'URL complet. Du coup un niveau au dessus dans hobo/agent/common/management/commands/hobo_deploy.py
:
+ if tenant_created and legacy_domain and self.me['service-id'] == 'hobo': + # need to update local hobo + with tenant_context(tenant): + import hobo.environment.utils + + local_hobo = hobo.environment.utils.get_or_create_local_hobo() + if local_hobo.get_base_url_path() != self.me['base_url']: + local_hobo.change_base_url(self.me['base_url']) + local_hobo.save() +
C'est pas méga élégant ce code spécifique hobo dans agent/common
, je préfère la version d'avant (dans la version d'avant le code ajouté dans hobo/agent/hobo/management/commands/hobo_deploy.py:deploy_specifics est assez compréhensible, c'est le reste du code qui y était déjà qui fait mal à la tête).
Mis à jour par Thomas Noël il y a environ 2 ans
Emmanuel Cazenave a écrit :
C'est pas méga élégant ce code spécifique hobo dans
agent/common
, je préfère la version d'avant (dans la version d'avant le code ajouté dans hobo/agent/hobo/management/commands/hobo_deploy.py:deploy_specifics est assez compréhensible, c'est le reste du code qui y était déjà qui fait mal à la tête).
Ouaip, plutôt nunuche effectivement de se retrouver dans du code spécifique hobo dans common, alors qu'on a un deploy_specific dans hobo... Tu fais un retour en arrière ou bien c'est trop pénible ?
Mis à jour par Emmanuel Cazenave il y a environ 2 ans
- Fichier 0001-hobo_deploy-handle-url-change-on-a-service-58908.patch 0001-hobo_deploy-handle-url-change-on-a-service-58908.patch ajouté
Thomas Noël a écrit :
Tu fais un retour en arrière ou bien c'est trop pénible ?
Done.
Mis à jour par Emmanuel Cazenave il y a environ 2 ans
- Fichier 0001-hobo_deploy-handle-url-change-on-a-service-58908.patch 0001-hobo_deploy-handle-url-change-on-a-service-58908.patch ajouté
Rebase.
Mis à jour par Thomas Noël il y a environ 2 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Emmanuel Cazenave il y a environ 2 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit f8041c4457ba67aee492cb64f851477cc670a88c Author: Emmanuel Cazenave <ecazenave@entrouvert.com> Date: Wed Dec 1 15:19:45 2021 +0100 hobo_deploy: handle url change on a service (#58908)
Mis à jour par Transition automatique il y a environ 2 ans
- Statut changé de Résolu (à déployer) à Solution déployée
hobo_deploy: handle url change on a service (#58908)