mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-06 10:43:56 +00:00
e2e_node: implement DevicePluginCDIDevices test case
This commit is contained in:
parent
8a42be978b
commit
bbb4a88bbb
@ -37,6 +37,7 @@ import (
|
||||
"k8s.io/apimachinery/pkg/runtime/serializer"
|
||||
k8stypes "k8s.io/apimachinery/pkg/types"
|
||||
"k8s.io/apimachinery/pkg/util/sets"
|
||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||
runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1"
|
||||
kubeletdevicepluginv1beta1 "k8s.io/kubelet/pkg/apis/deviceplugin/v1beta1"
|
||||
admissionapi "k8s.io/pod-security-admission/api"
|
||||
@ -47,9 +48,11 @@ import (
|
||||
"k8s.io/kubectl/pkg/util/podutils"
|
||||
kubeletpodresourcesv1 "k8s.io/kubelet/pkg/apis/podresources/v1"
|
||||
kubeletpodresourcesv1alpha1 "k8s.io/kubelet/pkg/apis/podresources/v1alpha1"
|
||||
"k8s.io/kubernetes/pkg/features"
|
||||
"k8s.io/kubernetes/test/e2e/framework"
|
||||
e2enode "k8s.io/kubernetes/test/e2e/framework/node"
|
||||
e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
|
||||
e2eskipper "k8s.io/kubernetes/test/e2e/framework/skipper"
|
||||
e2etestfiles "k8s.io/kubernetes/test/e2e/framework/testfiles"
|
||||
)
|
||||
|
||||
@ -239,6 +242,16 @@ func testDevicePlugin(f *framework.Framework, pluginSockDir string) {
|
||||
gomega.Expect(v1ResourcesForOurPod.Containers[0].Devices[0].DeviceIds).To(gomega.HaveLen(1))
|
||||
})
|
||||
|
||||
ginkgo.It("can make a CDI device accessible in a container", func(ctx context.Context) {
|
||||
e2eskipper.SkipUnlessFeatureGateEnabled(features.DevicePluginCDIDevices)
|
||||
// check if CDI_DEVICE env variable is set
|
||||
// and only one correspondent device node /tmp/<CDI_DEVICE> is available inside a container
|
||||
podObj := makeBusyboxPod(SampleDeviceResourceName, "[ $(ls /tmp/CDI-Dev-[1,2] | wc -l) -eq 1 -a -b /tmp/$CDI_DEVICE ]")
|
||||
podObj.Spec.RestartPolicy = v1.RestartPolicyNever
|
||||
pod := e2epod.NewPodClient(f).Create(ctx, podObj)
|
||||
framework.ExpectNoError(e2epod.WaitForPodSuccessInNamespace(ctx, f.ClientSet, pod.Name, pod.Namespace))
|
||||
})
|
||||
|
||||
// simulate container restart, while all other involved components (kubelet, device plugin) stay stable. To do so, in the container
|
||||
// entry point we sleep for a limited and short period of time. The device assignment should be kept and be stable across the container
|
||||
// restarts. For the sake of brevity we however check just the fist restart.
|
||||
@ -906,6 +919,10 @@ func getSampleDevicePluginPod(pluginSockDir string) *v1.Pod {
|
||||
}
|
||||
}
|
||||
|
||||
if utilfeature.DefaultFeatureGate.Enabled(features.DevicePluginCDIDevices) {
|
||||
dp.Spec.Containers[0].Env = append(dp.Spec.Containers[0].Env, v1.EnvVar{Name: "CDI_ENABLED", Value: "1"})
|
||||
}
|
||||
|
||||
return dp
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user