Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Suppression des ressources communautaires orphelines depuis l'application #1685

Merged
merged 36 commits into from Jul 6, 2021

Conversation

fchabouis
Copy link
Contributor

@fchabouis fchabouis commented Jun 24, 2021

closes #1525

Contexte

Pour le moment, le travail de suppression des ressources communautaires dont la ressources parente n'existe plus est assuré par le code (python) du repo https://github.com/etalab/gtfs_converter.

Un cron est lancé depuis le fichier scheduler.py, via un appel journalier à la fonction cleanup_old_resources.

Ce code est déployé sur un serveur différent de celui du site, hébergé par Hetzner.

Actuellement, ce code n'est plus maintenu et le lancement périodique du ménage ne se fait plus, ce qui résulte en l'accumulation sur certains jeux de données de ressources communautaires publiés par le PAN mais obsolètes.

Le but de la PR

Est de rapatrier ce code de ménage des ressources dans la code base principale du projet, afin de l'avoir sous les yeux et de pouvoir plus facilement surveiller son bon fonctionnement.

Contenu de la PR

  • création d'un module dédié
  • création d'une fonction qui liste (read only) les ressources orphelines, candidates à la suppression
  • test de cette fonction
  • création d'une fonction qui supprime les ressources listées ci-dessus
  • ajout du support de la méthode delete au module Datagouvfr.Client.API
  • creation d'un Mock pour le module Datagouvfr.Client.CommunityResources via Mox
  • et d'un module Stub, pour les cas ou on veut juste que le module CommunityResources soit transparent
  • écriture d'un test de la fonction de ménage (listing & suppression) qui utilise le Stub (delete renvoie ok mais ne fait rien)
  • adaptation de 2 tests du controller du backoffice qui utilise des cassettes : on utilise le Mock définit par Mox pour renvoyer ce qui va bien.

Pour faire bien les choses, faut il également écrire un test qui fasse un appel réel à l'API de datagouvfr, qui ajoute une ressource communautaire puis qui l'a supprime ? Où en étions nous dans la gestion des tests "external" @thbar ?

Remarque

Lorsqu'une ressource communautaire générée suite au changement de hash de la ressource parente, le code python actuel fait un update de la ressource communautaire et n'en créé pas une nouvelle. Il n'y a donc pas besoin de supprimer la ressource communautaire avant d'en créer une dans ce cas.

@fchabouis fchabouis changed the title WIP Suppression des ressources communautaires orphelines depuis l'application Suppression des ressources communautaires orphelines depuis l'application Jun 28, 2021
@thbar thbar self-assigned this Jul 1, 2021
@thbar
Copy link
Contributor

thbar commented Jul 1, 2021

@fchabouis je prends la suite pour tester en local et essayer de voir comment on peut lancer ça en "one shot" facilement sur CleverCloud, je vais les contacter.

@fchabouis
Copy link
Contributor Author

@thbar merci d'avoir cherché comment se connecter à l'instance en ssh, ça marche impeccablement !

J'ai pu lancer la tâche sur prochainement, j'ai eu des echecs de suppression sur certaines ressources avec des réponses Internal Server Error côté data.gouv.fr, mais ça arrive que sur demo.data.gouv on ait ce genre de choses.

On peut déployer sans merger et aller lancer la tâche a la main pour vérifier que ça se passe mieux sur l'API de prod de data.gouv.fr, qu'en penses tu ?

@thbar
Copy link
Contributor

thbar commented Jul 5, 2021

@fchabouis beau boulot ; oui c'est une bonne idée ! On peut caler ça demain matin à un moment je pense.

Copy link
Contributor

@thbar thbar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Test fait par @fchabouis sur le staging, ça semble OK !

import Transport.CommunityResourcesCleaner
alias DB.Repo

@transport_publisher_label Application.get_env(:transport, :datagouvfr_transport_publisher_label)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Attention ces références en tant que module ça va marcher dans les "exs" mais la prochaine version de Credo va bloquer ces appels. Il faut remplacer par quelque chose qui n'est pas évalué à la compilation.

@thbar thbar merged commit 0210116 into master Jul 6, 2021
@thbar thbar deleted the resources_cleanup branch July 6, 2021 11:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Ressources communautaires : gestion du ménage
2 participants