mirror of https://github.com/docker/docs.git
Merge pull request #1462 from dotcloud/fix_build_events_output
Fix docker build and docker events output
This commit is contained in:
commit
25e7227c81
|
@ -422,7 +422,7 @@ func (srv *Server) pullImage(r *registry.Registry, out io.Writer, imgID, endpoin
|
||||||
// FIXME: Launch the getRemoteImage() in goroutines
|
// FIXME: Launch the getRemoteImage() in goroutines
|
||||||
for _, id := range history {
|
for _, id := range history {
|
||||||
if !srv.runtime.graph.Exists(id) {
|
if !srv.runtime.graph.Exists(id) {
|
||||||
out.Write(sf.FormatStatus(utils.TruncateID(id), "Pulling metadata"))
|
out.Write(sf.FormatProgress(utils.TruncateID(id), "Pulling", "metadata"))
|
||||||
imgJSON, imgSize, err := r.GetRemoteImageJSON(id, endpoint, token)
|
imgJSON, imgSize, err := r.GetRemoteImageJSON(id, endpoint, token)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// FIXME: Keep goging in case of error?
|
// FIXME: Keep goging in case of error?
|
||||||
|
@ -434,7 +434,7 @@ func (srv *Server) pullImage(r *registry.Registry, out io.Writer, imgID, endpoin
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the layer
|
// Get the layer
|
||||||
out.Write(sf.FormatStatus(utils.TruncateID(id), "Pulling fs layer"))
|
out.Write(sf.FormatProgress(utils.TruncateID(id), "Pulling", "fs layer"))
|
||||||
layer, err := r.GetRemoteImageLayer(img.ID, endpoint, token)
|
layer, err := r.GetRemoteImageLayer(img.ID, endpoint, token)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -500,7 +500,7 @@ func (srv *Server) pullRepository(r *registry.Registry, out io.Writer, localName
|
||||||
errors <- nil
|
errors <- nil
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
out.Write(sf.FormatStatus(utils.TruncateID(img.ID), "Pulling image (%s) from %s", img.Tag, localName))
|
out.Write(sf.FormatProgress(utils.TruncateID(img.ID), "Pulling", fmt.Sprintf("image (%s) from %s", img.Tag, localName)))
|
||||||
success := false
|
success := false
|
||||||
for _, ep := range repoData.Endpoints {
|
for _, ep := range repoData.Endpoints {
|
||||||
if err := srv.pullImage(r, out, img.ID, ep, repoData.Tokens, sf); err != nil {
|
if err := srv.pullImage(r, out, img.ID, ep, repoData.Tokens, sf); err != nil {
|
||||||
|
@ -716,11 +716,12 @@ func (srv *Server) pushImage(r *registry.Registry, out io.Writer, remote, imgID,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send the layer
|
// Send the layer
|
||||||
if checksum, err := r.PushImageLayerRegistry(imgData.ID, utils.ProgressReader(layerData, int(layerData.Size), out, sf.FormatProgress("", "Pushing", "%8v/%v (%v)"), sf, true), ep, token, jsonRaw); err != nil {
|
if checksum, err := r.PushImageLayerRegistry(imgData.ID, utils.ProgressReader(layerData, int(layerData.Size), out, sf.FormatProgress("", "Pushing", "%8v/%v (%v)"), sf, false), ep, token, jsonRaw); err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
} else {
|
} else {
|
||||||
imgData.Checksum = checksum
|
imgData.Checksum = checksum
|
||||||
}
|
}
|
||||||
|
out.Write(sf.FormatStatus("", ""))
|
||||||
|
|
||||||
// Send the checksum
|
// Send the checksum
|
||||||
if err := r.PushImageChecksumRegistry(imgData, ep, token); err != nil {
|
if err := r.PushImageChecksumRegistry(imgData, ep, token); err != nil {
|
||||||
|
|
|
@ -79,7 +79,6 @@ type progressReader struct {
|
||||||
func (r *progressReader) Read(p []byte) (n int, err error) {
|
func (r *progressReader) Read(p []byte) (n int, err error) {
|
||||||
read, err := io.ReadCloser(r.reader).Read(p)
|
read, err := io.ReadCloser(r.reader).Read(p)
|
||||||
r.readProgress += read
|
r.readProgress += read
|
||||||
|
|
||||||
updateEvery := 1024 * 512 //512kB
|
updateEvery := 1024 * 512 //512kB
|
||||||
if r.readTotal > 0 {
|
if r.readTotal > 0 {
|
||||||
// Update progress for every 1% read if 1% < 512kB
|
// Update progress for every 1% read if 1% < 512kB
|
||||||
|
@ -645,7 +644,6 @@ func (jm *JSONMessage) Display(out io.Writer) error {
|
||||||
}
|
}
|
||||||
return jm.Error
|
return jm.Error
|
||||||
}
|
}
|
||||||
fmt.Fprintf(out, "%c[2K", 27)
|
|
||||||
if jm.Time != 0 {
|
if jm.Time != 0 {
|
||||||
fmt.Fprintf(out, "[%s] ", time.Unix(jm.Time, 0))
|
fmt.Fprintf(out, "[%s] ", time.Unix(jm.Time, 0))
|
||||||
}
|
}
|
||||||
|
@ -653,28 +651,26 @@ func (jm *JSONMessage) Display(out io.Writer) error {
|
||||||
fmt.Fprintf(out, "%s: ", jm.ID)
|
fmt.Fprintf(out, "%s: ", jm.ID)
|
||||||
}
|
}
|
||||||
if jm.Progress != "" {
|
if jm.Progress != "" {
|
||||||
|
fmt.Fprintf(out, "%c[2K", 27)
|
||||||
fmt.Fprintf(out, "%s %s\r", jm.Status, jm.Progress)
|
fmt.Fprintf(out, "%s %s\r", jm.Status, jm.Progress)
|
||||||
} else {
|
} else {
|
||||||
fmt.Fprintf(out, "%s\r", jm.Status)
|
fmt.Fprintf(out, "%s\r\n", jm.Status)
|
||||||
}
|
|
||||||
if jm.ID == "" {
|
|
||||||
fmt.Fprintf(out, "\n")
|
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func DisplayJSONMessagesStream(in io.Reader, out io.Writer) error {
|
func DisplayJSONMessagesStream(in io.Reader, out io.Writer) error {
|
||||||
dec := json.NewDecoder(in)
|
dec := json.NewDecoder(in)
|
||||||
jm := JSONMessage{}
|
|
||||||
ids := make(map[string]int)
|
ids := make(map[string]int)
|
||||||
diff := 0
|
diff := 0
|
||||||
for {
|
for {
|
||||||
|
jm := JSONMessage{}
|
||||||
if err := dec.Decode(&jm); err == io.EOF {
|
if err := dec.Decode(&jm); err == io.EOF {
|
||||||
break
|
break
|
||||||
} else if err != nil {
|
} else if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if jm.ID != "" {
|
if jm.Progress != "" && jm.ID != "" {
|
||||||
line, ok := ids[jm.ID]
|
line, ok := ids[jm.ID]
|
||||||
if !ok {
|
if !ok {
|
||||||
line = len(ids)
|
line = len(ids)
|
||||||
|
|
Loading…
Reference in New Issue