aboutsummaryrefslogtreecommitdiffstats
path: root/keystone-moon/keystone/common/manager.py
diff options
context:
space:
mode:
Diffstat (limited to 'keystone-moon/keystone/common/manager.py')
-rw-r--r--keystone-moon/keystone/common/manager.py32
1 files changed, 32 insertions, 0 deletions
diff --git a/keystone-moon/keystone/common/manager.py b/keystone-moon/keystone/common/manager.py
index 7150fbf3..f98a1763 100644
--- a/keystone-moon/keystone/common/manager.py
+++ b/keystone-moon/keystone/common/manager.py
@@ -104,3 +104,35 @@ class Manager(object):
f = getattr(self.driver, name)
setattr(self, name, f)
return f
+
+
+def create_legacy_driver(driver_class):
+ """Helper function to deprecate the original driver classes.
+
+ The keystone.{subsystem}.Driver classes are deprecated in favor of the
+ new versioned classes. This function creates a new class based on a
+ versioned class and adds a deprecation message when it is used.
+
+ This will allow existing custom drivers to work when the Driver class is
+ renamed to include a version.
+
+ Example usage:
+
+ Driver = create_legacy_driver(CatalogDriverV8)
+
+ """
+
+ module_name = driver_class.__module__
+ class_name = driver_class.__name__
+
+ class Driver(driver_class):
+
+ @versionutils.deprecated(
+ as_of=versionutils.deprecated.LIBERTY,
+ what='%s.Driver' % module_name,
+ in_favor_of='%s.%s' % (module_name, class_name),
+ remove_in=+2)
+ def __init__(self, *args, **kwargs):
+ super(Driver, self).__init__(*args, **kwargs)
+
+ return Driver