Allow extension driver to provide multiple aliases

This allows extensions to supercede older extensions
if they provide all of the same functionality plus more.
This is used by the DNS domain port extension driver.

Change-Id: I3e91669a83e9e16039f4063bf54b511cec94cecc
Partial-bug: #1650678
This commit is contained in:
Kevin Benton 2017-08-08 10:57:37 -07:00 committed by Kevin Benton
parent 5d5ebd0bd9
commit 37d33b2fcd
2 changed files with 14 additions and 2 deletions

View File

@ -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.

View File

@ -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})