Handle optional dependency in vmware store

oslo_vmware is an optional dependency for glance_store. Hence, we
should be able to register the store options even if the library
is not installed. There are two problems addressed here :-
1. The import error was not handled.
2. One of the store opt referenced a constant from the library.

Change-Id: I234a935f33e1cf8c3d6123994447bfca2365c3bb
This commit is contained in:
Sabari Kumar Murugesan
2015-03-13 15:20:10 -07:00
parent 4fba47890d
commit f33fe43aba

View File

@@ -24,12 +24,14 @@ import socket
from oslo_config import cfg
from oslo_utils import excutils
from oslo_utils import units
from oslo_vmware import api
from oslo_vmware import constants
import oslo_vmware.exceptions as vexc
from oslo_vmware.objects import datacenter as oslo_datacenter
from oslo_vmware.objects import datastore as oslo_datastore
from oslo_vmware import vim_util
try:
from oslo_vmware import api
import oslo_vmware.exceptions as vexc
from oslo_vmware.objects import datacenter as oslo_datacenter
from oslo_vmware.objects import datastore as oslo_datastore
from oslo_vmware import vim_util
except ImportError:
api = None
import six
# NOTE(jokke): simplified transition to py3, behaves like py2 xrange
@@ -66,7 +68,7 @@ _VMWARE_OPTS = [
'VMware ESX/VC server.'),
secret=True),
cfg.StrOpt('vmware_datacenter_path',
default=constants.ESX_DATACENTER_PATH,
default='ha-datacenter',
help=_('DEPRECATED. Inventory path to a datacenter. '
'If the vmware_server_host specified is an ESX/ESXi, '
'the vmware_datacenter_path is optional. If specified, '
@@ -320,6 +322,10 @@ class Store(glance_store.Store):
self.api_retry_count = self.conf.glance_store.vmware_api_retry_count
self.tpoll_interval = self.conf.glance_store.vmware_task_poll_interval
self.api_insecure = self.conf.glance_store.vmware_api_insecure
if api is None:
msg = _("Missing dependencies: oslo_vmware")
raise exceptions.BadStoreConfiguration(
store_name="vmware_datastore", reason=msg)
self.session = self.reset_session()
super(Store, self).configure()