From bb3e32f0970b620ee50bbbc2a0106d1721e5d40b Mon Sep 17 00:00:00 2001 From: Murali Allada Date: Thu, 26 Jun 2014 00:09:45 -0500 Subject: [PATCH] Make assembly name mandatory during assembly creation Currently it is optional. Submitting a create command without a name makes a call to the API and fails at the Solum API layer. Skipping mandaroty inputs should fail at the CLI itself. The usage docs will be updated using the following bug https://bugs.launchpad.net/solum/+bug/1336348 Change-Id: I3710c0d2fc75337ea7e8c766417612a43810d7e8 Closes-Bug: #1332315 --- solumclient/solum.py | 9 +++++---- solumclient/tests/test_solum.py | 23 ++++++++++------------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/solumclient/solum.py b/solumclient/solum.py index 25a2d9a..e63fdb6 100644 --- a/solumclient/solum.py +++ b/solumclient/solum.py @@ -19,7 +19,7 @@ Initial M1 Solum CLI commands implemented (but not REST communications): * app delete plan_name * app list * app show plan_id -* assembly create [--assembly="assembly_name"] plan_name +* assembly create assembly_name plan_name * assembly delete assembly_name * assembly list * assembly show assembly_id @@ -111,14 +111,15 @@ class AssemblyCommands(cli_utils.CommandsBase): def create(self): """Create an assembly.""" + self.parser.add_argument('name', + help="Assembly name") self.parser.add_argument('plan_uri', help="Tenant/project-wide unique " "plan (uri/uuid or name)") - self.parser.add_argument('--assembly', - help="Assembly name") self.parser.add_argument('--description', help="Assembly description") args = self.parser.parse_args() + name = args.name plan_uri = args.plan_uri if '/' not in plan_uri: # might be a plan uuid/name @@ -127,7 +128,7 @@ class AssemblyCommands(cli_utils.CommandsBase): plan_uri = plan.uri print('Note: using plan_uri=%s' % plan_uri) - assembly = self.client.assemblies.create(name=args.assembly, + assembly = self.client.assemblies.create(name=name, description=args.description, plan_uri=plan_uri) fields = ['uuid', 'name', 'description', 'status', 'application_uri', diff --git a/solumclient/tests/test_solum.py b/solumclient/tests/test_solum.py index 52e72f5..e604f37 100644 --- a/solumclient/tests/test_solum.py +++ b/solumclient/tests/test_solum.py @@ -129,20 +129,17 @@ class TestSolum(base.TestCase): @mock.patch.object(assembly.AssemblyManager, "create") def test_assembly_create(self, mock_assembly_create): self.make_env() - self.shell("assembly create http://example.com/a.yaml --assembly=test") + self.shell("assembly create assembly_name http://example.com/a.yaml") mock_assembly_create.assert_called_once_with( - name='test', + name='assembly_name', description=None, plan_uri='http://example.com/a.yaml') @mock.patch.object(assembly.AssemblyManager, "create") def test_assembly_create_without_name(self, mock_assembly_create): self.make_env() - self.shell("assembly create http://example.com/a.yaml") - mock_assembly_create.assert_called_once_with( - name=None, - description=None, - plan_uri='http://example.com/a.yaml') + self.shell("assembly create http://example.com/a.yaml", + exit_code=2) @mock.patch.object(plan.PlanManager, "find") @mock.patch.object(assembly.AssemblyManager, "create") @@ -153,29 +150,29 @@ class TestSolum(base.TestCase): self.make_env() mock_app_find.return_value = FakePlan() - self.shell("assembly create the-plan-name --assembly=test") + self.shell("assembly create assembly_name the-plan-name") mock_app_find.assert_called_once_with(name_or_id='the-plan-name') mock_assembly_create.assert_called_once_with( - name='test', + name='assembly_name', description=None, plan_uri='http://example.com/the-plan.yaml') @mock.patch.object(assembly.AssemblyManager, "create") def test_assembly_create_with_description(self, mock_assembly_create): self.make_env() - self.shell("""assembly create http://example.com/a.yaml --assembly=test + self.shell("""assembly create assembly_name http://example.com/a.yaml --description=description""") mock_assembly_create.assert_called_once_with( - name='test', + name='assembly_name', description='description', plan_uri='http://example.com/a.yaml') @mock.patch.object(assembly.AssemblyManager, "create") def test_assembly_create_without_description(self, mock_assembly_create): self.make_env() - self.shell("assembly create http://example.com/a.yaml --assembly=test") + self.shell("assembly create assembly_name http://example.com/a.yaml") mock_assembly_create.assert_called_once_with( - name='test', + name='assembly_name', description=None, plan_uri='http://example.com/a.yaml')