summaryrefslogtreecommitdiff
path: root/ceilometerclient/openstack/common/importutils.py
diff options
context:
space:
mode:
Diffstat (limited to 'ceilometerclient/openstack/common/importutils.py')
-rw-r--r--ceilometerclient/openstack/common/importutils.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/ceilometerclient/openstack/common/importutils.py b/ceilometerclient/openstack/common/importutils.py
index 4fd9ae2..a7972e0 100644
--- a/ceilometerclient/openstack/common/importutils.py
+++ b/ceilometerclient/openstack/common/importutils.py
@@ -24,10 +24,10 @@ import traceback
def import_class(import_str):
"""Returns a class from a string including module and class."""
mod_str, _sep, class_str = import_str.rpartition('.')
+ __import__(mod_str)
try:
- __import__(mod_str)
return getattr(sys.modules[mod_str], class_str)
- except (ValueError, AttributeError):
+ except AttributeError:
raise ImportError('Class %s cannot be found (%s)' %
(class_str,
traceback.format_exception(*sys.exc_info())))
@@ -58,6 +58,13 @@ def import_module(import_str):
return sys.modules[import_str]
+def import_versioned_module(version, submodule=None):
+ module = 'ceilometerclient.v%s' % version
+ if submodule:
+ module = '.'.join((module, submodule))
+ return import_module(module)
+
+
def try_import(import_str, default=None):
"""Try to import a module and if it fails return default."""
try: