From 43035bc12e310c337061fcee96bb35e9eb06e501 Mon Sep 17 00:00:00 2001 From: Thomas Goirand Date: Thu, 15 Feb 2024 14:36:54 +0100 Subject: [PATCH] Per daemon log name Currently, puppet-swift can only set log_name. However, it's possible with swift to have each daemon log with a different name, making it possible to have logging for each daemon in a separate file, which is often a way more convenient for operators. This patch sets a different log_name for each daemon if set to true. The default behavior is left unchanged. Change-Id: I27386f6ac00b2efcfa5fc4f5ed3b86efc49c17fc --- manifests/storage/server.pp | 55 ++++++++++++++++++ .../log_name_per_daemon-6e2b522316ab38e4.yaml | 9 +++ spec/defines/swift_storage_server_spec.rb | 58 +++++++++++++++++++ 3 files changed, 122 insertions(+) create mode 100644 releasenotes/notes/log_name_per_daemon-6e2b522316ab38e4.yaml diff --git a/manifests/storage/server.pp b/manifests/storage/server.pp index 13661c8f..af472c37 100644 --- a/manifests/storage/server.pp +++ b/manifests/storage/server.pp @@ -172,6 +172,11 @@ # (optional) Label used when logging. # Defaults to "${type}-server". # +# [*log_name_per_daemon*] +# (optional) Set log_name according differently for each daemon +# For example: container-replicator, contaier-sharder, etc. +# Defaults to false. +# # [*log_udp_host*] # (optional) If not set, the UDP receiver for syslog is disabled. # Defaults to undef. @@ -319,6 +324,7 @@ define swift::storage::server( $log_level = 'INFO', $log_address = '/dev/log', $log_name = "${type}-server", + Boolean $log_name_per_daemon = false, $log_udp_host = $facts['os_service_default'], $log_udp_port = $facts['os_service_default'], $log_requests = true, @@ -501,6 +507,20 @@ define swift::storage::server( 'account-reaper/conn_timeout' => {'value' => $reaper_conn_timeout}, 'account-reaper/node_timeout' => {'value' => $reaper_node_timeout}, } + + if $log_name_per_daemon { + $log_name_opts = { + 'account-auditor/log_name' => {'value' => 'account-auditor'}, + 'account-replicator/log_name' => {'value' => 'account-replicator'}, + 'account-reaper/log_name' => {'value' => 'account-reaper'}, + } + } else { + $log_name_opts = { + 'account-auditor/log_name' => {'ensure' => absent}, + 'account-replicator/log_name' => {'ensure' => absent}, + 'account-reaper/log_name' => {'ensure' => absent}, + } + } } 'container': { $type_opts = { @@ -528,6 +548,24 @@ define swift::storage::server( 'container-sharder/conn_timeout' => {'value' => $container_sharder_conn_timeout}, 'container-sharder/node_timeout' => {'value' => $container_sharder_node_timeout}, } + + if $log_name_per_daemon { + $log_name_opts = { + 'container-auditor/log_name' => {'value' => 'container-auditor'}, + 'container-replicator/log_name' => {'value' => 'container-replicator'}, + 'container-updater/log_name' => {'value' => 'container-updater'}, + 'container-sync/log_name' => {'value' => 'container-sync'}, + 'container-sharder/log_name' => {'value' => 'container-sharder'}, + } + } else { + $log_name_opts = { + 'container-auditor/log_name' => {'ensure' => absent}, + 'container-replicator/log_name' => {'ensure' => absent}, + 'container-updater/log_name' => {'ensure' => absent}, + 'container-sync/log_name' => {'ensure' => absent}, + 'container-sharder/log_name' => {'ensure' => absent}, + } + } } 'object': { $type_opts = { @@ -555,6 +593,22 @@ define swift::storage::server( # object-reconstructor 'object-reconstructor/' => {'ensure' => present}, } + + if $log_name_per_daemon { + $log_name_opts = { + 'object-auditor/log_name' => {'value' => 'object-auditor'}, + 'object-replicator/log_name' => {'value' => 'object-replicator'}, + 'object-updater/log_name' => {'value' => 'object-updater'}, + 'object-reconstructor/log_name' => {'value' => 'object-reconstructor'}, + } + } else { + $log_name_opts = { + 'object-auditor/log_name' => {'ensure' => absent}, + 'object-replicator/log_name' => {'ensure' => absent}, + 'object-updater/log_name' => {'ensure' => absent}, + 'object-reconstructor/log_name' => {'ensure' => absent}, + } + } } default: { # nothing to do @@ -565,6 +619,7 @@ define swift::storage::server( $common_opts, $log_statsd_opts, $type_opts, + $log_name_opts, ), { 'require' => File[$config_file_full_path] }) diff --git a/releasenotes/notes/log_name_per_daemon-6e2b522316ab38e4.yaml b/releasenotes/notes/log_name_per_daemon-6e2b522316ab38e4.yaml new file mode 100644 index 00000000..ee544d19 --- /dev/null +++ b/releasenotes/notes/log_name_per_daemon-6e2b522316ab38e4.yaml @@ -0,0 +1,9 @@ +--- +features: + - | + The new ``swift::storage::server::log_name_per_daemon`` parameter has been + added. If this parameter is set to ``true``, it configures the log_name + option differently for each daemon, which may help splitting log + destinations per daemon. For example, the object-replicator log_name will + be object-replicator, the object-updater log_name will be object-updater + and so on. diff --git a/spec/defines/swift_storage_server_spec.rb b/spec/defines/swift_storage_server_spec.rb index 335e2274..dfdf76bc 100644 --- a/spec/defines/swift_storage_server_spec.rb +++ b/spec/defines/swift_storage_server_spec.rb @@ -91,13 +91,16 @@ describe 'swift::storage::server' do is_expected.to contain_swift_account_config('DEFAULT/log_statsd_metric_prefix').with_value('') is_expected.to contain_swift_account_config('account-auditor/').with_ensure('present') + is_expected.to contain_swift_account_config('account-auditor/log_name').with_ensure('absent') is_expected.to contain_swift_account_config('account-replicator/').with_ensure('present') + is_expected.to contain_swift_account_config('account-replicator/log_name').with_ensure('absent') is_expected.to contain_swift_account_config('account-replicator/rsync_module').with_value('') is_expected.to contain_swift_account_config('account-replicator/concurrency').with_value(1) is_expected.to contain_swift_account_config('account-replicator/interval').with_value('') is_expected.to contain_swift_account_config('account-replicator/conn_timeout').with_value('') is_expected.to contain_swift_account_config('account-replicator/node_timeout').with_value('') is_expected.to contain_swift_account_config('account-reaper/').with_ensure('present') + is_expected.to contain_swift_account_config('account-reaper/log_name').with_ensure('absent') is_expected.to contain_swift_account_config('account-reaper/concurrency').with_value(1) is_expected.to contain_swift_account_config('account-reaper/interval').with_value('') is_expected.to contain_swift_account_config('account-reaper/conn_timeout').with_value('') @@ -179,6 +182,20 @@ describe 'swift::storage::server' do :read_only => false, )} end + + context 'with log_name_per_daemon' do + before do + params.merge!({ + :log_name_per_daemon => true + }) + end + + it 'configures log_name per daemon' do + is_expected.to contain_swift_account_config('account-auditor/log_name').with_value('account-auditor') + is_expected.to contain_swift_account_config('account-replicator/log_name').with_value('account-replicator') + is_expected.to contain_swift_account_config('account-reaper/log_name').with_value('account-reaper') + end + end end describe 'for type container' do @@ -249,18 +266,24 @@ describe 'swift::storage::server' do is_expected.to contain_swift_container_config('DEFAULT/allowed_sync_hosts').with_value('127.0.0.1') is_expected.to contain_swift_container_config('container-auditor/').with_ensure('present') + is_expected.to contain_swift_container_config('container-auditor/log_name').with_ensure('absent') is_expected.to contain_swift_container_config('container-replicator/').with_ensure('present') + is_expected.to contain_swift_container_config('container-replicator/log_name').with_ensure('absent') is_expected.to contain_swift_container_config('container-replicator/rsync_module').with_value('') is_expected.to contain_swift_container_config('container-replicator/concurrency').with_value(1) is_expected.to contain_swift_container_config('container-replicator/interval').with_value('') is_expected.to contain_swift_container_config('container-replicator/conn_timeout').with_value('') is_expected.to contain_swift_container_config('container-replicator/node_timeout').with_value('') is_expected.to contain_swift_container_config('container-updater/').with_ensure('present') + is_expected.to contain_swift_container_config('container-updater/log_name').with_ensure('absent') is_expected.to contain_swift_container_config('container-updater/concurrency').with_value(1) is_expected.to contain_swift_container_config('container-updater/interval').with_value('') is_expected.to contain_swift_container_config('container-updater/conn_timeout').with_value('') is_expected.to contain_swift_container_config('container-updater/node_timeout').with_value('') + is_expected.to contain_swift_container_config('container-sync/').with_ensure('present') + is_expected.to contain_swift_container_config('container-sync/log_name').with_ensure('absent') is_expected.to contain_swift_container_config('container-sharder/').with_ensure('present') + is_expected.to contain_swift_container_config('container-sharder/log_name').with_ensure('absent') is_expected.to contain_swift_container_config('container-sharder/auto_shard').with_value('') is_expected.to contain_swift_container_config('container-sharder/concurrency').with_value('') is_expected.to contain_swift_container_config('container-sharder/interval').with_value('') @@ -343,6 +366,22 @@ describe 'swift::storage::server' do :read_only => false, )} end + + context 'with log_name_per_daemon' do + before do + params.merge!({ + :log_name_per_daemon => true + }) + end + + it 'configures log_name per daemon' do + is_expected.to contain_swift_container_config('container-auditor/log_name').with_value('container-auditor') + is_expected.to contain_swift_container_config('container-replicator/log_name').with_value('container-replicator') + is_expected.to contain_swift_container_config('container-updater/log_name').with_value('container-updater') + is_expected.to contain_swift_container_config('container-sync/log_name').with_value('container-sync') + is_expected.to contain_swift_container_config('container-sharder/log_name').with_value('container-sharder') + end + end end describe 'for type object' do @@ -418,8 +457,10 @@ describe 'swift::storage::server' do is_expected.to contain_swift_object_config('app:object-server/splice').with_value('') is_expected.to contain_swift_object_config('app:object-server/mb_per_sync').with_value('') is_expected.to contain_swift_object_config('object-auditor/').with_ensure('present') + is_expected.to contain_swift_object_config('object-auditor/log_name').with_ensure('absent') is_expected.to contain_swift_object_config('object-auditor/disk_chunk_size').with_value('') is_expected.to contain_swift_object_config('object-replicator/').with_ensure('present') + is_expected.to contain_swift_object_config('object-replicator/log_name').with_ensure('absent') is_expected.to contain_swift_object_config('object-replicator/rsync_module').with_value('') is_expected.to contain_swift_object_config('object-replicator/rsync_module').with_value('') is_expected.to contain_swift_object_config('object-replicator/concurrency').with_value(1) @@ -428,11 +469,13 @@ describe 'swift::storage::server' do is_expected.to contain_swift_object_config('object-replicator/rsync_timeout').with_value('') is_expected.to contain_swift_object_config('object-replicator/rsync_bwlimit').with_value('') is_expected.to contain_swift_object_config('object-updater/').with_ensure('present') + is_expected.to contain_swift_object_config('object-updater/log_name').with_ensure('absent') is_expected.to contain_swift_object_config('object-updater/concurrency').with_value(1) is_expected.to contain_swift_object_config('object-updater/interval').with_value('') is_expected.to contain_swift_object_config('object-updater/conn_timeout').with_value('') is_expected.to contain_swift_object_config('object-updater/node_timeout').with_value('') is_expected.to contain_swift_object_config('object-reconstructor/').with_ensure('present') + is_expected.to contain_swift_object_config('object-reconstructor/log_name').with_ensure('absent') } context 'with customized pipeline' do @@ -510,6 +553,21 @@ describe 'swift::storage::server' do :read_only => false, )} end + + context 'with log_name_per_daemon' do + before do + params.merge!({ + :log_name_per_daemon => true + }) + end + + it 'configures log_name per daemon' do + is_expected.to contain_swift_object_config('object-auditor/log_name').with_value('object-auditor') + is_expected.to contain_swift_object_config('object-replicator/log_name').with_value('object-replicator') + is_expected.to contain_swift_object_config('object-updater/log_name').with_value('object-updater') + is_expected.to contain_swift_object_config('object-reconstructor/log_name').with_value('object-reconstructor') + end + end end end