Fix config loading when running the Tuskar API

This regression was caused in d0a5513e7f
as the rpc service integration code has a side effect of loading the
configuration file.

Unfortunately this issue wasn't picked up during that initial cleanup as
the API entrypoint doesn't have test coverage.

Change-Id: I50cef8855828ca51957572ddf48a4761859876b4
Closes-bug: #1357525
This commit is contained in:
Dougal Matthews 2014-08-18 10:38:51 +01:00
parent dd5466f49e
commit 70ea806f9f
3 changed files with 46 additions and 7 deletions

View File

@ -19,21 +19,26 @@
import logging
import os
import sys
from wsgiref import simple_server
from oslo.config import cfg
from tuskar.api import app
from tuskar.common import config
from tuskar.openstack.common import log
CONF = cfg.CONF
def main(argv=None):
def main():
if argv is None:
argv = sys.argv
config.parse_args(argv)
# Build and start the WSGI app
host = CONF.tuskar_api_bind_ip
port = CONF.tuskar_api_port
host = cfg.CONF.tuskar_api_bind_ip
port = cfg.CONF.tuskar_api_port
wsgi = simple_server.make_server(
host, port,
app.VersionSelectorApplication())
@ -41,9 +46,9 @@ def main():
LOG = log.getLogger(__name__)
LOG.info("Serving on http://%s:%s" % (host, port))
LOG.info("Configuration:")
CONF.log_opt_values(LOG, logging.INFO)
cfg.CONF.log_opt_values(LOG, logging.INFO)
# make sure we have tripleo-heat-templates:
heat_template_path = CONF.tht_local_dir
heat_template_path = cfg.CONF.tht_local_dir
try:
os.listdir(heat_template_path)
except OSError:
@ -53,7 +58,6 @@ def main():
LOG.info(
"Cannot proceed - missing tripleo heat templates "
"See INSTALL documentation for more info")
raise
LOG.info("Using tripleo-heat-templates at %s" % (heat_template_path))
try:

View File

View File

@ -0,0 +1,35 @@
#!/usr/bin/env python
#
# Copyright 2013 Hewlett-Packard Development Company, L.P.
# All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from mock import ANY
from mock import patch
from tuskar.cmd.api import main
from tuskar.tests.base import TestCase
class ApiCommandTests(TestCase):
@patch('wsgiref.simple_server.make_server')
def test_start(self, mock_make_server):
try:
main(['test.py', '--config-file', 'etc/tuskar/tuskar.conf.sample'])
except BaseException as e:
raise Exception(e)
mock_make_server.assert_called_once_with('0.0.0.0', 8585, ANY)