Files
oslo.middleware/oslo_middleware/healthcheck/pluginbase.py
Jamie Lennox 96c918b86a Allow healthcheck to be configured by oslo.config
It is standard practice in oslo.middleware to allow configuration via
both the paste file and the oslo.config file. Projects such as keystone
don't allow shipping default configuration in the paste.ini files.

Use the configuration methods provided by the existing base middleware
to allow configuing via oslo.config and register the sample options
available for the middleware.

Closes-Bug: #1634329
Change-Id: I33b7b1f9d945280265eb3b712cb85a2d66616c17
2016-11-02 09:50:39 +11:00

50 lines
1.5 KiB
Python

# Copyright 2011 OpenStack Foundation.
# All Rights Reserved.
#
# 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 abc
import six
class HealthcheckResult(object):
"""Result of a ``healthcheck`` method call should be this object."""
def __init__(self, available, reason, details=None):
self.available = available
self.reason = reason
self.details = details
@six.add_metaclass(abc.ABCMeta)
class HealthcheckBaseExtension(object):
def __init__(self, oslo_conf, conf):
self.oslo_conf = oslo_conf
self.conf = conf
@abc.abstractmethod
def healthcheck(self, server_port):
"""method called by the healthcheck middleware
return: HealthcheckResult object
"""
def _conf_get(self, key, group='healthcheck'):
if key in self.conf:
# Validate value type
self.oslo_conf.set_override(key, self.conf[key], group=group,
enforce_type=True)
return getattr(getattr(self.oslo_conf, group), key)