podman/pkg/domain/entities/volumes.go

204 lines
4.7 KiB
Go

package entities
import (
"net/url"
"github.com/containers/podman/v4/libpod/define"
docker_api_types "github.com/docker/docker/api/types"
docker_api_types_volume "github.com/docker/docker/api/types/volume"
)
// Volume volume
// swagger:model Volume
type volume struct {
// Date/Time the volume was created.
CreatedAt string `json:"CreatedAt,omitempty"`
// Name of the volume driver used by the volume.
// Required: true
Driver string `json:"Driver"`
// User-defined key/value metadata.
// Required: true
Labels map[string]string `json:"Labels"`
// Mount path of the volume on the host.
// Required: true
Mountpoint string `json:"Mountpoint"`
// Name of the volume.
// Required: true
Name string `json:"Name"`
// The driver specific options used when creating the volume.
//
// Required: true
Options map[string]string `json:"Options"`
// The level at which the volume exists. Either `global` for cluster-wide,
// or `local` for machine level.
//
// Required: true
Scope string `json:"Scope"`
// Low-level details about the volume, provided by the volume driver.
// Details are returned as a map with key/value pairs:
// `{"key":"value","key2":"value2"}`.
//
// The `Status` field is optional, and is omitted if the volume driver
// does not support this feature.
//
Status map[string]interface{} `json:"Status,omitempty"`
// usage data
UsageData *VolumeUsageData `json:"UsageData,omitempty"`
}
type VolumeUsageData struct {
// The number of containers referencing this volume. This field
// is set to `-1` if the reference-count is not available.
//
// Required: true
RefCount int64 `json:"RefCount"`
// Amount of disk space used by the volume (in bytes). This information
// is only available for volumes created with the `"local"` volume
// driver. For volumes created with other volume drivers, this field
// is set to `-1` ("not available")
//
// Required: true
Size int64 `json:"Size"`
}
// swagger:model VolumeCreate
type VolumeCreateOptions struct {
// New volume's name. Can be left blank
Name string `schema:"name"`
// Volume driver to use
Driver string `schema:"driver"`
// User-defined key/value metadata. Provided for compatibility
Label map[string]string `schema:"label"`
// User-defined key/value metadata. Preferred field, will override Label
Labels map[string]string `schema:"labels"`
// Mapping of driver options and values.
Options map[string]string `schema:"opts"`
}
type IDOrNameResponse struct {
// The Id or Name of an object
IDOrName string
}
type VolumeConfigResponse struct {
define.InspectVolumeData
}
type VolumeRmOptions struct {
All bool
Force bool
Timeout *uint
}
type VolumeRmReport struct {
Err error
Id string //nolint
}
type VolumeInspectReport struct {
*VolumeConfigResponse
}
// VolumePruneOptions describes the options needed
// to prune a volume from the CLI
type VolumePruneOptions struct {
Filters url.Values `json:"filters" schema:"filters"`
}
type VolumeListOptions struct {
Filter map[string][]string
}
type VolumeListReport struct {
VolumeConfigResponse
}
// VolumeListBody Volume list response
// swagger:model VolumeListBody
type VolumeListBody struct {
Volumes []docker_api_types_volume.VolumeListOKBody
}
// Volume list response
// swagger:response VolumeListResponse
type SwagVolumeListResponse struct {
// in:body
Body struct {
VolumeListBody
}
}
/*
* Docker API compatibility types
*/
// swagger:model DockerVolumeCreate
type DockerVolumeCreate VolumeCreateBody
// This response definition is used for both the create and inspect endpoints
// swagger:response DockerVolumeInfoResponse
type SwagDockerVolumeInfoResponse struct {
// in:body
Body struct {
volume
}
}
// Volume prune response
// swagger:response DockerVolumePruneResponse
type SwagDockerVolumePruneResponse struct {
// in:body
Body struct {
docker_api_types.VolumesPruneReport
}
}
// VolumeCreateBody Volume configuration
// swagger:model VolumeCreateBody
type VolumeCreateBody struct {
// Name of the volume driver to use.
// Required: true
Driver string `json:"Driver"`
// A mapping of driver options and values. These options are
// passed directly to the driver and are driver specific.
//
// Required: true
DriverOpts map[string]string `json:"DriverOpts"`
// User-defined key/value metadata.
// Required: true
Labels map[string]string `json:"Labels"`
// The new volume's name. If not specified, Docker generates a name.
//
// Required: true
Name string `json:"Name"`
}
// VolumeMountReport describes the response from volume mount
type VolumeMountReport struct {
Err error
Id string //nolint
Name string
Path string
}
// VolumeUnmountReport describes the response from umounting a volume
type VolumeUnmountReport struct {
Err error
Id string //nolint
}