summaryrefslogtreecommitdiff
path: root/lib/puppet/provider/dns_record2/named.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet/provider/dns_record2/named.rb')
-rw-r--r--lib/puppet/provider/dns_record2/named.rb90
1 files changed, 16 insertions, 74 deletions
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]