1 Puppet::Type.newtype(:rabbitmq_user) do
2 desc 'Native type for managing rabbitmq users'
14 autorequire(:service) { 'rabbitmq-server' }
16 newparam(:name, :namevar => true) do
21 newproperty(:password) do
22 desc 'User password to be set *on creation* and validated each run'
24 provider.check_password
27 provider.change_password
29 def change_to_s(current, desired)
30 "password has been changed"
34 newproperty(:admin) do
35 desc 'whether or not user should be an admin'
36 newvalues(/true|false/)
38 # converting to_s in case its a boolean
44 newproperty(:tags, :array_matching => :all) do
45 desc 'additional tags for the user'
47 unless value =~ /^\S+$/
48 raise ArgumentError, "Invalid tag: #{value.inspect}"
51 if value == "administrator"
52 raise ArgumentError, "must use admin property instead of administrator tag"
58 self.is_to_s(is) == self.should_to_s
61 def is_to_s(currentvalue = @is)
63 "[#{currentvalue.sort.join(', ')}]"
69 def should_to_s(newvalue = @should)
71 "[#{newvalue.sort.join(', ')}]"
80 if self[:ensure] == :present and ! self[:password]
81 raise ArgumentError, 'must set password when creating user' unless self[:password]