Merge "Handle deletion of tap device from bridge"

This commit is contained in:
Jenkins
2016-07-29 20:57:31 +00:00
committed by Gerrit Code Review
2 changed files with 27 additions and 2 deletions

View File

@@ -269,6 +269,24 @@ class TestVifLBDriver(test.TestCase):
run_as_root=True)
mock_exec.assert_has_calls([call_ip, call_delif])
# Test unplug for the case where tap device
# was not configured with the bridge.
mock_exec.reset_mock()
t1.reset_mock()
mock_cna.reset_mock()
mock_exec.side_effect = [None,
exception.NovaException('Command error')]
# Call the unplug
self.drv.unplug(vif)
# The trunks and the cna should have been deleted
self.assertTrue(t1.delete.called)
self.assertTrue(mock_cna.delete.called)
# Validate the execute
mock_exec.assert_has_calls([call_ip, call_delif])
class TestVifOvsDriver(test.TestCase):

View File

@@ -411,8 +411,15 @@ class PvmLBVifDriver(PvmLioVifDriver):
dev_name = self.get_trunk_dev_name(vif)
utils.execute('ip', 'link', 'set', dev_name, 'down', run_as_root=True)
utils.execute('brctl', 'delif', vif['network']['bridge'],
dev_name, run_as_root=True)
try:
utils.execute('brctl', 'delif', vif['network']['bridge'],
dev_name, run_as_root=True)
except Exception as e:
LOG.warning(_LW('Unable to delete device %(dev_name)s from bridge '
'%(bridge)s. Error: %(error)s'),
{'dev_name': dev_name,
'bridge': vif['network']['bridge'],
'error': e.message})
for trunk in trunks:
trunk.delete()