From d4ee7d41986eac99440fc32a040081c7c0252aad Mon Sep 17 00:00:00 2001 From: Ewoud Kohl van Wijngaarden Date: Mon, 10 Jan 2022 14:25:37 +0100 Subject: [PATCH] Introduce foreman::settings_fragment This provides a stable API to provide fragments to settings.yaml. This means we don't need to create parameters for every single setting. --- manifests/config.pp | 6 ++--- manifests/config/apache.pp | 3 +-- manifests/settings_fragment.pp | 20 ++++++++++++++++ .../defines/foreman_settings_fragment_spec.rb | 23 +++++++++++++++++++ 4 files changed, 46 insertions(+), 6 deletions(-) create mode 100644 manifests/settings_fragment.pp create mode 100644 spec/defines/foreman_settings_fragment_spec.rb diff --git a/manifests/config.pp b/manifests/config.pp index 4f8c9043a..bdf3bd15c 100644 --- a/manifests/config.pp +++ b/manifests/config.pp @@ -24,8 +24,7 @@ $websockets_ssl_cert = pick($foreman::websockets_ssl_cert, $foreman::server_ssl_cert) $websockets_ssl_key = pick($foreman::websockets_ssl_key, $foreman::server_ssl_key) - concat::fragment {'foreman_settings+01-header.yaml': - target => '/etc/foreman/settings.yaml', + foreman::settings_fragment { 'header.yaml': content => template('foreman/settings.yaml.erb'), order => '01', } @@ -214,8 +213,7 @@ } } - concat::fragment {'foreman_settings+02-authorize_login_delegation.yaml': - target => '/etc/foreman/settings.yaml', + foreman::settings_fragment { 'authorize_login_delegation.yaml': content => template('foreman/settings-external-auth.yaml.erb'), order => '02', } diff --git a/manifests/config/apache.pp b/manifests/config/apache.pp index ee8fae024..6761a569b 100644 --- a/manifests/config/apache.pp +++ b/manifests/config/apache.pp @@ -154,8 +154,7 @@ } # This sets the headers matching what $vhost_https_internal_options sets - concat::fragment { 'foreman_settings+03-reverse-proxy-headers.yaml': - target => '/etc/foreman/settings.yaml', + foreman::settings_fragment { 'reverse-proxy-headers.yaml': content => file('foreman/settings-reverse-proxy-headers.yaml'), order => '03', } diff --git a/manifests/settings_fragment.pp b/manifests/settings_fragment.pp new file mode 100644 index 000000000..fc09a9dc4 --- /dev/null +++ b/manifests/settings_fragment.pp @@ -0,0 +1,20 @@ +# @summary Add a fragment to settings.yaml +# +# This is a thin wrapper around concat::fragment to provide a stable API. +# +# @param content +# The content to store +# @param order +# The order of the fragment +# +# @see concat::fragment +define foreman::settings_fragment ( + Variant[String[1], Deferred] $content, + String[2, 2] $order, +) { + concat::fragment { "foreman_settings+${order}-${name}": + target => '/etc/foreman/settings.yaml', + content => $content, + order => $order, + } +} diff --git a/spec/defines/foreman_settings_fragment_spec.rb b/spec/defines/foreman_settings_fragment_spec.rb new file mode 100644 index 000000000..2769aac7b --- /dev/null +++ b/spec/defines/foreman_settings_fragment_spec.rb @@ -0,0 +1,23 @@ +require 'spec_helper' + +describe 'foreman::settings_fragment' do + let(:title) { 'myfragment' } + + context 'with string' do + let(:params) do + { + content: 'mycontent', + order: '42', + } + end + + it { is_expected.to compile.with_all_deps } + + it do + is_expected.to contain_concat__fragment('foreman_settings+42-myfragment') + .with_target('/etc/foreman/settings.yaml') + .with_content('mycontent') + .with_order('42') + end + end +end