Merge pull request #99835 from chendave/args

Move VolumeBinding plugin args validation to apis/config/validation
This commit is contained in:
Kubernetes Prow Robot 2021-03-08 09:31:42 -08:00 committed by GitHub
commit 027d9e6c25
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 53 additions and 8 deletions

View File

@ -298,3 +298,15 @@ func ValidateNodeAffinityArgs(args *config.NodeAffinityArgs) error {
}
return errors.Flatten(errors.NewAggregate(errs))
}
// ValidateVolumeBindingArgs validates that VolumeBindingArgs are set correctly.
func ValidateVolumeBindingArgs(args *config.VolumeBindingArgs) error {
var path *field.Path
var err error
if args.BindTimeoutSeconds < 0 {
err = field.Invalid(path.Child("bindTimeoutSeconds"), args.BindTimeoutSeconds, "invalid BindTimeoutSeconds, should not be a negative value")
}
return err
}

View File

@ -945,3 +945,42 @@ func TestValidateNodeAffinityArgs(t *testing.T) {
})
}
}
func TestValidateVolumeBindingArgs(t *testing.T) {
cases := []struct {
name string
args config.VolumeBindingArgs
wantErr error
}{
{
name: "zero is a valid config",
args: config.VolumeBindingArgs{
BindTimeoutSeconds: 0,
},
},
{
name: "positive value is valid config",
args: config.VolumeBindingArgs{
BindTimeoutSeconds: 10,
},
},
{
name: "negative value is invalid config ",
args: config.VolumeBindingArgs{
BindTimeoutSeconds: -10,
},
wantErr: &field.Error{
Type: field.ErrorTypeInvalid,
Field: "bindTimeoutSeconds",
},
},
}
for _, tc := range cases {
t.Run(tc.name, func(t *testing.T) {
err := ValidateVolumeBindingArgs(&tc.args)
if diff := cmp.Diff(tc.wantErr, err, ignoreBadValueDetail); diff != "" {
t.Errorf("ValidateVolumeBindingArgs returned err (-want,+got):\n%s", diff)
}
})
}
}

View File

@ -32,6 +32,7 @@ import (
"k8s.io/kubernetes/pkg/controller/volume/scheduling"
"k8s.io/kubernetes/pkg/features"
"k8s.io/kubernetes/pkg/scheduler/apis/config"
"k8s.io/kubernetes/pkg/scheduler/apis/config/validation"
"k8s.io/kubernetes/pkg/scheduler/framework"
"k8s.io/kubernetes/pkg/scheduler/framework/plugins/helper"
)
@ -340,7 +341,7 @@ func New(plArgs runtime.Object, fh framework.Handle) (framework.Plugin, error) {
if !ok {
return nil, fmt.Errorf("want args to be of type VolumeBindingArgs, got %T", plArgs)
}
if err := validateArgs(args); err != nil {
if err := validation.ValidateVolumeBindingArgs(args); err != nil {
return nil, err
}
podInformer := fh.SharedInformerFactory().Core().V1().Pods()
@ -377,10 +378,3 @@ func New(plArgs runtime.Object, fh framework.Handle) (framework.Plugin, error) {
scorer: scorer,
}, nil
}
func validateArgs(args *config.VolumeBindingArgs) error {
if args.BindTimeoutSeconds <= 0 {
return fmt.Errorf("invalid BindTimeoutSeconds: %d, must be positive integer", args.BindTimeoutSeconds)
}
return nil
}