File: rabbitmq_parameter.rb

package info (click to toggle)
puppet-module-puppetlabs-rabbitmq 8.5.0-10
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,192 kB
  • sloc: ruby: 5,227; sh: 10; makefile: 4
file content (86 lines) | stat: -rw-r--r-- 2,217 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
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