diff --git a/test/e2e/tests/multi_zone_e2e_test.go b/test/e2e/tests/multi_zone_e2e_test.go index 7d2089c5c..a0a1b90a2 100644 --- a/test/e2e/tests/multi_zone_e2e_test.go +++ b/test/e2e/tests/multi_zone_e2e_test.go @@ -157,7 +157,7 @@ func testAttachWriteReadDetach(volID string, volName string, instance *remote.In testFile := filepath.Join(a.publishDir, "testfile") err := testutils.WriteFile(instance, testFile, testFileContents) if err != nil { - return fmt.Errorf("Failed to write file: %v", err) + return fmt.Errorf("Failed to write file: %v", err.Error()) } } return nil @@ -168,7 +168,7 @@ func testAttachWriteReadDetach(volID string, volName string, instance *remote.In secondTestFile := filepath.Join(a.publishDir, "testfile") readContents, err := testutils.ReadFile(instance, secondTestFile) if err != nil { - return fmt.Errorf("ReadFile failed with error: %v", err) + return fmt.Errorf("ReadFile failed with error: %v", err.Error()) } if strings.TrimSpace(string(readContents)) != testFileContents { return fmt.Errorf("wanted test file content: %s, got content: %s", testFileContents, readContents) @@ -184,7 +184,7 @@ func testLifecycleWithVerify(volID string, volName string, instance *remote.Inst // Attach Disk err = client.ControllerPublishVolume(volID, instance.GetNodeID()) if err != nil { - return fmt.Errorf("ControllerPublishVolume failed with error for disk %v on node %v: %v", volID, instance.GetNodeID(), err) + return fmt.Errorf("ControllerPublishVolume failed with error for disk %v on node %v: %v", volID, instance.GetNodeID(), err.Error()) } defer func() { @@ -232,11 +232,11 @@ func testLifecycleWithVerify(volID string, volName string, instance *remote.Inst } if err != nil { - return fmt.Errorf("NodePublishVolume failed with error: %v", err) + return fmt.Errorf("NodePublishVolume failed with error: %v", err.Error()) } err = testutils.ForceChmod(instance, filepath.Join("/tmp/", volName), "777") if err != nil { - return fmt.Errorf("Chmod failed with error: %v", err) + return fmt.Errorf("Chmod failed with error: %v", err.Error()) } a := verifyArgs{ @@ -251,7 +251,7 @@ func testLifecycleWithVerify(volID string, volName string, instance *remote.Inst // Unmount Disk err = client.NodeUnpublishVolume(volID, publishDir) if err != nil { - return fmt.Errorf("NodeUnpublishVolume failed with error: %v", err) + return fmt.Errorf("NodeUnpublishVolume failed with error: %v", err.Error()) } if secondMountVerify != nil { @@ -263,7 +263,7 @@ func testLifecycleWithVerify(volID string, volName string, instance *remote.Inst err = client.NodePublishVolume(volID, stageDir, secondPublishDir) } if err != nil { - return fmt.Errorf("NodePublishVolume failed with error: %v", err) + return fmt.Errorf("NodePublishVolume failed with error: %v", err.Error()) } err = testutils.ForceChmod(instance, filepath.Join("/tmp/", volName), "777") if err != nil { @@ -275,13 +275,13 @@ func testLifecycleWithVerify(volID string, volName string, instance *remote.Inst } err = secondMountVerify(b) if err != nil { - return fmt.Errorf("failed to verify after second mount to %s: %v", publishDir, err) + return fmt.Errorf("failed to verify after second mount to %s: %v", publishDir, err.Error()) } // Unmount Disk err = client.NodeUnpublishVolume(volID, secondPublishDir) if err != nil { - return fmt.Errorf("NodeUnpublishVolume failed with error: %v", err) + return fmt.Errorf("NodeUnpublishVolume failed with error: %v", err.Error()) } } diff --git a/test/e2e/tests/single_zone_e2e_test.go b/test/e2e/tests/single_zone_e2e_test.go index f7e709be5..aebb4ed42 100644 --- a/test/e2e/tests/single_zone_e2e_test.go +++ b/test/e2e/tests/single_zone_e2e_test.go @@ -692,7 +692,7 @@ var _ = Describe("GCE PD CSI Driver", func() { verifyVolumeStats := func(a verifyArgs) error { available, capacity, used, inodesFree, inodes, inodesUsed, err := client.NodeGetVolumeStats(volID, a.publishDir) if err != nil { - return fmt.Errorf("failed to get node volume stats: %v", err) + return fmt.Errorf("failed to get node volume stats: %v", err.Error()) } if available != 0 || capacity != common.GbToBytes(defaultSizeGb) || used != 0 || inodesFree != 0 || inodes != 0 || inodesUsed != 0 { @@ -729,7 +729,7 @@ var _ = Describe("GCE PD CSI Driver", func() { verifyVolumeStats := func(a verifyArgs) error { available, capacity, used, inodesFree, inodes, inodesUsed, err := client.NodeGetVolumeStats(volID, a.publishDir) if err != nil { - return fmt.Errorf("failed to get node volume stats: %v", err) + return fmt.Errorf("failed to get node volume stats: %v", err.Error()) } if !equalWithinEpsilon(available, common.GbToBytes(defaultSizeGb), defaultEpsilon) || !equalWithinEpsilon(capacity, common.GbToBytes(defaultSizeGb), defaultEpsilon) || !equalWithinEpsilon(used, 0, defaultEpsilon) || inodesFree == 0 || inodes == 0 || inodesUsed == 0 { @@ -795,14 +795,14 @@ var _ = Describe("GCE PD CSI Driver", func() { writeFunc := func(a verifyArgs) error { err := testutils.WriteBlock(instance, a.publishDir, testFileContents) if err != nil { - return fmt.Errorf("Failed to write file: %v", err) + return fmt.Errorf("Failed to write file: %v", err.Error()) } return nil } verifyReadFunc := func(a verifyArgs) error { readContents, err := testutils.ReadBlock(instance, a.publishDir, len(testFileContents)) if err != nil { - return fmt.Errorf("ReadFile failed with error: %v", err) + return fmt.Errorf("ReadFile failed with error: %v", err.Error()) } if strings.TrimSpace(string(readContents)) != testFileContents { return fmt.Errorf("wanted test file content: %s, got content: %s", testFileContents, readContents) diff --git a/test/e2e/utils/utils.go b/test/e2e/utils/utils.go index 5ace8c20d..8a80501e1 100644 --- a/test/e2e/utils/utils.go +++ b/test/e2e/utils/utils.go @@ -147,19 +147,19 @@ func SetupProwConfig(resourceType string) (project, serviceAccount string) { func ForceChmod(instance *remote.InstanceInfo, filePath string, perms string) error { originalumask, err := instance.SSHNoSudo("umask") if err != nil { - return fmt.Errorf("failed to umask. Output: %v, errror: %v", originalumask, err) + return fmt.Errorf("failed to umask. Output: %v, errror: %v", originalumask, err.Error()) } output, err := instance.SSHNoSudo("umask", "0000") if err != nil { - return fmt.Errorf("failed to umask. Output: %v, errror: %v", output, err) + return fmt.Errorf("failed to umask. Output: %v, errror: %v", output, err.Error()) } output, err = instance.SSH("chmod", "-R", perms, filePath) if err != nil { - return fmt.Errorf("failed to chmod file %s. Output: %v, errror: %v", filePath, output, err) + return fmt.Errorf("failed to chmod file %s. Output: %v, errror: %v", filePath, output, err.Error()) } output, err = instance.SSHNoSudo("umask", originalumask) if err != nil { - return fmt.Errorf("failed to umask. Output: %v, errror: %v", output, err) + return fmt.Errorf("failed to umask. Output: %v, errror: %v", output, err.Error()) } return nil } @@ -167,7 +167,7 @@ func ForceChmod(instance *remote.InstanceInfo, filePath string, perms string) er func WriteFile(instance *remote.InstanceInfo, filePath, fileContents string) error { output, err := instance.SSHNoSudo("echo", fileContents, ">", filePath) if err != nil { - return fmt.Errorf("failed to write test file %s. Output: %v, errror: %v", filePath, output, err) + return fmt.Errorf("failed to write test file %s. Output: %v, errror: %v", filePath, output, err.Error()) } return nil } @@ -175,7 +175,7 @@ func WriteFile(instance *remote.InstanceInfo, filePath, fileContents string) err func ReadFile(instance *remote.InstanceInfo, filePath string) (string, error) { output, err := instance.SSHNoSudo("cat", filePath) if err != nil { - return "", fmt.Errorf("failed to read test file %s. Output: %v, errror: %v", filePath, output, err) + return "", fmt.Errorf("failed to read test file %s. Output: %v, errror: %v", filePath, output, err.Error()) } return output, nil } @@ -183,7 +183,7 @@ func ReadFile(instance *remote.InstanceInfo, filePath string) (string, error) { func WriteBlock(instance *remote.InstanceInfo, path, fileContents string) error { output, err := instance.SSHNoSudo("echo", fileContents, "|", "dd", "of="+path) if err != nil { - return fmt.Errorf("failed to write test file %s. Output: %v, errror: %v", path, output, err) + return fmt.Errorf("failed to write test file %s. Output: %v, errror: %v", path, output, err.Error()) } return nil } @@ -192,7 +192,7 @@ func ReadBlock(instance *remote.InstanceInfo, path string, length int) (string, lengthStr := strconv.Itoa(length) output, err := instance.SSHNoSudo("dd", "if="+path, "bs="+lengthStr, "count=1", "2>", "/dev/null") if err != nil { - return "", fmt.Errorf("failed to read test file %s. Output: %v, errror: %v", path, output, err) + return "", fmt.Errorf("failed to read test file %s. Output: %v, errror: %v", path, output, err.Error()) } return output, nil } @@ -200,7 +200,7 @@ func ReadBlock(instance *remote.InstanceInfo, path string, length int) (string, func GetFSSizeInGb(instance *remote.InstanceInfo, mountPath string) (int64, error) { output, err := instance.SSH("df", "--output=size", "-BG", mountPath, "|", "awk", "'NR==2'") if err != nil { - return -1, fmt.Errorf("failed to get size of path %s. Output: %v, error: %v", mountPath, output, err) + return -1, fmt.Errorf("failed to get size of path %s. Output: %v, error: %v", mountPath, output, err.Error()) } output = strings.TrimSuffix(strings.TrimSpace(output), "G") n, err := strconv.ParseInt(output, 10, 64) @@ -213,7 +213,7 @@ func GetFSSizeInGb(instance *remote.InstanceInfo, mountPath string) (int64, erro func GetBlockSizeInGb(instance *remote.InstanceInfo, devicePath string) (int64, error) { output, err := instance.SSH("blockdev", "--getsize64", devicePath) if err != nil { - return -1, fmt.Errorf("failed to get size of path %s. Output: %v, error: %v", devicePath, output, err) + return -1, fmt.Errorf("failed to get size of path %s. Output: %v, error: %v", devicePath, output, err.Error()) } n, err := strconv.ParseInt(strings.TrimSpace(output), 10, 64) if err != nil { @@ -225,7 +225,7 @@ func GetBlockSizeInGb(instance *remote.InstanceInfo, devicePath string) (int64, func Symlink(instance *remote.InstanceInfo, src, dest string) error { output, err := instance.SSH("ln", "-s", src, dest) if err != nil { - return fmt.Errorf("failed to symlink from %s to %s. Output: %v, errror: %v", src, dest, output, err) + return fmt.Errorf("failed to symlink from %s to %s. Output: %v, errror: %v", src, dest, output, err.Error()) } return nil } @@ -233,7 +233,7 @@ func Symlink(instance *remote.InstanceInfo, src, dest string) error { func RmAll(instance *remote.InstanceInfo, filePath string) error { output, err := instance.SSH("rm", "-rf", filePath) if err != nil { - return fmt.Errorf("failed to delete all %s. Output: %v, errror: %v", filePath, output, err) + return fmt.Errorf("failed to delete all %s. Output: %v, errror: %v", filePath, output, err.Error()) } return nil } @@ -241,7 +241,7 @@ func RmAll(instance *remote.InstanceInfo, filePath string) error { func MkdirAll(instance *remote.InstanceInfo, dir string) error { output, err := instance.SSH("mkdir", "-p", dir) if err != nil { - return fmt.Errorf("failed to mkdir -p %s. Output: %v, errror: %v", dir, output, err) + return fmt.Errorf("failed to mkdir -p %s. Output: %v, errror: %v", dir, output, err.Error()) } return nil } @@ -249,7 +249,7 @@ func MkdirAll(instance *remote.InstanceInfo, dir string) error { func CopyFile(instance *remote.InstanceInfo, src, dest string) error { output, err := instance.SSH("cp", src, dest) if err != nil { - return fmt.Errorf("failed to copy %s to %s. Output: %v, errror: %v", src, dest, output, err) + return fmt.Errorf("failed to copy %s to %s. Output: %v, errror: %v", src, dest, output, err.Error()) } return nil } @@ -273,7 +273,7 @@ func ValidateLogicalLinkIsDisk(instance *remote.InstanceInfo, link, diskName str devFsPath, err := instance.SSH("find", link, "-printf", "'%l'") if err != nil { - return false, fmt.Errorf("failed to find symbolic link for %s. Output: %v, errror: %v", link, devFsPath, err) + return false, fmt.Errorf("failed to find symbolic link for %s. Output: %v, errror: %v", link, devFsPath, err.Error()) } if len(devFsPath) == 0 { return false, nil @@ -282,7 +282,7 @@ func ValidateLogicalLinkIsDisk(instance *remote.InstanceInfo, link, diskName str fullDevPath := path.Join("/dev/", string(sdx)) scsiIDOut, err := instance.SSH("/lib/udev_containerized/scsi_id", "--page=0x83", "--whitelisted", fmt.Sprintf("--device=%v", fullDevPath)) if err != nil { - return false, fmt.Errorf("failed to find %s's SCSI ID. Output: %v, errror: %v", devFsPath, scsiIDOut, err) + return false, fmt.Errorf("failed to find %s's SCSI ID. Output: %v, errror: %v", devFsPath, scsiIDOut, err.Error()) } scsiID := scsiRegex.FindStringSubmatch(scsiIDOut) if len(scsiID) == 0 { @@ -296,7 +296,7 @@ func ValidateLogicalLinkIsDisk(instance *remote.InstanceInfo, link, diskName str fullDevPath := path.Join("/dev/", string(nvmex)) nvmeIDOut, err := instance.SSH("/lib/udev_containerized/google_nvme_id", fmt.Sprintf("-d%v", fullDevPath)) if err != nil { - return false, fmt.Errorf("failed to find %s's NVME ID. Output: %v, errror: %v", devFsPath, nvmeIDOut, err) + return false, fmt.Errorf("failed to find %s's NVME ID. Output: %v, errror: %v", devFsPath, nvmeIDOut, err.Error()) } nvmeID := nvmeSerialRegex.FindStringSubmatch(nvmeIDOut) if len(nvmeID) == 0 { diff --git a/test/k8s-integration/cluster.go b/test/k8s-integration/cluster.go index e85cbe844..e3425935a 100644 --- a/test/k8s-integration/cluster.go +++ b/test/k8s-integration/cluster.go @@ -54,7 +54,7 @@ func clusterDownGKE(gceZone, gceRegion string) error { locationArg, locationVal, "--quiet") err = runCommand("Bringing Down E2E Cluster on GKE", cmd) if err != nil { - return fmt.Errorf("failed to bring down kubernetes e2e cluster on gke: %v", err) + return fmt.Errorf("failed to bring down kubernetes e2e cluster on gke: %v", err.Error()) } return nil } @@ -126,7 +126,7 @@ func clusterUpGCE(k8sDir, gceZone string, numNodes int, numWindowsNodes int, ima cmd.Env = os.Environ() err = runCommand("Starting E2E Cluster on GCE", cmd) if err != nil { - return fmt.Errorf("failed to bring up kubernetes e2e cluster on gce: %v", err) + return fmt.Errorf("failed to bring up kubernetes e2e cluster on gce: %v", err.Error()) } return nil @@ -170,7 +170,7 @@ func clusterUpGKE(gceZone, gceRegion string, numNodes int, numWindowsNodes int, fmt.Sprintf("name=%s", *gkeTestClusterName)).CombinedOutput() if err != nil { - return fmt.Errorf("failed to check for previous test cluster: %v %s", err, out) + return fmt.Errorf("failed to check for previous test cluster: %v %s", err.Error(), out) } if len(out) > 0 { klog.Infof("Detected previous cluster %s. Deleting so a new one can be created...", *gkeTestClusterName) @@ -203,7 +203,7 @@ func clusterUpGKE(gceZone, gceRegion string, numNodes int, numWindowsNodes int, cmd = exec.Command("gcloud", cmdParams...) err = runCommand("Starting E2E Cluster on GKE", cmd) if err != nil { - return fmt.Errorf("failed to bring up kubernetes e2e cluster on gke: %v", err) + return fmt.Errorf("failed to bring up kubernetes e2e cluster on gke: %v", err.Error()) } // Because gcloud cannot disable addons on cluster create, the deployment has @@ -216,7 +216,7 @@ func clusterUpGKE(gceZone, gceRegion string, numNodes int, numWindowsNodes int, "--update-addons", "GcePersistentDiskCsiDriver=DISABLED") err = runCommand("Updating E2E Cluster on GKE to disable driver deployment", cmd) if err != nil { - return fmt.Errorf("failed to update kubernetes e2e cluster on gke: %v", err) + return fmt.Errorf("failed to update kubernetes e2e cluster on gke: %v", err.Error()) } } @@ -245,7 +245,7 @@ func downloadKubernetesSource(pkgDir, k8sIoDir, kubeVersion string) error { klog.Info("cloning k8s master") out, err := exec.Command("git", "clone", "https://github.com/kubernetes/kubernetes", k8sDir).CombinedOutput() if err != nil { - return fmt.Errorf("failed to clone kubernetes master: %s, err: %v", out, err) + return fmt.Errorf("failed to clone kubernetes master: %s, err: %v", out, err.Error()) } } else { // Shallow clone of a release branch. @@ -253,7 +253,7 @@ func downloadKubernetesSource(pkgDir, k8sIoDir, kubeVersion string) error { klog.Infof("shallow clone of k8s %s", vKubeVersion) out, err := exec.Command("git", "clone", "--depth", "1", "https://github.com/kubernetes/kubernetes", k8sDir).CombinedOutput() if err != nil { - return fmt.Errorf("failed to clone kubernetes %s: %s, err: %v", vKubeVersion, out, err) + return fmt.Errorf("failed to clone kubernetes %s: %s, err: %v", vKubeVersion, out, err.Error()) } } return nil @@ -289,7 +289,7 @@ func getGKEKubeTestArgs(gceZone, gceRegion, imageType string, useKubetest2 bool) cmd := exec.Command("gcloud", "config", "get-value", "project") project, err := cmd.Output() if err != nil { - return nil, fmt.Errorf("failed to get current project: %v", err) + return nil, fmt.Errorf("failed to get current project: %v", err.Error()) } // kubetest arguments @@ -353,7 +353,7 @@ func getNormalizedVersion(kubeVersion, gkeVersion string) (string, error) { func getKubeClusterVersion() (string, error) { out, err := exec.Command("kubectl", "version", "-o=json").Output() if err != nil { - return "", fmt.Errorf("failed to obtain cluster version, error: %v; output was %s", err, out) + return "", fmt.Errorf("failed to obtain cluster version, error: %v; output was %s", err.Error(), out) } type version struct { ClientVersion *apimachineryversion.Info `json:"clientVersion,omitempty" yaml:"clientVersion,omitempty"` @@ -363,7 +363,7 @@ func getKubeClusterVersion() (string, error) { var v version err = json.Unmarshal(out, &v) if err != nil { - return "", fmt.Errorf("Failed to parse kubectl version output, error: %v", err) + return "", fmt.Errorf("Failed to parse kubectl version output, error: %v", err.Error()) } return v.ServerVersion.GitVersion, nil @@ -401,11 +401,11 @@ func getKubeClient() (kubernetes.Interface, error) { } config, err := clientcmd.BuildConfigFromFlags("", kubeConfig) if err != nil { - return nil, fmt.Errorf("failed to create config: %v", err) + return nil, fmt.Errorf("failed to create config: %v", err.Error()) } kubeClient, err := kubernetes.NewForConfig(config) if err != nil { - return nil, fmt.Errorf("failed to create client: %v", err) + return nil, fmt.Errorf("failed to create client: %v", err.Error()) } return kubeClient, nil } diff --git a/test/k8s-integration/driver.go b/test/k8s-integration/driver.go index 22dc2b9c4..a8e7c2095 100644 --- a/test/k8s-integration/driver.go +++ b/test/k8s-integration/driver.go @@ -22,14 +22,14 @@ func installDriver(testParams *testParameters, stagingImage, deployOverlayName s klog.Infof("Installing kustomize") out, err := exec.Command(filepath.Join(testParams.pkgDir, "deploy", "kubernetes", "install-kustomize.sh")).CombinedOutput() if err != nil { - return fmt.Errorf("failed to install kustomize: %s, err: %v", out, err) + return fmt.Errorf("failed to install kustomize: %s, err: %v", out, err.Error()) } // Edit ci kustomization to use given image tag overlayDir := getOverlayDir(testParams.pkgDir, deployOverlayName) err = os.Chdir(overlayDir) if err != nil { - return fmt.Errorf("failed to change to overlay directory: %s, err: %v", out, err) + return fmt.Errorf("failed to change to overlay directory: %s, err: %v", out, err.Error()) } // TODO (#138): in a local environment this is going to modify the actual kustomize files. @@ -41,7 +41,7 @@ func installDriver(testParams *testParameters, stagingImage, deployOverlayName s "image", fmt.Sprintf("%s=%s:%s", pdImagePlaceholder, stagingImage, testParams.stagingVersion)).CombinedOutput() if err != nil { - return fmt.Errorf("failed to edit kustomize: %s, err: %v", out, err) + return fmt.Errorf("failed to edit kustomize: %s, err: %v", out, err.Error()) } } @@ -54,7 +54,7 @@ func installDriver(testParams *testParameters, stagingImage, deployOverlayName s // Need to copy it to name the file "cloud-sa.json" out, err := exec.Command("cp", *saFile, tmpSaFile).CombinedOutput() if err != nil { - return fmt.Errorf("error copying service account key: %s, err: %v", out, err) + return fmt.Errorf("error copying service account key: %s, err: %v", out, err.Error()) } defer shredFile(tmpSaFile) @@ -99,14 +99,14 @@ func installDriver(testParams *testParameters, stagingImage, deployOverlayName s podsCmd := exec.Command("kubectl", "get", "pods", "-l", "app=gcp-compute-persistent-disk-csi-driver-win", "-o", "name", "-n", getDriverNamespace()) out, err = podsCmd.CombinedOutput() if err != nil { - return fmt.Errorf("failed to get pd csi pods: %v", err) + return fmt.Errorf("failed to get pd csi pods: %v", err.Error()) } pods := strings.Fields(string(out)) for _, pod := range pods { logCmd := exec.Command("kubectl", "logs", pod, "-n", getDriverNamespace(), "--all-containers=true") out, err := logCmd.CombinedOutput() if err != nil { - return fmt.Errorf("failed to get logs from pod %s: %v", pod, err) + return fmt.Errorf("failed to get logs from pod %s: %v", pod, err.Error()) } klog.Infof("kubectl logs pod: %s, output %s", pod, string(out)) } @@ -123,7 +123,7 @@ func deleteDriver(testParams *testParameters, deployOverlayName string) error { ) err := runCommand("Deleting driver", deleteCmd) if err != nil { - return fmt.Errorf("failed to delete driver: %v", err) + return fmt.Errorf("failed to delete driver: %v", err.Error()) } return nil } @@ -146,7 +146,7 @@ func pushImage(pkgDir, stagingImage, stagingVersion, platform string) error { fmt.Sprintf("GCE_PD_CSI_STAGING_IMAGE=%s", stagingImage)) err = runCommand("Building and Pushing GCP Container for Windows", cmd) if err != nil { - return fmt.Errorf("failed to run make command for windows: err: %v", err) + return fmt.Errorf("failed to run make command for windows: err: %v", err.Error()) } } else { cmd = exec.Command("make", "-C", pkgDir, "push-container", @@ -154,7 +154,7 @@ func pushImage(pkgDir, stagingImage, stagingVersion, platform string) error { fmt.Sprintf("GCE_PD_CSI_STAGING_IMAGE=%s", stagingImage)) err = runCommand("Pushing GCP Container for Linux", cmd) if err != nil { - return fmt.Errorf("failed to run make command for linux: err: %v", err) + return fmt.Errorf("failed to run make command for linux: err: %v", err.Error()) } } @@ -165,7 +165,7 @@ func deleteImage(stagingImage, stagingVersion string) error { cmd := exec.Command("gcloud", "container", "images", "delete", fmt.Sprintf("%s:%s", stagingImage, stagingVersion), "--quiet") err := runCommand("Deleting GCR Container", cmd) if err != nil { - return fmt.Errorf("failed to delete container image %s:%s: %s", stagingImage, stagingVersion, err) + return fmt.Errorf("failed to delete container image %s:%s: %s", stagingImage, stagingVersion, err.Error()) } return nil } @@ -180,7 +180,7 @@ func dumpDriverLogs() (context.CancelFunc, error) { if ok { client, err := getKubeClient() if err != nil { - return nil, fmt.Errorf("failed to get kubeclient: %v", err) + return nil, fmt.Errorf("failed to get kubeclient: %v", err.Error()) } out := podlogs.LogOutput{ StatusWriter: os.Stdout, @@ -188,7 +188,7 @@ func dumpDriverLogs() (context.CancelFunc, error) { } ctx, cancel := context.WithCancel(context.Background()) if err = podlogs.CopyAllLogs(ctx, client, getDriverNamespace(), out); err != nil { - return cancel, fmt.Errorf("failed to start pod logger: %v", err) + return cancel, fmt.Errorf("failed to start pod logger: %v", err.Error()) } return cancel, nil } diff --git a/test/k8s-integration/main.go b/test/k8s-integration/main.go index 4549c6a8b..f1663a9de 100644 --- a/test/k8s-integration/main.go +++ b/test/k8s-integration/main.go @@ -234,7 +234,7 @@ func handle() error { defer func() { err = setEnvProject(string(oldProject)) if err != nil { - klog.Errorf("failed to set project environment to %s: %w", oldProject, err) + klog.Errorf("failed to set project environment to %s: %w", oldProject, err.Error()) } }() project = newproject @@ -244,7 +244,7 @@ func handle() error { if _, ok := os.LookupEnv("USER"); !ok { err = os.Setenv("USER", "prow") if err != nil { - return fmt.Errorf("failed to set user in prow to prow: %v", err) + return fmt.Errorf("failed to set user in prow to prow: %v", err.Error()) } } } @@ -254,7 +254,7 @@ func handle() error { klog.Infof("Building GCE PD CSI Driver") err := pushImage(testParams.pkgDir, *stagingImage, testParams.stagingVersion, testParams.platform) if err != nil { - return fmt.Errorf("failed pushing image: %v", err) + return fmt.Errorf("failed pushing image: %v", err.Error()) } defer func() { if *teardownCluster { @@ -276,11 +276,11 @@ func handle() error { testParams.k8sSourceDir = filepath.Join(testParams.testParentDir, "kubernetes") err := downloadKubernetesSource(testParams.pkgDir, testParams.testParentDir, *kubeVersion) if err != nil { - return fmt.Errorf("failed to download Kubernetes source: %v", err) + return fmt.Errorf("failed to download Kubernetes source: %v", err.Error()) } err = buildKubernetes(testParams.k8sSourceDir, "quick-release") if err != nil { - return fmt.Errorf("failed to build Kubernetes: %v", err) + return fmt.Errorf("failed to build Kubernetes: %v", err.Error()) } } else { testParams.k8sSourceDir = *localK8sDir @@ -292,20 +292,20 @@ func handle() error { testParams.k8sSourceDir = filepath.Join(testParams.testParentDir, "kubernetes") err := downloadKubernetesSource(testParams.pkgDir, testParams.testParentDir, *testVersion) if err != nil { - return fmt.Errorf("failed to download Kubernetes source: %v", err) + return fmt.Errorf("failed to download Kubernetes source: %v", err.Error()) } err = buildKubernetes(testParams.k8sSourceDir, "WHAT=test/e2e/e2e.test") if err != nil { - return fmt.Errorf("failed to build Kubernetes e2e: %v", err) + return fmt.Errorf("failed to build Kubernetes e2e: %v", err.Error()) } // kubetest relies on ginkgo and kubectl already built in the test k8s directory err = buildKubernetes(testParams.k8sSourceDir, "ginkgo") if err != nil { - return fmt.Errorf("failed to build gingko: %v", err) + return fmt.Errorf("failed to build gingko: %v", err.Error()) } err = buildKubernetes(testParams.k8sSourceDir, "kubectl") if err != nil { - return fmt.Errorf("failed to build kubectl: %v", err) + return fmt.Errorf("failed to build kubectl: %v", err.Error()) } } @@ -361,14 +361,14 @@ func handle() error { nodesCmd := exec.Command("kubectl", "get", "nodes", "-l", "kubernetes.io/os=windows", "-o", "name") out, err := nodesCmd.CombinedOutput() if err != nil { - return fmt.Errorf("failed to get windows nodes: %v", err) + return fmt.Errorf("failed to get windows nodes: %v", err.Error()) } nodes := strings.Fields(string(out)) for _, node := range nodes { taintCmd := exec.Command("kubectl", "taint", "node", node, "node.kubernetes.io/os:NoSchedule-") out, err := taintCmd.CombinedOutput() if err != nil { - return fmt.Errorf("failed to untaint windows node %s: error %v. output %s", node, err, string(out)) + return fmt.Errorf("failed to untaint windows node %s: error %v. output %s", node, err.Error(), string(out)) } klog.Infof("untaint windows nodes: %s, output %s", node, string(out)) } @@ -382,13 +382,13 @@ func handle() error { } out, err = exec.Command(filepath.Join(testParams.pkgDir, "test", "k8s-integration", "prepull-image.sh")).CombinedOutput() if err != nil { - return fmt.Errorf("failed to prepull images: %s, err: %v", out, err) + return fmt.Errorf("failed to prepull images: %s, err: %v", out, err.Error()) } out, err = exec.Command("kubectl", "describe", "pods", "-n", getDriverNamespace()).CombinedOutput() klog.Infof("describe pods \n %s", string(out)) if err != nil { - return fmt.Errorf("failed to describe pods: %v", err) + return fmt.Errorf("failed to describe pods: %v", err.Error()) } } @@ -430,7 +430,7 @@ func handle() error { nodesCmd := exec.Command("kubectl", "get", "nodes", "-l", "kubernetes.io/os=linux", "-o", "name") out, err := nodesCmd.CombinedOutput() if err != nil { - return fmt.Errorf("failed to get linux nodes: %v", err) + return fmt.Errorf("failed to get linux nodes: %v", err.Error()) } nodes := strings.Fields(string(out)) testParams.allowedNotReadyNodes = len(nodes) @@ -438,7 +438,7 @@ func handle() error { taintCmd := exec.Command("kubectl", "taint", "node", node, "node.kubernetes.io/os=linux:NoSchedule", "--overwrite=true") out, err := taintCmd.CombinedOutput() if err != nil { - return fmt.Errorf("failed to untaint windows node %s, error %v, output %s", node, err, string(out)) + return fmt.Errorf("failed to untaint windows node %s, error %v, output %s", node, err.Error(), string(out)) } klog.Infof("taint linux nodes: %s, output %s", node, string(out)) } @@ -448,7 +448,7 @@ func handle() error { case "gke": testParams.cloudProviderArgs, err = getGKEKubeTestArgs(*gceZone, *gceRegion, testParams.imageType, *useKubeTest2) if err != nil { - return fmt.Errorf("failed to build GKE kubetest args: %v", err) + return fmt.Errorf("failed to build GKE kubetest args: %v", err.Error()) } case "gce": if *useKubeTest2 { @@ -652,7 +652,7 @@ func generateGKETestSkip(testParams *testParameters) string { func setEnvProject(project string) error { out, err := exec.Command("gcloud", "config", "set", "project", project).CombinedOutput() if err != nil { - return fmt.Errorf("failed to set gcloud project to %s: %s, err: %v", project, out, err) + return fmt.Errorf("failed to set gcloud project to %s: %s, err: %v", project, out, err.Error()) } err = os.Setenv("PROJECT", project) @@ -679,13 +679,13 @@ func runTestsWithConfig(testParams *testParameters, testConfigArg, reportPrefix if !*useKubeTest2 && len(testParams.k8sSourceDir) > 0 { err := os.Chdir(testParams.k8sSourceDir) if err != nil { - return fmt.Errorf("Failed to chdir to k8sSourceDir %s: %w", testParams.k8sSourceDir, err) + return fmt.Errorf("failed to chdir to k8sSourceDir %s: %v", testParams.k8sSourceDir, err.Error()) } } kubeconfig, err := getKubeConfig() if err != nil { - return fmt.Errorf("Failed to get kubeconfig: %w", err) + return fmt.Errorf("failed to get kubeconfig: %v", err.Error()) } os.Setenv("KUBECONFIG", kubeconfig) @@ -695,7 +695,7 @@ func runTestsWithConfig(testParams *testParameters, testConfigArg, reportPrefix if len(reportPrefix) > 0 { kubetestDumpDir = filepath.Join(artifactsDir, reportPrefix) if err := os.MkdirAll(kubetestDumpDir, 0755); err != nil { - return fmt.Errorf("failed to make dump dir %s: %w", kubetestDumpDir, err) + return fmt.Errorf("failed to make dump dir %s: %v", kubetestDumpDir, err.Error()) } } else { kubetestDumpDir = artifactsDir @@ -767,7 +767,7 @@ func runTestsWithConfig(testParams *testParameters, testConfigArg, reportPrefix klog.Infof("Copying kubernetes binaries to path=%s to run the tests", kubernetesTestBinariesPath) err := copyKubernetesTestBinaries(testParams.k8sSourceDir, kubernetesTestBinariesPath) if err != nil { - return fmt.Errorf("Failed to copy the kubernetes test binaries, err=%v", err) + return fmt.Errorf("failed to copy the kubernetes test binaries, err=%v", err.Error()) } kubeTest2Args = append(kubeTest2Args, "--use-built-binaries") } else { @@ -797,7 +797,7 @@ func runTestsWithConfig(testParams *testParameters, testConfigArg, reportPrefix err = runCommand("Running Tests", exec.Command("kubetest", kubeTestArgs...)) } if err != nil { - return fmt.Errorf("failed to run tests on e2e cluster: %v", err) + return fmt.Errorf("failed to run tests on e2e cluster: %v", err.Error()) } return nil @@ -821,10 +821,10 @@ func copyKubernetesTestBinaries(kuberoot string, outroot string) error { if _, err := os.Stat(source); err == nil { klog.Infof("copying %s to %s", source, dest) if err := CopyFile(source, dest); err != nil { - return fmt.Errorf("failed to copy %s to %s: %v", source, dest, err) + return fmt.Errorf("failed to copy %s to %s: %v", source, dest, err.Error()) } } else { - return fmt.Errorf("could not find %s: %v", source, err) + return fmt.Errorf("could not find %s: %v", source, err.Error()) } } return nil diff --git a/test/remote/archiver.go b/test/remote/archiver.go index ae2a3e37d..aacd0036a 100644 --- a/test/remote/archiver.go +++ b/test/remote/archiver.go @@ -30,25 +30,25 @@ func CreateDriverArchive(archiveName, architecture, pkgPath, binPath string) (st klog.V(2).Infof("Building archive...") tarDir, err := ioutil.TempDir("", "driver-temp-archive") if err != nil { - return "", fmt.Errorf("failed to create temporary directory %v", err) + return "", fmt.Errorf("failed to create temporary directory %v", err.Error()) } defer os.RemoveAll(tarDir) // Call the suite function to setup the test package. err = setupBinaries(architecture, tarDir, pkgPath, binPath) if err != nil { - return "", fmt.Errorf("failed to setup test package %q: %v", tarDir, err) + return "", fmt.Errorf("failed to setup test package %q: %v", tarDir, err.Error()) } // Build the tar out, err := exec.Command("tar", "-zcvf", archiveName, "-C", tarDir, ".").CombinedOutput() if err != nil { - return "", fmt.Errorf("failed to build tar %v. Output:\n%s", err, out) + return "", fmt.Errorf("failed to build tar %v. Output:\n%s", err.Error(), out) } dir, err := os.Getwd() if err != nil { - return "", fmt.Errorf("failed to get working directory %v", err) + return "", fmt.Errorf("failed to get working directory %v", err.Error()) } return filepath.Join(dir, archiveName), nil } @@ -57,16 +57,16 @@ func setupBinaries(architecture, tarDir, pkgPath, binPath string) error { klog.V(4).Infof("Making binaries and copying to temp dir...") out, err := exec.Command("make", "-C", pkgPath, "GOARCH="+architecture).CombinedOutput() if err != nil { - return fmt.Errorf("Failed to make at %s: %v: %v", pkgPath, string(out), err) + return fmt.Errorf("Failed to make at %s: %v: %v", pkgPath, string(out), err.Error()) } // Copy binaries if _, err := os.Stat(binPath); err != nil { - return fmt.Errorf("failed to locate test binary %s: %v", binPath, err) + return fmt.Errorf("failed to locate test binary %s: %v", binPath, err.Error()) } out, err = exec.Command("cp", binPath, tarDir).CombinedOutput() if err != nil { - return fmt.Errorf("failed to copy %q: %v Output: %q", binPath, err, out) + return fmt.Errorf("failed to copy %q: %v Output: %q", binPath, err.Error(), out) } return nil diff --git a/test/remote/client-wrappers.go b/test/remote/client-wrappers.go index 4f3882515..748c09183 100644 --- a/test/remote/client-wrappers.go +++ b/test/remote/client-wrappers.go @@ -85,7 +85,7 @@ func (c *CsiClient) AssertCSIConnection() error { return true, nil }) if err != nil || conn == nil { - return fmt.Errorf("Failed to get client connection: %v", err) + return fmt.Errorf("Failed to get client connection: %v", err.Error()) } c.conn = conn c.idClient = csipb.NewIdentityClient(conn) diff --git a/test/remote/instance.go b/test/remote/instance.go index b6aec1532..56a116b67 100644 --- a/test/remote/instance.go +++ b/test/remote/instance.go @@ -91,7 +91,7 @@ func (i *InstanceInfo) CreateOrGetInstance(imageURL, serviceAccount string) erro err = i.createDefaultFirewallRule() if err != nil { - return fmt.Errorf("Failed to create firewall rule: %v", err) + return fmt.Errorf("Failed to create firewall rule: %v", err.Error()) } newInst := &compute.Instance{ @@ -161,7 +161,7 @@ func (i *InstanceInfo) CreateOrGetInstance(imageURL, serviceAccount string) erro op, err := i.computeService.Instances.Insert(i.project, i.zone, newInst).Do() klog.V(4).Infof("Inserted instance %v in project: %v, zone: %v", newInst.Name, i.project, i.zone) if err != nil { - ret := fmt.Sprintf("could not create instance %s: API error: %v", i.name, err) + ret := fmt.Sprintf("could not create instance %s: API error: %v", i.name, err.Error()) if op != nil { ret = fmt.Sprintf("%s. op error: %v", ret, op.Error) } @@ -194,7 +194,7 @@ func (i *InstanceInfo) CreateOrGetInstance(imageURL, serviceAccount string) erro } if sshOut, err := i.SSHCheckAlive(); err != nil { - err = fmt.Errorf("Instance %v in state RUNNING but not available by SSH: %v", i.name, err) + err = fmt.Errorf("Instance %v in state RUNNING but not available by SSH: %v", i.name, err.Error()) klog.Warningf("SSH encountered an error: %v, output: %v", err, sshOut) return false, nil } @@ -262,7 +262,7 @@ func (i *InstanceInfo) createDefaultFirewallRule() error { klog.V(4).Infof("Default firewall rule %v already exists, skipping creation", defaultFirewallRule) return nil } - return fmt.Errorf("Failed to insert required default SSH firewall Rule %v: %v", defaultFirewallRule, err) + return fmt.Errorf("Failed to insert required default SSH firewall Rule %v: %v", defaultFirewallRule, err.Error()) } } else { klog.V(4).Infof("Default firewall rule %v already exists, skipping creation", defaultFirewallRule) diff --git a/test/remote/runner.go b/test/remote/runner.go index 4e0731c44..2fb8d8c93 100644 --- a/test/remote/runner.go +++ b/test/remote/runner.go @@ -34,13 +34,13 @@ func (i *InstanceInfo) UploadAndRun(archivePath, remoteWorkspace, driverRunCmd s // Do not sudo here, so that we can use scp to copy test archive to the directdory. if output, err := i.SSHNoSudo("mkdir", remoteWorkspace); err != nil { // Exit failure with the error - return -1, fmt.Errorf("failed to create remoteWorkspace directory %q on i.name %q: %v output: %q", remoteWorkspace, i.name, err, output) + return -1, fmt.Errorf("failed to create remoteWorkspace directory %q on i.name %q: %v output: %q", remoteWorkspace, i.name, err.Error(), output) } // Copy the archive to the staging directory if output, err := runSSHCommand("scp", archivePath, fmt.Sprintf("%s:%s/", i.GetSSHTarget(), remoteWorkspace)); err != nil { // Exit failure with the error - return -1, fmt.Errorf("failed to copy test archive: %v, output: %q", err, output) + return -1, fmt.Errorf("failed to copy test archive: %v, output: %q", err.Error(), output) } // Extract the archive @@ -54,7 +54,7 @@ func (i *InstanceInfo) UploadAndRun(archivePath, remoteWorkspace, driverRunCmd s // we want the extracted files to be owned by the current user. if output, err := i.SSHNoSudo("sh", "-c", cmd); err != nil { // Exit failure with the error - return -1, fmt.Errorf("failed to extract test archive: %v, output: %q", err, output) + return -1, fmt.Errorf("failed to extract test archive: %v, output: %q", err.Error(), output) } klog.V(4).Infof("Starting driver on %q", i.name) @@ -62,7 +62,7 @@ func (i *InstanceInfo) UploadAndRun(archivePath, remoteWorkspace, driverRunCmd s output, err := i.SSH(driverRunCmd) if err != nil { // Exit failure with the error - return -1, fmt.Errorf("failed start driver, got output: %v, error: %v", output, err) + return -1, fmt.Errorf("failed start driver, got output: %v, error: %v", output, err.Error()) } // Get the driver PID @@ -77,12 +77,12 @@ func (i *InstanceInfo) UploadAndRun(archivePath, remoteWorkspace, driverRunCmd s driverPIDString, err := i.SSHNoSudo("sh", "-c", driverPIDCmd) if err != nil { // Exit failure with the error - return -1, fmt.Errorf("failed to get PID of driver, got output: %v, error: %v", output, err) + return -1, fmt.Errorf("failed to get PID of driver, got output: %v, error: %v", output, err.Error()) } driverPID, err := strconv.Atoi(strings.Fields(driverPIDString)[1]) if err != nil { - return -1, fmt.Errorf("failed to convert driver PID from string %s to int: %v", driverPIDString, err) + return -1, fmt.Errorf("failed to convert driver PID from string %s to int: %v", driverPIDString, err.Error()) } return driverPID, nil diff --git a/test/remote/setup-teardown.go b/test/remote/setup-teardown.go index eb0e81c28..b20893c00 100644 --- a/test/remote/setup-teardown.go +++ b/test/remote/setup-teardown.go @@ -93,13 +93,13 @@ func SetupNewDriverAndClient(instance *InstanceInfo, config *ClientConfig) (*Tes // Create an SSH tunnel from port to port sshPID, err := instance.CreateSSHTunnel(config.Port, config.Port) if err != nil { - return nil, fmt.Errorf("SSH Tunnel pid %v encountered error: %v", sshPID, err) + return nil, fmt.Errorf("SSH Tunnel pid %v encountered error: %v", sshPID, err.Error()) } client := CreateCSIClient(fmt.Sprintf("localhost:%s", config.Port)) err = client.AssertCSIConnection() if err != nil { - return nil, fmt.Errorf("asserting csi connection failed with: %v", err) + return nil, fmt.Errorf("asserting csi connection failed with: %v", err.Error()) } return &TestContext{ @@ -118,22 +118,22 @@ func TeardownDriverAndClient(context *TestContext) error { // Close the client connection err := context.Client.CloseConn() if err != nil { - return fmt.Errorf("failed to close CSI Client connection: %v", err) + return fmt.Errorf("failed to close CSI Client connection: %v", err.Error()) } // Close the SSH tunnel proc, err := os.FindProcess(context.proc.sshTunnel) if err != nil { - return fmt.Errorf("unable to efind process for ssh tunnel %v: %v", context.proc.sshTunnel, err) + return fmt.Errorf("unable to efind process for ssh tunnel %v: %v", context.proc.sshTunnel, err.Error()) } if err = proc.Kill(); err != nil { - return fmt.Errorf("failed to kill ssh tunnel process %v: %v", context.proc.sshTunnel, err) + return fmt.Errorf("failed to kill ssh tunnel process %v: %v", context.proc.sshTunnel, err.Error()) } // Kill the driver process on remote cmd := fmt.Sprintf("kill %v", context.proc.remoteDriver) output, err := context.Instance.SSH(cmd) if err != nil { - return fmt.Errorf("failed to kill driver on remote instance, got output %s: %v", output, err) + return fmt.Errorf("failed to kill driver on remote instance, got output %s: %v", output, err.Error()) } return nil diff --git a/test/remote/ssh.go b/test/remote/ssh.go index 7036dcb2b..521b25196 100644 --- a/test/remote/ssh.go +++ b/test/remote/ssh.go @@ -106,7 +106,7 @@ func runSSHCommand(cmd string, args ...string) (string, error) { output, err := exec.Command(cmd, args...).CombinedOutput() if err != nil { - return string(output), fmt.Errorf("command [%s %s] failed with error: %v", cmd, strings.Join(args, " "), err) + return string(output), fmt.Errorf("command [%s %s] failed with error: %v", cmd, strings.Join(args, " "), err.Error()) } return string(output), nil }