aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/plugins/module_utils/file.py
blob: 86a4f27ef27013a70131f64377a2481cb6d29177 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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')