From 628ae9e982e17cf630f79c470c07ae6e3e7ce8b8 Mon Sep 17 00:00:00 2001 From: Yug Date: Mon, 13 Jul 2020 09:26:51 +0530 Subject: [PATCH] cleanup: use wrapped static errors instead of dynamic In Go 1.13, the fmt.Errorf function supports a new %w verb. When this verb is present, the error returned by fmt.Errorf will have an Unwrap method returning the argument of %w, which must be an error. In all other ways, %w is identical to %v. Updates: #1227 Signed-off-by: Yug --- e2e/resize.go | 2 +- e2e/staticpvc.go | 16 ++++++++-------- e2e/utils.go | 8 ++++---- internal/cephfs/nodeserver.go | 4 ++-- internal/cephfs/util.go | 12 ++++++------ internal/cephfs/volumemounter.go | 2 +- internal/cephfs/volumeoptions.go | 4 ++-- 7 files changed, 24 insertions(+), 24 deletions(-) diff --git a/e2e/resize.go b/e2e/resize.go index bae750aaf..f60bbd060 100644 --- a/e2e/resize.go +++ b/e2e/resize.go @@ -25,7 +25,7 @@ func expandPVCSize(c kubernetes.Interface, pvc *v1.PersistentVolumeClaim, size s updatedPVC, err = c.CoreV1().PersistentVolumeClaims(pvc.Namespace).Get(context.TODO(), pvcName, metav1.GetOptions{}) if err != nil { - return fmt.Errorf("error fetching pvc %q with %v", pvcName, err) + return fmt.Errorf("error fetching pvc %q with %w", pvcName, err) } timeout := time.Duration(t) * time.Minute diff --git a/e2e/staticpvc.go b/e2e/staticpvc.go index f81ae983e..b02381b5d 100644 --- a/e2e/staticpvc.go +++ b/e2e/staticpvc.go @@ -114,14 +114,14 @@ func validateRBDStaticPV(f *framework.Framework, appPath string, isBlock bool) e _, err := c.CoreV1().PersistentVolumes().Create(context.TODO(), pv, metav1.CreateOptions{}) if err != nil { - return fmt.Errorf("PV Create API error: %v", err) + return fmt.Errorf("PV Create API error: %w", err) } pvc := getStaticPVC(pvcName, pvName, size, namespace, sc, isBlock) _, err = c.CoreV1().PersistentVolumeClaims(pvc.Namespace).Create(context.TODO(), pvc, metav1.CreateOptions{}) if err != nil { - return fmt.Errorf("PVC Create API error: %v", err) + return fmt.Errorf("PVC Create API error: %w", err) } // bind pvc to app app, err := loadApp(appPath) @@ -224,7 +224,7 @@ func validateCephFsStaticPV(f *framework.Framework, appPath, scPath string) erro secret.Namespace = cephCSINamespace _, err := c.CoreV1().Secrets(cephCSINamespace).Create(context.TODO(), &secret, metav1.CreateOptions{}) if err != nil { - return fmt.Errorf("failed to create secret, error %v", err) + return fmt.Errorf("failed to create secret, error %w", err) } opt["clusterID"] = fsID @@ -234,30 +234,30 @@ func validateCephFsStaticPV(f *framework.Framework, appPath, scPath string) erro pv := getStaticPV(pvName, pvName, "4Gi", secretName, cephCSINamespace, sc, "cephfs.csi.ceph.com", false, opt) _, err = c.CoreV1().PersistentVolumes().Create(context.TODO(), pv, metav1.CreateOptions{}) if err != nil { - return fmt.Errorf("failed to create PV, error %v", err) + return fmt.Errorf("failed to create PV, error %w", err) } pvc := getStaticPVC(pvcName, pvName, size, namespace, sc, false) _, err = c.CoreV1().PersistentVolumeClaims(pvc.Namespace).Create(context.TODO(), pvc, metav1.CreateOptions{}) if err != nil { - return fmt.Errorf("failed to create PVC, error %v", err) + return fmt.Errorf("failed to create PVC, error %w", err) } // bind pvc to app app, err := loadApp(appPath) if err != nil { - return fmt.Errorf("failed to load app, error %v", err) + return fmt.Errorf("failed to load app, error %w", err) } app.Namespace = namespace app.Spec.Volumes[0].PersistentVolumeClaim.ClaimName = pvcName err = createApp(f.ClientSet, app, deployTimeout) if err != nil { - return fmt.Errorf("failed to create pod, error %v", err) + return fmt.Errorf("failed to create pod, error %w", err) } err = deletePod(app.Name, namespace, f.ClientSet, deployTimeout) if err != nil { - return fmt.Errorf("failed to delete pod, error %v", err) + return fmt.Errorf("failed to delete pod, error %w", err) } err = c.CoreV1().PersistentVolumeClaims(pvc.Namespace).Delete(context.TODO(), pvc.Name, metav1.DeleteOptions{}) diff --git a/e2e/utils.go b/e2e/utils.go index 97a8eedae..a75a6b20e 100644 --- a/e2e/utils.go +++ b/e2e/utils.go @@ -183,7 +183,7 @@ func waitForDeploymentComplete(name, ns string, c kubernetes.Interface, t int) e err = fmt.Errorf("%s", reason) } if err != nil { - return fmt.Errorf("error waiting for deployment %q status to match expectation: %v", name, err) + return fmt.Errorf("error waiting for deployment %q status to match expectation: %w", name, err) } return nil } @@ -531,7 +531,7 @@ func deletePVCAndValidatePV(c kubernetes.Interface, pvc *v1.PersistentVolumeClai err = c.CoreV1().PersistentVolumeClaims(nameSpace).Delete(context.TODO(), name, metav1.DeleteOptions{}) if err != nil { - return fmt.Errorf("delete of PVC %v failed: %v", name, err) + return fmt.Errorf("delete of PVC %v failed: %w", name, err) } start := time.Now() return wait.PollImmediate(poll, timeout, func() (bool, error) { @@ -542,7 +542,7 @@ func deletePVCAndValidatePV(c kubernetes.Interface, pvc *v1.PersistentVolumeClai return false, nil } if !apierrs.IsNotFound(err) { - return false, fmt.Errorf("get on deleted PVC %v failed with error other than \"not found\": %v", name, err) + return false, fmt.Errorf("get on deleted PVC %v failed with error other than \"not found\": %w", name, err) } // Examine the pv.ClaimRef and UID. Expect nil values. @@ -552,7 +552,7 @@ func deletePVCAndValidatePV(c kubernetes.Interface, pvc *v1.PersistentVolumeClai } if !apierrs.IsNotFound(err) { - return false, fmt.Errorf("delete PV %v failed with error other than \"not found\": %v", pv.Name, err) + return false, fmt.Errorf("delete PV %v failed with error other than \"not found\": %w", pv.Name, err) } return true, nil diff --git a/internal/cephfs/nodeserver.go b/internal/cephfs/nodeserver.go index c8c9f1eeb..3d83df477 100644 --- a/internal/cephfs/nodeserver.go +++ b/internal/cephfs/nodeserver.go @@ -53,14 +53,14 @@ func getCredentialsForVolume(volOptions *volumeOptions, req *csi.NodeStageVolume cr, err = util.NewAdminCredentials(secrets) if err != nil { - return nil, fmt.Errorf("failed to get admin credentials from node stage secrets: %v", err) + return nil, fmt.Errorf("failed to get admin credentials from node stage secrets: %w", err) } } else { // The volume is pre-made, credentials are in node stage secrets cr, err = util.NewUserCredentials(req.GetSecrets()) if err != nil { - return nil, fmt.Errorf("failed to get user credentials from node stage secrets: %v", err) + return nil, fmt.Errorf("failed to get user credentials from node stage secrets: %w", err) } } diff --git a/internal/cephfs/util.go b/internal/cephfs/util.go index a0aee65de..c5c7c54d5 100644 --- a/internal/cephfs/util.go +++ b/internal/cephfs/util.go @@ -47,10 +47,10 @@ func execCommand(ctx context.Context, program string, args ...string) (stdout, s if err := cmd.Run(); err != nil { if cmd.Process == nil { - return nil, nil, fmt.Errorf("cannot get process pid while running %s %v: %v: %s", + return nil, nil, fmt.Errorf("cannot get process pid while running %s %v: %w: %s", program, sanitizedArgs, err, stderrBuf.Bytes()) } - return nil, nil, fmt.Errorf("an error occurred while running (%d) %s %v: %v: %s", + return nil, nil, fmt.Errorf("an error occurred while running (%d) %s %v: %w: %s", cmd.Process.Pid, program, sanitizedArgs, err, stderrBuf.Bytes()) } @@ -70,7 +70,7 @@ func execCommandJSON(ctx context.Context, v interface{}, program string, args .. } if err = json.Unmarshal(stdout, v); err != nil { - return fmt.Errorf("failed to unmarshal JSON for %s %v: %s: %v", program, util.StripSecretInArgs(args), stdout, err) + return fmt.Errorf("failed to unmarshal JSON for %s %v: %s: %w", program, util.StripSecretInArgs(args), stdout, err) } return nil @@ -79,7 +79,7 @@ func execCommandJSON(ctx context.Context, v interface{}, program string, args .. // Controller service request validation. func (cs *ControllerServer) validateCreateVolumeRequest(req *csi.CreateVolumeRequest) error { if err := cs.Driver.ValidateControllerServiceRequest(csi.ControllerServiceCapability_RPC_CREATE_DELETE_VOLUME); err != nil { - return fmt.Errorf("invalid CreateVolumeRequest: %v", err) + return fmt.Errorf("invalid CreateVolumeRequest: %w", err) } if req.GetName() == "" { @@ -102,7 +102,7 @@ func (cs *ControllerServer) validateCreateVolumeRequest(req *csi.CreateVolumeReq func (cs *ControllerServer) validateDeleteVolumeRequest() error { if err := cs.Driver.ValidateControllerServiceRequest(csi.ControllerServiceCapability_RPC_CREATE_DELETE_VOLUME); err != nil { - return fmt.Errorf("invalid DeleteVolumeRequest: %v", err) + return fmt.Errorf("invalid DeleteVolumeRequest: %w", err) } return nil @@ -111,7 +111,7 @@ func (cs *ControllerServer) validateDeleteVolumeRequest() error { // Controller expand volume request validation. func (cs *ControllerServer) validateExpandVolumeRequest(req *csi.ControllerExpandVolumeRequest) error { if err := cs.Driver.ValidateControllerServiceRequest(csi.ControllerServiceCapability_RPC_EXPAND_VOLUME); err != nil { - return fmt.Errorf("invalid ExpandVolumeRequest: %v", err) + return fmt.Errorf("invalid ExpandVolumeRequest: %w", err) } if req.GetVolumeId() == "" { diff --git a/internal/cephfs/volumemounter.go b/internal/cephfs/volumemounter.go index 127e450ea..67e811e4a 100644 --- a/internal/cephfs/volumemounter.go +++ b/internal/cephfs/volumemounter.go @@ -182,7 +182,7 @@ func mountFuse(ctx context.Context, mountPoint string, cr *util.Credentials, vol pid, err := strconv.Atoi(string(match[1])) if err != nil { - return fmt.Errorf("failed to parse FUSE daemon PID: %v", err) + return fmt.Errorf("failed to parse FUSE daemon PID: %w", err) } fusePidMapMtx.Lock() diff --git a/internal/cephfs/volumeoptions.go b/internal/cephfs/volumeoptions.go index 9ce62ce39..f922235a2 100644 --- a/internal/cephfs/volumeoptions.go +++ b/internal/cephfs/volumeoptions.go @@ -334,7 +334,7 @@ func newVolumeOptionsFromMonitorList(volID string, options, secrets map[string]s } if opts.ProvisionVolume, err = strconv.ParseBool(provisionVolumeBool); err != nil { - return nil, nil, fmt.Errorf("failed to parse provisionVolume: %v", err) + return nil, nil, fmt.Errorf("failed to parse provisionVolume: %w", err) } if opts.ProvisionVolume { @@ -376,7 +376,7 @@ func newVolumeOptionsFromStaticVolume(volID string, options map[string]string) ( } if staticVol, err = strconv.ParseBool(val); err != nil { - return nil, nil, fmt.Errorf("failed to parse preProvisionedVolume: %v", err) + return nil, nil, fmt.Errorf("failed to parse preProvisionedVolume: %w", err) } if !staticVol {