mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
Merge pull request #111206 from SataQiu/scheduler-20220718
scheduler: include supported ScoringStrategyType list in error message for NodeResourcesFit plugin
This commit is contained in:
commit
2ae27c89ba
@ -31,6 +31,12 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/scheduler/apis/config"
|
"k8s.io/kubernetes/pkg/scheduler/apis/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var supportedScoringStrategyTypes = sets.NewString(
|
||||||
|
string(config.LeastAllocated),
|
||||||
|
string(config.MostAllocated),
|
||||||
|
string(config.RequestedToCapacityRatio),
|
||||||
|
)
|
||||||
|
|
||||||
// ValidateDefaultPreemptionArgs validates that DefaultPreemptionArgs are correct.
|
// ValidateDefaultPreemptionArgs validates that DefaultPreemptionArgs are correct.
|
||||||
func ValidateDefaultPreemptionArgs(path *field.Path, args *config.DefaultPreemptionArgs) error {
|
func ValidateDefaultPreemptionArgs(path *field.Path, args *config.DefaultPreemptionArgs) error {
|
||||||
var allErrs field.ErrorList
|
var allErrs field.ErrorList
|
||||||
@ -304,10 +310,14 @@ func ValidateNodeResourcesFitArgs(path *field.Path, args *config.NodeResourcesFi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
strategyPath := path.Child("scoringStrategy")
|
||||||
if args.ScoringStrategy != nil {
|
if args.ScoringStrategy != nil {
|
||||||
allErrs = append(allErrs, validateResources(args.ScoringStrategy.Resources, path.Child("resources"))...)
|
if !supportedScoringStrategyTypes.Has(string(args.ScoringStrategy.Type)) {
|
||||||
|
allErrs = append(allErrs, field.NotSupported(strategyPath.Child("type"), args.ScoringStrategy.Type, supportedScoringStrategyTypes.List()))
|
||||||
|
}
|
||||||
|
allErrs = append(allErrs, validateResources(args.ScoringStrategy.Resources, strategyPath.Child("resources"))...)
|
||||||
if args.ScoringStrategy.RequestedToCapacityRatio != nil {
|
if args.ScoringStrategy.RequestedToCapacityRatio != nil {
|
||||||
allErrs = append(allErrs, validateFunctionShape(args.ScoringStrategy.RequestedToCapacityRatio.Shape, path.Child("shape"))...)
|
allErrs = append(allErrs, validateFunctionShape(args.ScoringStrategy.RequestedToCapacityRatio.Shape, strategyPath.Child("shape"))...)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -745,6 +745,15 @@ func TestValidateFitArgs(t *testing.T) {
|
|||||||
args: config.NodeResourcesFitArgs{},
|
args: config.NodeResourcesFitArgs{},
|
||||||
expect: "ScoringStrategy field is required",
|
expect: "ScoringStrategy field is required",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "ScoringStrategy: type is unsupported",
|
||||||
|
args: config.NodeResourcesFitArgs{
|
||||||
|
ScoringStrategy: &config.ScoringStrategy{
|
||||||
|
Type: "Invalid",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
expect: `Unsupported value: "Invalid"`,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range argsTest {
|
for _, test := range argsTest {
|
||||||
@ -791,7 +800,7 @@ func TestValidateLeastAllocatedScoringStrategy(t *testing.T) {
|
|||||||
wantErrs: field.ErrorList{
|
wantErrs: field.ErrorList{
|
||||||
{
|
{
|
||||||
Type: field.ErrorTypeInvalid,
|
Type: field.ErrorTypeInvalid,
|
||||||
Field: "resources[0].weight",
|
Field: "scoringStrategy.resources[0].weight",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -806,7 +815,7 @@ func TestValidateLeastAllocatedScoringStrategy(t *testing.T) {
|
|||||||
wantErrs: field.ErrorList{
|
wantErrs: field.ErrorList{
|
||||||
{
|
{
|
||||||
Type: field.ErrorTypeInvalid,
|
Type: field.ErrorTypeInvalid,
|
||||||
Field: "resources[0].weight",
|
Field: "scoringStrategy.resources[0].weight",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -825,11 +834,11 @@ func TestValidateLeastAllocatedScoringStrategy(t *testing.T) {
|
|||||||
wantErrs: field.ErrorList{
|
wantErrs: field.ErrorList{
|
||||||
{
|
{
|
||||||
Type: field.ErrorTypeInvalid,
|
Type: field.ErrorTypeInvalid,
|
||||||
Field: "resources[0].weight",
|
Field: "scoringStrategy.resources[0].weight",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Type: field.ErrorTypeInvalid,
|
Type: field.ErrorTypeInvalid,
|
||||||
Field: "resources[1].weight",
|
Field: "scoringStrategy.resources[1].weight",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -886,7 +895,7 @@ func TestValidateMostAllocatedScoringStrategy(t *testing.T) {
|
|||||||
wantErrs: field.ErrorList{
|
wantErrs: field.ErrorList{
|
||||||
{
|
{
|
||||||
Type: field.ErrorTypeInvalid,
|
Type: field.ErrorTypeInvalid,
|
||||||
Field: "resources[0].weight",
|
Field: "scoringStrategy.resources[0].weight",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -901,7 +910,7 @@ func TestValidateMostAllocatedScoringStrategy(t *testing.T) {
|
|||||||
wantErrs: field.ErrorList{
|
wantErrs: field.ErrorList{
|
||||||
{
|
{
|
||||||
Type: field.ErrorTypeInvalid,
|
Type: field.ErrorTypeInvalid,
|
||||||
Field: "resources[0].weight",
|
Field: "scoringStrategy.resources[0].weight",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -920,11 +929,11 @@ func TestValidateMostAllocatedScoringStrategy(t *testing.T) {
|
|||||||
wantErrs: field.ErrorList{
|
wantErrs: field.ErrorList{
|
||||||
{
|
{
|
||||||
Type: field.ErrorTypeInvalid,
|
Type: field.ErrorTypeInvalid,
|
||||||
Field: "resources[0].weight",
|
Field: "scoringStrategy.resources[0].weight",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Type: field.ErrorTypeInvalid,
|
Type: field.ErrorTypeInvalid,
|
||||||
Field: "resources[1].weight",
|
Field: "scoringStrategy.resources[1].weight",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -965,7 +974,7 @@ func TestValidateRequestedToCapacityRatioScoringStrategy(t *testing.T) {
|
|||||||
wantErrs: field.ErrorList{
|
wantErrs: field.ErrorList{
|
||||||
{
|
{
|
||||||
Type: field.ErrorTypeRequired,
|
Type: field.ErrorTypeRequired,
|
||||||
Field: "shape",
|
Field: "scoringStrategy.shape",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -981,7 +990,7 @@ func TestValidateRequestedToCapacityRatioScoringStrategy(t *testing.T) {
|
|||||||
wantErrs: field.ErrorList{
|
wantErrs: field.ErrorList{
|
||||||
{
|
{
|
||||||
Type: field.ErrorTypeInvalid,
|
Type: field.ErrorTypeInvalid,
|
||||||
Field: "resources[0].weight",
|
Field: "scoringStrategy.resources[0].weight",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -997,7 +1006,7 @@ func TestValidateRequestedToCapacityRatioScoringStrategy(t *testing.T) {
|
|||||||
wantErrs: field.ErrorList{
|
wantErrs: field.ErrorList{
|
||||||
{
|
{
|
||||||
Type: field.ErrorTypeInvalid,
|
Type: field.ErrorTypeInvalid,
|
||||||
Field: "resources[0].weight",
|
Field: "scoringStrategy.resources[0].weight",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -1017,7 +1026,7 @@ func TestValidateRequestedToCapacityRatioScoringStrategy(t *testing.T) {
|
|||||||
wantErrs: field.ErrorList{
|
wantErrs: field.ErrorList{
|
||||||
{
|
{
|
||||||
Type: field.ErrorTypeInvalid,
|
Type: field.ErrorTypeInvalid,
|
||||||
Field: "shape[0].utilization",
|
Field: "scoringStrategy.shape[0].utilization",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -1032,7 +1041,7 @@ func TestValidateRequestedToCapacityRatioScoringStrategy(t *testing.T) {
|
|||||||
wantErrs: field.ErrorList{
|
wantErrs: field.ErrorList{
|
||||||
{
|
{
|
||||||
Type: field.ErrorTypeInvalid,
|
Type: field.ErrorTypeInvalid,
|
||||||
Field: "shape[0].utilization",
|
Field: "scoringStrategy.shape[0].utilization",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -1051,7 +1060,7 @@ func TestValidateRequestedToCapacityRatioScoringStrategy(t *testing.T) {
|
|||||||
wantErrs: field.ErrorList{
|
wantErrs: field.ErrorList{
|
||||||
{
|
{
|
||||||
Type: field.ErrorTypeInvalid,
|
Type: field.ErrorTypeInvalid,
|
||||||
Field: "shape[1].utilization",
|
Field: "scoringStrategy.shape[1].utilization",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -1092,7 +1101,7 @@ func TestValidateRequestedToCapacityRatioScoringStrategy(t *testing.T) {
|
|||||||
wantErrs: field.ErrorList{
|
wantErrs: field.ErrorList{
|
||||||
{
|
{
|
||||||
Type: field.ErrorTypeInvalid,
|
Type: field.ErrorTypeInvalid,
|
||||||
Field: "shape[2].utilization",
|
Field: "scoringStrategy.shape[2].utilization",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -1107,7 +1116,7 @@ func TestValidateRequestedToCapacityRatioScoringStrategy(t *testing.T) {
|
|||||||
wantErrs: field.ErrorList{
|
wantErrs: field.ErrorList{
|
||||||
{
|
{
|
||||||
Type: field.ErrorTypeInvalid,
|
Type: field.ErrorTypeInvalid,
|
||||||
Field: "shape[0].score",
|
Field: "scoringStrategy.shape[0].score",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -1122,7 +1131,7 @@ func TestValidateRequestedToCapacityRatioScoringStrategy(t *testing.T) {
|
|||||||
wantErrs: field.ErrorList{
|
wantErrs: field.ErrorList{
|
||||||
{
|
{
|
||||||
Type: field.ErrorTypeInvalid,
|
Type: field.ErrorTypeInvalid,
|
||||||
Field: "shape[0].score",
|
Field: "scoringStrategy.shape[0].score",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -283,7 +283,7 @@ func TestLeastAllocatedScoringStrategy(t *testing.T) {
|
|||||||
wantErrs: field.ErrorList{
|
wantErrs: field.ErrorList{
|
||||||
&field.Error{
|
&field.Error{
|
||||||
Type: field.ErrorTypeInvalid,
|
Type: field.ErrorTypeInvalid,
|
||||||
Field: "resources[0].weight",
|
Field: "scoringStrategy.resources[0].weight",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -306,7 +306,7 @@ func TestLeastAllocatedScoringStrategy(t *testing.T) {
|
|||||||
wantErrs: field.ErrorList{
|
wantErrs: field.ErrorList{
|
||||||
&field.Error{
|
&field.Error{
|
||||||
Type: field.ErrorTypeInvalid,
|
Type: field.ErrorTypeInvalid,
|
||||||
Field: "resources[1].weight",
|
Field: "scoringStrategy.resources[1].weight",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -327,7 +327,7 @@ func TestLeastAllocatedScoringStrategy(t *testing.T) {
|
|||||||
wantErrs: field.ErrorList{
|
wantErrs: field.ErrorList{
|
||||||
&field.Error{
|
&field.Error{
|
||||||
Type: field.ErrorTypeInvalid,
|
Type: field.ErrorTypeInvalid,
|
||||||
Field: "resources[1].weight",
|
Field: "scoringStrategy.resources[1].weight",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -241,7 +241,7 @@ func TestMostAllocatedScoringStrategy(t *testing.T) {
|
|||||||
wantErrs: field.ErrorList{
|
wantErrs: field.ErrorList{
|
||||||
&field.Error{
|
&field.Error{
|
||||||
Type: field.ErrorTypeInvalid,
|
Type: field.ErrorTypeInvalid,
|
||||||
Field: "resources[0].weight",
|
Field: "scoringStrategy.resources[0].weight",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -262,7 +262,7 @@ func TestMostAllocatedScoringStrategy(t *testing.T) {
|
|||||||
wantErrs: field.ErrorList{
|
wantErrs: field.ErrorList{
|
||||||
&field.Error{
|
&field.Error{
|
||||||
Type: field.ErrorTypeInvalid,
|
Type: field.ErrorTypeInvalid,
|
||||||
Field: "resources[1].weight",
|
Field: "scoringStrategy.resources[1].weight",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -282,7 +282,7 @@ func TestMostAllocatedScoringStrategy(t *testing.T) {
|
|||||||
wantErrs: field.ErrorList{
|
wantErrs: field.ErrorList{
|
||||||
&field.Error{
|
&field.Error{
|
||||||
Type: field.ErrorTypeInvalid,
|
Type: field.ErrorTypeInvalid,
|
||||||
Field: "resources[0].weight",
|
Field: "scoringStrategy.resources[0].weight",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user