2 Puppet::Type.type(:rabbitmq_user).provide(:rabbitmqctl) do
4 commands :rabbitmqctl => 'rabbitmqctl'
5 defaultfor :feature => :posix
8 rabbitmqctl('list_users').split(/\n/)[1..-2].collect do |line|
9 if line =~ /^(\S+)(\s+\S+|)$/
12 raise Puppet::Error, "Cannot parse invalid user line: #{line}"
18 rabbitmqctl('add_user', resource[:name], resource[:password])
19 if resource[:admin] == :true
25 rabbitmqctl('delete_user', resource[:name])
29 out = rabbitmqctl('list_users').split(/\n/)[1..-2].detect do |line|
30 line.match(/^#{resource[:name]}(\s+\S+|)$/)
37 match = rabbitmqctl('list_users').split(/\n/)[1..-2].collect do |line|
38 line.match(/^#{resource[:name]}\s+\[(administrator)?\]/)
41 (:true if match[1].to_s == 'administrator') || :false
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?)"
51 rabbitmqctl('set_user_tags', resource[:name])
56 rabbitmqctl('set_user_tags', resource[:name], 'administrator')