@@ -39,10 +39,8 @@ import (
3939 "k8s.io/apimachinery/pkg/util/rand"
4040 "k8s.io/apimachinery/pkg/util/version"
4141 "k8s.io/apimachinery/pkg/util/wait"
42- "k8s.io/klog/v2"
4342
4443 clientset "k8s.io/client-go/kubernetes"
45- "k8s.io/client-go/tools/clientcmd"
4644 "k8s.io/kubernetes/pkg/kubelet/events"
4745 "k8s.io/kubernetes/test/e2e/framework"
4846 e2eevents "k8s.io/kubernetes/test/e2e/framework/events"
@@ -121,8 +119,6 @@ const (
121119 driverDaemonsetLabel = "k8s-app=gcs-fuse-csi-driver"
122120
123121 IsOSSEnvVar = "IS_OSS"
124-
125- GcsfuseVersionVarName = "gcsfuse-version"
126122)
127123
128124var InvalidVolume = fmt .Sprintf ("non-existent-test-bucket-%s" , rand .String (8 ))
@@ -1083,107 +1079,14 @@ func (t *TestJob) Cleanup(ctx context.Context) {
10831079 framework .ExpectNoError (err )
10841080}
10851081
1086- func GetGCSFuseVersion (ctx context.Context ) string {
1087- config , err := clientcmd .BuildConfigFromFlags ("" , framework .TestContext .KubeConfig )
1088- framework .ExpectNoError (err )
1089-
1090- cs , err := clientset .NewForConfig (config )
1091- framework .ExpectNoError (err )
1092-
1093- versionData := os .Getenv (GcsfuseVersionVarName )
1094- if versionData != "" {
1095- return versionData
1096- }
1097- klog .Infof ("GCSFuseVersion env var has not been set will retrieve it manually" )
1098-
1099- gcsfuseVersion , err := deployGCSFuseVersionFetcherPod (ctx , cs )
1100- if err != nil {
1101- klog .Errorf ("Failed to deploy GCS Fuse version fetcher pod: %v" , err )
1102- framework .ExpectNoError (err )
1103- }
1104-
1105- return gcsfuseVersion
1106- }
1107-
1108- func deployGCSFuseVersionFetcherPod (ctx context.Context , clientset clientset.Interface ) (string , error ) {
1109- configMaps , err := clientset .CoreV1 ().ConfigMaps ("" ).List (ctx , metav1.ListOptions {
1110- FieldSelector : "metadata.name=gcsfusecsi-image-config" ,
1111- })
1112- framework .ExpectNoError (err )
1113- if len (configMaps .Items ) != 1 {
1114- framework .Failf ("expected one config map `gcsfusecsi-image-config` but found %d" , len (configMaps .Items ))
1115- }
1116-
1117- sidecarImageConfig := configMaps .Items [0 ]
1118-
1119- image := sidecarImageConfig .Data ["sidecar-image" ]
1120- if image == "" {
1121- framework .Failf ("expected data for key `sidecar-image` in the config map `gcsfusecsi-image-config`" )
1122- }
1123-
1124- pod := & corev1.Pod {
1125- ObjectMeta : metav1.ObjectMeta {
1126- GenerateName : "gcsfuse-version-fetcher-" ,
1127- Namespace : utils .DefaultNamespace ,
1128- },
1129- Spec : corev1.PodSpec {
1130- TerminationGracePeriodSeconds : ptr .To (int64 (0 )),
1131- Containers : []corev1.Container {
1132- {
1133- Name : webhook .GcsFuseSidecarName ,
1134- Image : image ,
1135- Command : []string {"/gcsfuse" , "--version" },
1136- },
1137- {
1138- Name : "sleeper" ,
1139- Image : "busybox" ,
1140- Command : []string {"sleep" , "infinity" },
1141- },
1142- },
1143- RestartPolicy : corev1 .RestartPolicyNever ,
1144- Tolerations : []corev1.Toleration {
1145- {Operator : corev1 .TolerationOpExists },
1146- },
1147- },
1148- }
1149-
1150- createdPod , err := clientset .CoreV1 ().Pods (utils .DefaultNamespace ).Create (ctx , pod , metav1.CreateOptions {})
1151- if createdPod != nil {
1152- defer clientset .CoreV1 ().Pods (utils .DefaultNamespace ).Delete (context .Background (), createdPod .Name , metav1.DeleteOptions {})
1153- }
1154- framework .ExpectNoError (err ,
1155- "Pods.Create should succeed, but failed with error message: %v" , err )
1156-
1157- e2epod .WaitForPodRunningInNamespace (ctx , clientset , createdPod )
1158- klog .Infof ("Pod %s is running, waiting 60s before fetching GCSFuse version from logs" , createdPod .Name )
1159- time .Sleep (60 * time .Second )
1160-
1161- var logs []byte
1162- req := clientset .CoreV1 ().Pods (utils .DefaultNamespace ).GetLogs (createdPod .Name , & corev1.PodLogOptions {Container : webhook .GcsFuseSidecarName })
1163- err = wait .PollUntilContextTimeout (ctx , 30 * time .Second , time .Minute * 10 , true , func (context.Context ) (bool , error ) {
1164- logs , err = req .DoRaw (ctx )
1165- if err != nil {
1166- framework .Logf ("failed to read pod logs, retrying: %v" , err )
1167- return false , nil
1168- }
1169- return true , nil
1170- })
1171- if err != nil {
1172- return "" , fmt .Errorf ("failed to read pod logs: %w" , err )
1173- }
1174-
1175- output := string (logs )
1176-
1177- // Parse: "gcsfuse version 3.7.1-gke.0 ..."
1178- l := strings .Split (strings .TrimSpace (output ), " " )
1179- if len (l ) <= 2 {
1180- return "" , fmt .Errorf ("unexpected version output format: %s" , output )
1181- }
1182- return l [2 ], nil
1082+ // GetGCSFuseVersion returns the GCSFuse version to be tested.
1083+ // The env var is set by the handler.go before running the tests.
1084+ func GetGCSFuseVersion () string {
1085+ return os .Getenv (utils .GcsfuseVersionVarName )
11831086}
11841087
1185- func GCSFuseVersionAndBranch (ctx context. Context ) (* version.Version , string ) {
1186- vStr := GetGCSFuseVersion (ctx )
1088+ func GCSFuseVersionAndBranch () (* version.Version , string ) {
1089+ vStr := GetGCSFuseVersion ()
11871090 v , branch := utils .GCSFuseBranch (vStr )
11881091 if v == nil {
11891092 // This happens for master branch builds. We still need to parse the version.
0 commit comments