From daad696e091c931c8f0bf210c65d90db27b0af74 Mon Sep 17 00:00:00 2001 From: He Simei Date: Sat, 25 Apr 2015 09:10:32 +0800 Subject: [PATCH] Fix error prompt for pull & import handler postImagesCreate. Signed-off-by: He Simei --- api/server/server.go | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/api/server/server.go b/api/server/server.go index cdc6c18154..65cfd8a963 100644 --- a/api/server/server.go +++ b/api/server/server.go @@ -740,8 +740,9 @@ func (s *Server) postImagesCreate(eng *engine.Engine, version version.Version, w } var ( - opErr error + err error useJSON = version.GreaterThan("1.0") + output = utils.NewWriteFlusher(w) ) if useJSON { @@ -763,11 +764,12 @@ func (s *Server) postImagesCreate(eng *engine.Engine, version version.Version, w Parallel: version.GreaterThan("1.3"), MetaHeaders: metaHeaders, AuthConfig: authConfig, - OutStream: utils.NewWriteFlusher(w), + OutStream: output, Json: useJSON, } - opErr = s.daemon.Repositories().Pull(image, tag, imagePullConfig) + err = s.daemon.Repositories().Pull(image, tag, imagePullConfig) + } else { //import if tag == "" { repo, tag = parsers.ParseRepositoryTag(repo) @@ -777,7 +779,7 @@ func (s *Server) postImagesCreate(eng *engine.Engine, version version.Version, w imageImportConfig := &graph.ImageImportConfig{ Changes: r.Form["changes"], InConfig: r.Body, - OutStream: utils.NewWriteFlusher(w), + OutStream: output, Json: useJSON, } @@ -787,15 +789,19 @@ func (s *Server) postImagesCreate(eng *engine.Engine, version version.Version, w } imageImportConfig.ContainerConfig = newConfig - opErr = s.daemon.Repositories().Import(src, repo, tag, imageImportConfig) - } + err = s.daemon.Repositories().Import(src, repo, tag, imageImportConfig) - if opErr != nil { + } + if err != nil { + if !output.Flushed() { + return err + } sf := streamformatter.NewStreamFormatter(useJSON) - return fmt.Errorf(string(sf.FormatError(opErr))) + output.Write(sf.FormatError(err)) } return nil + } func (s *Server) getImagesSearch(eng *engine.Engine, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error {