Enable By Files Healthcheck Plugin

https://blueprints.launchpad.net/oslo.middleware/+spec/enable-by-files-healthcheck

A generic healthcheck plugin to verify specific file path is available.

Problem description

The filesystem backend of glance can be used to mount NFS share as local filesystem, so it does not required to store any special configs at glance side. Glance does not care about NFS server address or NFS share path at all, it just assumes that each image is stored in the local filesystem. The downside of this assumption is that glance is not aware whether NFS server is connected/available or not, NFS share is mounted or not and just keeps performing add/delete operations on local filesystem directory which later might causes problem in synchronization when NFS is back online.

Proposed change

We are planning to add new plugin enable_by_files to healthcheck wsgi middleware which can be used by all openstack components to check if desired path is not present then report 503 <REASON> error or 200 OK if everything is OK.

[app:healthcheck]
paste.app_factory = oslo_middleware:Healthcheck.app_factory
backends = enable_by_files (optional, default: empty)
# used by the 'enable_by_files' backend
enable_by_file_paths = /var/lib/glance/images,/var/lib/glance/cache (optional, default: empty)

# Use this composite for keystone auth with caching and cache management
[composite:glance-api-keystone+cachemanagement]
paste.composite_factory = glance.api:root_app_factory
/: api-keystone+cachemanagement
/healthcheck: healthcheck

The middleware will return “200 OK” if everything is OK, or “503 <REASON>” if not with the reason of why this API should not be used.

“backends” will the name of a stevedore extentions in the namespace “oslo.middleware.healthcheck”.

In addition we will also add a check to verify if both backends i.e. disable_by_file or enable_by_files are mentioned then we will raise appropriate exception which will exit the process with failure.

Alternatives

None

Impact on Existing APIs

This new healthcheck plugin is exactly opposite of existing plugin disable_by_file. So operator needs to make sure that disable_by_file plugin should not be configured along with enable_by_files plugin.

Security impact

None

Performance Impact

None

Configuration Impact

The middleware needs to be configured as shown in Proposed Change section.

Developer Impact

None

Testing Impact

Middleware will be covered by the unittest And also have a tempest test for each services that have integrated it.

Implementation

Assignee(s)

Primary assignee:

Abhishek Kekane (abhishek-kekane)

Other contributors:

None

Milestones

Target Milestone for completion:

  • Dalmatian-3

Work Items

  • Write the enable_by_files healthcheck plugin

  • Update the applications to use it

Documentation Impact

N/A

Dependencies

N/A

References

Note

This work is licensed under a Creative Commons Attribution 3.0 Unported License. http://creativecommons.org/licenses/by/3.0/legalcode