diff --git a/api/client/commands.go b/api/client/commands.go index 787a2bdc7d..77e1ccc8fb 100644 --- a/api/client/commands.go +++ b/api/client/commands.go @@ -1052,16 +1052,19 @@ func (cli *DockerCli) CmdImport(args ...string) error { return nil } - var src, repository, tag string + var ( + v = url.Values{} + src = cmd.Arg(0) + repository = cmd.Arg(1) + ) + + v.Set("fromSrc", src) + v.Set("repo", repository) if cmd.NArg() == 3 { fmt.Fprintf(cli.err, "[DEPRECATED] The format 'URL|- [REPOSITORY [TAG]]' as been deprecated. Please use URL|- [REPOSITORY[:TAG]]\n") - src, repository, tag = cmd.Arg(0), cmd.Arg(1), cmd.Arg(2) - } else { - src = cmd.Arg(0) - repository, tag = utils.ParseRepositoryTag(cmd.Arg(1)) + v.Set("tag", cmd.Arg(2)) } - v := url.Values{} if repository != "" { //Check if the given image name can be resolved @@ -1070,10 +1073,6 @@ func (cli *DockerCli) CmdImport(args ...string) error { } } - v.Set("repo", repository) - v.Set("tag", tag) - v.Set("fromSrc", src) - var in io.Reader if src == "-" { @@ -1159,12 +1158,18 @@ func (cli *DockerCli) CmdPull(args ...string) error { cmd.Usage() return nil } + var ( + v = url.Values{} + remote = cmd.Arg(0) + ) + + v.Set("fromImage", remote) - remote, parsedTag := utils.ParseRepositoryTag(cmd.Arg(0)) if *tag == "" { - *tag = parsedTag + v.Set("tag", *tag) } + remote, _ = utils.ParseRepositoryTag(remote) // Resolve the Repository name from fqn to hostname + name hostname, _, err := registry.ResolveRepositoryName(remote) if err != nil { @@ -1175,9 +1180,6 @@ func (cli *DockerCli) CmdPull(args ...string) error { // Resolve the Auth config relevant for this server authConfig := cli.configFile.ResolveAuthConfig(hostname) - v := url.Values{} - v.Set("fromImage", remote) - v.Set("tag", *tag) pull := func(authConfig registry.AuthConfig) error { buf, err := json.Marshal(authConfig) diff --git a/api/server/server.go b/api/server/server.go index b3a0590fda..6d6ed3e773 100644 --- a/api/server/server.go +++ b/api/server/server.go @@ -468,6 +468,7 @@ func postImagesCreate(eng *engine.Engine, version version.Version, w http.Respon var ( image = r.Form.Get("fromImage") + repo = r.Form.Get("repo") tag = r.Form.Get("tag") job *engine.Job ) @@ -482,18 +483,24 @@ func postImagesCreate(eng *engine.Engine, version version.Version, w http.Respon } } if image != "" { //pull + if tag == "" { + image, tag = utils.ParseRepositoryTag(image) + } metaHeaders := map[string][]string{} for k, v := range r.Header { if strings.HasPrefix(k, "X-Meta-") { metaHeaders[k] = v } } - job = eng.Job("pull", r.Form.Get("fromImage"), tag) + job = eng.Job("pull", image, tag) job.SetenvBool("parallel", version.GreaterThan("1.3")) job.SetenvJson("metaHeaders", metaHeaders) job.SetenvJson("authConfig", authConfig) } else { //import - job = eng.Job("import", r.Form.Get("fromSrc"), r.Form.Get("repo"), tag) + if tag == "" { + repo, tag = utils.ParseRepositoryTag(repo) + } + job = eng.Job("import", r.Form.Get("fromSrc"), repo, tag) job.Stdin.Add(r.Body) }