| 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 |
| // retreived volume with the provided reference ID. |
| 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 |
| } |
| } |