]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commitdiff
mark oslo.vmware as optional dependency
authorMatthew Edmonds <edmondsw@us.ibm.com>
Fri, 17 Jul 2015 20:42:35 +0000 (16:42 -0400)
committerMatthew Edmonds <edmondsw@us.ibm.com>
Mon, 10 Aug 2015 15:20:52 +0000 (15:20 +0000)
Driver-specific requirements are not hard requirements, since the
choice of drivers is up to the operator. The oslo.vmware module is
herein moved out of requirements.txt and instead listed as an optional
dependency using the extras functionality in setup.cfg.

A check is added to the vmdk driver to gracefully handle import errors
if the vmdk driver is used and oslo.vmware is not found.

Change-Id: I9b00edc38f0700304a1a164f0679a734f8701ebe
Closes-Bug: #1475739

cinder/volume/drivers/vmware/vmdk.py
requirements.txt
setup.cfg
tox.ini

index 20cdc5933a2116663805b1bf7c1c04f787bc9618..e894ef289c55a8e258a6d6e3a7510f226d8ee07b 100644 (file)
@@ -32,11 +32,16 @@ from oslo_log import log as logging
 from oslo_utils import excutils
 from oslo_utils import units
 from oslo_utils import uuidutils
-from oslo_vmware import api
-from oslo_vmware import exceptions
-from oslo_vmware import image_transfer
-from oslo_vmware import pbm
-from oslo_vmware import vim_util
+try:
+    import oslo_vmware
+except ImportError:
+    oslo_vmware = None
+else:
+    from oslo_vmware import api
+    from oslo_vmware import exceptions
+    from oslo_vmware import image_transfer
+    from oslo_vmware import pbm
+    from oslo_vmware import vim_util
 import six
 
 from cinder import exception
@@ -268,6 +273,11 @@ class VMwareEsxVmdkDriver(driver.VolumeDriver):
         :param context: Context information
         """
 
+        if oslo_vmware is None:
+            msg = _("Missing 'oslo_vmware' python module, ensure the library"
+                    " is installed and available.")
+            raise exception.VolumeDriverException(message=msg)
+
         # Throw error if required parameters are not set.
         required_params = ['vmware_host_ip',
                            'vmware_host_username',
index 8fb04cc87f598cbee36a757ff9efd86b32d2e89c..d2a2f1e32fc4d2432369db4b43f55c390e2771dc 100644 (file)
@@ -50,5 +50,4 @@ stevedore>=1.5.0 # Apache-2.0
 suds-jurko>=0.6
 WebOb>=1.2.3
 oslo.i18n>=1.5.0 # Apache-2.0
-oslo.vmware>=1.16.0 # Apache-2.0
 os-brick>=0.3.2 # Apache-2.0
index c7f7e5e26be9dbe0de3d4a50d077bc2d48b68bc5..f5190acd3d4808554df2105605a6b68ec0b8b088 100644 (file)
--- a/setup.cfg
+++ b/setup.cfg
@@ -25,6 +25,10 @@ setup-hooks =
 packages =
     cinder
 
+[extras]
+vmdk =
+  oslo.vmware>=1.16.0 # Apache-2.0
+
 [entry_points]
 cinder.scheduler.filters =
     AvailabilityZoneFilter = cinder.openstack.common.scheduler.filters.availability_zone_filter:AvailabilityZoneFilter
diff --git a/tox.ini b/tox.ini
index 6dc68978d94c64a6bd19add03313e8ca816119f0..5ee31eb48a337deae207b8e6c947ee05a76a32db 100644 (file)
--- a/tox.ini
+++ b/tox.ini
@@ -13,6 +13,7 @@ install_command = pip install {opts} {packages}
 
 deps = -r{toxinidir}/requirements.txt
        -r{toxinidir}/test-requirements.txt
+       .[vmdk]
 
 # By default ostestr will set concurrency
 # to ncpu, to specify something else use