mirror of
https://github.com/coredns/coredns.git
synced 2025-12-06 02:15:11 -05:00
plugin/nomad: Add a Nomad plugin (#7467)
Signed-off-by: Olli Janatuinen <olli.janatuinen@gmail.com>
This commit is contained in:
68
plugin/nomad/helpers.go
Normal file
68
plugin/nomad/helpers.go
Normal file
@@ -0,0 +1,68 @@
|
||||
package nomad
|
||||
|
||||
import (
|
||||
"net"
|
||||
|
||||
"github.com/hashicorp/nomad/api"
|
||||
"github.com/miekg/dns"
|
||||
)
|
||||
|
||||
func addSRVRecord(m *dns.Msg, s *api.ServiceRegistration, header dns.RR_Header, originalQName string, addr net.IP, ttl uint32) error {
|
||||
srvRecord := &dns.SRV{
|
||||
Hdr: header,
|
||||
Target: originalQName,
|
||||
Port: uint16(s.Port),
|
||||
Priority: 10,
|
||||
Weight: 10,
|
||||
}
|
||||
m.Answer = append(m.Answer, srvRecord)
|
||||
|
||||
if addr.To4() == nil {
|
||||
addExtrasToAAAARecord(m, originalQName, ttl, addr)
|
||||
} else {
|
||||
addExtrasToARecord(m, originalQName, ttl, addr)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func addExtrasToARecord(m *dns.Msg, originalQName string, ttl uint32, addr net.IP) {
|
||||
header := dns.RR_Header{
|
||||
Name: originalQName,
|
||||
Rrtype: dns.TypeA,
|
||||
Class: dns.ClassINET,
|
||||
Ttl: ttl,
|
||||
}
|
||||
m.Extra = append(m.Extra, &dns.A{Hdr: header, A: addr})
|
||||
}
|
||||
|
||||
func addExtrasToAAAARecord(m *dns.Msg, originalQName string, ttl uint32, addr net.IP) {
|
||||
header := dns.RR_Header{
|
||||
Name: originalQName,
|
||||
Rrtype: dns.TypeAAAA,
|
||||
Class: dns.ClassINET,
|
||||
Ttl: ttl,
|
||||
}
|
||||
m.Extra = append(m.Extra, &dns.AAAA{Hdr: header, AAAA: addr})
|
||||
}
|
||||
|
||||
func addARecord(m *dns.Msg, header dns.RR_Header, addr net.IP) {
|
||||
m.Answer = append(m.Answer, &dns.A{Hdr: header, A: addr})
|
||||
}
|
||||
|
||||
func addAAAARecord(m *dns.Msg, header dns.RR_Header, addr net.IP) {
|
||||
m.Answer = append(m.Answer, &dns.AAAA{Hdr: header, AAAA: addr})
|
||||
}
|
||||
|
||||
func createSOARecord(originalQName string, ttl uint32, zone string) *dns.SOA {
|
||||
return &dns.SOA{
|
||||
Hdr: dns.RR_Header{Name: dns.Fqdn(originalQName), Rrtype: dns.TypeSOA, Class: dns.ClassINET, Ttl: ttl},
|
||||
Ns: dns.Fqdn("ns1." + originalQName),
|
||||
Mbox: dns.Fqdn("hostmaster." + zone),
|
||||
Serial: 0,
|
||||
Refresh: 3600,
|
||||
Retry: 600,
|
||||
Expire: 86400,
|
||||
Minttl: 30,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user