+++ /dev/null
-Puppet::Type.newtype(:rabbitmq_parameter) do
- desc <<-DESC
-Type for managing rabbitmq parameters
-
-@example Create some rabbitmq_parameter resources
- rabbitmq_parameter { 'documentumShovel@/':
- component_name => '',
- value => {
- 'src-uri' => 'amqp://',
- 'src-queue' => 'my-queue',
- 'dest-uri' => 'amqp://remote-server',
- 'dest-queue' => 'another-queue',
- },
- }
- rabbitmq_parameter { 'documentumFed@/':
- component_name => 'federation-upstream',
- value => {
- 'uri' => 'amqp://myserver',
- 'expires' => '360000',
- },
- }
-DESC
-
- ensurable do
- defaultto(:present)
- newvalue(:present) do
- provider.create
- end
- newvalue(:absent) do
- provider.destroy
- end
- end
-
- autorequire(:service) { 'rabbitmq-server' }
-
- validate do
- raise('component_name parameter is required.') if self[:ensure] == :present && self[:component_name].nil?
- raise('value parameter is required.') if self[:ensure] == :present && self[:value].nil?
- end
-
- newparam(:name, namevar: true) do
- desc 'combination of name@vhost to set parameter for'
- newvalues(%r{^\S+@\S+$})
- end
-
- newproperty(:component_name) do
- desc 'The component_name to use when setting parameter, eg: shovel or federation'
- validate do |value|
- resource.validate_component_name(value)
- end
- end
-
- newproperty(:value) do
- desc 'A hash of values to use with the component name you are setting'
- validate do |value|
- resource.validate_value(value)
- end
- munge do |value|
- resource.munge_value(value)
- end
- end
-
- autorequire(:rabbitmq_vhost) do
- [self[:name].split('@')[1]]
- end
-
- def validate_component_name(value)
- raise ArgumentError, 'component_name must be defined' if value.empty?
- end
-
- def validate_value(value)
- raise ArgumentError, 'Invalid value' unless [Hash].include?(value.class)
- value.each do |_k, v|
- unless [String, TrueClass, FalseClass].include?(v.class)
- raise ArgumentError, 'Invalid value'
- end
- end
- end
-
- def munge_value(value)
- value.each do |k, v|
- value[k] = v.to_i if v =~ %r{\A[-+]?[0-9]+\z}
- end
- value
- end
-end