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
This commit is contained in:
Thomas Goirand 2024-02-15 14:36:54 +01:00 committed by Takashi Kajinami
parent 7a6179dad9
commit 43035bc12e
3 changed files with 122 additions and 0 deletions

View File

@ -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]
})

View File

@ -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.

View File

@ -91,13 +91,16 @@ describe 'swift::storage::server' do
is_expected.to contain_swift_account_config('DEFAULT/log_statsd_metric_prefix').with_value('<SERVICE DEFAULT>')
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('<SERVICE DEFAULT>')
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('<SERVICE DEFAULT>')
is_expected.to contain_swift_account_config('account-replicator/conn_timeout').with_value('<SERVICE DEFAULT>')
is_expected.to contain_swift_account_config('account-replicator/node_timeout').with_value('<SERVICE DEFAULT>')
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('<SERVICE DEFAULT>')
is_expected.to contain_swift_account_config('account-reaper/conn_timeout').with_value('<SERVICE DEFAULT>')
@ -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('<SERVICE DEFAULT>')
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('<SERVICE DEFAULT>')
is_expected.to contain_swift_container_config('container-replicator/conn_timeout').with_value('<SERVICE DEFAULT>')
is_expected.to contain_swift_container_config('container-replicator/node_timeout').with_value('<SERVICE DEFAULT>')
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('<SERVICE DEFAULT>')
is_expected.to contain_swift_container_config('container-updater/conn_timeout').with_value('<SERVICE DEFAULT>')
is_expected.to contain_swift_container_config('container-updater/node_timeout').with_value('<SERVICE DEFAULT>')
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('<SERVICE DEFAULT>')
is_expected.to contain_swift_container_config('container-sharder/concurrency').with_value('<SERVICE DEFAULT>')
is_expected.to contain_swift_container_config('container-sharder/interval').with_value('<SERVICE DEFAULT>')
@ -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('<SERVICE DEFAULT>')
is_expected.to contain_swift_object_config('app:object-server/mb_per_sync').with_value('<SERVICE DEFAULT>')
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('<SERVICE DEFAULT>')
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('<SERVICE DEFAULT>')
is_expected.to contain_swift_object_config('object-replicator/rsync_module').with_value('<SERVICE DEFAULT>')
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('<SERVICE DEFAULT>')
is_expected.to contain_swift_object_config('object-replicator/rsync_bwlimit').with_value('<SERVICE DEFAULT>')
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('<SERVICE DEFAULT>')
is_expected.to contain_swift_object_config('object-updater/conn_timeout').with_value('<SERVICE DEFAULT>')
is_expected.to contain_swift_object_config('object-updater/node_timeout').with_value('<SERVICE DEFAULT>')
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