diff --git a/pkg/api/validation.go b/pkg/api/validation.go index f16dd50ede8..f281cefdf23 100644 --- a/pkg/api/validation.go +++ b/pkg/api/validation.go @@ -318,6 +318,9 @@ func ValidateReplicationController(controller *ReplicationController) []error { if labels.Set(controller.DesiredState.ReplicaSelector).AsSelector().Empty() { errors = append(errors, makeInvalidError("ReplicationController.ReplicaSelector", controller.DesiredState.ReplicaSelector)) } + if controller.DesiredState.Replicas < 0 { + errors = append(errors, makeInvalidError("ReplicationController.Replicas", controller.DesiredState.Replicas )) + } errors = append(errors, ValidateManifest(&controller.DesiredState.PodTemplate.DesiredState.Manifest)...) return errors } diff --git a/pkg/api/validation_test.go b/pkg/api/validation_test.go index 451fd7d8b8c..9d4ec61b436 100644 --- a/pkg/api/validation_test.go +++ b/pkg/api/validation_test.go @@ -417,6 +417,13 @@ func TestValidateReplicationController(t *testing.T) { ReplicaSelector: validSelector, }, }, + "negative_replicas": { + JSONBase: JSONBase{ID: "abc"}, + DesiredState: ReplicationControllerState{ + Replicas: -1, + ReplicaSelector: validSelector, + }, + }, } for k, v := range errorCases { if errs := ValidateReplicationController(&v); len(errs) == 0 {