5
5
"fmt"
6
6
"reflect"
7
7
"strings"
8
- "time"
9
8
"unicode"
10
9
11
10
"github.com/scylladb/go-set/strset"
@@ -38,7 +37,7 @@ type ChangedName struct {
38
37
curRuleName string
39
38
}
40
39
41
- type ChangedDelta struct {
40
+ type AdminNetworkPolicyChangedDelta struct {
42
41
key string
43
42
ruleNames [util .AnpMaxRules ]ChangedName
44
43
field ChangedField
@@ -56,14 +55,9 @@ func (c *Controller) enqueueAddAnp(obj interface{}) {
56
55
}
57
56
58
57
func (c * Controller ) enqueueDeleteAnp (obj interface {}) {
59
- var key string
60
- var err error
61
- if key , err = cache .MetaNamespaceKeyFunc (obj ); err != nil {
62
- utilruntime .HandleError (err )
63
- return
64
- }
65
- klog .V (3 ).Infof ("enqueue delete anp %s" , key )
66
- c .deleteAnpQueue .Add (obj )
58
+ anp := obj .(* v1alpha1.AdminNetworkPolicy )
59
+ klog .V (3 ).Infof ("enqueue delete anp %s" , anp .Name )
60
+ c .deleteAnpQueue .Add (anp )
67
61
}
68
62
69
63
func (c * Controller ) enqueueUpdateAnp (oldObj , newObj interface {}) {
@@ -104,7 +98,7 @@ func (c *Controller) enqueueUpdateAnp(oldObj, newObj interface{}) {
104
98
// The remaining changes do not affect the acls. The port-group or address-set should be updated.
105
99
// The port-group for anp should be updated
106
100
if ! reflect .DeepEqual (oldAnpObj .Spec .Subject , newAnpObj .Spec .Subject ) {
107
- c .updateAnpQueue .Add (ChangedDelta {key : newAnpObj .Name , field : ChangedSubject })
101
+ c .updateAnpQueue .Add (& AdminNetworkPolicyChangedDelta {key : newAnpObj .Name , field : ChangedSubject })
108
102
}
109
103
110
104
// Rule name or peer selector in ingress/egress rule has changed, the corresponding address-set need be updated
@@ -122,7 +116,7 @@ func (c *Controller) enqueueUpdateAnp(oldObj, newObj interface{}) {
122
116
}
123
117
}
124
118
if ruleChanged {
125
- c .updateAnpQueue .Add (ChangedDelta {key : newAnpObj .Name , ruleNames : changedIngressRuleNames , field : ChangedIngressRule })
119
+ c .updateAnpQueue .Add (& AdminNetworkPolicyChangedDelta {key : newAnpObj .Name , ruleNames : changedIngressRuleNames , field : ChangedIngressRule })
126
120
}
127
121
128
122
ruleChanged = false
@@ -138,113 +132,8 @@ func (c *Controller) enqueueUpdateAnp(oldObj, newObj interface{}) {
138
132
}
139
133
}
140
134
if ruleChanged {
141
- c .updateAnpQueue .Add (ChangedDelta {key : newAnpObj .Name , ruleNames : changedEgressRuleNames , field : ChangedEgressRule })
142
- }
143
- }
144
-
145
- func (c * Controller ) runAddAnpWorker () {
146
- for c .processNextAddAnpWorkItem () {
147
- }
148
- }
149
-
150
- func (c * Controller ) runUpdateAnpWorker () {
151
- for c .processNextUpdateAnpWorkItem () {
152
- }
153
- }
154
-
155
- func (c * Controller ) runDeleteAnpWorker () {
156
- for c .processNextDeleteAnpWorkItem () {
157
- }
158
- }
159
-
160
- func (c * Controller ) processNextAddAnpWorkItem () bool {
161
- obj , shutdown := c .addAnpQueue .Get ()
162
- if shutdown {
163
- return false
164
- }
165
- now := time .Now ()
166
-
167
- err := func (obj interface {}) error {
168
- defer c .addAnpQueue .Done (obj )
169
- var key string
170
- var ok bool
171
- if key , ok = obj .(string ); ! ok {
172
- c .addAnpQueue .Forget (obj )
173
- utilruntime .HandleError (fmt .Errorf ("expected string in workqueue but got %#v" , obj ))
174
- return nil
175
- }
176
- if err := c .handleAddAnp (key ); err != nil {
177
- c .addAnpQueue .AddRateLimited (key )
178
- return fmt .Errorf ("error syncing '%s': %s, requeuing" , key , err .Error ())
179
- }
180
- last := time .Since (now )
181
- klog .Infof ("take %d ms to handle add anp %s" , last .Milliseconds (), key )
182
- c .addAnpQueue .Forget (obj )
183
- return nil
184
- }(obj )
185
- if err != nil {
186
- utilruntime .HandleError (err )
187
- return true
188
- }
189
- return true
190
- }
191
-
192
- func (c * Controller ) processNextUpdateAnpWorkItem () bool {
193
- obj , shutdown := c .updateAnpQueue .Get ()
194
- if shutdown {
195
- return false
196
- }
197
-
198
- err := func (obj interface {}) error {
199
- defer c .updateAnpQueue .Done (obj )
200
- var key ChangedDelta
201
- var ok bool
202
- if key , ok = obj .(ChangedDelta ); ! ok {
203
- c .updateAnpQueue .Forget (obj )
204
- utilruntime .HandleError (fmt .Errorf ("expected ChangedDelta in workqueue but got %#v" , obj ))
205
- return nil
206
- }
207
- if err := c .handleUpdateAnp (key ); err != nil {
208
- c .updateAnpQueue .AddRateLimited (key )
209
- return fmt .Errorf ("error syncing admin network policy %s: %w, requeuing" , key .key , err )
210
- }
211
- c .updateAnpQueue .Forget (obj )
212
- return nil
213
- }(obj )
214
- if err != nil {
215
- utilruntime .HandleError (err )
216
- return true
217
- }
218
- return true
219
- }
220
-
221
- func (c * Controller ) processNextDeleteAnpWorkItem () bool {
222
- obj , shutdown := c .deleteAnpQueue .Get ()
223
- if shutdown {
224
- return false
225
- }
226
-
227
- err := func (obj interface {}) error {
228
- defer c .deleteAnpQueue .Done (obj )
229
- var anp * v1alpha1.AdminNetworkPolicy
230
- var ok bool
231
- if anp , ok = obj .(* v1alpha1.AdminNetworkPolicy ); ! ok {
232
- c .deleteAnpQueue .Forget (obj )
233
- utilruntime .HandleError (fmt .Errorf ("expected anp object in workqueue but got %#v" , obj ))
234
- return nil
235
- }
236
- if err := c .handleDeleteAnp (anp ); err != nil {
237
- c .deleteAnpQueue .AddRateLimited (obj )
238
- return fmt .Errorf ("error syncing anp '%s': %s, requeuing" , anp .Name , err .Error ())
239
- }
240
- c .deleteAnpQueue .Forget (obj )
241
- return nil
242
- }(obj )
243
- if err != nil {
244
- utilruntime .HandleError (err )
245
- return true
135
+ c .updateAnpQueue .Add (& AdminNetworkPolicyChangedDelta {key : newAnpObj .Name , ruleNames : changedEgressRuleNames , field : ChangedEgressRule })
246
136
}
247
- return true
248
137
}
249
138
250
139
func (c * Controller ) handleAddAnp (key string ) (err error ) {
@@ -479,7 +368,7 @@ func (c *Controller) handleDeleteAnp(anp *v1alpha1.AdminNetworkPolicy) error {
479
368
return nil
480
369
}
481
370
482
- func (c * Controller ) handleUpdateAnp (changed ChangedDelta ) error {
371
+ func (c * Controller ) handleUpdateAnp (changed * AdminNetworkPolicyChangedDelta ) error {
483
372
// Only handle updates that do not affect acls.
484
373
c .anpKeyMutex .LockKey (changed .key )
485
374
defer func () { _ = c .anpKeyMutex .UnlockKey (changed .key ) }()
@@ -899,7 +788,7 @@ func (c *Controller) setAddrSetForAnpRule(anpName, pgName, ruleName string, inde
899
788
func (c * Controller ) updateAnpsByLabelsMatch (nsLabels , podLabels map [string ]string ) {
900
789
anps , _ := c .anpsLister .List (labels .Everything ())
901
790
for _ , anp := range anps {
902
- changed := ChangedDelta {
791
+ changed := & AdminNetworkPolicyChangedDelta {
903
792
key : anp .Name ,
904
793
}
905
794
@@ -927,7 +816,7 @@ func (c *Controller) updateAnpsByLabelsMatch(nsLabels, podLabels map[string]stri
927
816
928
817
banps , _ := c .banpsLister .List (labels .Everything ())
929
818
for _ , banp := range banps {
930
- changed := ChangedDelta {
819
+ changed := & AdminNetworkPolicyChangedDelta {
931
820
key : banp .Name ,
932
821
}
933
822
0 commit comments