From eb62296200c4665af45591baec7c47a608fe395f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Wed, 16 Feb 2022 14:50:11 +0100 Subject: Add value and ttl setting for dns_record. --- lib/puppet/provider/dns_record/zonefile.rb | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/lib/puppet/provider/dns_record/zonefile.rb b/lib/puppet/provider/dns_record/zonefile.rb index bcd8969..df220b7 100644 --- a/lib/puppet/provider/dns_record/zonefile.rb +++ b/lib/puppet/provider/dns_record/zonefile.rb @@ -78,6 +78,10 @@ Puppet::Type.type(:dns_record).provide(:zonefile) do end def exists? + !! find_self + end + + def find_self zone = get_zone(resource[:zone]) t = resource[:type] case t @@ -85,18 +89,29 @@ Puppet::Type.type(:dns_record).provide(:zonefile) do dataset = Zonefile::RECORDS.map {|t| t.downcase.intern}.map {|t| zone.records[t]}.flatten dataset.find {|record| record[:name] == resource[:key]} when :AAAA - !! zone.a4.find {|record| record[:name] == resource[:key]} + zone.a4.find {|record| record[:name] == resource[:key]} else - !! zone.records[t.downcase.intern].find {|record| record[:name] == resource[:key]} + zone.records[t.downcase.intern].find {|record| record[:name] == resource[:key]} end end + # Setting new values on type or key doesn't make sense, since they + # are our primary keys. + def type resource[:type] end def value - resource[:value] + record = find_self + record && record[:host] + end + + def value=(value) + record = find_self + # Puppet creates the resources instead of setting it the fetch + # method failed + record[:host] = value end def key @@ -104,6 +119,12 @@ Puppet::Type.type(:dns_record).provide(:zonefile) do end def ttl - resource[:ttl] + record = find_self + record && record[:ttl] + end + + def ttl=(value) + record = find_self + record[:ttl] = value end end -- cgit v1.2.3