APIv2: Add docker compatible volume endpoints

This change implements docker compatibile endpoint for interacting with
volumes. The code is mostly lifted from the `libpod` API handlers but
decodes and constructs data using types defined in the docker API
package.

Some notable support caveats with the current implementation:
  * we don't return the nullable `Status` or `UsageData` keys when
    returning volume information for inspect and create endpoints
  * we don't support filters when pruning
  * we return a fixed `0` for the `SpaceReclaimed` key when pruning
    since we have no insight into how much space was freed from runtime

Signed-off-by: Matt Brindley <58414429+maybe-sybr@users.noreply.github.com>
This commit is contained in:
maybe-sybr
2020-06-24 11:16:59 +10:00
parent e84695213e
commit cb61a2d858
3 changed files with 398 additions and 5 deletions

View File

@ -2,6 +2,9 @@ package entities
import (
"time"
docker_api_types "github.com/docker/docker/api/types"
docker_api_types_volume "github.com/docker/docker/api/types/volume"
)
// swagger:model VolumeCreate
@ -90,3 +93,35 @@ type VolumeListOptions struct {
type VolumeListReport struct {
VolumeConfigResponse
}
/*
* Docker API compatibility types
*/
// swagger:response DockerVolumeList
type SwagDockerVolumeListResponse struct {
// in:body
Body struct {
docker_api_types_volume.VolumeListOKBody
}
}
// swagger:model DockerVolumeCreate
type DockerVolumeCreate docker_api_types_volume.VolumeCreateBody
// This response definition is used for both the create and inspect endpoints
// swagger:response DockerVolumeInfoResponse
type SwagDockerVolumeInfoResponse struct {
// in:body
Body struct {
docker_api_types.Volume
}
}
// Volume prune response
// swagger:response DockerVolumePruneResponse
type SwagDockerVolumePruneResponse struct {
// in:body
Body struct {
docker_api_types.VolumesPruneReport
}
}