From f61e19c0926372dc6e9c6c659e84a11460d65434 Mon Sep 17 00:00:00 2001 From: Miguel Caballer Date: Tue, 2 Jul 2024 15:53:56 +0200 Subject: [PATCH] implements #2027 --- libcloud/compute/drivers/openstack.py | 5 +++-- libcloud/test/compute/test_openstack.py | 12 ++++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/libcloud/compute/drivers/openstack.py b/libcloud/compute/drivers/openstack.py index f09e1d704e..7c28374790 100644 --- a/libcloud/compute/drivers/openstack.py +++ b/libcloud/compute/drivers/openstack.py @@ -4325,8 +4325,9 @@ def ex_attach_floating_ip_to_node(self, node, ip, port_id=None): return False if not port_id: ports = self.ex_get_node_ports(node) - port_id = ports[0].id - if ports: + if ports: + port_id = ports[0].id + if port_id: # Set to the first node port resp = self.network_connection.request( "/v2.0/floatingips/%s" % ip_id, diff --git a/libcloud/test/compute/test_openstack.py b/libcloud/test/compute/test_openstack.py index b4f8a36b8d..88ad045b58 100644 --- a/libcloud/test/compute/test_openstack.py +++ b/libcloud/test/compute/test_openstack.py @@ -1677,10 +1677,8 @@ def test_ex_attach_floating_ip_to_node(self): node = self.driver.create_node(name="racktest", image=image, size=size) node.id = 4242 ip = "42.42.42.42" - port_id = 'ce531f90-199f-48c0-816c-13e38010b442' self.assertTrue(self.driver.ex_attach_floating_ip_to_node(node, ip)) - self.assertTrue(self.driver.ex_attach_floating_ip_to_node(node, ip, port_id)) def test_detach_floating_ip_from_node(self): image = NodeImage(id=11, name="Ubuntu 8.10 (intrepid)", driver=self.driver) @@ -2549,6 +2547,16 @@ def test_ex_delete_floating_ip(self): ip = OpenStack_1_1_FloatingIpAddress("foo-bar-id", "42.42.42.42", None) self.assertTrue(self.driver.ex_delete_floating_ip(ip)) + def test_ex_attach_floating_ip_to_node(self): + image = NodeImage(id=11, name="Ubuntu 8.10 (intrepid)", driver=self.driver) + size = NodeSize(1, "256 slice", None, None, None, None, driver=self.driver) + node = self.driver.create_node(name="racktest", image=image, size=size) + node.id = 4242 + ip = "42.42.42.42" + port_id = 'ce531f90-199f-48c0-816c-13e38010b442' + + self.assertTrue(self.driver.ex_attach_floating_ip_to_node(node, ip, port_id)) + class OpenStack_1_1_FactoryMethodTests(OpenStack_1_1_Tests): should_list_locations = False