diff options
| author | Mark McLoughlin <markmc@redhat.com> | 2013-02-25 23:14:01 +0000 |
|---|---|---|
| committer | Mark McLoughlin <markmc@redhat.com> | 2013-02-26 07:36:05 +0000 |
| commit | 82858a1eeda1618a9b2d08bbb3aae4965dd4ab70 (patch) | |
| tree | 0416704bffc5ac369019261fea3a97d4bdc6ccd6 | |
| parent | ee1e63281e98768bbfd79fc991c83a0786c25ca4 (diff) | |
| download | nova-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.py | 9 | ||||
| -rw-r--r-- | nova/tests/servicegroup/test_zk_driver.py | 2 |
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') |
