...
1
16
17 package runtimeclass
18
19 import (
20 "context"
21 "fmt"
22
23 "github.com/onsi/ginkgo/v2"
24 v1 "k8s.io/api/core/v1"
25 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
26 "k8s.io/kubernetes/test/e2e/framework"
27 e2enode "k8s.io/kubernetes/test/e2e/framework/node"
28 storageutils "k8s.io/kubernetes/test/e2e/storage/utils"
29 imageutils "k8s.io/kubernetes/test/utils/image"
30 utilpointer "k8s.io/utils/pointer"
31 )
32
33 const (
34
35
36 PreconfiguredRuntimeClassHandler = "test-handler"
37 )
38
39
40 func NewRuntimeClassPod(runtimeClassName string) *v1.Pod {
41 return &v1.Pod{
42 ObjectMeta: metav1.ObjectMeta{
43 GenerateName: fmt.Sprintf("test-runtimeclass-%s-", runtimeClassName),
44 },
45 Spec: v1.PodSpec{
46 RuntimeClassName: &runtimeClassName,
47 Containers: []v1.Container{{
48 Name: "test",
49 Image: imageutils.GetE2EImage(imageutils.BusyBox),
50 Command: []string{"true"},
51 }},
52 RestartPolicy: v1.RestartPolicyNever,
53 AutomountServiceAccountToken: utilpointer.BoolPtr(false),
54 },
55 }
56 }
57
58
59
60 func NodeSupportsPreconfiguredRuntimeClassHandler(ctx context.Context, f *framework.Framework) error {
61 node, err := e2enode.GetRandomReadySchedulableNode(ctx, f.ClientSet)
62 framework.ExpectNoError(err)
63 hostExec := storageutils.NewHostExec(f)
64 ginkgo.DeferCleanup(hostExec.Cleanup)
65
66
67
68
69
70 cmd := fmt.Sprintf(`if [ -e '/etc/containerd/config.toml' ]; then
71 grep -q 'runtimes.%s' /etc/containerd/config.toml
72 exit
73 fi
74
75 if [ -e '/etc/crio/crio.conf' ]; then
76 grep -q 'runtimes.%s' /etc/crio/crio.conf
77 exit
78 fi
79
80 exit 1
81 `, PreconfiguredRuntimeClassHandler, PreconfiguredRuntimeClassHandler)
82
83 _, err = hostExec.IssueCommandWithResult(ctx, cmd, node)
84 return err
85 }
86
View as plain text