mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-31 10:13:14 -04: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