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
This commit is contained in:
Murali Allada
2014-06-26 00:09:45 -05:00
parent 0682e086f0
commit bb3e32f097
2 changed files with 15 additions and 17 deletions

View File

@@ -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',

View File

@@ -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')