diff options
Diffstat (limited to '')
-rw-r--r-- | lib/puppet/provider/dns_zone2/named.rb | 80 |
1 files changed, 33 insertions, 47 deletions
diff --git a/lib/puppet/provider/dns_zone2/named.rb b/lib/puppet/provider/dns_zone2/named.rb index e249be6..d929322 100644 --- a/lib/puppet/provider/dns_zone2/named.rb +++ b/lib/puppet/provider/dns_zone2/named.rb @@ -1,8 +1,8 @@ Puppet::Type.type(:dns_zone2).provide(:named) do def self.instances `named-checkconf -l`.split("\n").map do |record| - name, cls, view, type = record.split(' '); - new(:name => name, :cls => cls, :view => view, :type => type) + name, cls, view, type = record.split(' ') + new(name: name, cls: cls, view: view, type: type) end end @@ -12,7 +12,7 @@ Puppet::Type.type(:dns_zone2).provide(:named) do end def destroy - print("Remove #{resource[:name]}\n") + print("Remove #{resource[:name]}\n") end def refresh(records) @@ -25,8 +25,9 @@ Puppet::Type.type(:dns_zone2).provide(:named) do # resource[:ensure] == :present `named-checkconf -l` .split("\n") - .grep(/#{resource[:origin]} /) - .length > 0 + .grep(%r{#{resource[:origin]} }) + .empty? + .! end def filename @@ -34,53 +35,38 @@ Puppet::Type.type(:dns_zone2).provide(:named) do end def zone_content(records) - content = <<~EOF - ; File managed by Puppet. - ; Local changes WILL be overwritten - ; File last generated #{Time.now} + content = <<~EOF + ; File managed by Puppet. + ; Local changes WILL be overwritten + ; File last generated #{Time.now} - $ORIGIN #{resource[:origin]} - $TTL #{resource[:default_ttl]} + $ORIGIN #{resource[:origin]} + $TTL #{resource[:default_ttl]} - @ #{resource[:soa_ttl]} IN SOA #{resource[:mname]} #{resource[:rname]} ( - #{serial+1} ; serial - #{resource[:refresh]} ; refresh - #{resource[:retry]} ; retry - #{resource[:expire]} ; expire - #{resource[:negative_ttl]} ; Negative TTL - ) - EOF + @ #{resource[:soa_ttl]} IN SOA #{resource[:mname]} #{resource[:rname]} ( + #{serial + 1} ; serial + #{resource[:refresh]} ; refresh + #{resource[:retry]} ; retry + #{resource[:expire]} ; expire + #{resource[:negative_ttl]} ; Negative TTL + ) + EOF - records - .filter {|r| r[:zone] == resource[:name] } - .group_by {|r| r[:type]} - .sort_by {|(type, _)| - # Bit of a hack, but ensures that SOA is always first, - # NS is after - # And the rest have stable order - { - SOA: 0, - NS: 1, - A: 2, - AAAA: 3, - CNAME: 4, - HINFO: 5, - MINFO: 6, - MX: 7, - PTR: 8, - TXT: 9, - WKS: 10, - }[type] - }.each{|(type, values)| + records + .filter { |r| r[:zone] == resource[:name] } + .group_by { |r| r[:type] } + .sort # Sort to ensure stable order in output, actual order doesn't matter. + .each do |(type, values)| + content += <<~EOF + ; #{type} Records + EOF + values.each do |val| content += <<~EOF - ; #{type} Records + #{val[:key]} #{val[:ttl]} IN #{val[:type]} #{val[:value]} EOF - values.each {|val| - content += <<~EOF - #{val[:key]} #{val[:ttl]} IN #{val[:type]} #{val[:value]} - EOF - } - } + end + end + content end |