Revert "Use docker's ParseRepositoryTag when pulling"
This commit is contained in:
@@ -35,7 +35,6 @@ import (
|
||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/kubelet/leaky"
|
||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/types"
|
||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/util"
|
||||
"github.com/docker/docker/pkg/parsers"
|
||||
docker "github.com/fsouza/go-dockerclient"
|
||||
"github.com/golang/glog"
|
||||
)
|
||||
@@ -326,7 +325,7 @@ func NewDockerContainerCommandRunner(client DockerInterface) ContainerCommandRun
|
||||
}
|
||||
|
||||
func (p dockerPuller) Pull(image string) error {
|
||||
_, tag := parsers.ParseRepositoryTag(image)
|
||||
image, tag := parseImageName(image)
|
||||
|
||||
// If no tag was specified, use the default "latest".
|
||||
if len(tag) == 0 {
|
||||
@@ -380,6 +379,16 @@ func (p dockerPuller) IsImagePresent(image string) (bool, error) {
|
||||
return false, err
|
||||
}
|
||||
|
||||
// RequireLatestImage returns if the user wants the latest image
|
||||
func RequireLatestImage(name string) bool {
|
||||
_, tag := parseImageName(name)
|
||||
|
||||
if tag == "latest" {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (p throttledDockerPuller) IsImagePresent(name string) (bool, error) {
|
||||
return p.puller.IsImagePresent(name)
|
||||
}
|
||||
@@ -762,6 +771,29 @@ func GetRunningContainers(client DockerInterface, ids []string) ([]*docker.Conta
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// Parses image name including a tag and returns image name and tag.
|
||||
// TODO: Future Docker versions can parse the tag on daemon side, see
|
||||
// https://github.com/dotcloud/docker/issues/6876
|
||||
// So this can be deprecated at some point.
|
||||
func parseImageName(image string) (string, string) {
|
||||
tag := ""
|
||||
parts := strings.SplitN(image, "/", 2)
|
||||
repo := ""
|
||||
if len(parts) == 2 {
|
||||
repo = parts[0]
|
||||
image = parts[1]
|
||||
}
|
||||
parts = strings.SplitN(image, ":", 2)
|
||||
if len(parts) == 2 {
|
||||
image = parts[0]
|
||||
tag = parts[1]
|
||||
}
|
||||
if repo != "" {
|
||||
image = fmt.Sprintf("%s/%s", repo, image)
|
||||
}
|
||||
return image, tag
|
||||
}
|
||||
|
||||
// Get a docker endpoint, either from the string passed in, or $DOCKER_HOST environment variables
|
||||
func getDockerEndpoint(dockerEndpoint string) string {
|
||||
var endpoint string
|
||||
|
Reference in New Issue
Block a user