9004239b9f
Add support for doing language resolution for a request, based on the Accept-Language HTTP header. Using the lazy gettext functionality, from oslo gettextutils, it is possible to use the resolved language to translate exception messages to the user requested language and return that translation from the API. The patch removes individually imported _() so they don't replace the one installed service-wide. Also, it adds the ability to fully re-create a remote error with the same kwargs with which it was originally created, so that we can translate it and show it to the user. Partially implements bp user-locale-api. Change-Id: I63edc8463836bfff257daa8a2c66ed5d3a444254
69 lines
2.3 KiB
Python
Executable File
69 lines
2.3 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# vim: tabstop=4 shiftwidth=4 softtabstop=4
|
|
#
|
|
# 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.
|
|
|
|
"""
|
|
Heat API Server. This implements an approximation of the Amazon
|
|
CloudWatch API and translates it into a native representation. It then
|
|
calls the heat-engine via AMQP RPC to implement them.
|
|
"""
|
|
|
|
import eventlet
|
|
eventlet.monkey_patch(os=False)
|
|
|
|
import os
|
|
import sys
|
|
|
|
# If ../heat/__init__.py exists, add ../ to Python search path, so that
|
|
# it will override what happens to be installed in /usr/(local/)lib/python...
|
|
possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]),
|
|
os.pardir,
|
|
os.pardir))
|
|
if os.path.exists(os.path.join(possible_topdir, 'heat', '__init__.py')):
|
|
sys.path.insert(0, possible_topdir)
|
|
|
|
from heat.openstack.common import gettextutils
|
|
|
|
gettextutils.install('heat', lazy=True)
|
|
|
|
from oslo.config import cfg
|
|
|
|
from heat.common import config
|
|
from heat.common import wsgi
|
|
|
|
from heat.openstack.common import log as logging
|
|
|
|
LOG = logging.getLogger('heat.api.cloudwatch')
|
|
|
|
if __name__ == '__main__':
|
|
try:
|
|
cfg.CONF(project='heat', prog='heat-api-cloudwatch')
|
|
cfg.CONF.default_log_levels = ['amqplib=WARN',
|
|
'qpid.messaging=INFO',
|
|
'keystone=INFO',
|
|
'eventlet.wsgi.server=WARN',
|
|
]
|
|
logging.setup('heat')
|
|
|
|
app = config.load_paste_app()
|
|
|
|
port = cfg.CONF.bind_port
|
|
host = cfg.CONF.bind_host
|
|
LOG.info('Starting Heat CloudWatch API on %s:%s' % (host, port))
|
|
server = wsgi.Server()
|
|
server.start(app, cfg.CONF, default_port=port)
|
|
server.wait()
|
|
except RuntimeError, e:
|
|
sys.exit("ERROR: %s" % e)
|