adding quiet option to assert (ansible#27124) (#52032)

* adding quiet option to assert (ansible#27124)

* adding doc for quiet to assert.py

* fixing PEP8 failure

* improving example

* improving docs

* adding changelog fragment

* adding . at end of descriptions

* removing trailing blank line

* adding integration test for assert

* fixing CI complaints

* disabling gather_facts in quiet.yml test

* rerunning to capture skip

* cleaning up python 2 vs 3

* following rebase

* fixing CI complaints

* fixing CI complaints

* fixing CI complaints

* fixing CI complaints

* fixing CI complaints
This commit is contained in:
rwagnergit
2019-02-28 10:25:41 -05:00
committed by Brian Coca
parent 0e9a79a589
commit d2bdbadb03
9 changed files with 134 additions and 7 deletions

View File

@@ -24,20 +24,26 @@ version_added: "1.5"
options:
that:
description:
- "A string expression of the same form that can be passed to the 'when' statement"
- "Alternatively, a list of string expressions"
- "A string expression of the same form that can be passed to the 'when' statement."
- "Alternatively, a list of string expressions."
required: true
fail_msg:
version_added: "2.7"
description:
- "The customized message used for a failing assertion"
- "This argument was called 'msg' before version 2.7, now it's renamed to 'fail_msg' with alias 'msg'"
- "The customized message used for a failing assertion."
- "This argument was called 'msg' before version 2.7, now it's renamed to 'fail_msg' with alias 'msg'."
aliases:
- msg
success_msg:
version_added: "2.7"
description:
- "The customized message used for a successful assertion"
- "The customized message used for a successful assertion."
quiet:
version_added: "2.8"
description:
- "Set this to C(true) to avoid verbose output."
type: bool
default: false
notes:
- This module is also supported for Windows targets.
author:
@@ -67,4 +73,11 @@ EXAMPLES = '''
- "my_param <= 100"
- "my_param >= 0"
msg: "'my_param' must be between 0 and 100"
- name: use quiet to avoid verbose output
assert:
that:
- "my_param <= 100"
- "my_param >= 0"
quiet: true
'''

View File

@@ -21,13 +21,14 @@ from ansible.errors import AnsibleError
from ansible.playbook.conditional import Conditional
from ansible.plugins.action import ActionBase
from ansible.module_utils.six import string_types
from ansible.module_utils.parsing.convert_bool import boolean
class ActionModule(ActionBase):
''' Fail with custom message '''
TRANSFERS_FILES = False
_VALID_ARGS = frozenset(('fail_msg', 'msg', 'success_msg', 'that'))
_VALID_ARGS = frozenset(('fail_msg', 'msg', 'quiet', 'success_msg', 'that'))
def run(self, tmp=None, task_vars=None):
if task_vars is None:
@@ -54,6 +55,8 @@ class ActionModule(ActionBase):
elif not isinstance(success_msg, string_types):
raise AnsibleError('Incorrect type for success_msg, expected string and got %s' % type(success_msg))
quiet = boolean(self._task.args.get('quiet', False), strict=False)
# make sure the 'that' items are a list
thats = self._task.args['that']
if not isinstance(thats, list):
@@ -65,7 +68,9 @@ class ActionModule(ActionBase):
# by this point, and is not used again, so we don't care about mangling
# that value now
cond = Conditional(loader=self._loader)
result['_ansible_verbose_always'] = True
if not quiet:
result['_ansible_verbose_always'] = True
for that in thats:
cond.when = [that]
test_result = cond.evaluate_conditional(templar=self._templar, all_vars=task_vars)