inspector: Add support for healthcheck middleware

This change introduces support for parameters of the healthcheck
middleware, which was introduced recently to ironic-inspector.

Depends-on: https://review.opendev.org/808567
Change-Id: If77a1a6b60268379a5e87165aa6c93c6c4d40770
This commit is contained in:
Takashi Kajinami
2021-09-17 19:35:04 +09:00
parent 84504f3103
commit 6ab4dfe25d
3 changed files with 114 additions and 0 deletions

View File

@@ -0,0 +1,50 @@
# == Class: ironic::inspector::healthcheck
#
# Configure oslo_middleware options in healthcheck section
#
# == Params
#
# [*enabled*]
# (Optional) Enable the healthcheck endpoint at /healthcheck.
# Defaults to $::os_service_default
#
# [*detailed*]
# (Optional) Show more detailed information as part of the response.
# Defaults to $::os_service_default
#
# [*backends*]
# (Optional) Additional backends that can perform health checks and report
# that information back as part of a request.
# Defaults to $::os_service_default
#
# [*disable_by_file_path*]
# (Optional) Check the presense of a file to determine if an application
# is running on a port.
# Defaults to $::os_service_default
#
# [*disable_by_file_paths*]
# (Optional) Check the presense of a file to determine if an application
# is running on a port. Expects a "port:path" list of strings.
# Defaults to $::os_service_default
#
class ironic::inspector::healthcheck (
$enabled = $::os_service_default,
$detailed = $::os_service_default,
$backends = $::os_service_default,
$disable_by_file_path = $::os_service_default,
$disable_by_file_paths = $::os_service_default,
) {
include ironic::deps
ironic_inspector_config {
'healthcheck/enabled': value => $enabled;
}
oslo::healthcheck { 'ironic_inspector_config':
detailed => $detailed,
backends => $backends,
disable_by_file_path => $disable_by_file_path,
disable_by_file_paths => $disable_by_file_paths,
}
}

View File

@@ -0,0 +1,4 @@
---
features:
- |
The new ``ironic::inspector::healthcheck`` class has been added.

View File

@@ -0,0 +1,60 @@
require 'spec_helper'
describe 'ironic::inspector::healthcheck' do
shared_examples_for 'ironic::inspector::healthcheck' do
context 'with default parameters' do
let :params do
{}
end
it 'configures default values' do
is_expected.to contain_ironic_inspector_config('healthcheck/enabled').with_value('<SERVICE DEFAULT>')
is_expected.to contain_oslo__healthcheck('ironic_inspector_config').with(
:detailed => '<SERVICE DEFAULT>',
:backends => '<SERVICE DEFAULT>',
:disable_by_file_path => '<SERVICE DEFAULT>',
:disable_by_file_paths => '<SERVICE DEFAULT>',
)
end
end
context 'with specific parameters' do
let :params do
{
:enabled => true,
:detailed => true,
:backends => ['disable_by_file'],
:disable_by_file_path => '/etc/ironic-inspector/healthcheck/disabled',
:disable_by_file_paths => ['5050:/etc/ironic-inspector/healthcheck/disabled'],
}
end
it 'configures specified values' do
is_expected.to contain_ironic_inspector_config('healthcheck/enabled').with_value(true)
is_expected.to contain_oslo__healthcheck('ironic_inspector_config').with(
:detailed => true,
:backends => ['disable_by_file'],
:disable_by_file_path => '/etc/ironic-inspector/healthcheck/disabled',
:disable_by_file_paths => ['5050:/etc/ironic-inspector/healthcheck/disabled'],
)
end
end
end
on_supported_os({
:supported_os => OSDefaults.get_supported_os
}).each do |os,facts|
context "on #{os}" do
let (:facts) do
facts.merge!(OSDefaults.get_facts())
end
it_configures 'ironic::inspector::healthcheck'
end
end
end