Esempio n. 1
0
    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)
Esempio n. 2
0
 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)
Esempio n. 3
0
    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, [])
Esempio n. 4
0
    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)