Skip DHCP provisioning block for network ports
Network ports created via internal core plugin calls (e.g. dhcp ports and router interfaces) don't generate DHCP notifications to the DHCP agent so the agent never clears the DHCP provisioning block. This patch just skips adding DHCP provisioning blocks for network owned ports since they don't depend on DHCP anyway. Closes-Bug: #1590845 Closes-Bug: #1605955 Change-Id: I0111de79d9259ada3b1c06a087d0eaeb8f3cb158
This commit is contained in:
parent
38e4070267
commit
2325e2aea8
neutron
@ -1097,6 +1097,11 @@ class Ml2Plugin(db_base_plugin_v2.NeutronDbPluginV2,
|
||||
raise psec.PortSecurityAndIPRequiredForSecurityGroups()
|
||||
|
||||
def _setup_dhcp_agent_provisioning_component(self, context, port):
|
||||
# NOTE(kevinbenton): skipping network ports is a workaround for
|
||||
# the fact that we don't issue dhcp notifications from internal
|
||||
# port creation like router ports and dhcp ports via RPC
|
||||
if utils.is_port_trusted(port):
|
||||
return
|
||||
subnet_ids = [f['subnet_id'] for f in port['fixed_ips']]
|
||||
if (db.is_dhcp_active_on_any_subnet(context, subnet_ids) and
|
||||
any(self.get_configuration_dict(a).get('notifies_port_ready')
|
||||
|
@ -595,6 +595,13 @@ class TestMl2PortsV2(test_plugin.TestPortsV2, Ml2PluginV2TestCase):
|
||||
with self.port():
|
||||
self.assertTrue(ap.called)
|
||||
|
||||
def test_dhcp_provisioning_blocks_skipped_with_network_port(self):
|
||||
self._add_fake_dhcp_agent()
|
||||
with mock.patch.object(provisioning_blocks,
|
||||
'add_provisioning_component') as ap:
|
||||
with self.port(device_owner=constants.DEVICE_OWNER_DHCP):
|
||||
self.assertFalse(ap.called)
|
||||
|
||||
def test_dhcp_provisioning_blocks_skipped_on_create_with_no_dhcp(self):
|
||||
self._add_fake_dhcp_agent()
|
||||
with self.subnet(enable_dhcp=False) as subnet:
|
||||
|
Loading…
x
Reference in New Issue
Block a user