Only setup dhcp interface if dhcp is not active on network
When enabling (DhcpLocalProcess.enable()) dhcp for a network the agent first sets dhcp interface, then checks if dhcp is curently active and if it's true then the agent restarts dhcp. Restart (DhcpBase.restart()) first disables dhcp and then enables it again by calling DhcpLocalProcess.enable() recursively which in turn sets dhcp interface again (it doesn't see the port created earlier as network is not re-fetched from db). This leads to duplicate dhcp interface for the network. The fix is to only setup dhcp interface if dhcp is not active. Closes-Bug: #1339968 Change-Id: I3a6d2fd5b18a97138ac5b699ecd4d4b30dbdbacb
This commit is contained in:
parent
e31861c15b
commit
d144cb8ff4
@ -198,10 +198,10 @@ class DhcpLocalProcess(DhcpBase):
|
||||
|
||||
def enable(self):
|
||||
"""Enables DHCP for this network by spawning a local process."""
|
||||
interface_name = self.device_manager.setup(self.network)
|
||||
if self.active:
|
||||
self.restart()
|
||||
elif self._enable_dhcp():
|
||||
interface_name = self.device_manager.setup(self.network)
|
||||
self.interface_name = interface_name
|
||||
self.spawn_process()
|
||||
|
||||
|
@ -583,6 +583,7 @@ class TestDhcpLocalProcess(TestBase):
|
||||
lp.enable()
|
||||
|
||||
self.assertEqual(lp.called, ['restart'])
|
||||
self.assertFalse(self.mock_mgr.return_value.setup.called)
|
||||
|
||||
def test_enable(self):
|
||||
attrs_to_mock = dict(
|
||||
|
Loading…
x
Reference in New Issue
Block a user