@@ -81,33 +81,24 @@ func (fh *serviceTopologyFilterHandler) ObjectResponseFilter(b []byte) ([]byte,
8181 // filter endpointSlice before k8s 1.21
8282 var items []discoveryV1beta1.EndpointSlice
8383 for i := range v .Items {
84- isNil , item := fh .serviceTopologyHandler (& v .Items [i ])
85- if ! isNil {
86- eps := item .(* discoveryV1beta1.EndpointSlice )
87- items = append (items , * eps )
88- }
84+ eps := fh .serviceTopologyHandler (& v .Items [i ]).(* discoveryV1beta1.EndpointSlice )
85+ items = append (items , * eps )
8986 }
9087 v .Items = items
9188 return fh .serializer .Encode (v )
9289 case * discovery.EndpointSliceList :
9390 var items []discovery.EndpointSlice
9491 for i := range v .Items {
95- isNil , item := fh .serviceTopologyHandler (& v .Items [i ])
96- if ! isNil {
97- eps := item .(* discovery.EndpointSlice )
98- items = append (items , * eps )
99- }
92+ eps := fh .serviceTopologyHandler (& v .Items [i ]).(* discovery.EndpointSlice )
93+ items = append (items , * eps )
10094 }
10195 v .Items = items
10296 return fh .serializer .Encode (v )
10397 case * v1.EndpointsList :
10498 var items []v1.Endpoints
10599 for i := range v .Items {
106- isNil , item := fh .serviceTopologyHandler (& v .Items [i ])
107- if ! isNil {
108- ep := item .(* v1.Endpoints )
109- items = append (items , * ep )
110- }
100+ ep := fh .serviceTopologyHandler (& v .Items [i ]).(* v1.Endpoints )
101+ items = append (items , * ep )
111102 }
112103 v .Items = items
113104 return fh .serializer .Encode (v )
@@ -134,20 +125,17 @@ func (fh *serviceTopologyFilterHandler) StreamResponseFilter(rc io.ReadCloser, c
134125 return err
135126 }
136127
137- isNil , filteredObj := fh .serviceTopologyHandler (obj )
138- if ! isNil {
139- ch <- watch.Event {
140- Type : watchType ,
141- Object : filteredObj ,
142- }
128+ ch <- watch.Event {
129+ Type : watchType ,
130+ Object : fh .serviceTopologyHandler (obj ),
143131 }
144132 }
145133}
146134
147- func (fh * serviceTopologyFilterHandler ) serviceTopologyHandler (obj runtime.Object ) ( bool , runtime.Object ) {
135+ func (fh * serviceTopologyFilterHandler ) serviceTopologyHandler (obj runtime.Object ) runtime.Object {
148136 needHandle , serviceTopologyType := fh .resolveServiceTopologyType (obj )
149137 if ! needHandle || len (serviceTopologyType ) == 0 {
150- return false , obj
138+ return obj
151139 }
152140
153141 switch serviceTopologyType {
@@ -158,7 +146,7 @@ func (fh *serviceTopologyFilterHandler) serviceTopologyHandler(obj runtime.Objec
158146 // close traffic on the same node pool
159147 return fh .nodePoolTopologyHandler (obj )
160148 default :
161- return false , obj
149+ return obj
162150 }
163151}
164152
@@ -190,36 +178,24 @@ func (fh *serviceTopologyFilterHandler) resolveServiceTopologyType(obj runtime.O
190178 return false , ""
191179}
192180
193- func (fh * serviceTopologyFilterHandler ) nodeTopologyHandler (obj runtime.Object ) ( bool , runtime.Object ) {
181+ func (fh * serviceTopologyFilterHandler ) nodeTopologyHandler (obj runtime.Object ) runtime.Object {
194182 switch v := obj .(type ) {
195183 case * discoveryV1beta1.EndpointSlice :
196- newObj := reassembleV1beta1EndpointSlice (v , fh .nodeName , nil )
197- if newObj == nil {
198- return true , obj
199- }
200- return false , newObj
184+ return reassembleV1beta1EndpointSlice (v , fh .nodeName , nil )
201185 case * discovery.EndpointSlice :
202- newObj := reassembleEndpointSlice (v , fh .nodeName , nil )
203- if newObj == nil {
204- return true , obj
205- }
206- return false , newObj
186+ return reassembleEndpointSlice (v , fh .nodeName , nil )
207187 case * v1.Endpoints :
208- newObj := reassembleEndpoints (v , fh .nodeName , nil )
209- if newObj == nil {
210- return true , obj
211- }
212- return false , newObj
188+ return reassembleEndpoints (v , fh .nodeName , nil )
213189 default :
214- return false , obj
190+ return obj
215191 }
216192}
217193
218- func (fh * serviceTopologyFilterHandler ) nodePoolTopologyHandler (obj runtime.Object ) ( bool , runtime.Object ) {
194+ func (fh * serviceTopologyFilterHandler ) nodePoolTopologyHandler (obj runtime.Object ) runtime.Object {
219195 currentNode , err := fh .nodeGetter (fh .nodeName )
220196 if err != nil {
221197 klog .Warningf ("skip serviceTopologyFilterHandler, failed to get current node %s, err: %v" , fh .nodeName , err )
222- return false , obj
198+ return obj
223199 }
224200
225201 nodePoolName , ok := currentNode .Labels [nodepoolv1alpha1 .LabelCurrentNodePool ]
@@ -231,30 +207,18 @@ func (fh *serviceTopologyFilterHandler) nodePoolTopologyHandler(obj runtime.Obje
231207 nodePool , err := fh .nodePoolLister .Get (nodePoolName )
232208 if err != nil {
233209 klog .Warningf ("serviceTopologyFilterHandler: failed to get nodepool %s, err: %v" , nodePoolName , err )
234- return false , obj
210+ return obj
235211 }
236212
237213 switch v := obj .(type ) {
238214 case * discoveryV1beta1.EndpointSlice :
239- newObj := reassembleV1beta1EndpointSlice (v , "" , nodePool )
240- if newObj == nil {
241- return true , obj
242- }
243- return false , newObj
215+ return reassembleV1beta1EndpointSlice (v , "" , nodePool )
244216 case * discovery.EndpointSlice :
245- newObj := reassembleEndpointSlice (v , "" , nodePool )
246- if newObj == nil {
247- return true , obj
248- }
249- return false , newObj
217+ return reassembleEndpointSlice (v , "" , nodePool )
250218 case * v1.Endpoints :
251- newObj := reassembleEndpoints (v , "" , nodePool )
252- if newObj == nil {
253- return true , obj
254- }
255- return false , newObj
219+ return reassembleEndpoints (v , "" , nodePool )
256220 default :
257- return false , obj
221+ return obj
258222 }
259223}
260224
@@ -279,9 +243,8 @@ func reassembleV1beta1EndpointSlice(endpointSlice *discoveryV1beta1.EndpointSlic
279243 }
280244 }
281245 }
282- if len (newEps ) == 0 {
283- return nil
284- }
246+
247+ // even no endpoints left, empty endpoints slice should be returned
285248 endpointSlice .Endpoints = newEps
286249 return endpointSlice
287250}
@@ -308,9 +271,7 @@ func reassembleEndpointSlice(endpointSlice *discovery.EndpointSlice, nodeName st
308271 }
309272 }
310273
311- if len (newEps ) == 0 {
312- return nil
313- }
274+ // even no endpoints left, empty endpoints slice should be returned
314275 endpointSlice .Endpoints = newEps
315276 return endpointSlice
316277}
@@ -338,10 +299,8 @@ func reassembleEndpoints(endpoints *v1.Endpoints, nodeName string, nodePool *nod
338299 newEpSubsets = append (newEpSubsets , endpoints .Subsets [i ])
339300 }
340301 }
341- if len (newEpSubsets ) == 0 {
342- // this endpoints has no valid addresses for ingress controller, return nil to ignore it
343- return nil
344- }
302+
303+ // even no subsets left, empty subset slice should be returned
345304 endpoints .Subsets = newEpSubsets
346305 return endpoints
347306}
0 commit comments