a )g(@srddlmZmZmZeZdZdZdZddl Z ddl Z ddl m Z ddl mZddlmZd d Zed krnedS) )absolute_importdivisionprint_functiona= --- 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 aV --- - 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 a 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 N) AnsibleModule) iteritems to_nativec Cstttdddtddddgdtddddd }|jd }|jd }|jd }tj|}tj||}tj|s|jd |ddd|dkrt ||j ||dd}z:t |}t |}Wdn1s0YWnFty,|s|j ||dddn|j||d|dddYn0d|vrJd|d<||d<nd|vr\d|d<ddt|D}|j fi|dS)NstrT)typerequiredstatusZcleanup)r defaultchoicespath)jidmode _async_dir)Z argument_specrrrzcould not find job)msgansible_job_idstartedfinished)rZerasedr) results_filerrrzCould not parse job output: %s)rrrrrrrrcSsi|]\}}t||qSr).0kvrr@/usr/lib/python3.9/site-packages/ansible/modules/async_status.py zmain..)rdictparamsosr expanduserjoinexistsZ fail_jsonunlinkZ exit_jsonopenjsonloadsread Exceptionr)modulerrZ async_dirZlogdirZlog_pathdatafrrrmainqs@         0    r/__main__)Z __future__rrrr Z __metaclass__Z DOCUMENTATIONZEXAMPLESZRETURNr(r"Zansible.module_utils.basicrZansible.module_utils.sixrZansible.module_utils._textrr/__name__rrrrs.   4