un worker peut prendre en charge des json présents dans /kaz/jobs (pour les services des orgas)

This commit is contained in:
fab
2026-09-29 23:47:59 +02:00
parent 58fa9024b8
commit 2ffb2fac07
3 changed files with 454 additions and 30 deletions
+77
View File
@@ -0,0 +1,77 @@
import logging
import os
import subprocess
#ex de json accepté:
#{
# "action": "modifier_services",
# "creer": [
# "cloud"
# ],
# "enlever": [
# "paheko",
# "wp"
# ],
# "nom_court_orga": "monorga11",
# "emails": [
# "admin@kaz.bzh",
# "contact@kaz.bzh"
# ]
# }
log = logging.getLogger(__name__)
def run(message, encours):
nom_court_orga = message["nom_court_orga"]
services_creer = message.get("creer", [])
services_enlever = message.get("enlever", [])
script = "/kaz/config/orgaTmpl/orga-gen.sh"
mail_file = encours.removesuffix(".encours") + ".mail"
command = [script]
command.extend(
f"+{service}"
for service in services_creer
)
command.extend(
f"-{service}"
for service in services_enlever
)
command.append(nom_court_orga)
log.info(
f"Exécution : {' '.join(command)}"
)
env = os.environ.copy()
env["ORGA_GEN_MAIL_FILE"] = mail_file
result = subprocess.run(
command,
capture_output=True,
text=True,
env=env,
)
log.info(
f"Résultat du script :\n{result.stdout}"
)
if result.stderr:
log.warning(
f"Sortie stderr du script :\n{result.stderr}"
)
if result.returncode != 0:
raise RuntimeError(
f"Le script a échoué avec le code "
f"{result.returncode}"
)