From 12c1944b3d4a1eb363402c0fc3244fd19a7ccb92 Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Thu, 6 Jan 2022 11:12:20 +0900 Subject: [PATCH] Support arbitrary configurations of inspector.conf This change introduces the config class for ironic-inspector so that users can inject arbitrary parameters even if these are not implemented in manifests. Change-Id: Ieaeb38e96559a2841bad63c7c6db9e7f2f433140 --- manifests/inspector/config.pp | 32 +++++++++++++++++ .../inspector-config-0ef3950b548c9542.yaml | 5 +++ spec/classes/ironic_inspector_config_spec.rb | 35 +++++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 manifests/inspector/config.pp create mode 100644 releasenotes/notes/inspector-config-0ef3950b548c9542.yaml create mode 100644 spec/classes/ironic_inspector_config_spec.rb diff --git a/manifests/inspector/config.pp b/manifests/inspector/config.pp new file mode 100644 index 00000000..73ece67c --- /dev/null +++ b/manifests/inspector/config.pp @@ -0,0 +1,32 @@ +# == Class: ironic::inspector::config +# +# This class is used to manage arbitrary Ironic-inspector configurations. +# +# === Parameters +# +# [*ironic_inspector_config*] +# (optional) Allow configuration of arbitrary Ironic-inspector configurations. +# The value is an hash of ironic_config resources. Example: +# { 'DEFAULT/foo' => { value => 'fooValue'}, +# 'DEFAULT/bar' => { value => 'barValue'} +# } +# In yaml format, Example: +# ironic_config: +# DEFAULT/foo: +# value: fooValue +# DEFAULT/bar: +# value: barValue +# +# NOTE: The configuration MUST NOT be already handled by this module +# or Puppet catalog compilation will fail with duplicate resources. +# +class ironic::inspector::config ( + $ironic_inspector_config = {}, +) { + + include ironic::deps + + validate_legacy(Hash, 'validate_hash', $ironic_inspector_config) + + create_resources('ironic_inspector_config', $ironic_inspector_config) +} diff --git a/releasenotes/notes/inspector-config-0ef3950b548c9542.yaml b/releasenotes/notes/inspector-config-0ef3950b548c9542.yaml new file mode 100644 index 00000000..c6580f24 --- /dev/null +++ b/releasenotes/notes/inspector-config-0ef3950b548c9542.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + The new ``ironic::inspector::config`` class has been added. This class + allows arbitrary configurations of ``ironic-inspector.conf``. diff --git a/spec/classes/ironic_inspector_config_spec.rb b/spec/classes/ironic_inspector_config_spec.rb new file mode 100644 index 00000000..695d41bc --- /dev/null +++ b/spec/classes/ironic_inspector_config_spec.rb @@ -0,0 +1,35 @@ +require 'spec_helper' + +describe 'ironic::inspector::config' do + let :params do + { + :ironic_inspector_config => { + 'DEFAULT/foo' => { 'value' => 'fooValue' }, + 'DEFAULT/bar' => { 'value' => 'barValue' }, + 'DEFAULT/baz' => { 'ensure' => 'absent' } + } + } + end + + shared_examples 'ironic::inspector::config' do + it { should contain_class('ironic::deps') } + + it { + should contain_ironic_inspector_config('DEFAULT/foo').with_value('fooValue') + should contain_ironic_inspector_config('DEFAULT/bar').with_value('barValue') + should contain_ironic_inspector_config('DEFAULT/baz').with_ensure('absent') + } + 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_behaves_like 'ironic::inspector::config' + end + end +end