aboutsummaryrefslogtreecommitdiff
path: root/middleware/kubernetes/parse.go
diff options
context:
space:
mode:
authorGravatar Miek Gieben <miek@miek.nl> 2017-08-11 12:12:21 +0100
committerGravatar Miek Gieben <miek@miek.nl> 2017-08-11 12:12:21 +0100
commit6e91408f61bdd78aef8f8e368410793334eb35fc (patch)
tree153cc070363281a302add2194cfb7756f4639f4d /middleware/kubernetes/parse.go
parentb5d2a82ed742f80016868f492f76e86b74645919 (diff)
downloadcoredns-6e91408f61bdd78aef8f8e368410793334eb35fc.tar.gz
coredns-6e91408f61bdd78aef8f8e368410793334eb35fc.tar.zst
coredns-6e91408f61bdd78aef8f8e368410793334eb35fc.zip
mw/k8s: use request.Request in parseRequest
Diffstat (limited to 'middleware/kubernetes/parse.go')
-rw-r--r--middleware/kubernetes/parse.go21
1 files changed, 9 insertions, 12 deletions
diff --git a/middleware/kubernetes/parse.go b/middleware/kubernetes/parse.go
index 790060896..1ab8fd1c6 100644
--- a/middleware/kubernetes/parse.go
+++ b/middleware/kubernetes/parse.go
@@ -2,6 +2,7 @@ package kubernetes
import (
"github.com/coredns/coredns/middleware/pkg/dnsutil"
+ "github.com/coredns/coredns/request"
"github.com/miekg/dns"
)
@@ -23,33 +24,29 @@ type recordRequest struct {
federation string
}
-// TODO(miek): make it use request.Request.
-func (k *Kubernetes) parseRequest(lowerCasedName string, qtype uint16, zone ...string) (r recordRequest, err error) {
+// parseRequest parses the qname to find all the elements we need for querying k8s.
+func (k *Kubernetes) parseRequest(state request.Request) (r recordRequest, err error) {
// 3 Possible cases
// SRV Request: _port._protocol.service.namespace.[federation.]type.zone
// A Request (endpoint): endpoint.service.namespace.[federation.]type.zone
// A Request (service): service.namespace.[federation.]type.zone
- if len(zone) == 0 {
- panic("parseRequest must be called with a zone")
- }
-
- base, _ := dnsutil.TrimZone(lowerCasedName, zone[0])
+ base, _ := dnsutil.TrimZone(state.Name(), state.Zone)
segs := dns.SplitDomainName(base)
- r.zone = zone[0]
+ r.zone = state.Zone
r.federation, segs = k.stripFederation(segs)
- if qtype == dns.TypeNS {
+ if state.QType() == dns.TypeNS {
return r, nil
}
- if qtype == dns.TypeA && isDefaultNS(lowerCasedName, r) {
+ if state.QType() == dns.TypeA && isDefaultNS(state.Name(), r) {
return r, nil
}
offset := 0
- if qtype == dns.TypeSRV {
+ if state.QType() == dns.TypeSRV {
// The kubernetes peer-finder expects queries with empty port and service to resolve
// If neither is specified, treat it as a wildcard
if len(segs) == 3 {
@@ -87,7 +84,7 @@ func (k *Kubernetes) parseRequest(lowerCasedName string, qtype uint16, zone ...s
offset = 2
}
}
- if (qtype == dns.TypeA || qtype == dns.TypeAAAA) && len(segs) == 4 {
+ if (state.QType() == dns.TypeA || state.QType() == dns.TypeAAAA) && len(segs) == 4 {
// This is an endpoint A/AAAA record request. Get first element as endpoint.
r.endpoint = segs[0]
offset = 1