From a94d31e87db7c8e71f3e788575a39c95bf463766 Mon Sep 17 00:00:00 2001 From: Nick Sardo Date: Tue, 21 Mar 2017 17:05:17 -0700 Subject: [PATCH] glbc: watch backend service --- controllers/gce/controller/utils.go | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/controllers/gce/controller/utils.go b/controllers/gce/controller/utils.go index 7efc6cd56..ef8241578 100644 --- a/controllers/gce/controller/utils.go +++ b/controllers/gce/controller/utils.go @@ -216,18 +216,29 @@ func (s *StoreToIngressLister) List() (ing extensions.IngressList, err error) { // GetServiceIngress gets all the Ingress' that have rules pointing to a service. // Note that this ignores services without the right nodePorts. func (s *StoreToIngressLister) GetServiceIngress(svc *api.Service) (ings []extensions.Ingress, err error) { +IngressLoop: for _, m := range s.Store.List() { ing := *m.(*extensions.Ingress) if ing.Namespace != svc.Namespace { continue } - for _, rules := range ing.Spec.Rules { - if rules.IngressRuleValue.HTTP == nil { + + // Check service of default backend + if ing.Spec.Backend != nil && ing.Spec.Backend.ServiceName == svc.Name { + ings = append(ings, ing) + continue + } + + // Check the target service for each path rule + for _, rule := range ing.Spec.Rules { + if rule.IngressRuleValue.HTTP == nil { continue } - for _, p := range rules.IngressRuleValue.HTTP.Paths { + for _, p := range rule.IngressRuleValue.HTTP.Paths { if p.Backend.ServiceName == svc.Name { ings = append(ings, ing) + // Skip the rest of the rules to avoid duplicate ingresses in list + continue IngressLoop } } }