diff --git a/commands.go b/commands.go index a5cd227268..117523a0c2 100644 --- a/commands.go +++ b/commands.go @@ -438,7 +438,7 @@ func (srv *Server) CmdPush(stdin io.ReadCloser, stdout io.Writer, args ...string // If it fails, try to get the repository if localRepo, exists := srv.runtime.repositories.Repositories[local]; exists { fmt.Fprintf(stdout, "Pushing %s (%d tags) on %s...\n", local, len(localRepo), remote) - if err := srv.runtime.graph.PushRepository(remote, localRepo, srv.runtime.authConfig); err != nil { + if err := srv.runtime.graph.PushRepository(stdout, remote, localRepo, srv.runtime.authConfig); err != nil { return err } fmt.Fprintf(stdout, "Push completed\n") @@ -449,7 +449,7 @@ func (srv *Server) CmdPush(stdin io.ReadCloser, stdout io.Writer, args ...string return nil } fmt.Fprintf(stdout, "Pushing image %s..\n", img.Id) - err = srv.runtime.graph.PushImage(img, srv.runtime.authConfig) + err = srv.runtime.graph.PushImage(stdout, img, srv.runtime.authConfig) if err != nil { return err } @@ -482,7 +482,7 @@ func (srv *Server) CmdPull(stdin io.ReadCloser, stdout io.Writer, args ...string } // FIXME: Allow pull repo:tag fmt.Fprintf(stdout, "Pulling %s...\n", remote) - if err := srv.runtime.graph.PullRepository(remote, "", srv.runtime.repositories, srv.runtime.authConfig); err != nil { + if err := srv.runtime.graph.PullRepository(stdout, remote, "", srv.runtime.repositories, srv.runtime.authConfig); err != nil { return err } fmt.Fprintf(stdout, "Pull completed\n") diff --git a/registry.go b/registry.go index 4eb1e07cf0..309fe3c52c 100644 --- a/registry.go +++ b/registry.go @@ -19,7 +19,7 @@ const REGISTRY_ENDPOINT = auth.REGISTRY_SERVER + "/v1" func NewImgJson(src []byte) (*Image, error) { ret := &Image{} - fmt.Printf("Json string: {%s}\n", src) + Debugf("Json string: {%s}\n", src) // FIXME: Is there a cleaner way to "puryfy" the input json? src = []byte(strings.Replace(string(src), "null", "\"\"", -1)) @@ -161,10 +161,10 @@ func (graph *Graph) PullImage(imgId string, authConfig *auth.AuthConfig) error { } // FIXME: Handle the askedTag parameter -func (graph *Graph) PullRepository(remote, askedTag string, repositories *TagStore, authConfig *auth.AuthConfig) error { +func (graph *Graph) PullRepository(stdout io.Writer, remote, askedTag string, repositories *TagStore, authConfig *auth.AuthConfig) error { client := &http.Client{} - fmt.Printf("Pulling repo: %s\n", REGISTRY_ENDPOINT+"/users/"+remote) + fmt.Fprintf(stdout, "Pulling repo: %s\n", REGISTRY_ENDPOINT+"/users/"+remote) req, err := http.NewRequest("GET", REGISTRY_ENDPOINT+"/users/"+remote, nil) if err != nil { @@ -202,7 +202,7 @@ func (graph *Graph) PullRepository(remote, askedTag string, repositories *TagSto } // Push a local image to the registry with its history if needed -func (graph *Graph) PushImage(imgOrig *Image, authConfig *auth.AuthConfig) error { +func (graph *Graph) PushImage(stdout io.Writer, imgOrig *Image, authConfig *auth.AuthConfig) error { client := &http.Client{} // FIXME: Factorize the code @@ -214,7 +214,7 @@ func (graph *Graph) PushImage(imgOrig *Image, authConfig *auth.AuthConfig) error return fmt.Errorf("Error while retreiving the path for {%s}: %s", img.Id, err) } - Debugf("Pushing image [%s] on {%s}\n", img.Id, REGISTRY_ENDPOINT+"/images/"+img.Id+"/json") + fmt.Fprintf(stdout, "Pushing image [%s] on {%s}\n", img.Id, REGISTRY_ENDPOINT+"/images/"+img.Id+"/json") // FIXME: try json with UTF8 jsonData := strings.NewReader(string(jsonRaw)) @@ -231,11 +231,12 @@ func (graph *Graph) PushImage(imgOrig *Image, authConfig *auth.AuthConfig) error "Error: Internal server error trying to push image {%s} (json): %s", img.Id, err) } - fmt.Printf("Pushing return status: %d\n", res.StatusCode) + Debugf("Pushing return status: %d\n", res.StatusCode) switch res.StatusCode { case 204: // Case where the image is already on the Registry // FIXME: Do not be silent? + fmt.Fprintf(stdout, "The image %s is already up to date on the registry.\n", img.Id) return nil case 400: return fmt.Errorf("Error: Invalid Json") @@ -324,7 +325,7 @@ func (graph *Graph) pushTag(remote, revision, tag string, authConfig *auth.AuthC } return err } - fmt.Printf("Result of push tag: %d\n", res.StatusCode) + Debugf("Result of push tag: %d\n", res.StatusCode) switch res.StatusCode { default: return fmt.Errorf("Error %d\n", res.StatusCode) @@ -349,14 +350,14 @@ func (graph *Graph) LookupRemoteRepository(remote string, authConfig *auth.AuthC return true } -func (graph *Graph) pushPrimitive(remote, tag, imgId string, authConfig *auth.AuthConfig) error { +func (graph *Graph) pushPrimitive(stdout io.Writer, remote, tag, imgId string, authConfig *auth.AuthConfig) error { // CHeck if the local impage exists img, err := graph.Get(imgId) if err != nil { return err } // Push the image - if err = graph.PushImage(img, authConfig); err != nil { + if err = graph.PushImage(stdout, img, authConfig); err != nil { return err } // And then the tag @@ -368,7 +369,7 @@ func (graph *Graph) pushPrimitive(remote, tag, imgId string, authConfig *auth.Au // Push a repository to the registry. // Remote has the format '/ -func (graph *Graph) PushRepository(remote string, localRepo Repository, authConfig *auth.AuthConfig) error { +func (graph *Graph) PushRepository(stdout io.Writer, remote string, localRepo Repository, authConfig *auth.AuthConfig) error { // Check if the remote repository exists // FIXME: @lopter How to handle this? // if !graph.LookupRemoteRepository(remote, authConfig) { @@ -377,7 +378,7 @@ func (graph *Graph) PushRepository(remote string, localRepo Repository, authConf // For each image within the repo, push them for tag, imgId := range localRepo { - if err := graph.pushPrimitive(remote, tag, imgId, authConfig); err != nil { + if err := graph.pushPrimitive(stdout, remote, tag, imgId, authConfig); err != nil { // FIXME: Continue on error? return err }