dotcloud/docker

View on GitHub
volume/service/opts/opts.go

Summary

Maintainability
A
0 mins
Test Coverage
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
}

// WithCreateLabel creates a CreateOption which adds a label with the given key/value pair
func WithCreateLabel(key, value string) CreateOption {
    return func(cfg *CreateConfig) {
        if cfg.Labels == nil {
            cfg.Labels = map[string]string{}
        }
        cfg.Labels[key] = value
    }
}

// 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
// retrieved 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
    }
}