]> git.donarmstrong.com Git - dsa-puppet.git/blob - 3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_user.rb
move to puppetlabs rabbitmq module
[dsa-puppet.git] / 3rdparty / modules / rabbitmq / lib / puppet / type / rabbitmq_user.rb
1 Puppet::Type.newtype(:rabbitmq_user) do
2   desc 'Native type for managing rabbitmq users'
3
4   ensurable do
5     defaultto(:present)
6     newvalue(:present) do
7       provider.create
8     end
9     newvalue(:absent) do
10       provider.destroy
11     end
12   end
13
14   autorequire(:service) { 'rabbitmq-server' }
15
16   newparam(:name, :namevar => true) do
17     desc 'Name of user'
18     newvalues(/^\S+$/)
19   end
20
21   newproperty(:password) do
22     desc 'User password to be set *on creation* and validated each run'
23     def insync?(is)
24       provider.check_password
25     end
26     def set(value)
27       provider.change_password
28     end
29     def change_to_s(current, desired)
30       "password has been changed"
31     end
32   end
33
34   newproperty(:admin) do
35     desc 'whether or not user should be an admin'
36     newvalues(/true|false/)
37     munge do |value|
38       # converting to_s in case its a boolean
39       value.to_s.to_sym
40     end
41     defaultto :false
42   end
43
44   newproperty(:tags, :array_matching => :all) do
45     desc 'additional tags for the user'
46     validate do |value|
47       unless value =~ /^\S+$/
48         raise ArgumentError, "Invalid tag: #{value.inspect}"
49       end
50
51       if value == "administrator"
52         raise ArgumentError, "must use admin property instead of administrator tag"
53       end
54     end
55     defaultto []
56
57     def insync?(is)
58       self.is_to_s(is) == self.should_to_s
59     end
60
61     def is_to_s(currentvalue = @is)
62       if currentvalue
63         "[#{currentvalue.sort.join(', ')}]"
64       else
65         '[]'
66       end
67     end
68
69     def should_to_s(newvalue = @should)
70       if newvalue
71         "[#{newvalue.sort.join(', ')}]"
72       else
73         '[]'
74       end
75     end
76
77   end
78
79   validate do
80     if self[:ensure] == :present and ! self[:password]
81       raise ArgumentError, 'must set password when creating user' unless self[:password]
82     end
83   end
84
85 end