cli/registry/client: use stdlib errors

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
Sebastiaan van Stijn
2025-08-11 14:51:32 +02:00
parent adbe04b5fc
commit 4c89455378
3 changed files with 17 additions and 17 deletions

View File

@ -12,7 +12,6 @@ import (
distributionclient "github.com/docker/distribution/registry/client"
registrytypes "github.com/moby/moby/api/types/registry"
"github.com/opencontainers/go-digest"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
)
@ -83,9 +82,9 @@ func (c *client) MountBlob(ctx context.Context, sourceRef reference.Canonical, t
return nil
case nil:
default:
return errors.Wrapf(err, "failed to mount blob %s to %s", sourceRef, targetRef)
return fmt.Errorf("failed to mount blob %s to %s: %w", sourceRef, targetRef, err)
}
lu.Cancel(ctx)
_ = lu.Cancel(ctx)
logrus.Debugf("mount of blob %s created", sourceRef)
return ErrBlobCreated{From: sourceRef, Target: targetRef}
}
@ -115,7 +114,7 @@ func (c *client) PutManifest(ctx context.Context, ref reference.Named, manifest
dgst, err := manifestService.Put(ctx, manifest, opts...)
if err != nil {
return dgst, errors.Wrapf(err, "failed to put manifest %s", ref)
return dgst, fmt.Errorf("failed to put manifest %s: %w", ref, err)
}
return dgst, nil
}
@ -123,7 +122,7 @@ func (c *client) PutManifest(ctx context.Context, ref reference.Named, manifest
func (c *client) getRepositoryForReference(ctx context.Context, ref reference.Named, repoEndpoint repositoryEndpoint) (distribution.Repository, error) {
repoName, err := reference.WithName(repoEndpoint.Name())
if err != nil {
return nil, errors.Wrapf(err, "failed to parse repo name from %s", ref)
return nil, fmt.Errorf("failed to parse repo name from %s: %w", ref, err)
}
httpTransport, err := c.getHTTPTransportForRepoEndpoint(ctx, repoEndpoint)
if err != nil {
@ -154,7 +153,7 @@ func (c *client) getHTTPTransportForRepoEndpoint(ctx context.Context, repoEndpoi
repoEndpoint.actions,
)
if err != nil {
return nil, errors.Wrap(err, "failed to configure transport")
return nil, fmt.Errorf("failed to configure transport: %w", err)
}
return httpTransport, nil
}
@ -193,5 +192,5 @@ func getManifestOptionsFromReference(ref reference.Named) (digest.Digest, []dist
if digested, isDigested := ref.(reference.Canonical); isDigested {
return digested.Digest(), []distribution.ManifestServiceOption{}, nil
}
return "", nil, errors.Errorf("%s no tag or digest", ref)
return "", nil, fmt.Errorf("%s no tag or digest", ref)
}

View File

@ -2,6 +2,7 @@ package client
import (
"context"
"fmt"
"net"
"net/http"
"net/url"
@ -12,7 +13,6 @@ import (
"github.com/docker/distribution/registry/client/auth"
"github.com/docker/distribution/registry/client/transport"
registrytypes "github.com/moby/moby/api/types/registry"
"github.com/pkg/errors"
)
type repositoryEndpoint struct {
@ -89,7 +89,7 @@ func getHTTPTransport(authConfig registrytypes.AuthConfig, endpoint registry.API
authTransport := transport.NewTransport(base, modifiers...)
challengeManager, err := registry.PingV2Registry(endpoint.URL, authTransport)
if err != nil {
return nil, errors.Wrap(err, "error pinging v2 registry")
return nil, fmt.Errorf("error pinging v2 registry: %w", err)
}
if authConfig.RegistryToken != "" {
passThruTokenHandler := &existingTokenHandler{token: authConfig.RegistryToken}

View File

@ -3,6 +3,8 @@ package client
import (
"context"
"encoding/json"
"errors"
"fmt"
"github.com/distribution/reference"
"github.com/docker/cli/cli/manifest/types"
@ -16,7 +18,6 @@ import (
distclient "github.com/docker/distribution/registry/client"
"github.com/opencontainers/go-digest"
ocispec "github.com/opencontainers/image-spec/specs-go/v1"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
)
@ -35,9 +36,9 @@ func fetchManifest(ctx context.Context, repo distribution.Repository, ref refere
case *ocischema.DeserializedManifest:
return pullManifestOCISchema(ctx, ref, repo, *v)
case *manifestlist.DeserializedManifestList:
return types.ImageManifest{}, errors.Errorf("%s is a manifest list", ref)
return types.ImageManifest{}, fmt.Errorf("%s is a manifest list", ref)
}
return types.ImageManifest{}, errors.Errorf("%s is not a manifest", ref)
return types.ImageManifest{}, fmt.Errorf("%s is not a manifest", ref)
}
func fetchList(ctx context.Context, repo distribution.Repository, ref reference.Named) ([]types.ImageManifest, error) {
@ -50,7 +51,7 @@ func fetchList(ctx context.Context, repo distribution.Repository, ref reference.
case *manifestlist.DeserializedManifestList:
return pullManifestList(ctx, ref, repo, *v)
default:
return nil, errors.Errorf("unsupported manifest format: %v", v)
return nil, fmt.Errorf("unsupported manifest format: %v", v)
}
}
@ -62,7 +63,7 @@ func getManifest(ctx context.Context, repo distribution.Repository, ref referenc
dgst, opts, err := getManifestOptionsFromReference(ref)
if err != nil {
return nil, errors.Errorf("image manifest for %q does not exist", ref)
return nil, fmt.Errorf("image manifest for %q does not exist", ref)
}
return manSvc.Get(ctx, dgst, opts...)
}
@ -123,7 +124,7 @@ func pullManifestSchemaV2ImageConfig(ctx context.Context, dgst digest.Digest, re
return nil, err
}
if !verifier.Verified() {
return nil, errors.Errorf("image config verification failed for digest %s", dgst)
return nil, fmt.Errorf("image config verification failed for digest %s", dgst)
}
return configJSON, nil
}
@ -143,7 +144,7 @@ func validateManifestDigest(ref reference.Named, mfst distribution.Manifest) (oc
// If pull by digest, then verify the manifest digest.
if digested, isDigested := ref.(reference.Canonical); isDigested && digested.Digest() != desc.Digest {
return ocispec.Descriptor{}, errors.Errorf("manifest verification failed for digest %s", digested.Digest())
return ocispec.Descriptor{}, fmt.Errorf("manifest verification failed for digest %s", digested.Digest())
}
return desc, nil
@ -179,7 +180,7 @@ func pullManifestList(ctx context.Context, ref reference.Named, repo distributio
case *ocischema.DeserializedManifest:
imageManifest, err = pullManifestOCISchema(ctx, manifestRef, repo, *v)
default:
err = errors.Errorf("unsupported manifest type: %T", manifest)
err = fmt.Errorf("unsupported manifest type: %T", manifest)
}
if err != nil {
return nil, err