diff --git a/lib/refrepo/gen/puppet/bindg5k.rb b/lib/refrepo/gen/puppet/bindg5k.rb index 1aeec23169a8295fa18d4bcdeafeefbe250c3d5b..7b50a9c571712db3ff9dfd0193869e70035578f3 100644 --- a/lib/refrepo/gen/puppet/bindg5k.rb +++ b/lib/refrepo/gen/puppet/bindg5k.rb @@ -163,24 +163,40 @@ end def get_networks_records(site, key) records = [] - site[key].sort.each { |uid, node| - if node['ip'].nil? + site[key].sort.each { |uid, net| + if net['ip'].nil? puts "Warning: no IP for #{uid}" next end - if node['ip'] + if net['ip'] new_record = DNS::Zone::RR::A.new - new_record.address = node['ip'] + new_record.address = net['ip'] new_record.label = uid records << new_record end - if node['ip6'] + if net['ip6'] new_record_ipv6 = DNS::Zone::RR::AAAA.new - new_record_ipv6.address = node['ip6'] + new_record_ipv6.address = net['ip6'] new_record_ipv6.label = uid + '-ipv6' records << new_record_ipv6 end + if net['alias'] + net['alias'].each{ |a| + if a.is_a?(Hash) + new_record = DNS::Zone::RR::A.new + new_record.address = a['ip'] + new_record.label = a['name'] + records << new_record + end + if a.is_a?(String) and !a.include?('.') #Reject global aliases (See 7513) + cname_record = DNS::Zone::RR::CNAME.new + cname_record.label = a + cname_record.domainname = uid + records << cname_record + end + } + end } return records