diff options
-rw-r--r-- | openstack/common/importutils.py | 8 | ||||
-rw-r--r-- | openstack/common/service.py | 4 | ||||
-rw-r--r-- | tests/unit/test_importutils.py | 8 | ||||
-rw-r--r-- | tools/pip-requires | 1 |
4 files changed, 18 insertions, 3 deletions
diff --git a/openstack/common/importutils.py b/openstack/common/importutils.py index 2a28b45..9dec764 100644 --- a/openstack/common/importutils.py +++ b/openstack/common/importutils.py @@ -57,3 +57,11 @@ def import_module(import_str): """Import a module.""" __import__(import_str) return sys.modules[import_str] + + +def try_import(import_str, default=None): + """Try to import a module and if it fails return default.""" + try: + return import_module(import_str) + except ImportError: + return default diff --git a/openstack/common/service.py b/openstack/common/service.py index 740378f..6b180aa 100644 --- a/openstack/common/service.py +++ b/openstack/common/service.py @@ -27,17 +27,17 @@ import sys import time import eventlet -import extras import logging as std_logging from openstack.common import cfg from openstack.common import eventlet_backdoor from openstack.common.gettextutils import _ +from openstack.common import importutils from openstack.common import log as logging from openstack.common import threadgroup -rpc = extras.try_import('openstack.common.rpc') +rpc = importutils.try_import('openstack.common.rpc') CONF = cfg.CONF LOG = logging.getLogger(__name__) diff --git a/tests/unit/test_importutils.py b/tests/unit/test_importutils.py index 4c9ff73..3544fe4 100644 --- a/tests/unit/test_importutils.py +++ b/tests/unit/test_importutils.py @@ -109,3 +109,11 @@ class ImportUtilsTest(unittest.TestCase): dt = importutils.import_object('datetime.datetime', 2012, 4, 5) self.assertTrue(isinstance(dt, sys.modules['datetime'].datetime)) self.assertEqual(dt, datetime.datetime(2012, 4, 5)) + + def test_try_import(self): + dt = importutils.try_import('datetime') + self.assertEqual(sys.modules['datetime'], dt) + + def test_try_import_returns_default(self): + foo = importutils.try_import('foo.bar') + self.assertEqual(None, foo) diff --git a/tools/pip-requires b/tools/pip-requires index 2d1b94e..002f989 100644 --- a/tools/pip-requires +++ b/tools/pip-requires @@ -1,7 +1,6 @@ PasteDeploy==1.5.0 WebOb==1.2.3 eventlet -extras greenlet>=0.3.1 lxml routes==1.12.3 |