diff --git a/neutron/plugins/ml2/driver_api.py b/neutron/plugins/ml2/driver_api.py index d66c3dc59f1..85722984964 100644 --- a/neutron/plugins/ml2/driver_api.py +++ b/neutron/plugins/ml2/driver_api.py @@ -654,6 +654,16 @@ class ExtensionDriver(object): """ pass + @property + def extension_aliases(self): + """List of extension aliases supported by the driver. + + Return a list of aliases identifying the core API extensions + supported by the driver. By default this just returns the + extension_alias property for backwards compatibility. + """ + return [self.extension_alias] + def process_create_network(self, plugin_context, data, result): """Process extended attributes for create network. diff --git a/neutron/plugins/ml2/managers.py b/neutron/plugins/ml2/managers.py index d4930e37abf..e968c9967ab 100644 --- a/neutron/plugins/ml2/managers.py +++ b/neutron/plugins/ml2/managers.py @@ -902,8 +902,10 @@ class ExtensionManager(stevedore.named.NamedExtensionManager): def extension_aliases(self): exts = [] for driver in self.ordered_ext_drivers: - alias = driver.obj.extension_alias - if alias: + aliases = driver.obj.extension_aliases + for alias in aliases: + if not alias: + continue exts.append(alias) LOG.info(_LI("Got %(alias)s extension from driver '%(drv)s'"), {'alias': alias, 'drv': driver.name})