aboutsummaryrefslogtreecommitdiff
path: root/middleware/kubernetes/kubernetes.go
diff options
context:
space:
mode:
Diffstat (limited to 'middleware/kubernetes/kubernetes.go')
-rw-r--r--middleware/kubernetes/kubernetes.go12
1 files changed, 7 insertions, 5 deletions
diff --git a/middleware/kubernetes/kubernetes.go b/middleware/kubernetes/kubernetes.go
index d5766377f..ca7067806 100644
--- a/middleware/kubernetes/kubernetes.go
+++ b/middleware/kubernetes/kubernetes.go
@@ -44,6 +44,9 @@ type Kubernetes struct {
Selector *labels.Selector
}
+var noItemsErr = errors.New("no items found")
+var nsUnexposedErr = errors.New("namespace is not exposed")
+
// Services implements the ServiceBackend interface.
func (k *Kubernetes) Services(state request.Request, exact bool, opt middleware.Options) ([]msg.Service, []msg.Service, error) {
s, e := k.Records(state.Name(), exact)
@@ -67,9 +70,8 @@ func (k *Kubernetes) Lookup(state request.Request, name string, typ uint16) (*dn
}
// IsNameError implements the ServiceBackend interface.
-// TODO(infoblox): implement!
func (k *Kubernetes) IsNameError(err error) bool {
- return false
+ return err == noItemsErr || err == nsUnexposedErr
}
// Debug implements the ServiceBackend interface.
@@ -200,16 +202,16 @@ func (k *Kubernetes) Records(name string, exact bool) ([]msg.Service, error) {
// Abort if the namespace does not contain a wildcard, and namespace is not published per CoreFile
// Case where namespace contains a wildcard is handled in Get(...) method.
if (!nsWildcard) && (len(k.Namespaces) > 0) && (!dnsstrings.StringInSlice(namespace, k.Namespaces)) {
- return nil, nil
+ return nil, nsUnexposedErr
}
k8sItems, err := k.Get(namespace, nsWildcard, serviceName, serviceWildcard, typeName)
if err != nil {
return nil, err
}
- if k8sItems == nil {
+ if len(k8sItems) == 0 {
// Did not find item in k8s
- return nil, nil
+ return nil, noItemsErr
}
records := k.getRecordsForServiceItems(k8sItems, zone)