Files
puppet-swift/manifests/proxy/ratelimit.pp
Takashi Kajinami 9686d3e41b ratelimit: Support options for container access ratelimit
This change introduces support for the following two options which
controls rate limit for container access.
 - container_ratelimit_<size> = <rate>
 - container_listing_ratelimit_<size> = <rate>

Change-Id: Ibed7f31e9ad472ac490ac6a2933ffa2c8329f376
2022-09-05 00:17:47 +09:00

86 lines
2.6 KiB
Puppet

# == Class: swift::proxy::ratelimit
#
# Configure swift ratelimit.
#
# See Swift's ratelimit documentation for more detail about the values.
#
# === Parameters
#
# [*clock_accuracy*]
# (optional) The accuracy of swift proxy servers' clocks.
# 1000 is 1ms max difference. No rate should be higher than this.
# Defaults to $::os_service_default.
#
# [*max_sleep_time_seconds*]
# (optional) Time before the app returns a 498 response.
# Defaults to $::os_service_default.
#
# [*log_sleep_time_seconds*]
# (optional) if >0, enables logging of sleeps longer than the value.
# Defaults to $::os_service_default.
#
# [*rate_buffer_seconds*]
# (optional) Time in second the rate counter can skip.
# Defaults to $::os_service_default.
#
# [*account_ratelimit*]
# (optional) if >0, limits PUT and DELETE requests to containers
# Defaults to $::os_service_default.
#
# [*container_ratelimit*]
# (optional) Hash of size(keys) and requests per seconds(values).
# Defaults to {}.
#
# [*container_listing_ratelimit*]
# (optional) Hash of size(keys) and requests per seconds(values).
# Defaults to {}.
#
# == Dependencies
#
# == Examples
#
# == Authors
#
# Francois Charlier fcharlier@ploup.net
#
# == Copyright
#
# Copyright 2012 eNovance licensing@enovance.com
#
class swift::proxy::ratelimit(
$clock_accuracy = $::os_service_default,
$max_sleep_time_seconds = $::os_service_default,
$log_sleep_time_seconds = $::os_service_default,
$rate_buffer_seconds = $::os_service_default,
$account_ratelimit = $::os_service_default,
$container_ratelimit = {},
$container_listing_ratelimit = {},
) {
include swift::deps
validate_legacy(Hash, 'validate_hash', $container_ratelimit)
validate_legacy(Hash, 'validate_hash', $container_listing_ratelimit)
swift_proxy_config {
'filter:ratelimit/use': value => 'egg:swift#ratelimit';
'filter:ratelimit/clock_accuracy': value => $clock_accuracy;
'filter:ratelimit/max_sleep_time_seconds': value => $max_sleep_time_seconds;
'filter:ratelimit/log_sleep_time_seconds': value => $log_sleep_time_seconds;
'filter:ratelimit/rate_buffer_seconds': value => $rate_buffer_seconds;
'filter:ratelimit/account_ratelimit': value => $account_ratelimit;
}
$container_ratelimit.each | $size, $limit | {
swift_proxy_config {
"filter:ratelimit/container_ratelimit_${size}": value => $limit;
}
}
$container_listing_ratelimit.each | $size, $limit | {
swift_proxy_config {
"filter:ratelimit/container_listing_ratelimit_${size}": value => $limit;
}
}
}