From 9a94f7cc3808c46232d3048a088ce434c74f1dd7 Mon Sep 17 00:00:00 2001 From: Michal Fojtik Date: Wed, 27 May 2015 16:07:08 +0200 Subject: [PATCH] Add 'docker.io' and 'index.docker.io' to default registry matcher Signed-off-by: Michal Fojtik --- pkg/credentialprovider/keyring.go | 9 +++++++++ pkg/credentialprovider/keyring_test.go | 20 ++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/pkg/credentialprovider/keyring.go b/pkg/credentialprovider/keyring.go index 334cfadb1a9..9c0a48b1644 100644 --- a/pkg/credentialprovider/keyring.go +++ b/pkg/credentialprovider/keyring.go @@ -106,11 +106,20 @@ const defaultRegistryHost = "index.docker.io/v1/" func isDefaultRegistryMatch(image string) bool { parts := strings.SplitN(image, "/", 2) + if len(parts[0]) == 0 { + return false + } + if len(parts) == 1 { // e.g. library/ubuntu return true } + if parts[0] == "docker.io" || parts[0] == "index.docker.io" { + // resolve docker.io/image and index.docker.io/image as default registry + return true + } + // From: http://blog.docker.com/2013/07/how-to-use-your-own-registry/ // Docker looks for either a “.” (domain separator) or “:” (port separator) // to learn that the first part of the repository name is a location and not diff --git a/pkg/credentialprovider/keyring_test.go b/pkg/credentialprovider/keyring_test.go index 77bb78b4d69..b5a51b1c44f 100644 --- a/pkg/credentialprovider/keyring_test.go +++ b/pkg/credentialprovider/keyring_test.go @@ -238,6 +238,26 @@ func TestKeyringHitWithQualifiedDockerHub(t *testing.T) { } } +func TestIsDefaultRegistryMatch(t *testing.T) { + samples := []map[bool]string{ + {true: "foo/bar"}, + {true: "docker.io/foo/bar"}, + {true: "index.docker.io/foo/bar"}, + {true: "foo"}, + {false: ""}, + {false: "registry.tld/foo/bar"}, + {false: "registry:5000/foo/bar"}, + {false: "myhostdocker.io/foo/bar"}, + } + for _, sample := range samples { + for expected, imageName := range sample { + if got := isDefaultRegistryMatch(imageName); got != expected { + t.Errorf("Expected '%s' to be %s, got %s", imageName, expected, got) + } + } + } +} + type testProvider struct { Count int }