diff --git a/test/e2e/suite_test.go b/test/e2e/suite_test.go index 3a57010fc1e..17c931cd921 100644 --- a/test/e2e/suite_test.go +++ b/test/e2e/suite_test.go @@ -17,6 +17,7 @@ limitations under the License. package e2e import ( + "encoding/base64" "flag" "fmt" "log" @@ -52,11 +53,12 @@ const ( ) var ( - smbDriver *smb.Driver - isWindowsCluster = os.Getenv(testWindowsEnvVar) != "" - winServerVer = os.Getenv(testWinServerVerEnvVar) - preInstallDriver = os.Getenv(preInstallDriverEnvVar) == "true" - defaultStorageClassParameters = map[string]string{ + smbDriver *smb.Driver + isWindowsCluster = os.Getenv(testWindowsEnvVar) != "" + isWindowsHostProcessDeployment = os.Getenv("WINDOWS_USE_HOST_PROCESS_CONTAINERS") != "" + winServerVer = os.Getenv(testWinServerVerEnvVar) + preInstallDriver = os.Getenv(preInstallDriverEnvVar) == "true" + defaultStorageClassParameters = map[string]string{ "source": getSmbTestEnvVarValue(testSmbSourceEnvVar, defaultSmbSource), "csi.storage.k8s.io/provisioner-secret-name": getSmbTestEnvVarValue(testSmbSecretNameEnvVar, defaultSmbSecretName), "csi.storage.k8s.io/provisioner-secret-namespace": getSmbTestEnvVarValue(testSmbSecretNamespaceEnvVar, defaultSmbSecretNamespace), @@ -160,6 +162,7 @@ var _ = ginkgo.BeforeSuite(func() { smbDriver.Run(fmt.Sprintf("unix:///tmp/csi-%s.sock", uuid.NewUUID().String()), kubeconfig, false) }() + var source string if isWindowsCluster { err := os.Chdir("../..") gomega.Expect(err).NotTo(gomega.HaveOccurred()) @@ -167,7 +170,24 @@ var _ = ginkgo.BeforeSuite(func() { err := os.Chdir("test/e2e") gomega.Expect(err).NotTo(gomega.HaveOccurred()) }() + } + + if isWindowsHostProcessDeployment { + decodedBytes, err := base64.StdEncoding.DecodeString("YW5keXNzZGZpbGUK") + if err != nil { + log.Printf("Error decoding base64 string: %v\n", err) + return + } + source = fmt.Sprintf("//%s.file.core.windows.net/test", strings.TrimRight(string(decodedBytes), "\n")) + createSMBCredsScript := "test/utils/create_smbcreds_windows.sh" + log.Printf("run script: %s\n", createSMBCredsScript) + + cmd := exec.Command("bash", createSMBCredsScript) + output, err := cmd.CombinedOutput() + log.Printf("got output: %v, error: %v\n", string(output), err) + gomega.Expect(err).NotTo(gomega.HaveOccurred()) + } else if isWindowsCluster { getSMBPublicIPScript := "test/utils/get_smb_svc_public_ip.sh" log.Printf("run script: %s\n", getSMBPublicIPScript) @@ -177,8 +197,10 @@ var _ = ginkgo.BeforeSuite(func() { gomega.Expect(err).NotTo(gomega.HaveOccurred()) smbPublicIP := strings.TrimSuffix(string(output), "\n") - source := fmt.Sprintf("//%s/share", smbPublicIP) + source = fmt.Sprintf("//%s/share", smbPublicIP) + } + if isWindowsCluster { log.Printf("use source on Windows: %v\n", source) defaultStorageClassParameters["source"] = source retainStorageClassParameters["source"] = source diff --git a/test/utils/create_smbcreds_windows.sh b/test/utils/create_smbcreds_windows.sh new file mode 100644 index 00000000000..d6673f8dff9 --- /dev/null +++ b/test/utils/create_smbcreds_windows.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +# Copyright 2025 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -e +username=`echo YW5keXNzZGZpbGUK | base64 -d` +pwd=`echo RDVyY1pFMkZ1UlRZVktmaTd4SlZCb1VwdUhLZkRpQUhxZmZzaEVEMXlrQXNPMktaKzZvS25nemF5alZpL1hhSU5zaWVtUGlHSUp5ZkhGcTZUSm5rOUE9PQo= | base64 -d` +kubectl delete secret smbcreds --ignore-not-found -n default +kubectl create secret generic smbcreds --from-literal username=$username --from-literal password=$pwd --from-literal mountOptions="dir_mode=0777,file_mode=0777,uid=0,gid=0,mfsymlinks" -n default +