diff --git a/api/server/server.go b/api/server/server.go index 912af638ce..0c92b4b2a4 100644 --- a/api/server/server.go +++ b/api/server/server.go @@ -434,13 +434,13 @@ func getImagesHistory(eng *engine.Engine, version version.Version, w http.Respon return fmt.Errorf("Missing parameter") } - var job = eng.Job("history", vars["name"]) - streamJSON(job, w, false) - - if err := job.Run(); err != nil { + name := vars["name"] + history, err := getDaemon(eng).Repositories().History(name) + if err != nil { return err } - return nil + + return writeJSON(w, http.StatusOK, history) } func getContainersChanges(eng *engine.Engine, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { diff --git a/api/server/server_unit_test.go b/api/server/server_unit_test.go index 88dadab6f5..b5dd984b0c 100644 --- a/api/server/server_unit_test.go +++ b/api/server/server_unit_test.go @@ -219,36 +219,6 @@ func TestLogsNoStreams(t *testing.T) { } } -func TestGetImagesHistory(t *testing.T) { - eng := engine.New() - imageName := "docker-test-image" - var called bool - eng.Register("history", func(job *engine.Job) error { - called = true - if len(job.Args) == 0 { - t.Fatal("Job arguments is empty") - } - if job.Args[0] != imageName { - t.Fatalf("name != '%s': %#v", imageName, job.Args[0]) - } - v := &engine.Env{} - if _, err := v.WriteTo(job.Stdout); err != nil { - return err - } - return nil - }) - r := serveRequest("GET", "/images/"+imageName+"/history", nil, eng, t) - if !called { - t.Fatalf("handler was not called") - } - if r.Code != http.StatusOK { - t.Fatalf("Got status %d, expected %d", r.Code, http.StatusOK) - } - if r.HeaderMap.Get("Content-Type") != "application/json" { - t.Fatalf("%#v\n", r) - } -} - func TestGetImagesByName(t *testing.T) { eng := engine.New() name := "image_name" diff --git a/graph/history.go b/graph/history.go index 9c3efabaf5..6f8581b9f3 100644 --- a/graph/history.go +++ b/graph/history.go @@ -1,24 +1,17 @@ package graph import ( - "encoding/json" - "fmt" "strings" "github.com/docker/docker/api/types" - "github.com/docker/docker/engine" "github.com/docker/docker/image" "github.com/docker/docker/utils" ) -func (s *TagStore) CmdHistory(job *engine.Job) error { - if n := len(job.Args); n != 1 { - return fmt.Errorf("Usage: %s IMAGE", job.Name) - } - name := job.Args[0] +func (s *TagStore) History(name string) ([]*types.ImageHistory, error) { foundImage, err := s.LookupImage(name) if err != nil { - return err + return nil, err } lookupMap := make(map[string][]string) @@ -32,10 +25,10 @@ func (s *TagStore) CmdHistory(job *engine.Job) error { } } - history := []types.ImageHistory{} + history := []*types.ImageHistory{} err = foundImage.WalkHistory(func(img *image.Image) error { - history = append(history, types.ImageHistory{ + history = append(history, &types.ImageHistory{ ID: img.ID, Created: img.Created.Unix(), CreatedBy: strings.Join(img.ContainerConfig.Cmd, " "), @@ -46,9 +39,5 @@ func (s *TagStore) CmdHistory(job *engine.Job) error { return nil }) - if err = json.NewEncoder(job.Stdout).Encode(history); err != nil { - return err - } - - return nil + return history, err } diff --git a/graph/service.go b/graph/service.go index a51d106e13..46f83103db 100644 --- a/graph/service.go +++ b/graph/service.go @@ -17,7 +17,6 @@ func (s *TagStore) Install(eng *engine.Engine) error { "image_inspect": s.CmdLookup, "image_tarlayer": s.CmdTarLayer, "image_export": s.CmdImageExport, - "history": s.CmdHistory, "viz": s.CmdViz, "load": s.CmdLoad, "import": s.CmdImport,