From bd46934d5ad676fce102103ccff528505a07d27d Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Tue, 5 Aug 2014 04:50:25 +0000 Subject: [PATCH] Move "image_history" to graph/history.go Signed-off-by: Solomon Hykes Upstream-commit: 55235e121eb2924488508f70b8f30e0e9905d85e Component: engine --- components/engine/graph/history.go | 46 ++++++++++++++++++++++++++++++ components/engine/graph/service.go | 1 + components/engine/server/image.go | 37 ------------------------ components/engine/server/init.go | 1 - 4 files changed, 47 insertions(+), 38 deletions(-) create mode 100644 components/engine/graph/history.go diff --git a/components/engine/graph/history.go b/components/engine/graph/history.go new file mode 100644 index 0000000000..2030c4c789 --- /dev/null +++ b/components/engine/graph/history.go @@ -0,0 +1,46 @@ +package graph + +import ( + "strings" + + "github.com/docker/docker/engine" + "github.com/docker/docker/image" +) + +func (s *TagStore) CmdHistory(job *engine.Job) engine.Status { + if n := len(job.Args); n != 1 { + return job.Errorf("Usage: %s IMAGE", job.Name) + } + name := job.Args[0] + foundImage, err := s.LookupImage(name) + if err != nil { + return job.Error(err) + } + + lookupMap := make(map[string][]string) + for name, repository := range s.Repositories { + for tag, id := range repository { + // If the ID already has a reverse lookup, do not update it unless for "latest" + if _, exists := lookupMap[id]; !exists { + lookupMap[id] = []string{} + } + lookupMap[id] = append(lookupMap[id], name+":"+tag) + } + } + + outs := engine.NewTable("Created", 0) + err = foundImage.WalkHistory(func(img *image.Image) error { + out := &engine.Env{} + out.Set("Id", img.ID) + out.SetInt64("Created", img.Created.Unix()) + out.Set("CreatedBy", strings.Join(img.ContainerConfig.Cmd, " ")) + out.SetList("Tags", lookupMap[img.ID]) + out.SetInt64("Size", img.Size) + outs.Add(out) + return nil + }) + if _, err := outs.WriteListTo(job.Stdout); err != nil { + return job.Error(err) + } + return engine.StatusOK +} diff --git a/components/engine/graph/service.go b/components/engine/graph/service.go index a2642cce8c..bab02c3981 100644 --- a/components/engine/graph/service.go +++ b/components/engine/graph/service.go @@ -16,6 +16,7 @@ func (s *TagStore) Install(eng *engine.Engine) error { eng.Register("image_inspect", s.CmdLookup) eng.Register("image_tarlayer", s.CmdTarLayer) eng.Register("image_export", s.CmdImageExport) + eng.Register("history", s.CmdHistory) return nil } diff --git a/components/engine/server/image.go b/components/engine/server/image.go index 37060dd009..99b8e62e69 100644 --- a/components/engine/server/image.go +++ b/components/engine/server/image.go @@ -335,43 +335,6 @@ func (srv *Server) Images(job *engine.Job) engine.Status { return engine.StatusOK } -func (srv *Server) ImageHistory(job *engine.Job) engine.Status { - if n := len(job.Args); n != 1 { - return job.Errorf("Usage: %s IMAGE", job.Name) - } - name := job.Args[0] - foundImage, err := srv.daemon.Repositories().LookupImage(name) - if err != nil { - return job.Error(err) - } - - lookupMap := make(map[string][]string) - for name, repository := range srv.daemon.Repositories().Repositories { - for tag, id := range repository { - // If the ID already has a reverse lookup, do not update it unless for "latest" - if _, exists := lookupMap[id]; !exists { - lookupMap[id] = []string{} - } - lookupMap[id] = append(lookupMap[id], name+":"+tag) - } - } - - outs := engine.NewTable("Created", 0) - err = foundImage.WalkHistory(func(img *image.Image) error { - out := &engine.Env{} - out.Set("Id", img.ID) - out.SetInt64("Created", img.Created.Unix()) - out.Set("CreatedBy", strings.Join(img.ContainerConfig.Cmd, " ")) - out.SetList("Tags", lookupMap[img.ID]) - out.SetInt64("Size", img.Size) - outs.Add(out) - return nil - }) - if _, err := outs.WriteListTo(job.Stdout); err != nil { - return job.Error(err) - } - return engine.StatusOK -} func (srv *Server) ImageTag(job *engine.Job) engine.Status { if len(job.Args) != 2 && len(job.Args) != 3 { return job.Errorf("Usage: %s IMAGE REPOSITORY [TAG]\n", job.Name) diff --git a/components/engine/server/init.go b/components/engine/server/init.go index 760e9dbefd..6ae1329387 100644 --- a/components/engine/server/init.go +++ b/components/engine/server/init.go @@ -89,7 +89,6 @@ func InitServer(job *engine.Job) engine.Status { "tag": srv.ImageTag, // FIXME merge with "image_tag" "info": srv.DockerInfo, "images": srv.Images, - "history": srv.ImageHistory, "viz": srv.ImagesViz, "log": srv.Log, "load": srv.ImageLoad,