diff --git a/tuskarclient/osc/v2/plan.py b/tuskarclient/osc/v2/plan.py index 1d8dae4..0dd88d4 100644 --- a/tuskarclient/osc/v2/plan.py +++ b/tuskarclient/osc/v2/plan.py @@ -167,11 +167,34 @@ class ShowManagementPlan(show.ShowOne): def get_parser(self, prog_name): parser = super(ShowManagementPlan, self).get_parser(prog_name) + + parser.add_argument( + 'plan_uuid', + help="The UUID of the plan to show." + ) + + parser.add_argument( + '--long', default=False, action="store_true", + help="Display full plan details" + ) + return parser def take_action(self, parsed_args): self.log.debug("take_action(%s)" % parsed_args) + client = self.app.client_manager.management + plan = client.plans.get(parsed_args.plan_uuid) + plan_dict = plan.to_dict() + + if not parsed_args.long: + if 'parameters' in plan_dict: + plan_dict['parameters'] = ("Parameter output suppressed. Use " + "--long to display them.") + plan_dict['roles'] = ', '.join([r.name for r in plan.roles]) + + return self.dict2columns(plan_dict) + class AddManagementPlanRole(show.ShowOne): """Add a Role to a Management Plan.""" diff --git a/tuskarclient/tests/osc/v2/test_plans.py b/tuskarclient/tests/osc/v2/test_plans.py index fccc7d7..94914fb 100644 --- a/tuskarclient/tests/osc/v2/test_plans.py +++ b/tuskarclient/tests/osc/v2/test_plans.py @@ -220,12 +220,38 @@ class TestShowManagementPlan(TestPlans): self.cmd = plan.ShowManagementPlan(self.app, None) def test_show_plan(self): - arglist = [] - verifylist = [] + arglist = ['UUID2', ] + verifylist = [ + ('long', False), + ] + + self.management_mock.plans.get.return_value = fakes.mock_plans[0] parsed_args = self.check_parser(self.cmd, arglist, verifylist) - self.cmd.take_action(parsed_args) + result = self.cmd.take_action(parsed_args) + + self.assertEqual([ + ('description', 'name', 'roles', 'uuid'), + ('Plan 1', 'Plan 1 Name', 'Role 1 Name, Role 2 Name', 'UUID1') + ], list(result)) + + def test_show_plan_verbose(self): + arglist = ['UUID1', '--long'] + verifylist = [ + ('long', True), + ] + + self.management_mock.plans.get.return_value = fakes.mock_plans[1] + + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + result = self.cmd.take_action(parsed_args) + + self.assertEqual([ + ('description', 'name', 'roles', 'uuid'), + ('Plan 2', 'Plan 2 Name', [], 'UUID2') + ], list(result)) class TestAddManagementPlanRole(TestPlans):