Merge "Show Plan parameters with empty values only"

This commit is contained in:
Jenkins 2015-05-11 10:53:55 +00:00 committed by Gerrit Code Review
commit 1e2b652d1b
3 changed files with 28 additions and 2 deletions

View File

@ -31,7 +31,7 @@ Field 'roles' contains list of names of Roles assigned to the Plan.
Retrieve a Single Plan
----------------------
*tuskar plan-show [-h] [--verbose] <PLAN>*
*tuskar plan-show [-h] [--verbose] [--only-empty-parameters] <PLAN>*
Usage example:
@ -67,6 +67,8 @@ Example:
Adding the --verbose flag will display all parameters, instead of just role counts.
Adding the --only-empty-parameters flag will display only parameters, which have empty or None value. When all parameters have some value, no parameters will be displayed.
Note: Parameters are displayed similarly as Roles, ie. set of properties with values. Each Parameter/Role separated by empty line from previous.
Create a New Plan

View File

@ -19,7 +19,8 @@ from tuskarclient.v2 import plans_shell
def empty_args():
args = mock.Mock(spec=[])
for attr in ['uuid', 'name', 'description', 'parameters']:
for attr in ['uuid', 'name', 'description', 'parameters',
'only_empty_parameters']:
setattr(args, attr, None)
return args
@ -74,6 +75,17 @@ class PlansShellTest(BasePlansShellTest):
mock_print_summary.assert_called_with(mock_find_resource.return_value,
outfile=self.outfile)
def test_filter_empty_parameters(self):
parameters = [{'name': 'setup param', 'value': '1'},
{'name': 'empty-parameter', 'value': ''},
{'name': 'empty-parameter', 'value': None}]
filtered_parameters = self.shell.filter_empty_parameters(parameters)
self.assertEqual([{'name': 'empty-parameter', 'value': ''},
{'name': 'empty-parameter', 'value': None}],
filtered_parameters)
@mock.patch('tuskarclient.common.utils.find_resource')
@mock.patch('tuskarclient.common.formatting.print_dict')
def test_plan_show_scale(self, mock_print_dict, mock_find_resource):

View File

@ -35,9 +35,14 @@ def do_plan_list(tuskar, args, outfile=sys.stdout):
help="UUID of the Plan to show.")
@utils.arg('--verbose', default=False, action="store_true",
help="Display full plan details")
@utils.arg('--only-empty-parameters', default=False, action="store_true",
help="Display only parameters with empty or None value")
def do_plan_show(tuskar, args, outfile=sys.stdout):
"""Show an individual Plan by its UUID."""
plan = utils.find_resource(tuskar.plans, args.plan)
if args.only_empty_parameters:
plan._info['parameters'] = (
filter_empty_parameters(plan._info['parameters']))
if args.verbose:
print_plan_detail(plan, outfile=outfile)
else:
@ -86,6 +91,13 @@ def filter_parameters_to_dict(parameters, param_name):
return filtered_params
def filter_empty_parameters(parameters):
"""Filters parameters with empty or None value."""
filtered_parameters = [param for param in parameters
if param['value'] == '' or param['value'] is None]
return filtered_parameters
def print_plan_detail(plan, outfile=sys.stdout):
"""Print detailed Plan information (for plan-show --verbose etc.)."""