From 7f48cd7dce6fdc077bcde0962e0aa0e73fb63225 Mon Sep 17 00:00:00 2001 From: Derek McGowan Date: Tue, 14 Jul 2015 17:45:49 -0700 Subject: [PATCH] Set canonical name correctly Currently canonical name gets set to the local name and displayed in the errors. Canonical name should be the unique and canonical name for an image. Use docker.io as the canonical domain for images on the public registry. Signed-off-by: Derek McGowan (github: dmcgowan) --- graph/pull.go | 8 ++++---- registry/config.go | 4 +--- registry/registry_test.go | 24 ++++++++++++------------ 3 files changed, 17 insertions(+), 19 deletions(-) diff --git a/graph/pull.go b/graph/pull.go index 0f04c8bff1..ae0e1f8e69 100644 --- a/graph/pull.go +++ b/graph/pull.go @@ -352,9 +352,9 @@ func (s *TagStore) pullRepository(r *registry.Session, out io.Writer, repoInfo * } } - requestedTag := repoInfo.CanonicalName + requestedTag := repoInfo.LocalName if len(askedTag) > 0 { - requestedTag = utils.ImageReference(repoInfo.CanonicalName, askedTag) + requestedTag = utils.ImageReference(repoInfo.LocalName, askedTag) } WriteStatus(requestedTag, out, sf, layersDownloaded) return nil @@ -508,9 +508,9 @@ func (s *TagStore) pullV2Repository(r *registry.Session, out io.Writer, repoInfo } } - requestedTag := repoInfo.CanonicalName + requestedTag := repoInfo.LocalName if len(tag) > 0 { - requestedTag = utils.ImageReference(repoInfo.CanonicalName, tag) + requestedTag = utils.ImageReference(repoInfo.LocalName, tag) } WriteStatus(requestedTag, out, sf, layersDownloaded) return nil diff --git a/registry/config.go b/registry/config.go index a336d74369..105ec61d68 100644 --- a/registry/config.go +++ b/registry/config.go @@ -324,10 +324,8 @@ func (config *ServiceConfig) NewRepositoryInfo(reposName string) (*RepositoryInf repoInfo.RemoteName = "library/" + normalizedName } - // *TODO: Prefix this with 'docker.io/'. - repoInfo.CanonicalName = repoInfo.LocalName + repoInfo.CanonicalName = "docker.io/" + repoInfo.RemoteName } else { - // *TODO: Decouple index name from hostname (via registry configuration?) repoInfo.LocalName = repoInfo.Index.Name + "/" + repoInfo.RemoteName repoInfo.CanonicalName = repoInfo.LocalName diff --git a/registry/registry_test.go b/registry/registry_test.go index 3a996401c4..52a2dc30fb 100644 --- a/registry/registry_test.go +++ b/registry/registry_test.go @@ -337,7 +337,7 @@ func TestParseRepositoryInfo(t *testing.T) { }, RemoteName: "fooo/bar", LocalName: "fooo/bar", - CanonicalName: "fooo/bar", + CanonicalName: "docker.io/fooo/bar", Official: false, }, "library/ubuntu": { @@ -347,7 +347,7 @@ func TestParseRepositoryInfo(t *testing.T) { }, RemoteName: "library/ubuntu", LocalName: "ubuntu", - CanonicalName: "ubuntu", + CanonicalName: "docker.io/library/ubuntu", Official: true, }, "nonlibrary/ubuntu": { @@ -357,7 +357,7 @@ func TestParseRepositoryInfo(t *testing.T) { }, RemoteName: "nonlibrary/ubuntu", LocalName: "nonlibrary/ubuntu", - CanonicalName: "nonlibrary/ubuntu", + CanonicalName: "docker.io/nonlibrary/ubuntu", Official: false, }, "ubuntu": { @@ -367,7 +367,7 @@ func TestParseRepositoryInfo(t *testing.T) { }, RemoteName: "library/ubuntu", LocalName: "ubuntu", - CanonicalName: "ubuntu", + CanonicalName: "docker.io/library/ubuntu", Official: true, }, "other/library": { @@ -377,7 +377,7 @@ func TestParseRepositoryInfo(t *testing.T) { }, RemoteName: "other/library", LocalName: "other/library", - CanonicalName: "other/library", + CanonicalName: "docker.io/other/library", Official: false, }, "127.0.0.1:8000/private/moonbase": { @@ -487,7 +487,7 @@ func TestParseRepositoryInfo(t *testing.T) { }, RemoteName: "public/moonbase", LocalName: "public/moonbase", - CanonicalName: "public/moonbase", + CanonicalName: "docker.io/public/moonbase", Official: false, }, "index." + IndexServerName() + "/public/moonbase": { @@ -497,7 +497,7 @@ func TestParseRepositoryInfo(t *testing.T) { }, RemoteName: "public/moonbase", LocalName: "public/moonbase", - CanonicalName: "public/moonbase", + CanonicalName: "docker.io/public/moonbase", Official: false, }, IndexServerName() + "/public/moonbase": { @@ -507,7 +507,7 @@ func TestParseRepositoryInfo(t *testing.T) { }, RemoteName: "public/moonbase", LocalName: "public/moonbase", - CanonicalName: "public/moonbase", + CanonicalName: "docker.io/public/moonbase", Official: false, }, "ubuntu-12.04-base": { @@ -517,7 +517,7 @@ func TestParseRepositoryInfo(t *testing.T) { }, RemoteName: "library/ubuntu-12.04-base", LocalName: "ubuntu-12.04-base", - CanonicalName: "ubuntu-12.04-base", + CanonicalName: "docker.io/library/ubuntu-12.04-base", Official: true, }, IndexServerName() + "/ubuntu-12.04-base": { @@ -527,7 +527,7 @@ func TestParseRepositoryInfo(t *testing.T) { }, RemoteName: "library/ubuntu-12.04-base", LocalName: "ubuntu-12.04-base", - CanonicalName: "ubuntu-12.04-base", + CanonicalName: "docker.io/library/ubuntu-12.04-base", Official: true, }, IndexServerName() + "/ubuntu-12.04-base": { @@ -537,7 +537,7 @@ func TestParseRepositoryInfo(t *testing.T) { }, RemoteName: "library/ubuntu-12.04-base", LocalName: "ubuntu-12.04-base", - CanonicalName: "ubuntu-12.04-base", + CanonicalName: "docker.io/library/ubuntu-12.04-base", Official: true, }, "index." + IndexServerName() + "/ubuntu-12.04-base": { @@ -547,7 +547,7 @@ func TestParseRepositoryInfo(t *testing.T) { }, RemoteName: "library/ubuntu-12.04-base", LocalName: "ubuntu-12.04-base", - CanonicalName: "ubuntu-12.04-base", + CanonicalName: "docker.io/library/ubuntu-12.04-base", Official: true, }, }