Merge "Add Bulk middleware support"

This commit is contained in:
Jenkins 2013-11-19 22:52:26 +00:00 committed by Gerrit Code Review
commit 328a805f1a
4 changed files with 145 additions and 0 deletions

52
manifests/proxy/bulk.pp Normal file
View File

@ -0,0 +1,52 @@
#
# Copyright (C) 2013 eNovance SAS <licensing@enovance.com>
#
# Author: Emilien Macchi <emilien.macchi@enovance.com>
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# Configure Bulk
#
# === Parameters
#
# [*max_containers_per_extraction*]
# The maximum number of containers that can be extracted from an archive.
# Default to 10000.
#
# [*max_failed_extractions*]
# The maximum number of failed extractions allowed when an archive has
# extraction failures.
# Default to 1000.
#
# [*max_deletes_per_request*]
# The maximum number of deletes allowed by each request.
# Default to 10000.
#
# [*yield_frequency*]
# The frequency the server will spit out an ' ' to keep the connection alive
# while its processing the request.
# Default to 60.
#
class swift::proxy::bulk(
$max_containers_per_extraction = '10000',
$max_failed_extractions = '1000',
$max_deletes_per_request = '10000',
$yield_frequency = '60',
) {
concat::fragment { 'swift_bulk':
target => '/etc/swift/proxy-server.conf',
content => template('swift/proxy/bulk.conf.erb'),
order => '21',
}
}

View File

@ -0,0 +1,78 @@
#
# Copyright (C) 2013 eNovance SAS <licensing@enovance.com>
#
# Author: Emilien Macchi <emilien.macchi@enovance.com>
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
# Tests for swift::proxy::bulk
#
require 'spec_helper'
describe 'swift::proxy::bulk' 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/21_swift_bulk"
end
describe "when using default parameters" do
it 'should build the fragment with correct parameters' do
verify_contents(subject, fragment_file,
[
'[filter:bulk]',
'use = egg:swift#bulk',
'max_containers_per_extraction = 10000',
'max_failed_extractions = 1000',
'max_deletes_per_request = 10000',
'yield_frequency = 60',
]
)
end
end
describe "when overriding default parameters" do
let :params do
{
:max_containers_per_extraction => 5000,
:max_failed_extractions => 500,
:max_deletes_per_request => 5000,
:yield_frequency => 10
}
end
it 'should build the fragment with correct parameters' do
verify_contents(subject, fragment_file,
[
'[filter:bulk]',
'use = egg:swift#bulk',
'max_containers_per_extraction = 5000',
'max_failed_extractions = 500',
'max_deletes_per_request = 5000',
'yield_frequency = 10',
]
)
end
end
end

View File

@ -0,0 +1,8 @@
[filter:bulk]
use = egg:swift#bulk
max_containers_per_extraction = <%= @max_containers_per_extraction %>
max_failed_extractions = <%= @max_failed_extractions %>
max_deletes_per_request = <%= @max_deletes_per_request %>
yield_frequency = <%= @yield_frequency %>

View File

@ -183,6 +183,7 @@ node /swift-proxy/ inherits swift_base {
class { 'swift::proxy':
proxy_local_net_ip => $swift_local_net_ip,
pipeline => [
'bulk',
'catch_errors',
'healthcheck',
'cache',
@ -209,6 +210,12 @@ node /swift-proxy/ inherits swift_base {
'swift::proxy::cache',
'swift::proxy::swift3',
]: }
class { 'swift::proxy::bulk':
max_containers_per_extraction => 10000,
max_failed_extractions => 1000,
max_deletes_per_request => 10000,
yield_frequency => 60,
}
class { 'swift::proxy::ratelimit':
clock_accuracy => 1000,
max_sleep_time_seconds => 60,