Merge "Load Linux Bridge Trunk extension if service plugin configured"

This commit is contained in:
Zuul 2021-06-14 13:59:51 +00:00 committed by Gerrit Code Review
commit df147a112e
2 changed files with 17 additions and 1 deletions

View File

@ -22,6 +22,7 @@ from neutron.api.rpc.callbacks import events
from neutron.api.rpc.handlers import resources_rpc
from neutron.services.trunk.drivers.linuxbridge.agent import trunk_plumber
from neutron.services.trunk.rpc import agent as trunk_rpc
from neutron.services.trunk import utils as trunk_utils
LOG = logging.getLogger(__name__)
@ -29,7 +30,8 @@ LOG = logging.getLogger(__name__)
def init_handler(resource, event, trigger, payload=None):
"""Handler for agent init event."""
LinuxBridgeTrunkDriver()
if trunk_utils.is_trunk_service_loaded():
LinuxBridgeTrunkDriver()
@registry.has_registry_receivers

View File

@ -14,6 +14,8 @@
from neutron_lib.api import extensions
from neutron_lib.plugins import directory
from neutron_lib.utils import runtime
from oslo_config import cfg
from neutron.common import utils as common_utils
@ -53,3 +55,15 @@ def is_driver_compatible(context, driver, interface, host_agent_types):
# For an agent-based driver, both interface and agent compat is required.
return is_interface_compatible and driver.agent_type in host_agent_types
def is_trunk_service_loaded():
for service_plugins in cfg.CONF.service_plugins:
try:
klass = runtime.load_class_by_alias_or_classname(
'neutron.service_plugins', service_plugins)
if klass.__name__ == 'TrunkPlugin':
return True
except ImportError:
continue
return False