From 90ed20d687a4524bc8225a8c33188681f5447e52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Tue, 6 Jun 2023 21:42:35 +0200 Subject: work. --- lib/puppet/provider/dns_record2/named.rb | 90 ++++++-------------------------- 1 file changed, 16 insertions(+), 74 deletions(-) (limited to 'lib/puppet/provider/dns_record2/named.rb') diff --git a/lib/puppet/provider/dns_record2/named.rb b/lib/puppet/provider/dns_record2/named.rb index 61f4a96..13fe5ee 100644 --- a/lib/puppet/provider/dns_record2/named.rb +++ b/lib/puppet/provider/dns_record2/named.rb @@ -1,39 +1,16 @@ -# require 'resolv' - Puppet::Type.type(:dns_record2).provide(:named) do def self.instances - objects = [] - # `named-checkconf -l`.split("\n").each do |zone| - # zonename, cls, view, _ = zone.split(' ') - # path = `rndc zonestatus #{zonename} #{cls} #{view} 2>/dev/null | awk -F' ' '/^files:/ { print $2 }'`.strip; - # `named-checkzone -q -D #{zonename} /var/named/#{path} | sed 's/[[:space:]]\+/ /g'`.split("\n").each do |record| - # key, ttl, cls, type, *value = record.split(' ') - # value = value.join(' ') - - # name = "#{zonename} #{cls} #{view} #{key} #{type} #{value}" - - # objects << new(:name => name, - # :key => key, - # :ttl => ttl, - # :class => cls, - # :type => type, - # :value => value) - # end - # end - objects + [] end - def create - # print("Create\n") - end + # Create and destroy don't do anything on their own, + # See comment in type + def create; end - def destroy - # print("Destroy\n") - end + def destroy; end def exists? - # print("record = [#{record().inspect}]\n") - record() != nil + record != nil end def type @@ -41,8 +18,7 @@ Puppet::Type.type(:dns_record2).provide(:named) do end def value - # print("Get old value (#{resource[:value]}, #{get(:value)})\n") - t = record() + t = record case t when NilClass :absent @@ -53,10 +29,8 @@ Puppet::Type.type(:dns_record2).provide(:named) do end end - def value=(v) - # print("Set new value (#{v})\n") - # resource[:value] = v - end + # TODO: should we have this? + def value=(v); end def key resource[:key] @@ -80,49 +54,17 @@ Puppet::Type.type(:dns_record2).provide(:named) do end end - # def zone=(v) - # # set(:zone, v) - # resource[:zone] = v - # end - def record - # dns = Resolv::DNS.new(nameserver: ['localhost']) - # type = { - # A: Resolv::DNS::Resource::IN::A, - # AAAA: Resolv::DNS::Resource::IN::AAAA, - # CNAME: Resolv::DNS::Resource::IN::CNAME, - # HINFO: Resolv::DNS::Resource::IN::HINFO, - # MINFO: Resolv::DNS::Resource::IN::MINFO, - # MX: Resolv::DNS::Resource::IN::MX, - # NS: Resolv::DNS::Resource::IN::NS, - # PTR: Resolv::DNS::Resource::IN::PTR, - # SOA: Resolv::DNS::Resource::IN::SOA, - # TXT: Resolv::DNS::Resource::IN::TXT, - # WKS: Resolv::DNS::Resource::IN::WKS, - # }[resource[:type]] - - # if type == nil - # nil - # else - # rs = dns.getresources(full_key, type) - # if rs.length == 0 - # nil - # else - # rs[0] - # end - # end lines = `named-checkzone -j -q -D #{zone} /var/named/zones/#{zone}db` - .split("\n") - .map {|line| line.gsub(/[[:space:]]+/, ' ').split(' ') } - - matches = lines - .filter {|line| - line[0] == full_key and line[3].to_sym == resource[:type] - } - .map {|line| line[(4..)].join(' ') } + .split("\n") + .map { |line| line.gsub(%r{[[:space:]]+}, ' ').split(' ') } + matches = + lines + .filter { |line| line[0] == full_key && line[3].to_sym == resource[:type] } + .map { |line| line[(4..)].join(' ') } - if matches.length == 0 + if matches.empty? nil elsif matches.length == 1 matches[0] -- cgit v1.2.3