diff options
Diffstat (limited to 'lib/puppet/provider/dns_zone2/named.rb')
-rw-r--r-- | lib/puppet/provider/dns_zone2/named.rb | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/lib/puppet/provider/dns_zone2/named.rb b/lib/puppet/provider/dns_zone2/named.rb index c1e39c5..3a59c81 100644 --- a/lib/puppet/provider/dns_zone2/named.rb +++ b/lib/puppet/provider/dns_zone2/named.rb @@ -1,5 +1,4 @@ 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(' ') @@ -7,20 +6,10 @@ Puppet::Type.type(:dns_zone2).provide(:named) do end end - def create(records) - print("Create #{resource[:name]}\n") - end - - def destroy - print("Remove #{resource[:name]}\n") - end - def exists? - # instances.find { |r| r.name == resource[:name] } - # resource[:ensure] == :present `named-checkconf -l` .split("\n") - .grep(%r{#{resource[:origin]} }) + .grep(%r{^#{origin_rx} }) .empty? .! end @@ -29,7 +18,7 @@ Puppet::Type.type(:dns_zone2).provide(:named) do "/var/named/zones/#{resource[:name]}db" end - def zone_content(records) + def zone_content(records, serial_change) content = <<~EOF ; File managed by Puppet. ; Local changes WILL be overwritten @@ -39,7 +28,7 @@ Puppet::Type.type(:dns_zone2).provide(:named) do $TTL #{resource[:default_ttl]} @ #{resource[:soa_ttl]} IN SOA #{resource[:mname]} #{resource[:rname]} ( - #{serial + 1} ; serial + #{serial + serial_change} ; serial #{resource[:refresh]} ; refresh #{resource[:retry]} ; retry #{resource[:expire]} ; expire @@ -65,7 +54,13 @@ Puppet::Type.type(:dns_zone2).provide(:named) do content end + # The current (before updating) serial of the zone def serial `rndc zonestatus #{name} | awk -F' ' '/^serial:/ { print $2 }'`.to_i end + + # A regex matching the origin + def origin_rx + resource[:origin].gsub(%r{[.]}, '[.]') + end end |