Disable quiet mode run when using an Ansible Custom Callback

This patch disables the Ansible execution quiet mode when running
validations with a different Callback by passing --extra-env-vars
ANSIBLE_STDOUT_CALLBACK=default in the command line.

Change-Id: Ied50aaea240943b1eeba0c3c35b74bc7ccdb454c
Signed-off-by: Gael Chamoulaud (Strider) <gchamoul@redhat.com>
This commit is contained in:
Gael Chamoulaud (Strider) 2021-05-11 10:37:32 +02:00
parent bfd8e33a38
commit 3e29d44743
No known key found for this signature in database
GPG Key ID: 4119D0305C651D66
2 changed files with 42 additions and 3 deletions

View File

@ -141,6 +141,15 @@ class Run(Command):
v_actions = ValidationActions(
validation_path=parsed_args.validation_dir)
# Ansible execution should be quiet while using the validations_json
# default callback and be verbose while passing ANSIBLE_SDTOUT_CALLBACK
# environment variable to Ansible through the --extra-env-vars argument
quiet_mode = True
extra_env_vars = parsed_args.extra_env_vars
if extra_env_vars:
if "ANSIBLE_STDOUT_CALLBACK" in extra_env_vars.keys():
quiet_mode = False
extra_vars = parsed_args.extra_vars
if parsed_args.extra_vars_file:
try:
@ -161,9 +170,10 @@ class Run(Command):
validations_dir=parsed_args.validation_dir,
base_dir=parsed_args.ansible_base_dir,
validation_name=parsed_args.validation_name,
extra_env_vars=parsed_args.extra_env_vars,
quiet=True,
ssh_user=parsed_args.ssh_user)
extra_env_vars=extra_env_vars,
quiet=quiet_mode,
ssh_user=parsed_args.ssh_user,
)
except RuntimeError as e:
raise RuntimeError(e)

View File

@ -181,6 +181,35 @@ class TestRun(BaseCommand):
self.cmd.take_action(parsed_args)
mock_run.assert_called_with(**run_called_args)
@mock.patch('getpass.getuser',
return_value='doe')
@mock.patch('validations_libs.validation_actions.ValidationActions.'
'run_validations',
return_value=fakes.FAKE_SUCCESS_RUN)
def test_run_command_extra_env_vars_with_custom_callback(self,
mock_run,
mock_user):
run_called_args = {
'inventory': 'localhost',
'limit_hosts': None,
'group': [],
'extra_vars': None,
'validations_dir': '/usr/share/ansible/validation-playbooks',
'base_dir': '/usr/share/ansible/',
'validation_name': ['foo'],
'extra_env_vars': {'ANSIBLE_STDOUT_CALLBACK': 'default'},
'quiet': False,
'ssh_user': 'doe'}
arglist = ['--validation', 'foo',
'--extra-env-vars', 'ANSIBLE_STDOUT_CALLBACK=default']
verifylist = [('validation_name', ['foo']),
('extra_env_vars', {'ANSIBLE_STDOUT_CALLBACK': 'default'})]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
self.cmd.take_action(parsed_args)
mock_run.assert_called_with(**run_called_args)
@mock.patch('getpass.getuser',
return_value='doe')
@mock.patch('validations_libs.validation_actions.ValidationActions.'