Skip to content

Commit 844a74f

Browse files
committed
OPTIM/MINOR: Ignore "Status" in TCP Services annotations
1 parent 708775f commit 844a74f

File tree

1 file changed

+30
-12
lines changed

1 file changed

+30
-12
lines changed

controller/handler/tcp-services.go

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,25 +31,15 @@ func (t TCPServices) Update(k store.K8s, cfg *config.ControllerCfg, api api.HAPr
3131
if k.ConfigMaps.TCPServices == nil {
3232
return false, nil
3333
}
34+
reload = t.clearFrontends(api, k)
3435
var p tcpSvcParser
3536
for port, tcpSvcAnn := range k.ConfigMaps.TCPServices.Annotations {
37+
frontendName := fmt.Sprintf("tcp-%s", port)
3638
p, err = t.parseTCPService(k, tcpSvcAnn.Value)
3739
if err != nil {
3840
logger.Error(err)
3941
continue
4042
}
41-
// Delete Frontend
42-
frontendName := fmt.Sprintf("tcp-%s", port)
43-
if tcpSvcAnn.Status == store.DELETED || p.service.Status == store.DELETED {
44-
err = api.FrontendDelete(frontendName)
45-
if err != nil {
46-
logger.Errorf("error deleting tcp frontend '%s': %s", frontendName, err)
47-
} else {
48-
reload = true
49-
logger.Debugf("TCP frontend '%s' deleted, reload required", frontendName)
50-
}
51-
continue
52-
}
5343
frontend, errGet := api.FrontendGet(frontendName)
5444
// Create Frontend
5545
if errGet != nil {
@@ -106,6 +96,28 @@ func (t TCPServices) parseTCPService(store store.K8s, input string) (p tcpSvcPar
10696
return p, err
10797
}
10898

99+
func (t TCPServices) clearFrontends(api api.HAProxyClient, k store.K8s) (cleared bool) {
100+
frontends, err := api.FrontendsGet()
101+
if err != nil {
102+
logger.Error(err)
103+
return
104+
}
105+
for _, ft := range frontends {
106+
_, isRequired := k.ConfigMaps.TCPServices.Annotations[strings.TrimPrefix(ft.Name, "tcp-")]
107+
isTCPSvc := strings.HasPrefix(ft.Name, "tcp-")
108+
if isTCPSvc && !isRequired {
109+
err = api.FrontendDelete(ft.Name)
110+
if err != nil {
111+
logger.Errorf("error deleting tcp frontend '%s': %s", ft.Name, err)
112+
} else {
113+
cleared = true
114+
logger.Debugf("TCP frontend '%s' deleted, reload required", ft.Name)
115+
}
116+
}
117+
}
118+
return
119+
}
120+
109121
func (t TCPServices) createTCPFrontend(api api.HAProxyClient, frontendName, bindPort string, sslOffload bool) (frontend models.Frontend, reload bool, err error) {
110122
// Create Frontend
111123
frontend = models.Frontend{
@@ -164,6 +176,12 @@ func (t TCPServices) updateTCPFrontend(api api.HAProxyClient, frontend models.Fr
164176
logger.Debugf("TCP frontend '%s': ssl offload disabled, reload required", frontend.Name)
165177
reload = true
166178
}
179+
if p.service.Status == store.DELETED {
180+
frontend.DefaultBackend = ""
181+
err = api.FrontendEdit(frontend)
182+
reload = true
183+
return
184+
}
167185
ingress := &store.Ingress{
168186
Namespace: p.service.Namespace,
169187
Annotations: store.MapStringW{},

0 commit comments

Comments
 (0)