Merge "Ensure 'port' is up2date after binding:host_id"

This commit is contained in:
Zuul 2022-01-11 19:39:29 +00:00 committed by Gerrit Code Review
commit fc4702439a
3 changed files with 13 additions and 1 deletions

View File

@ -345,7 +345,8 @@ def add_ports_to_network(task, network_uuid, security_groups=None):
wait_for_host_agent( wait_for_host_agent(
client, update_port_attrs['binding:host_id']) client, update_port_attrs['binding:host_id'])
port = client.create_port(**port_attrs) port = client.create_port(**port_attrs)
update_neutron_port(task.context, port.id, update_port_attrs) port = update_neutron_port(task.context, port.id,
update_port_attrs)
if CONF.neutron.dhcpv6_stateful_address_count > 1: if CONF.neutron.dhcpv6_stateful_address_count > 1:
_add_ip_addresses_for_ipv6_stateful(task.context, port, client) _add_ip_addresses_for_ipv6_stateful(task.context, port, client)
if is_smart_nic: if is_smart_nic:

View File

@ -290,11 +290,13 @@ class TestNeutronNetworkActions(db_base.DbTestCase):
fixed_ips=[]) fixed_ips=[])
self.client_mock.create_port.side_effect = [self.neutron_port, self.client_mock.create_port.side_effect = [self.neutron_port,
neutron_port2] neutron_port2]
update_mock.side_effect = [self.neutron_port, neutron_port2]
expected = {port.uuid: self.neutron_port.id, expected = {port.uuid: self.neutron_port.id,
port2.uuid: neutron_port2.id} port2.uuid: neutron_port2.id}
else: else:
self.client_mock.create_port.return_value = self.neutron_port self.client_mock.create_port.return_value = self.neutron_port
update_mock.return_value = self.neutron_port
expected = {port.uuid: self.neutron_port['id']} expected = {port.uuid: self.neutron_port['id']}
with task_manager.acquire(self.context, self.node.uuid) as task: with task_manager.acquire(self.context, self.node.uuid) as task:
@ -458,6 +460,7 @@ class TestNeutronNetworkActions(db_base.DbTestCase):
vpi_mock.return_value = True vpi_mock.return_value = True
# Ensure we can create ports # Ensure we can create ports
self.client_mock.create_port.return_value = self.neutron_port self.client_mock.create_port.return_value = self.neutron_port
update_mock.return_value = self.neutron_port
expected = {port.uuid: self.neutron_port.id} expected = {port.uuid: self.neutron_port.id}
with task_manager.acquire(self.context, self.node.uuid) as task: with task_manager.acquire(self.context, self.node.uuid) as task:
ports = neutron.add_ports_to_network(task, self.network_uuid) ports = neutron.add_ports_to_network(task, self.network_uuid)
@ -492,6 +495,7 @@ class TestNeutronNetworkActions(db_base.DbTestCase):
) )
self.client_mock.create_port.side_effect = [ self.client_mock.create_port.side_effect = [
self.neutron_port, openstack_exc.OpenStackCloudException] self.neutron_port, openstack_exc.OpenStackCloudException]
update_mock.return_value = self.neutron_port
with task_manager.acquire(self.context, self.node.uuid) as task: with task_manager.acquire(self.context, self.node.uuid) as task:
neutron.add_ports_to_network(task, self.network_uuid) neutron.add_ports_to_network(task, self.network_uuid)
self.assertIn("Could not create neutron port for node's", self.assertIn("Could not create neutron port for node's",
@ -999,6 +1003,7 @@ class TestNeutronNetworkActions(db_base.DbTestCase):
# Ensure we can create ports # Ensure we can create ports
self.client_mock.create_port.return_value = self.neutron_port self.client_mock.create_port.return_value = self.neutron_port
update_mock.return_value = self.neutron_port
expected = {port.uuid: self.neutron_port.id} expected = {port.uuid: self.neutron_port.id}
with task_manager.acquire(self.context, self.node.uuid) as task: with task_manager.acquire(self.context, self.node.uuid) as task:
ports = neutron.add_ports_to_network(task, self.network_uuid) ports = neutron.add_ports_to_network(task, self.network_uuid)

View File

@ -0,0 +1,6 @@
---
fixes:
- |
Fixed an issue where provisioning/cleaning would fail on IPv6 routed provider
networks. See bug:
`2009773 <https://storyboard.openstack.org/#!/story/2009773>`_.