diff options
Diffstat (limited to 'troveclient/osc/v1/database_instances.py')
-rw-r--r-- | troveclient/osc/v1/database_instances.py | 33 |
1 files changed, 24 insertions, 9 deletions
diff --git a/troveclient/osc/v1/database_instances.py b/troveclient/osc/v1/database_instances.py index 7f831a9..748c448 100644 --- a/troveclient/osc/v1/database_instances.py +++ b/troveclient/osc/v1/database_instances.py @@ -293,9 +293,13 @@ class CreateDatabaseInstance(command.ShowOne): ) parser.add_argument( '--nic', - metavar='<net-id=<net-uuid>>', + metavar=('<net-id=<net-uuid>,subnet-id=<subnet-uuid>,' + 'ip-address=<ip-address>>'), dest='nics', - help=_("Create instance in the given Neutron network."), + help=_("Create instance in the given Neutron network. This " + "information is used for creating user-facing port for the " + "instance. Either network ID or subnet ID (or both) should " + "be specified, IP address is optional"), ) parser.add_argument( '--configuration', @@ -392,13 +396,24 @@ class CreateDatabaseInstance(command.ShowOne): nics = [] if parsed_args.nics: - nic_info = dict( - [(k, v) for (k, v) in [parsed_args.nics.split("=", 1)[:2]]] - ) - if not nic_info.get('net-id'): - raise exceptions.ValidationError( - "net-id is not set in %s" % parsed_args.nics - ) + nic_info = {} + allowed_keys = { + 'net-id': 'network_id', + 'subnet-id': 'subnet_id', + 'ip-address': 'ip_address' + } + fields = parsed_args.nics.split(',') + for field in fields: + field = field.strip() + k, v = field.split('=', 1) + k = k.strip() + v = v.strip() + if k not in allowed_keys.keys(): + raise exceptions.ValidationError( + f"{k} is not allowed." + ) + if v: + nic_info[allowed_keys[k]] = v nics.append(nic_info) modules = [] |