f3b655acdf
In order to support changes in the api-paste.ini file for the keystone middleware of the neutron-api service by subordinates we need a generic mechanism to pass wsgi middleware data via a relation. The following approach is used in this change: - relation data set by subordinates: {'extra_middleware': [{ 'type': 'middleware_type', 'name': 'middleware_name', 'config': { 'setting_1': 'value_1', 'setting_2': 'value_2'}}]} - there may be many subordinates each with their own set of middleware all of which should be taken into account - besides a factory method for middleware other settings can be specified, therefore, a generic config dictionary is used - neutron-server has to be restarted as api-paste.ini is read upon startup of the service - api-paste.ini rendering code is added along with a template code containing loops over a list of middleware provided in a context to construct the following entries: keystone = [name-1 ... name-m] <default_middleware> [type-1:name-1] key-1 = value-1 ... key-n = value-n ... [type-m:name-m] key-1 = value-1 ... key-k = value-k - api-paste.ini defaults are copied from their respective upstream neutron branches Change-Id: I9449aa2e85b1523f24acdcee11ca1f635dda47c0
53 lines
1.6 KiB
INI
53 lines
1.6 KiB
INI
[composite:neutron]
|
|
use = egg:Paste#urlmap
|
|
/: neutronversions_composite
|
|
/v2.0: neutronapi_v2_0
|
|
|
|
[composite:neutronapi_v2_0]
|
|
use = call:neutron.auth:pipeline_factory
|
|
noauth = cors http_proxy_to_wsgi request_id catch_errors extensions neutronapiapp_v2_0
|
|
keystone = {% for m in extra_middleware %}{{ m.name }} {% endfor %}cors http_proxy_to_wsgi request_id catch_errors authtoken keystonecontext extensions neutronapiapp_v2_0
|
|
|
|
{% for m in extra_middleware -%}
|
|
[{{ m.type }}:{{ m.name }}]
|
|
{% for k, v in m.config.iteritems() -%}
|
|
{{ k }} = {{ v }}
|
|
{% endfor %}
|
|
{% endfor -%}
|
|
|
|
[composite:neutronversions_composite]
|
|
use = call:neutron.auth:pipeline_factory
|
|
noauth = cors http_proxy_to_wsgi neutronversions
|
|
keystone = cors http_proxy_to_wsgi neutronversions
|
|
|
|
[filter:request_id]
|
|
paste.filter_factory = oslo_middleware:RequestId.factory
|
|
|
|
[filter:catch_errors]
|
|
paste.filter_factory = oslo_middleware:CatchErrors.factory
|
|
|
|
[filter:cors]
|
|
paste.filter_factory = oslo_middleware.cors:filter_factory
|
|
oslo_config_project = neutron
|
|
|
|
[filter:http_proxy_to_wsgi]
|
|
paste.filter_factory = oslo_middleware.http_proxy_to_wsgi:HTTPProxyToWSGI.factory
|
|
|
|
[filter:keystonecontext]
|
|
paste.filter_factory = neutron.auth:NeutronKeystoneContext.factory
|
|
|
|
[filter:authtoken]
|
|
paste.filter_factory = keystonemiddleware.auth_token:filter_factory
|
|
|
|
[filter:extensions]
|
|
paste.filter_factory = neutron.api.extensions:plugin_aware_extension_middleware_factory
|
|
|
|
[app:neutronversions]
|
|
paste.app_factory = neutron.api.versions:Versions.factory
|
|
|
|
[app:neutronapiapp_v2_0]
|
|
paste.app_factory = neutron.api.v2.router:APIRouter.factory
|
|
|
|
[filter:osprofiler]
|
|
paste.filter_factory = osprofiler.web:WsgiMiddleware.factory
|