File: rabbitmq_exchange.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 (92 lines) | stat: -rw-r--r-- 2,046 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
87
88
89
90
91
92
Puppet::Type.newtype(:rabbitmq_exchange) do
  desc <<-DESC
Native type for managing rabbitmq exchanges

@example Create a rabbitmq_exchange
 rabbitmq_exchange { 'myexchange@myvhost':
   user        => 'dan',
   password    => 'bar',
   type        => 'topic',
   ensure      => present,
   internal    => false,
   auto_delete => false,
   durable     => true,
   arguments   => {
     hash-header => 'message-distribution-hash'
   }
 }
DESC

  ensurable do
    defaultto(:present)
    newvalue(:present) do
      provider.create
    end
    newvalue(:absent) do
      provider.destroy
    end
  end

  newparam(:name, namevar: true) do
    desc 'Name of exchange'
    newvalues(%r{^\S*@\S+$})
  end

  newparam(:type) do
    desc 'Exchange type to be set *on creation*'
    newvalues(%r{^\S+$})
  end

  newparam(:durable) do
    desc 'Exchange durability to be set *on creation*'
    newvalues(%r{^\S+$})
    defaultto 'false'
  end

  newparam(:auto_delete) do
    desc 'Exchange auto delete option to be set *on creation*'
    newvalues(%r{^\S+$})
    defaultto 'false'
  end

  newparam(:internal) do
    desc 'Exchange internal option to be set *on creation*'
    newvalues(%r{^\S+$})
    defaultto 'false'
  end

  newparam(:arguments) do
    desc 'Exchange arguments example: {"hash-header": "message-distribution-hash"}'
    defaultto {}
  end

  newparam(:user) do
    desc 'The user to use to connect to rabbitmq'
    defaultto('guest')
    newvalues(%r{^\S+$})
  end

  newparam(:password) do
    desc 'The password to use to connect to rabbitmq'
    defaultto('guest')
    newvalues(%r{\S+})
  end

  validate do
    if self[:ensure] == :present && self[:type].nil?
      raise ArgumentError, "must set type when creating exchange for #{self[:name]} whose type is #{self[:type]}"
    end
  end

  autorequire(:rabbitmq_vhost) do
    [self[:name].split('@')[1]]
  end

  autorequire(:rabbitmq_user) do
    [self[:user]]
  end

  autorequire(:rabbitmq_user_permissions) do
    ["#{self[:user]}@#{self[:name].split('@')[1]}"]
  end
end