mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Several fixes and updates to make this work with latest changes in master
This commit is contained in:
parent
67ecd2cb82
commit
c3dd6e1926
1 changed files with 16 additions and 14 deletions
30
server.go
30
server.go
|
@ -353,15 +353,11 @@ func (srv *Server) pullImage(r *registry.Registry, out io.Writer, imgId, endpoin
|
||||||
|
|
||||||
func (srv *Server) pullRepository(r *registry.Registry, out io.Writer, local, remote, askedTag, registryEp string, sf *utils.StreamFormatter) error {
|
func (srv *Server) pullRepository(r *registry.Registry, out io.Writer, local, remote, askedTag, registryEp string, sf *utils.StreamFormatter) error {
|
||||||
out.Write(sf.FormatStatus("Pulling repository %s from %s", local, auth.IndexServerAddress()))
|
out.Write(sf.FormatStatus("Pulling repository %s from %s", local, auth.IndexServerAddress()))
|
||||||
repoData, err := r.GetRepositoryData(remote)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
var repoData *registry.RepositoryData
|
var repoData *registry.RepositoryData
|
||||||
var err error
|
var err error
|
||||||
if registryEp == "" {
|
if registryEp == "" {
|
||||||
repoData, err = srv.registry.GetRepositoryData(remote)
|
repoData, err = r.GetRepositoryData(remote)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -382,13 +378,14 @@ func (srv *Server) pullRepository(r *registry.Registry, out io.Writer, local, re
|
||||||
utils.Debugf("Retrieving the tag list")
|
utils.Debugf("Retrieving the tag list")
|
||||||
tagsList, err := r.GetRemoteTags(repoData.Endpoints, remote, repoData.Tokens)
|
tagsList, err := r.GetRemoteTags(repoData.Endpoints, remote, repoData.Tokens)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
utils.Debugf("%v", err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if registryEp != "" {
|
if registryEp != "" {
|
||||||
for tag, id := range tagsList {
|
for tag, id := range tagsList {
|
||||||
repoData.ImgList[id] = ®istry.ImgData{
|
repoData.ImgList[id] = ®istry.ImgData{
|
||||||
Id: id,
|
ID: id,
|
||||||
Tag: tag,
|
Tag: tag,
|
||||||
Checksum: "",
|
Checksum: "",
|
||||||
}
|
}
|
||||||
|
@ -418,6 +415,9 @@ func (srv *Server) pullRepository(r *registry.Registry, out io.Writer, local, re
|
||||||
out.Write(sf.FormatStatus("Pulling image %s (%s) from %s", img.ID, img.Tag, remote))
|
out.Write(sf.FormatStatus("Pulling image %s (%s) from %s", img.ID, img.Tag, remote))
|
||||||
success := false
|
success := false
|
||||||
for _, ep := range repoData.Endpoints {
|
for _, ep := range repoData.Endpoints {
|
||||||
|
if !(strings.HasPrefix(ep, "http://") || strings.HasPrefix(ep, "https://")) {
|
||||||
|
ep = "https://" + ep
|
||||||
|
}
|
||||||
if err := srv.pullImage(r, out, img.ID, ep+"/v1", repoData.Tokens, sf); err != nil {
|
if err := srv.pullImage(r, out, img.ID, ep+"/v1", repoData.Tokens, sf); err != nil {
|
||||||
out.Write(sf.FormatStatus("Error while retrieving image for tag: %s (%s); checking next endpoint", askedTag, err))
|
out.Write(sf.FormatStatus("Error while retrieving image for tag: %s (%s); checking next endpoint", askedTag, err))
|
||||||
continue
|
continue
|
||||||
|
@ -495,8 +495,7 @@ func (srv *Server) ImagePull(name, tag, endpoint string, out io.Writer, sf *util
|
||||||
remote = fmt.Sprintf("src/%s", url.QueryEscape(strings.Join(parts, "/")))
|
remote = fmt.Sprintf("src/%s", url.QueryEscape(strings.Join(parts, "/")))
|
||||||
}
|
}
|
||||||
out = utils.NewWriteFlusher(out)
|
out = utils.NewWriteFlusher(out)
|
||||||
|
err = srv.pullRepository(r, out, name, remote, tag, endpoint, sf)
|
||||||
err := srv.pullRepository(r, out, name, tag, endpoint, sf)
|
|
||||||
if err != nil && endpoint != "" {
|
if err != nil && endpoint != "" {
|
||||||
if err := srv.pullImage(r, out, name, endpoint, nil, sf); err != nil {
|
if err := srv.pullImage(r, out, name, endpoint, nil, sf); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -589,7 +588,7 @@ func (srv *Server) pushRepository(r *registry.Registry, out io.Writer, name, reg
|
||||||
|
|
||||||
var repoData *registry.RepositoryData
|
var repoData *registry.RepositoryData
|
||||||
if registryEp == "" {
|
if registryEp == "" {
|
||||||
repoData, err = srv.registry.PushImageJsonIndex(name, imgList, false)
|
repoData, err = r.PushImageJSONIndex(name, imgList, false, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -599,13 +598,13 @@ func (srv *Server) pushRepository(r *registry.Registry, out io.Writer, name, reg
|
||||||
Tokens: []string{},
|
Tokens: []string{},
|
||||||
Endpoints: []string{registryEp},
|
Endpoints: []string{registryEp},
|
||||||
}
|
}
|
||||||
tagsList, err := srv.registry.GetRemoteTags(repoData.Endpoints, name, repoData.Tokens)
|
tagsList, err := r.GetRemoteTags(repoData.Endpoints, name, repoData.Tokens)
|
||||||
if err != nil && err.Error() != "Repository not found" {
|
if err != nil && err.Error() != "Repository not found" {
|
||||||
return err
|
return err
|
||||||
} else if err == nil {
|
} else if err == nil {
|
||||||
for tag, id := range tagsList {
|
for tag, id := range tagsList {
|
||||||
repoData.ImgList[id] = ®istry.ImgData{
|
repoData.ImgList[id] = ®istry.ImgData{
|
||||||
Id: id,
|
ID: id,
|
||||||
Tag: tag,
|
Tag: tag,
|
||||||
Checksum: "",
|
Checksum: "",
|
||||||
}
|
}
|
||||||
|
@ -614,13 +613,16 @@ func (srv *Server) pushRepository(r *registry.Registry, out io.Writer, name, reg
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, ep := range repoData.Endpoints {
|
for _, ep := range repoData.Endpoints {
|
||||||
|
if !(strings.HasPrefix(ep, "http://") || strings.HasPrefix(ep, "https://")) {
|
||||||
|
ep = "https://" + ep
|
||||||
|
}
|
||||||
out.Write(sf.FormatStatus("Pushing repository %s to %s (%d tags)", name, ep, len(localRepo)))
|
out.Write(sf.FormatStatus("Pushing repository %s to %s (%d tags)", name, ep, len(localRepo)))
|
||||||
// For each image within the repo, push them
|
// For each image within the repo, push them
|
||||||
for _, elem := range imgList {
|
for _, elem := range imgList {
|
||||||
if _, exists := repoData.ImgList[elem.ID]; exists {
|
if _, exists := repoData.ImgList[elem.ID]; exists {
|
||||||
out.Write(sf.FormatStatus("Image %s already on registry, skipping", name))
|
out.Write(sf.FormatStatus("Image %s already on registry, skipping", name))
|
||||||
continue
|
continue
|
||||||
} else if registryEp != "" && srv.registry.LookupRemoteImage(elem.Id, registryEp, repoData.Tokens) {
|
} else if registryEp != "" && r.LookupRemoteImage(elem.ID, registryEp, repoData.Tokens) {
|
||||||
fmt.Fprintf(out, "Image %s already on registry, skipping\n", name)
|
fmt.Fprintf(out, "Image %s already on registry, skipping\n", name)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
@ -636,7 +638,7 @@ func (srv *Server) pushRepository(r *registry.Registry, out io.Writer, name, reg
|
||||||
}
|
}
|
||||||
|
|
||||||
if registryEp == "" {
|
if registryEp == "" {
|
||||||
if _, err := srv.registry.PushImageJsonIndex(name, imgList, true); err != nil {
|
if _, err := r.PushImageJSONIndex(name, imgList, true, repoData.Endpoints); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -722,7 +724,7 @@ func (srv *Server) ImagePush(name, endpoint string, out io.Writer, sf *utils.Str
|
||||||
out.Write(sf.FormatStatus("The push refers to a repository [%s] (len: %d)", name, len(srv.runtime.repositories.Repositories[name])))
|
out.Write(sf.FormatStatus("The push refers to a repository [%s] (len: %d)", name, len(srv.runtime.repositories.Repositories[name])))
|
||||||
// If it fails, try to get the repository
|
// If it fails, try to get the repository
|
||||||
if localRepo, exists := srv.runtime.repositories.Repositories[name]; exists {
|
if localRepo, exists := srv.runtime.repositories.Repositories[name]; exists {
|
||||||
if err := srv.pushRepository(r, out, name, registry, localRepo, sf); err != nil {
|
if err := srv.pushRepository(r, out, name, endpoint, localRepo, sf); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
|
Loading…
Add table
Reference in a new issue