diff options
author | 2017-08-07 07:09:32 -0700 | |
---|---|---|
committer | 2017-08-07 07:09:32 -0700 | |
commit | 760e66706381ada5c4a589650175d07e8aeb09f0 (patch) | |
tree | ce0472143c20801a3637fa1ae774b4a8d1e2bb91 /middleware/kubernetes/handler.go | |
parent | 050eccd69e2381fa865b5c527618111ab7c7d21d (diff) | |
download | coredns-760e66706381ada5c4a589650175d07e8aeb09f0.tar.gz coredns-760e66706381ada5c4a589650175d07e8aeb09f0.tar.zst coredns-760e66706381ada5c4a589650175d07e8aeb09f0.zip |
middleware/kubernetes: autopath in sub package (#848)
Put the autopath stuff in a separate sub package. Tests are still
included in the main kubernetes directory.
Next steps (after this is merged), is pulling the autopath handling
into the subpackage and fixing the tests.
Diffstat (limited to 'middleware/kubernetes/handler.go')
-rw-r--r-- | middleware/kubernetes/handler.go | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/middleware/kubernetes/handler.go b/middleware/kubernetes/handler.go index e7660c3a9..3ef4f7a37 100644 --- a/middleware/kubernetes/handler.go +++ b/middleware/kubernetes/handler.go @@ -5,6 +5,7 @@ import ( "strings" "github.com/coredns/coredns/middleware" + "github.com/coredns/coredns/middleware/kubernetes/autopath" "github.com/coredns/coredns/middleware/pkg/dnsutil" "github.com/coredns/coredns/request" @@ -41,14 +42,14 @@ func (k Kubernetes) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.M records, extra, _, err := k.routeRequest(zone, state) // Check for Autopath search eligibility - if k.AutoPath.Enabled && k.IsNameError(err) && (state.QType() == dns.TypeA || state.QType() == dns.TypeAAAA) { + if (k.autoPath != nil) && k.IsNameError(err) && (state.QType() == dns.TypeA || state.QType() == dns.TypeAAAA) { p := k.findPodWithIP(state.IP()) for p != nil { name, path, ok := splitSearch(zone, state.QName(), p.Namespace) if !ok { break } - if (dns.CountLabel(name) - 1) < k.AutoPath.NDots { + if (dns.CountLabel(name) - 1) < k.autoPath.NDots { break } origQName := state.QName() @@ -60,7 +61,7 @@ func (k Kubernetes) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.M if !k.IsNameError(err) && len(records) > 0 { records = append(records, nil) copy(records[1:], records) - records[0] = newCNAME(origQName, records[0].Header().Name, records[0].Header().Ttl) + records[0] = autopath.CNAME(origQName, records[0].Header().Name, records[0].Header().Ttl) break } } @@ -68,8 +69,8 @@ func (k Kubernetes) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.M break } // Try host search path (if set) in the next middleware - apw := NewAutoPathWriter(w, r) - for _, hostsearch := range k.AutoPath.HostSearchPath { + apw := autopath.NewWriter(w, r) + for _, hostsearch := range k.autoPath.HostSearchPath { newstate := state.NewWithQuestion(strings.Join([]string{name, hostsearch}, "."), state.QType()) rcode, nextErr := middleware.NextOrFailure(k.Name(), k.Next, ctx, apw, newstate.Req) if apw.Sent { @@ -82,11 +83,11 @@ func (k Kubernetes) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.M if !k.IsNameError(err) && len(records) > 0 { records = append(records, nil) copy(records[1:], records) - records[0] = newCNAME(origQName, records[0].Header().Name, records[0].Header().Ttl) + records[0] = autopath.CNAME(origQName, records[0].Header().Name, records[0].Header().Ttl) break } // Search . in the next middleware - apw.Rcode = k.AutoPath.OnNXDOMAIN + apw.Rcode = k.autoPath.OnNXDOMAIN newstate = state.NewWithQuestion(strings.Join([]string{name, "."}, ""), state.QType()) r = newstate.Req rcode, nextErr := middleware.NextOrFailure(k.Name(), k.Next, ctx, apw, r) @@ -125,11 +126,6 @@ func (k Kubernetes) ServeDNS(ctx context.Context, w dns.ResponseWriter, r *dns.M return dns.RcodeSuccess, nil } -func newCNAME(name string, target string, ttl uint32) *dns.CNAME { - // TODO factor this out and put in dnsutil - return &dns.CNAME{Hdr: dns.RR_Header{Name: name, Rrtype: dns.TypeCNAME, Class: dns.ClassINET, Ttl: ttl}, Target: dns.Fqdn(target)} -} - func (k *Kubernetes) routeRequest(zone string, state request.Request) (records []dns.RR, extra []dns.RR, debug []dns.RR, err error) { switch state.Type() { case "A": |