diff --git a/pkg/scheduler/apis/config/validation/validation.go b/pkg/scheduler/apis/config/validation/validation.go index 41c4c1c2e5..00fff14b43 100644 --- a/pkg/scheduler/apis/config/validation/validation.go +++ b/pkg/scheduler/apis/config/validation/validation.go @@ -44,6 +44,10 @@ func ValidateKubeSchedulerConfiguration(cc *config.KubeSchedulerConfiguration) f if cc.BindTimeoutSeconds == nil { allErrs = append(allErrs, field.Required(field.NewPath("bindTimeoutSeconds"), "")) } + if cc.PercentageOfNodesToScore < 0 || cc.PercentageOfNodesToScore > 100 { + allErrs = append(allErrs, field.Invalid(field.NewPath("percentageOfNodesToScore"), + cc.PercentageOfNodesToScore, "not in valid range 0-100")) + } return allErrs } diff --git a/pkg/scheduler/apis/config/validation/validation_test.go b/pkg/scheduler/apis/config/validation/validation_test.go index 6d154c993f..76ca5b4601 100644 --- a/pkg/scheduler/apis/config/validation/validation_test.go +++ b/pkg/scheduler/apis/config/validation/validation_test.go @@ -58,7 +58,8 @@ func TestValidateKubeSchedulerConfiguration(t *testing.T) { RetryPeriod: metav1.Duration{Duration: 5 * time.Second}, }, }, - BindTimeoutSeconds: &testTimeout, + BindTimeoutSeconds: &testTimeout, + PercentageOfNodesToScore: 35, } HardPodAffinitySymmetricWeightGt100 := validConfig.DeepCopy() @@ -92,6 +93,9 @@ func TestValidateKubeSchedulerConfiguration(t *testing.T) { bindTimeoutUnset := validConfig.DeepCopy() bindTimeoutUnset.BindTimeoutSeconds = nil + percentageOfNodesToScore101 := validConfig.DeepCopy() + percentageOfNodesToScore101.PercentageOfNodesToScore = int32(101) + scenarios := map[string]struct { expectedToFail bool config *config.KubeSchedulerConfiguration @@ -136,6 +140,10 @@ func TestValidateKubeSchedulerConfiguration(t *testing.T) { expectedToFail: true, config: bindTimeoutUnset, }, + "bad-percentage-of-nodes-to-score": { + expectedToFail: true, + config: percentageOfNodesToScore101, + }, } for name, scenario := range scenarios {