AdminUtils: Skip unsupported resources
Some admin util resources depends on external libreries that are not always installed. This patch will skip those, so the rest of the resources can be used. Change-Id: I860f054fdadfe9ced93c3ba77f9b5d82b07da9fa
This commit is contained in:
parent
b336b8cc03
commit
a71b3859ad
@ -291,10 +291,34 @@ cli_opts = [cfg.StrOpt('fmt',
|
||||
]
|
||||
|
||||
|
||||
# Describe dependencies between admin utils resources and external libraries
|
||||
# that are not always installed
|
||||
resources_dependencies = {
|
||||
'nsxv': {'gw_edges': ['neutron_dynamic_routing.extensions']}}
|
||||
|
||||
|
||||
def verify_external_dependencies(plugin_name, resource):
|
||||
if plugin_name in resources_dependencies:
|
||||
deps = resources_dependencies[plugin_name]
|
||||
if resource in deps:
|
||||
for d in deps[resource]:
|
||||
try:
|
||||
importlib.import_module(d)
|
||||
except ImportError:
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def init_resource_plugin(plugin_name, plugin_dir):
|
||||
plugin_resources = get_resources(plugin_dir)
|
||||
for resource in plugin_resources:
|
||||
if (resource != '__init__'):
|
||||
# skip unsupported resources
|
||||
if not verify_external_dependencies(plugin_name, resource):
|
||||
LOG.info("Skipping resource %s because of dependencies",
|
||||
resource)
|
||||
continue
|
||||
# load the resource
|
||||
importlib.import_module(
|
||||
"vmware_nsx.shell.admin.plugins."
|
||||
"{}.resources.".format(plugin_name) + resource)
|
||||
|
Loading…
x
Reference in New Issue
Block a user