diff options
| author | Egor Tensin <egor@tensin.name> | 2025-11-23 19:16:52 +0100 |
|---|---|---|
| committer | Egor Tensin <egor@tensin.name> | 2025-11-23 21:28:40 +0100 |
| commit | 66913759ffbc86b101f0d69f372cad5186a729f2 (patch) | |
| tree | fdbc26666cba63ba20c3af9a2112c62a9be5db64 /plugins/module_utils | |
| parent | plugins: add apt_wrapper (diff) | |
| download | infra-ansible-66913759ffbc86b101f0d69f372cad5186a729f2.tar.gz infra-ansible-66913759ffbc86b101f0d69f372cad5186a729f2.zip | |
plugins: factor out read_file
Diffstat (limited to 'plugins/module_utils')
| -rw-r--r-- | plugins/module_utils/file.py | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/plugins/module_utils/file.py b/plugins/module_utils/file.py new file mode 100644 index 0000000..86a4f27 --- /dev/null +++ b/plugins/module_utils/file.py @@ -0,0 +1,34 @@ +import base64 + +from ansible.errors import AnsibleActionFail +from ansible.module_utils.common.text.converters import to_text + + +def does_file_exist(action, path, task_vars): + stat_result = action._execute_module( + module_name='ansible.builtin.stat', + module_args=dict( + path=path, + get_attributes=False, + get_checksum=False, + get_mime=False, + ), + task_vars=task_vars, + ) + if stat_result.get('failed'): + raise AnsibleActionFail(f"Couldn't stat file {path}", result=stat_result) + return stat_result['stat']['exists'] + + +def read_file(action, path, task_vars, default=False): + if default is not None: + if not does_file_exist(action, path, task_vars): + return default + read_result = action._execute_module( + module_name='ansible.builtin.slurp', + module_args=dict(src=path), + task_vars=task_vars, + ) + if read_result.get('failed'): + raise AnsibleActionFail(f"Couldn't read file {path}", result=read_result) + return base64.b64decode(to_text(read_result['content'])).decode('utf-8') |
