Skip to content
Snippets Groups Projects

Changes in playbook.py. Making ansible return JSON

Closed Pino, Adrián requested to merge NAT-189-ansible-return-json into develop
1 file
+ 22
4
Compare changes
  • Side-by-side
  • Inline
+ 22
4
"""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"
}
}
]
]
Loading