Signed-off-by: Antonio Murdaca <me@runcom.ninja>
| ... | ... |
@@ -155,7 +155,7 @@ func (cli *DockerCli) CmdBuild(args ...string) error {
|
| 155 | 155 |
// And canonicalize dockerfile name to a platform-independent one |
| 156 | 156 |
*dockerfileName, err = archive.CanonicalTarNameForPath(*dockerfileName) |
| 157 | 157 |
if err != nil {
|
| 158 |
- return fmt.Errorf("Cannot canonicalize dockerfile path %s: %v", dockerfileName, err)
|
|
| 158 |
+ return fmt.Errorf("Cannot canonicalize dockerfile path %s: %v", *dockerfileName, err)
|
|
| 159 | 159 |
} |
| 160 | 160 |
|
| 161 | 161 |
if _, err = os.Lstat(filename); os.IsNotExist(err) {
|
| ... | ... |
@@ -878,12 +878,18 @@ func deleteImages(eng *engine.Engine, version version.Version, w http.ResponseWr |
| 878 | 878 |
if vars == nil {
|
| 879 | 879 |
return fmt.Errorf("Missing parameter")
|
| 880 | 880 |
} |
| 881 |
- var job = eng.Job("image_delete", vars["name"])
|
|
| 882 |
- streamJSON(job, w, false) |
|
| 883 |
- job.Setenv("force", r.Form.Get("force"))
|
|
| 884 |
- job.Setenv("noprune", r.Form.Get("noprune"))
|
|
| 885 | 881 |
|
| 886 |
- return job.Run() |
|
| 882 |
+ d := getDaemon(eng) |
|
| 883 |
+ name := vars["name"] |
|
| 884 |
+ force := toBool(r.Form.Get("force"))
|
|
| 885 |
+ noprune := toBool(r.Form.Get("noprune"))
|
|
| 886 |
+ |
|
| 887 |
+ list, err := d.ImageDelete(name, force, noprune) |
|
| 888 |
+ if err != nil {
|
|
| 889 |
+ return err |
|
| 890 |
+ } |
|
| 891 |
+ |
|
| 892 |
+ return writeJSON(w, http.StatusOK, list) |
|
| 887 | 893 |
} |
| 888 | 894 |
|
| 889 | 895 |
func postContainersStart(eng *engine.Engine, version version.Version, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
| ... | ... |
@@ -115,7 +115,6 @@ type Daemon struct {
|
| 115 | 115 |
|
| 116 | 116 |
// Install installs daemon capabilities to eng. |
| 117 | 117 |
func (daemon *Daemon) Install(eng *engine.Engine) error {
|
| 118 |
- // FIXME: remove ImageDelete's dependency on Daemon, then move to graph/ |
|
| 119 | 118 |
for name, method := range map[string]engine.Handler{
|
| 120 | 119 |
"commit": daemon.ContainerCommit, |
| 121 | 120 |
"container_copy": daemon.ContainerCopy, |
| ... | ... |
@@ -135,7 +134,6 @@ func (daemon *Daemon) Install(eng *engine.Engine) error {
|
| 135 | 135 |
"top": daemon.ContainerTop, |
| 136 | 136 |
"unpause": daemon.ContainerUnpause, |
| 137 | 137 |
"wait": daemon.ContainerWait, |
| 138 |
- "image_delete": daemon.ImageDelete, // FIXME: see above |
|
| 139 | 138 |
"execCreate": daemon.ContainerExecCreate, |
| 140 | 139 |
"execStart": daemon.ContainerExecStart, |
| 141 | 140 |
"execResize": daemon.ContainerExecResize, |
| ... | ... |
@@ -1,12 +1,10 @@ |
| 1 | 1 |
package daemon |
| 2 | 2 |
|
| 3 | 3 |
import ( |
| 4 |
- "encoding/json" |
|
| 5 | 4 |
"fmt" |
| 6 | 5 |
"strings" |
| 7 | 6 |
|
| 8 | 7 |
"github.com/docker/docker/api/types" |
| 9 |
- "github.com/docker/docker/engine" |
|
| 10 | 8 |
"github.com/docker/docker/graph" |
| 11 | 9 |
"github.com/docker/docker/image" |
| 12 | 10 |
"github.com/docker/docker/pkg/parsers" |
| ... | ... |
@@ -14,26 +12,20 @@ import ( |
| 14 | 14 |
"github.com/docker/docker/utils" |
| 15 | 15 |
) |
| 16 | 16 |
|
| 17 |
-func (daemon *Daemon) ImageDelete(job *engine.Job) error {
|
|
| 18 |
- if n := len(job.Args); n != 1 {
|
|
| 19 |
- return fmt.Errorf("Usage: %s IMAGE", job.Name)
|
|
| 20 |
- } |
|
| 21 |
- |
|
| 17 |
+// FIXME: remove ImageDelete's dependency on Daemon, then move to graph/ |
|
| 18 |
+func (daemon *Daemon) ImageDelete(name string, force, noprune bool) ([]types.ImageDelete, error) {
|
|
| 22 | 19 |
list := []types.ImageDelete{}
|
| 23 |
- if err := daemon.DeleteImage(job.Eng, job.Args[0], &list, true, job.GetenvBool("force"), job.GetenvBool("noprune")); err != nil {
|
|
| 24 |
- return err |
|
| 20 |
+ if err := daemon.imgDeleteHelper(name, &list, true, force, noprune); err != nil {
|
|
| 21 |
+ return nil, err |
|
| 25 | 22 |
} |
| 26 | 23 |
if len(list) == 0 {
|
| 27 |
- return fmt.Errorf("Conflict, %s wasn't deleted", job.Args[0])
|
|
| 24 |
+ return nil, fmt.Errorf("Conflict, %s wasn't deleted", name)
|
|
| 28 | 25 |
} |
| 29 |
- if err := json.NewEncoder(job.Stdout).Encode(list); err != nil {
|
|
| 30 |
- return err |
|
| 31 |
- } |
|
| 32 |
- return nil |
|
| 26 |
+ |
|
| 27 |
+ return list, nil |
|
| 33 | 28 |
} |
| 34 | 29 |
|
| 35 |
-// FIXME: make this private and use the job instead |
|
| 36 |
-func (daemon *Daemon) DeleteImage(eng *engine.Engine, name string, list *[]types.ImageDelete, first, force, noprune bool) error {
|
|
| 30 |
+func (daemon *Daemon) imgDeleteHelper(name string, list *[]types.ImageDelete, first, force, noprune bool) error {
|
|
| 37 | 31 |
var ( |
| 38 | 32 |
repoName, tag string |
| 39 | 33 |
tags = []string{}
|
| ... | ... |
@@ -124,9 +116,8 @@ func (daemon *Daemon) DeleteImage(eng *engine.Engine, name string, list *[]types |
| 124 | 124 |
Deleted: img.ID, |
| 125 | 125 |
}) |
| 126 | 126 |
daemon.EventsService.Log("delete", img.ID, "")
|
| 127 |
- eng.Job("log", "delete", img.ID, "").Run()
|
|
| 128 | 127 |
if img.Parent != "" && !noprune {
|
| 129 |
- err := daemon.DeleteImage(eng, img.Parent, list, false, force, noprune) |
|
| 128 |
+ err := daemon.imgDeleteHelper(img.Parent, list, false, force, noprune) |
|
| 130 | 129 |
if first {
|
| 131 | 130 |
return err |
| 132 | 131 |
} |