diff options
author | 2018-10-10 15:28:45 -0400 | |
---|---|---|
committer | 2018-10-10 12:28:45 -0700 | |
commit | 974ed086f25ad45a01947e276e2eb8aa73d007a3 (patch) | |
tree | 2c1468f5a4e90634382a81904ef2736ca44198a7 /plugin/kubernetes/controller.go | |
parent | 8432f1420732e61cb1a7ebb9d6446db6f43aa850 (diff) | |
download | coredns-974ed086f25ad45a01947e276e2eb8aa73d007a3.tar.gz coredns-974ed086f25ad45a01947e276e2eb8aa73d007a3.tar.zst coredns-974ed086f25ad45a01947e276e2eb8aa73d007a3.zip |
use keys (#2167)
Diffstat (limited to 'plugin/kubernetes/controller.go')
-rw-r--r-- | plugin/kubernetes/controller.go | 90 |
1 files changed, 36 insertions, 54 deletions
diff --git a/plugin/kubernetes/controller.go b/plugin/kubernetes/controller.go index 1c41b6ddf..b1619a624 100644 --- a/plugin/kubernetes/controller.go +++ b/plugin/kubernetes/controller.go @@ -20,21 +20,19 @@ import ( ) const ( - podIPIndex = "PodIP" - svcNameNamespaceIndex = "NameNamespace" - svcIPIndex = "ServiceIP" - epNameNamespaceIndex = "EndpointNameNamespace" - epIPIndex = "EndpointsIP" + podIPIndex = "PodIP" + svcIPIndex = "ServiceIP" + epIPIndex = "EndpointsIP" ) type dnsController interface { ServiceList() []*object.Service EndpointsList() []*object.Endpoints - SvcIndex(string) []*object.Service - SvcIndexReverse(string) []*object.Service + SvcIndex(string) *object.Service + SvcIndexReverse(string) *object.Service PodIndex(string) []*object.Pod - EpIndex(string) []*object.Endpoints - EpIndexReverse(string) []*object.Endpoints + EpIndex(string) *object.Endpoints + EpIndexReverse(string) *object.Endpoints GetNodeByName(string) (*api.Node, error) GetNamespaceByName(string) (*api.Namespace, error) @@ -118,7 +116,7 @@ func newdnsController(kubeClient kubernetes.Interface, opts dnsControlOpts) *dns &object.Service{}, opts.resyncPeriod, cache.ResourceEventHandlerFuncs{AddFunc: dns.Add, UpdateFunc: dns.Update, DeleteFunc: dns.Delete}, - cache.Indexers{svcNameNamespaceIndex: svcNameNamespaceIndexFunc, svcIPIndex: svcIPIndexFunc}, + cache.Indexers{svcIPIndex: svcIPIndexFunc}, object.ToService, ) @@ -145,7 +143,7 @@ func newdnsController(kubeClient kubernetes.Interface, opts dnsControlOpts) *dns &api.Endpoints{}, opts.resyncPeriod, cache.ResourceEventHandlerFuncs{AddFunc: dns.Add, UpdateFunc: dns.Update, DeleteFunc: dns.Delete}, - cache.Indexers{epNameNamespaceIndex: epNameNamespaceIndexFunc, epIPIndex: epIPIndexFunc}, + cache.Indexers{epIPIndex: epIPIndexFunc}, object.ToEndpoints) } @@ -175,22 +173,6 @@ func svcIPIndexFunc(obj interface{}) ([]string, error) { return []string{svc.ClusterIP}, nil } -func svcNameNamespaceIndexFunc(obj interface{}) ([]string, error) { - s, ok := obj.(*object.Service) - if !ok { - return nil, errObj - } - return []string{s.Index}, nil -} - -func epNameNamespaceIndexFunc(obj interface{}) ([]string, error) { - s, ok := obj.(*object.Endpoints) - if !ok { - return nil, errObj - } - return []string{s.Index}, nil -} - func epIPIndexFunc(obj interface{}) ([]string, error) { ep, ok := obj.(*object.Endpoints) if !ok { @@ -359,6 +341,9 @@ func (dns *dnsControl) EndpointsList() (eps []*object.Endpoints) { } func (dns *dnsControl) PodIndex(ip string) (pods []*object.Pod) { + if dns.podLister == nil { + return nil + } os, err := dns.podLister.ByIndex(podIPIndex, ip) if err != nil { return nil @@ -368,27 +353,24 @@ func (dns *dnsControl) PodIndex(ip string) (pods []*object.Pod) { if !ok { continue } - pods = append(pods, p) + return []*object.Pod{p} } - return pods + return nil } -func (dns *dnsControl) SvcIndex(idx string) (svcs []*object.Service) { - os, err := dns.svcLister.ByIndex(svcNameNamespaceIndex, idx) +func (dns *dnsControl) SvcIndex(key string) *object.Service { + o, _, err := dns.svcLister.GetByKey(key) if err != nil { return nil } - for _, o := range os { - s, ok := o.(*object.Service) - if !ok { - continue - } - svcs = append(svcs, s) + s, ok := o.(*object.Service) + if !ok { + return nil } - return svcs + return s } -func (dns *dnsControl) SvcIndexReverse(ip string) (svcs []*object.Service) { +func (dns *dnsControl) SvcIndexReverse(ip string) *object.Service { os, err := dns.svcLister.ByIndex(svcIPIndex, ip) if err != nil { return nil @@ -399,27 +381,27 @@ func (dns *dnsControl) SvcIndexReverse(ip string) (svcs []*object.Service) { if !ok { continue } - svcs = append(svcs, s) + return s } - return svcs + return nil } -func (dns *dnsControl) EpIndex(idx string) (ep []*object.Endpoints) { - os, err := dns.epLister.ByIndex(epNameNamespaceIndex, idx) +func (dns *dnsControl) EpIndex(key string) (ep *object.Endpoints) { + o, _, err := dns.epLister.GetByKey(key) if err != nil { return nil } - for _, o := range os { - e, ok := o.(*object.Endpoints) - if !ok { - continue - } - ep = append(ep, e) + e, ok := o.(*object.Endpoints) + if !ok { + return nil } - return ep + return e } -func (dns *dnsControl) EpIndexReverse(ip string) (ep []*object.Endpoints) { +func (dns *dnsControl) EpIndexReverse(ip string) (ep *object.Endpoints) { + if dns.epLister == nil { + return nil + } os, err := dns.epLister.ByIndex(epIPIndex, ip) if err != nil { return nil @@ -429,9 +411,9 @@ func (dns *dnsControl) EpIndexReverse(ip string) (ep []*object.Endpoints) { if !ok { continue } - ep = append(ep, e) + return e } - return ep + return nil } // GetNodeByName return the node by name. If nothing is found an error is @@ -450,7 +432,7 @@ func (dns *dnsControl) GetNamespaceByName(name string) (*api.Namespace, error) { if !ok { continue } - if name == ns.ObjectMeta.Name { + if name == ns.GetName() { return ns, nil } } |