github.com/hanks177/podman/v4@v4.1.3-0.20220613032544-16d90015bc83/pkg/api/handlers/libpod/system.go (about) 1 package libpod 2 3 import ( 4 "net/http" 5 6 "github.com/hanks177/podman/v4/libpod" 7 "github.com/hanks177/podman/v4/pkg/api/handlers/utils" 8 api "github.com/hanks177/podman/v4/pkg/api/types" 9 "github.com/hanks177/podman/v4/pkg/domain/entities" 10 "github.com/hanks177/podman/v4/pkg/domain/infra/abi" 11 "github.com/hanks177/podman/v4/pkg/util" 12 "github.com/gorilla/schema" 13 "github.com/pkg/errors" 14 ) 15 16 // SystemPrune removes unused data 17 func SystemPrune(w http.ResponseWriter, r *http.Request) { 18 decoder := r.Context().Value(api.DecoderKey).(*schema.Decoder) 19 runtime := r.Context().Value(api.RuntimeKey).(*libpod.Runtime) 20 21 query := struct { 22 All bool `schema:"all"` 23 Volumes bool `schema:"volumes"` 24 }{} 25 26 if err := decoder.Decode(&query, r.URL.Query()); err != nil { 27 utils.Error(w, http.StatusBadRequest, 28 errors.Wrapf(err, "failed to parse parameters for %s", r.URL.String())) 29 return 30 } 31 filterMap, err := util.PrepareFilters(r) 32 if err != nil { 33 utils.Error(w, http.StatusBadRequest, 34 errors.Wrapf(err, "failed to parse parameters for %s", r.URL.String())) 35 return 36 } 37 38 containerEngine := abi.ContainerEngine{Libpod: runtime} 39 40 pruneOptions := entities.SystemPruneOptions{ 41 All: query.All, 42 Volume: query.Volumes, 43 Filters: *filterMap, 44 } 45 report, err := containerEngine.SystemPrune(r.Context(), pruneOptions) 46 if err != nil { 47 utils.InternalServerError(w, err) 48 return 49 } 50 51 utils.WriteResponse(w, http.StatusOK, report) 52 } 53 54 func DiskUsage(w http.ResponseWriter, r *http.Request) { 55 // Options are only used by the CLI 56 options := entities.SystemDfOptions{} 57 runtime := r.Context().Value(api.RuntimeKey).(*libpod.Runtime) 58 ic := abi.ContainerEngine{Libpod: runtime} 59 response, err := ic.SystemDf(r.Context(), options) 60 if err != nil { 61 utils.InternalServerError(w, err) 62 return 63 } 64 utils.WriteResponse(w, http.StatusOK, response) 65 }