mirror of
				https://github.com/moby/moby.git
				synced 2022-11-09 12:21:53 -05:00 
			
		
		
		
	This moves the platform specific stuff in a separate package and keeps the `volume` package and the defined interfaces light to import. Signed-off-by: Brian Goff <cpuguy83@gmail.com>
		
			
				
	
	
		
			69 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package volume // import "github.com/docker/docker/volume"
 | 
						|
 | 
						|
import (
 | 
						|
	"time"
 | 
						|
)
 | 
						|
 | 
						|
// DefaultDriverName is the driver name used for the driver
 | 
						|
// implemented in the local package.
 | 
						|
const DefaultDriverName = "local"
 | 
						|
 | 
						|
// Scopes define if a volume has is cluster-wide (global) or local only.
 | 
						|
// Scopes are returned by the volume driver when it is queried for capabilities and then set on a volume
 | 
						|
const (
 | 
						|
	LocalScope  = "local"
 | 
						|
	GlobalScope = "global"
 | 
						|
)
 | 
						|
 | 
						|
// Driver is for creating and removing volumes.
 | 
						|
type Driver interface {
 | 
						|
	// Name returns the name of the volume driver.
 | 
						|
	Name() string
 | 
						|
	// Create makes a new volume with the given name.
 | 
						|
	Create(name string, opts map[string]string) (Volume, error)
 | 
						|
	// Remove deletes the volume.
 | 
						|
	Remove(vol Volume) (err error)
 | 
						|
	// List lists all the volumes the driver has
 | 
						|
	List() ([]Volume, error)
 | 
						|
	// Get retrieves the volume with the requested name
 | 
						|
	Get(name string) (Volume, error)
 | 
						|
	// Scope returns the scope of the driver (e.g. `global` or `local`).
 | 
						|
	// Scope determines how the driver is handled at a cluster level
 | 
						|
	Scope() string
 | 
						|
}
 | 
						|
 | 
						|
// Capability defines a set of capabilities that a driver is able to handle.
 | 
						|
type Capability struct {
 | 
						|
	// Scope is the scope of the driver, `global` or `local`
 | 
						|
	// A `global` scope indicates that the driver manages volumes across the cluster
 | 
						|
	// A `local` scope indicates that the driver only manages volumes resources local to the host
 | 
						|
	// Scope is declared by the driver
 | 
						|
	Scope string
 | 
						|
}
 | 
						|
 | 
						|
// Volume is a place to store data. It is backed by a specific driver, and can be mounted.
 | 
						|
type Volume interface {
 | 
						|
	// Name returns the name of the volume
 | 
						|
	Name() string
 | 
						|
	// DriverName returns the name of the driver which owns this volume.
 | 
						|
	DriverName() string
 | 
						|
	// Path returns the absolute path to the volume.
 | 
						|
	Path() string
 | 
						|
	// Mount mounts the volume and returns the absolute path to
 | 
						|
	// where it can be consumed.
 | 
						|
	Mount(id string) (string, error)
 | 
						|
	// Unmount unmounts the volume when it is no longer in use.
 | 
						|
	Unmount(id string) error
 | 
						|
	// CreatedAt returns Volume Creation time
 | 
						|
	CreatedAt() (time.Time, error)
 | 
						|
	// Status returns low-level status information about a volume
 | 
						|
	Status() map[string]interface{}
 | 
						|
}
 | 
						|
 | 
						|
// DetailedVolume wraps a Volume with user-defined labels, options, and cluster scope (e.g., `local` or `global`)
 | 
						|
type DetailedVolume interface {
 | 
						|
	Labels() map[string]string
 | 
						|
	Options() map[string]string
 | 
						|
	Scope() string
 | 
						|
	Volume
 | 
						|
}
 |