Use pbr wsgi_scripts to build aodh-api
Change-Id: Iefd6f4d9f76c69ed9b49483e1feda0b7dbe2cb81
This commit is contained in:
parent
942e0d8d9b
commit
67b607fdb6
@ -17,14 +17,6 @@ from oslo_config import cfg
|
|||||||
|
|
||||||
# Register options for the service
|
# Register options for the service
|
||||||
OPTS = [
|
OPTS = [
|
||||||
cfg.PortOpt('port',
|
|
||||||
default=8042,
|
|
||||||
help='The port for the aodh API server.',
|
|
||||||
),
|
|
||||||
cfg.StrOpt('host',
|
|
||||||
default='0.0.0.0',
|
|
||||||
help='The listen IP for the aodh API server.',
|
|
||||||
),
|
|
||||||
cfg.StrOpt('paste_config',
|
cfg.StrOpt('paste_config',
|
||||||
default="api_paste.ini",
|
default="api_paste.ini",
|
||||||
help="Configuration file for WSGI definition of API."),
|
help="Configuration file for WSGI definition of API."),
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#
|
#
|
||||||
# Copyright 2012 New Dream Network, LLC (DreamHost)
|
# Copyright 2012 New Dream Network, LLC (DreamHost)
|
||||||
# Copyright 2015 Red Hat, Inc.
|
# Copyright 2015-2016 Red Hat, Inc.
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
# 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
|
# not use this file except in compliance with the License. You may obtain
|
||||||
@ -20,12 +20,9 @@ from oslo_config import cfg
|
|||||||
from oslo_log import log
|
from oslo_log import log
|
||||||
from paste import deploy
|
from paste import deploy
|
||||||
import pecan
|
import pecan
|
||||||
from werkzeug import serving
|
|
||||||
|
|
||||||
from aodh.api import hooks
|
from aodh.api import hooks
|
||||||
from aodh.api import middleware
|
from aodh.api import middleware
|
||||||
from aodh.i18n import _
|
|
||||||
from aodh.i18n import _LW
|
|
||||||
from aodh import service
|
from aodh import service
|
||||||
from aodh import storage
|
from aodh import storage
|
||||||
|
|
||||||
@ -51,16 +48,9 @@ def setup_app(pecan_config=PECAN_CONFIG, conf=None):
|
|||||||
|
|
||||||
pecan.configuration.set_config(dict(pecan_config), overwrite=True)
|
pecan.configuration.set_config(dict(pecan_config), overwrite=True)
|
||||||
|
|
||||||
# NOTE(sileht): pecan debug won't work in multi-process environment
|
|
||||||
pecan_debug = conf.api.pecan_debug
|
|
||||||
if conf.api.workers != 1 and pecan_debug:
|
|
||||||
pecan_debug = False
|
|
||||||
LOG.warning(_LW('pecan_debug cannot be enabled, if workers is > 1, '
|
|
||||||
'the value is overrided with False'))
|
|
||||||
|
|
||||||
app = pecan.make_app(
|
app = pecan.make_app(
|
||||||
pecan_config['app']['root'],
|
pecan_config['app']['root'],
|
||||||
debug=pecan_debug,
|
debug=conf.api.pecan_debug,
|
||||||
hooks=app_hooks,
|
hooks=app_hooks,
|
||||||
wrap_app=middleware.ParsableErrorMiddleware,
|
wrap_app=middleware.ParsableErrorMiddleware,
|
||||||
guess_content_type_from_ext=False
|
guess_content_type_from_ext=False
|
||||||
@ -84,25 +74,8 @@ def load_app(conf):
|
|||||||
return deploy.loadapp("config:" + cfg_file)
|
return deploy.loadapp("config:" + cfg_file)
|
||||||
|
|
||||||
|
|
||||||
def build_server(conf):
|
def build_wsgi_app(argv=None):
|
||||||
app = load_app(conf)
|
return load_app(service.prepare_service(argv=argv))
|
||||||
# Create the WSGI server and start it
|
|
||||||
host, port = conf.api.host, conf.api.port
|
|
||||||
|
|
||||||
LOG.info(_('Starting server in PID %s') % os.getpid())
|
|
||||||
LOG.info(_("Configuration:"))
|
|
||||||
conf.log_opt_values(LOG, log.INFO)
|
|
||||||
|
|
||||||
if host == '0.0.0.0':
|
|
||||||
LOG.info(_(
|
|
||||||
'serving on 0.0.0.0:%(sport)s, view at http://127.0.0.1:%(vport)s')
|
|
||||||
% ({'sport': port, 'vport': port}))
|
|
||||||
else:
|
|
||||||
LOG.info(_("serving on http://%(host)s:%(port)s") % (
|
|
||||||
{'host': host, 'port': port}))
|
|
||||||
|
|
||||||
serving.run_simple(host, port,
|
|
||||||
app, processes=conf.api.workers)
|
|
||||||
|
|
||||||
|
|
||||||
def _app():
|
def _app():
|
||||||
|
@ -19,9 +19,5 @@
|
|||||||
See http://pecan.readthedocs.org/en/latest/deployment.html for details.
|
See http://pecan.readthedocs.org/en/latest/deployment.html for details.
|
||||||
"""
|
"""
|
||||||
from aodh.api import app
|
from aodh.api import app
|
||||||
from aodh import service
|
|
||||||
|
|
||||||
|
application = app.build_wsgi_app(argv=[])
|
||||||
# Initialize the oslo configuration library and logging
|
|
||||||
conf = service.prepare_service([])
|
|
||||||
application = app.load_app(conf)
|
|
||||||
|
@ -1,24 +0,0 @@
|
|||||||
# -*- encoding: utf-8 -*-
|
|
||||||
#
|
|
||||||
# Copyright 2014 OpenStack Foundation
|
|
||||||
# Copyright 2015 Red Hat, Inc.
|
|
||||||
#
|
|
||||||
# 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 aodh.api import app
|
|
||||||
from aodh import service
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
conf = service.prepare_service()
|
|
||||||
app.build_server(conf)
|
|
@ -35,25 +35,3 @@ class TestApp(base.BaseTestCase):
|
|||||||
ff.return_value = None
|
ff.return_value = None
|
||||||
self.assertRaises(cfg.ConfigFilesNotFoundError,
|
self.assertRaises(cfg.ConfigFilesNotFoundError,
|
||||||
app.load_app, self.CONF)
|
app.load_app, self.CONF)
|
||||||
|
|
||||||
@mock.patch('aodh.storage.get_connection_from_config',
|
|
||||||
mock.MagicMock())
|
|
||||||
@mock.patch('pecan.make_app')
|
|
||||||
def test_pecan_debug(self, mocked):
|
|
||||||
def _check_pecan_debug(g_debug, p_debug, expected, workers=1):
|
|
||||||
self.CONF.set_override('debug', g_debug)
|
|
||||||
if p_debug is not None:
|
|
||||||
self.CONF.set_override('pecan_debug', p_debug, group='api')
|
|
||||||
self.CONF.set_override('workers', workers, 'api')
|
|
||||||
app.setup_app(conf=self.CONF)
|
|
||||||
args, kwargs = mocked.call_args
|
|
||||||
self.assertEqual(expected, kwargs.get('debug'))
|
|
||||||
|
|
||||||
_check_pecan_debug(g_debug=False, p_debug=None, expected=False)
|
|
||||||
_check_pecan_debug(g_debug=True, p_debug=None, expected=False)
|
|
||||||
_check_pecan_debug(g_debug=True, p_debug=False, expected=False)
|
|
||||||
_check_pecan_debug(g_debug=False, p_debug=True, expected=True)
|
|
||||||
_check_pecan_debug(g_debug=True, p_debug=None, expected=False,
|
|
||||||
workers=5)
|
|
||||||
_check_pecan_debug(g_debug=False, p_debug=True, expected=False,
|
|
||||||
workers=5)
|
|
||||||
|
@ -23,7 +23,7 @@ fi
|
|||||||
|
|
||||||
if [ -z "$AODH_DEPLOY" ]; then
|
if [ -z "$AODH_DEPLOY" ]; then
|
||||||
# Default
|
# Default
|
||||||
AODH_DEPLOY=werkzeug
|
AODH_DEPLOY=simple
|
||||||
|
|
||||||
# Fallback to common wsgi devstack configuration
|
# Fallback to common wsgi devstack configuration
|
||||||
if [ "$ENABLE_HTTPD_MOD_WSGI_SERVICES" == "True" ]; then
|
if [ "$ENABLE_HTTPD_MOD_WSGI_SERVICES" == "True" ]; then
|
||||||
|
@ -23,7 +23,7 @@ AODH_SERVICE_PORT=${AODH_SERVICE_PORT:-8042}
|
|||||||
|
|
||||||
# AODH_DEPLOY defines how Aodh is deployed, allowed values:
|
# AODH_DEPLOY defines how Aodh is deployed, allowed values:
|
||||||
# - mod_wsgi : Run Aodh under Apache HTTPd mod_wsgi
|
# - mod_wsgi : Run Aodh under Apache HTTPd mod_wsgi
|
||||||
# - werkzeug : Run aodh-api
|
# - simple : Run aodh-api
|
||||||
# - uwsgi : Run Aodh under uwsgi
|
# - uwsgi : Run Aodh under uwsgi
|
||||||
# - <empty>: Fallback to AODH_USE_MOD_WSGI or ENABLE_HTTPD_MOD_WSGI_SERVICES
|
# - <empty>: Fallback to AODH_USE_MOD_WSGI or ENABLE_HTTPD_MOD_WSGI_SERVICES
|
||||||
AODH_DEPLOY=${AODH_DEPLOY}
|
AODH_DEPLOY=${AODH_DEPLOY}
|
||||||
|
@ -30,6 +30,5 @@ requests>=2.5.2
|
|||||||
six>=1.9.0
|
six>=1.9.0
|
||||||
stevedore>=1.5.0 # Apache-2.0
|
stevedore>=1.5.0 # Apache-2.0
|
||||||
tooz>=1.28.0 # Apache-2.0
|
tooz>=1.28.0 # Apache-2.0
|
||||||
Werkzeug>=0.7 # BSD License
|
|
||||||
WebOb>=1.2.3
|
WebOb>=1.2.3
|
||||||
WSME>=0.8
|
WSME>=0.8
|
||||||
|
@ -105,8 +105,10 @@ aodh.notifier =
|
|||||||
trust+https = aodh.notifier.trust:TrustRestAlarmNotifier
|
trust+https = aodh.notifier.trust:TrustRestAlarmNotifier
|
||||||
zaqar = aodh.notifier.zaqar:ZaqarAlarmNotifier
|
zaqar = aodh.notifier.zaqar:ZaqarAlarmNotifier
|
||||||
|
|
||||||
|
wsgi_scripts =
|
||||||
|
aodh-api = aodh.api.app:build_wsgi_app
|
||||||
|
|
||||||
console_scripts =
|
console_scripts =
|
||||||
aodh-api = aodh.cmd.api:main
|
|
||||||
aodh-dbsync = aodh.cmd.storage:dbsync
|
aodh-dbsync = aodh.cmd.storage:dbsync
|
||||||
aodh-expirer = aodh.cmd.storage:expirer
|
aodh-expirer = aodh.cmd.storage:expirer
|
||||||
aodh-evaluator = aodh.cmd.alarm:evaluator
|
aodh-evaluator = aodh.cmd.alarm:evaluator
|
||||||
|
Loading…
Reference in New Issue
Block a user