Add support for DLO configuration.

New class swift::proxy::dlo for DLO configuration.
Add acceptance tests
Add docs to README

Change-Id: Ie209e494d7affd72c3fea3f2cc3459b91d7c6765
This commit is contained in:
Aleksandr Didenko
2015-04-09 14:59:51 +03:00
parent 4e20b73500
commit 4ee7b74aed
5 changed files with 124 additions and 2 deletions

View File

@@ -126,6 +126,28 @@ This is the ip that the proxy service will bind to when it starts.
####`port`
The port for which the proxy service will bind to when it starts.
### Class swift::proxy::dlo
Configures [DLO middleware](http://docs.openstack.org/developer/swift/middleware.html#module-swift.common.middleware.dlo) for swift proxy.
```puppet
class { '::swift::proxy::dlo':
rate_limit_after_segment => '10',
rate_limit_segments_per_sec => '1',
max_get_time => '86400'
}
```
####`rate_limit_after_segment`
Start rate-limiting DLO segment serving after the Nth segment of a segmented object.
####`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.
####`max_get_time`
Time limit on GET requests (seconds).
### Class: swift::storage
Class that sets up all of the configuration and dependencies for swift storage server instances.

43
manifests/proxy/dlo.pp Normal file
View File

@@ -0,0 +1,43 @@
#
# Configure swift dlo.
#
# == Examples
#
# include ::swift::proxy::dlo
#
# == Parameters
#
# [*rate_limit_after_segment*]
# Start rate-limiting DLO 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 1.
#
# [*max_get_time*]
# Time limit on GET requests (seconds).
# Default to 86400.
#
# == Authors
#
# Aleksandr Didenko adidenko@mirantis.com
#
# == Copyright
#
# Copyright 2015 Mirantis Inc, unless otherwise noted.
#
class swift::proxy::dlo (
$rate_limit_after_segment = '10',
$rate_limit_segments_per_sec = '1',
$max_get_time = '86400'
) {
concat::fragment { 'swift_dlo':
target => '/etc/swift/proxy-server.conf',
content => template('swift/proxy/dlo.conf.erb'),
order => '36',
}
}

View File

@@ -105,14 +105,17 @@ describe 'basic swift' do
}
class { '::swift::proxy':
proxy_local_net_ip => '127.0.0.1',
pipeline => ['healthcheck', 'cache', 'tempauth', 'proxy-server'],
pipeline => ['healthcheck', 'cache', 'tempauth', 'dlo', 'proxy-server'],
account_autocreate => true,
require => Class['swift::ringbuilder'],
}
class { '::swift::proxy::authtoken':
admin_password => 'a_big_secret',
}
class { ['::swift::proxy::healthcheck', '::swift::proxy::cache', '::swift::proxy::tempauth']: }
class {
[ '::swift::proxy::healthcheck', '::swift::proxy::cache',
'::swift::proxy::tempauth', '::swift::proxy::dlo' ]:
}
EOS

View File

@@ -0,0 +1,48 @@
require 'spec_helper'
describe 'swift::proxy::dlo' do
let :facts do
{}
end
let :fragment_file do
"/var/lib/puppet/concat/_etc_swift_proxy-server.conf/fragments/36_swift_dlo"
end
describe "when using default parameters" do
it 'should build the fragment with correct parameters' do
verify_contents(catalogue, fragment_file,
[
'[filter:dlo]',
'use = egg:swift#dlo',
'rate_limit_after_segment = 10',
'rate_limit_segments_per_sec = 1',
'max_get_time = 86400',
]
)
end
end
describe "when overriding default parameters" do
let :params do
{
:rate_limit_after_segment => '30',
:rate_limit_segments_per_sec => '5',
:max_get_time => '6400',
}
end
it 'should build the fragment with correct parameters' do
verify_contents(catalogue, fragment_file,
[
'[filter:dlo]',
'use = egg:swift#dlo',
'rate_limit_after_segment = 30',
'rate_limit_segments_per_sec = 5',
'max_get_time = 6400',
]
)
end
end
end

View File

@@ -0,0 +1,6 @@
[filter:dlo]
use = egg:swift#dlo
rate_limit_after_segment = <%= @rate_limit_after_segment %>
rate_limit_segments_per_sec = <%= @rate_limit_segments_per_sec %>
max_get_time = <%= @max_get_time %>