Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
| ... | ... |
@@ -823,13 +823,13 @@ func (cli *DockerCli) CmdRmi(args ...string) error {
|
| 823 | 823 |
|
| 824 | 824 |
var encounteredError error |
| 825 | 825 |
for _, name := range cmd.Args() {
|
| 826 |
- stream, _, err := cli.call("DELETE", "/images/"+name, nil, false)
|
|
| 826 |
+ body, _, err := readBody(cli.call("DELETE", "/images/"+name, nil, false))
|
|
| 827 | 827 |
if err != nil {
|
| 828 | 828 |
fmt.Fprintf(cli.err, "%s\n", err) |
| 829 | 829 |
encounteredError = fmt.Errorf("Error: failed to remove one or more images")
|
| 830 | 830 |
} else {
|
| 831 | 831 |
outs := engine.NewTable("Created", 0)
|
| 832 |
- if _, err := outs.ReadListFrom(stream); err != nil {
|
|
| 832 |
+ if _, err := outs.ReadListFrom(body); err != nil {
|
|
| 833 | 833 |
fmt.Fprintf(cli.err, "%s\n", err) |
| 834 | 834 |
encounteredError = fmt.Errorf("Error: failed to remove one or more images")
|
| 835 | 835 |
continue |
| ... | ... |
@@ -859,16 +859,13 @@ func (cli *DockerCli) CmdHistory(args ...string) error {
|
| 859 | 859 |
return nil |
| 860 | 860 |
} |
| 861 | 861 |
|
| 862 |
- stream, _, err := cli.call("GET", "/images/"+cmd.Arg(0)+"/history", nil, false)
|
|
| 863 |
- if stream != nil {
|
|
| 864 |
- defer stream.Close() |
|
| 865 |
- } |
|
| 862 |
+ body, _, err := readBody(cli.call("GET", "/images/"+cmd.Arg(0)+"/history", nil, false))
|
|
| 866 | 863 |
if err != nil {
|
| 867 | 864 |
return err |
| 868 | 865 |
} |
| 869 | 866 |
|
| 870 | 867 |
outs := engine.NewTable("Created", 0)
|
| 871 |
- if _, err := outs.ReadListFrom(stream); err != nil {
|
|
| 868 |
+ if _, err := outs.ReadListFrom(body); err != nil {
|
|
| 872 | 869 |
return err |
| 873 | 870 |
} |
| 874 | 871 |
|
| ... | ... |
@@ -1139,16 +1136,13 @@ func (cli *DockerCli) CmdImages(args ...string) error {
|
| 1139 | 1139 |
filter := cmd.Arg(0) |
| 1140 | 1140 |
|
| 1141 | 1141 |
if *flViz || *flTree {
|
| 1142 |
- stream, _, err := cli.call("GET", "/images/json?all=1", nil, false)
|
|
| 1143 |
- if stream != nil {
|
|
| 1144 |
- defer stream.Close() |
|
| 1145 |
- } |
|
| 1142 |
+ body, _, err := readBody(cli.call("GET", "/images/json?all=1", nil, false))
|
|
| 1146 | 1143 |
if err != nil {
|
| 1147 | 1144 |
return err |
| 1148 | 1145 |
} |
| 1149 | 1146 |
|
| 1150 | 1147 |
outs := engine.NewTable("Created", 0)
|
| 1151 |
- if _, err := outs.ReadListFrom(stream); err != nil {
|
|
| 1148 |
+ if _, err := outs.ReadListFrom(body); err != nil {
|
|
| 1152 | 1149 |
return err |
| 1153 | 1150 |
} |
| 1154 | 1151 |
|
| ... | ... |
@@ -1211,16 +1205,14 @@ func (cli *DockerCli) CmdImages(args ...string) error {
|
| 1211 | 1211 |
v.Set("all", "1")
|
| 1212 | 1212 |
} |
| 1213 | 1213 |
|
| 1214 |
- stream, _, err := cli.call("GET", "/images/json?"+v.Encode(), nil, false)
|
|
| 1215 |
- if stream != nil {
|
|
| 1216 |
- defer stream.Close() |
|
| 1217 |
- } |
|
| 1214 |
+ body, _, err := readBody(cli.call("GET", "/images/json?"+v.Encode(), nil, false))
|
|
| 1215 |
+ |
|
| 1218 | 1216 |
if err != nil {
|
| 1219 | 1217 |
return err |
| 1220 | 1218 |
} |
| 1221 | 1219 |
|
| 1222 | 1220 |
outs := engine.NewTable("Created", 0)
|
| 1223 |
- if _, err := outs.ReadListFrom(stream); err != nil {
|
|
| 1221 |
+ if _, err := outs.ReadListFrom(body); err != nil {
|
|
| 1224 | 1222 |
return err |
| 1225 | 1223 |
} |
| 1226 | 1224 |
|
| ... | ... |
@@ -1532,16 +1524,14 @@ func (cli *DockerCli) CmdDiff(args ...string) error {
|
| 1532 | 1532 |
return nil |
| 1533 | 1533 |
} |
| 1534 | 1534 |
|
| 1535 |
- stream, _, err := cli.call("GET", "/containers/"+cmd.Arg(0)+"/changes", nil, false)
|
|
| 1536 |
- if stream != nil {
|
|
| 1537 |
- defer stream.Close() |
|
| 1538 |
- } |
|
| 1535 |
+ body, _, err := readBody(cli.call("GET", "/containers/"+cmd.Arg(0)+"/changes", nil, false))
|
|
| 1536 |
+ |
|
| 1539 | 1537 |
if err != nil {
|
| 1540 | 1538 |
return err |
| 1541 | 1539 |
} |
| 1542 | 1540 |
|
| 1543 | 1541 |
outs := engine.NewTable("", 0)
|
| 1544 |
- if _, err := outs.ReadListFrom(stream); err != nil {
|
|
| 1542 |
+ if _, err := outs.ReadListFrom(body); err != nil {
|
|
| 1545 | 1543 |
return err |
| 1546 | 1544 |
} |
| 1547 | 1545 |
for _, change := range outs.Data {
|
| ... | ... |
@@ -1674,15 +1664,14 @@ func (cli *DockerCli) CmdSearch(args ...string) error {
|
| 1674 | 1674 |
|
| 1675 | 1675 |
v := url.Values{}
|
| 1676 | 1676 |
v.Set("term", cmd.Arg(0))
|
| 1677 |
- stream, _, err := cli.call("GET", "/images/search?"+v.Encode(), nil, true)
|
|
| 1678 |
- if stream != nil {
|
|
| 1679 |
- defer stream.Close() |
|
| 1680 |
- } |
|
| 1677 |
+ |
|
| 1678 |
+ body, _, err := readBody(cli.call("GET", "/images/search?"+v.Encode(), nil, false))
|
|
| 1679 |
+ |
|
| 1681 | 1680 |
if err != nil {
|
| 1682 | 1681 |
return err |
| 1683 | 1682 |
} |
| 1684 | 1683 |
outs := engine.NewTable("star_count", 0)
|
| 1685 |
- if _, err := outs.ReadListFrom(stream); err != nil {
|
|
| 1684 |
+ if _, err := outs.ReadListFrom(body); err != nil {
|
|
| 1686 | 1685 |
return err |
| 1687 | 1686 |
} |
| 1688 | 1687 |
w := tabwriter.NewWriter(cli.out, 10, 1, 3, ' ', 0) |
| ... | ... |
@@ -5,7 +5,6 @@ import ( |
| 5 | 5 |
"encoding/json" |
| 6 | 6 |
"fmt" |
| 7 | 7 |
"io" |
| 8 |
- "io/ioutil" |
|
| 9 | 8 |
"sort" |
| 10 | 9 |
"strconv" |
| 11 | 10 |
"strings" |
| ... | ... |
@@ -325,15 +324,10 @@ func (t *Table) WriteTo(dst io.Writer) (n int64, err error) {
|
| 325 | 325 |
return n, nil |
| 326 | 326 |
} |
| 327 | 327 |
|
| 328 |
-func (t *Table) ReadListFrom(src io.Reader) (n int64, err error) {
|
|
| 328 |
+func (t *Table) ReadListFrom(src []byte) (n int64, err error) {
|
|
| 329 | 329 |
var array []interface{}
|
| 330 | 330 |
|
| 331 |
- content, err := ioutil.ReadAll(src) |
|
| 332 |
- if err != nil {
|
|
| 333 |
- return -1, err |
|
| 334 |
- } |
|
| 335 |
- |
|
| 336 |
- if err := json.Unmarshal(content, &array); err != nil {
|
|
| 331 |
+ if err := json.Unmarshal(src, &array); err != nil {
|
|
| 337 | 332 |
return -1, err |
| 338 | 333 |
} |
| 339 | 334 |
|
| ... | ... |
@@ -347,7 +341,7 @@ func (t *Table) ReadListFrom(src io.Reader) (n int64, err error) {
|
| 347 | 347 |
} |
| 348 | 348 |
} |
| 349 | 349 |
|
| 350 |
- return int64(len(content)), nil |
|
| 350 |
+ return int64(len(src)), nil |
|
| 351 | 351 |
} |
| 352 | 352 |
|
| 353 | 353 |
func (t *Table) ReadFrom(src io.Reader) (n int64, err error) {
|
| ... | ... |
@@ -5,6 +5,7 @@ import ( |
| 5 | 5 |
"container/ring" |
| 6 | 6 |
"fmt" |
| 7 | 7 |
"io" |
| 8 |
+ "io/ioutil" |
|
| 8 | 9 |
"sync" |
| 9 | 10 |
) |
| 10 | 11 |
|
| ... | ... |
@@ -228,7 +229,11 @@ func (o *Output) AddListTable() (dst *Table, err error) {
|
| 228 | 228 |
o.tasks.Add(1) |
| 229 | 229 |
go func() {
|
| 230 | 230 |
defer o.tasks.Done() |
| 231 |
- if _, err := dst.ReadListFrom(src); err != nil {
|
|
| 231 |
+ content, err := ioutil.ReadAll(src) |
|
| 232 |
+ if err != nil {
|
|
| 233 |
+ return |
|
| 234 |
+ } |
|
| 235 |
+ if _, err := dst.ReadListFrom(content); err != nil {
|
|
| 232 | 236 |
return |
| 233 | 237 |
} |
| 234 | 238 |
}() |
| ... | ... |
@@ -170,7 +170,7 @@ func TestGetImagesJSON(t *testing.T) {
|
| 170 | 170 |
assertHttpNotError(r, t) |
| 171 | 171 |
|
| 172 | 172 |
images := engine.NewTable("Created", 0)
|
| 173 |
- if _, err := images.ReadListFrom(r.Body); err != nil {
|
|
| 173 |
+ if _, err := images.ReadListFrom(r.Body.Bytes()); err != nil {
|
|
| 174 | 174 |
t.Fatal(err) |
| 175 | 175 |
} |
| 176 | 176 |
|
| ... | ... |
@@ -205,7 +205,7 @@ func TestGetImagesJSON(t *testing.T) {
|
| 205 | 205 |
assertHttpNotError(r2, t) |
| 206 | 206 |
|
| 207 | 207 |
images2 := engine.NewTable("ID", 0)
|
| 208 |
- if _, err := images2.ReadListFrom(r2.Body); err != nil {
|
|
| 208 |
+ if _, err := images2.ReadListFrom(r2.Body.Bytes()); err != nil {
|
|
| 209 | 209 |
t.Fatal(err) |
| 210 | 210 |
} |
| 211 | 211 |
|
| ... | ... |
@@ -238,7 +238,7 @@ func TestGetImagesJSON(t *testing.T) {
|
| 238 | 238 |
assertHttpNotError(r3, t) |
| 239 | 239 |
|
| 240 | 240 |
images3 := engine.NewTable("ID", 0)
|
| 241 |
- if _, err := images3.ReadListFrom(r3.Body); err != nil {
|
|
| 241 |
+ if _, err := images3.ReadListFrom(r3.Body.Bytes()); err != nil {
|
|
| 242 | 242 |
t.Fatal(err) |
| 243 | 243 |
} |
| 244 | 244 |
|
| ... | ... |
@@ -264,7 +264,7 @@ func TestGetImagesHistory(t *testing.T) {
|
| 264 | 264 |
assertHttpNotError(r, t) |
| 265 | 265 |
|
| 266 | 266 |
outs := engine.NewTable("Created", 0)
|
| 267 |
- if _, err := outs.ReadListFrom(r.Body); err != nil {
|
|
| 267 |
+ if _, err := outs.ReadListFrom(r.Body.Bytes()); err != nil {
|
|
| 268 | 268 |
t.Fatal(err) |
| 269 | 269 |
} |
| 270 | 270 |
if len(outs.Data) != 1 {
|
| ... | ... |
@@ -409,7 +409,7 @@ func TestGetContainersChanges(t *testing.T) {
|
| 409 | 409 |
} |
| 410 | 410 |
assertHttpNotError(r, t) |
| 411 | 411 |
outs := engine.NewTable("", 0)
|
| 412 |
- if _, err := outs.ReadListFrom(r.Body); err != nil {
|
|
| 412 |
+ if _, err := outs.ReadListFrom(r.Body.Bytes()); err != nil {
|
|
| 413 | 413 |
t.Fatal(err) |
| 414 | 414 |
} |
| 415 | 415 |
|