diff options
Diffstat (limited to 'pkg/api')
-rw-r--r-- | pkg/api/handlers/libpod/system.go | 23 | ||||
-rw-r--r-- | pkg/api/server/register_system.go | 31 | ||||
-rw-r--r-- | pkg/api/server/swagger.go | 18 |
3 files changed, 70 insertions, 2 deletions
diff --git a/pkg/api/handlers/libpod/system.go b/pkg/api/handlers/libpod/system.go index 98e33bf10..81ed37b4a 100644 --- a/pkg/api/handlers/libpod/system.go +++ b/pkg/api/handlers/libpod/system.go @@ -7,6 +7,7 @@ import ( "github.com/containers/libpod/pkg/api/handlers/compat" "github.com/containers/libpod/pkg/api/handlers/utils" "github.com/containers/libpod/pkg/domain/entities" + "github.com/containers/libpod/pkg/domain/infra/abi" "github.com/gorilla/schema" "github.com/pkg/errors" ) @@ -69,3 +70,25 @@ func SystemPrune(w http.ResponseWriter, r *http.Request) { } utils.WriteResponse(w, http.StatusOK, systemPruneReport) } + +// SystemReset Resets podman storage back to default state +func SystemReset(w http.ResponseWriter, r *http.Request) { + err := r.Context().Value("runtime").(*libpod.Runtime).Reset(r.Context()) + if err != nil { + utils.InternalServerError(w, err) + return + } + utils.WriteResponse(w, http.StatusOK, nil) +} + +func DiskUsage(w http.ResponseWriter, r *http.Request) { + // Options are only used by the CLI + options := entities.SystemDfOptions{} + runtime := r.Context().Value("runtime").(*libpod.Runtime) + ic := abi.ContainerEngine{Libpod: runtime} + response, err := ic.SystemDf(r.Context(), options) + if err != nil { + utils.InternalServerError(w, err) + } + utils.WriteResponse(w, http.StatusOK, response) +} diff --git a/pkg/api/server/register_system.go b/pkg/api/server/register_system.go index 7375a75c1..8a942a888 100644 --- a/pkg/api/server/register_system.go +++ b/pkg/api/server/register_system.go @@ -12,7 +12,7 @@ func (s *APIServer) registerSystemHandlers(r *mux.Router) error { r.Handle(VersionedPath("/system/df"), s.APIHandler(compat.GetDiskUsage)).Methods(http.MethodGet) // Added non version path to URI to support docker non versioned paths r.Handle("/system/df", s.APIHandler(compat.GetDiskUsage)).Methods(http.MethodGet) - // Swagger:operation POST /libpod/system/prune libpod pruneSystem + // swagger:operation POST /libpod/system/prune libpod pruneSystem // --- // tags: // - system @@ -27,6 +27,33 @@ func (s *APIServer) registerSystemHandlers(r *mux.Router) error { // 500: // $ref: "#/responses/InternalError" r.Handle(VersionedPath("/libpod/system/prune"), s.APIHandler(libpod.SystemPrune)).Methods(http.MethodPost) - + // swagger:operation POST /libpod/system/reset libpod resetSystem + // --- + // tags: + // - system + // summary: Reset podman storage + // description: All containers will be stopped and removed, and all images, volumes and container content will be removed. + // produces: + // - application/json + // responses: + // 200: + // description: no error + // 500: + // $ref: "#/responses/InternalError" + r.Handle(VersionedPath("/libpod/system/reset"), s.APIHandler(libpod.SystemReset)).Methods(http.MethodPost) + // swagger:operation GET /libpod/system/df libpod df + // --- + // tags: + // - system + // summary: Show disk usage + // description: Return information about disk usage for containers, images, and volumes + // produces: + // - application/json + // responses: + // 200: + // $ref: '#/responses/SystemDiskUse' + // 500: + // $ref: "#/responses/InternalError" + r.Handle(VersionedPath("/libpod/system/df"), s.APIHandler(libpod.DiskUsage)).Methods(http.MethodGet) return nil } diff --git a/pkg/api/server/swagger.go b/pkg/api/server/swagger.go index e47f2cc2f..7776d0e79 100644 --- a/pkg/api/server/swagger.go +++ b/pkg/api/server/swagger.go @@ -190,3 +190,21 @@ type swagVersion struct { entities.SystemVersionReport } } + +// Disk usage +// swagger:response SystemDiskUse +type swagDiskUseResponse struct { + // in:body + Body struct { + entities.SystemDfReport + } +} + +// Prune report +// swagger:response SystemPruneReport +type swagSystemPruneReport struct { + // in:body + Body struct { + entities.SystemPruneReport + } +} |