summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorMark McLoughlin <markmc@redhat.com>2013-02-25 23:14:01 +0000
committerMark McLoughlin <markmc@redhat.com>2013-02-26 07:36:05 +0000
commit82858a1eeda1618a9b2d08bbb3aae4965dd4ab70 (patch)
tree0416704bffc5ac369019261fea3a97d4bdc6ccd6 /nova
parentee1e63281e98768bbfd79fc991c83a0786c25ca4 (diff)
Allow zk driver be imported without zookeeper
The zookeeper python module isn't widely available (e.g. not available on Fedora), so allow the zk servicegroup driver be imported even if the module isn't found. This helps allow the generate_sample.sh script generate a sample config file even without zookeeper installed. Change-Id: Ic3b3bb75bcd2003150909ebd2c5724fa5093c346
Diffstat (limited to 'nova')
-rw-r--r--nova/servicegroup/drivers/zk.py9
-rw-r--r--nova/tests/servicegroup/test_zk_driver.py2
2 files changed, 7 insertions, 4 deletions
diff --git a/nova/servicegroup/drivers/zk.py b/nova/servicegroup/drivers/zk.py
index b3c2ba965..24963b7fb 100644
--- a/nova/servicegroup/drivers/zk.py
+++ b/nova/servicegroup/drivers/zk.py
@@ -19,16 +19,17 @@
import os
import eventlet
-import evzookeeper
-from evzookeeper import membership
from oslo.config import cfg
-import zookeeper
from nova import exception
+from nova.openstack.common import importutils
from nova.openstack.common import log as logging
from nova.servicegroup import api
from nova import utils
+evzookeeper = importutils.try_import('evzookeeper')
+membership = importutils.try_import('evzookeeper.membersip')
+zookeeper = importutils.try_import('zookeeper')
zk_driver_opts = [
cfg.StrOpt('address',
@@ -58,6 +59,8 @@ class ZooKeeperDriver(api.ServiceGroupDriver):
def __init__(self, *args, **kwargs):
"""Create the zk session object."""
+ if not all([evzookeeper, membership, zookeeper]):
+ raise ImportError('zookeeper module not found')
null = open(os.devnull, "w")
self._session = evzookeeper.ZKSession(CONF.zookeeper.address,
recv_timeout=
diff --git a/nova/tests/servicegroup/test_zk_driver.py b/nova/tests/servicegroup/test_zk_driver.py
index 7330da66a..a33b4b0cd 100644
--- a/nova/tests/servicegroup/test_zk_driver.py
+++ b/nova/tests/servicegroup/test_zk_driver.py
@@ -38,7 +38,7 @@ class ZKServiceGroupTestCase(test.TestCase):
servicegroup.API._driver = None
try:
from nova.servicegroup.drivers import zk
- _unused = zk
+ _unused = zk.ZooKeeperDriver()
except ImportError:
self.skipTest("Unable to test due to lack of ZooKeeper")
self.flags(servicegroup_driver='zk')