diff options
Diffstat (limited to 'middleware/kubernetes/kubernetes.go')
-rw-r--r-- | middleware/kubernetes/kubernetes.go | 12 |
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) |