in pkg/providers/apisix/apisix_consumer.go [236:287]
func (c *apisixConsumerController) onUpdate(oldObj, newObj interface{}) {
prev, err := kube.NewApisixConsumer(oldObj)
if err != nil {
log.Errorw("found ApisixConsumer resource with bad type", zap.Error(err))
return
}
curr, err := kube.NewApisixConsumer(newObj)
if err != nil {
log.Errorw("found ApisixConsumer resource with bad type", zap.Error(err))
return
}
oldRV, _ := strconv.ParseInt(prev.ResourceVersion(), 0, 64)
newRV, _ := strconv.ParseInt(curr.ResourceVersion(), 0, 64)
if oldRV >= newRV {
return
}
// Updates triggered by status are ignored.
if prev.GetGeneration() == curr.GetGeneration() && prev.GetUID() == curr.GetUID() {
switch curr.GroupVersion() {
case config.ApisixV2:
if reflect.DeepEqual(prev.V2().Spec, curr.V2().Spec) && !reflect.DeepEqual(prev.V2().Status, curr.V2().Status) {
return
}
}
}
key, err := cache.MetaNamespaceKeyFunc(newObj)
if err != nil {
log.Errorf("found ApisixConsumer resource with bad meta namespace key: %s", err)
return
}
if !c.namespaceProvider.IsWatchingNamespace(key) {
return
}
if !c.isEffective(curr) {
return
}
log.Debugw("ApisixConsumer update event arrived",
zap.Any("new object", curr),
zap.Any("old object", prev),
)
c.workqueue.Add(&types.Event{
Type: types.EventUpdate,
Object: kube.ApisixConsumerEvent{
Key: key,
OldObject: prev,
GroupVersion: curr.GroupVersion(),
},
})
c.MetricsCollector.IncrEvents("consumer", "update")
}