16bfc82962
One of the goals for Pike [1] is to make each API service be able to run under web servers that support WSGI applications, such as Apache (+mod-wsgi) and Nginx (+uWSGI). Do following to address governance requirements: - Split existing manila/wsgi.py module into 3 modules: First (manila/wsgi/eventlet_server.py) is used by eventlet-based WSGI application approach. Second (manila/wsgi/wsgi.py) is used for WSGI web servers. And third (manila/wsgi/common.py) is common code for both. All three are made in cinder-like way to have alike-approach. - Reuse common code from "oslo_service/wsgi.py" module that allows us to remove code duplication. - Delete config opts that are defined by newly reused common code. - Register new entry point that will be manila wsgi app: "manila-wsgi". - Fix "manila/api/openstack/wsgi.py" module to be compatible with str/bytes handling approach used by Apache mod-wsgi plugin using different python versions (2/3). - Add web server config template "devstack/apache-manila.template" - Add devstack support where usage of this feature can be enabled or disabled using "MANILA_USE_MOD_WSGI" env var. It is set to "True" by default, because it is requirement for Pike release - to have it running in all CI jobs. Disable it only for one CI job that uses dummy driver and tests various manila core features that are not covered by other CI jobs. [1] https://governance.openstack.org/tc/goals/pike/deploy-api-in-wsgi.html Partially-Implements BluePrint wsgi-web-servers-support DocImpact Change-Id: Ibdef3c6810b65a5d6f3611e2d0079c635ee523ab
40 lines
1.1 KiB
Python
40 lines
1.1 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.
|
|
|
|
"""Manila OS API WSGI application."""
|
|
|
|
|
|
import sys
|
|
|
|
from oslo_config import cfg
|
|
from oslo_log import log
|
|
from oslo_service import wsgi
|
|
|
|
from manila import i18n
|
|
i18n.enable_lazy()
|
|
|
|
# Need to register global_opts
|
|
from manila.common import config
|
|
from manila import rpc
|
|
from manila import version
|
|
|
|
CONF = cfg.CONF
|
|
|
|
|
|
def initialize_application():
|
|
log.register_options(CONF)
|
|
CONF(sys.argv[1:], project="manila", version=version.version_string())
|
|
config.verify_share_protocols()
|
|
log.setup(CONF, "manila")
|
|
rpc.init(CONF)
|
|
return wsgi.Loader(CONF).load_app(name='osapi_share')
|