summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2022-02-16 14:50:11 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2022-02-16 16:38:22 +0100
commiteb62296200c4665af45591baec7c47a608fe395f (patch)
tree9e6cd7ce6c4b7ca2f2a4260a90f517b62c863117
parentAdd SOA fields for dns_zone. (diff)
downloaddns_record-eb62296200c4665af45591baec7c47a608fe395f.tar.gz
dns_record-eb62296200c4665af45591baec7c47a608fe395f.tar.xz
Add value and ttl setting for dns_record.
-rw-r--r--lib/puppet/provider/dns_record/zonefile.rb29
1 files 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