1 Puppet::Type.newtype(:rabbitmq_user) do
3 Native type for managing rabbitmq users
5 @example query all current users
6 $ puppet resource rabbitmq_user
8 @example Configure a user, dan
14 @example Optional parameter tags will set further rabbitmq tags like monitoring, policymaker, etc.
15 To set the administrator tag use admin-flag.
16 rabbitmq_user { 'dan':
19 tags => ['monitoring', 'tag1'],
33 autorequire(:service) { 'rabbitmq-server' }
35 newparam(:name, namevar: true) do
40 newproperty(:password) do
41 desc 'User password to be set *on creation* and validated each run'
43 provider.check_password(should)
46 def change_to_s(_current, _desired)
47 'password has been changed'
51 newproperty(:admin) do
52 desc 'whether or not user should be an admin'
53 newvalues(%r{true|false})
55 # converting to_s in case its a boolean
61 newproperty(:tags, array_matching: :all) do
62 desc 'additional tags for the user'
64 unless value =~ %r{^\S+$}
65 raise ArgumentError, "Invalid tag: #{value.inspect}"
68 if value == 'administrator'
69 raise ArgumentError, 'must use admin property instead of administrator tag'
75 is.sort == should.sort
78 def should_to_s(value)