diff options
author | Jeremy Liu <liujiong@gohighsec.com> | 2017-07-27 15:08:54 +0800 |
---|---|---|
committer | Jeremy Liu <liujiong@gohighsec.com> | 2017-07-29 09:53:02 +0800 |
commit | 49505b9aec05ec42e0a809ec51935c2324d5f3a6 (patch) | |
tree | 77c2057d7e2dd01a7cd0ba9c6260e53eded6cab5 /barbicanclient | |
parent | adce2c1a6070fc3c381cb3da9e9f31821fe4b52d (diff) | |
download | python-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
Diffstat (limited to 'barbicanclient')
-rw-r--r-- | barbicanclient/__init__.py | 46 |
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__]) |