Merge "Show Plan parameters with empty values only"
This commit is contained in:
commit
1e2b652d1b
@ -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
|
||||
|
@ -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):
|
||||
|
@ -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.)."""
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user