Skip to content

Commit

Permalink
feat: When a resource is created for the first time, it should also b…
Browse files Browse the repository at this point in the history
…e considered as a modification.

Signed-off-by: chaunceyjiang <chaunceyjiang@gmail.com>
  • Loading branch information
chaunceyjiang committed Jan 26, 2024
1 parent ae5b3fe commit af5550a
Showing 1 changed file with 23 additions and 7 deletions.
30 changes: 23 additions & 7 deletions pkg/detector/detector.go
Original file line number Diff line number Diff line change
Expand Up @@ -323,7 +323,25 @@ func (d *ResourceDetector) OnAdd(obj interface{}) {
if !ok {
return
}
d.Processor.Enqueue(ResourceItem{Obj: runtimeObj})
unstructuredObj, err := helper.ToUnstructured(obj)
if err != nil {
klog.Errorf("Failed to transform newObj, error: %v", err)
return
}
var resourceChangeByKarmada bool
switch {
case unstructuredObj.GetAnnotations()[policyv1alpha1.PropagationPolicyNameLabel] != "":
resourceChangeByKarmada = false
case unstructuredObj.GetAnnotations()[policyv1alpha1.ClusterPropagationPolicyLabel] != "":
resourceChangeByKarmada = false
case unstructuredObj.GetLabels()[policyv1alpha1.PropagationPolicyNameLabel] != "":
resourceChangeByKarmada = false
case unstructuredObj.GetLabels()[policyv1alpha1.ClusterPropagationPolicyLabel] != "":
resourceChangeByKarmada = false
default:
resourceChangeByKarmada = true
}
d.Processor.Enqueue(ResourceItem{Obj: runtimeObj, ResourceChangeByKarmada: resourceChangeByKarmada})
}

// OnUpdate handles object update event and push the object to queue.
Expand All @@ -340,17 +358,15 @@ func (d *ResourceDetector) OnUpdate(oldObj, newObj interface{}) {
return
}

if !eventfilter.SpecificationChanged(unstructuredOldObj, unstructuredNewObj) {
klog.V(4).Infof("Ignore update event of object (kind=%s, %s/%s) as specification no change", unstructuredOldObj.GetKind(), unstructuredOldObj.GetNamespace(), unstructuredOldObj.GetName())
return
}
newRuntimeObj, ok := newObj.(runtime.Object)
if !ok {
klog.Errorf("Failed to assert newObj as runtime.Object")
return
}

if !eventfilter.SpecificationChanged(unstructuredOldObj, unstructuredNewObj) {
klog.V(4).Infof("Ignore update event of object (kind=%s, %s/%s) as specification no change", unstructuredOldObj.GetKind(), unstructuredOldObj.GetNamespace(), unstructuredOldObj.GetName())
return
}

resourceChangeByKarmada := eventfilter.ResourceChangeByKarmada(unstructuredOldObj, unstructuredNewObj)

resourceItem := ResourceItem{
Expand Down

0 comments on commit af5550a

Please sign in to comment.