]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commitdiff
Create proxy volume driver
authorMarc Koderer <marc@koderer.com>
Wed, 10 Dec 2014 06:29:25 +0000 (07:29 +0100)
committerMarc Koderer <marc@koderer.com>
Fri, 2 Jan 2015 08:04:52 +0000 (09:04 +0100)
Drivers that need a special proxy logic can't inherit from BaseVD
directly. This is problematic for the ABCmeta feature since the class
model can't be accessed easily with isinstance().

Change-Id: I553a72991bb450e8581a757fb98a264ed1ba8fb2
Partly-Implements: blueprint abc-volume-drivers

cinder/volume/driver.py
cinder/volume/drivers/netapp/common.py

index 0c949a053cd4a6da6b13066f5d3914d565c9d8e6..826dcc44c109e078998b1a990d0ac06df21e0e10 100644 (file)
@@ -869,6 +869,19 @@ class VolumeDriver(object):
         return None
 
 
+class ProxyVD(object):
+    """Proxy Volume Driver to mark proxy drivers
+
+        If a driver uses a proxy class (e.g. by using __setattr__ and
+        __getattr__) without directly inheriting from base volume driver this
+        class can help marking them and retrieve the actual used driver object.
+    """
+    def _get_driver(self):
+        """Returns the actual driver object. Can be overloaded by the proxy.
+        """
+        return getattr(self, "driver", None)
+
+
 class ISCSIDriver(VolumeDriver):
     """Executes commands relating to ISCSI volumes.
 
index 5fa387c771ec8b55259732ca3062de9ed1d7438f..8efa8f2e4b59d1398f149b969261c5b867d8fc28 100644 (file)
@@ -23,6 +23,7 @@ from oslo.utils import importutils
 from cinder import exception
 from cinder.i18n import _, _LI
 from cinder.openstack.common import log as logging
+from cinder.volume import driver
 from cinder.volume.drivers.netapp.options import netapp_proxy_opts
 from cinder.volume.drivers.netapp import utils as na_utils
 
@@ -52,7 +53,7 @@ NETAPP_UNIFIED_DRIVER_REGISTRY = {
     }}
 
 
-class NetAppDriver(object):
+class NetAppDriver(driver.ProxyVD):
     """"NetApp unified block storage driver.
 
        Acts as a factory to create NetApp storage drivers based on the