Vendor updated version of docker/distribution

This updates the vendored docker/distribution to the current master
branch.

Note the following changes:

- The manifest package was split into manifest/schema1. Most references
  to the manifest package in the engine needed to be updated to use
  schema1 instead.

- Validation functions in api/v2 were replaced by the
  distribution/reference package. The engine code has been updated to
  use the reference package for validation where necessary. A future PR
  will change the engine to use the types defined in
  distribution/reference more comprehensively.

- The reference package explicitly allows double _ characters in
  repository names. registry_test.go was updated for this.

- TestPullFailsWithAlteredManifest was corrupting the manifest JSON, now
  that the schema1 package unmarshals the correct payload. The test is
  being changed to modify the JSON without affecting its length, which
  allows the pull to succeed to the point where digest validation
  happens.

Signed-off-by: Aaron Lehmann <aaron.lehmann@docker.com>
This commit is contained in:
Aaron Lehmann 2015-10-30 17:46:25 -07:00
parent 24de26a805
commit afd61ce8f2
3 changed files with 8 additions and 5 deletions

View file

@ -8,7 +8,7 @@ import (
"net/url" "net/url"
"strings" "strings"
"github.com/docker/distribution/registry/api/v2" "github.com/docker/distribution/reference"
"github.com/docker/docker/image" "github.com/docker/docker/image"
"github.com/docker/docker/opts" "github.com/docker/docker/opts"
flag "github.com/docker/docker/pkg/mflag" flag "github.com/docker/docker/pkg/mflag"
@ -226,7 +226,8 @@ func validateRemoteName(remoteName string) error {
} }
} }
return v2.ValidateRepositoryName(remoteName) _, err := reference.WithName(remoteName)
return err
} }
func validateNoSchema(reposName string) error { func validateNoSchema(reposName string) error {

View file

@ -190,7 +190,7 @@ func addRequiredHeadersToRedirectedRequests(req *http.Request, via []*http.Reque
func shouldV2Fallback(err errcode.Error) bool { func shouldV2Fallback(err errcode.Error) bool {
logrus.Debugf("v2 error: %T %v", err, err) logrus.Debugf("v2 error: %T %v", err, err)
switch err.Code { switch err.Code {
case v2.ErrorCodeUnauthorized, v2.ErrorCodeManifestUnknown: case errcode.ErrorCodeUnauthorized, v2.ErrorCodeManifestUnknown:
return true return true
} }
return false return false

View file

@ -776,6 +776,9 @@ func TestValidRemoteName(t *testing.T) {
// single character names are now allowed. // single character names are now allowed.
"d/docker", "d/docker",
"jess/t", "jess/t",
// Consecutive underscores.
"dock__er/docker",
} }
for _, repositoryName := range validRepositoryNames { for _, repositoryName := range validRepositoryNames {
if err := validateRemoteName(repositoryName); err != nil { if err := validateRemoteName(repositoryName); err != nil {
@ -803,8 +806,7 @@ func TestValidRemoteName(t *testing.T) {
"_docker/_docker", "_docker/_docker",
// Disallow consecutive underscores and periods. // Disallow consecutive periods.
"dock__er/docker",
"dock..er/docker", "dock..er/docker",
"dock_.er/docker", "dock_.er/docker",
"dock-.er/docker", "dock-.er/docker",