summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--openstack/common/importutils.py8
-rw-r--r--openstack/common/service.py4
-rw-r--r--tests/unit/test_importutils.py8
-rw-r--r--tools/pip-requires1
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