github.com/containers/podman/v2@v2.2.2-0.20210501105131-c1e07d070c4c/pkg/api/handlers/compat/images_remove.go (about) 1 package compat 2 3 import ( 4 "net/http" 5 6 "github.com/containers/podman/v2/libpod" 7 "github.com/containers/podman/v2/pkg/api/handlers/utils" 8 "github.com/gorilla/schema" 9 "github.com/pkg/errors" 10 ) 11 12 func RemoveImage(w http.ResponseWriter, r *http.Request) { 13 decoder := r.Context().Value("decoder").(*schema.Decoder) 14 runtime := r.Context().Value("runtime").(*libpod.Runtime) 15 16 query := struct { 17 Force bool `schema:"force"` 18 NoPrune bool `schema:"noprune"` 19 }{ 20 // This is where you can override the golang default value for one of fields 21 } 22 23 if err := decoder.Decode(&query, r.URL.Query()); err != nil { 24 utils.Error(w, "Something went wrong.", http.StatusBadRequest, errors.Wrapf(err, "failed to parse parameters for %s", r.URL.String())) 25 return 26 } 27 if _, found := r.URL.Query()["noprune"]; found { 28 if query.NoPrune { 29 utils.UnSupportedParameter("noprune") 30 } 31 } 32 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 37 } 38 39 results, err := runtime.RemoveImage(r.Context(), newImage, query.Force) 40 if err != nil { 41 utils.Error(w, "Something went wrong.", http.StatusInternalServerError, err) 42 return 43 } 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 { 51 untagged := make(map[string]string, 1) 52 untagged["Untagged"] = u 53 response = append(response, untagged) 54 } 55 56 utils.WriteResponse(w, http.StatusOK, response) 57 58 }