From 5c8f5b12db33d8f29332a6bbd2c56f7b9960ff2c Mon Sep 17 00:00:00 2001 From: chengyang Date: Fri, 1 Dec 2017 23:50:01 +0800 Subject: [PATCH] Use global variable to define etcd driver instance Use global variable to define etcd driver instance to avoid import etcd_api and create etcd client every times api call Change-Id: Iddd73cf53e85fc78d0b3d9ed8c97a4798c984336 --- zun/db/api.py | 8 ++++++-- zun/tests/unit/db/test_zun_service.py | 4 ++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/zun/db/api.py b/zun/db/api.py index 31d8e08ee..da6867929 100644 --- a/zun/db/api.py +++ b/zun/db/api.py @@ -29,6 +29,7 @@ _BACKEND_MAPPING = {'sqlalchemy': 'zun.db.sqlalchemy.api'} IMPL = db_api.DBAPI.from_config(CONF, backend_mapping=_BACKEND_MAPPING, lazy=True) +_etcd_instance = None @profiler.trace("db") @@ -37,8 +38,11 @@ def _get_dbdriver_instance(): if CONF.db_type == 'sql': return IMPL elif CONF.db_type == 'etcd': - import zun.db.etcd.api as etcd_api - return etcd_api.get_connection() + global _etcd_instance + if _etcd_instance is None: + import zun.db.etcd.api as etcd_api + _etcd_instance = etcd_api.get_connection() + return _etcd_instance else: raise exception.ConfigInvalid( _("db_type value of %s is invalid, " diff --git a/zun/tests/unit/db/test_zun_service.py b/zun/tests/unit/db/test_zun_service.py index 99137dd7e..8fd6abcca 100644 --- a/zun/tests/unit/db/test_zun_service.py +++ b/zun/tests/unit/db/test_zun_service.py @@ -29,6 +29,10 @@ from zun.tests.unit.db.utils import FakeEtcdResult class DbZunServiceTestCase(base.DbTestCase): + def setUp(self): + cfg.CONF.set_override('db_type', 'sql') + super(DbZunServiceTestCase, self).setUp() + def test_create_zun_service(self): utils.create_test_zun_service()