Update rabbitmq module
[mirror/dsa-puppet.git] / 3rdparty / modules / rabbitmq / lib / puppet / type / rabbitmq_queue.rb
1 Puppet::Type.newtype(:rabbitmq_queue) do
2   desc <<-DESC
3 Native type for managing rabbitmq queue
4
5 @example Create a rabbitmq_queue
6  rabbitmq_queue { 'myqueue@myvhost':
7    ensure      => present,
8    user        => 'dan',
9    password    => 'bar',
10    durable     => true,
11    auto_delete => false,
12    arguments   => {
13      x-message-ttl          => 123,
14      x-dead-letter-exchange => 'other'
15    },
16  }
17 DESC
18
19   ensurable do
20     defaultto(:present)
21     newvalue(:present) do
22       provider.create
23     end
24     newvalue(:absent) do
25       provider.destroy
26     end
27   end
28
29   newparam(:name, namevar: true) do
30     desc 'Name of queue'
31     newvalues(%r{^\S*@\S+$})
32   end
33
34   newparam(:durable) do
35     desc 'Queue is durable'
36     newvalues(%r{true|false})
37     defaultto('true')
38   end
39
40   newparam(:auto_delete) do
41     desc 'Queue will be auto deleted'
42     newvalues(%r{true|false})
43     defaultto('false')
44   end
45
46   newparam(:arguments) do
47     desc 'Queue arguments example: {x-message-ttl => 60, x-expires => 10}'
48     defaultto {}
49     validate do |value|
50       resource.validate_argument(value)
51     end
52   end
53
54   newparam(:user) do
55     desc 'The user to use to connect to rabbitmq'
56     defaultto('guest')
57     newvalues(%r{^\S+$})
58   end
59
60   newparam(:password) do
61     desc 'The password to use to connect to rabbitmq'
62     defaultto('guest')
63     newvalues(%r{\S+})
64   end
65
66   autorequire(:rabbitmq_vhost) do
67     [self[:name].split('@')[1]]
68   end
69
70   autorequire(:rabbitmq_user) do
71     [self[:user]]
72   end
73
74   autorequire(:rabbitmq_user_permissions) do
75     ["#{self[:user]}@#{self[:name].split('@')[1]}"]
76   end
77
78   def validate_argument(argument)
79     raise ArgumentError, 'Invalid argument' unless [Hash].include?(argument.class)
80   end
81 end