"""Disable DHCP for this network by killing the local process."""
pid = self.pid
- if self.active:
- cmd = ['kill', '-9', pid]
- utils.execute(cmd, self.root_helper)
+ if pid:
+ if self.active:
+ cmd = ['kill', '-9', pid]
+ utils.execute(cmd, self.root_helper)
+ else:
+ LOG.debug(_('DHCP for %(net_id)s is stale, pid %(pid)d '
+ 'does not exist, performing cleanup'),
+ {'net_id': self.network.id, 'pid': pid})
if not retain_port:
- self.device_manager.destroy(self.network, self.interface_name)
-
- elif pid:
- LOG.debug(_('DHCP for %(net_id)s pid %(pid)d is stale, ignoring '
- 'command'), {'net_id': self.network.id, 'pid': pid})
+ self.device_manager.destroy(self.network,
+ self.interface_name)
else:
LOG.debug(_('No DHCP started for %s'), self.network.id)
mocks['pid'].__get__ = mock.Mock(return_value=5)
mocks['interface_name'].__get__ = mock.Mock(return_value='tap0')
with mock.patch.object(dhcp.LOG, 'debug') as log:
- lp = LocalChild(self.conf, FakeDualNetwork())
+ network = FakeDualNetwork()
+ lp = LocalChild(self.conf, network)
+ lp.device_manager = mock.Mock()
lp.disable()
msg = log.call_args[0][0]
- self.assertIn('stale', msg)
+ self.assertIn('does not exist', msg)
+ lp.device_manager.destroy.assert_called_once_with(
+ network, 'tap0')
def test_disable_unknown_network(self):
attrs_to_mock = dict([(a, mock.DEFAULT) for a in