1 Puppet::Type.newtype(:rabbitmq_parameter) do
3 Type for managing rabbitmq parameters
5 @example Create some rabbitmq_parameter resources
6 rabbitmq_parameter { 'documentumShovel@/':
9 'src-uri' => 'amqp://',
10 'src-queue' => 'my-queue',
11 'dest-uri' => 'amqp://remote-server',
12 'dest-queue' => 'another-queue',
15 rabbitmq_parameter { 'documentumFed@/':
16 component_name => 'federation-upstream',
18 'uri' => 'amqp://myserver',
19 'expires' => '360000',
34 autorequire(:service) { 'rabbitmq-server' }
37 raise('component_name parameter is required.') if self[:ensure] == :present && self[:component_name].nil?
38 raise('value parameter is required.') if self[:ensure] == :present && self[:value].nil?
41 newparam(:name, namevar: true) do
42 desc 'combination of name@vhost to set parameter for'
43 newvalues(%r{^\S+@\S+$})
46 newproperty(:component_name) do
47 desc 'The component_name to use when setting parameter, eg: shovel or federation'
49 resource.validate_component_name(value)
53 newproperty(:value) do
54 desc 'A hash of values to use with the component name you are setting'
56 resource.validate_value(value)
59 resource.munge_value(value)
63 autorequire(:rabbitmq_vhost) do
64 [self[:name].split('@')[1]]
67 def validate_component_name(value)
68 raise ArgumentError, 'component_name must be defined' if value.empty?
71 def validate_value(value)
72 raise ArgumentError, 'Invalid value' unless [Hash].include?(value.class)
74 unless [String, TrueClass, FalseClass].include?(v.class)
75 raise ArgumentError, 'Invalid value'
80 def munge_value(value)
82 value[k] = v.to_i if v =~ %r{\A[-+]?[0-9]+\z}