Merge pull request #66165 from liggitt/statefulset-semantic-equality
Automatic merge from submit-queue. If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Compare stateful set updates semantically Fixes #66137 ```release-note fixes a validation error that could prevent updates to StatefulSet objects containing non-normalized resource requests ```
This commit is contained in:
		@@ -14,6 +14,7 @@ go_library(
 | 
				
			|||||||
        "//pkg/apis/apps:go_default_library",
 | 
					        "//pkg/apis/apps:go_default_library",
 | 
				
			||||||
        "//pkg/apis/core:go_default_library",
 | 
					        "//pkg/apis/core:go_default_library",
 | 
				
			||||||
        "//pkg/apis/core/validation:go_default_library",
 | 
					        "//pkg/apis/core/validation:go_default_library",
 | 
				
			||||||
 | 
					        "//staging/src/k8s.io/apimachinery/pkg/api/equality:go_default_library",
 | 
				
			||||||
        "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
 | 
					        "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
 | 
				
			||||||
        "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/validation:go_default_library",
 | 
					        "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1/validation:go_default_library",
 | 
				
			||||||
        "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library",
 | 
					        "//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,8 +18,8 @@ package validation
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"reflect"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						apiequality "k8s.io/apimachinery/pkg/api/equality"
 | 
				
			||||||
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
				
			||||||
	unversionedvalidation "k8s.io/apimachinery/pkg/apis/meta/v1/validation"
 | 
						unversionedvalidation "k8s.io/apimachinery/pkg/apis/meta/v1/validation"
 | 
				
			||||||
	"k8s.io/apimachinery/pkg/labels"
 | 
						"k8s.io/apimachinery/pkg/labels"
 | 
				
			||||||
@@ -149,7 +149,7 @@ func ValidateStatefulSetUpdate(statefulSet, oldStatefulSet *apps.StatefulSet) fi
 | 
				
			|||||||
	restoreStrategy := statefulSet.Spec.UpdateStrategy
 | 
						restoreStrategy := statefulSet.Spec.UpdateStrategy
 | 
				
			||||||
	statefulSet.Spec.UpdateStrategy = oldStatefulSet.Spec.UpdateStrategy
 | 
						statefulSet.Spec.UpdateStrategy = oldStatefulSet.Spec.UpdateStrategy
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if !reflect.DeepEqual(statefulSet.Spec, oldStatefulSet.Spec) {
 | 
						if !apiequality.Semantic.DeepEqual(statefulSet.Spec, oldStatefulSet.Spec) {
 | 
				
			||||||
		allErrs = append(allErrs, field.Forbidden(field.NewPath("spec"), "updates to statefulset spec for fields other than 'replicas', 'template', and 'updateStrategy' are forbidden."))
 | 
							allErrs = append(allErrs, field.Forbidden(field.NewPath("spec"), "updates to statefulset spec for fields other than 'replicas', 'template', and 'updateStrategy' are forbidden."))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	statefulSet.Spec.Replicas = restoreReplicas
 | 
						statefulSet.Spec.Replicas = restoreReplicas
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user