un worker peut prendre en charge des json présents dans /kaz/jobs (pour les services des orgas)
This commit is contained in:
@@ -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}"
|
||||
)
|
||||
Reference in New Issue
Block a user