1 Puppet::Type.newtype(:rabbitmq_exchange) do
2 desc 'Native type for managing rabbitmq exchanges'
14 newparam(:name, :namevar => true) do
15 desc 'Name of exchange'
16 newvalues(/^\S*@\S+$/)
20 desc 'Exchange type to be set *on creation*'
25 desc 'Exchange durability to be set *on creation*'
29 newparam(:auto_delete) do
30 desc 'Exchange auto delete option to be set *on creation*'
34 newparam(:internal) do
35 desc 'Exchange internal option to be set *on creation*'
39 newparam(:arguments) do
40 desc 'Exchange arguments example: {"hash-header": "message-distribution-hash"}'
45 desc 'The user to use to connect to rabbitmq'
50 newparam(:password) do
51 desc 'The password to use to connect to rabbitmq'
57 if self[:ensure] == :present and self[:type].nil?
58 raise ArgumentError, "must set type when creating exchange for #{self[:name]} whose type is #{self[:type]}"
62 autorequire(:rabbitmq_vhost) do
63 [self[:name].split('@')[1]]
66 autorequire(:rabbitmq_user) do
70 autorequire(:rabbitmq_user_permissions) do
71 ["#{self[:user]}@#{self[:name].split('@')[1]}"]