From e4afc379dcee66475f3becb34cd2675f3ee9279c Mon Sep 17 00:00:00 2001 From: Antonio Murdaca Date: Thu, 9 Apr 2015 13:59:50 +0200 Subject: [PATCH] Remove job from rmi Signed-off-by: Antonio Murdaca --- api/client/build.go | 2 +- api/server/server.go | 16 +++++++++++----- daemon/daemon.go | 2 -- daemon/image_delete.go | 27 +++++++++------------------ 4 files changed, 21 insertions(+), 26 deletions(-) diff --git a/api/client/build.go b/api/client/build.go index 53601763d6..f1bceb4a16 100644 --- a/api/client/build.go +++ b/api/client/build.go @@ -155,7 +155,7 @@ func (cli *DockerCli) CmdBuild(args ...string) error { // And canonicalize dockerfile name to a platform-independent one *dockerfileName, err = archive.CanonicalTarNameForPath(*dockerfileName) if err != nil { - return fmt.Errorf("Cannot canonicalize dockerfile path %s: %v", dockerfileName, err) + return fmt.Errorf("Cannot canonicalize dockerfile path %s: %v", *dockerfileName, err) } if _, err = os.Lstat(filename); os.IsNotExist(err) { diff --git a/api/server/server.go b/api/server/server.go index 6c20e1d73b..5b5ca1590a 100644 --- a/api/server/server.go +++ b/api/server/server.go @@ -878,12 +878,18 @@ func deleteImages(eng *engine.Engine, version version.Version, w http.ResponseWr if vars == nil { return fmt.Errorf("Missing parameter") } - var job = eng.Job("image_delete", vars["name"]) - streamJSON(job, w, false) - job.Setenv("force", r.Form.Get("force")) - job.Setenv("noprune", r.Form.Get("noprune")) - return job.Run() + d := getDaemon(eng) + name := vars["name"] + force := toBool(r.Form.Get("force")) + noprune := toBool(r.Form.Get("noprune")) + + list, err := d.ImageDelete(name, force, noprune) + if err != nil { + return err + } + + return writeJSON(w, http.StatusOK, list) } func postContainersStart(eng *engine.Engine, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error { diff --git a/daemon/daemon.go b/daemon/daemon.go index 44a59eac39..fbe6a2042c 100644 --- a/daemon/daemon.go +++ b/daemon/daemon.go @@ -115,7 +115,6 @@ type Daemon struct { // Install installs daemon capabilities to eng. func (daemon *Daemon) Install(eng *engine.Engine) error { - // FIXME: remove ImageDelete's dependency on Daemon, then move to graph/ for name, method := range map[string]engine.Handler{ "commit": daemon.ContainerCommit, "container_copy": daemon.ContainerCopy, @@ -135,7 +134,6 @@ func (daemon *Daemon) Install(eng *engine.Engine) error { "top": daemon.ContainerTop, "unpause": daemon.ContainerUnpause, "wait": daemon.ContainerWait, - "image_delete": daemon.ImageDelete, // FIXME: see above "execCreate": daemon.ContainerExecCreate, "execStart": daemon.ContainerExecStart, "execResize": daemon.ContainerExecResize, diff --git a/daemon/image_delete.go b/daemon/image_delete.go index 6323d323e4..a44eb1bfa6 100644 --- a/daemon/image_delete.go +++ b/daemon/image_delete.go @@ -1,12 +1,10 @@ package daemon import ( - "encoding/json" "fmt" "strings" "github.com/docker/docker/api/types" - "github.com/docker/docker/engine" "github.com/docker/docker/graph" "github.com/docker/docker/image" "github.com/docker/docker/pkg/parsers" @@ -14,26 +12,20 @@ import ( "github.com/docker/docker/utils" ) -func (daemon *Daemon) ImageDelete(job *engine.Job) error { - if n := len(job.Args); n != 1 { - return fmt.Errorf("Usage: %s IMAGE", job.Name) - } - +// FIXME: remove ImageDelete's dependency on Daemon, then move to graph/ +func (daemon *Daemon) ImageDelete(name string, force, noprune bool) ([]types.ImageDelete, error) { list := []types.ImageDelete{} - if err := daemon.DeleteImage(job.Eng, job.Args[0], &list, true, job.GetenvBool("force"), job.GetenvBool("noprune")); err != nil { - return err + if err := daemon.imgDeleteHelper(name, &list, true, force, noprune); err != nil { + return nil, err } if len(list) == 0 { - return fmt.Errorf("Conflict, %s wasn't deleted", job.Args[0]) + return nil, fmt.Errorf("Conflict, %s wasn't deleted", name) } - if err := json.NewEncoder(job.Stdout).Encode(list); err != nil { - return err - } - return nil + + return list, nil } -// FIXME: make this private and use the job instead -func (daemon *Daemon) DeleteImage(eng *engine.Engine, name string, list *[]types.ImageDelete, first, force, noprune bool) error { +func (daemon *Daemon) imgDeleteHelper(name string, list *[]types.ImageDelete, first, force, noprune bool) error { var ( repoName, tag string tags = []string{} @@ -124,9 +116,8 @@ func (daemon *Daemon) DeleteImage(eng *engine.Engine, name string, list *[]types Deleted: img.ID, }) daemon.EventsService.Log("delete", img.ID, "") - eng.Job("log", "delete", img.ID, "").Run() if img.Parent != "" && !noprune { - err := daemon.DeleteImage(eng, img.Parent, list, false, force, noprune) + err := daemon.imgDeleteHelper(img.Parent, list, false, force, noprune) if first { return err }