Add get validation playbook function and cleanup

Remove unsed function and add get validation playbook function

Change-Id: I5fbcbab7a402dd1149fa6df718f530a3ee5c6af2
This commit is contained in:
Mathieu Bultel 2020-03-24 00:01:22 +01:00
parent e367d62445
commit c98ea9195a
3 changed files with 31 additions and 22 deletions

View File

@ -41,9 +41,3 @@ class TestUtils(TestCase):
res = self.vlog.get_validations_stats(
fakes.VALIDATIONS_LOGS_CONTENTS_LIST)
self.assertEqual(res, fakes.VALIDATIONS_STATS)
@mock.patch('validations_libs.utils.parse_all_validations_on_disk',
return_value=fakes.VALIDATIONS_LIST)
def test_get_validations_details(self, mock_parse):
res = utils.get_validations_details('my_val1')
self.assertEqual(res, fakes.VALIDATIONS_LIST[0])

View File

@ -18,6 +18,8 @@ import logging
import os
import six
from os import listdir
from os.path import isfile, join
from validations_libs import constants
from validations_libs.group import Group
from validations_libs.validation import Validation
@ -63,6 +65,24 @@ def parse_all_validations_on_disk(path, groups=None):
return results
def get_validations_playbook(path, validation_id, groups=None):
"""
Return a list of validations playbook
Can be sorted by Groups
"""
if isinstance(groups, six.string_types):
groups = [groups]
pl = []
for f in listdir(path):
pl_path = join(path, f)
if isfile(pl_path):
if os.path.splitext(f)[0] in validation_id:
val = Validation(pl_path)
if not groups or set(groups).intersection(val.groups):
pl.append(pl_path)
return pl
def get_validation_parameters(validation):
"""Return dictionary of parameters"""
return Validation(validation).get_vars

View File

@ -65,13 +65,13 @@ class ValidationActions(object):
self.log = logging.getLogger(__name__ + ".run_validations")
if isinstance(playbook, list):
playbooks = playbook
elif isinstance(playbook, str):
playbooks = []
playbooks.append(playbook)
else:
raise TypeError("Playbooks should be a List or a Str")
if playbook:
if isinstance(playbook, list):
playbooks = playbook
elif isinstance(playbook, str):
playbooks = [playbook]
else:
raise TypeError("Playbooks should be a List or a Str")
if group:
self.log.debug('Getting the validations list by group')
@ -83,16 +83,11 @@ class ValidationActions(object):
playbooks.append(val.get('id') + '.yaml')
except Exception as e:
raise(e)
elif validation_name:
for pb in validation_name:
if pb not in v_utils.get_validation_group_name_list():
playbooks.append(pb + '.yaml')
else:
raise("Please, use '--group' argument instead of "
"'--validation' to run validation(s) by their "
"name(s)."
)
playbooks = v_utils.get_validations_playbook(
(validations_dir if validations_dir
else constants.ANSIBLE_VALIDATION_DIR),
validation_name, group)
else:
raise RuntimeError("No validations found")