summaryrefslogtreecommitdiff
path: root/openstackclient/compute
diff options
context:
space:
mode:
authorRitvik Vinodkumar <vinodkumar.r@northeastern.edu>2021-12-01 16:54:53 +0000
committerStephen Finucane <sfinucan@redhat.com>2021-12-14 14:55:22 +0000
commit9971d7253e9c3abd2e3940bf549ef8532ef929f9 (patch)
treea28a61a8b820e26fa2762ab0606a931f4796be71 /openstackclient/compute
parentc10a4cd96682d291dce571222de4fe5128f1c584 (diff)
downloadpython-openstackclient-9971d7253e9c3abd2e3940bf549ef8532ef929f9.tar.gz
Switch add fixed IP to SDK
Switch the add fixed IP command from novaclient to SDK. Change-Id: I4752ea7b4bfc17e04b8f46dbe9a68d938501a89e
Diffstat (limited to 'openstackclient/compute')
-rw-r--r--openstackclient/compute/v2/server.py44
1 files changed, 29 insertions, 15 deletions
diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py
index a18ce810..0931a6ca 100644
--- a/openstackclient/compute/v2/server.py
+++ b/openstackclient/compute/v2/server.py
@@ -237,30 +237,44 @@ class AddFixedIP(command.Command):
return parser
def take_action(self, parsed_args):
- compute_client = self.app.client_manager.compute
-
- server = utils.find_resource(
- compute_client.servers, parsed_args.server)
-
- network = compute_client.api.network_find(parsed_args.network)
-
- kwargs = {
- 'port_id': None,
- 'net_id': network['id'],
- 'fixed_ip': parsed_args.fixed_ip_address,
- }
+ compute_client = self.app.client_manager.sdk_connection.compute
+ server = compute_client.find_server(
+ parsed_args.server,
+ ignore_missing=False
+ )
if parsed_args.tag:
- if compute_client.api_version < api_versions.APIVersion('2.49'):
+ if not sdk_utils.supports_microversion(compute_client, '2.49'):
msg = _(
'--os-compute-api-version 2.49 or greater is required to '
'support the --tag option'
)
raise exceptions.CommandError(msg)
- kwargs['tag'] = parsed_args.tag
+ if self.app.client_manager.is_network_endpoint_enabled():
+ network_client = self.app.client_manager.network
+ net_id = network_client.find_network(
+ parsed_args.network,
+ ignore_missing=False
+ ).id
+ else:
+ net_id = parsed_args.network
+
+ if not sdk_utils.supports_microversion(compute_client, '2.44'):
+ compute_client.add_fixed_ip_to_server(
+ server.id,
+ net_id
+ )
+ return
+
+ kwargs = {
+ 'net_id': net_id,
+ 'fixed_ip': parsed_args.fixed_ip_address,
+ }
- server.interface_attach(**kwargs)
+ if parsed_args.tag:
+ kwargs['tag'] = parsed_args.tag
+ compute_client.create_server_interface(server.id, **kwargs)
class AddFloatingIP(network_common.NetworkAndComputeCommand):