LOG = log.getLogger(__name__)
-class AgentExtensionsManager(stevedore.named.NamedExtensionManager):
- """Manage agent extensions."""
+L2_AGENT_EXT_MANAGER_NAMESPACE = 'neutron.agent.l2.extensions'
+L2_AGENT_EXT_MANAGER_OPTS = [
+ cfg.ListOpt('extensions',
+ default=[],
+ help=_('Extensions list to use')),
+]
+
- def __init__(self):
- # Ordered list of agent extensions, defining
- # the order in which the agent extensions are called.
+def register_opts(conf):
+ conf.register_opts(L2_AGENT_EXT_MANAGER_OPTS, 'agent')
- #TODO(QoS): get extensions from config
- agent_extensions = ('qos', )
- LOG.info(_LI("Configured agent extensions names: %s"),
- agent_extensions)
+class AgentExtensionsManager(stevedore.named.NamedExtensionManager):
+ """Manage agent extensions."""
+ def __init__(self, conf):
super(AgentExtensionsManager, self).__init__(
- 'neutron.agent.l2.extensions', agent_extensions,
+ L2_AGENT_EXT_MANAGER_NAMESPACE, conf.agent.extensions,
invoke_on_load=True, name_order=True)
- LOG.info(_LI("Loaded agent extensions names: %s"), self.names())
+ LOG.info(_LI("Loaded agent extensions: %s"), self.names())
- def _call_on_agent_extensions(self, method_name, context, data):
- """Helper method for calling a method across all agent extensions."""
- for extension in self:
- try:
- getattr(extension.obj, method_name)(context, data)
- # TODO(QoS) add agent extensions exception and catch them here
- except AttributeError:
- LOG.exception(
- _LE("Agent Extension '%(name)s' failed in %(method)s"),
- {'name': extension.name, 'method': method_name}
- )
-
def initialize(self):
# Initialize each agent extension in the list.
for extension in self: