diff --git a/test/e2e/storage/external/external.go b/test/e2e/storage/external/external.go index 8e90260b09e..2b128a705a2 100644 --- a/test/e2e/storage/external/external.go +++ b/test/e2e/storage/external/external.go @@ -20,11 +20,10 @@ import ( "context" "encoding/json" "flag" + "fmt" "io/ioutil" "time" - "github.com/pkg/errors" - storagev1 "k8s.io/api/storage/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" @@ -168,7 +167,7 @@ func AddDriverDefinition(filename string) error { return err } if driver.DriverInfo.Name == "" { - return errors.Errorf("%q: DriverInfo.Name not set", filename) + return fmt.Errorf("%q: DriverInfo.Name not set", filename) } description := "External Storage " + storageframework.GetDriverNameWithFeatureTags(driver) @@ -181,7 +180,7 @@ func AddDriverDefinition(filename string) error { func loadDriverDefinition(filename string) (*driverDefinition, error) { if filename == "" { - return nil, errors.New("missing file name") + return nil, fmt.Errorf("missing file name") } data, err := ioutil.ReadFile(filename) if err != nil { @@ -201,7 +200,7 @@ func loadDriverDefinition(filename string) (*driverDefinition, error) { // TODO: strict checking of the file content once https://github.com/kubernetes/kubernetes/pull/71589 // or something similar is merged. if err := runtime.DecodeInto(scheme.Codecs.UniversalDecoder(), data, driver); err != nil { - return nil, errors.Wrap(err, filename) + return nil, fmt.Errorf("%s: %w", filename, err) } // to ensure backward compatibility if controller expansion is enabled then set online expansion to true @@ -347,7 +346,7 @@ func loadSnapshotClass(filename string) (*unstructured.Unstructured, error) { snapshotClass := &unstructured.Unstructured{} if err := runtime.DecodeInto(scheme.Codecs.UniversalDecoder(), data, snapshotClass); err != nil { - return nil, errors.Wrap(err, filename) + return nil, fmt.Errorf("%s: %w", filename, err) } return snapshotClass, nil diff --git a/test/e2e/storage/framework/volume_resource.go b/test/e2e/storage/framework/volume_resource.go index 713dbf72cd7..e65e98a842e 100644 --- a/test/e2e/storage/framework/volume_resource.go +++ b/test/e2e/storage/framework/volume_resource.go @@ -22,7 +22,6 @@ import ( "time" "github.com/onsi/ginkgo" - "github.com/pkg/errors" v1 "k8s.io/api/core/v1" storagev1 "k8s.io/api/storage/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" @@ -184,27 +183,27 @@ func (r *VolumeResource) CleanupResource() error { if pvc.Spec.VolumeName != "" { pv, err = cs.CoreV1().PersistentVolumes().Get(context.TODO(), pvc.Spec.VolumeName, metav1.GetOptions{}) if err != nil { - cleanUpErrs = append(cleanUpErrs, errors.Wrapf(err, "Failed to find PV %v", pvc.Spec.VolumeName)) + cleanUpErrs = append(cleanUpErrs, fmt.Errorf("failed to find PV %v: %w", pvc.Spec.VolumeName, err)) } } case apierrors.IsNotFound(err): // Without the PVC, we cannot locate the corresponding PV. Let's // hope that it is gone. default: - cleanUpErrs = append(cleanUpErrs, errors.Wrapf(err, "Failed to find PVC %v", r.Pvc.Name)) + cleanUpErrs = append(cleanUpErrs, fmt.Errorf("failed to find PVC %v: %w", r.Pvc.Name, err)) } } err := e2epv.DeletePersistentVolumeClaim(f.ClientSet, r.Pvc.Name, f.Namespace.Name) if err != nil { - cleanUpErrs = append(cleanUpErrs, errors.Wrapf(err, "Failed to delete PVC %v", r.Pvc.Name)) + cleanUpErrs = append(cleanUpErrs, fmt.Errorf("failed to delete PVC %v: %w", r.Pvc.Name, err)) } if pv != nil { err = e2epv.WaitForPersistentVolumeDeleted(f.ClientSet, pv.Name, 5*time.Second, 5*time.Minute) if err != nil { - cleanUpErrs = append(cleanUpErrs, errors.Wrapf(err, - "Persistent Volume %v not deleted by dynamic provisioner", pv.Name)) + cleanUpErrs = append(cleanUpErrs, fmt.Errorf( + "persistent Volume %v not deleted by dynamic provisioner: %w", pv.Name, err)) } } } @@ -216,14 +215,14 @@ func (r *VolumeResource) CleanupResource() error { if r.Sc != nil { ginkgo.By("Deleting sc") if err := storageutils.DeleteStorageClass(f.ClientSet, r.Sc.Name); err != nil { - cleanUpErrs = append(cleanUpErrs, errors.Wrapf(err, "Failed to delete StorageClass %v", r.Sc.Name)) + cleanUpErrs = append(cleanUpErrs, fmt.Errorf("failed to delete StorageClass %v: %w", r.Sc.Name, err)) } } // Cleanup volume for pre-provisioned volume tests if r.Volume != nil { if err := storageutils.TryFunc(r.Volume.DeleteVolume); err != nil { - cleanUpErrs = append(cleanUpErrs, errors.Wrap(err, "Failed to delete Volume")) + cleanUpErrs = append(cleanUpErrs, fmt.Errorf("failed to delete Volume: %w", err)) } } return utilerrors.NewAggregate(cleanUpErrs) diff --git a/test/e2e/storage/podlogs/podlogs.go b/test/e2e/storage/podlogs/podlogs.go index e635103dd60..7ab3bf85d46 100644 --- a/test/e2e/storage/podlogs/podlogs.go +++ b/test/e2e/storage/podlogs/podlogs.go @@ -35,8 +35,6 @@ import ( "sync" "time" - "github.com/pkg/errors" - v1 "k8s.io/api/core/v1" meta "k8s.io/apimachinery/pkg/apis/meta/v1" clientset "k8s.io/client-go/kubernetes" @@ -97,7 +95,7 @@ func CopyPodLogs(ctx context.Context, cs clientset.Interface, ns, podName string watcher, err := cs.CoreV1().Pods(ns).Watch(context.TODO(), options) if err != nil { - return errors.Wrap(err, "cannot create Pod event watcher") + return fmt.Errorf("cannot create Pod event watcher: %w", err) } go func() { diff --git a/test/e2e/storage/utils/create.go b/test/e2e/storage/utils/create.go index 9ad47af1f0f..c9a97aff842 100644 --- a/test/e2e/storage/utils/create.go +++ b/test/e2e/storage/utils/create.go @@ -20,10 +20,9 @@ import ( "bytes" "context" "encoding/json" + "errors" "fmt" - "github.com/pkg/errors" - appsv1 "k8s.io/api/apps/v1" v1 "k8s.io/api/core/v1" rbacv1 "k8s.io/api/rbac/v1" @@ -58,17 +57,17 @@ func LoadFromManifests(files ...string) ([]interface{}, error) { // Ignore any additional fields for now, just determine what we have. var what What if err := runtime.DecodeInto(scheme.Codecs.UniversalDecoder(), data, &what); err != nil { - return errors.Wrap(err, "decode TypeMeta") + return fmt.Errorf("decode TypeMeta: %w", err) } factory := factories[what] if factory == nil { - return errors.Errorf("item of type %+v not supported", what) + return fmt.Errorf("item of type %+v not supported", what) } object := factory.New() if err := runtime.DecodeInto(scheme.Codecs.UniversalDecoder(), data, object); err != nil { - return errors.Wrapf(err, "decode %+v", what) + return fmt.Errorf("decode %+v: %w", what, err) } items = append(items, object) return nil @@ -96,7 +95,7 @@ func visitManifests(cb func([]byte) error, files ...string) error { for _, item := range items { if err := cb(item); err != nil { - return errors.Wrap(err, fileName) + return fmt.Errorf("%s: %w", fileName, err) } } } @@ -173,13 +172,13 @@ func CreateItems(f *framework.Framework, ns *v1.Namespace, items ...interface{}) if err == nil { done = true break - } else if errors.Cause(err) != errorItemNotSupported { + } else if !errors.Is(err, errorItemNotSupported) { result = err break } } if result == nil && !done { - result = errors.Errorf("item of type %T not supported", item) + result = fmt.Errorf("item of type %T not supported", item) break } } @@ -198,7 +197,7 @@ func CreateItems(f *framework.Framework, ns *v1.Namespace, items ...interface{}) func CreateFromManifests(f *framework.Framework, driverNamespace *v1.Namespace, patch func(item interface{}) error, files ...string) (func(), error) { items, err := LoadFromManifests(files...) if err != nil { - return nil, errors.Wrap(err, "CreateFromManifests") + return nil, fmt.Errorf("CreateFromManifests: %w", err) } if err := PatchItems(f, driverNamespace, items...); err != nil { return nil, err @@ -337,21 +336,21 @@ func patchItemRecursively(f *framework.Framework, driverNamespace *v1.Namespace, PatchName(f, &item.Name) for i := range item.Subjects { if err := patchItemRecursively(f, driverNamespace, &item.Subjects[i]); err != nil { - return errors.Wrapf(err, "%T", f) + return fmt.Errorf("%T: %w", f, err) } } if err := patchItemRecursively(f, driverNamespace, &item.RoleRef); err != nil { - return errors.Wrapf(err, "%T", f) + return fmt.Errorf("%T: %w", f, err) } case *rbacv1.RoleBinding: PatchNamespace(f, driverNamespace, &item.Namespace) for i := range item.Subjects { if err := patchItemRecursively(f, driverNamespace, &item.Subjects[i]); err != nil { - return errors.Wrapf(err, "%T", f) + return fmt.Errorf("%T: %w", f, err) } } if err := patchItemRecursively(f, driverNamespace, &item.RoleRef); err != nil { - return errors.Wrapf(err, "%T", f) + return fmt.Errorf("%T: %w", f, err) } case *v1.Service: PatchNamespace(f, driverNamespace, &item.ObjectMeta.Namespace) @@ -372,7 +371,7 @@ func patchItemRecursively(f *framework.Framework, driverNamespace *v1.Namespace, return err } default: - return errors.Errorf("missing support for patching item of type %T", item) + return fmt.Errorf("missing support for patching item of type %T", item) } return nil } @@ -395,7 +394,7 @@ func (*serviceAccountFactory) Create(f *framework.Framework, ns *v1.Namespace, i } client := f.ClientSet.CoreV1().ServiceAccounts(ns.Name) if _, err := client.Create(context.TODO(), item, metav1.CreateOptions{}); err != nil { - return nil, errors.Wrap(err, "create ServiceAccount") + return nil, fmt.Errorf("create ServiceAccount: %w", err) } return func() error { return client.Delete(context.TODO(), item.GetName(), metav1.DeleteOptions{}) @@ -417,7 +416,7 @@ func (*clusterRoleFactory) Create(f *framework.Framework, ns *v1.Namespace, i in framework.Logf("Define cluster role %v", item.GetName()) client := f.ClientSet.RbacV1().ClusterRoles() if _, err := client.Create(context.TODO(), item, metav1.CreateOptions{}); err != nil { - return nil, errors.Wrap(err, "create ClusterRole") + return nil, fmt.Errorf("create ClusterRole: %w", err) } return func() error { return client.Delete(context.TODO(), item.GetName(), metav1.DeleteOptions{}) @@ -438,7 +437,7 @@ func (*clusterRoleBindingFactory) Create(f *framework.Framework, ns *v1.Namespac client := f.ClientSet.RbacV1().ClusterRoleBindings() if _, err := client.Create(context.TODO(), item, metav1.CreateOptions{}); err != nil { - return nil, errors.Wrap(err, "create ClusterRoleBinding") + return nil, fmt.Errorf("create ClusterRoleBinding: %w", err) } return func() error { return client.Delete(context.TODO(), item.GetName(), metav1.DeleteOptions{}) @@ -459,7 +458,7 @@ func (*roleFactory) Create(f *framework.Framework, ns *v1.Namespace, i interface client := f.ClientSet.RbacV1().Roles(ns.Name) if _, err := client.Create(context.TODO(), item, metav1.CreateOptions{}); err != nil { - return nil, errors.Wrap(err, "create Role") + return nil, fmt.Errorf("create Role: %w", err) } return func() error { return client.Delete(context.TODO(), item.GetName(), metav1.DeleteOptions{}) @@ -480,7 +479,7 @@ func (*roleBindingFactory) Create(f *framework.Framework, ns *v1.Namespace, i in client := f.ClientSet.RbacV1().RoleBindings(ns.Name) if _, err := client.Create(context.TODO(), item, metav1.CreateOptions{}); err != nil { - return nil, errors.Wrap(err, "create RoleBinding") + return nil, fmt.Errorf("create RoleBinding: %w", err) } return func() error { return client.Delete(context.TODO(), item.GetName(), metav1.DeleteOptions{}) @@ -501,7 +500,7 @@ func (*serviceFactory) Create(f *framework.Framework, ns *v1.Namespace, i interf client := f.ClientSet.CoreV1().Services(ns.Name) if _, err := client.Create(context.TODO(), item, metav1.CreateOptions{}); err != nil { - return nil, errors.Wrap(err, "create Service") + return nil, fmt.Errorf("create Service: %w", err) } return func() error { return client.Delete(context.TODO(), item.GetName(), metav1.DeleteOptions{}) @@ -522,7 +521,7 @@ func (*statefulSetFactory) Create(f *framework.Framework, ns *v1.Namespace, i in client := f.ClientSet.AppsV1().StatefulSets(ns.Name) if _, err := client.Create(context.TODO(), item, metav1.CreateOptions{}); err != nil { - return nil, errors.Wrap(err, "create StatefulSet") + return nil, fmt.Errorf("create StatefulSet: %w", err) } return func() error { return client.Delete(context.TODO(), item.GetName(), metav1.DeleteOptions{}) @@ -543,7 +542,7 @@ func (*daemonSetFactory) Create(f *framework.Framework, ns *v1.Namespace, i inte client := f.ClientSet.AppsV1().DaemonSets(ns.Name) if _, err := client.Create(context.TODO(), item, metav1.CreateOptions{}); err != nil { - return nil, errors.Wrap(err, "create DaemonSet") + return nil, fmt.Errorf("create DaemonSet: %w", err) } return func() error { return client.Delete(context.TODO(), item.GetName(), metav1.DeleteOptions{}) @@ -564,7 +563,7 @@ func (*storageClassFactory) Create(f *framework.Framework, ns *v1.Namespace, i i client := f.ClientSet.StorageV1().StorageClasses() if _, err := client.Create(context.TODO(), item, metav1.CreateOptions{}); err != nil { - return nil, errors.Wrap(err, "create StorageClass") + return nil, fmt.Errorf("create StorageClass: %w", err) } return func() error { return client.Delete(context.TODO(), item.GetName(), metav1.DeleteOptions{}) @@ -585,7 +584,7 @@ func (*csiDriverFactory) Create(f *framework.Framework, ns *v1.Namespace, i inte client := f.ClientSet.StorageV1().CSIDrivers() if _, err := client.Create(context.TODO(), item, metav1.CreateOptions{}); err != nil { - return nil, errors.Wrap(err, "create CSIDriver") + return nil, fmt.Errorf("create CSIDriver: %w", err) } return func() error { return client.Delete(context.TODO(), item.GetName(), metav1.DeleteOptions{}) @@ -606,7 +605,7 @@ func (*secretFactory) Create(f *framework.Framework, ns *v1.Namespace, i interfa client := f.ClientSet.CoreV1().Secrets(ns.Name) if _, err := client.Create(context.TODO(), item, metav1.CreateOptions{}); err != nil { - return nil, errors.Wrap(err, "create Secret") + return nil, fmt.Errorf("create Secret: %w", err) } return func() error { return client.Delete(context.TODO(), item.GetName(), metav1.DeleteOptions{})