Skip to content

Commit

Permalink
Added rabbitmq_webapi provider for rabbitmq_user_permissions
Browse files Browse the repository at this point in the history
  • Loading branch information
koglinjg committed Apr 23, 2014
1 parent 95e6fff commit c99958b
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 14 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ pkg/
*.swp
metadata.json
spec/fixtures/modules/*
.idea/*
1 change: 1 addition & 0 deletions lib/helpers/rabbitmq_webapi_provider_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ def request(method,args)
end
request.basic_auth(@user,@password)
#@http.set_debug_output($stdout)
@http.set_debug_output($stdout) if args[:debug]
response = @http.request(request)
result[:code] = response.code.to_i
unless result[:code] == 204
Expand Down
42 changes: 30 additions & 12 deletions lib/puppet/provider/rabbitmq_user_permissions/rabbitmq_webapi.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ def users(name, vhost)
@users[name] = {}
api = self.api
response = api.get(
:uri=>"/api/users/%s/permissions",
:uri=>'/api/users/%s/permissions',
:uri_vars=>[name]
)
if api.success? response[:code]
Expand All @@ -24,6 +24,8 @@ def users(name, vhost)
raise Puppet::Error, "Failed to retrieve user permissions: #{response[:code]} #{response[:body]}"
end
end
raise Puppet::Error, 'User permissions not found in cache' if @users[name].nil?
raise Puppet::Error, "User permissions not found for vhost '#{vhost}' in cache" if @users[name][vhost].nil?
@users[name][vhost]
end

Expand All @@ -35,15 +37,24 @@ def should_vhost
@should_vhost ||= resource[:name].split('@')[1]
end

def defaults
@defaults ||= {
:configure_permission => '',
:read_permission => '',
:write_permission => ''
}
end

def create
resource[:configure_permission] ||= "''"
resource[:read_permission] ||= "''"
resource[:write_permission] ||= "''"
resource[:configure_permission] ||= defaults[:configure_permission]
resource[:read_permission] ||= defaults[:read_permission]
resource[:write_permission] ||= defaults[:write_permission]
vhost = self.should_vhost
user = self.should_user
api = self.api
@users.delete user unless @users.nil? || @users[user].nil?
response = api.put(
:uri => "/api/permissions/%s/%s",
:uri => '/api/permissions/%s/%s',
:uri_vars => [vhost,user],
:data => {
:configure => resource[:configure_permission],
Expand All @@ -60,8 +71,9 @@ def destroy
vhost = self.should_vhost
user = self.should_user
@api = self.api
@users.delete user if @users[user]
response = @api.delete(
:uri => "/api/permissions/%s/%s",
:uri => '/api/permissions/%s/%s',
:uri_vars => [vhost,user]
)
unless @api.success? response[:code]
Expand All @@ -74,23 +86,23 @@ def exists?
end

def configure_permission
users(should_user, should_vhost)[:configure]
users(should_user, should_vhost)['configure']
end

def configure_permission=(perm)
set_permissions
end

def read_permission
users(should_user, should_vhost)[:read]
users(should_user, should_vhost)['read']
end

def read_permission=(perm)
set_permissions
end

def write_permission
users(should_user, should_vhost)[:write]
users(should_user, should_vhost)['write']
end

def write_permission=(perm)
Expand All @@ -101,9 +113,15 @@ def write_permission=(perm)
def set_permissions
unless @permissions_set
@permissions_set = true
resource[:configure_permission] ||= configure_permission
resource[:read_permission] ||= read_permission
resource[:write_permission] ||= write_permission
if self.exists?.nil?
resource[:configure_permission] ||= defaults[:configure_permission]
resource[:read_permission] ||= defaults[:read_permission]
resource[:write_permission] ||= defaults[:write_permission]
else
resource[:configure_permission] = resource[:configure_permission] || configure_permission || defaults[:configure_permission]
resource[:read_permission] = resource[:read_permission] || read_permission || defaults[:read_permission]
resource[:write_permission] = resource[:write_permission] || write_permission || defaults[:write_permission]
end
self.create
end
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,17 @@
@provider.exists?.should be_true
end
it 'shoud create user, set password and set to admin' do
@provider.create
@provider.admin.should be_false
@resource[:admin] = 'true'
@provider.create
@provider.admin.should be_true
end
it 'should delete user' do
@provider.create
@provider.exists?.should be_true
@provider.destroy
@provider.exists?.should be_false
end
it 'should be able to set/retrieve admin value' do
@resource[:admin] = 'true'
Expand Down
15 changes: 13 additions & 2 deletions spec/unit/puppet/provider/rabbitmq_vhost/rabbitmq_webapi_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -22,20 +22,31 @@
@provider.create
@provider.exists?.should be_true
end
it 'should create vhost with special characters' do
it 'should create vhost with multibyte characters' do
@resource[:name] = 'Æthere'
@provider.create
@provider.exists?.should be_true
end
it 'should create vhost with special characters' do
@resource[:name] = 'My/Vhost'
@provider.create
@provider.exists?.should be_true
end
it 'should delete vhost' do
@provider.create
@provider.destroy
@provider.exists?.should be_false
end
it 'should delete vhost with special characters' do
it 'should delete vhost with multibyte characters' do
@resource[:name] = 'Æthere'
@provider.create
@provider.destroy
@provider.exists?.should be_false
end
it 'should delete vhost with special characters' do
@resource[:name] = 'My/Vhost'
@provider.create
@provider.destroy
@provider.exists?.should be_false
end
end

0 comments on commit c99958b

Please sign in to comment.