Skip to content

Commit 16ca6a1

Browse files
committed
move legacy stuff outside the job
Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
1 parent aca1270 commit 16ca6a1

File tree

6 files changed

+58
-44
lines changed

6 files changed

+58
-44
lines changed

api.go

Lines changed: 44 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"fmt"
1111
"github.com/dotcloud/docker/archive"
1212
"github.com/dotcloud/docker/auth"
13+
"github.com/dotcloud/docker/engine"
1314
"github.com/dotcloud/docker/pkg/systemd"
1415
"github.com/dotcloud/docker/utils"
1516
"github.com/gorilla/mux"
@@ -181,16 +182,54 @@ func getImagesJSON(srv *Server, version float64, w http.ResponseWriter, r *http.
181182
if err := parseForm(r); err != nil {
182183
return err
183184
}
184-
job := srv.Eng.Job("images")
185+
186+
var (
187+
buffer *bytes.Buffer
188+
job = srv.Eng.Job("images")
189+
)
190+
185191
job.Setenv("filter", r.Form.Get("filter"))
186192
job.Setenv("all", r.Form.Get("all"))
187-
job.SetenvBool("list", version <= 1.8)
188-
job.SetenvBool("legacy", version <= 1.7)
189-
job.Stdout.Add(w)
190-
w.WriteHeader(http.StatusOK)
193+
194+
if version >= 1.9 {
195+
job.Stdout.Add(w)
196+
} else {
197+
buffer = bytes.NewBuffer(nil)
198+
job.Stdout.Add(buffer)
199+
}
200+
191201
if err := job.Run(); err != nil {
192202
return err
193203
}
204+
205+
if version < 1.9 { // Send as a valide JSON array
206+
outs := engine.NewTable("Created", 0)
207+
if _, err := outs.ReadFrom(buffer); err != nil {
208+
return err
209+
}
210+
if version < 1.8 { // Convert to legacy format
211+
outsLegacy := engine.NewTable("Created", 0)
212+
for _, out := range outs.Data {
213+
for _, repoTag := range out.GetList("RepoTags") {
214+
parts := strings.Split(repoTag, ":")
215+
outLegacy := &engine.Env{}
216+
outLegacy.Set("Repository", parts[0])
217+
outLegacy.Set("Tag", parts[1])
218+
outLegacy.Set("ID", out.Get("ID"))
219+
outLegacy.SetInt64("Created", out.GetInt64("Created"))
220+
outLegacy.SetInt64("Size", out.GetInt64("Size"))
221+
outLegacy.SetInt64("VirtualSize", out.GetInt64("VirtualSize"))
222+
outsLegacy.Add(outLegacy)
223+
}
224+
}
225+
if _, err := outsLegacy.WriteListTo(w); err != nil {
226+
return err
227+
}
228+
} else if _, err := outs.WriteListTo(w); err != nil {
229+
return err
230+
}
231+
}
232+
194233
return nil
195234
}
196235

engine/table_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package engine
22

33
import (
4-
"testing"
54
"bytes"
65
"encoding/json"
6+
"testing"
77
)
88

99
func TestTableWriteTo(t *testing.T) {
@@ -19,7 +19,7 @@ func TestTableWriteTo(t *testing.T) {
1919
if err := json.Unmarshal(buf.Bytes(), &output); err != nil {
2020
t.Fatal(err)
2121
}
22-
if len(output) != 1 {
22+
if len(output) != 1 {
2323
t.Fatalf("Incorrect output: %v", output)
2424
}
2525
if val, exists := output["foo"]; !exists || val != "bar" {

registry/registry.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ func pingRegistryEndpoint(endpoint string) (bool, error) {
5959
// versions of the registry
6060
if standalone == "" {
6161
return true, nil
62-
// Accepted values are "true" (case-insensitive) and "1".
62+
// Accepted values are "true" (case-insensitive) and "1".
6363
} else if strings.EqualFold(standalone, "true") || standalone == "1" {
6464
return true, nil
6565
}

server.go

Lines changed: 6 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -601,27 +601,12 @@ func (srv *Server) Images(job *engine.Job) engine.Status {
601601
}
602602

603603
if out, exists := lookup[id]; exists {
604-
if job.GetenvBool("legacy") {
605-
out2 := &engine.Env{}
606-
out2.Set("Repository", name)
607-
out2.Set("Tag", tag)
608-
out2.Set("ID", out.Get("ID"))
609-
out2.SetInt64("Created", out.GetInt64("Created"))
610-
out2.SetInt64("Size", out.GetInt64("Size"))
611-
out2.SetInt64("VirtualSize", out.GetInt64("VirtualSize"))
612-
} else {
613-
out.SetList("RepoTags", append(out.GetList("RepoTags"), fmt.Sprintf("%s:%s", name, tag)))
614-
}
604+
out.SetList("RepoTags", append(out.GetList("RepoTags"), fmt.Sprintf("%s:%s", name, tag)))
615605
} else {
616606
out := &engine.Env{}
617607
delete(allImages, id)
618-
if job.GetenvBool("legacy") {
619-
out.Set("Repository", name)
620-
out.Set("Tag", tag)
621-
} else {
622-
out.Set("ParentId", image.Parent)
623-
out.SetList("RepoTags", []string{fmt.Sprintf("%s:%s", name, tag)})
624-
}
608+
out.Set("ParentId", image.Parent)
609+
out.SetList("RepoTags", []string{fmt.Sprintf("%s:%s", name, tag)})
625610
out.Set("ID", image.ID)
626611
out.SetInt64("Created", image.Created.Unix())
627612
out.SetInt64("Size", image.Size)
@@ -641,13 +626,8 @@ func (srv *Server) Images(job *engine.Job) engine.Status {
641626
if job.Getenv("filter") == "" {
642627
for _, image := range allImages {
643628
out := &engine.Env{}
644-
if job.GetenvBool("legacy") {
645-
out.Set("Repository", "<none>")
646-
out.Set("Tag", "<none>")
647-
} else {
648-
out.Set("ParentId", image.Parent)
649-
out.SetList("RepoTags", []string{"<none>:<none>"})
650-
}
629+
out.Set("ParentId", image.Parent)
630+
out.SetList("RepoTags", []string{"<none>:<none>"})
651631
out.Set("ID", image.ID)
652632
out.SetInt64("Created", image.Created.Unix())
653633
out.SetInt64("Size", image.Size)
@@ -657,12 +637,7 @@ func (srv *Server) Images(job *engine.Job) engine.Status {
657637
}
658638

659639
outs.ReverseSort()
660-
if job.GetenvBool("list") {
661-
if _, err := outs.WriteListTo(job.Stdout); err != nil {
662-
job.Errorf("%s", err)
663-
return engine.StatusErr
664-
}
665-
} else if _, err := outs.WriteTo(job.Stdout); err != nil {
640+
if _, err := outs.WriteTo(job.Stdout); err != nil {
666641
job.Errorf("%s", err)
667642
return engine.StatusErr
668643
}

vendor/src/github.com/gorilla/context/context.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ func Purge(maxAge int) int {
9292
datat = make(map[*http.Request]int64)
9393
} else {
9494
min := time.Now().Unix() - int64(maxAge)
95-
for r, _ := range data {
95+
for r := range data {
9696
if datat[r] < min {
9797
clear(r)
9898
count++

vendor/src/github.com/gorilla/mux/old_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,8 @@ func TestRouteMatchers(t *testing.T) {
9696
method = "GET"
9797
headers = map[string]string{"X-Requested-With": "XMLHttpRequest"}
9898
resultVars = map[bool]map[string]string{
99-
true: map[string]string{"var1": "www", "var2": "product", "var3": "42"},
100-
false: map[string]string{},
99+
true: {"var1": "www", "var2": "product", "var3": "42"},
100+
false: {},
101101
}
102102
}
103103

@@ -110,8 +110,8 @@ func TestRouteMatchers(t *testing.T) {
110110
method = "POST"
111111
headers = map[string]string{"Content-Type": "application/json"}
112112
resultVars = map[bool]map[string]string{
113-
true: map[string]string{"var4": "google", "var5": "product", "var6": "42"},
114-
false: map[string]string{},
113+
true: {"var4": "google", "var5": "product", "var6": "42"},
114+
false: {},
115115
}
116116
}
117117

0 commit comments

Comments
 (0)