Give client plugins the chance to not register
This change improves the client plugin registration process by giving each plugin a is_available() class method that can prevent the plugin's registration when there are missing dependencies. Change-Id: Ief965d033f02f795d5be9beccae5e4b0b96d10b1 Closes-Bug: #1462555
This commit is contained in:
parent
dc32f99a68
commit
d3fee2141c
@ -15,7 +15,7 @@ from oslo_config import cfg
|
|||||||
from oslo_log import log as logging
|
from oslo_log import log as logging
|
||||||
from oslo_utils import importutils
|
from oslo_utils import importutils
|
||||||
import six
|
import six
|
||||||
from stevedore import extension
|
from stevedore import enabled
|
||||||
|
|
||||||
from heat.common import exception
|
from heat.common import exception
|
||||||
from heat.common.i18n import _LE
|
from heat.common.i18n import _LE
|
||||||
@ -111,8 +111,17 @@ def initialise():
|
|||||||
if _mgr:
|
if _mgr:
|
||||||
return
|
return
|
||||||
|
|
||||||
_mgr = extension.ExtensionManager(
|
def client_is_available(client_plugin):
|
||||||
|
if not hasattr(client_plugin.plugin, 'is_available'):
|
||||||
|
# if the client does not have a is_available() class method, then
|
||||||
|
# we assume it wants to be always available
|
||||||
|
return True
|
||||||
|
# let the client plugin decide if it wants to register or not
|
||||||
|
return client_plugin.plugin.is_available()
|
||||||
|
|
||||||
|
_mgr = enabled.EnabledExtensionManager(
|
||||||
namespace='heat.clients',
|
namespace='heat.clients',
|
||||||
|
check_func=client_is_available,
|
||||||
invoke_on_load=False)
|
invoke_on_load=False)
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user