Start metadata agent without trying to connect db

We set conf.database.connection into empty in agent,
and tell wsgi does not to connect db in this case.

Change-Id: Icb83157ef6f1157068f3d4238b946fdbb890083f
Closes-bug: #1425844
This commit is contained in:
gong yong sheng 2015-02-26 16:09:54 +08:00 committed by Armando Migliaccio
parent ffb4e40153
commit 458ff52c61
4 changed files with 24 additions and 2 deletions

View File

@ -36,5 +36,7 @@ def main():
config.init(sys.argv[1:])
config.setup_logging()
utils.log_opt_values(LOG)
# metadata agent need not connect DB
cfg.CONF.set_override("connection", "", "database")
proxy = agent.UnixDomainMetadataProxy(cfg.CONF)
proxy.run()

View File

@ -634,6 +634,8 @@ class TestUnixDomainMetadataProxy(base.BaseTestCase):
mock.call(cfg.CONF),
mock.call().run()]
)
cfg.CONF.set_override.assert_called_once_with(
"connection", "", "database")
def test_init_state_reporting(self):
with mock.patch('os.makedirs'):

View File

@ -49,6 +49,23 @@ def open_no_proxy(*args, **kwargs):
return opener.open(*args, **kwargs)
class TestWorkerService(base.BaseTestCase):
"""WorkerService tests."""
@mock.patch('neutron.db.api')
def test_start_withoutdb_call(self, apimock):
_service = mock.Mock()
_service.pool = mock.Mock()
_service.pool.spawn = mock.Mock()
_service.pool.spawn.return_value = None
_app = mock.Mock()
cfg.CONF.set_override("connection", "", "database")
workerservice = wsgi.WorkerService(_service, _app)
workerservice.start()
self.assertFalse(apimock.get_engine.called)
class TestWSGIServer(base.BaseTestCase):
"""WSGI server tests."""

View File

@ -98,9 +98,10 @@ class WorkerService(object):
def start(self):
# We may have just forked from parent process. A quick disposal of the
# existing sql connections avoids producting 500 errors later when they
# existing sql connections avoids producing 500 errors later when they
# are discovered to be broken.
api.get_engine().pool.dispose()
if CONF.database.connection:
api.get_engine().pool.dispose()
self._server = self._service.pool.spawn(self._service._run,
self._application,
self._service._socket)