mirror of
https://github.com/clearlinux/docker.git
synced 2026-09-06 13:41:36 +00:00
Remove Job from docker images
Also removes engine.Table Signed-off-by: Doug Davis <dug@us.ibm.com>
This commit is contained in:
+35
-37
@@ -24,6 +24,7 @@ import (
|
||||
"github.com/docker/docker/daemon"
|
||||
"github.com/docker/docker/daemon/networkdriver/bridge"
|
||||
"github.com/docker/docker/engine"
|
||||
"github.com/docker/docker/graph"
|
||||
"github.com/docker/docker/pkg/jsonmessage"
|
||||
"github.com/docker/docker/pkg/parsers"
|
||||
"github.com/docker/docker/pkg/parsers/filters"
|
||||
@@ -264,48 +265,40 @@ func getImagesJSON(eng *engine.Engine, version version.Version, w http.ResponseW
|
||||
return err
|
||||
}
|
||||
|
||||
var (
|
||||
err error
|
||||
outs *engine.Table
|
||||
job = eng.Job("images")
|
||||
)
|
||||
imagesConfig := graph.ImagesConfig{
|
||||
Filters: r.Form.Get("filters"),
|
||||
// FIXME this parameter could just be a match filter
|
||||
Filter: r.Form.Get("filter"),
|
||||
All: toBool(r.Form.Get("all")),
|
||||
}
|
||||
|
||||
job.Setenv("filters", r.Form.Get("filters"))
|
||||
// FIXME this parameter could just be a match filter
|
||||
job.Setenv("filter", r.Form.Get("filter"))
|
||||
job.Setenv("all", r.Form.Get("all"))
|
||||
images, err := getDaemon(eng).Repositories().Images(&imagesConfig)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if version.GreaterThanOrEqualTo("1.7") {
|
||||
streamJSON(job, w, false)
|
||||
} else if outs, err = job.Stdout.AddListTable(); err != nil {
|
||||
return err
|
||||
return writeJSON(w, http.StatusOK, images)
|
||||
}
|
||||
|
||||
if err := job.Run(); err != nil {
|
||||
return err
|
||||
}
|
||||
legacyImages := []types.LegacyImage{}
|
||||
|
||||
if version.LessThan("1.7") && outs != nil { // Convert to legacy format
|
||||
outsLegacy := engine.NewTable("Created", 0)
|
||||
for _, out := range outs.Data {
|
||||
for _, repoTag := range out.GetList("RepoTags") {
|
||||
repo, tag := parsers.ParseRepositoryTag(repoTag)
|
||||
outLegacy := &engine.Env{}
|
||||
outLegacy.Set("Repository", repo)
|
||||
outLegacy.SetJson("Tag", tag)
|
||||
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)
|
||||
for _, image := range images {
|
||||
for _, repoTag := range image.RepoTags {
|
||||
repo, tag := parsers.ParseRepositoryTag(repoTag)
|
||||
legacyImage := types.LegacyImage{
|
||||
Repository: repo,
|
||||
Tag: tag,
|
||||
ID: image.ID,
|
||||
Created: image.Created,
|
||||
Size: image.Size,
|
||||
VirtualSize: image.VirtualSize,
|
||||
}
|
||||
}
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
if _, err := outsLegacy.WriteListTo(w); err != nil {
|
||||
return err
|
||||
legacyImages = append(legacyImages, legacyImage)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
|
||||
return writeJSON(w, http.StatusOK, legacyImages)
|
||||
}
|
||||
|
||||
func getImagesViz(eng *engine.Engine, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
||||
@@ -488,8 +481,8 @@ func getContainersJSON(eng *engine.Engine, version version.Version, w http.Respo
|
||||
}
|
||||
|
||||
config := &daemon.ContainersConfig{
|
||||
All: r.Form.Get("all") == "1",
|
||||
Size: r.Form.Get("size") == "1",
|
||||
All: toBool(r.Form.Get("all")),
|
||||
Size: toBool(r.Form.Get("size")),
|
||||
Since: r.Form.Get("since"),
|
||||
Before: r.Form.Get("before"),
|
||||
Filters: r.Form.Get("filters"),
|
||||
@@ -1140,14 +1133,14 @@ func postBuild(eng *engine.Engine, version version.Version, w http.ResponseWrite
|
||||
job.Stdout.Add(utils.NewWriteFlusher(w))
|
||||
}
|
||||
|
||||
if r.FormValue("forcerm") == "1" && version.GreaterThanOrEqualTo("1.12") {
|
||||
if toBool(r.FormValue("forcerm")) && version.GreaterThanOrEqualTo("1.12") {
|
||||
job.Setenv("rm", "1")
|
||||
} else if r.FormValue("rm") == "" && version.GreaterThanOrEqualTo("1.12") {
|
||||
job.Setenv("rm", "1")
|
||||
} else {
|
||||
job.Setenv("rm", r.FormValue("rm"))
|
||||
}
|
||||
if r.FormValue("pull") == "1" && version.GreaterThanOrEqualTo("1.16") {
|
||||
if toBool(r.FormValue("pull")) && version.GreaterThanOrEqualTo("1.16") {
|
||||
job.Setenv("pull", "1")
|
||||
}
|
||||
job.Stdin.Add(r.Body)
|
||||
@@ -1557,3 +1550,8 @@ func ServeApi(job *engine.Job) error {
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func toBool(s string) bool {
|
||||
s = strings.ToLower(strings.TrimSpace(s))
|
||||
return !(s == "" || s == "0" || s == "no" || s == "false" || s == "none")
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ import (
|
||||
"io"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
"reflect"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
@@ -117,106 +116,6 @@ func TestGetInfo(t *testing.T) {
|
||||
assertContentType(r, "application/json", t)
|
||||
}
|
||||
|
||||
func TestGetImagesJSON(t *testing.T) {
|
||||
eng := engine.New()
|
||||
var called bool
|
||||
eng.Register("images", func(job *engine.Job) error {
|
||||
called = true
|
||||
v := createEnvFromGetImagesJSONStruct(sampleImage)
|
||||
if err := json.NewEncoder(job.Stdout).Encode(v); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
})
|
||||
r := serveRequest("GET", "/images/json", nil, eng, t)
|
||||
if !called {
|
||||
t.Fatal("handler was not called")
|
||||
}
|
||||
assertHttpNotError(r, t)
|
||||
assertContentType(r, "application/json", t)
|
||||
var observed getImagesJSONStruct
|
||||
if err := json.Unmarshal(r.Body.Bytes(), &observed); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !reflect.DeepEqual(observed, sampleImage) {
|
||||
t.Errorf("Expected %#v but got %#v", sampleImage, observed)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetImagesJSONFilter(t *testing.T) {
|
||||
eng := engine.New()
|
||||
filter := "nothing"
|
||||
eng.Register("images", func(job *engine.Job) error {
|
||||
filter = job.Getenv("filter")
|
||||
return nil
|
||||
})
|
||||
serveRequest("GET", "/images/json?filter=aaaa", nil, eng, t)
|
||||
if filter != "aaaa" {
|
||||
t.Errorf("%#v", filter)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetImagesJSONFilters(t *testing.T) {
|
||||
eng := engine.New()
|
||||
filter := "nothing"
|
||||
eng.Register("images", func(job *engine.Job) error {
|
||||
filter = job.Getenv("filters")
|
||||
return nil
|
||||
})
|
||||
serveRequest("GET", "/images/json?filters=nnnn", nil, eng, t)
|
||||
if filter != "nnnn" {
|
||||
t.Errorf("%#v", filter)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetImagesJSONAll(t *testing.T) {
|
||||
eng := engine.New()
|
||||
allFilter := "-1"
|
||||
eng.Register("images", func(job *engine.Job) error {
|
||||
allFilter = job.Getenv("all")
|
||||
return nil
|
||||
})
|
||||
serveRequest("GET", "/images/json?all=1", nil, eng, t)
|
||||
if allFilter != "1" {
|
||||
t.Errorf("%#v", allFilter)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetImagesJSONLegacyFormat(t *testing.T) {
|
||||
eng := engine.New()
|
||||
var called bool
|
||||
eng.Register("images", func(job *engine.Job) error {
|
||||
called = true
|
||||
images := []types.Image{
|
||||
createEnvFromGetImagesJSONStruct(sampleImage),
|
||||
}
|
||||
if err := json.NewEncoder(job.Stdout).Encode(images); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
})
|
||||
r := serveRequestUsingVersion("GET", "/images/json", "1.6", nil, eng, t)
|
||||
if !called {
|
||||
t.Fatal("handler was not called")
|
||||
}
|
||||
assertHttpNotError(r, t)
|
||||
assertContentType(r, "application/json", t)
|
||||
images := engine.NewTable("Created", 0)
|
||||
if _, err := images.ReadListFrom(r.Body.Bytes()); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if images.Len() != 1 {
|
||||
t.Fatalf("Expected 1 image, %d found", images.Len())
|
||||
}
|
||||
image := images.Data[0]
|
||||
if image.Get("Tag") != "test-tag" {
|
||||
t.Errorf("Expected tag 'test-tag', found '%s'", image.Get("Tag"))
|
||||
}
|
||||
if image.Get("Repository") != "test-name" {
|
||||
t.Errorf("Expected repository 'test-name', found '%s'", image.Get("Repository"))
|
||||
}
|
||||
}
|
||||
|
||||
func TestGetContainersByName(t *testing.T) {
|
||||
eng := engine.New()
|
||||
name := "container_name"
|
||||
|
||||
Reference in New Issue
Block a user