summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Liu <liujiong@gohighsec.com>2017-07-27 15:08:54 +0800
committerJeremy Liu <liujiong@gohighsec.com>2017-07-29 09:53:02 +0800
commit49505b9aec05ec42e0a809ec51935c2324d5f3a6 (patch)
tree77c2057d7e2dd01a7cd0ba9c6260e53eded6cab5
parentadce2c1a6070fc3c381cb3da9e9f31821fe4b52d (diff)
downloadpython-barbicanclient-49505b9aec05ec42e0a809ec51935c2324d5f3a6.tar.gz
Workaround for importing objects from old path4.5.1
Many projects are importing secrets and containers from barbicanclient, the refactor change needs to keep compatiable for this. This is workaround for that and marked as deprecation. Change-Id: Ibc9b525f1abe0a7627759e438977a6bf6b86bed6 Closes-bug: #1706841
-rw-r--r--barbicanclient/__init__.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/barbicanclient/__init__.py b/barbicanclient/__init__.py
index 58f7429..51d78ec 100644
--- a/barbicanclient/__init__.py
+++ b/barbicanclient/__init__.py
@@ -15,8 +15,54 @@
"""Barbican Client Library Binding"""
+import importlib
+import sys
+import warnings
+
import pbr.version
+from barbicanclient.v1 import acls
+from barbicanclient.v1 import cas
+from barbicanclient.v1 import containers
+from barbicanclient.v1 import orders
+from barbicanclient.v1 import secrets
+
version_info = pbr.version.VersionInfo("python-barbicanclient")
__version__ = version_info.version_string()
+
+__all__ = (
+ 'acls',
+ 'cas',
+ 'containers',
+ 'orders',
+ 'secrets',
+)
+
+
+class _LazyImporter(object):
+ def __init__(self, module):
+ self._module = module
+
+ def __getattr__(self, name):
+ # This is only called until the import has been done.
+ lazy_submodules = [
+ 'acls',
+ 'cas',
+ 'containers',
+ 'orders',
+ 'secrets',
+ ]
+ if name in lazy_submodules:
+ warnings.warn("The %s module is moved to barbicanclient/v1 "
+ "directory, direct import of barbicanclient.%s "
+ "will be deprecated. Please import "
+ "barbicanclient.v1.%s instead."
+ % (name, name, name))
+ return importlib.import_module('barbicanclient.v1.%s' % name)
+
+ # Return module attributes like __all__ etc.
+ return getattr(self._module, name)
+
+
+sys.modules[__name__] = _LazyImporter(sys.modules[__name__])