mirror of
https://github.com/coredns/coredns.git
synced 2025-11-01 02:33:14 -04:00
Bugfix: bx in etcd.go didn't get Key
Thus record only diffing in the Key were seen as identical and not included in the end results. Of course this being a map when and if this would happen was rather random. Fixed by including Key. Further small tweaks and code refactors.
This commit is contained in:
@@ -10,13 +10,20 @@ import (
|
||||
"github.com/miekg/dns"
|
||||
)
|
||||
|
||||
func (e Etcd) A(zone string, state middleware.State, previousRecords []dns.RR) (records []dns.RR, err error) {
|
||||
services, err := e.Records(state.Name(), false)
|
||||
func (e Etcd) records(state middleware.State, exact bool) ([]msg.Service, error) {
|
||||
services, err := e.Records(state.Name(), exact)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
services = msg.Group(services)
|
||||
return services, nil
|
||||
}
|
||||
|
||||
func (e Etcd) A(zone string, state middleware.State, previousRecords []dns.RR) (records []dns.RR, err error) {
|
||||
services, err := e.records(state, false)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
for _, serv := range services {
|
||||
ip := net.ParseIP(serv.Host)
|
||||
@@ -73,13 +80,11 @@ func (e Etcd) A(zone string, state middleware.State, previousRecords []dns.RR) (
|
||||
}
|
||||
|
||||
func (e Etcd) AAAA(zone string, state middleware.State, previousRecords []dns.RR) (records []dns.RR, err error) {
|
||||
services, err := e.Records(state.Name(), false)
|
||||
services, err := e.records(state, false)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
services = msg.Group(services)
|
||||
|
||||
for _, serv := range services {
|
||||
ip := net.ParseIP(serv.Host)
|
||||
switch {
|
||||
@@ -139,13 +144,11 @@ func (e Etcd) AAAA(zone string, state middleware.State, previousRecords []dns.RR
|
||||
// SRV returns SRV records from etcd.
|
||||
// If the Target is not a name but an IP address, a name is created on the fly.
|
||||
func (e Etcd) SRV(zone string, state middleware.State) (records []dns.RR, extra []dns.RR, err error) {
|
||||
services, err := e.Records(state.Name(), false)
|
||||
services, err := e.records(state, false)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
services = msg.Group(services)
|
||||
|
||||
// Looping twice to get the right weight vs priority
|
||||
w := make(map[int]int)
|
||||
for _, serv := range services {
|
||||
@@ -224,7 +227,7 @@ func (e Etcd) SRV(zone string, state middleware.State) (records []dns.RR, extra
|
||||
// MX returns MX records from etcd.
|
||||
// If the Target is not a name but an IP address, a name is created on the fly.
|
||||
func (e Etcd) MX(zone string, state middleware.State) (records []dns.RR, extra []dns.RR, err error) {
|
||||
services, err := e.Records(state.Name(), false)
|
||||
services, err := e.records(state, false)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
@@ -282,13 +285,11 @@ func (e Etcd) MX(zone string, state middleware.State) (records []dns.RR, extra [
|
||||
}
|
||||
|
||||
func (e Etcd) CNAME(zone string, state middleware.State) (records []dns.RR, err error) {
|
||||
services, err := e.Records(state.Name(), true)
|
||||
services, err := e.records(state, true)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
services = msg.Group(services)
|
||||
|
||||
if len(services) > 0 {
|
||||
serv := services[0]
|
||||
if ip := net.ParseIP(serv.Host); ip == nil {
|
||||
@@ -299,13 +300,11 @@ func (e Etcd) CNAME(zone string, state middleware.State) (records []dns.RR, err
|
||||
}
|
||||
|
||||
func (e Etcd) TXT(zone string, state middleware.State) (records []dns.RR, err error) {
|
||||
services, err := e.Records(state.Name(), false)
|
||||
services, err := e.records(state, false)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
services = msg.Group(services)
|
||||
|
||||
for _, serv := range services {
|
||||
if serv.Text == "" {
|
||||
continue
|
||||
|
||||
Reference in New Issue
Block a user