@@ -41,6 +41,7 @@ import (
4141	resourceapi "k8s.io/api/resource/v1alpha3" 
4242	apierrors "k8s.io/apimachinery/pkg/api/errors" 
4343	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 
44+ 	"k8s.io/apimachinery/pkg/runtime" 
4445	"k8s.io/client-go/kubernetes" 
4546	"k8s.io/klog/v2" 
4647	draplugin "k8s.io/kubernetes/pkg/kubelet/cm/dra/plugin" 
@@ -74,7 +75,7 @@ var _ = framework.SIGDescribe("node")("DRA", feature.DynamicResourceAllocation,
7475			// When plugin and kubelet get killed at the end of the tests, they leave ResourceSlices behind. 
7576			// Perhaps garbage collection would eventually remove them (not sure how the node instance 
7677			// is managed), but this could take time. Let's clean up explicitly. 
77- 			framework .ExpectNoError (f .ClientSet .ResourceV1alpha2 ().ResourceSlices ().DeleteCollection (ctx , metav1.DeleteOptions {}, metav1.ListOptions {}))
78+ 			framework .ExpectNoError (f .ClientSet .ResourceV1alpha3 ().ResourceSlices ().DeleteCollection (ctx , metav1.DeleteOptions {}, metav1.ListOptions {}))
7879		})
7980	})
8081
@@ -562,7 +563,7 @@ func newKubeletPlugin(ctx context.Context, clientSet kubernetes.Interface, nodeN
562563	ginkgo .DeferCleanup (func (ctx  context.Context ) {
563564		// kubelet should do this eventually, but better make sure. 
564565		// A separate test checks this explicitly. 
565- 		framework .ExpectNoError (clientSet .ResourceV1alpha3 ().ResourceSlices ().DeleteCollection (ctx , metav1.DeleteOptions {}, metav1.ListOptions {FieldSelector : "driverName ="+  driverName }))
566+ 		framework .ExpectNoError (clientSet .ResourceV1alpha3 ().ResourceSlices ().DeleteCollection (ctx , metav1.DeleteOptions {}, metav1.ListOptions {FieldSelector : resourceapi . ResourceSliceSelectorDriver   +   " ="+  driverName }))
566567	})
567568	ginkgo .DeferCleanup (plugin .Stop )
568569
@@ -573,18 +574,17 @@ func newKubeletPlugin(ctx context.Context, clientSet kubernetes.Interface, nodeN
573574// NOTE: as scheduler and controller manager are not running by the Node e2e, 
574575// the objects must contain all required data to be processed correctly by the API server 
575576// and placed on the node without involving the scheduler and the DRA controller 
576- func  createTestObjects (ctx  context.Context , clientSet  kubernetes.Interface , nodename , namespace , className , claimName , podName  string , deferPodDeletion  bool , pluginNames  []string ) * v1.Pod  {
577- 	// ResourceClass  
578- 	class  :=  & resourceapi.ResourceClass {
577+ func  createTestObjects (ctx  context.Context , clientSet  kubernetes.Interface , nodename , namespace , className , claimName , podName  string , deferPodDeletion  bool , driverNames  []string ) * v1.Pod  {
578+ 	// DeviceClass  
579+ 	class  :=  & resourceapi.DeviceClass {
579580		ObjectMeta : metav1.ObjectMeta {
580581			Name : className ,
581582		},
582- 		DriverName : "controller" ,
583583	}
584- 	_ , err  :=  clientSet .ResourceV1alpha3 ().ResourceClasses ().Create (ctx , class , metav1.CreateOptions {})
584+ 	_ , err  :=  clientSet .ResourceV1alpha3 ().DeviceClasses ().Create (ctx , class , metav1.CreateOptions {})
585585	framework .ExpectNoError (err )
586586
587- 	ginkgo .DeferCleanup (clientSet .ResourceV1alpha3 ().ResourceClasses ().Delete , className , metav1.DeleteOptions {})
587+ 	ginkgo .DeferCleanup (clientSet .ResourceV1alpha3 ().DeviceClasses ().Delete , className , metav1.DeleteOptions {})
588588
589589	// ResourceClaim 
590590	podClaimName  :=  "resource-claim" 
@@ -593,7 +593,12 @@ func createTestObjects(ctx context.Context, clientSet kubernetes.Interface, node
593593			Name : claimName ,
594594		},
595595		Spec : resourceapi.ResourceClaimSpec {
596- 			ResourceClassName : className ,
596+ 			Devices : resourceapi.DeviceClaim {
597+ 				Requests : []resourceapi.DeviceRequest {{
598+ 					Name :            "my-request" ,
599+ 					DeviceClassName : className ,
600+ 				}},
601+ 			},
597602		},
598603	}
599604	createdClaim , err  :=  clientSet .ResourceV1alpha3 ().ResourceClaims (namespace ).Create (ctx , claim , metav1.CreateOptions {})
@@ -637,21 +642,32 @@ func createTestObjects(ctx context.Context, clientSet kubernetes.Interface, node
637642	}
638643
639644	// Update claim status: set ReservedFor and AllocationResult 
640- 	// NOTE: This is usually done by the DRA controller 
641- 	resourceHandlers  :=  make ([]resourceapi.ResourceHandle , len (pluginNames ))
642- 	for  i , pluginName  :=  range  pluginNames  {
643- 		resourceHandlers [i ] =  resourceapi.ResourceHandle {
644- 			DriverName : pluginName ,
645- 			Data :       "{\" EnvVars\" :{\" DRA_PARAM1\" :\" PARAM1_VALUE\" },\" NodeName\" :\" \" }" ,
645+ 	// NOTE: This is usually done by the DRA controller or the scheduler. 
646+ 	results  :=  make ([]resourceapi.DeviceRequestAllocationResult , len (driverNames ))
647+ 	for  i , driverName  :=  range  driverNames  {
648+ 		results [i ] =  resourceapi.DeviceRequestAllocationResult {
649+ 			Driver : driverName ,
650+ 			Pool :   "some-pool" ,
651+ 			Device : "some-device" ,
646652		}
647653	}
654+ 
648655	createdClaim .Status  =  resourceapi.ResourceClaimStatus {
649- 		DriverName : "controller" ,
650656		ReservedFor : []resourceapi.ResourceClaimConsumerReference {
651657			{Resource : "pods" , Name : podName , UID : createdPod .UID },
652658		},
653659		Allocation : & resourceapi.AllocationResult {
654- 			ResourceHandles : resourceHandlers ,
660+ 			Devices : resourceapi.DeviceAllocationResult {
661+ 				Results : results ,
662+ 				Config : []resourceapi.DeviceAllocationConfiguration {{
663+ 					DeviceConfiguration : resourceapi.DeviceConfiguration {
664+ 						Opaque : & resourceapi.OpaqueDeviceConfiguration {
665+ 							Driver :     driverName ,
666+ 							Parameters : runtime.RawExtension {Raw : []byte (`{"EnvVars":{"DRA_PARAM1":"PARAM1_VALUE"}}` )},
667+ 						},
668+ 					},
669+ 				}},
670+ 			},
655671		},
656672	}
657673	_ , err  =  clientSet .ResourceV1alpha3 ().ResourceClaims (namespace ).UpdateStatus (ctx , createdClaim , metav1.UpdateOptions {})
@@ -665,10 +681,12 @@ func createTestResourceSlice(ctx context.Context, clientSet kubernetes.Interface
665681		ObjectMeta : metav1.ObjectMeta {
666682			Name : nodeName ,
667683		},
668- 		NodeName :   nodeName ,
669- 		DriverName : driverName ,
670- 		ResourceModel : resourceapi.ResourceModel {
671- 			NamedResources : & resourceapi.NamedResourcesResources {},
684+ 		Spec : resourceapi.ResourceSliceSpec {
685+ 			NodeName : nodeName ,
686+ 			Driver :   driverName ,
687+ 			Pool : resourceapi.ResourcePool {
688+ 				Name : nodeName ,
689+ 			},
672690		},
673691	}
674692
0 commit comments