@@ -350,6 +350,16 @@ func isQuotaRelevantFieldChanged(oldRB, newRB *workv1alpha2.ResourceBinding) boo
350350 if oldRB == nil || newRB == nil {
351351 return true
352352 }
353+ if isResourceRequestChanged (oldRB , newRB ) {
354+ return true
355+ }
356+ if isScheduledReplicasChanged (oldRB , newRB ) {
357+ return true
358+ }
359+ return isComponentsChanged (oldRB , newRB )
360+ }
361+
362+ func isResourceRequestChanged (oldRB , newRB * workv1alpha2.ResourceBinding ) bool {
353363 oldReq := corev1.ResourceList {}
354364 if oldRB .Spec .ReplicaRequirements != nil {
355365 oldReq = oldRB .Spec .ReplicaRequirements .ResourceRequest
@@ -358,9 +368,10 @@ func isQuotaRelevantFieldChanged(oldRB, newRB *workv1alpha2.ResourceBinding) boo
358368 if newRB .Spec .ReplicaRequirements != nil {
359369 newReq = newRB .Spec .ReplicaRequirements .ResourceRequest
360370 }
361- if ! areResourceListsEqual (oldReq , newReq ) {
362- return true
363- }
371+ return ! areResourceListsEqual (oldReq , newReq )
372+ }
373+
374+ func isScheduledReplicasChanged (oldRB , newRB * workv1alpha2.ResourceBinding ) bool {
364375 oldScheduledReplicas := int32 (0 )
365376 for _ , c := range oldRB .Spec .Clusters {
366377 oldScheduledReplicas += c .Replicas
@@ -369,9 +380,10 @@ func isQuotaRelevantFieldChanged(oldRB, newRB *workv1alpha2.ResourceBinding) boo
369380 for _ , c := range newRB .Spec .Clusters {
370381 newScheduledReplicas += c .Replicas
371382 }
372- if oldScheduledReplicas != newScheduledReplicas {
373- return true
374- }
383+ return oldScheduledReplicas != newScheduledReplicas
384+ }
385+
386+ func isComponentsChanged (oldRB , newRB * workv1alpha2.ResourceBinding ) bool {
375387 if len (oldRB .Spec .Components ) != len (newRB .Spec .Components ) {
376388 return true
377389 }
@@ -381,7 +393,12 @@ func isQuotaRelevantFieldChanged(oldRB, newRB *workv1alpha2.ResourceBinding) boo
381393 if oldComponent .Replicas != newComponent .Replicas {
382394 return true
383395 }
384- if ! areResourceListsEqual (oldComponent .ReplicaRequirements .ResourceRequest , newComponent .ReplicaRequirements .ResourceRequest ) {
396+
397+ if (oldComponent .ReplicaRequirements == nil ) != (newComponent .ReplicaRequirements == nil ) {
398+ return true
399+ }
400+
401+ if oldComponent .ReplicaRequirements != nil && newComponent .ReplicaRequirements != nil && ! areResourceListsEqual (oldComponent .ReplicaRequirements .ResourceRequest , newComponent .ReplicaRequirements .ResourceRequest ) {
385402 return true
386403 }
387404 }
0 commit comments