Merge pull request #2137 from dmcgowan/reference-ambiguous-library-namespace

Remove ambiguity for unsupported official repository input
This commit is contained in:
Derek McGowan 2017-01-13 16:22:41 -08:00 committed by GitHub
commit 7cb0c15480
2 changed files with 35 additions and 3 deletions

View file

@ -12,7 +12,7 @@ import (
var ( var (
legacyDefaultDomain = "index.docker.io" legacyDefaultDomain = "index.docker.io"
defaultDomain = "docker.io" defaultDomain = "docker.io"
defaultRepoPrefix = "library/" officialRepoName = "library"
defaultTag = "latest" defaultTag = "latest"
) )
@ -70,7 +70,7 @@ func splitDockerDomain(name string) (domain, remainder string) {
domain = defaultDomain domain = defaultDomain
} }
if domain == defaultDomain && !strings.ContainsRune(remainder, '/') { if domain == defaultDomain && !strings.ContainsRune(remainder, '/') {
remainder = defaultRepoPrefix + remainder remainder = officialRepoName + "/" + remainder
} }
return return
} }
@ -89,7 +89,10 @@ func familiarizeName(named namedRepository) repository {
if repo.domain == defaultDomain { if repo.domain == defaultDomain {
repo.domain = "" repo.domain = ""
repo.path = strings.TrimPrefix(repo.path, defaultRepoPrefix) // Handle official repositories which have the pattern "library/<official repo name>"
if split := strings.Split(repo.path, "/"); len(split) == 2 && split[0] == officialRepoName {
repo.path = split[1]
}
} }
return repo return repo
} }

View file

@ -208,6 +208,20 @@ func TestParseRepositoryInfo(t *testing.T) {
AmbiguousName: "index.docker.io/library/ubuntu-12.04-base", AmbiguousName: "index.docker.io/library/ubuntu-12.04-base",
Domain: "docker.io", Domain: "docker.io",
}, },
{
RemoteName: "library/foo/bar",
FamiliarName: "library/foo/bar",
FullName: "docker.io/library/foo/bar",
AmbiguousName: "",
Domain: "docker.io",
},
{
RemoteName: "store/foo/bar",
FamiliarName: "store/foo/bar",
FullName: "docker.io/store/foo/bar",
AmbiguousName: "",
Domain: "docker.io",
},
} }
for _, tcase := range tcases { for _, tcase := range tcases {
@ -482,6 +496,21 @@ func TestNormalizedSplitHostname(t *testing.T) {
domain: "xn--n3h.com:18080", domain: "xn--n3h.com:18080",
name: "foo", name: "foo",
}, },
{
input: "docker.io/foo",
domain: "docker.io",
name: "library/foo",
},
{
input: "docker.io/library/foo",
domain: "docker.io",
name: "library/foo",
},
{
input: "docker.io/library/foo/bar",
domain: "docker.io",
name: "library/foo/bar",
},
} }
for _, testcase := range testcases { for _, testcase := range testcases {
failf := func(format string, v ...interface{}) { failf := func(format string, v ...interface{}) {