Skip to content

Commit 7adb318

Browse files
committed
Use -q flag instead of array slices
Previously we sliced off the informational output lines. This broke on rabbitmq 3.4.0 because the 'done' was removed. We can use the -q flag to never print them in the first place.
1 parent 4832bd6 commit 7adb318

4 files changed

Lines changed: 24 additions & 63 deletions

File tree

lib/puppet/provider/rabbitmq_user/rabbitmqctl.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
defaultfor :feature => :posix
1414

1515
def self.instances
16-
rabbitmqctl('list_users').split(/\n/)[1..-2].collect do |line|
16+
rabbitmqctl('-q', 'list_users').split(/\n/).collect do |line|
1717
if line =~ /^(\S+)(\s+\[.*?\]|)$/
1818
new(:name => $1)
1919
else
@@ -37,7 +37,7 @@ def destroy
3737
end
3838

3939
def exists?
40-
rabbitmqctl('list_users').split(/\n/)[1..-2].detect do |line|
40+
rabbitmqctl('-q', 'list_users').split(/\n/).detect do |line|
4141
line.match(/^#{Regexp.escape(resource[:name])}(\s+(\[.*?\]|\S+)|)$/)
4242
end
4343
end

lib/puppet/provider/rabbitmq_user_permissions/rabbitmqctl.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def self.users(name, vhost)
1515
@users = {} unless @users
1616
unless @users[name]
1717
@users[name] = {}
18-
rabbitmqctl('list_user_permissions', name).split(/\n/)[1..-2].each do |line|
18+
rabbitmqctl('-q', 'list_user_permissions', name).split(/\n/).each do |line|
1919
if line =~ /^(\S+)\s+(\S*)\s+(\S*)\s+(\S*)$/
2020
@users[name][$1] =
2121
{:configure => $2, :read => $4, :write => $3}

lib/puppet/provider/rabbitmq_vhost/rabbitmqctl.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
end
1010

1111
def self.instances
12-
rabbitmqctl('list_vhosts').split(/\n/)[1..-2].map do |line|
12+
rabbitmqctl('-q', 'list_vhosts').split(/\n/).map do |line|
1313
if line =~ /^(\S+)$/
1414
new(:name => $1)
1515
else
@@ -27,7 +27,7 @@ def destroy
2727
end
2828

2929
def exists?
30-
out = rabbitmqctl('list_vhosts').split(/\n/)[1..-2].detect do |line|
30+
out = rabbitmqctl('-q', 'list_vhosts').split(/\n/).detect do |line|
3131
line.match(/^#{Regexp.escape(resource[:name])}$/)
3232
end
3333
end

spec/unit/puppet/provider/rabbitmq_user/rabbitmqctl_spec.rb

Lines changed: 19 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -12,44 +12,34 @@
1212
@provider = provider_class.new(@resource)
1313
end
1414
it 'should match user names' do
15-
@provider.expects(:rabbitmqctl).with('list_users').returns <<-EOT
16-
Listing users ...
15+
@provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT
1716
foo
18-
...done.
1917
EOT
2018
@provider.exists?.should == 'foo'
2119
end
2220
it 'should match user names with 2.4.1 syntax' do
23-
@provider.expects(:rabbitmqctl).with('list_users').returns <<-EOT
24-
Listing users ...
21+
@provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT
2522
foo bar
26-
...done.
2723
EOT
2824
@provider.exists?.should == 'foo bar'
2925
end
3026
it 'should not match if no users on system' do
31-
@provider.expects(:rabbitmqctl).with('list_users').returns <<-EOT
32-
Listing users ...
33-
...done.
27+
@provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT
3428
EOT
3529
@provider.exists?.should be_nil
3630
end
3731
it 'should not match if no matching users on system' do
38-
@provider.expects(:rabbitmqctl).with('list_users').returns <<-EOT
39-
Listing users ...
32+
@provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT
4033
fooey
41-
...done.
4234
EOT
4335
@provider.exists?.should be_nil
4436
end
4537
it 'should match user names from list' do
46-
@provider.expects(:rabbitmqctl).with('list_users').returns <<-EOT
47-
Listing users ...
38+
@provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT
4839
one
4940
two three
5041
foo
5142
bar
52-
...done.
5343
EOT
5444
@provider.exists?.should == 'foo'
5545
end
@@ -62,13 +52,11 @@
6252
@resource[:password] = 'bar'
6353
@resource[:admin] = 'true'
6454
@provider.expects(:rabbitmqctl).with('add_user', 'foo', 'bar')
65-
@provider.expects(:rabbitmqctl).with('list_users').returns <<-EOT
66-
Listing users ...
55+
@provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT
6756
foo []
6857
icinga [monitoring]
6958
kitchen []
7059
kitchen2 [abc, def, ghi]
71-
...done.
7260
EOT
7361
@provider.expects(:rabbitmqctl).with('set_user_tags', 'foo', ['administrator'])
7462
@provider.create
@@ -78,129 +66,107 @@
7866
@provider.destroy
7967
end
8068
it 'should be able to retrieve admin value' do
81-
@provider.expects(:rabbitmqctl).with('list_users').returns <<-EOT
82-
Listing users ...
69+
@provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT
8370
foo [administrator]
84-
...done.
8571
EOT
8672
@provider.admin.should == :true
87-
@provider.expects(:rabbitmqctl).with('list_users').returns <<-EOT
88-
Listing users ...
73+
@provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT
8974
one [administrator]
9075
foo []
91-
...done.
9276
EOT
9377
@provider.admin.should == :false
9478
end
9579
it 'should fail if admin value is invalid' do
96-
@provider.expects(:rabbitmqctl).with('list_users').returns <<-EOT
97-
Listing users ...
80+
@provider.expects(:rabbitmqctl).with('q', 'list_users').returns <<-EOT
9881
foo fail
99-
...done.
10082
EOT
10183
expect { @provider.admin }.to raise_error(Puppet::Error, /Could not match line/)
10284
end
10385
it 'should be able to set admin value' do
104-
@provider.expects(:rabbitmqctl).with('list_users').returns <<-EOT
105-
Listing users ...
86+
@provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT
10687
foo []
10788
icinga [monitoring]
10889
kitchen []
10990
kitchen2 [abc, def, ghi]
110-
...done.
11191
EOT
11292
@provider.expects(:rabbitmqctl).with('set_user_tags', 'foo', ['administrator'])
11393
@provider.admin=:true
11494
end
11595
it 'should not interfere with existing tags on the user when setting admin value' do
116-
@provider.expects(:rabbitmqctl).with('list_users').returns <<-EOT
117-
Listing users ...
96+
@provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT
11897
foo [bar, baz]
11998
icinga [monitoring]
12099
kitchen []
121100
kitchen2 [abc, def, ghi]
122-
...done.
123101
EOT
124102
@provider.expects(:rabbitmqctl).with('set_user_tags', 'foo', ['bar','baz', 'administrator'].sort)
125103
@provider.admin=:true
126104
end
127105
it 'should be able to unset admin value' do
128-
@provider.expects(:rabbitmqctl).with('list_users').returns <<-EOT
129-
Listing users ...
106+
@provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT
130107
foo [administrator]
131108
guest [administrator]
132109
icinga []
133-
...done.
134110
EOT
135111
@provider.expects(:rabbitmqctl).with('set_user_tags', 'foo', [])
136112
@provider.admin=:false
137113
end
138114
it 'should not interfere with existing tags on the user when unsetting admin value' do
139-
@provider.expects(:rabbitmqctl).with('list_users').returns <<-EOT
140-
Listing users ...
115+
@provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT
141116
foo [administrator, bar, baz]
142117
icinga [monitoring]
143118
kitchen []
144119
kitchen2 [abc, def, ghi]
145-
...done.
146120
EOT
147121
@provider.expects(:rabbitmqctl).with('set_user_tags', 'foo', ['bar','baz'].sort)
148122
@provider.admin=:false
149123
end
150124

151125
it 'should clear all tags on existing user' do
152-
@provider.expects(:rabbitmqctl).with('list_users').returns <<-EOT
153-
Listing users ...
126+
@provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT
154127
one [administrator]
155128
foo [tag1,tag2]
156129
icinga [monitoring]
157130
kitchen []
158131
kitchen2 [abc, def, ghi]
159-
...done.
160132
EOT
161133
@provider.expects(:rabbitmqctl).with('set_user_tags', 'foo', [])
162134
@provider.tags=[]
163135
end
164136

165137
it 'should set multiple tags' do
166-
@provider.expects(:rabbitmqctl).with('list_users').returns <<-EOT
167-
Listing users ...
138+
@provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT
168139
one [administrator]
169140
foo []
170141
icinga [monitoring]
171142
kitchen []
172143
kitchen2 [abc, def, ghi]
173-
...done.
174144
EOT
175145
@provider.expects(:rabbitmqctl).with('set_user_tags', 'foo', ['tag1','tag2'])
176146
@provider.tags=['tag1','tag2']
177147
end
178148

179149
it 'should clear tags while keep admin tag' do
180150
@resource[:admin] = true
181-
@provider.expects(:rabbitmqctl).with('list_users').returns <<-EOT
182-
Listing users ...
151+
@provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT
183152
one [administrator]
184153
foo [administrator, tag1, tag2]
185154
icinga [monitoring]
186155
kitchen []
187156
kitchen2 [abc, def, ghi]
188-
...done.
189157
EOT
190158
@provider.expects(:rabbitmqctl).with('set_user_tags', 'foo', ["administrator"])
191159
@provider.tags=[]
192160
end
193161

194162
it 'should change tags while keep admin tag' do
195163
@resource[:admin] = true
196-
@provider.expects(:rabbitmqctl).with('list_users').returns <<-EOT
197-
Listing users ...
164+
@provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT
198165
one [administrator]
199166
foo [administrator, tag1, tag2]
200167
icinga [monitoring]
201168
kitchen []
202169
kitchen2 [abc, def, ghi]
203-
...done.
204170
EOT
205171
@provider.expects(:rabbitmqctl).with('set_user_tags', 'foo', ["administrator","tag1","tag3","tag7"])
206172
@provider.tags=['tag1','tag7','tag3']
@@ -210,10 +176,8 @@
210176
@resource[:tags] = [ "tag1", "tag2" ]
211177
@provider.expects(:rabbitmqctl).with('add_user', 'foo', 'bar')
212178
@provider.expects(:rabbitmqctl).with('set_user_tags', 'foo', ["tag1","tag2"])
213-
@provider.expects(:rabbitmqctl).with('list_users').returns <<-EOT
214-
Listing users ...
179+
@provider.expects(:rabbitmqctl).with('-q', 'list_users').returns <<-EOT
215180
foo []
216-
...done.
217181
EOT
218182
@provider.create
219183
end
@@ -222,15 +186,12 @@
222186
@resource[:tags] = [ "tag1", "tag2" ]
223187
@resource[:admin] = true
224188
@provider.expects(:rabbitmqctl).with('add_user', 'foo', 'bar')
225-
@provider.expects(:rabbitmqctl).with('list_users').twice.returns <<-EOT
226-
Listing users ...
189+
@provider.expects(:rabbitmqctl).with('-q', 'list_users').twice.returns <<-EOT
227190
foo []
228-
...done.
229191
EOT
230192
@provider.expects(:rabbitmqctl).with('set_user_tags', 'foo', ["administrator"])
231193
@provider.expects(:rabbitmqctl).with('set_user_tags', 'foo', ["administrator","tag1","tag2"])
232194
@provider.create
233195
end
234-
235196

236197
end

0 commit comments

Comments
 (0)