From b3a42e41cd183f1228bd4c535b183a5b0d87a212 Mon Sep 17 00:00:00 2001 From: Egor Tensin Date: Sun, 23 Nov 2025 21:49:27 +0100 Subject: plugins: add parse_json_file --- plugins/action/parse_json_file.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100755 plugins/action/parse_json_file.py (limited to 'plugins') diff --git a/plugins/action/parse_json_file.py b/plugins/action/parse_json_file.py new file mode 100755 index 0000000..d9c864a --- /dev/null +++ b/plugins/action/parse_json_file.py @@ -0,0 +1,27 @@ +#!/usr/bin/python + +import json + +from ansible.errors import AnsibleActionFail +from ansible.plugins.action import ActionBase +from ansible_collections.tensin.infra.plugins.module_utils import file + + +class ActionModule(ActionBase): + def run(self, tmp=None, task_vars=None): + result = super().run(tmp, task_vars) + + path = self._task.args['path'] + default = self._task.args.get('default') + if default is not None: + default = json.dumps(default) + + content = file.read_file(self, path, task_vars, default=default) + + try: + content = json.loads(content) + except json.JSONDecodeError as e: + raise AnsibleActionFail(f'Failed to parse JSON at {path}') from e + + result['content'] = content + return result -- cgit v1.3