diff --git a/tuskarclient/osc/v2/plan.py b/tuskarclient/osc/v2/plan.py index 4146c6a..ee6872d 100644 --- a/tuskarclient/osc/v2/plan.py +++ b/tuskarclient/osc/v2/plan.py @@ -24,11 +24,30 @@ class CreateManagementPlan(show.ShowOne): def get_parser(self, prog_name): parser = super(CreateManagementPlan, self).get_parser(prog_name) + + parser.add_argument( + 'name', + help="Name of the plan being created." + ) + + parser.add_argument( + '-d', '--description', + help='A textual description of the plan.') + 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.create( + name=parsed_args.name, + description=parsed_args.description + ) + + return self.dict2columns(plan.to_dict()) + class DeleteManagementPlan(command.Command): """Delete a Management Plan.""" diff --git a/tuskarclient/tests/osc/v2/fakes.py b/tuskarclient/tests/osc/v2/fakes.py index d1151e2..47bfa4d 100644 --- a/tuskarclient/tests/osc/v2/fakes.py +++ b/tuskarclient/tests/osc/v2/fakes.py @@ -14,20 +14,26 @@ import mock from openstackclient.tests import utils +def _create_mock(**kwargs): + mock_plan = mock.Mock() + mock_plan.configure_mock(**kwargs) + mock_plan.to_dict.return_value = kwargs + return mock_plan + + mock_roles = [ - mock.Mock(uuid="UUID1", version=1, description="Mock Role 1"), - mock.Mock(uuid="UUID2", version=2, description="Mock Role 2"), + _create_mock(uuid="UUID1", name="Role 1 Name", version=1, + description="Mock Role 1"), + _create_mock(uuid="UUID2", name="Role 2 Name", version=2, + description="Mock Role 2"), ] -mock_roles[0].configure_mock(name="Role 1 Name") -mock_roles[1].configure_mock(name="Role 2 Name") mock_plans = [ - mock.Mock(uuid="UUID1", description="Plan 1", - roles=mock_roles), - mock.Mock(uuid="UUID2", description="Plan 2", roles=[]), + _create_mock(uuid="UUID1", name="Plan 1 Name", description="Plan 1", + roles=mock_roles), + _create_mock(uuid="UUID2", name="Plan 2 Name", description="Plan 2", + roles=[]) ] -mock_plans[0].configure_mock(name="Plan 1 Name") -mock_plans[1].configure_mock(name="Plan 2 Name") class TestManagement(utils.TestCommand): diff --git a/tuskarclient/tests/osc/v2/test_plans.py b/tuskarclient/tests/osc/v2/test_plans.py index 9b09164..2233abe 100644 --- a/tuskarclient/tests/osc/v2/test_plans.py +++ b/tuskarclient/tests/osc/v2/test_plans.py @@ -30,12 +30,41 @@ class TestCreateManagementPlan(TestPlans): self.cmd = plan.CreateManagementPlan(self.app, None) def test_create_plan(self): - arglist = [] - verifylist = [] + arglist = ["Plan 2 Name", '-d', 'Plan 2'] + verifylist = [ + ('name', "Plan 2 Name"), + ('description', "Plan 2"), + ] + + self.management_mock.plans.create.return_value = fakes.mock_plans[1] 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 2', 'Plan 2 Name', [], 'UUID2') + ], list(result) + ) + + def test_create_plan_no_description(self): + arglist = ["Plan1Name", ] + verifylist = [ + ('name', "Plan1Name"), + ('description', None), + ] + + self.management_mock.plans.create.return_value = fakes.mock_plans[0] + + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + result = self.cmd.take_action(parsed_args) + + self.assertEqual([ + ('description', 'name', 'roles', 'uuid'), + ('Plan 1', 'Plan 1 Name', fakes.mock_roles, 'UUID1') + ], list(result)) class TestDeleteManagementPlan(TestPlans):