fix error handling
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
This commit is contained in:
parent
177f658882
commit
f41e0cf048
4 changed files with 30 additions and 42 deletions
43
commands.go
43
commands.go
|
@ -823,13 +823,13 @@ func (cli *DockerCli) CmdRmi(args ...string) error {
|
|||
|
||||
var encounteredError error
|
||||
for _, name := range cmd.Args() {
|
||||
stream, _, err := cli.call("DELETE", "/images/"+name, nil, false)
|
||||
body, _, err := readBody(cli.call("DELETE", "/images/"+name, nil, false))
|
||||
if err != nil {
|
||||
fmt.Fprintf(cli.err, "%s\n", err)
|
||||
encounteredError = fmt.Errorf("Error: failed to remove one or more images")
|
||||
} else {
|
||||
outs := engine.NewTable("Created", 0)
|
||||
if _, err := outs.ReadListFrom(stream); err != nil {
|
||||
if _, err := outs.ReadListFrom(body); err != nil {
|
||||
fmt.Fprintf(cli.err, "%s\n", err)
|
||||
encounteredError = fmt.Errorf("Error: failed to remove one or more images")
|
||||
continue
|
||||
|
@ -859,16 +859,13 @@ func (cli *DockerCli) CmdHistory(args ...string) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
stream, _, err := cli.call("GET", "/images/"+cmd.Arg(0)+"/history", nil, false)
|
||||
if stream != nil {
|
||||
defer stream.Close()
|
||||
}
|
||||
body, _, err := readBody(cli.call("GET", "/images/"+cmd.Arg(0)+"/history", nil, false))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
outs := engine.NewTable("Created", 0)
|
||||
if _, err := outs.ReadListFrom(stream); err != nil {
|
||||
if _, err := outs.ReadListFrom(body); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -1139,16 +1136,13 @@ func (cli *DockerCli) CmdImages(args ...string) error {
|
|||
filter := cmd.Arg(0)
|
||||
|
||||
if *flViz || *flTree {
|
||||
stream, _, err := cli.call("GET", "/images/json?all=1", nil, false)
|
||||
if stream != nil {
|
||||
defer stream.Close()
|
||||
}
|
||||
body, _, err := readBody(cli.call("GET", "/images/json?all=1", nil, false))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
outs := engine.NewTable("Created", 0)
|
||||
if _, err := outs.ReadListFrom(stream); err != nil {
|
||||
if _, err := outs.ReadListFrom(body); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -1211,16 +1205,14 @@ func (cli *DockerCli) CmdImages(args ...string) error {
|
|||
v.Set("all", "1")
|
||||
}
|
||||
|
||||
stream, _, err := cli.call("GET", "/images/json?"+v.Encode(), nil, false)
|
||||
if stream != nil {
|
||||
defer stream.Close()
|
||||
}
|
||||
body, _, err := readBody(cli.call("GET", "/images/json?"+v.Encode(), nil, false))
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
outs := engine.NewTable("Created", 0)
|
||||
if _, err := outs.ReadListFrom(stream); err != nil {
|
||||
if _, err := outs.ReadListFrom(body); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -1532,16 +1524,14 @@ func (cli *DockerCli) CmdDiff(args ...string) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
stream, _, err := cli.call("GET", "/containers/"+cmd.Arg(0)+"/changes", nil, false)
|
||||
if stream != nil {
|
||||
defer stream.Close()
|
||||
}
|
||||
body, _, err := readBody(cli.call("GET", "/containers/"+cmd.Arg(0)+"/changes", nil, false))
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
outs := engine.NewTable("", 0)
|
||||
if _, err := outs.ReadListFrom(stream); err != nil {
|
||||
if _, err := outs.ReadListFrom(body); err != nil {
|
||||
return err
|
||||
}
|
||||
for _, change := range outs.Data {
|
||||
|
@ -1674,15 +1664,14 @@ func (cli *DockerCli) CmdSearch(args ...string) error {
|
|||
|
||||
v := url.Values{}
|
||||
v.Set("term", cmd.Arg(0))
|
||||
stream, _, err := cli.call("GET", "/images/search?"+v.Encode(), nil, true)
|
||||
if stream != nil {
|
||||
defer stream.Close()
|
||||
}
|
||||
|
||||
body, _, err := readBody(cli.call("GET", "/images/search?"+v.Encode(), nil, false))
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
outs := engine.NewTable("star_count", 0)
|
||||
if _, err := outs.ReadListFrom(stream); err != nil {
|
||||
if _, err := outs.ReadListFrom(body); err != nil {
|
||||
return err
|
||||
}
|
||||
w := tabwriter.NewWriter(cli.out, 10, 1, 3, ' ', 0)
|
||||
|
|
|
@ -5,7 +5,6 @@ import (
|
|||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
@ -325,15 +324,10 @@ func (t *Table) WriteTo(dst io.Writer) (n int64, err error) {
|
|||
return n, nil
|
||||
}
|
||||
|
||||
func (t *Table) ReadListFrom(src io.Reader) (n int64, err error) {
|
||||
func (t *Table) ReadListFrom(src []byte) (n int64, err error) {
|
||||
var array []interface{}
|
||||
|
||||
content, err := ioutil.ReadAll(src)
|
||||
if err != nil {
|
||||
return -1, err
|
||||
}
|
||||
|
||||
if err := json.Unmarshal(content, &array); err != nil {
|
||||
if err := json.Unmarshal(src, &array); err != nil {
|
||||
return -1, err
|
||||
}
|
||||
|
||||
|
@ -347,7 +341,7 @@ func (t *Table) ReadListFrom(src io.Reader) (n int64, err error) {
|
|||
}
|
||||
}
|
||||
|
||||
return int64(len(content)), nil
|
||||
return int64(len(src)), nil
|
||||
}
|
||||
|
||||
func (t *Table) ReadFrom(src io.Reader) (n int64, err error) {
|
||||
|
|
|
@ -5,6 +5,7 @@ import (
|
|||
"container/ring"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"sync"
|
||||
)
|
||||
|
||||
|
@ -228,7 +229,11 @@ func (o *Output) AddListTable() (dst *Table, err error) {
|
|||
o.tasks.Add(1)
|
||||
go func() {
|
||||
defer o.tasks.Done()
|
||||
if _, err := dst.ReadListFrom(src); err != nil {
|
||||
content, err := ioutil.ReadAll(src)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if _, err := dst.ReadListFrom(content); err != nil {
|
||||
return
|
||||
}
|
||||
}()
|
||||
|
|
|
@ -170,7 +170,7 @@ func TestGetImagesJSON(t *testing.T) {
|
|||
assertHttpNotError(r, t)
|
||||
|
||||
images := engine.NewTable("Created", 0)
|
||||
if _, err := images.ReadListFrom(r.Body); err != nil {
|
||||
if _, err := images.ReadListFrom(r.Body.Bytes()); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
|
@ -205,7 +205,7 @@ func TestGetImagesJSON(t *testing.T) {
|
|||
assertHttpNotError(r2, t)
|
||||
|
||||
images2 := engine.NewTable("ID", 0)
|
||||
if _, err := images2.ReadListFrom(r2.Body); err != nil {
|
||||
if _, err := images2.ReadListFrom(r2.Body.Bytes()); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
|
@ -238,7 +238,7 @@ func TestGetImagesJSON(t *testing.T) {
|
|||
assertHttpNotError(r3, t)
|
||||
|
||||
images3 := engine.NewTable("ID", 0)
|
||||
if _, err := images3.ReadListFrom(r3.Body); err != nil {
|
||||
if _, err := images3.ReadListFrom(r3.Body.Bytes()); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
|
@ -264,7 +264,7 @@ func TestGetImagesHistory(t *testing.T) {
|
|||
assertHttpNotError(r, t)
|
||||
|
||||
outs := engine.NewTable("Created", 0)
|
||||
if _, err := outs.ReadListFrom(r.Body); err != nil {
|
||||
if _, err := outs.ReadListFrom(r.Body.Bytes()); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if len(outs.Data) != 1 {
|
||||
|
@ -409,7 +409,7 @@ func TestGetContainersChanges(t *testing.T) {
|
|||
}
|
||||
assertHttpNotError(r, t)
|
||||
outs := engine.NewTable("", 0)
|
||||
if _, err := outs.ReadListFrom(r.Body); err != nil {
|
||||
if _, err := outs.ReadListFrom(r.Body.Bytes()); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue