@@ -4,7 +4,10 @@ import (
4
4
"net/http"
5
5
6
6
"github.com/containers/podman/v3/libpod"
7
+ "github.com/containers/podman/v3/libpod/define"
7
8
"github.com/containers/podman/v3/pkg/api/handlers/utils"
9
+ "github.com/containers/podman/v3/pkg/domain/entities"
10
+ "github.com/containers/podman/v3/pkg/domain/infra/abi"
8
11
"github.com/gorilla/schema"
9
12
"github.com/pkg/errors"
10
13
)
@@ -30,28 +33,32 @@ func RemoveImage(w http.ResponseWriter, r *http.Request) {
30
33
}
31
34
}
32
35
name := utils .GetName (r )
33
- newImage , err := runtime . ImageRuntime (). NewFromLocal ( name )
34
- if err != nil {
35
- utils . ImageNotFound ( w , name , errors . Wrapf ( err , "failed to find image %s" , name ))
36
- return
36
+ imageEngine := abi. ImageEngine { Libpod : runtime }
37
+
38
+ options := entities. ImageRemoveOptions {
39
+ Force : query . Force ,
37
40
}
41
+ report , rmerrors := imageEngine .Remove (r .Context (), []string {name }, options )
42
+ if len (rmerrors ) > 0 && rmerrors [0 ] != nil {
43
+ err := rmerrors [0 ]
44
+ if errors .Cause (err ) == define .ErrNoSuchImage {
45
+ utils .ImageNotFound (w , name , errors .Wrapf (err , "failed to find image %s" , name ))
46
+ return
47
+ }
38
48
39
- results , err := runtime .RemoveImage (r .Context (), newImage , query .Force )
40
- if err != nil {
41
49
utils .Error (w , "Something went wrong." , http .StatusInternalServerError , err )
42
50
return
43
51
}
44
-
45
- response := make ([] map [ string ] string , 0 , len ( results . Untagged ) + 1 )
46
- deleted := make (map [string ]string , 1 )
47
- deleted ["Deleted" ] = results . Deleted
48
- response = append (response , deleted )
49
-
50
- for _ , u := range results .Untagged {
52
+ response := make ([] map [ string ] string , 0 , len ( report . Untagged ) + 1 )
53
+ for _ , d := range report . Deleted {
54
+ deleted := make (map [string ]string , 1 )
55
+ deleted ["Deleted" ] = d
56
+ response = append (response , deleted )
57
+ }
58
+ for _ , u := range report .Untagged {
51
59
untagged := make (map [string ]string , 1 )
52
60
untagged ["Untagged" ] = u
53
61
response = append (response , untagged )
54
62
}
55
-
56
63
utils .WriteResponse (w , http .StatusOK , response )
57
64
}
0 commit comments