github.com/wozhu6104/docker@v20.10.10+incompatible/volume/service/opts/opts.go (about)

     1  package opts
     2  
     3  // CreateOption is used to pass options in when creating a volume
     4  type CreateOption func(*CreateConfig)
     5  
     6  // CreateConfig is the set of config options that can be set when creating
     7  // a volume
     8  type 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
    16  func 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.
    24  func 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.
    33  func 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.
    41  type 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
    48  type 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.
    54  func 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  // retrieved volume with the provided reference ID.
    62  func 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.
    70  func WithGetResolveStatus(cfg *GetConfig) {
    71  	cfg.ResolveStatus = true
    72  }
    73  
    74  // RemoveConfig is used by `RemoveOption` to store config options for remove
    75  type RemoveConfig struct {
    76  	PurgeOnError bool
    77  }
    78  
    79  // RemoveOption is used to pass options to the volumes service `Remove` implementation
    80  type 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.
    85  func WithPurgeOnError(b bool) RemoveOption {
    86  	return func(o *RemoveConfig) {
    87  		o.PurgeOnError = b
    88  	}
    89  }