PATH:
usr
/
lib
/
python3.9
/
site-packages
/
ansible
/
modules
# -*- coding: utf-8 -*- # Copyright: (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>, and others # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) from __future__ import absolute_import, division, print_function __metaclass__ = type DOCUMENTATION = r''' --- module: async_status short_description: Obtain status of asynchronous task description: - This module gets the status of an asynchronous task. - This module is also supported for Windows targets. version_added: "0.5" options: jid: description: - Job or task identifier type: str required: true mode: description: - If C(status), obtain the status. - If C(cleanup), clean up the async job cache (by default in C(~/.ansible_async/)) for the specified job I(jid). type: str choices: [ cleanup, status ] default: status extends_documentation_fragment: - action_common_attributes - action_common_attributes.flow attributes: action: support: full async: support: none check_mode: support: none diff_mode: support: none bypass_host_loop: support: none platform: support: full platforms: posix, windows seealso: - ref: playbooks_async description: Detailed information on how to use asynchronous actions and polling. author: - Ansible Core Team - Michael DeHaan ''' EXAMPLES = r''' --- - name: Asynchronous yum task ansible.builtin.yum: name: docker-io state: present async: 1000 poll: 0 register: yum_sleeper - name: Wait for asynchronous job to end ansible.builtin.async_status: jid: '{{ yum_sleeper.ansible_job_id }}' register: job_result until: job_result.finished retries: 100 delay: 10 ''' RETURN = r''' ansible_job_id: description: The asynchronous job id returned: success type: str sample: '360874038559.4169' finished: description: Whether the asynchronous job has finished (C(1)) or not (C(0)) returned: always type: int sample: 1 started: description: Whether the asynchronous job has started (C(1)) or not (C(0)) returned: always type: int sample: 1 stdout: description: Any output returned by async_wrapper returned: always type: str stderr: description: Any errors returned by async_wrapper returned: always type: str erased: description: Path to erased job file returned: when file is erased type: str ''' import json import os from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.six import iteritems from ansible.module_utils._text import to_native def main(): module = AnsibleModule(argument_spec=dict( jid=dict(type='str', required=True), mode=dict(type='str', default='status', choices=['cleanup', 'status']), # passed in from the async_status action plugin _async_dir=dict(type='path', required=True), )) mode = module.params['mode'] jid = module.params['jid'] async_dir = module.params['_async_dir'] # setup logging directory logdir = os.path.expanduser(async_dir) log_path = os.path.join(logdir, jid) if not os.path.exists(log_path): module.fail_json(msg="could not find job", ansible_job_id=jid, started=1, finished=1) if mode == 'cleanup': os.unlink(log_path) module.exit_json(ansible_job_id=jid, erased=log_path) # NOT in cleanup mode, assume regular status mode # no remote kill mode currently exists, but probably should # consider log_path + ".pid" file and also unlink that above data = None try: with open(log_path) as f: data = json.loads(f.read()) except Exception: if not data: # file not written yet? That means it is running module.exit_json(results_file=log_path, ansible_job_id=jid, started=1, finished=0) else: module.fail_json(ansible_job_id=jid, results_file=log_path, msg="Could not parse job output: %s" % data, started=1, finished=1) if 'started' not in data: data['finished'] = 1 data['ansible_job_id'] = jid elif 'finished' not in data: data['finished'] = 0 # Fix error: TypeError: exit_json() keywords must be strings data = {to_native(k): v for k, v in iteritems(data)} module.exit_json(**data) if __name__ == '__main__': main()
[-] getent.py
[edit]
[-] pause.py
[edit]
[-] iptables.py
[edit]
[+]
__pycache__
[-] import_playbook.py
[edit]
[-] stat.py
[edit]
[-] copy.py
[edit]
[-] slurp.py
[edit]
[-] service_facts.py
[edit]
[-] fetch.py
[edit]
[-] tempfile.py
[edit]
[-] pip.py
[edit]
[-] yum_repository.py
[edit]
[-] _include.py
[edit]
[-] assemble.py
[edit]
[-] user.py
[edit]
[-] sysvinit.py
[edit]
[-] lineinfile.py
[edit]
[-] find.py
[edit]
[-] replace.py
[edit]
[-] blockinfile.py
[edit]
[-] meta.py
[edit]
[-] hostname.py
[edit]
[-] reboot.py
[edit]
[-] shell.py
[edit]
[-] uri.py
[edit]
[-] script.py
[edit]
[-] async_status.py
[edit]
[-] include_vars.py
[edit]
[-] apt_repository.py
[edit]
[-] ping.py
[edit]
[-] expect.py
[edit]
[-] import_tasks.py
[edit]
[-] known_hosts.py
[edit]
[-] include_role.py
[edit]
[-] apt_key.py
[edit]
[-] apt.py
[edit]
[-] command.py
[edit]
[-] assert.py
[edit]
[-] subversion.py
[edit]
[-] cron.py
[edit]
[-] validate_argument_spec.py
[edit]
[-] wait_for.py
[edit]
[-] wait_for_connection.py
[edit]
[-] package.py
[edit]
[-] systemd.py
[edit]
[-] get_url.py
[edit]
[-] import_role.py
[edit]
[-] set_fact.py
[edit]
[-] group_by.py
[edit]
[-] yum.py
[edit]
[-] set_stats.py
[edit]
[-] dpkg_selections.py
[edit]
[-] add_host.py
[edit]
[-] fail.py
[edit]
[-] debug.py
[edit]
[-] debconf.py
[edit]
[-] setup.py
[edit]
[-] rpm_key.py
[edit]
[-] service.py
[edit]
[-] gather_facts.py
[edit]
[-] git.py
[edit]
[-] unarchive.py
[edit]
[-] include_tasks.py
[edit]
[+]
..
[-] async_wrapper.py
[edit]
[-] systemd_service.py
[edit]
[-] template.py
[edit]
[-] package_facts.py
[edit]
[-] raw.py
[edit]
[-] group.py
[edit]
[-] dnf.py
[edit]
[-] __init__.py
[edit]
[-] file.py
[edit]