Update some parameters of server create cmd

Change-Id: Ibb7d2c53bf6ec4ee293bfdaeb73ce1f980df4170
This commit is contained in:
Zhenguo Niu 2017-04-13 19:25:42 +08:00
parent 4fd4953b80
commit 6ad7a2efdf
2 changed files with 42 additions and 20 deletions

View File

@ -80,13 +80,13 @@ class CreateServer(command.ShowOne):
"--flavor", "--flavor",
metavar="<flavor>", metavar="<flavor>",
required=True, required=True,
help=_("ID or Name of baremetal server flavor"), help=_('Create server with this flavor (name or ID)'),
) )
parser.add_argument( parser.add_argument(
"--image", "--image",
metavar="<image>", metavar="<image>",
required=True, required=True,
help=_("ID or Name of image"), help=_('Create server boot disk from this image (name or ID)'),
) )
parser.add_argument( parser.add_argument(
"--nic", "--nic",
@ -96,7 +96,7 @@ class CreateServer(command.ShowOne):
optional_keys=['port-type'], optional_keys=['port-type'],
action=parseractions.MultiKeyValueAction, action=parseractions.MultiKeyValueAction,
help=_("Create a NIC on the server. " help=_("Create a NIC on the server. "
"(repeat option to create multiple NICs)"), "Specify option multiple times to create multiple NICs."),
) )
parser.add_argument( parser.add_argument(
"--description", "--description",
@ -106,7 +106,7 @@ class CreateServer(command.ShowOne):
parser.add_argument( parser.add_argument(
"--availability-zone", "--availability-zone",
metavar="<zone-name>", metavar="<zone-name>",
help=_("The availability zone for the baremetal server placement"), help=_('Select an availability zone for the server'),
) )
parser.add_argument( parser.add_argument(
'--user-data', '--user-data',
@ -114,21 +114,25 @@ class CreateServer(command.ShowOne):
help=_('User data file to inject into the instance'), help=_('User data file to inject into the instance'),
) )
parser.add_argument( parser.add_argument(
"--extra", '--property',
metavar="<extra>", metavar='<key=value>',
help=_("The extra information for baremetal server"), action=parseractions.KeyValueAction,
help=_('Set a property on this server '
'(repeat option to set multiple values)'),
) )
parser.add_argument( parser.add_argument(
"--min-count", "--min",
metavar='<count>',
type=int, type=int,
metavar="<number>", default=1,
help=_("Create at least <number> servers (limited by quota)"), help=_('Minimum number of servers to launch (default=1)'),
) )
parser.add_argument( parser.add_argument(
"--max-count", '--max',
metavar='<count>',
type=int, type=int,
metavar="<number>", default=1,
help=_("Create up to <number> servers (limited by quota)"), help=_('Maximum number of servers to launch (default=1)'),
) )
return parser return parser
@ -150,6 +154,16 @@ class CreateServer(command.ShowOne):
nic['net_id'] = nic['net-id'] nic['net_id'] = nic['net-id']
del 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 userdata = None
if parsed_args.user_data: if parsed_args.user_data:
try: try:
@ -169,9 +183,9 @@ class CreateServer(command.ShowOne):
networks=parsed_args.nic, networks=parsed_args.nic,
availability_zone=parsed_args.availability_zone, availability_zone=parsed_args.availability_zone,
userdata=userdata, userdata=userdata,
extra=parsed_args.extra, extra=parsed_args.property,
min_count=parsed_args.min_count, min_count=parsed_args.min,
max_count=parsed_args.max_count max_count=parsed_args.max
) )
try: try:

View File

@ -37,6 +37,8 @@ class TestServer(test_base.TestBaremetalComputeV1):
'image_uuid', 'image_uuid',
'instance_type_uuid', 'instance_type_uuid',
'links', 'links',
'max_count',
'min_count',
'name', 'name',
'network_info', 'network_info',
'updated_at', 'updated_at',
@ -49,6 +51,8 @@ class TestServer(test_base.TestBaremetalComputeV1):
fake_server.image_uuid, fake_server.image_uuid,
fake_server.instance_type_uuid, fake_server.instance_type_uuid,
fake_server.links, fake_server.links,
1,
1,
fake_server.name, fake_server.name,
fake_server.network_info, fake_server.network_info,
fake_server.updated_at, fake_server.updated_at,
@ -86,7 +90,9 @@ class TestServerCreate(TestServer):
called_data = {'name': name, called_data = {'name': name,
'image_uuid': image_id, 'image_uuid': image_id,
'instance_type_uuid': flavor_id, 'instance_type_uuid': flavor_id,
'networks': called_networks} 'networks': called_networks,
'min_count': 1,
'max_count': 1}
for network in networks: for network in networks:
network_id = network.get('net-id') network_id = network.get('net-id')
port_type = network.get('port-type') port_type = network.get('port-type')
@ -108,9 +114,9 @@ class TestServerCreate(TestServer):
verifylist.append(('availability_zone', availability_zone)) verifylist.append(('availability_zone', availability_zone))
called_data['availability_zone'] = availability_zone called_data['availability_zone'] = availability_zone
if extra: if extra:
arglist.extend(['--extra', extra]) arglist.extend(['--property', extra])
verifylist.append(('extra', extra)) verifylist.append(('property', {'key1': 'test'}))
called_data['extra'] = extra called_data['extra'] = {'key1': 'test'}
flavor_obj = mock.Mock() flavor_obj = mock.Mock()
flavor_obj.uuid = flavor_id flavor_obj.uuid = flavor_id
@ -134,6 +140,8 @@ class TestServerCreate(TestServer):
fk_server.image_uuid, fk_server.image_uuid,
fk_server.instance_type_uuid, fk_server.instance_type_uuid,
fk_server.links, fk_server.links,
1,
1,
fk_server.name, fk_server.name,
fk_server.network_info, fk_server.network_info,
fk_server.updated_at, fk_server.updated_at,