Merge pull request #4226 from ctripcloud/fix-binding-status

only update necessary part of binding status
This commit is contained in:
karmada-bot 2023-11-13 19:46:44 +08:00 committed by GitHub
commit 954f807aab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 8 additions and 12 deletions

View File

@ -45,8 +45,6 @@ func AggregateResourceBindingWorkStatus(
resourceTemplate *unstructured.Unstructured, resourceTemplate *unstructured.Unstructured,
eventRecorder record.EventRecorder, eventRecorder record.EventRecorder,
) error { ) error {
binding.GetName()
workList, err := GetWorksByBindingNamespaceName(c, binding.Namespace, binding.Name) workList, err := GetWorksByBindingNamespaceName(c, binding.Namespace, binding.Name)
if err != nil { if err != nil {
return err return err
@ -59,19 +57,18 @@ func AggregateResourceBindingWorkStatus(
fullyAppliedCondition := generateFullyAppliedCondition(binding.Spec, aggregatedStatuses) fullyAppliedCondition := generateFullyAppliedCondition(binding.Spec, aggregatedStatuses)
currentBindingStatus := binding.Status.DeepCopy()
currentBindingStatus.AggregatedStatus = aggregatedStatuses
err = retry.RetryOnConflict(retry.DefaultRetry, func() (err error) { err = retry.RetryOnConflict(retry.DefaultRetry, func() (err error) {
currentBindingStatus := binding.Status.DeepCopy()
binding.Status.AggregatedStatus = aggregatedStatuses
// set binding status with the newest condition // set binding status with the newest condition
currentBindingStatus.Conditions = binding.Status.Conditions meta.SetStatusCondition(&binding.Status.Conditions, fullyAppliedCondition)
meta.SetStatusCondition(&currentBindingStatus.Conditions, fullyAppliedCondition)
if reflect.DeepEqual(binding.Status, *currentBindingStatus) { if reflect.DeepEqual(binding.Status, *currentBindingStatus) {
klog.V(4).Infof("New aggregatedStatuses are equal with old resourceBinding(%s/%s) AggregatedStatus, no update required.", klog.V(4).Infof("New aggregatedStatuses are equal with old resourceBinding(%s/%s) AggregatedStatus, no update required.",
binding.Namespace, binding.Name) binding.Namespace, binding.Name)
return nil return nil
} }
binding.Status = *currentBindingStatus
updateErr := c.Status().Update(context.TODO(), binding) updateErr := c.Status().Update(context.TODO(), binding)
if updateErr == nil { if updateErr == nil {
return nil return nil
@ -118,18 +115,17 @@ func AggregateClusterResourceBindingWorkStatus(
fullyAppliedCondition := generateFullyAppliedCondition(binding.Spec, aggregatedStatuses) fullyAppliedCondition := generateFullyAppliedCondition(binding.Spec, aggregatedStatuses)
currentBindingStatus := binding.Status.DeepCopy()
currentBindingStatus.AggregatedStatus = aggregatedStatuses
err = retry.RetryOnConflict(retry.DefaultRetry, func() (err error) { err = retry.RetryOnConflict(retry.DefaultRetry, func() (err error) {
currentBindingStatus := binding.Status.DeepCopy()
binding.Status.AggregatedStatus = aggregatedStatuses
// set binding status with the newest condition // set binding status with the newest condition
currentBindingStatus.Conditions = binding.Status.Conditions meta.SetStatusCondition(&binding.Status.Conditions, fullyAppliedCondition)
meta.SetStatusCondition(&currentBindingStatus.Conditions, fullyAppliedCondition)
if reflect.DeepEqual(binding.Status, *currentBindingStatus) { if reflect.DeepEqual(binding.Status, *currentBindingStatus) {
klog.Infof("New aggregatedStatuses are equal with old clusterResourceBinding(%s) AggregatedStatus, no update required.", binding.Name) klog.Infof("New aggregatedStatuses are equal with old clusterResourceBinding(%s) AggregatedStatus, no update required.", binding.Name)
return nil return nil
} }
binding.Status = *currentBindingStatus
updateErr := c.Status().Update(context.TODO(), binding) updateErr := c.Status().Update(context.TODO(), binding)
if updateErr == nil { if updateErr == nil {
return nil return nil