1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

move legacy stuff outside the job

Docker-DCO-1.1-Signed-off-by: Victor Vieux <victor.vieux@docker.com> (github: vieux)
This commit is contained in:
Victor Vieux 2014-01-13 14:55:31 -08:00
parent aca1270104
commit 16ca6a1c12
6 changed files with 58 additions and 44 deletions

49
api.go
View file

@ -10,6 +10,7 @@ import (
"fmt"
"github.com/dotcloud/docker/archive"
"github.com/dotcloud/docker/auth"
"github.com/dotcloud/docker/engine"
"github.com/dotcloud/docker/pkg/systemd"
"github.com/dotcloud/docker/utils"
"github.com/gorilla/mux"
@ -181,16 +182,54 @@ func getImagesJSON(srv *Server, version float64, w http.ResponseWriter, r *http.
if err := parseForm(r); err != nil {
return err
}
job := srv.Eng.Job("images")
var (
buffer *bytes.Buffer
job = srv.Eng.Job("images")
)
job.Setenv("filter", r.Form.Get("filter"))
job.Setenv("all", r.Form.Get("all"))
job.SetenvBool("list", version <= 1.8)
job.SetenvBool("legacy", version <= 1.7)
job.Stdout.Add(w)
w.WriteHeader(http.StatusOK)
if version >= 1.9 {
job.Stdout.Add(w)
} else {
buffer = bytes.NewBuffer(nil)
job.Stdout.Add(buffer)
}
if err := job.Run(); err != nil {
return err
}
if version < 1.9 { // Send as a valide JSON array
outs := engine.NewTable("Created", 0)
if _, err := outs.ReadFrom(buffer); err != nil {
return err
}
if version < 1.8 { // Convert to legacy format
outsLegacy := engine.NewTable("Created", 0)
for _, out := range outs.Data {
for _, repoTag := range out.GetList("RepoTags") {
parts := strings.Split(repoTag, ":")
outLegacy := &engine.Env{}
outLegacy.Set("Repository", parts[0])
outLegacy.Set("Tag", parts[1])
outLegacy.Set("ID", out.Get("ID"))
outLegacy.SetInt64("Created", out.GetInt64("Created"))
outLegacy.SetInt64("Size", out.GetInt64("Size"))
outLegacy.SetInt64("VirtualSize", out.GetInt64("VirtualSize"))
outsLegacy.Add(outLegacy)
}
}
if _, err := outsLegacy.WriteListTo(w); err != nil {
return err
}
} else if _, err := outs.WriteListTo(w); err != nil {
return err
}
}
return nil
}

View file

@ -1,9 +1,9 @@
package engine
import (
"testing"
"bytes"
"encoding/json"
"testing"
)
func TestTableWriteTo(t *testing.T) {
@ -19,7 +19,7 @@ func TestTableWriteTo(t *testing.T) {
if err := json.Unmarshal(buf.Bytes(), &output); err != nil {
t.Fatal(err)
}
if len(output) != 1 {
if len(output) != 1 {
t.Fatalf("Incorrect output: %v", output)
}
if val, exists := output["foo"]; !exists || val != "bar" {

View file

@ -59,7 +59,7 @@ func pingRegistryEndpoint(endpoint string) (bool, error) {
// versions of the registry
if standalone == "" {
return true, nil
// Accepted values are "true" (case-insensitive) and "1".
// Accepted values are "true" (case-insensitive) and "1".
} else if strings.EqualFold(standalone, "true") || standalone == "1" {
return true, nil
}

View file

@ -601,27 +601,12 @@ func (srv *Server) Images(job *engine.Job) engine.Status {
}
if out, exists := lookup[id]; exists {
if job.GetenvBool("legacy") {
out2 := &engine.Env{}
out2.Set("Repository", name)
out2.Set("Tag", tag)
out2.Set("ID", out.Get("ID"))
out2.SetInt64("Created", out.GetInt64("Created"))
out2.SetInt64("Size", out.GetInt64("Size"))
out2.SetInt64("VirtualSize", out.GetInt64("VirtualSize"))
} else {
out.SetList("RepoTags", append(out.GetList("RepoTags"), fmt.Sprintf("%s:%s", name, tag)))
}
out.SetList("RepoTags", append(out.GetList("RepoTags"), fmt.Sprintf("%s:%s", name, tag)))
} else {
out := &engine.Env{}
delete(allImages, id)
if job.GetenvBool("legacy") {
out.Set("Repository", name)
out.Set("Tag", tag)
} else {
out.Set("ParentId", image.Parent)
out.SetList("RepoTags", []string{fmt.Sprintf("%s:%s", name, tag)})
}
out.Set("ParentId", image.Parent)
out.SetList("RepoTags", []string{fmt.Sprintf("%s:%s", name, tag)})
out.Set("ID", image.ID)
out.SetInt64("Created", image.Created.Unix())
out.SetInt64("Size", image.Size)
@ -641,13 +626,8 @@ func (srv *Server) Images(job *engine.Job) engine.Status {
if job.Getenv("filter") == "" {
for _, image := range allImages {
out := &engine.Env{}
if job.GetenvBool("legacy") {
out.Set("Repository", "<none>")
out.Set("Tag", "<none>")
} else {
out.Set("ParentId", image.Parent)
out.SetList("RepoTags", []string{"<none>:<none>"})
}
out.Set("ParentId", image.Parent)
out.SetList("RepoTags", []string{"<none>:<none>"})
out.Set("ID", image.ID)
out.SetInt64("Created", image.Created.Unix())
out.SetInt64("Size", image.Size)
@ -657,12 +637,7 @@ func (srv *Server) Images(job *engine.Job) engine.Status {
}
outs.ReverseSort()
if job.GetenvBool("list") {
if _, err := outs.WriteListTo(job.Stdout); err != nil {
job.Errorf("%s", err)
return engine.StatusErr
}
} else if _, err := outs.WriteTo(job.Stdout); err != nil {
if _, err := outs.WriteTo(job.Stdout); err != nil {
job.Errorf("%s", err)
return engine.StatusErr
}

View file

@ -92,7 +92,7 @@ func Purge(maxAge int) int {
datat = make(map[*http.Request]int64)
} else {
min := time.Now().Unix() - int64(maxAge)
for r, _ := range data {
for r := range data {
if datat[r] < min {
clear(r)
count++

View file

@ -96,8 +96,8 @@ func TestRouteMatchers(t *testing.T) {
method = "GET"
headers = map[string]string{"X-Requested-With": "XMLHttpRequest"}
resultVars = map[bool]map[string]string{
true: map[string]string{"var1": "www", "var2": "product", "var3": "42"},
false: map[string]string{},
true: {"var1": "www", "var2": "product", "var3": "42"},
false: {},
}
}
@ -110,8 +110,8 @@ func TestRouteMatchers(t *testing.T) {
method = "POST"
headers = map[string]string{"Content-Type": "application/json"}
resultVars = map[bool]map[string]string{
true: map[string]string{"var4": "google", "var5": "product", "var6": "42"},
false: map[string]string{},
true: {"var4": "google", "var5": "product", "var6": "42"},
false: {},
}
}