diff --git a/moganclient/osc/v1/server.py b/moganclient/osc/v1/server.py index e7d4a02..96122ed 100644 --- a/moganclient/osc/v1/server.py +++ b/moganclient/osc/v1/server.py @@ -80,13 +80,13 @@ class CreateServer(command.ShowOne): "--flavor", metavar="", required=True, - help=_("ID or Name of baremetal server flavor"), + help=_('Create server with this flavor (name or ID)'), ) parser.add_argument( "--image", metavar="", required=True, - help=_("ID or Name of image"), + help=_('Create server boot disk from this image (name or ID)'), ) parser.add_argument( "--nic", @@ -96,7 +96,7 @@ class CreateServer(command.ShowOne): optional_keys=['port-type'], action=parseractions.MultiKeyValueAction, help=_("Create a NIC on the server. " - "(repeat option to create multiple NICs)"), + "Specify option multiple times to create multiple NICs."), ) parser.add_argument( "--description", @@ -106,7 +106,7 @@ class CreateServer(command.ShowOne): parser.add_argument( "--availability-zone", metavar="", - help=_("The availability zone for the baremetal server placement"), + help=_('Select an availability zone for the server'), ) parser.add_argument( '--user-data', @@ -114,21 +114,25 @@ class CreateServer(command.ShowOne): help=_('User data file to inject into the instance'), ) parser.add_argument( - "--extra", - metavar="", - help=_("The extra information for baremetal server"), + '--property', + metavar='', + action=parseractions.KeyValueAction, + help=_('Set a property on this server ' + '(repeat option to set multiple values)'), ) parser.add_argument( - "--min-count", + "--min", + metavar='', type=int, - metavar="", - help=_("Create at least servers (limited by quota)"), + default=1, + help=_('Minimum number of servers to launch (default=1)'), ) parser.add_argument( - "--max-count", + '--max', + metavar='', type=int, - metavar="", - help=_("Create up to servers (limited by quota)"), + default=1, + help=_('Maximum number of servers to launch (default=1)'), ) return parser @@ -150,6 +154,16 @@ class CreateServer(command.ShowOne): nic['net_id'] = nic['net-id'] del nic['net-id'] + if parsed_args.min > parsed_args.max: + msg = _("min instances should be <= max instances") + raise exceptions.CommandError(msg) + if parsed_args.min < 1: + msg = _("min instances should be > 0") + raise exceptions.CommandError(msg) + if parsed_args.max < 1: + msg = _("max instances should be > 0") + raise exceptions.CommandError(msg) + userdata = None if parsed_args.user_data: try: @@ -169,9 +183,9 @@ class CreateServer(command.ShowOne): networks=parsed_args.nic, availability_zone=parsed_args.availability_zone, userdata=userdata, - extra=parsed_args.extra, - min_count=parsed_args.min_count, - max_count=parsed_args.max_count + extra=parsed_args.property, + min_count=parsed_args.min, + max_count=parsed_args.max ) try: diff --git a/moganclient/tests/unit/osc/v1/test_server.py b/moganclient/tests/unit/osc/v1/test_server.py index 23774a0..5d72ace 100644 --- a/moganclient/tests/unit/osc/v1/test_server.py +++ b/moganclient/tests/unit/osc/v1/test_server.py @@ -37,6 +37,8 @@ class TestServer(test_base.TestBaremetalComputeV1): 'image_uuid', 'instance_type_uuid', 'links', + 'max_count', + 'min_count', 'name', 'network_info', 'updated_at', @@ -49,6 +51,8 @@ class TestServer(test_base.TestBaremetalComputeV1): fake_server.image_uuid, fake_server.instance_type_uuid, fake_server.links, + 1, + 1, fake_server.name, fake_server.network_info, fake_server.updated_at, @@ -86,7 +90,9 @@ class TestServerCreate(TestServer): called_data = {'name': name, 'image_uuid': image_id, 'instance_type_uuid': flavor_id, - 'networks': called_networks} + 'networks': called_networks, + 'min_count': 1, + 'max_count': 1} for network in networks: network_id = network.get('net-id') port_type = network.get('port-type') @@ -108,9 +114,9 @@ class TestServerCreate(TestServer): verifylist.append(('availability_zone', availability_zone)) called_data['availability_zone'] = availability_zone if extra: - arglist.extend(['--extra', extra]) - verifylist.append(('extra', extra)) - called_data['extra'] = extra + arglist.extend(['--property', extra]) + verifylist.append(('property', {'key1': 'test'})) + called_data['extra'] = {'key1': 'test'} flavor_obj = mock.Mock() flavor_obj.uuid = flavor_id @@ -134,6 +140,8 @@ class TestServerCreate(TestServer): fk_server.image_uuid, fk_server.instance_type_uuid, fk_server.links, + 1, + 1, fk_server.name, fk_server.network_info, fk_server.updated_at,