1 Puppet::Type.newtype(:rabbitmq_exchange) do
3 Native type for managing rabbitmq exchanges
5 @example Create a rabbitmq_exchange
6 rabbitmq_exchange { 'myexchange@myvhost':
15 hash-header => 'message-distribution-hash'
30 newparam(:name, namevar: true) do
31 desc 'Name of exchange'
32 newvalues(%r{^\S*@\S+$})
36 desc 'Exchange type to be set *on creation*'
41 desc 'Exchange durability to be set *on creation*'
46 newparam(:auto_delete) do
47 desc 'Exchange auto delete option to be set *on creation*'
52 newparam(:internal) do
53 desc 'Exchange internal option to be set *on creation*'
58 newparam(:arguments) do
59 desc 'Exchange arguments example: {"hash-header": "message-distribution-hash"}'
64 desc 'The user to use to connect to rabbitmq'
69 newparam(:password) do
70 desc 'The password to use to connect to rabbitmq'
76 if self[:ensure] == :present && self[:type].nil?
77 raise ArgumentError, "must set type when creating exchange for #{self[:name]} whose type is #{self[:type]}"
81 autorequire(:rabbitmq_vhost) do
82 [self[:name].split('@')[1]]
85 autorequire(:rabbitmq_user) do
89 autorequire(:rabbitmq_user_permissions) do
90 ["#{self[:user]}@#{self[:name].split('@')[1]}"]