From 4343aabba862d179928240548164f803b33da571 Mon Sep 17 00:00:00 2001 From: Manuel de Brito Fontes Date: Thu, 2 Feb 2017 19:41:02 -0300 Subject: [PATCH] Simplify code to obtain TCP or UDP services --- core/pkg/ingress/controller/controller.go | 47 ++++++----------------- 1 file changed, 12 insertions(+), 35 deletions(-) diff --git a/core/pkg/ingress/controller/controller.go b/core/pkg/ingress/controller/controller.go index 408c729e8..be747de0d 100644 --- a/core/pkg/ingress/controller/controller.go +++ b/core/pkg/ingress/controller/controller.go @@ -390,8 +390,8 @@ func (ic *GenericController) sync(key interface{}) error { data, err := ic.cfg.Backend.OnUpdate(ingress.Configuration{ Backends: upstreams, Servers: servers, - TCPEndpoints: ic.getTCPServices(), - UPDEndpoints: ic.getUDPServices(), + TCPEndpoints: ic.getStreamServices(ic.cfg.TCPConfigMapName, api.ProtocolTCP), + UPDEndpoints: ic.getStreamServices(ic.cfg.UDPConfigMapName, api.ProtocolUDP), PassthroughBackends: passUpstreams, }) if err != nil { @@ -411,54 +411,31 @@ func (ic *GenericController) sync(key interface{}) error { return nil } -func (ic *GenericController) getTCPServices() []*ingress.Location { - if ic.cfg.TCPConfigMapName == "" { - // no configmap for TCP services +func (ic *GenericController) getStreamServices(configmapName string, proto api.Protocol) []*ingress.Location { + if configmapName == "" { + // no configmap configured return []*ingress.Location{} } - ns, name, err := k8s.ParseNameNS(ic.cfg.TCPConfigMapName) + ns, name, err := k8s.ParseNameNS(configmapName) if err != nil { - glog.Warningf("%v", err) + glog.Errorf("unexpected error reading configmap %v: %v", name, err) return []*ingress.Location{} } - tcpMap, err := ic.getConfigMap(ns, name) + + configmap, err := ic.getConfigMap(ns, name) if err != nil { - glog.V(5).Infof("no configured tcp services found: %v", err) + glog.Errorf("unexpected error reading configmap %v: %v", name, err) return []*ingress.Location{} } - return ic.getStreamServices(tcpMap.Data, api.ProtocolTCP) -} - -func (ic *GenericController) getUDPServices() []*ingress.Location { - if ic.cfg.UDPConfigMapName == "" { - // no configmap for TCP services - return []*ingress.Location{} - } - - ns, name, err := k8s.ParseNameNS(ic.cfg.UDPConfigMapName) - if err != nil { - glog.Warningf("%v", err) - return []*ingress.Location{} - } - tcpMap, err := ic.getConfigMap(ns, name) - if err != nil { - glog.V(3).Infof("no configured tcp services found: %v", err) - return []*ingress.Location{} - } - - return ic.getStreamServices(tcpMap.Data, api.ProtocolUDP) -} - -func (ic *GenericController) getStreamServices(data map[string]string, proto api.Protocol) []*ingress.Location { var svcs []*ingress.Location // k -> port to expose // v -> /: - for k, v := range data { + for k, v := range configmap.Data { _, err := strconv.Atoi(k) if err != nil { - glog.Warningf("%v is not valid as a TCP port", k) + glog.Warningf("%v is not valid as a TCP/UDP port", k) continue }