heat/bin/heat-api-cfn
Luis A. Garcia 9004239b9f Enable localizable REST API responses via the Accept-Language header
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
2013-08-03 00:19:17 +00:00

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
CloudFormation 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.cfn')
if __name__ == '__main__':
try:
cfg.CONF(project='heat', prog='heat-api-cfn')
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 API on %s:%s' % (host, port))
server = wsgi.Server()
server.start(app, cfg.CONF, default_port=port)
server.wait()
except RuntimeError as e:
sys.exit("ERROR: %s" % e)