Merge branch 'maxamillion-admiller/async_resume' into devel
This commit is contained in:
commit
1076e73338
4 changed files with 49 additions and 1 deletions
|
@ -16,6 +16,7 @@ Major changes:
|
||||||
* command_warnings feature will warn about when usage of the shell/command module can be simplified to use core modules - this can be enabled in ansible.cfg
|
* command_warnings feature will warn about when usage of the shell/command module can be simplified to use core modules - this can be enabled in ansible.cfg
|
||||||
* new omit value can be used to leave off a parameter when not set, like so module_name: a=1 b={{ c | default(omit) }}, would not pass value for b (not even an empty value) if c was not set.
|
* new omit value can be used to leave off a parameter when not set, like so module_name: a=1 b={{ c | default(omit) }}, would not pass value for b (not even an empty value) if c was not set.
|
||||||
* developers: 'baby JSON' in module responses, originally intended for writing modules in bash, is removed as a feature to simplify logic, script module remains available for running bash scripts.
|
* developers: 'baby JSON' in module responses, originally intended for writing modules in bash, is removed as a feature to simplify logic, script module remains available for running bash scripts.
|
||||||
|
* async jobs started in "fire & forget" mode can now be checked on at a later time.
|
||||||
|
|
||||||
New Modules:
|
New Modules:
|
||||||
|
|
||||||
|
|
|
@ -56,6 +56,28 @@ Alternatively, if you do not need to wait on the task to complete, you may
|
||||||
Using a higher value for ``--forks`` will result in kicking off asynchronous
|
Using a higher value for ``--forks`` will result in kicking off asynchronous
|
||||||
tasks even faster. This also increases the efficiency of polling.
|
tasks even faster. This also increases the efficiency of polling.
|
||||||
|
|
||||||
|
If you would like to perform a variation of the "fire and forget" where you
|
||||||
|
"fire and forget, check on it later" you can perform a task similar to the
|
||||||
|
following::
|
||||||
|
|
||||||
|
---
|
||||||
|
# Requires ansible 1.7+
|
||||||
|
- name: 'YUM - fire and forget task'
|
||||||
|
yum: name=docker-io state=installed
|
||||||
|
async: 1000
|
||||||
|
poll: 0
|
||||||
|
register: yum_sleeper
|
||||||
|
|
||||||
|
- name: 'YUM - check on fire and forget task'
|
||||||
|
async_status: jid={{ yum_sleeper.ansible_job_id }}
|
||||||
|
register: job_result
|
||||||
|
until: job_result.finished
|
||||||
|
retries: 30
|
||||||
|
|
||||||
|
.. note::
|
||||||
|
If the value of ``async:`` is not high enough, this will cause the
|
||||||
|
"check on it later" task to fail because the temporary status file that
|
||||||
|
the ``async_status:`` is looking for will not have been written
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,7 @@ def main():
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
if data == '':
|
if data == '':
|
||||||
# file not written yet? That means it is running
|
# file not written yet? That means it is running
|
||||||
module.exit_json(results_file=log_path, ansible_job_id=jid, started=1)
|
module.exit_json(results_file=log_path, ansible_job_id=jid, started=1, finished=0)
|
||||||
else:
|
else:
|
||||||
module.fail_json(ansible_job_id=jid, results_file=log_path,
|
module.fail_json(ansible_job_id=jid, results_file=log_path,
|
||||||
msg="Could not parse job output: %s" % data)
|
msg="Could not parse job output: %s" % data)
|
||||||
|
|
|
@ -62,3 +62,28 @@
|
||||||
async: 15
|
async: 15
|
||||||
poll: 0
|
poll: 0
|
||||||
when: False
|
when: False
|
||||||
|
|
||||||
|
# test async "fire and forget, but check later"
|
||||||
|
|
||||||
|
- name: 'start a task with "fire-and-forget"'
|
||||||
|
command: sleep 15
|
||||||
|
async: 30
|
||||||
|
poll: 0
|
||||||
|
register: fnf_task
|
||||||
|
|
||||||
|
- name: assert task was successfully started
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- fnf_task.started
|
||||||
|
- "'ansible_job_id' in fnf_task"
|
||||||
|
|
||||||
|
- name: 'check on task started as a "fire-and-forget"'
|
||||||
|
async_status: jid={{ fnf_task.ansible_job_id }}
|
||||||
|
register: fnf_result
|
||||||
|
until: fnf_result.finished
|
||||||
|
retries: 30
|
||||||
|
|
||||||
|
- name: assert task was successfully checked
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- fnf_result.finished
|
||||||
|
|
Loading…
Reference in a new issue