Bug #23885
ozwillo: conserver l'état des demandes de déploiement
0%
Description
Pour permettre la reprise des déploiements interrompus et pouvoir suivre leur
destruction aussi on va conserver l'état de la demande ainsi que les données de
création dans le modèle OzwilloInstance.
- soit directement en ligne si il n'y aucun problème, dans un thread
- soit par un CRON qui pourra fini un déploiement échoué en ligne
- soit en ligne de commande si la demande est passé dans le statut "errur de déploiement"
La destruction se fera maintenant uniquement hors-ligne par un CRON.
Les statuts suivants sont introduits:- new
- to_deploy
- deploy_error
- deployed
- to_destroy
- destroy_error
- destroyed
Fichiers
Révisions associées
Historique
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
- Fichier 0001-ozwillo-keep-deployment-request-state-23885.patch 0001-ozwillo-keep-deployment-request-state-23885.patch ajouté
- Patch proposed changé de Non à Oui
Soumission du patch pour une première relecture, je dois encore le valider en live parce qu'on a pas de tests là dessus.
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
Pas validable pour l'instant Ozwillo dans les choux #23893.
Mis à jour par Serghei Mihai il y a presque 6 ans
Le cron pour executer la commande ozwillo_worker
n'est pas dans ce patch? ou sera posé à la main?
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
À la main (ozwillo est optionnel dans hobo, je ne pense pas que ce soit nécessaire de déployer partout un cron.d partout même commenté) mais je vais mettre à jour le README
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
- Fichier 0003-prevent-hobo-cook-from-changing-the-current-tenant-t.patch 0003-prevent-hobo-cook-from-changing-the-current-tenant-t.patch ajouté
- Fichier 0002-fix-typo-to-be-rebased.patch 0002-fix-typo-to-be-rebased.patch ajouté
- Fichier 0001-ozwillo-keep-deployment-request-state-23885.patch 0001-ozwillo-keep-deployment-request-state-23885.patch ajouté
quelques petites corrections qui seront rebasés.
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
- Fichier 0004-modification-des-messages-de-log-pour-la-destruction.patch 0004-modification-des-messages-de-log-pour-la-destruction.patch ajouté
- Fichier 0003-prevent-hobo-cook-from-changing-the-current-tenant-t.patch 0003-prevent-hobo-cook-from-changing-the-current-tenant-t.patch ajouté
- Fichier 0002-fix-typo-to-be-rebased.patch 0002-fix-typo-to-be-rebased.patch ajouté
- Fichier 0001-ozwillo-keep-deployment-request-state-23885.patch 0001-ozwillo-keep-deployment-request-state-23885.patch ajouté
- Fichier 0005-ajout-d-une-ligne-de-log-sur-le-changement-de-statut.patch 0005-ajout-d-une-ligne-de-log-sur-le-changement-de-statut.patch ajouté
quelques modifications aux logs (encore des choses à rebaser mais pour l'instance je montre l'historique)
Mis à jour par Frédéric Péters il y a presque 6 ans
Exécuté en recette ça a échoué ainsi :
ozwillo: destroying entrouvert from CRON failed Traceback (most recent call last): File "/usr/lib/python2.7/dist-packages/hobo/contrib/ozwillo/management/commands/ozwillo_worker.py", line 63, in handle instance.destroy() File "/usr/lib/python2.7/dist-packages/hobo/contrib/ozwillo/models.py", line 241, in destroy wcs = services['wcs-au-quotidien'] KeyError: 'wcs-au-quotidien'
Contrairement à hobo/contrib/ozwillo/README.rst, sur la recette, le service wcs est déclaré dans une clé "wcs", pas "wcs-au-quotidien".
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
- Fichier 0004-modification-des-messages-de-log-pour-la-destruction.patch 0004-modification-des-messages-de-log-pour-la-destruction.patch ajouté
- Fichier 0007-use-wcs-name-for-destruction-details-about-wcs-to-be.patch 0007-use-wcs-name-for-destruction-details-about-wcs-to-be.patch ajouté
- Fichier 0003-prevent-hobo-cook-from-changing-the-current-tenant-t.patch 0003-prevent-hobo-cook-from-changing-the-current-tenant-t.patch ajouté
- Fichier 0006-fix-name-of-event-method-destroy_error-to-be-rebased.patch 0006-fix-name-of-event-method-destroy_error-to-be-rebased.patch ajouté
- Fichier 0008-make-OzwilloInstance.domain_slug-non-unique-to-be-re.patch 0008-make-OzwilloInstance.domain_slug-non-unique-to-be-re.patch ajouté
- Fichier 0002-fix-typo-to-be-rebased.patch 0002-fix-typo-to-be-rebased.patch ajouté
- Fichier 0001-ozwillo-keep-deployment-request-state-23885.patch 0001-ozwillo-keep-deployment-request-state-23885.patch ajouté
- Fichier 0005-ajout-d-une-ligne-de-log-sur-le-changement-de-statut.patch 0005-ajout-d-une-ligne-de-log-sur-le-changement-de-statut.patch ajouté
Destruction validée aussi.
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
Frédéric Péters a écrit :
Exécuté en recette ça a échoué ainsi :
[...]
Contrairement à hobo/contrib/ozwillo/README.rst, sur la recette, le service wcs est déclaré dans une clé "wcs", pas "wcs-au-quotidien".
Oui, j'ai corrigé coté code, la clé ayant pour principe d'être l'utilisateur du service (même si ici ça n'a pas trop d'importance parce que le code est spécialisé pour w.c.s. à cause du paramètre obligatoire -f /etc/wcs/wcs-au-quotidien.cfg
qui diffère des commandes pour les autres services), j'ai corrigé aussi /etc/hobo/settings.py où il n'y avait de toute façon pas de clé w.c.s.; je vais regarder ce qu'il en est en prod.
Mis à jour par Benjamin Dauvergne il y a presque 6 ans
C'est visiblement encore plus faux en prod:
"wcs-au-quotidien": [ "", "wcsctl" ]
la clé est bonne, par contre le préfixe est mauvais, je vais corriger le préfixe et je corrigerai la clé quand je mettrai à jour hobo.
Je dois aussi corriger la présence de la clé 'createdb-connect-params' dans config.pck['postgresql'] pour chaque instance, sinon la destruction (DROP DB pour w.c.s.) ne peut se faire jusqu'au bout. C'est fait en preprod (squelette et toutes instances corrigées).
J'aurai aimé qu'on puisse se passer complètement de ce bout de code mais il faudrait avancer sur la destructions depuis hobo pour cela.
Mis à jour par Serghei Mihai il y a plus de 5 ans
Patchs posés par Benj dans la branche wip/23885-ozwillo-conserver-l-etat-des-demandes-de-deploiement .
Mis à jour par Emmanuel Cazenave il y a plus de 5 ans
Les tests plantent (juste rebaser sur master j'imagine, le tox.ini a bougé) :
pluggy.PluginValidationError: Plugin 'django' could not be loaded: (pytest 3.3.2 (/tmp/tox-cazino/hobo/coverage-django18-passerelle/lib/python2.7/site-packages), Requirement.parse('pytest>=3.6'))!
Mis à jour par Emmanuel Cazenave il y a plus de 5 ans
Dans le REAMDE :
- peut-être pointer /etc/hobo/settings.d/whatever.py plutot que /etc/hobo/settings.py
pour les variables OZWILLO_*
- tout en bas un "wcs-au-quotidien" qui traine (devrait être "wcs" si j'ai bien compris)
Dans ozwillo.models.py une redondance dans les manipulations d'état, par exemple la methode to_destroy
passe l'état à STATE_DESTROY juste après avoir appelé la méthode destroy
qui fait de même (idem pour les méthodes to_deploy
, deploy
)
Dans ozwillo.views.py
try: instance_id = data['instance_id'] except Exception: logger.warning(u'ozwillo: no instance id in destroy request (%r)', data) return HttpResponseBadRequest('no instance id')
KeyError
plutot que Exception
return HttpResponseNotFound('owillo providing is not active here.')
ozwillo
Tu touches à hobo/multitenant/management/commands/runscript.py dans c1a31ebbb3d44ac9aa3f4a0b98e00650d2259968 qui n'a rien à voir il me semble.
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
- Statut changé de Nouveau à Solution proposée
J'ai pris en compte toutes tes remarques et j'ai poussé sur la branche (j'ai corrigé le commit qui touche à runscript, et j'ai créé deux commits qu'il faudra que je merge avant de pousser).
Mis à jour par Emmanuel Cazenave il y a plus de 5 ans
- Statut changé de Solution proposée à Solution validée
okay
Mis à jour par Frédéric Péters il y a plus de 5 ans
Benj, tu assembles dans un commit et envoie dans le dépôt ?
Mis à jour par Benjamin Dauvergne il y a plus de 5 ans
- Statut changé de Solution validée à Résolu (à déployer)
Mis à jour par Frédéric Péters il y a plus de 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
ozwillo: keep deployment request state (#23885)
Fields added to OzwilloInstance:First migration initialize all instances with the state DEPLOYED but new
instance will get the state NEW (change done in second migration).
OzwilloInstance was registered in the admin for managing deployments.