mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Add repo/tag parsing on the daemon for pull and import
Docker-DCO-1.1-Signed-off-by: Victor Vieux <vieux@docker.com> (github: vieux)
This commit is contained in:
parent
170609e369
commit
714b63d1be
2 changed files with 26 additions and 17 deletions
|
@ -1052,16 +1052,19 @@ func (cli *DockerCli) CmdImport(args ...string) error {
|
||||||
return nil
|
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 {
|
if cmd.NArg() == 3 {
|
||||||
fmt.Fprintf(cli.err, "[DEPRECATED] The format 'URL|- [REPOSITORY [TAG]]' as been deprecated. Please use URL|- [REPOSITORY[:TAG]]\n")
|
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)
|
v.Set("tag", cmd.Arg(2))
|
||||||
} else {
|
|
||||||
src = cmd.Arg(0)
|
|
||||||
repository, tag = utils.ParseRepositoryTag(cmd.Arg(1))
|
|
||||||
}
|
}
|
||||||
v := url.Values{}
|
|
||||||
|
|
||||||
if repository != "" {
|
if repository != "" {
|
||||||
//Check if the given image name can be resolved
|
//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
|
var in io.Reader
|
||||||
|
|
||||||
if src == "-" {
|
if src == "-" {
|
||||||
|
@ -1159,12 +1158,18 @@ func (cli *DockerCli) CmdPull(args ...string) error {
|
||||||
cmd.Usage()
|
cmd.Usage()
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
var (
|
||||||
|
v = url.Values{}
|
||||||
|
remote = cmd.Arg(0)
|
||||||
|
)
|
||||||
|
|
||||||
|
v.Set("fromImage", remote)
|
||||||
|
|
||||||
remote, parsedTag := utils.ParseRepositoryTag(cmd.Arg(0))
|
|
||||||
if *tag == "" {
|
if *tag == "" {
|
||||||
*tag = parsedTag
|
v.Set("tag", *tag)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
remote, _ = utils.ParseRepositoryTag(remote)
|
||||||
// Resolve the Repository name from fqn to hostname + name
|
// Resolve the Repository name from fqn to hostname + name
|
||||||
hostname, _, err := registry.ResolveRepositoryName(remote)
|
hostname, _, err := registry.ResolveRepositoryName(remote)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1175,9 +1180,6 @@ func (cli *DockerCli) CmdPull(args ...string) error {
|
||||||
|
|
||||||
// Resolve the Auth config relevant for this server
|
// Resolve the Auth config relevant for this server
|
||||||
authConfig := cli.configFile.ResolveAuthConfig(hostname)
|
authConfig := cli.configFile.ResolveAuthConfig(hostname)
|
||||||
v := url.Values{}
|
|
||||||
v.Set("fromImage", remote)
|
|
||||||
v.Set("tag", *tag)
|
|
||||||
|
|
||||||
pull := func(authConfig registry.AuthConfig) error {
|
pull := func(authConfig registry.AuthConfig) error {
|
||||||
buf, err := json.Marshal(authConfig)
|
buf, err := json.Marshal(authConfig)
|
||||||
|
|
|
@ -468,6 +468,7 @@ func postImagesCreate(eng *engine.Engine, version version.Version, w http.Respon
|
||||||
|
|
||||||
var (
|
var (
|
||||||
image = r.Form.Get("fromImage")
|
image = r.Form.Get("fromImage")
|
||||||
|
repo = r.Form.Get("repo")
|
||||||
tag = r.Form.Get("tag")
|
tag = r.Form.Get("tag")
|
||||||
job *engine.Job
|
job *engine.Job
|
||||||
)
|
)
|
||||||
|
@ -482,18 +483,24 @@ func postImagesCreate(eng *engine.Engine, version version.Version, w http.Respon
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if image != "" { //pull
|
if image != "" { //pull
|
||||||
|
if tag == "" {
|
||||||
|
image, tag = utils.ParseRepositoryTag(image)
|
||||||
|
}
|
||||||
metaHeaders := map[string][]string{}
|
metaHeaders := map[string][]string{}
|
||||||
for k, v := range r.Header {
|
for k, v := range r.Header {
|
||||||
if strings.HasPrefix(k, "X-Meta-") {
|
if strings.HasPrefix(k, "X-Meta-") {
|
||||||
metaHeaders[k] = v
|
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.SetenvBool("parallel", version.GreaterThan("1.3"))
|
||||||
job.SetenvJson("metaHeaders", metaHeaders)
|
job.SetenvJson("metaHeaders", metaHeaders)
|
||||||
job.SetenvJson("authConfig", authConfig)
|
job.SetenvJson("authConfig", authConfig)
|
||||||
} else { //import
|
} 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)
|
job.Stdin.Add(r.Body)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue