diff options
| author | Kevin_Zheng <zhengzhenyu@huawei.com> | 2016-12-20 10:17:05 +0800 |
|---|---|---|
| committer | Zhenyu Zheng <zhengzhenyu@huawei.com> | 2016-12-22 10:01:02 +0000 |
| commit | ff18e3d0e9307fb505113b467e58bdb62992fb85 (patch) | |
| tree | c041a765f92e1c25c1e342de8cf44894b9909aa4 /openstackclient | |
| parent | 5d62981beb28f81ddd376466f296fc40b6b7eb8d (diff) | |
| download | python-openstackclient-ff18e3d0e9307fb505113b467e58bdb62992fb85.tar.gz | |
Should support 'auto' and 'none' as network parameter when boot instances
Nova added support using 'auto' and 'none' as network parameters since
microversion 2.37:
http://git.openstack.org/cgit/openstack/nova/tree/nova/api/openstack/rest_api_version_history.rst#n389
we should also add support for this in OSC.
Change-Id: I6e5f616dfa48895ebd13144effe9fda7cb94c649
Closes-bug: #1651288
Diffstat (limited to 'openstackclient')
| -rw-r--r-- | openstackclient/compute/v2/server.py | 66 |
1 files changed, 36 insertions, 30 deletions
diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py index 48d8b2d0..938c8c06 100644 --- a/openstackclient/compute/v2/server.py +++ b/openstackclient/compute/v2/server.py @@ -393,7 +393,10 @@ class CreateServer(command.ShowOne): "net-id: attach NIC to network with this UUID, " "port-id: attach NIC to port with this UUID, " "v4-fixed-ip: IPv4 fixed address for NIC (optional), " - "v6-fixed-ip: IPv6 fixed address for NIC (optional)."), + "v6-fixed-ip: IPv6 fixed address for NIC (optional), " + "none: (v2.37+) no network is attached, " + "auto: (v2.37+) the compute service will automatically " + "allocate a network."), ) parser.add_argument( '--hint', @@ -513,36 +516,39 @@ class CreateServer(command.ShowOne): block_device_mapping.update({dev_key: block_volume}) nics = [] - for nic_str in parsed_args.nic: - nic_info = {"net-id": "", "v4-fixed-ip": "", - "v6-fixed-ip": "", "port-id": ""} - nic_info.update(dict(kv_str.split("=", 1) - for kv_str in nic_str.split(","))) - if bool(nic_info["net-id"]) == bool(nic_info["port-id"]): - msg = _("either net-id or port-id should be specified " - "but not both") - raise exceptions.CommandError(msg) - if self.app.client_manager.is_network_endpoint_enabled(): - network_client = self.app.client_manager.network - if nic_info["net-id"]: - net = network_client.find_network( - nic_info["net-id"], ignore_missing=False) - nic_info["net-id"] = net.id - if nic_info["port-id"]: - port = network_client.find_port( - nic_info["port-id"], ignore_missing=False) - nic_info["port-id"] = port.id - else: - if nic_info["net-id"]: - nic_info["net-id"] = utils.find_resource( - compute_client.networks, - nic_info["net-id"] - ).id - if nic_info["port-id"]: - msg = _("can't create server with port specified " - "since network endpoint not enabled") + if parsed_args.nic in ('auto', 'none'): + nics = [parsed_args.nic] + else: + for nic_str in parsed_args.nic: + nic_info = {"net-id": "", "v4-fixed-ip": "", + "v6-fixed-ip": "", "port-id": ""} + nic_info.update(dict(kv_str.split("=", 1) + for kv_str in nic_str.split(","))) + if bool(nic_info["net-id"]) == bool(nic_info["port-id"]): + msg = _("either net-id or port-id should be specified " + "but not both") raise exceptions.CommandError(msg) - nics.append(nic_info) + if self.app.client_manager.is_network_endpoint_enabled(): + network_client = self.app.client_manager.network + if nic_info["net-id"]: + net = network_client.find_network( + nic_info["net-id"], ignore_missing=False) + nic_info["net-id"] = net.id + if nic_info["port-id"]: + port = network_client.find_port( + nic_info["port-id"], ignore_missing=False) + nic_info["port-id"] = port.id + else: + if nic_info["net-id"]: + nic_info["net-id"] = utils.find_resource( + compute_client.networks, + nic_info["net-id"] + ).id + if nic_info["port-id"]: + msg = _("can't create server with port specified " + "since network endpoint not enabled") + raise exceptions.CommandError(msg) + nics.append(nic_info) hints = {} for hint in parsed_args.hint: |
