From 6ab4dfe25db01c1cf90a0062fb3fd2c453331c67 Mon Sep 17 00:00:00 2001 From: Takashi Kajinami <tkajinam@redhat.com> Date: Fri, 17 Sep 2021 19:35:04 +0900 Subject: [PATCH] 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 --- manifests/inspector/healthcheck.pp | 50 ++++++++++++++++ ...nspector-healthcheck-519748f8566b5dbe.yaml | 4 ++ .../ironic_inspector_healthcheck_spec.rb | 60 +++++++++++++++++++ 3 files changed, 114 insertions(+) create mode 100644 manifests/inspector/healthcheck.pp create mode 100644 releasenotes/notes/inspector-healthcheck-519748f8566b5dbe.yaml create mode 100644 spec/classes/ironic_inspector_healthcheck_spec.rb diff --git a/manifests/inspector/healthcheck.pp b/manifests/inspector/healthcheck.pp new file mode 100644 index 00000000..abf20e05 --- /dev/null +++ b/manifests/inspector/healthcheck.pp @@ -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, + } +} diff --git a/releasenotes/notes/inspector-healthcheck-519748f8566b5dbe.yaml b/releasenotes/notes/inspector-healthcheck-519748f8566b5dbe.yaml new file mode 100644 index 00000000..0f29ff1b --- /dev/null +++ b/releasenotes/notes/inspector-healthcheck-519748f8566b5dbe.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + The new ``ironic::inspector::healthcheck`` class has been added. diff --git a/spec/classes/ironic_inspector_healthcheck_spec.rb b/spec/classes/ironic_inspector_healthcheck_spec.rb new file mode 100644 index 00000000..033a5f74 --- /dev/null +++ b/spec/classes/ironic_inspector_healthcheck_spec.rb @@ -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