Add swift::proxy::slo class

swift::proxy::slo class is used to configure proxy slo middleware.

Change-Id: Ic751d2e89de39478b55e3323ddf220610b1b7541
Implements: blueprint icehouse-proxyserver-middlewares
This commit is contained in:
Xingchao Yu 2014-02-10 23:04:24 +08:00
parent eefaf9ca54
commit 69f677de0b
3 changed files with 127 additions and 0 deletions
manifests/proxy
spec/classes
templates/proxy

59
manifests/proxy/slo.pp Normal file

@ -0,0 +1,59 @@
#
# Configure swift slo.
#
# == Examples
#
# include swift::proxy::slo
#
# == Parameters
#
# [*max_manifest_segments*]
# Max manifest segments.
# Default to 1000.
#
# [*max_manifest_size*]
# Max manifest size.
# Default to 2097152.
#
# [*min_segment_size*]
# minimal segment size
# Default to 1048576.
#
# [*rate_limit_after_segment*]
# Start rate-limiting SLO segment serving after the Nth segment of a segmented object.
# Default to 10.
#
# [*rate_limit_segments_per_sec*]
# Once segment rate-limiting kicks in for an object, limit segments served to N per second.
# 0 means no rate-limiting.
# Default to 0.
#
# [*max_get_time*]
# Time limit on GET requests (seconds).
# Default to 86400.
#
# == Authors
#
# Xingchao Yu yuxcer@gmail.com
#
# == Copyright
#
# Copyright 2014 UnitedStack licensing@unitedstack.com
#
class swift::proxy::slo (
$max_manifest_segments = '1000',
$max_manifest_size = '2097152',
$min_segment_size = '1048576',
$rate_limit_after_segment = '10',
$rate_limit_segments_per_sec = '0',
$max_get_time = '86400'
) {
concat::fragment { 'swift_slo':
target => '/etc/swift/proxy-server.conf',
content => template('swift/proxy/slo.conf.erb'),
order => '35',
}
}

@ -0,0 +1,60 @@
require 'spec_helper'
describe 'swift::proxy::slo' do
let :facts do
{
:concat_basedir => '/var/lib/puppet/concat'
}
end
let :pre_condition do
'class { "concat::setup": }
concat { "/etc/swift/proxy-server.conf": }'
end
let :fragment_file do
"/var/lib/puppet/concat/_etc_swift_proxy-server.conf/fragments/35_swift_slo"
end
describe "when using default parameters" do
it 'should build the fragment with correct parameters' do
verify_contents(subject, fragment_file,
[
'[filter:slo]',
'use = egg:swift#slo',
'max_manifest_segments = 1000',
'max_manifest_size = 2097152',
'min_segment_size = 1048576',
'rate_limit_after_segment = 10',
'rate_limit_segments_per_sec = 0',
'max_get_time = 86400',
]
)
end
end
describe "when overriding default parameters" do
let :params do
{
:max_manifest_segments => '2000',
:max_manifest_size => '500000',
:rate_limit_after_segment => '30',
:max_get_time => '6400',
}
end
it 'should build the fragment with correct parameters' do
verify_contents(subject, fragment_file,
[
'[filter:slo]',
'use = egg:swift#slo',
'max_manifest_segments = 2000',
'max_manifest_size = 500000',
'rate_limit_after_segment = 30',
'max_get_time = 6400',
]
)
end
end
end

@ -0,0 +1,8 @@
[filter:slo]
use = egg:swift#slo
max_manifest_segments = <%= @max_manifest_segments %>
max_manifest_size = <%= @max_manifest_size %>
min_segment_size = <%= @min_segment_size %>
rate_limit_after_segment = <%= @rate_limit_after_segment %>
rate_limit_segments_per_sec = <%= @rate_limit_segments_per_sec %>
max_get_time = <%= @max_get_time %>