def test_validation_skip_on_specific_host(self, mock_tmp, mock_ansible_run, mock_validation_play): mock_ansible_run.return_value = ('fake.yaml', 0, 'successful') run_called_args = { 'workdir': '/tmp/', 'playbook': '/tmp/foo/fake.yaml', 'base_dir': '/usr/share/ansible/', 'playbook_dir': '/tmp/foo', 'parallel_run': True, 'inventory': 'tmp/inventory.yaml', 'output_callback': 'validation_stdout', 'quiet': True, 'extra_vars': None, 'limit_hosts': '!cloud1', 'ansible_artifact_path': '/tmp/', 'extra_env_variables': None, 'ansible_cfg': None, 'gathering_policy': 'explicit', 'log_path': None, 'run_async': False, 'python_interpreter': None } playbook = ['fake.yaml'] inventory = 'tmp/inventory.yaml' skip_list = {'fake': {'hosts': 'cloud1', 'reason': None, 'lp': None}} run = ValidationActions() run_return = run.run_validations(playbook, inventory, validations_dir='/tmp/foo', skip_list=skip_list, limit_hosts=None) mock_ansible_run.assert_called_with(**run_called_args)
def take_action(self, parsed_args): """Take validation action""" # Get parameters: inventory = parsed_args.inventory group = parsed_args.group validation_name = parsed_args.validation_name quiet = parsed_args.quiet validation_dir = parsed_args.validation_dir ansible_base_dir = parsed_args.ansible_base_dir extra_vars = parsed_args.extra_vars if extra_vars: try: extra_vars = dict(e.split("=") for e in parsed_args.extra_vars) except ValueError: msg = "extra vars option should be formed as: KEY=VALUE." raise RuntimeError(msg) v_actions = ValidationActions(validation_path=validation_dir, group=group) try: results = v_actions.run_validations( inventory=inventory, group=group, validation_name=validation_name, base_dir=ansible_base_dir, extra_vars=extra_vars, quiet=quiet) except RuntimeError as e: sys.exit(e) if results: if parsed_args.output_log: self._write_output(parsed_args.output_log, results) else: self._print_dict_table(results)
def test_validation_skip_validation(self, mock_validation_play): playbook = ['fake.yaml'] inventory = 'tmp/inventory.yaml' skip_list = {'fake': {'hosts': 'ALL', 'reason': None, 'lp': None}} run = ValidationActions() run_return = run.run_validations(playbook, inventory, validations_dir='/tmp/foo', skip_list=skip_list, limit_hosts=None) self.assertEqual(run_return, [])
def test_validation_run_success(self, mock_tmp, mock_ansible_run, mock_validation_dir, mock_results): mock_validation_dir.return_value = [{ 'description': 'My Validation One Description', 'groups': ['prep', 'pre-deployment'], 'id': 'foo', 'name': 'My Validition One Name', 'parameters': {} }] mock_ansible_run.return_value = ('foo.yaml', 0, 'successful') mock_results.return_value = [{ 'Duration': '0:00:01.761', 'Host_Group': 'overcloud', 'Status': 'PASSED', 'Status_by_Host': 'subnode-1,PASSED', 'UUID': 'foo', 'Unreachable_Hosts': '', 'Validations': 'ntp' }] expected_run_return = [{ 'Duration': '0:00:01.761', 'Host_Group': 'overcloud', 'Status': 'PASSED', 'Status_by_Host': 'subnode-1,PASSED', 'UUID': 'foo', 'Unreachable_Hosts': '', 'Validations': 'ntp' }] playbook = ['fake.yaml'] inventory = 'tmp/inventory.yaml' run = ValidationActions() run_return = run.run_validations(playbook, inventory, group=fakes.GROUPS_LIST, validations_dir='/tmp/foo') self.assertEqual(run_return, expected_run_return)