Make OVS and LinuxBridge trunk drivers' is_loaded() property more robust

If ML2 is not in use, CONF.ml2.mechanism_drivers is not a registered
option and thus loading these drivers leads to a NoSuchOptError error.
This patch ensures that the exception is handled and the loading state
of the OVS and Linuxbridge driver is set to False.

Partial-implements: blueprint vlan-aware-vms

Change-Id: I0a6994b9248e878e314661f235ceadb7ce9bbbff
This commit is contained in:
Armando Migliaccio 2016-08-24 15:40:00 -07:00
parent 94fc633124
commit ab6942eb3a
4 changed files with 15 additions and 2 deletions

View File

@ -35,7 +35,10 @@ class LinuxBridgeDriver(base.DriverBase):
@property
def is_loaded(self):
return NAME in cfg.CONF.ml2.mechanism_drivers
try:
return NAME in cfg.CONF.ml2.mechanism_drivers
except cfg.NoSuchOptError:
return False
@classmethod
def create(cls):

View File

@ -44,7 +44,10 @@ class OVSDriver(base.DriverBase):
@property
def is_loaded(self):
return NAME in cfg.CONF.ml2.mechanism_drivers
try:
return NAME in cfg.CONF.ml2.mechanism_drivers
except cfg.NoSuchOptError:
return False
@classmethod
def create(cls):

View File

@ -27,6 +27,8 @@ class LinuxBridgeDriverTestCase(base.BaseTestCase):
cfg.CONF.set_override('mechanism_drivers',
['a', 'b'], group='ml2')
self.assertFalse(inst.is_loaded)
cfg.CONF.set_override('core_plugin', 'my_foo_plugin')
self.assertFalse(inst.is_loaded)
def test_driver_properties(self):
inst = driver.LinuxBridgeDriver.create()

View File

@ -46,6 +46,11 @@ class OVSDriverTestCase(base.BaseTestCase):
ovs_driver = driver.OVSDriver.create()
self.assertTrue(ovs_driver.is_loaded)
def test_driver_is_not_loaded(self):
cfg.CONF.set_override('core_plugin', 'my_foo_plugin')
ovs_driver = driver.OVSDriver.create()
self.assertFalse(ovs_driver.is_loaded)
@mock.patch('neutron.services.trunk.utils.gen_trunk_br_name')
def test_vif_details_bridge_name_handler_registration(self,
mock_gen_br_name):