Skip to content

Commit d6a5779

Browse files
authored
Merge pull request #317 from sjberman/cherrypick-312
Merge pull request #312 from sjberman/class_annotation
2 parents 6c265d0 + b3153e3 commit d6a5779

File tree

3 files changed

+28
-2
lines changed

3 files changed

+28
-2
lines changed

docs/RELEASE-NOTES.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@ Release Notes for BIG-IP Controller for Kubernetes
44
|release|
55
---------
66

7+
Bug Fixes
8+
`````````
9+
* - Fix SIGSEV on non-"f5" valued class annotation `[#311] <https://github.com/F5Networks/k8s-bigip-ctlr/issues/311>`_
10+
11+
v1.1.0
12+
------
13+
714
Added Functionality
815
```````````````````
916

pkg/appmanager/appManager_test.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3222,6 +3222,24 @@ func TestVirtualServerForIngress(t *testing.T) {
32223222
require.True(r, "Ingress resource should be processed")
32233223
require.Equal(0, resources.Count())
32243224

3225+
// Shouldn't process Ingress with non-F5 class
3226+
// https://github.com/F5Networks/k8s-bigip-ctlr/issues/311
3227+
ingressNotf5 := test.NewIngress("ingress-bad", "1", namespace, ingressConfig,
3228+
map[string]string{
3229+
"kubernetes.io/ingress.class": "notf5",
3230+
})
3231+
r = appMgr.addIngress(ingressNotf5)
3232+
require.False(r, "Ingress resource should not be processed.")
3233+
require.Equal(0, resources.Count())
3234+
ingressNotf5.Annotations["kubernetes.io/ingress.class"] = "f5"
3235+
r = appMgr.updateIngress(ingressNotf5)
3236+
require.True(r, "Ingress resource should be processed when flipping from notf5 to f5.")
3237+
require.Equal(1, resources.Count())
3238+
ingressNotf5.Annotations["kubernetes.io/ingress.class"] = "notf5again"
3239+
r = appMgr.updateIngress(ingressNotf5)
3240+
require.False(r, "Ingress resource should be destroyed when flipping from f5 to notf5again.")
3241+
require.Equal(0, resources.Count())
3242+
32253243
// Multi-service Ingress
32263244
ingressConfig = v1beta1.IngressSpec{
32273245
Rules: []v1beta1.IngressRule{

pkg/appmanager/validateResources.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,22 +107,23 @@ func (appMgr *Manager) checkValidIngress(
107107
var keyList []*serviceQueueKey
108108
rsCfg := createRSConfigFromIngress(ing, namespace,
109109
appInf.svcInformer.GetIndexer(), portStruct)
110-
rsName := rsCfg.Virtual.VirtualServerName
110+
rsName := formatIngressVSName(ing, portStruct.protocol)
111111
if rsCfg == nil {
112112
if nil == ing.Spec.Rules { //single-service
113113
serviceName := ing.Spec.Backend.ServiceName
114114
servicePort := ing.Spec.Backend.ServicePort.IntVal
115115
sKey := serviceKey{serviceName, servicePort, ing.ObjectMeta.Namespace}
116116
if _, ok := appMgr.resources.Get(sKey, rsName); ok {
117117
appMgr.resources.Delete(sKey, rsName)
118+
appMgr.outputConfigLocked()
118119
}
119120
} else { //multi-service
120121
_, keys := appMgr.resources.GetAllWithName(rsName)
121122
for _, key := range keys {
122123
appMgr.resources.Delete(key, rsName)
124+
appMgr.outputConfigLocked()
123125
}
124126
}
125-
appMgr.outputConfig()
126127
return false, nil
127128
}
128129

0 commit comments

Comments
 (0)