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