9541a29761
*) Add osprofiler wsgi middleware This middleware is used for 2 things: 1) It checks that person who want to trace is trusted and knows secret HMAC key. 2) It start tracing in case of proper trace headers and add first wsgi trace point, with info about HTTP request *) Add initialization of osprofiler at start of serivce. You should use python-designateclient with this patch: https://review.opendev.org/#/c/773575 Run any command with --os-profile SECRET_KEY $ openstack zone create --email <email_id> <zone_name> \ --os-profile SECRET_KEY # it will print <Trace ID> Get pretty HTML with traces: $ osprofiler trace show --html <Trace ID> --connection-string \ <connection_string> --out <output.html> e.g. --connection-string can be redis://localhost:6379 Note that osprofiler should be run from admin user name & tenant. Implements: blueprint designate-os-profiler Change-Id: I2a3787b6428d679555a9add3a57ffe8c2112b6d3
58 lines
1.7 KiB
Python
58 lines
1.7 KiB
Python
# 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.
|
|
"""WSGI script for Designate API."""
|
|
|
|
import os
|
|
|
|
from oslo_config import cfg
|
|
from oslo_log import log as logging
|
|
from paste import deploy
|
|
|
|
from designate.common import config
|
|
from designate.common import profiler
|
|
from designate import conf
|
|
from designate import heartbeat_emitter
|
|
from designate import policy
|
|
from designate import rpc
|
|
|
|
CONF = conf.CONF
|
|
|
|
CONFIG_FILES = ['api-paste.ini', 'designate.conf']
|
|
|
|
|
|
def _get_config_files(env=None):
|
|
if env is None:
|
|
env = os.environ
|
|
dirname = env.get('OS_DESIGNATE_CONFIG_DIR', '/etc/designate').strip()
|
|
return [os.path.join(dirname, config_file) for config_file in CONFIG_FILES]
|
|
|
|
|
|
def init_application():
|
|
conf_files = _get_config_files()
|
|
logging.register_options(cfg.CONF)
|
|
cfg.CONF([], project='designate', default_config_files=conf_files)
|
|
config.set_defaults()
|
|
logging.setup(cfg.CONF, 'designate')
|
|
|
|
policy.init()
|
|
|
|
if not rpc.initialized():
|
|
rpc.init(CONF)
|
|
|
|
profiler.setup_profiler("designate-api", CONF.host)
|
|
heartbeat = heartbeat_emitter.get_heartbeat_emitter('api')
|
|
heartbeat.start()
|
|
|
|
conf = conf_files[0]
|
|
|
|
return deploy.loadapp('config:%s' % conf, name='osapi_dns')
|