Send the images in correct order

This commit is contained in:
Guillaume J. Charmes 2013-05-09 11:12:37 -07:00
parent 55cf05835b
commit 3cbf5670c5
1 changed files with 8 additions and 26 deletions

View File

@ -547,27 +547,6 @@ func (graph *Graph) pushPrimitive(stdout io.Writer, remote, tag, imgId, registry
return nil return nil
} }
// Push a repository to the registry.
// Remote has the format '<user>/<repo>
func (graph *Graph) PushRepository(stdout io.Writer, remote string, localRepo Repository, authConfig *auth.AuthConfig) error {
client := graph.getHttpClient()
checksums, err := graph.Checksums(stdout, localRepo)
if err != nil {
return err
}
for tag, id := range originRepo {
if exists, err := graph.getRemoteImageJson(id); err != nil {
return nil, err
} else if !exists {
filteredRepo[tag] = id
}
}
return filteredRepo, nil
}
// Retrieve the checksum of an image // Retrieve the checksum of an image
// Priority: // Priority:
// - Check on the stored checksums // - Check on the stored checksums
@ -606,6 +585,7 @@ func (graph *Graph) getChecksum(imageId string) (string, error) {
type ImgListJson struct { type ImgListJson struct {
Id string `json:"id"` Id string `json:"id"`
Checksum string `json:"checksum,omitempty"` Checksum string `json:"checksum,omitempty"`
tag string
} }
// Push a repository to the registry. // Push a repository to the registry.
@ -618,7 +598,8 @@ func (graph *Graph) PushRepository(stdout io.Writer, remote string, localRepo Re
fmt.Fprintf(stdout, "Processing checksums\n") fmt.Fprintf(stdout, "Processing checksums\n")
imageSet := make(map[string]struct{}) imageSet := make(map[string]struct{})
for _, id := range localRepo {
for tag, id := range localRepo {
img, err := graph.Get(id) img, err := graph.Get(id)
if err != nil { if err != nil {
return err return err
@ -632,10 +613,11 @@ func (graph *Graph) PushRepository(stdout io.Writer, remote string, localRepo Re
if err != nil { if err != nil {
return err return err
} }
imgList = append(imgList, &ImgListJson{ imgList = append([]*ImgListJson{{
Id: img.Id, Id: img.Id,
Checksum: checksum, Checksum: checksum,
}) tag: tag,
}}, imgList...)
return nil return nil
}) })
} }
@ -704,8 +686,8 @@ func (graph *Graph) PushRepository(stdout io.Writer, remote string, localRepo Re
for _, registry := range endpoints { for _, registry := range endpoints {
fmt.Fprintf(stdout, "Pushing repository %s to %s (%d tags)\r\n", remote, registry, len(localRepo)) fmt.Fprintf(stdout, "Pushing repository %s to %s (%d tags)\r\n", remote, registry, len(localRepo))
// For each image within the repo, push them // For each image within the repo, push them
for tag, imgId := range localRepo { for _, elem := range imgList {
if err := graph.pushPrimitive(stdout, remote, tag, imgId, registry, token); err != nil { if err := graph.pushPrimitive(stdout, remote, elem.tag, elem.Id, registry, token); err != nil {
// FIXME: Continue on error? // FIXME: Continue on error?
return err return err
} }