Add 'docker.io' and 'index.docker.io' to default registry matcher

Signed-off-by: Michal Fojtik <mfojtik@redhat.com>
pull/6/head
Michal Fojtik 2015-05-27 16:07:08 +02:00
parent 6fa2777e26
commit 9a94f7cc38
2 changed files with 29 additions and 0 deletions

View File

@ -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

View File

@ -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
}