mw/kubernete: small cleanup (#810)
* mw/kubernete: small cleanup Small cleanup, avoid pointer to []msg.Services and just returns the msg.Service. * Actually compile * testss
This commit is contained in:
parent
2410f5b3f4
commit
cd1f2f1bbf
4 changed files with 36 additions and 45 deletions
|
@ -100,13 +100,15 @@ type recordRequest struct {
|
||||||
|
|
||||||
var localPodIP net.IP
|
var localPodIP net.IP
|
||||||
|
|
||||||
var errNoItems = errors.New("no items found")
|
var (
|
||||||
var errNsNotExposed = errors.New("namespace is not exposed")
|
errNoItems = errors.New("no items found")
|
||||||
var errInvalidRequest = errors.New("invalid query name")
|
errNsNotExposed = errors.New("namespace is not exposed")
|
||||||
var errZoneNotFound = errors.New("zone not found")
|
errInvalidRequest = errors.New("invalid query name")
|
||||||
var errAPIBadPodType = errors.New("expected type *api.Pod")
|
errZoneNotFound = errors.New("zone not found")
|
||||||
var errPodsDisabled = errors.New("pod records disabled")
|
errAPIBadPodType = errors.New("expected type *api.Pod")
|
||||||
var errResolvConfReadErr = errors.New("resolv.conf read error")
|
errPodsDisabled = errors.New("pod records disabled")
|
||||||
|
errResolvConfReadErr = errors.New("resolv.conf read error")
|
||||||
|
)
|
||||||
|
|
||||||
// Services implements the ServiceBackend interface.
|
// Services implements the ServiceBackend interface.
|
||||||
func (k *Kubernetes) Services(state request.Request, exact bool, opt middleware.Options) (svcs []msg.Service, debug []msg.Service, err error) {
|
func (k *Kubernetes) Services(state request.Request, exact bool, opt middleware.Options) (svcs []msg.Service, debug []msg.Service, err error) {
|
||||||
|
@ -139,26 +141,28 @@ func (k *Kubernetes) Services(state request.Request, exact bool, opt middleware.
|
||||||
}
|
}
|
||||||
return noext, nil, e
|
return noext, nil, e
|
||||||
case "TXT":
|
case "TXT":
|
||||||
err := k.recordsForTXT(r, &svcs)
|
if r.typeName == "dns-version" {
|
||||||
|
srv := k.recordsForTXT(r)
|
||||||
|
svcs = append(svcs, srv)
|
||||||
|
}
|
||||||
return svcs, nil, err
|
return svcs, nil, err
|
||||||
case "NS":
|
case "NS":
|
||||||
err = k.recordsForNS(r, &svcs)
|
srv := k.recordsForNS(r)
|
||||||
|
svcs = append(svcs, srv)
|
||||||
return svcs, nil, err
|
return svcs, nil, err
|
||||||
}
|
}
|
||||||
return nil, nil, nil
|
return nil, nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (k *Kubernetes) recordsForTXT(r recordRequest, svcs *[]msg.Service) (err error) {
|
func (k *Kubernetes) recordsForTXT(r recordRequest) msg.Service {
|
||||||
switch r.typeName {
|
return msg.Service{Text: DNSSchemaVersion, TTL: 28800,
|
||||||
case "dns-version":
|
Key: msg.Path(strings.Join([]string{r.typeName, r.zone}, "."), "coredns")}
|
||||||
s := msg.Service{
|
}
|
||||||
Text: DNSSchemaVersion,
|
|
||||||
TTL: 28800,
|
func (k *Kubernetes) recordsForNS(r recordRequest) msg.Service {
|
||||||
Key: msg.Path(strings.Join([]string{r.typeName, r.zone}, "."), "coredns")}
|
ns := k.coreDNSRecord()
|
||||||
*svcs = append(*svcs, s)
|
return msg.Service{Host: ns.A.String(),
|
||||||
return nil
|
Key: msg.Path(strings.Join([]string{ns.Hdr.Name, r.zone}, "."), "coredns")}
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// PrimaryZone will return the first non-reverse zone being handled by this middleware
|
// PrimaryZone will return the first non-reverse zone being handled by this middleware
|
||||||
|
|
|
@ -6,23 +6,21 @@ import (
|
||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/coredns/coredns/middleware"
|
||||||
|
"github.com/coredns/coredns/request"
|
||||||
|
|
||||||
"github.com/miekg/dns"
|
"github.com/miekg/dns"
|
||||||
"k8s.io/client-go/1.5/pkg/api"
|
"k8s.io/client-go/1.5/pkg/api"
|
||||||
|
|
||||||
"github.com/coredns/coredns/middleware"
|
|
||||||
"github.com/coredns/coredns/middleware/etcd/msg"
|
|
||||||
"github.com/coredns/coredns/request"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestRecordForTXT(t *testing.T) {
|
func TestRecordForTXT(t *testing.T) {
|
||||||
k := Kubernetes{Zones: []string{"inter.webs.test"}}
|
k := Kubernetes{Zones: []string{"inter.webs.test"}}
|
||||||
r, _ := k.parseRequest("dns-version.inter.webs.test", dns.TypeTXT)
|
r, _ := k.parseRequest("dns-version.inter.webs.test", dns.TypeTXT)
|
||||||
expected := DNSSchemaVersion
|
|
||||||
|
|
||||||
var svcs []msg.Service
|
expected := DNSSchemaVersion
|
||||||
k.recordsForTXT(r, &svcs)
|
svc := k.recordsForTXT(r)
|
||||||
if svcs[0].Text != expected {
|
if svc.Text != expected {
|
||||||
t.Errorf("Expected result '%v'. Instead got result '%v'.", expected, svcs[0].Text)
|
t.Errorf("Expected result '%v'. Instead got result '%v'.", expected, svc.Text)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,15 +24,6 @@ func (i interfaceAddrs) interfaceAddrs() ([]net.Addr, error) {
|
||||||
return net.InterfaceAddrs()
|
return net.InterfaceAddrs()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (k *Kubernetes) recordsForNS(r recordRequest, svcs *[]msg.Service) error {
|
|
||||||
ns := k.coreDNSRecord()
|
|
||||||
s := msg.Service{
|
|
||||||
Host: ns.A.String(),
|
|
||||||
Key: msg.Path(strings.Join([]string{ns.Hdr.Name, r.zone}, "."), "coredns")}
|
|
||||||
*svcs = append(*svcs, s)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// DefaultNSMsg returns an msg.Service representing an A record for
|
// DefaultNSMsg returns an msg.Service representing an A record for
|
||||||
// ns.dns.[zone] -> dns service ip. This A record is needed to legitimize
|
// ns.dns.[zone] -> dns service ip. This A record is needed to legitimize
|
||||||
// the SOA response in middleware.NS(), which is hardcoded at ns.dns.[zone].
|
// the SOA response in middleware.NS(), which is hardcoded at ns.dns.[zone].
|
||||||
|
|
|
@ -3,7 +3,6 @@ package kubernetes
|
||||||
import "testing"
|
import "testing"
|
||||||
import "net"
|
import "net"
|
||||||
|
|
||||||
import "github.com/coredns/coredns/middleware/etcd/msg"
|
|
||||||
import "k8s.io/client-go/1.5/pkg/api"
|
import "k8s.io/client-go/1.5/pkg/api"
|
||||||
import "github.com/miekg/dns"
|
import "github.com/miekg/dns"
|
||||||
|
|
||||||
|
@ -12,12 +11,11 @@ func TestRecordForNS(t *testing.T) {
|
||||||
corednsRecord.Hdr.Name = "coredns.kube-system."
|
corednsRecord.Hdr.Name = "coredns.kube-system."
|
||||||
corednsRecord.A = net.IP("1.2.3.4")
|
corednsRecord.A = net.IP("1.2.3.4")
|
||||||
r, _ := k.parseRequest("inter.webs.test", dns.TypeNS)
|
r, _ := k.parseRequest("inter.webs.test", dns.TypeNS)
|
||||||
expected := "/coredns/test/webs/inter/kube-system/coredns"
|
|
||||||
|
|
||||||
var svcs []msg.Service
|
expected := "/coredns/test/webs/inter/kube-system/coredns"
|
||||||
k.recordsForNS(r, &svcs)
|
svc := k.recordsForNS(r)
|
||||||
if svcs[0].Key != expected {
|
if svc.Key != expected {
|
||||||
t.Errorf("Expected result '%v'. Instead got result '%v'.", expected, svcs[0].Key)
|
t.Errorf("Expected result '%v'. Instead got result '%v'.", expected, svc.Key)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,8 +24,8 @@ func TestDefaultNSMsg(t *testing.T) {
|
||||||
corednsRecord.Hdr.Name = "coredns.kube-system."
|
corednsRecord.Hdr.Name = "coredns.kube-system."
|
||||||
corednsRecord.A = net.IP("1.2.3.4")
|
corednsRecord.A = net.IP("1.2.3.4")
|
||||||
r, _ := k.parseRequest("ns.dns.inter.webs.test", dns.TypeA)
|
r, _ := k.parseRequest("ns.dns.inter.webs.test", dns.TypeA)
|
||||||
expected := "/coredns/test/webs/inter/dns/ns"
|
|
||||||
|
|
||||||
|
expected := "/coredns/test/webs/inter/dns/ns"
|
||||||
svc := k.defaultNSMsg(r)
|
svc := k.defaultNSMsg(r)
|
||||||
if svc.Key != expected {
|
if svc.Key != expected {
|
||||||
t.Errorf("Expected result '%v'. Instead got result '%v'.", expected, svc.Key)
|
t.Errorf("Expected result '%v'. Instead got result '%v'.", expected, svc.Key)
|
||||||
|
|
Loading…
Add table
Reference in a new issue