diff options
author | Sebastiaan van Stijn <github@gone.nl> | 2018-08-03 15:41:05 +0200 |
---|---|---|
committer | Sebastiaan van Stijn <github@gone.nl> | 2018-08-03 16:12:44 +0200 |
commit | 99fc4ca2bd5071d55cfbf4f63a1465c5aa0f146a (patch) | |
tree | bd529a1e86b845c1c7c07e23b0acd9e2e0a11ebb /distribution/errors.go | |
parent | 75fe41444009947d319f76e68b5e1f2124c79b4d (diff) | |
download | docker-99fc4ca2bd5071d55cfbf4f63a1465c5aa0f146a.tar.gz |
Include original error when translating distribution errors
Before:
curl -v -X POST --unix-socket /var/run/docker.sock "http://localhost/images/create?fromImage=library/busybox:lsfkjsdflkjsdf"
{"message":"manifest for busybox:lsfkjsdflkjsdf not found"}
curl -v -X POST --unix-socket /var/run/docker.sock "http://localhost/images/create?fromImage=library/nosuchimage:latest"
{"message":"pull access denied for nosuchimage, repository does not exist or may require 'docker login'"}
After:
curl -v -X POST --unix-socket /var/run/docker.sock "http://localhost/images/create?fromImage=library/busybox:lsfkjsdflkjsdf"
{"message":"manifest for busybox:lsfkjsdflkjsdf not found: manifest unknown: manifest unknown"}
curl -v -X POST --unix-socket /var/run/docker.sock "http://localhost/images/create?fromImage=library/nosuchimage:latest"
{"message":"pull access denied for nosuchimage, repository does not exist or may require 'docker login': denied: requested access to the resource is denied"}
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Diffstat (limited to 'distribution/errors.go')
-rw-r--r-- | distribution/errors.go | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/distribution/errors.go b/distribution/errors.go index e2913d45d6..9dc5955f26 100644 --- a/distribution/errors.go +++ b/distribution/errors.go @@ -14,6 +14,7 @@ import ( "github.com/docker/distribution/registry/client/auth" "github.com/docker/docker/distribution/xfer" "github.com/docker/docker/errdefs" + "github.com/pkg/errors" "github.com/sirupsen/logrus" ) @@ -70,11 +71,11 @@ func (e notFoundError) Error() string { switch e.cause.Code { case errcode.ErrorCodeDenied: // ErrorCodeDenied is used when access to the repository was denied - return fmt.Sprintf("pull access denied for %s, repository does not exist or may require 'docker login'", reference.FamiliarName(e.ref)) + return errors.Wrapf(e.cause, "pull access denied for %s, repository does not exist or may require 'docker login'", reference.FamiliarName(e.ref)).Error() case v2.ErrorCodeManifestUnknown: - return fmt.Sprintf("manifest for %s not found", reference.FamiliarString(e.ref)) + return errors.Wrapf(e.cause, "manifest for %s not found", reference.FamiliarString(e.ref)).Error() case v2.ErrorCodeNameUnknown: - return fmt.Sprintf("repository %s not found", reference.FamiliarName(e.ref)) + return errors.Wrapf(e.cause, "repository %s not found", reference.FamiliarName(e.ref)).Error() } // Shouldn't get here, but this is better than returning an empty string return e.cause.Message |