1package opts 2 3// CreateOption is used to pass options in when creating a volume 4type CreateOption func(*CreateConfig) 5 6// CreateConfig is the set of config options that can be set when creating 7// a volume 8type CreateConfig struct { 9 Options map[string]string 10 Labels map[string]string 11 Reference string 12} 13 14// WithCreateLabels creates a CreateOption which sets the labels to the 15// passed in value 16func WithCreateLabels(labels map[string]string) CreateOption { 17 return func(cfg *CreateConfig) { 18 cfg.Labels = labels 19 } 20} 21 22// WithCreateOptions creates a CreateOption which sets the options passed 23// to the volume driver when creating a volume to the options passed in. 24func WithCreateOptions(opts map[string]string) CreateOption { 25 return func(cfg *CreateConfig) { 26 cfg.Options = opts 27 } 28} 29 30// WithCreateReference creats a CreateOption which sets a reference to use 31// when creating a volume. This ensures that the volume is created with a reference 32// already attached to it to prevent race conditions with Create and volume cleanup. 33func WithCreateReference(ref string) CreateOption { 34 return func(cfg *CreateConfig) { 35 cfg.Reference = ref 36 } 37} 38 39// GetConfig is used with `GetOption` to set options for the volumes service's 40// `Get` implementation. 41type GetConfig struct { 42 Driver string 43 Reference string 44 ResolveStatus bool 45} 46 47// GetOption is passed to the service `Get` add extra details on the get request 48type GetOption func(*GetConfig) 49 50// WithGetDriver provides the driver to get the volume from 51// If no driver is provided to `Get`, first the available metadata is checked 52// to see which driver it belongs to, if that is not available all drivers are 53// probed to find the volume. 54func WithGetDriver(name string) GetOption { 55 return func(o *GetConfig) { 56 o.Driver = name 57 } 58} 59 60// WithGetReference indicates to `Get` to increment the reference count for the 61// retreived volume with the provided reference ID. 62func WithGetReference(ref string) GetOption { 63 return func(o *GetConfig) { 64 o.Reference = ref 65 } 66} 67 68// WithGetResolveStatus indicates to `Get` to also fetch the volume status. 69// This can cause significant overhead in the volume lookup. 70func WithGetResolveStatus(cfg *GetConfig) { 71 cfg.ResolveStatus = true 72} 73 74// RemoveConfig is used by `RemoveOption` to store config options for remove 75type RemoveConfig struct { 76 PurgeOnError bool 77} 78 79// RemoveOption is used to pass options to the volumes service `Remove` implementation 80type RemoveOption func(*RemoveConfig) 81 82// WithPurgeOnError is an option passed to `Remove` which will purge all cached 83// data about a volume even if there was an error while attempting to remove the 84// volume. 85func WithPurgeOnError(b bool) RemoveOption { 86 return func(o *RemoveConfig) { 87 o.PurgeOnError = b 88 } 89} 90