Skip to content
Snippets Groups Projects
Commit 5b652059 authored by Pino, Adrián's avatar Pino, Adrián
Browse files

Changes in playbook.py. Making ansible return JSON

parent 6ce83f8a
No related branches found
No related tags found
2 merge requests!38Nat 189 ansible return json,!37Changes in playbook.py. Making ansible return JSON
Pipeline #83741 failed
"""Module that gathers common API responses and data models.""" """Module that gathers common API responses and data models."""
import json
import enum import enum
import logging import logging
import threading import threading
...@@ -66,17 +67,34 @@ def _run_playbook_proc(job_id: str, playbook_path: str, extra_vars: dict, invent ...@@ -66,17 +67,34 @@ def _run_playbook_proc(job_id: str, playbook_path: str, extra_vars: dict, invent
:param str callback: Callback URL to PUT to when execution is completed. :param str callback: Callback URL to PUT to when execution is completed.
:param [str] inventory: Ansible inventory to run the playbook against. :param [str] inventory: Ansible inventory to run the playbook against.
""" """
ansible_playbook_run = ansible_runner.run(playbook=playbook_path, inventory=inventory, extravars=extra_vars) ansible_playbook_run = ansible_runner.run(
playbook=playbook_path,
inventory=inventory,
extravars=extra_vars,
json_mode=True
)
# Process playbook JSON stdout
json_output = ansible_playbook_run.stdout
json_content = json_output.read()
parsed_output = []
for line in json_content.strip().splitlines():
try:
task_output = json.loads(line)
parsed_output.append(task_output)
except json.JSONDecodeError as e:
pass # Skip empty line
payload = [ payload = [
{ {
"pp_run_results": { "pp_run_results": {
"status": ansible_playbook_run.status, "status": ansible_playbook_run.status,
"job_id": job_id, "job_id": job_id,
"output": str(ansible_playbook_run.stdout.read()), "output": json.dumps(parsed_output, indent=4),
"return_code": int(ansible_playbook_run.rc), "return_code": int(ansible_playbook_run.rc)
}, },
"confirm": "ACCEPTED", "confirm": "ACCEPTED"
} }
] ]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment