@@ -185,23 +185,39 @@ func NewServiceServer(vpp *vpplink.VppLink, k8sclient *kubernetes.Clientset, log
185185 60 * time .Second ,
186186 cache.ResourceEventHandlerFuncs {
187187 AddFunc : func (obj interface {}) {
188- localService := server .resolveLocalServiceFromService (obj .(* v1.Service ))
188+ service , ok := obj .(* v1.Service )
189+ if ! ok {
190+ panic ("wrong type for obj, not *v1.Service" )
191+ }
192+ localService := server .resolveLocalServiceFromService (service )
189193 server .handleServiceEndpointEvent (localService , nil )
190194 },
191195 UpdateFunc : func (old interface {}, obj interface {}) {
192- oldLocalService := server .resolveLocalServiceFromService (old .(* v1.Service ))
193- localService := server .resolveLocalServiceFromService (obj .(* v1.Service ))
196+ service , ok := obj .(* v1.Service )
197+ if ! ok {
198+ panic ("wrong type for obj, not *v1.Service" )
199+ }
200+ oldService , ok := old .(* v1.Service )
201+ if ! ok {
202+ panic ("wrong type for old, not *v1.Service" )
203+ }
204+ oldLocalService := server .resolveLocalServiceFromService (oldService )
205+ localService := server .resolveLocalServiceFromService (service )
194206 server .handleServiceEndpointEvent (localService , oldLocalService )
195207 },
196208 DeleteFunc : func (obj interface {}) {
197- service , ok := obj .(* v1. Service )
198- if ! ok {
199- service , ok = obj .(cache. DeletedFinalStateUnknown ) .Obj .(* v1.Service )
209+ switch value := obj .(type ) {
210+ case cache. DeletedFinalStateUnknown :
211+ service , ok := value .Obj .(* v1.Service )
200212 if ! ok {
201213 panic (fmt .Sprintf ("obj.(cache.DeletedFinalStateUnknown).Obj not a (*v1.Service) %v" , obj ))
202214 }
215+ server .deleteServiceByName (serviceID (& service .ObjectMeta ))
216+ case * v1.Service :
217+ server .deleteServiceByName (serviceID (& value .ObjectMeta ))
218+ default :
219+ log .Errorf ("unknown type in service deleteFunction %v" , obj )
203220 }
204- server .deleteServiceByName (serviceID (& service .ObjectMeta ))
205221 },
206222 })
207223
@@ -213,23 +229,42 @@ func NewServiceServer(vpp *vpplink.VppLink, k8sclient *kubernetes.Clientset, log
213229 60 * time .Second ,
214230 cache.ResourceEventHandlerFuncs {
215231 AddFunc : func (obj interface {}) {
216- localService := server .resolveLocalServiceFromEndpoints (obj .(* v1.Endpoints ))
217- server .handleServiceEndpointEvent (localService , nil )
232+ endpoints , ok := obj .(* v1.Endpoints )
233+ if ! ok {
234+ panic ("wrong type for obj, not *v1.Endpoints" )
235+ }
236+ server .handleServiceEndpointEvent (
237+ server .resolveLocalServiceFromEndpoints (endpoints ),
238+ nil ,
239+ )
218240 },
219241 UpdateFunc : func (old interface {}, obj interface {}) {
220- oldLocalService := server .resolveLocalServiceFromEndpoints (old .(* v1.Endpoints ))
221- localService := server .resolveLocalServiceFromEndpoints (obj .(* v1.Endpoints ))
222- server .handleServiceEndpointEvent (localService , oldLocalService )
242+ endpoints , ok := obj .(* v1.Endpoints )
243+ if ! ok {
244+ panic ("wrong type for obj, not *v1.Endpoints" )
245+ }
246+ oldEndpoints , ok := old .(* v1.Endpoints )
247+ if ! ok {
248+ panic ("wrong type for old, not *v1.Endpoints" )
249+ }
250+ server .handleServiceEndpointEvent (
251+ server .resolveLocalServiceFromEndpoints (endpoints ),
252+ server .resolveLocalServiceFromEndpoints (oldEndpoints ),
253+ )
223254 },
224255 DeleteFunc : func (obj interface {}) {
225- ep , ok := obj .(* v1. Endpoints )
226- if ! ok {
227- ep , ok = obj .(cache. DeletedFinalStateUnknown ) .Obj .(* v1.Endpoints )
256+ switch value := obj .(type ) {
257+ case cache. DeletedFinalStateUnknown :
258+ endpoints , ok := value .Obj .(* v1.Endpoints )
228259 if ! ok {
229260 panic (fmt .Sprintf ("obj.(cache.DeletedFinalStateUnknown).Obj not a (*v1.Endpoints) %v" , obj ))
230261 }
262+ server .deleteServiceByName (serviceID (& endpoints .ObjectMeta ))
263+ case * v1.Service :
264+ server .deleteServiceByName (serviceID (& value .ObjectMeta ))
265+ default :
266+ log .Errorf ("unknown type in service deleteFunction %v" , obj )
231267 }
232- server .deleteServiceByName (serviceID (& ep .ObjectMeta ))
233268 },
234269 })
235270
@@ -296,7 +331,7 @@ func (s *Server) findMatchingService(ep *v1.Endpoints) *v1.Service {
296331 s .log .Errorf ("Error getting endpoint %+v key: %v" , ep , err )
297332 return nil
298333 }
299- service , found , err := s .serviceStore .GetByKey (key )
334+ value , found , err := s .serviceStore .GetByKey (key )
300335 if err != nil {
301336 s .log .Errorf ("Error getting service %s: %v" , key , err )
302337 return nil
@@ -305,7 +340,11 @@ func (s *Server) findMatchingService(ep *v1.Endpoints) *v1.Service {
305340 s .log .Debugf ("Service %s not found" , key )
306341 return nil
307342 }
308- return service .(* v1.Service )
343+ service , ok := value .(* v1.Service )
344+ if ! ok {
345+ panic ("s.serviceStore.GetByKey did not return value of type *v1.Service" )
346+ }
347+ return service
309348}
310349
311350func (s * Server ) findMatchingEndpoint (service * v1.Service ) * v1.Endpoints {
@@ -314,7 +353,7 @@ func (s *Server) findMatchingEndpoint(service *v1.Service) *v1.Endpoints {
314353 s .log .Errorf ("Error getting service %+v key: %v" , service , err )
315354 return nil
316355 }
317- ep , found , err := s .endpointStore .GetByKey (key )
356+ value , found , err := s .endpointStore .GetByKey (key )
318357 if err != nil {
319358 s .log .Errorf ("Error getting endpoint %s: %v" , key , err )
320359 return nil
@@ -323,7 +362,11 @@ func (s *Server) findMatchingEndpoint(service *v1.Service) *v1.Endpoints {
323362 s .log .Debugf ("Endpoint %s not found" , key )
324363 return nil
325364 }
326- return ep .(* v1.Endpoints )
365+ endpoints , ok := value .(* v1.Endpoints )
366+ if ! ok {
367+ panic ("s.serviceStore.GetByKey did not return value of type *v1.Service" )
368+ }
369+ return endpoints
327370}
328371
329372/**
0 commit comments