diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2020-05-12 09:05:03 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-12 09:05:03 -0700 |
commit | 38c4b9bcc0296a1fe7efc5bb6058e8aaa5ecae6f (patch) | |
tree | 7964cf7e1dd1ed54c58bd7b30dcd80bbdbfcc752 | |
parent | d6d94cfdd7104c036e7def993f22abb962c5762a (diff) | |
parent | 03c29c357fb21d69ed878dcfea29f99c7a369f25 (diff) | |
download | podman-38c4b9bcc0296a1fe7efc5bb6058e8aaa5ecae6f.tar.gz podman-38c4b9bcc0296a1fe7efc5bb6058e8aaa5ecae6f.tar.bz2 podman-38c4b9bcc0296a1fe7efc5bb6058e8aaa5ecae6f.zip |
Merge pull request #6182 from baude/v2remotedf
add podman remote system df
-rw-r--r-- | cmd/podman/system/df.go | 2 | ||||
-rw-r--r-- | pkg/api/handlers/libpod/system.go | 13 | ||||
-rw-r--r-- | pkg/api/server/register_system.go | 16 | ||||
-rw-r--r-- | pkg/api/server/swagger.go | 18 | ||||
-rw-r--r-- | pkg/bindings/system/system.go | 15 | ||||
-rw-r--r-- | pkg/domain/infra/tunnel/system.go | 2 |
6 files changed, 63 insertions, 3 deletions
diff --git a/cmd/podman/system/df.go b/cmd/podman/system/df.go index 7caa8e39a..8fe035209 100644 --- a/cmd/podman/system/df.go +++ b/cmd/podman/system/df.go @@ -37,7 +37,7 @@ var ( func init() { registry.Commands = append(registry.Commands, registry.CliCommand{ - Mode: []entities.EngineMode{entities.ABIMode}, + Mode: []entities.EngineMode{entities.ABIMode, entities.TunnelMode}, Command: dfSystemCommand, Parent: systemCmd, }) diff --git a/pkg/api/handlers/libpod/system.go b/pkg/api/handlers/libpod/system.go index 72a38db63..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" ) @@ -79,3 +80,15 @@ func SystemReset(w http.ResponseWriter, r *http.Request) { } 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 39990e6a6..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 @@ -41,5 +41,19 @@ func (s *APIServer) registerSystemHandlers(r *mux.Router) 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 + } +} diff --git a/pkg/bindings/system/system.go b/pkg/bindings/system/system.go index f1c40cd75..e567e7a86 100644 --- a/pkg/bindings/system/system.go +++ b/pkg/bindings/system/system.go @@ -134,3 +134,18 @@ func Reset(ctx context.Context) error { } return response.Process(response) } + +// DiskUsage returns information about image, container, and volume disk +// consumption +func DiskUsage(ctx context.Context) (*entities.SystemDfReport, error) { + var report entities.SystemDfReport + conn, err := bindings.GetClient(ctx) + if err != nil { + return nil, err + } + response, err := conn.DoRequest(nil, http.MethodGet, "/system/df", nil) + if err != nil { + return nil, err + } + return &report, response.Process(&report) +} diff --git a/pkg/domain/infra/tunnel/system.go b/pkg/domain/infra/tunnel/system.go index b1be28e04..829af31f6 100644 --- a/pkg/domain/infra/tunnel/system.go +++ b/pkg/domain/infra/tunnel/system.go @@ -33,7 +33,7 @@ func (ic *SystemEngine) Reset(ctx context.Context) error { } func (ic *ContainerEngine) SystemDf(ctx context.Context, options entities.SystemDfOptions) (*entities.SystemDfReport, error) { - panic(errors.New("system df is not supported on remote clients")) + return system.DiskUsage(ic.ClientCxt) } func (ic *ContainerEngine) Unshare(ctx context.Context, args []string) error { |