Merge "Refactoring of the cli lister module"

This commit is contained in:
Zuul 2021-06-02 13:30:13 +00:00 committed by Gerrit Code Review
commit 48f2435436
3 changed files with 21 additions and 19 deletions

View File

@ -14,9 +14,6 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
import json
import sys
from cliff.lister import Lister from cliff.lister import Lister
from validations_libs.validation_actions import ValidationActions from validations_libs.validation_actions import ValidationActions
@ -34,7 +31,7 @@ class ValidationList(Lister):
metavar='<group>[,<group>,...]', metavar='<group>[,<group>,...]',
action=CommaListAction, action=CommaListAction,
default=[], default=[],
help=("Run specific group validations, " help=("List specific group of validations, "
"if more than one group is required " "if more than one group is required "
"separate the group names with commas: " "separate the group names with commas: "
"--group pre-upgrade,prep | " "--group pre-upgrade,prep | "
@ -42,12 +39,12 @@ class ValidationList(Lister):
parser.add_argument('--validation-dir', dest='validation_dir', parser.add_argument('--validation-dir', dest='validation_dir',
default=constants.ANSIBLE_VALIDATION_DIR, default=constants.ANSIBLE_VALIDATION_DIR,
help=("Path where the validation playbooks " help=("Path where the validation playbooks "
"is located.")) "are located."))
return parser return parser
def take_action(self, parsed_args): def take_action(self, parsed_args):
"""Take validation action""" """Take validation action"""
# Get parameters:
group = parsed_args.group group = parsed_args.group
validation_dir = parsed_args.validation_dir validation_dir = parsed_args.validation_dir

View File

@ -66,6 +66,7 @@ def parse_all_validations_on_disk(path, groups=None):
:type path: `string` :type path: `string`
:param groups: Groups of validations. Could be a `list` or a :param groups: Groups of validations. Could be a `list` or a
comma-separated `string` of groups comma-separated `string` of groups
:type groups: `list` or `string`
:return: A list of validations metadata. :return: A list of validations metadata.
:rtype: `list` :rtype: `list`
@ -90,8 +91,8 @@ def parse_all_validations_on_disk(path, groups=None):
validations_abspath = glob.glob("{path}/*.yaml".format(path=path)) validations_abspath = glob.glob("{path}/*.yaml".format(path=path))
for pl in validations_abspath: for playbook in validations_abspath:
val = Validation(pl) val = Validation(playbook)
if not groups or set(groups).intersection(val.groups): if not groups or set(groups).intersection(val.groups):
results.append(val.get_metadata) results.append(val.get_metadata)

View File

@ -46,10 +46,17 @@ class ValidationActions(object):
else constants.ANSIBLE_VALIDATION_DIR) else constants.ANSIBLE_VALIDATION_DIR)
def list_validations(self, group=None): def list_validations(self, group=None):
"""Get a list of the available validations """Get a list of the validations selected by group
membership. With their names and group membership information.
This is used to print table from python ``Tuple`` with ``PrettyTable``. This is used to print table from python ``Tuple`` with ``PrettyTable``.
:param group: Group or multiple groups of validations.
Additional groups have to be separated by comma.
:type group: `string`
:return: Column names and a list of the selected validations
:rtype: `tuple`
.. code:: text .. code:: text
----------------+--------------------------+----------------------+ ----------------+--------------------------+----------------------+
@ -60,9 +67,6 @@ class ValidationActions(object):
| validation3 | Name of the validation3 | ['group4] | | validation3 | Name of the validation3 | ['group4] |
+---------------+--------------------------+----------------------+ +---------------+--------------------------+----------------------+
:return: The list of the available validations
:rtype: `tuple`
:Example: :Example:
>>> path = "/foo/bar" >>> path = "/foo/bar"
@ -77,13 +81,13 @@ class ValidationActions(object):
validations = v_utils.parse_all_validations_on_disk( validations = v_utils.parse_all_validations_on_disk(
self.validation_path, group) self.validation_path, group)
return_values = [] return_values = [
column_name = ('ID', 'Name', 'Groups') (val.get('id'), val.get('name'), val.get('groups'))
for val in validations]
for val in validations: column_names = ('ID', 'Name', 'Groups')
return_values.append((val.get('id'), val.get('name'),
val.get('groups'))) return (column_names, return_values)
return (column_name, return_values)
def show_validations(self, validation, def show_validations(self, validation,
log_path=constants.VALIDATIONS_LOG_BASEDIR): log_path=constants.VALIDATIONS_LOG_BASEDIR):