Skip to content

Commit d9a9934

Browse files
committed
handle delete final state unknown object in enqueue handler (#5649)
Signed-off-by: Mengxin Liu <[email protected]>
1 parent 40489e2 commit d9a9934

27 files changed

+502
-36
lines changed

pkg/controller/admin_network_policy.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,22 @@ func (c *Controller) enqueueAddAnp(obj any) {
5050
}
5151

5252
func (c *Controller) enqueueDeleteAnp(obj any) {
53-
anp := obj.(*v1alpha1.AdminNetworkPolicy)
53+
var anp *v1alpha1.AdminNetworkPolicy
54+
switch t := obj.(type) {
55+
case *v1alpha1.AdminNetworkPolicy:
56+
anp = t
57+
case cache.DeletedFinalStateUnknown:
58+
a, ok := t.Obj.(*v1alpha1.AdminNetworkPolicy)
59+
if !ok {
60+
klog.Warningf("unexpected object type: %T", t.Obj)
61+
return
62+
}
63+
anp = a
64+
default:
65+
klog.Warningf("unexpected type: %T", obj)
66+
return
67+
}
68+
5469
klog.V(3).Infof("enqueue delete anp %s", cache.MetaObjectToName(anp).String())
5570
c.deleteAnpQueue.Add(anp)
5671
}

pkg/controller/baseline_admin_network_policy.go

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,24 @@ func (c *Controller) enqueueAddBanp(obj any) {
2323
}
2424

2525
func (c *Controller) enqueueDeleteBanp(obj any) {
26-
banp := obj.(*v1alpha1.BaselineAdminNetworkPolicy)
27-
klog.V(3).Infof("enqueue delete banp %s", cache.MetaObjectToName(banp).String())
28-
c.deleteBanpQueue.Add(banp)
26+
var bnp *v1alpha1.BaselineAdminNetworkPolicy
27+
switch t := obj.(type) {
28+
case *v1alpha1.BaselineAdminNetworkPolicy:
29+
bnp = t
30+
case cache.DeletedFinalStateUnknown:
31+
b, ok := t.Obj.(*v1alpha1.BaselineAdminNetworkPolicy)
32+
if !ok {
33+
klog.Warningf("unexpected object type: %T", t.Obj)
34+
return
35+
}
36+
bnp = b
37+
default:
38+
klog.Warningf("unexpected type: %T", obj)
39+
return
40+
}
41+
42+
klog.V(3).Infof("enqueue delete bnp %s", cache.MetaObjectToName(bnp).String())
43+
c.deleteBanpQueue.Add(bnp)
2944
}
3045

3146
func (c *Controller) enqueueUpdateBanp(oldObj, newObj any) {

pkg/controller/ip.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,22 @@ func (c *Controller) enqueueUpdateIP(oldObj, newObj any) {
9898
}
9999

100100
func (c *Controller) enqueueDelIP(obj any) {
101-
ipObj := obj.(*kubeovnv1.IP)
101+
var ipObj *kubeovnv1.IP
102+
switch t := obj.(type) {
103+
case *kubeovnv1.IP:
104+
ipObj = t
105+
case cache.DeletedFinalStateUnknown:
106+
ip, ok := t.Obj.(*kubeovnv1.IP)
107+
if !ok {
108+
klog.Warningf("unexpected object type: %T", t.Obj)
109+
return
110+
}
111+
ipObj = ip
112+
default:
113+
klog.Warningf("unexpected type: %T", obj)
114+
return
115+
}
116+
102117
if strings.HasPrefix(ipObj.Name, util.U2OInterconnName[0:19]) {
103118
return
104119
}

pkg/controller/ippool.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,22 @@ func (c *Controller) enqueueAddIPPool(obj any) {
2424
}
2525

2626
func (c *Controller) enqueueDeleteIPPool(obj any) {
27-
ippool := obj.(*kubeovnv1.IPPool)
27+
var ippool *kubeovnv1.IPPool
28+
switch t := obj.(type) {
29+
case *kubeovnv1.IPPool:
30+
ippool = t
31+
case cache.DeletedFinalStateUnknown:
32+
i, ok := t.Obj.(*kubeovnv1.IPPool)
33+
if !ok {
34+
klog.Warningf("unexpected object type: %T", t.Obj)
35+
return
36+
}
37+
ippool = i
38+
default:
39+
klog.Warningf("unexpected type: %T", obj)
40+
return
41+
}
42+
2843
klog.V(3).Infof("enqueue delete ippool %s", cache.MetaObjectToName(ippool).String())
2944
c.deleteIPPoolQueue.Add(ippool)
3045
}

pkg/controller/kubevirt.go

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,23 @@ func (c *Controller) enqueueUpdateVMIMigration(oldObj, newObj any) {
3636
}
3737

3838
func (c *Controller) enqueueDeleteVM(obj any) {
39-
key := cache.MetaObjectToName(obj.(*kubevirtv1.VirtualMachine)).String()
39+
var vm *kubevirtv1.VirtualMachine
40+
switch t := obj.(type) {
41+
case *kubevirtv1.VirtualMachine:
42+
vm = t
43+
case cache.DeletedFinalStateUnknown:
44+
v, ok := t.Obj.(*kubevirtv1.VirtualMachine)
45+
if !ok {
46+
klog.Warningf("unexpected object type: %T", t.Obj)
47+
return
48+
}
49+
vm = v
50+
default:
51+
klog.Warningf("unexpected type: %T", obj)
52+
return
53+
}
54+
55+
key := cache.MetaObjectToName(vm).String()
4056
klog.Infof("enqueue add VM %s", key)
4157
c.deleteVMQueue.Add(key)
4258
}

pkg/controller/namespace.go

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,29 @@ func (c *Controller) enqueueAddNamespace(obj any) {
2828
}
2929

3030
func (c *Controller) enqueueDeleteNamespace(obj any) {
31+
var ns *v1.Namespace
32+
switch t := obj.(type) {
33+
case *v1.Namespace:
34+
ns = t
35+
case cache.DeletedFinalStateUnknown:
36+
n, ok := t.Obj.(*v1.Namespace)
37+
if !ok {
38+
klog.Warningf("unexpected object type: %T", t.Obj)
39+
return
40+
}
41+
ns = n
42+
default:
43+
klog.Warningf("unexpected type: %T", obj)
44+
return
45+
}
46+
3147
if c.config.EnableNP {
32-
for _, np := range c.namespaceMatchNetworkPolicies(obj.(*v1.Namespace)) {
48+
for _, np := range c.namespaceMatchNetworkPolicies(ns) {
3349
c.updateNpQueue.Add(np)
3450
}
3551
}
3652
if c.config.EnableANP {
37-
c.updateAnpsByLabelsMatch(obj.(*v1.Namespace).Labels, nil)
53+
c.updateAnpsByLabelsMatch(ns.Labels, nil)
3854
}
3955
}
4056

pkg/controller/network_policy.go

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,23 @@ func (c *Controller) enqueueAddNp(obj any) {
3333
}
3434

3535
func (c *Controller) enqueueDeleteNp(obj any) {
36-
key := cache.MetaObjectToName(obj.(*netv1.NetworkPolicy)).String()
36+
var np *netv1.NetworkPolicy
37+
switch t := obj.(type) {
38+
case *netv1.NetworkPolicy:
39+
np = t
40+
case cache.DeletedFinalStateUnknown:
41+
n, ok := t.Obj.(*netv1.NetworkPolicy)
42+
if !ok {
43+
klog.Warningf("unexpected object type: %T", t.Obj)
44+
return
45+
}
46+
np = n
47+
default:
48+
klog.Warningf("unexpected type: %T", obj)
49+
return
50+
}
51+
52+
key := cache.MetaObjectToName(np).String()
3753
klog.V(3).Infof("enqueue delete network policy %s", key)
3854
c.deleteNpQueue.Add(key)
3955
}

pkg/controller/node.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,22 @@ func (c *Controller) enqueueUpdateNode(oldObj, newObj any) {
7171
}
7272

7373
func (c *Controller) enqueueDeleteNode(obj any) {
74-
node := obj.(*v1.Node)
74+
var node *v1.Node
75+
switch t := obj.(type) {
76+
case *v1.Node:
77+
node = t
78+
case cache.DeletedFinalStateUnknown:
79+
n, ok := t.Obj.(*v1.Node)
80+
if !ok {
81+
klog.Warningf("unexpected object type: %T", t.Obj)
82+
return
83+
}
84+
node = n
85+
default:
86+
klog.Warningf("unexpected type: %T", obj)
87+
return
88+
}
89+
7590
key := cache.MetaObjectToName(node).String()
7691
klog.V(3).Infof("enqueue delete node %s", key)
7792
c.deletingNodeObjMap.Store(key, node)

pkg/controller/ovn_dnat.go

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,23 @@ func (c *Controller) enqueueUpdateOvnDnatRule(oldObj, newObj any) {
5454
}
5555

5656
func (c *Controller) enqueueDelOvnDnatRule(obj any) {
57-
key := cache.MetaObjectToName(obj.(*kubeovnv1.OvnDnatRule)).String()
57+
var dnat *kubeovnv1.OvnDnatRule
58+
switch t := obj.(type) {
59+
case *kubeovnv1.OvnDnatRule:
60+
dnat = t
61+
case cache.DeletedFinalStateUnknown:
62+
d, ok := t.Obj.(*kubeovnv1.OvnDnatRule)
63+
if !ok {
64+
klog.Warningf("unexpected object type: %T", t.Obj)
65+
return
66+
}
67+
dnat = d
68+
default:
69+
klog.Warningf("unexpected type: %T", obj)
70+
return
71+
}
72+
73+
key := cache.MetaObjectToName(dnat).String()
5874
klog.Infof("enqueue delete ovn dnat %s", key)
5975
c.delOvnDnatRuleQueue.Add(key)
6076
}

pkg/controller/ovn_eip.go

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,23 @@ func (c *Controller) enqueueUpdateOvnEip(oldObj, newObj any) {
5454
}
5555

5656
func (c *Controller) enqueueDelOvnEip(obj any) {
57-
key := cache.MetaObjectToName(obj.(*kubeovnv1.OvnEip)).String()
57+
var eip *kubeovnv1.OvnEip
58+
switch t := obj.(type) {
59+
case *kubeovnv1.OvnEip:
60+
eip = t
61+
case cache.DeletedFinalStateUnknown:
62+
e, ok := t.Obj.(*kubeovnv1.OvnEip)
63+
if !ok {
64+
klog.Warningf("unexpected object type: %T", t.Obj)
65+
return
66+
}
67+
eip = e
68+
default:
69+
klog.Warningf("unexpected type: %T", obj)
70+
return
71+
}
72+
73+
key := cache.MetaObjectToName(eip).String()
5874
klog.Infof("enqueue del ovn eip %s", key)
5975
c.delOvnEipQueue.Add(key)
6076
}

0 commit comments

Comments
 (0)