diff options
Diffstat (limited to 'keystone-moon/keystone/common/manager.py')
-rw-r--r-- | keystone-moon/keystone/common/manager.py | 32 |
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 |