Files
puppet-swift/manifests/internal_client.pp
Takashi Kajinami 73d0dbfb0a Prepare for voxpupuli-puppet-lint-plugins
Fix new lint errors detected when full of the voxpupili lint plugins
are enabled.

Change-Id: Ifb5b50d7ae23c3e69a70721598e2719dbafa14d5
Signed-off-by: Takashi Kajinami <kajinamit@oss.nttdata.com>
2025-08-20 07:01:23 +00:00

164 lines
6.6 KiB
Puppet

# == Class: swift::internal_client
#
# Configures internal client
#
# === Parameters
#
# [*user*]
# (optional) User to run as
# Defaults to $swift::params::user.
#
# [*pipeline*]
# (optional) The list of elements of the internal client pipeline.
# Defaults to ['catch_errors', 'proxy-logging', 'cache', 'proxy-server']
#
# [*object_chunk_size*]
# (optional) Chunk size to read from object servers.
# Defaults to $facts['os_service_default'].
#
# [*client_chunk_size*]
# (optional) Chunk size to read from clients.
# Defaults to $facts['os_service_default'].
#
# [*sorting_method*]
# (optional) Method to chose storage nodes during GET and HEAD requests.
# Defaults to undef.
#
# [*timing_expiry*]
# (optional) If the "timing" sorting_method is used, the timings will only
# be valid for the number of seconds configured by timing_expiry.
# Defaults to $facts['os_service_default'].
#
# [*request_node_count*]
# (optional) Number of nodes to contact for a normal request.
# Defaults to $facts['os_service_default'].
#
# [*read_affinity*]
# (optional) Configures the read affinity of internal client.
# Defaults to undef.
#
# [*write_affinity*]
# (optional) Configures the write affinity of internal client.
# Defaults to undef.
#
# [*write_affinity_node_count*]
# (optional) Configures write_affinity_node_count for internal client.
# Optional but requires write_affinity to be set.
# Defaults to $facts['os_service_default'].
#
# [*write_affinity_handoff_delete_count*]
# (optional) Configures write_affinity_handoff_delete_count for proxy-server.
# Optional but requires write_affinity to be set.
# Defaults to $facts['os_service_default'].
#
# [*client_timeout*]
# (optional) Configures client_timeout for internal client.
# Defaults to $facts['os_service_default'].
#
# [*node_timeout*]
# (optional) Configures node_timeout for internal client.
# Defaults to $facts['os_service_default'].
#
# [*recoverable_node_timeout*]
# (optional) Configures recoverable_node_timeout for internal client.
# Defaults to $facts['os_service_default'].
#
# [*purge_config*]
# (optional) Whether to set only the specified config options in
# the internal client config.
# Defaults to false.
#
class swift::internal_client (
$user = $swift::params::user,
Swift::Pipeline $pipeline = ['catch_errors', 'proxy-logging', 'cache', 'proxy-server'],
$object_chunk_size = $facts['os_service_default'],
$client_chunk_size = $facts['os_service_default'],
Optional[Swift::SortingMethod] $sorting_method = undef,
$timing_expiry = $facts['os_service_default'],
$request_node_count = $facts['os_service_default'],
$read_affinity = undef,
$write_affinity = undef,
$write_affinity_node_count = $facts['os_service_default'],
$write_affinity_handoff_delete_count = $facts['os_service_default'],
$client_timeout = $facts['os_service_default'],
$node_timeout = $facts['os_service_default'],
$recoverable_node_timeout = $facts['os_service_default'],
Boolean $purge_config = false,
) inherits swift::params {
include swift::deps
include swift::params
if $pipeline[-1] != 'proxy-server' {
fail('proxy-server must be the last element in pipeline')
}
resources { 'swift_internal_client_config':
purge => $purge_config,
}
file { '/etc/swift/internal-client.conf':
ensure => 'file',
owner => 'root',
group => $swift::params::group,
mode => '0640',
require => Anchor['swift::config::begin'],
before => Anchor['swift::config::end'],
}
File['/etc/swift/internal-client.conf'] -> Swift_internal_client_config<||>
swift_internal_client_config {
'DEFAULT/user': value => $user;
'pipeline:main/pipeline': value => join($pipeline, ' ');
'app:proxy-server/use': value => 'egg:swift#proxy';
'app:proxy-server/account_autocreate': value => true;
'app:proxy-server/timing_expiry': value => $timing_expiry;
'app:proxy-server/request_node_count': value => $request_node_count;
'app:proxy-server/object_chunk_size': value => $object_chunk_size;
'app:proxy-server/client_chunk_size': value => $client_chunk_size;
'app:proxy-server/client_timeout': value => $client_timeout;
'app:proxy-server/node_timeout': value => $node_timeout;
'app:proxy-server/recoverable_node_timeout': value => $recoverable_node_timeout;
}
if $write_affinity {
$write_affinity_real = join(any2array($write_affinity), ',')
swift_internal_client_config {
'app:proxy-server/write_affinity': value => $write_affinity_real;
'app:proxy-server/write_affinity_node_count': value => $write_affinity_node_count;
'app:proxy-server/write_affinity_handoff_delete_count': value => $write_affinity_handoff_delete_count;
}
} else {
if !is_service_default($write_affinity_node_count) {
fail('Usage of write_affinity_node_count requires write_affinity to be set')
}
if !is_service_default($write_affinity_handoff_delete_count) {
fail('Usage of write_affinity_handoff_delete_count requires write_affinity to be set')
}
swift_internal_client_config {
'app:proxy-server/write_affinity': value => $facts['os_service_default'];
'app:proxy-server/write_affinity_node_count': value => $facts['os_service_default'];
'app:proxy-server/write_affinity_handoff_delete_count': value => $facts['os_service_default'];
}
}
if $read_affinity {
if $sorting_method and $sorting_method != 'affinity' {
fail('sorting_method should be \'affinity\' to use read affinity')
}
$read_affinity_real = $read_affinity ? {
Hash => join(join_keys_to_values($read_affinity, '='), ','),
default => join(any2array($read_affinity), ',')
}
swift_internal_client_config {
'app:proxy-server/sorting_method': value => 'affinity';
'app:proxy-server/read_affinity': value => $read_affinity_real;
}
} else {
swift_internal_client_config {
'app:proxy-server/sorting_method': value => pick($sorting_method, $facts['os_service_default']);
'app:proxy-server/read_affinity': value => $facts['os_service_default'];
}
}
}