Merge pull request #125495 from pohly/dra-scheduler-fix-parameter-indexing
DRA: fix indexing of generated parameters
This commit is contained in:
		@@ -381,12 +381,12 @@ func New(ctx context.Context, plArgs runtime.Object, fh framework.Handle, fts fe
 | 
				
			|||||||
	return pl, nil
 | 
						return pl, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func claimParametersReferenceKeyFunc(ref *resourcev1alpha2.ResourceClaimParametersReference) string {
 | 
					func claimParametersReferenceKeyFunc(namespace string, ref *resourcev1alpha2.ResourceClaimParametersReference) string {
 | 
				
			||||||
	return ref.APIGroup + "/" + ref.Kind + "/" + ref.Name
 | 
						return ref.APIGroup + "/" + ref.Kind + "/" + namespace + "/" + ref.Name
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// claimParametersGeneratedFromIndexFunc is an index function that returns other resource keys
 | 
					// claimParametersGeneratedFromIndexFunc is an index function that returns other resource keys
 | 
				
			||||||
// (= apiGroup/kind/name) for ResourceClaimParametersReference in a given claim parameters.
 | 
					// (= apiGroup/kind/namespace/name) for ResourceClaimParametersReference in a given claim parameters.
 | 
				
			||||||
func claimParametersGeneratedFromIndexFunc(obj interface{}) ([]string, error) {
 | 
					func claimParametersGeneratedFromIndexFunc(obj interface{}) ([]string, error) {
 | 
				
			||||||
	parameters, ok := obj.(*resourcev1alpha2.ResourceClaimParameters)
 | 
						parameters, ok := obj.(*resourcev1alpha2.ResourceClaimParameters)
 | 
				
			||||||
	if !ok {
 | 
						if !ok {
 | 
				
			||||||
@@ -395,7 +395,7 @@ func claimParametersGeneratedFromIndexFunc(obj interface{}) ([]string, error) {
 | 
				
			|||||||
	if parameters.GeneratedFrom == nil {
 | 
						if parameters.GeneratedFrom == nil {
 | 
				
			||||||
		return nil, nil
 | 
							return nil, nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return []string{claimParametersReferenceKeyFunc(parameters.GeneratedFrom)}, nil
 | 
						return []string{claimParametersReferenceKeyFunc(parameters.Namespace, parameters.GeneratedFrom)}, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func classParametersReferenceKeyFunc(ref *resourcev1alpha2.ResourceClassParametersReference) string {
 | 
					func classParametersReferenceKeyFunc(ref *resourcev1alpha2.ResourceClassParametersReference) string {
 | 
				
			||||||
@@ -1105,7 +1105,7 @@ func (pl *dynamicResources) lookupClaimParameters(logger klog.Logger, class *res
 | 
				
			|||||||
		return parameters, nil
 | 
							return parameters, nil
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	objs, err := pl.claimParametersIndexer.ByIndex(generatedFromIndex, claimParametersReferenceKeyFunc(claim.Spec.ParametersRef))
 | 
						objs, err := pl.claimParametersIndexer.ByIndex(generatedFromIndex, claimParametersReferenceKeyFunc(claim.Namespace, claim.Spec.ParametersRef))
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, statusError(logger, fmt.Errorf("listing claim parameters failed: %v", err))
 | 
							return nil, statusError(logger, fmt.Errorf("listing claim parameters failed: %v", err))
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -140,6 +140,15 @@ var (
 | 
				
			|||||||
			APIGroup: "example.com",
 | 
								APIGroup: "example.com",
 | 
				
			||||||
		}).
 | 
							}).
 | 
				
			||||||
		Obj()
 | 
							Obj()
 | 
				
			||||||
 | 
						claimParametersOtherNamespace = st.MakeClaimParameters().Name(claimName).Namespace(namespace+"-2").
 | 
				
			||||||
 | 
										NamedResourcesRequests("some-driver", "true").
 | 
				
			||||||
 | 
										Shareable(true).
 | 
				
			||||||
 | 
										GeneratedFrom(&resourcev1alpha2.ResourceClaimParametersReference{
 | 
				
			||||||
 | 
								Name:     claimName,
 | 
				
			||||||
 | 
								Kind:     "ResourceClaimParameters",
 | 
				
			||||||
 | 
								APIGroup: "example.com",
 | 
				
			||||||
 | 
							}).
 | 
				
			||||||
 | 
							Obj()
 | 
				
			||||||
	classParameters = st.MakeClassParameters().Name(className).Namespace(namespace).
 | 
						classParameters = st.MakeClassParameters().Name(className).Namespace(namespace).
 | 
				
			||||||
			NamedResourcesFilters("some-driver", "true").
 | 
								NamedResourcesFilters("some-driver", "true").
 | 
				
			||||||
			GeneratedFrom(&resourcev1alpha2.ResourceClassParametersReference{
 | 
								GeneratedFrom(&resourcev1alpha2.ResourceClassParametersReference{
 | 
				
			||||||
@@ -631,7 +640,7 @@ func TestPlugin(t *testing.T) {
 | 
				
			|||||||
			pod:     podWithClaimName,
 | 
								pod:     podWithClaimName,
 | 
				
			||||||
			claims:  []*resourcev1alpha2.ResourceClaim{claimWithCRD(pendingDelayedClaimWithParams)},
 | 
								claims:  []*resourcev1alpha2.ResourceClaim{claimWithCRD(pendingDelayedClaimWithParams)},
 | 
				
			||||||
			classes: []*resourcev1alpha2.ResourceClass{classWithCRD(structuredResourceClassWithCRD)},
 | 
								classes: []*resourcev1alpha2.ResourceClass{classWithCRD(structuredResourceClassWithCRD)},
 | 
				
			||||||
			objs:    []apiruntime.Object{claimParameters, classParameters, workerNodeSlice},
 | 
								objs:    []apiruntime.Object{claimParameters, claimParametersOtherNamespace /* must be ignored */, classParameters, workerNodeSlice},
 | 
				
			||||||
			want: want{
 | 
								want: want{
 | 
				
			||||||
				reserve: result{
 | 
									reserve: result{
 | 
				
			||||||
					inFlightClaim: claimWithCRD(structuredAllocatedClaimWithParams),
 | 
										inFlightClaim: claimWithCRD(structuredAllocatedClaimWithParams),
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user