Skip to content

Commit 151aa17

Browse files
SpredzyDavid Moreau Simard
authored andcommitted
Avoid duplication error when ringserver and storage are on the same node
This commit aims to avoid duplication error when the ringserver and the storage node are on the same machine. For example when using loopback devices. Change-Id: Ic09af5d3a706d1a59c3fee7689b373d0a4de4e80 (cherry picked from commit f7d1385)
1 parent f979f90 commit 151aa17

File tree

2 files changed

+93
-4
lines changed

2 files changed

+93
-4
lines changed

manifests/ringserver.pp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,12 @@
2323

2424
Class['ringbuilder'] -> Class['swift::ringserver']
2525

26-
class { 'rsync::server':
27-
use_xinetd => true,
28-
address => $local_net_ip,
29-
use_chroot => 'no',
26+
if !defined(Class['rsync::server']) {
27+
class { 'rsync::server':
28+
use_xinetd => true,
29+
address => $local_net_ip,
30+
use_chroot => 'no',
31+
}
3032
}
3133

3234
rsync::server::module { 'swift_server':
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
require 'spec_helper'
2+
3+
describe 'swift::ringserver' do
4+
5+
context 'when storage.pp was already included' do
6+
7+
let :pre_condition do
8+
"class { 'swift::storage': storage_local_net_ip => '127.0.0.1' }
9+
class {'swift' : swift_hash_suffix => 'eee' }
10+
include swift::ringbuilder"
11+
end
12+
13+
let :facts do
14+
{
15+
:operatingsystem => 'Ubuntu',
16+
:osfamily => 'Debian'
17+
}
18+
end
19+
20+
let :params do
21+
{
22+
:local_net_ip => '127.0.0.1',
23+
:max_connections => 5
24+
}
25+
end
26+
27+
it 'does not create the rsync::server class' do
28+
should compile
29+
end
30+
31+
it 'contain the swift_server rsync block' do
32+
should contain_rsync__server__module('swift_server').with({
33+
'path' => '/etc/swift',
34+
'lock_file' => '/var/lock/swift_server.lock',
35+
'uid' => 'swift',
36+
'gid' => 'swift',
37+
'max_connections' => '5',
38+
'read_only' => 'true'
39+
})
40+
end
41+
42+
end
43+
44+
context 'when storage.pp was not already included' do
45+
46+
let :pre_condition do
47+
"class {'swift' : swift_hash_suffix => 'eee' }
48+
include swift::ringbuilder"
49+
end
50+
51+
let :facts do
52+
{
53+
:operatingsystem => 'Ubuntu',
54+
:osfamily => 'Debian'
55+
}
56+
end
57+
58+
59+
let :params do
60+
{
61+
:local_net_ip => '127.0.0.1',
62+
:max_connections => 5
63+
}
64+
end
65+
66+
it 'does create the rsync::server class' do
67+
should contain_class('rsync::server').with({
68+
'use_xinetd' => 'true',
69+
'address' => '127.0.0.1',
70+
'use_chroot' => 'no'
71+
})
72+
end
73+
74+
it 'contain the swift_server rsync block' do
75+
should contain_rsync__server__module('swift_server').with({
76+
'path' => '/etc/swift',
77+
'lock_file' => '/var/lock/swift_server.lock',
78+
'uid' => 'swift',
79+
'gid' => 'swift',
80+
'max_connections' => '5',
81+
'read_only' => 'true'
82+
})
83+
end
84+
85+
end
86+
87+
end

0 commit comments

Comments
 (0)