Merge "Deploy healthcheck middleware as app instead of filter"

This commit is contained in:
Zuul 2021-11-26 10:38:41 +00:00 committed by Gerrit Code Review
commit c7c62bfc40
7 changed files with 63 additions and 25 deletions

View File

@ -35,20 +35,22 @@ Healthcheck Middleware
This piece of middleware creates an endpoint that allows a load balancer
to probe if the API endpoint should be available at the node or not.
The healthcheck middleware should be placed early in the pipeline. Which
is located in your ``api-paste.ini`` under a section called
``[filter:healthcheck]``. It should look like this::
The healthcheck middleware should be deployed as a paste application
application. Which is located in your ``api-paste.ini`` under a section called
``[app:healthcheck]``. It should look like this::
[filter:healthcheck]
paste.filter_factory = oslo_middleware:Healthcheck.factory
[app:healthcheck]
paste.app_factory = oslo_middleware:Healthcheck.app_factory
backends = disable_by_file
disable_by_file_path = /etc/magnum/healthcheck_disable
The main pipeline using this filter should look something like this also
The main pipeline using this application should look something like this also
defined in the ``api-paste.ini``::
[pipeline:main]
pipeline = cors healthcheck request_id authtoken api_v1
[composite:main]
paste.composite_factory = magnum.api:root_app_factory
/: api
/healthcheck: healthcheck
If you wish to disable a middleware without taking it out of the
pipeline, you can create a file under the file path defined by

View File

@ -1,5 +1,10 @@
[pipeline:main]
pipeline = cors healthcheck http_proxy_to_wsgi request_id osprofiler authtoken api_v1
[composite:main]
paste.composite_factory = magnum.api:root_app_factory
/: api
/healthcheck: healthcheck
[pipeline:api]
pipeline = cors http_proxy_to_wsgi request_id osprofiler authtoken api_v1
[app:api_v1]
paste.app_factory = magnum.api.app:app_factory
@ -18,8 +23,8 @@ paste.filter_factory = oslo_middleware:RequestId.factory
paste.filter_factory = oslo_middleware.cors:filter_factory
oslo_config_project = magnum
[filter:healthcheck]
paste.filter_factory = oslo_middleware:Healthcheck.factory
[app:healthcheck]
paste.app_factory = oslo_middleware:Healthcheck.app_factory
backends = disable_by_file
disable_by_file_path = /etc/magnum/healthcheck_disable

View File

@ -0,0 +1,16 @@
# 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 paste.urlmap
def root_app_factory(loader, global_conf, **local_conf):
return paste.urlmap.urlmap_factory(loader, global_conf, **local_conf)

View File

@ -1,5 +1,10 @@
[pipeline:main]
pipeline = cors healthcheck request_id authtoken api_v1
[composite:main]
paste.composite_factory = magnum.api:root_app_factory
/: api
/healthcheck: healthcheck
[pipeline:api]
pipeline = cors request_id authtoken api_v1
[app:api_v1]
paste.app_factory = magnum.api.app:app_factory
@ -14,7 +19,7 @@ paste.filter_factory = oslo_middleware:RequestId.factory
paste.filter_factory = oslo_middleware.cors:filter_factory
oslo_config_project = magnum
[filter:healthcheck]
paste.filter_factory = oslo_middleware:Healthcheck.factory
[app:healthcheck]
paste.app_factory = oslo_middleware:Healthcheck.app_factory
backends = disable_by_file
disable_by_file_path = /tmp/magnum_healthcheck_disable

View File

@ -1,5 +1,10 @@
[pipeline:main]
pipeline = cors healthcheck request_id authtoken api_v1
[composite:main]
paste.composite_factory = magnum.api:root_app_factory
/: api
/healthcheck: healthcheck
[pipeline:api]
pipeline = cors request_id authtoken api_v1
[app:api_v1]
paste.app_factory = magnum.api.app:app_factory
@ -15,7 +20,7 @@ paste.filter_factory = oslo_middleware:RequestId.factory
paste.filter_factory = oslo_middleware.cors:filter_factory
oslo_config_project = magnum
[filter:healthcheck]
paste.filter_factory = oslo_middleware:Healthcheck.factory
[app:healthcheck]
paste.app_factory = oslo_middleware:Healthcheck.app_factory
backends = disable_by_file
disable_by_file_path = /tmp/magnum_healthcheck_disable

View File

@ -1,5 +1,10 @@
[pipeline:main]
pipeline = cors healthcheck request_id authtoken api_v1
[composite:main]
paste.composite_factory = magnum.api:root_app_factory
/: api
/healthcheck: healthcheck
[pipeline:api]
pipeline = cors request_id authtoken api_v1
[app:api_v1]
paste.app_factory = magnum.api.app:app_factory
@ -15,7 +20,7 @@ paste.filter_factory = oslo_middleware:RequestId.factory
paste.filter_factory = oslo_middleware.cors:filter_factory
oslo_config_project = magnum
[filter:healthcheck]
paste.filter_factory = oslo_middleware:Healthcheck.factory
[app:healthcheck]
paste.app_factory = oslo_middleware:Healthcheck.app_factory
backends = disable_by_file
disable_by_file_path = /tmp/magnum_healthcheck_disable

View File

@ -195,7 +195,7 @@ class TestHeathcheck(api_base.FunctionalTest):
# Read current file and create new one
config = ConfigParser.RawConfigParser()
config.read(self.get_path(paste_ini))
config.set('filter:healthcheck',
config.set('app:healthcheck',
'disable_by_file_path',
self.tempdir + "/disable")
with open(self.tempdir + "/paste.ini", 'wt') as configfile: