summaryrefslogtreecommitdiffstats
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
parentee1e63281e98768bbfd79fc991c83a0786c25ca4 (diff)
downloadnova-82858a1eeda1618a9b2d08bbb3aae4965dd4ab70.tar.gz
nova-82858a1eeda1618a9b2d08bbb3aae4965dd4ab70.tar.xz
nova-82858a1eeda1618a9b2d08bbb3aae4965dd4ab70.zip
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
-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')