diff --git a/pkg/scheduler/framework/plugins/dynamicresources/dynamicresources.go b/pkg/scheduler/framework/plugins/dynamicresources/dynamicresources.go index 9fce37fdabedc..449b24b5f56e5 100644 --- a/pkg/scheduler/framework/plugins/dynamicresources/dynamicresources.go +++ b/pkg/scheduler/framework/plugins/dynamicresources/dynamicresources.go @@ -963,13 +963,15 @@ func (pl *dynamicResources) lookupParameters(logger klog.Logger, class *resource if status != nil { return } - claimParameters, status = pl.lookupClaimParameters(logger, claim) + claimParameters, status = pl.lookupClaimParameters(logger, class, claim) return } func (pl *dynamicResources) lookupClassParameters(logger klog.Logger, class *resourcev1alpha2.ResourceClass) (*resourcev1alpha2.ResourceClassParameters, *framework.Status) { + defaultClassParameters := resourcev1alpha2.ResourceClassParameters{} + if class.ParametersRef == nil { - return nil, nil + return &defaultClassParameters, nil } if class.ParametersRef.APIGroup == resourcev1alpha2.SchemeGroupVersion.Group && @@ -1004,9 +1006,31 @@ func (pl *dynamicResources) lookupClassParameters(logger klog.Logger, class *res return nil, statusUnschedulable(logger, fmt.Sprintf("generated class parameters for %s.%s %s not found", class.ParametersRef.Kind, class.ParametersRef.APIGroup, klog.KRef(class.Namespace, class.ParametersRef.Name))) } -func (pl *dynamicResources) lookupClaimParameters(logger klog.Logger, claim *resourcev1alpha2.ResourceClaim) (*resourcev1alpha2.ResourceClaimParameters, *framework.Status) { +func (pl *dynamicResources) lookupClaimParameters(logger klog.Logger, class *resourcev1alpha2.ResourceClass, claim *resourcev1alpha2.ResourceClaim) (*resourcev1alpha2.ResourceClaimParameters, *framework.Status) { + defaultClaimParameters := resourcev1alpha2.ResourceClaimParameters{ + Shareable: true, + DriverRequests: []resourcev1alpha2.DriverRequests{ + { + DriverName: class.DriverName, + Requests: []resourcev1alpha2.ResourceRequest{ + { + ResourceRequestModel: resourcev1alpha2.ResourceRequestModel{ + // TODO: This only works because NamedResources is + // the only model currently implemented. We need to + // match the default to how the resources of this + // class are being advertized in a ResourceSlice. + NamedResources: &resourcev1alpha2.NamedResourcesRequest{ + Selector: "true", + }, + }, + }, + }, + }, + }, + } + if claim.Spec.ParametersRef == nil { - return nil, nil + return &defaultClaimParameters, nil } if claim.Spec.ParametersRef.APIGroup == resourcev1alpha2.SchemeGroupVersion.Group && claim.Spec.ParametersRef.Kind == "ResourceClaimParameters" { diff --git a/pkg/scheduler/framework/plugins/dynamicresources/structuredparameters.go b/pkg/scheduler/framework/plugins/dynamicresources/structuredparameters.go index 44b9aee85b9b0..d9b5a222369d9 100644 --- a/pkg/scheduler/framework/plugins/dynamicresources/structuredparameters.go +++ b/pkg/scheduler/framework/plugins/dynamicresources/structuredparameters.go @@ -128,12 +128,10 @@ func newClaimController(logger klog.Logger, class *resourcev1alpha2.ResourceClas } for driverName, perDriver := range namedresourcesRequests { var filter *resourcev1alpha2.NamedResourcesFilter - if classParameters != nil { - for _, f := range classParameters.Filters { - if f.DriverName == driverName && f.ResourceFilterModel.NamedResources != nil { - filter = f.ResourceFilterModel.NamedResources - break - } + for _, f := range classParameters.Filters { + if f.DriverName == driverName && f.ResourceFilterModel.NamedResources != nil { + filter = f.ResourceFilterModel.NamedResources + break } } controller, err := namedresourcesmodel.NewClaimController(filter, perDriver.requests)