Update rabbitmq module
[mirror/dsa-puppet.git] / 3rdparty / modules / rabbitmq / lib / puppet / type / rabbitmq_user_permissions.rb
1 Puppet::Type.newtype(:rabbitmq_user_permissions) do
2   desc <<-DESC
3 Type for managing rabbitmq user permissions
4
5 @example Define some rabbitmq_user_permissions
6  rabbitmq_user_permissions { 'dan@myvhost':
7    configure_permission => '.*',
8    read_permission      => '.*',
9    write_permission     => '.*',
10  }
11 DESC
12
13   ensurable do
14     defaultto(:present)
15     newvalue(:present) do
16       provider.create
17     end
18     newvalue(:absent) do
19       provider.destroy
20     end
21   end
22
23   autorequire(:service) { 'rabbitmq-server' }
24
25   newparam(:name, namevar: true) do
26     desc 'combination of user@vhost to grant privileges to'
27     newvalues(%r{^\S+@\S+$})
28   end
29
30   newproperty(:configure_permission) do
31     desc 'regexp representing configuration permissions'
32     validate do |value|
33       resource.validate_permissions(value)
34     end
35   end
36
37   newproperty(:read_permission) do
38     desc 'regexp representing read permissions'
39     validate do |value|
40       resource.validate_permissions(value)
41     end
42   end
43
44   newproperty(:write_permission) do
45     desc 'regexp representing write permissions'
46     validate do |value|
47       resource.validate_permissions(value)
48     end
49   end
50
51   autorequire(:rabbitmq_vhost) do
52     [self[:name].split('@')[1]]
53   end
54
55   autorequire(:rabbitmq_user) do
56     [self[:name].split('@')[0]]
57   end
58
59   def validate_permissions(value)
60     Regexp.new(value)
61   rescue RegexpError
62     raise ArgumentError, "Invalid regexp #{value}"
63   end
64 end