mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Remove push by ID
Pushing by image ID is not allowed in the Docker CLI and not supported by the registry. An unnamed image also cannot be pushed to a private registry, since no endpoint is specified and it will default to the hub. The hub also does not support this use case, therefore removing the code path is the best solution. The ability to push a layer without a name is unsupported by the v2 registry. Signed-off-by: Derek McGowan <derek@mcgstyle.net> (github: dmcgowan)
This commit is contained in:
parent
19019722d9
commit
db2d875b5e
1 changed files with 14 additions and 22 deletions
|
@ -449,10 +449,9 @@ func (s *TagStore) CmdPush(job *engine.Job) engine.Status {
|
||||||
return job.Error(err)
|
return job.Error(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
img, err := s.graph.Get(repoInfo.LocalName)
|
r, err := registry.NewSession(authConfig, registry.HTTPRequestFactory(metaHeaders), endpoint, false)
|
||||||
r, err2 := registry.NewSession(authConfig, registry.HTTPRequestFactory(metaHeaders), endpoint, false)
|
if err != nil {
|
||||||
if err2 != nil {
|
return job.Error(err)
|
||||||
return job.Error(err2)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if endpoint.Version == registry.APIVersion2 {
|
if endpoint.Version == registry.APIVersion2 {
|
||||||
|
@ -466,26 +465,19 @@ func (s *TagStore) CmdPush(job *engine.Job) engine.Status {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err != nil {
|
reposLen := 1
|
||||||
reposLen := 1
|
if tag == "" {
|
||||||
if tag == "" {
|
reposLen = len(s.Repositories[repoInfo.LocalName])
|
||||||
reposLen = len(s.Repositories[repoInfo.LocalName])
|
|
||||||
}
|
|
||||||
job.Stdout.Write(sf.FormatStatus("", "The push refers to a repository [%s] (len: %d)", repoInfo.CanonicalName, reposLen))
|
|
||||||
// If it fails, try to get the repository
|
|
||||||
if localRepo, exists := s.Repositories[repoInfo.LocalName]; exists {
|
|
||||||
if err := s.pushRepository(r, job.Stdout, repoInfo, localRepo, tag, sf); err != nil {
|
|
||||||
return job.Error(err)
|
|
||||||
}
|
|
||||||
return engine.StatusOK
|
|
||||||
}
|
|
||||||
return job.Error(err)
|
|
||||||
}
|
}
|
||||||
|
job.Stdout.Write(sf.FormatStatus("", "The push refers to a repository [%s] (len: %d)", repoInfo.CanonicalName, reposLen))
|
||||||
var token []string
|
// If it fails, try to get the repository
|
||||||
job.Stdout.Write(sf.FormatStatus("", "The push refers to an image: [%s]", repoInfo.CanonicalName))
|
localRepo, exists := s.Repositories[repoInfo.LocalName]
|
||||||
if _, err := s.pushImage(r, job.Stdout, img.ID, endpoint.String(), token, sf); err != nil {
|
if !exists {
|
||||||
|
return job.Errorf("Repository does not exist: %s", repoInfo.LocalName)
|
||||||
|
}
|
||||||
|
if err := s.pushRepository(r, job.Stdout, repoInfo, localRepo, tag, sf); err != nil {
|
||||||
return job.Error(err)
|
return job.Error(err)
|
||||||
}
|
}
|
||||||
return engine.StatusOK
|
return engine.StatusOK
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue