From 4601ac7643fdfa61c3d5be840b34f6c2e4af8639 Mon Sep 17 00:00:00 2001 From: bprashanth Date: Tue, 16 Aug 2016 14:33:16 -0700 Subject: [PATCH] Allow non-patch-updates to replicas --- pkg/apis/apps/validation/validation.go | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/pkg/apis/apps/validation/validation.go b/pkg/apis/apps/validation/validation.go index 5700cf8911a..f7a33bdaa27 100644 --- a/pkg/apis/apps/validation/validation.go +++ b/pkg/apis/apps/validation/validation.go @@ -99,22 +99,20 @@ func ValidatePetSet(petSet *apps.PetSet) field.ErrorList { // ValidatePetSetUpdate tests if required fields in the PetSet are set. func ValidatePetSetUpdate(petSet, oldPetSet *apps.PetSet) field.ErrorList { - allErrs := field.ErrorList{} + allErrs := apivalidation.ValidateObjectMetaUpdate(&petSet.ObjectMeta, &oldPetSet.ObjectMeta, field.NewPath("metadata")) // TODO: For now we're taking the safe route and disallowing all updates to spec except for Spec.Replicas. // Enable on a case by case basis. restoreReplicas := petSet.Spec.Replicas petSet.Spec.Replicas = oldPetSet.Spec.Replicas - // The generation changes for this update - restoreGeneration := petSet.Generation - petSet.Generation = oldPetSet.Generation - - if !reflect.DeepEqual(petSet, oldPetSet) { + if !reflect.DeepEqual(petSet.Spec, oldPetSet.Spec) { allErrs = append(allErrs, field.Forbidden(field.NewPath("spec"), "updates to petset spec for fields other than 'replicas' are forbidden.")) } + if !reflect.DeepEqual(petSet.Status, oldPetSet.Status) { + allErrs = append(allErrs, field.Forbidden(field.NewPath("status"), "updates to petset status forbidden.")) + } petSet.Spec.Replicas = restoreReplicas - petSet.Generation = restoreGeneration allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(petSet.Spec.Replicas), field.NewPath("spec", "replicas"))...) return allErrs }