]> git.donarmstrong.com Git - dsa-puppet.git/blob - modules/rabbitmq/lib/puppet/provider/rabbitmq_user/rabbitmqctl.rb
try if downgrading to 1.2.2 solves my problem
[dsa-puppet.git] / modules / rabbitmq / lib / puppet / provider / rabbitmq_user / rabbitmqctl.rb
1 require 'puppet'
2 Puppet::Type.type(:rabbitmq_user).provide(:rabbitmqctl) do
3
4   commands :rabbitmqctl => 'rabbitmqctl'
5   defaultfor :feature => :posix
6
7   def self.instances
8     rabbitmqctl('list_users').split(/\n/)[1..-2].collect do |line|
9       if line =~ /^(\S+)(\s+\S+|)$/
10         new(:name => $1)
11       else
12         raise Puppet::Error, "Cannot parse invalid user line: #{line}"
13       end
14     end
15   end
16
17   def create
18     rabbitmqctl('add_user', resource[:name], resource[:password])
19     if resource[:admin] == :true
20       make_user_admin()
21     end
22   end
23
24   def destroy
25     rabbitmqctl('delete_user', resource[:name])
26   end
27
28   def exists?
29     out = rabbitmqctl('list_users').split(/\n/)[1..-2].detect do |line|
30       line.match(/^#{resource[:name]}(\s+\S+|)$/)
31     end
32   end
33
34   # def password
35   # def password=()
36   def admin
37     match = rabbitmqctl('list_users').split(/\n/)[1..-2].collect do |line|
38       line.match(/^#{resource[:name]}\s+\[(administrator)?\]/)
39     end.compact.first
40     if match
41       (:true if match[1].to_s == 'administrator') || :false
42     else
43       raise Puppet::Error, "Could not match line '#{resource[:name]} (true|false)' from list_users (perhaps you are running on an older version of rabbitmq that does not support admin users?)"
44     end
45   end
46
47   def admin=(state)
48     if state == :true
49       make_user_admin()
50     else
51       rabbitmqctl('set_user_tags', resource[:name])
52     end
53   end
54
55   def make_user_admin
56     rabbitmqctl('set_user_tags', resource[:name], 'administrator')
57   end
58
59 end