From 2d2239f596f59199ac10b3263bdbe2a5207bfe0e Mon Sep 17 00:00:00 2001 From: Takashi Kajinami Date: Tue, 26 Aug 2025 11:42:23 +0900 Subject: [PATCH] Add support for [collector] options Change-Id: I3a706c997e7590d8fa843262ee1155d53d131310 Signed-off-by: Takashi Kajinami --- manifests/collector.pp | 31 +++++++++++++ .../notes/collector-8c7882fca3595152.yaml | 4 ++ spec/classes/watcher_collector_spec.rb | 46 +++++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 manifests/collector.pp create mode 100644 releasenotes/notes/collector-8c7882fca3595152.yaml create mode 100644 spec/classes/watcher_collector_spec.rb diff --git a/manifests/collector.pp b/manifests/collector.pp new file mode 100644 index 0000000..4f6ea3e --- /dev/null +++ b/manifests/collector.pp @@ -0,0 +1,31 @@ +# == Class: watcher::collector +# +# Configure the collector options +# +# === Parameters +# +# [*collector_plugins*] +# (Optional) The cluster data model plugin names +# Defaults to $facts['os_service_default'] +# +# [*api_query_retries*] +# (Optional) Number of retries before giving up on external service queries. +# Defaults to $facts['os_service_default'] +# +# [*api_query_interval*] +# (Optional) How many seconds Watcher should wait to do query again. +# Defaults to $facts['os_service_default'] +# +class watcher::collector ( + $collector_plugins = $facts['os_service_default'], + $api_query_retries = $facts['os_service_default'], + $api_query_interval = $facts['os_service_default'], +) { + include watcher::deps + + watcher_config { + 'collector/collector_plugins': value => join(any2array($collector_plugins), ','); + 'collector/api_query_retries': value => $api_query_retries; + 'collector/api_query_interval': value => $api_query_interval; + } +} diff --git a/releasenotes/notes/collector-8c7882fca3595152.yaml b/releasenotes/notes/collector-8c7882fca3595152.yaml new file mode 100644 index 0000000..f2e4683 --- /dev/null +++ b/releasenotes/notes/collector-8c7882fca3595152.yaml @@ -0,0 +1,4 @@ +--- +features: + - | + The new ``watcher::collector`` class has been added. diff --git a/spec/classes/watcher_collector_spec.rb b/spec/classes/watcher_collector_spec.rb new file mode 100644 index 0000000..3ab43af --- /dev/null +++ b/spec/classes/watcher_collector_spec.rb @@ -0,0 +1,46 @@ +require 'spec_helper' + +describe 'watcher::collector' do + + shared_examples 'watcher::collector' do + context 'with defaults' do + let :params do + {} + end + + it 'should set the defaults' do + should contain_watcher_config('collector/collector_plugins').with_value('') + should contain_watcher_config('collector/api_query_retries').with_value('') + should contain_watcher_config('collector/api_query_interval').with_value('') + end + end + + context 'with parameters overridden' do + let :params do + { + :collector_plugins => ['compute', 'storage'], + :api_query_retries => 10, + :api_query_interval => 1, + } + end + + it 'should set the overridden values' do + should contain_watcher_config('collector/collector_plugins').with_value('compute,storage') + should contain_watcher_config('collector/api_query_retries').with_value(10) + should contain_watcher_config('collector/api_query_interval').with_value(1) + 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_behaves_like 'watcher::collector' + end + end + +end