2018-03-22 17:11:03 -04:00
|
|
|
package opts
|
|
|
|
|
|
|
|
// CreateOption is used to pass options in when creating a volume
|
|
|
|
type CreateOption func(*CreateConfig)
|
|
|
|
|
|
|
|
// CreateConfig is the set of config options that can be set when creating
|
|
|
|
// a volume
|
|
|
|
type CreateConfig struct {
|
|
|
|
Options map[string]string
|
|
|
|
Labels map[string]string
|
|
|
|
Reference string
|
|
|
|
}
|
|
|
|
|
|
|
|
// WithCreateLabels creates a CreateOption which sets the labels to the
|
|
|
|
// passed in value
|
|
|
|
func WithCreateLabels(labels map[string]string) CreateOption {
|
|
|
|
return func(cfg *CreateConfig) {
|
|
|
|
cfg.Labels = labels
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// WithCreateOptions creates a CreateOption which sets the options passed
|
|
|
|
// to the volume driver when creating a volume to the options passed in.
|
|
|
|
func WithCreateOptions(opts map[string]string) CreateOption {
|
|
|
|
return func(cfg *CreateConfig) {
|
|
|
|
cfg.Options = opts
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// WithCreateReference creats a CreateOption which sets a reference to use
|
|
|
|
// when creating a volume. This ensures that the volume is created with a reference
|
|
|
|
// already attached to it to prevent race conditions with Create and volume cleanup.
|
|
|
|
func WithCreateReference(ref string) CreateOption {
|
|
|
|
return func(cfg *CreateConfig) {
|
|
|
|
cfg.Reference = ref
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// GetConfig is used with `GetOption` to set options for the volumes service's
|
|
|
|
// `Get` implementation.
|
|
|
|
type GetConfig struct {
|
|
|
|
Driver string
|
|
|
|
Reference string
|
|
|
|
ResolveStatus bool
|
|
|
|
}
|
|
|
|
|
|
|
|
// GetOption is passed to the service `Get` add extra details on the get request
|
|
|
|
type GetOption func(*GetConfig)
|
|
|
|
|
|
|
|
// WithGetDriver provides the driver to get the volume from
|
|
|
|
// If no driver is provided to `Get`, first the available metadata is checked
|
|
|
|
// to see which driver it belongs to, if that is not available all drivers are
|
|
|
|
// probed to find the volume.
|
|
|
|
func WithGetDriver(name string) GetOption {
|
|
|
|
return func(o *GetConfig) {
|
|
|
|
o.Driver = name
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// WithGetReference indicates to `Get` to increment the reference count for the
|
2018-09-19 23:27:15 -04:00
|
|
|
// retrieved volume with the provided reference ID.
|
2018-03-22 17:11:03 -04:00
|
|
|
func WithGetReference(ref string) GetOption {
|
|
|
|
return func(o *GetConfig) {
|
|
|
|
o.Reference = ref
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// WithGetResolveStatus indicates to `Get` to also fetch the volume status.
|
|
|
|
// This can cause significant overhead in the volume lookup.
|
|
|
|
func WithGetResolveStatus(cfg *GetConfig) {
|
|
|
|
cfg.ResolveStatus = true
|
|
|
|
}
|
|
|
|
|
|
|
|
// RemoveConfig is used by `RemoveOption` to store config options for remove
|
|
|
|
type RemoveConfig struct {
|
|
|
|
PurgeOnError bool
|
|
|
|
}
|
|
|
|
|
|
|
|
// RemoveOption is used to pass options to the volumes service `Remove` implementation
|
|
|
|
type RemoveOption func(*RemoveConfig)
|
|
|
|
|
|
|
|
// WithPurgeOnError is an option passed to `Remove` which will purge all cached
|
|
|
|
// data about a volume even if there was an error while attempting to remove the
|
|
|
|
// volume.
|
|
|
|
func WithPurgeOnError(b bool) RemoveOption {
|
|
|
|
return func(o *RemoveConfig) {
|
|
|
|
o.PurgeOnError = b
|
|
|
|
}
|
|
|
|
}
|