- end
-
- # rabbitmq<3.2 does not support the applyto field
- # 1 2 3? 4 5 6
- # / ha-all all .* {"ha-mode":"all","ha-sync-mode":"automatic"} 0 << This is for RabbitMQ v < 3.7.0
- # / ha-all .* all {"ha-mode":"all","ha-sync-mode":"automatic"} 0 << This is for RabbitMQ v >= 3.7.0
- if Puppet::Util::Package.versioncmp(rabbitmq_version, '3.7') >= 0
- regex = %r{^(\S+)\s+(\S+)\s+(\S+)\s+(all|exchanges|queues)?\s+(\S+)\s+(\d+)$}
- applyto_index = 4
- pattern_index = 3
- else
- regex = %r{^(\S+)\s+(\S+)\s+(all|exchanges|queues)?\s*(\S+)\s+(\S+)\s+(\d+)$}
- applyto_index = 3
- pattern_index = 4
- end
-
- policy_list.split(%r{\n}).each do |line|
- raise Puppet::Error, "cannot parse line from list_policies:#{line}" unless line =~ regex
- n = Regexp.last_match(2)
- applyto = Regexp.last_match(applyto_index) || 'all'
- priority = Regexp.last_match(6)
- definition = JSON.parse(Regexp.last_match(5))
- # be aware that the gsub will reset the captures
- # from the regexp above
- pattern = Regexp.last_match(pattern_index).to_s.gsub(%r{\\\\}, '\\')
-
- @policies[vhost][n] = {
- applyto: applyto,
- pattern: pattern,
- definition: definition,
- priority: priority
- }
+ }.split(/\n/).each do |line|
+ # rabbitmq<3.2 does not support the applyto field
+ # 1 2 3? 4 5 6
+ # / ha-all all .* {"ha-mode":"all","ha-sync-mode":"automatic"} 0
+ if line =~ /^(\S+)\s+(\S+)\s+(all|exchanges|queues)?\s*(\S+)\s+(\S+)\s+(\d+)$/
+ applyto = $3 || 'all'
+ @policies[vhost][$2] = {
+ :applyto => applyto,
+ :pattern => $4,
+ :definition => JSON.parse($5),
+ :priority => $6}
+ else
+ raise Puppet::Error, "cannot parse line from list_policies:#{line}"
+ end