diff --git a/pkg/common/parameters.go b/pkg/common/parameters.go index 872837193..f76c0aaa3 100644 --- a/pkg/common/parameters.go +++ b/pkg/common/parameters.go @@ -201,6 +201,9 @@ func (pp *ParameterProcessor) ExtractAndDefaultParameters(parameters map[string] if err != nil { return p, fmt.Errorf("parameters contain invalid provisionedThroughputOnCreate parameter: %w", err) } + if paramProvisionedThroughputOnCreate < 0 { + return p, fmt.Errorf("parameter provisionedThroughputOnCreate cannot be negative") + } p.ProvisionedThroughputOnCreate = paramProvisionedThroughputOnCreate case ParameterAvailabilityClass: paramAvailabilityClass, err := ConvertStringToAvailabilityClass(v) diff --git a/pkg/common/parameters_test.go b/pkg/common/parameters_test.go index 35a116325..83a823535 100644 --- a/pkg/common/parameters_test.go +++ b/pkg/common/parameters_test.go @@ -344,6 +344,13 @@ func TestExtractAndDefaultParameters(t *testing.T) { labels: map[string]string{}, expectErr: true, }, + { + name: "invalid storage pool parameters, negative ProvisionedThroughputOnCreate", + enableStoragePools: true, + parameters: map[string]string{ParameterKeyType: "hyperdisk-throughput", ParameterKeyReplicationType: "none", ParameterKeyDiskEncryptionKmsKey: "foo/key", ParameterKeyLabels: "key1=value1,key2=value2", ParameterKeyResourceTags: "parent1/key1/value1,parent2/key2/value2", ParameterKeyProvisionedThroughputOnCreate: "-50Mi"}, + labels: map[string]string{}, + expectErr: true, + }, { name: "storage pool parameters, enableStoragePools is false", enableStoragePools: false,