Projet

Général

Profil

Bug #23885

ozwillo: conserver l'état des demandes de déploiement

Ajouté par Benjamin Dauvergne il y a presque 6 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
17 mai 2018
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

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.

Le déploiement se fera désormais de plusieurs manières:
  • 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

0001-ozwillo-keep-deployment-request-state-23885.patch (29,9 ko) 0001-ozwillo-keep-deployment-request-state-23885.patch Benjamin Dauvergne, 17 mai 2018 14:23
0003-prevent-hobo-cook-from-changing-the-current-tenant-t.patch (1,41 ko) 0003-prevent-hobo-cook-from-changing-the-current-tenant-t.patch Benjamin Dauvergne, 21 mai 2018 22:17
0002-fix-typo-to-be-rebased.patch (891 octets) 0002-fix-typo-to-be-rebased.patch Benjamin Dauvergne, 21 mai 2018 22:17
0001-ozwillo-keep-deployment-request-state-23885.patch (29,9 ko) 0001-ozwillo-keep-deployment-request-state-23885.patch Benjamin Dauvergne, 21 mai 2018 22:17
0004-modification-des-messages-de-log-pour-la-destruction.patch (1,11 ko) 0004-modification-des-messages-de-log-pour-la-destruction.patch Benjamin Dauvergne, 22 mai 2018 08:59
0003-prevent-hobo-cook-from-changing-the-current-tenant-t.patch (1,41 ko) 0003-prevent-hobo-cook-from-changing-the-current-tenant-t.patch Benjamin Dauvergne, 22 mai 2018 09:00
0002-fix-typo-to-be-rebased.patch (891 octets) 0002-fix-typo-to-be-rebased.patch Benjamin Dauvergne, 22 mai 2018 09:00
0001-ozwillo-keep-deployment-request-state-23885.patch (29,9 ko) 0001-ozwillo-keep-deployment-request-state-23885.patch Benjamin Dauvergne, 22 mai 2018 09:00
0005-ajout-d-une-ligne-de-log-sur-le-changement-de-statut.patch (1,07 ko) 0005-ajout-d-une-ligne-de-log-sur-le-changement-de-statut.patch Benjamin Dauvergne, 22 mai 2018 09:00
0004-modification-des-messages-de-log-pour-la-destruction.patch (1,11 ko) 0004-modification-des-messages-de-log-pour-la-destruction.patch Benjamin Dauvergne, 24 mai 2018 10:42
0007-use-wcs-name-for-destruction-details-about-wcs-to-be.patch (2,08 ko) 0007-use-wcs-name-for-destruction-details-about-wcs-to-be.patch Benjamin Dauvergne, 24 mai 2018 10:42
0003-prevent-hobo-cook-from-changing-the-current-tenant-t.patch (1,41 ko) 0003-prevent-hobo-cook-from-changing-the-current-tenant-t.patch Benjamin Dauvergne, 24 mai 2018 10:42
0006-fix-name-of-event-method-destroy_error-to-be-rebased.patch (892 octets) 0006-fix-name-of-event-method-destroy_error-to-be-rebased.patch Benjamin Dauvergne, 24 mai 2018 10:42
0008-make-OzwilloInstance.domain_slug-non-unique-to-be-re.patch (3,14 ko) 0008-make-OzwilloInstance.domain_slug-non-unique-to-be-re.patch Benjamin Dauvergne, 24 mai 2018 10:42
0002-fix-typo-to-be-rebased.patch (891 octets) 0002-fix-typo-to-be-rebased.patch Benjamin Dauvergne, 24 mai 2018 10:42
0001-ozwillo-keep-deployment-request-state-23885.patch (29,9 ko) 0001-ozwillo-keep-deployment-request-state-23885.patch Benjamin Dauvergne, 24 mai 2018 10:42
0005-ajout-d-une-ligne-de-log-sur-le-changement-de-statut.patch (1,07 ko) 0005-ajout-d-une-ligne-de-log-sur-le-changement-de-statut.patch Benjamin Dauvergne, 24 mai 2018 10:42

Révisions associées

Révision bfe04115 (diff)
Ajouté par Benjamin Dauvergne il y a plus de 5 ans

ozwillo: keep deployment request state (#23885)

Fields added to OzwilloInstance:
  • state
  • deploy_data
  • created
  • modified

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.

Historique

#1

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

Soumission du patch pour une première relecture, je dois encore le valider en live parce qu'on a pas de tests là dessus.

#2

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

Pas validable pour l'instant Ozwillo dans les choux #23893.

#3

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?

#4

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

#7

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".

#9

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.

#10

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.

#12

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 .

#13

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'))!
#14

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.

#15

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).

#16

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

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

okay

#17

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 ?

#18

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

  • Statut changé de Solution validée à Résolu (à déployer)
#19

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

Formats disponibles : Atom PDF