]> git.donarmstrong.com Git - dsa-puppet.git/blob - 3rdparty/modules/rabbitmq/lib/puppet/type/rabbitmq_queue.rb
move to puppetlabs rabbitmq module
[dsa-puppet.git] / 3rdparty / modules / rabbitmq / lib / puppet / type / rabbitmq_queue.rb
1 Puppet::Type.newtype(:rabbitmq_queue) do
2   desc 'Native type for managing rabbitmq queue'
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   newparam(:name, :namevar => true) do
15     desc 'Name of queue'
16     newvalues(/^\S*@\S+$/)
17   end
18
19   newparam(:durable) do
20     desc 'Queue is durable'
21     newvalues(/true|false/)
22     defaultto('true')
23   end
24   
25   newparam(:auto_delete) do
26     desc 'Queue will be auto deleted'
27     newvalues(/true|false/)
28     defaultto('false')
29   end
30
31   newparam(:arguments) do
32     desc 'Queue arguments example: {x-message-ttl => 60, x-expires => 10}'
33     defaultto {}
34     validate do |value|
35       resource.validate_argument(value)
36     end
37   end
38
39   newparam(:user) do
40     desc 'The user to use to connect to rabbitmq'
41     defaultto('guest')
42     newvalues(/^\S+$/)
43   end
44
45   newparam(:password) do
46     desc 'The password to use to connect to rabbitmq'
47     defaultto('guest')
48     newvalues(/\S+/)
49   end
50
51   autorequire(:rabbitmq_vhost) do
52     [self[:name].split('@')[1]]
53   end
54
55   autorequire(:rabbitmq_user) do
56     [self[:user]]
57   end
58
59   autorequire(:rabbitmq_user_permissions) do
60     ["#{self[:user]}@#{self[:name].split('@')[1]}"]
61   end
62
63   def validate_argument(argument)
64     unless [Hash].include?(argument.class)
65       raise ArgumentError, "Invalid argument"
66     end
67   end
68 end