Fixing v2 code for test_yum and added capability to squash items
This commit is contained in:
parent
5addbe7956
commit
eae9a406ad
4 changed files with 25 additions and 10 deletions
|
@ -33,7 +33,6 @@ try:
|
||||||
except ImportError:
|
except ImportError:
|
||||||
HAS_ATFORK=False
|
HAS_ATFORK=False
|
||||||
|
|
||||||
from ansible.executor.task_result import TaskResult
|
|
||||||
from ansible.playbook.handler import Handler
|
from ansible.playbook.handler import Handler
|
||||||
from ansible.playbook.task import Task
|
from ansible.playbook.task import Task
|
||||||
|
|
||||||
|
@ -130,7 +129,7 @@ class ResultProcess(multiprocessing.Process):
|
||||||
for notify in result._task.notify:
|
for notify in result._task.notify:
|
||||||
self._send_result(('notify_handler', result._host, notify))
|
self._send_result(('notify_handler', result._host, notify))
|
||||||
|
|
||||||
if 'results' in result._result:
|
if result._task.loop:
|
||||||
# this task had a loop, and has more than one result, so
|
# this task had a loop, and has more than one result, so
|
||||||
# loop over all of them instead of a single result
|
# loop over all of them instead of a single result
|
||||||
result_items = result._result['results']
|
result_items = result._result['results']
|
||||||
|
|
|
@ -112,14 +112,12 @@ class TaskExecutor:
|
||||||
|
|
||||||
results = []
|
results = []
|
||||||
|
|
||||||
# FIXME: squash items into a flat list here for those modules
|
|
||||||
# which support it (yum, apt, etc.) but make it smarter
|
|
||||||
# than it is today?
|
|
||||||
|
|
||||||
for item in items:
|
|
||||||
# make copies of the job vars and task so we can add the item to
|
# make copies of the job vars and task so we can add the item to
|
||||||
# the variables and re-validate the task with the item variable
|
# the variables and re-validate the task with the item variable
|
||||||
task_vars = self._job_vars.copy()
|
task_vars = self._job_vars.copy()
|
||||||
|
|
||||||
|
items = self._squash_items(items, task_vars)
|
||||||
|
for item in items:
|
||||||
task_vars['item'] = item
|
task_vars['item'] = item
|
||||||
|
|
||||||
try:
|
try:
|
||||||
|
@ -143,6 +141,22 @@ class TaskExecutor:
|
||||||
|
|
||||||
return results
|
return results
|
||||||
|
|
||||||
|
def _squash_items(self, items, variables):
|
||||||
|
'''
|
||||||
|
Squash items down to a comma-separated list for certain modules which support it
|
||||||
|
(typically package management modules).
|
||||||
|
'''
|
||||||
|
|
||||||
|
if len(items) > 0 and self._task.action in ('apt', 'yum', 'pkgng', 'zypper'):
|
||||||
|
final_items = []
|
||||||
|
for item in items:
|
||||||
|
variables['item'] = item
|
||||||
|
if self._task.evaluate_conditional(variables):
|
||||||
|
final_items.append(item)
|
||||||
|
return [",".join(final_items)]
|
||||||
|
else:
|
||||||
|
return items
|
||||||
|
|
||||||
def _execute(self, variables=None):
|
def _execute(self, variables=None):
|
||||||
'''
|
'''
|
||||||
The primary workhorse of the executor system, this runs the task
|
The primary workhorse of the executor system, this runs the task
|
||||||
|
|
|
@ -55,6 +55,7 @@ class TaskResult:
|
||||||
if 'results' in self._result:
|
if 'results' in self._result:
|
||||||
flag = False
|
flag = False
|
||||||
for res in self._result.get('results', []):
|
for res in self._result.get('results', []):
|
||||||
|
if isinstance(res, dict):
|
||||||
flag |= res.get(key, False)
|
flag |= res.get(key, False)
|
||||||
else:
|
else:
|
||||||
return self._result.get(key, False)
|
return self._result.get(key, False)
|
||||||
|
|
|
@ -17,7 +17,8 @@ from ansible.utils.vars import combine_vars
|
||||||
from ansible.vars import VariableManager
|
from ansible.vars import VariableManager
|
||||||
|
|
||||||
# Implement an ansible.utils.warning() function later
|
# Implement an ansible.utils.warning() function later
|
||||||
warning = print
|
import __builtin__
|
||||||
|
warning = getattr(__builtin__, 'print')
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue