From 5e260055faada3849340e4cd31227e6244c3af06 Mon Sep 17 00:00:00 2001 From: Matthew Treinish Date: Mon, 24 Apr 2017 16:32:02 -0400 Subject: [PATCH] Add pbr wsgi script entrypoint to glance This commit adds a pbr entrypoint for the wsgi script file. This enables deploying glance as a proper wsgi application instead of a standalone service. Change-Id: I089a22a4be4227a551c32442dba27c426f54c87d --- glance/common/wsgi_app.py | 55 +++++++++++++++++++++++++++++++++++++++ setup.cfg | 2 ++ 2 files changed, 57 insertions(+) create mode 100644 glance/common/wsgi_app.py diff --git a/glance/common/wsgi_app.py b/glance/common/wsgi_app.py new file mode 100644 index 0000000000..7b621c5102 --- /dev/null +++ b/glance/common/wsgi_app.py @@ -0,0 +1,55 @@ +# 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. + +import os + +import glance_store +from oslo_config import cfg +from oslo_log import log as logging +import osprofiler.initializer + +from glance.common import config +from glance import notifier + +CONF = cfg.CONF +CONF.import_group("profiler", "glance.common.wsgi") +logging.register_options(CONF) + +CONFIG_FILES = ['glance-api-paste.ini', 'glance-api.conf'] + + +def _get_config_files(env=None): + if env is None: + env = os.environ + dirname = env.get('OS_GLANCE_CONFIG_DIR', '/etc/glance').strip() + return [os.path.join(dirname, config_file) for config_file in CONFIG_FILES] + + +def _setup_os_profiler(): + notifier.set_defaults() + if CONF.profiler.enabled: + osprofiler.initializer.init_from_conf(conf=CONF, + context={}, + project='glance', + service='api', + host=CONF.bind_host) + + +def init_app(): + config_files = _get_config_files() + CONF([], project='glance', default_config_files=config_files) + logging.setup(CONF, "glance") + glance_store.register_opts(CONF) + glance_store.create_stores(CONF) + glance_store.verify_default_store() + _setup_os_profiler() + return config.load_paste_app('glance-api') diff --git a/setup.cfg b/setup.cfg index c8d6605ba1..dab829f0f7 100644 --- a/setup.cfg +++ b/setup.cfg @@ -34,6 +34,8 @@ console_scripts = glance-registry = glance.cmd.registry:main glance-replicator = glance.cmd.replicator:main glance-scrubber = glance.cmd.scrubber:main +wsgi_scripts = + glance-wsgi-api = glance.common.wsgi_app:init_app glance.common.image_location_strategy.modules = location_order_strategy = glance.common.location_strategy.location_order store_type_strategy = glance.common.location_strategy.store_type