Skip to content

Commit

Permalink
Merge pull request moby#5 from progrium/plugins_api
Browse files Browse the repository at this point in the history
Volume plugins w/ flag
  • Loading branch information
calavera committed May 8, 2015
2 parents fe543e0 + dbdf3a1 commit 9a4d310
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 8 deletions.
2 changes: 1 addition & 1 deletion daemon/create.go
Expand Up @@ -137,7 +137,7 @@ func (daemon *Daemon) Create(config *runconfig.Config, hostConfig *runconfig.Hos
if stat, err := os.Stat(path); err == nil && !stat.IsDir() {
return nil, nil, fmt.Errorf("cannot mount volume over existing file, file exists %s", path)
}
v, err := daemon.volumeDriver.Create(name)
v, err := daemon.createVolume(name, config.VolumeDriver)
if err != nil {
return nil, nil, err
}
Expand Down
35 changes: 30 additions & 5 deletions daemon/daemon.go
Expand Up @@ -109,7 +109,6 @@ type Daemon struct {
defaultLogConfig runconfig.LogConfig
RegistryService *registry.Service
EventsService *events.Events
volumeDriver volume.Driver
}

// Get looks for a container using the provided information, which could be
Expand Down Expand Up @@ -207,8 +206,8 @@ func (daemon *Daemon) register(container *Container, updateSuffixarray bool) err
// we'll waste time if we update it for every container
daemon.idIndex.Add(container.ID)

for name := range container.VolumeConfig {
v, err := daemon.volumeDriver.Create(name)
for name, config := range container.VolumeConfig {
v, err := daemon.createVolume(name, config.Driver)
if err != nil {
return err
}
Expand Down Expand Up @@ -933,7 +932,6 @@ func NewDaemon(config *Config, registryService *registry.Service) (daemon *Daemo
d.defaultLogConfig = config.LogConfig
d.RegistryService = registryService
d.EventsService = eventsService
d.volumeDriver = volumesDriver

if err := d.restore(); err != nil {
return nil, err
Expand All @@ -947,6 +945,33 @@ func NewDaemon(config *Config, registryService *registry.Service) (daemon *Daemo
return d, nil
}

func (d *Daemon) createVolume(name, driverName string) (volume.Volume, error) {
vd, err := d.getVolumeDriver(driverName)
if err != nil {
return nil, err
}
return vd.Create(name)
}

func (d *Daemon) removeVolume(v volume.Volume) error {
vd, err := d.getVolumeDriver(v.DriverName())
if err != nil {
return nil
}
return vd.Remove(v)
}

func (d *Daemon) getVolumeDriver(name string) (volume.Driver, error) {
if name == "" {
name = "local"
}
vd := volume.Drivers.Lookup(name)
if vd == nil {
return nil, fmt.Errorf("Volumes Driver %s isn't registered", name)
}
return vd, nil
}

func (daemon *Daemon) Shutdown() error {
if daemon.containerGraph != nil {
if err := daemon.containerGraph.Close(); err != nil {
Expand Down Expand Up @@ -1303,7 +1328,7 @@ func (container *Container) containsBind(dest string) bool {
func (container *Container) addVolumesFrom(c *Container, mode string) ([]*vv, error) {
var volumes []*vv
for name, config := range c.VolumeConfig {
lv, err := container.daemon.volumeDriver.Create(name)
lv, err := container.daemon.createVolume(name, config.Driver)
if err != nil {
return nil, err
}
Expand Down
6 changes: 4 additions & 2 deletions daemon/delete.go
Expand Up @@ -71,7 +71,7 @@ func (daemon *Daemon) ContainerRm(name string, config *ContainerRmConfig) error
container.LogEvent("destroy")
if config.RemoveVolume {
for _, v := range container.volumes {
daemon.volumeDriver.Remove(v)
daemon.removeVolume(v)
}
}
}
Expand Down Expand Up @@ -156,7 +156,9 @@ func (daemon *Daemon) commonRm(container *Container, forceRemove bool) (err erro

func (daemon *Daemon) DeleteVolumes(c *Container) error {
for _, v := range c.volumes {
daemon.volumeDriver.Remove(v)
if err := daemon.removeVolume(v); err != nil {
return err
}
}
return nil
}
1 change: 1 addition & 0 deletions runconfig/config.go
Expand Up @@ -117,6 +117,7 @@ type Config struct {
Cmd *Command
Image string // Name of the image as it was passed by the operator (eg. could be symbolic)
Volumes map[string]struct{}
VolumeDriver string
WorkingDir string
Entrypoint *Entrypoint
NetworkDisabled bool
Expand Down
2 changes: 2 additions & 0 deletions runconfig/parse.go
Expand Up @@ -72,6 +72,7 @@ func Parse(cmd *flag.FlagSet, args []string) (*Config, *HostConfig, *flag.FlagSe
flReadonlyRootfs = cmd.Bool([]string{"-read-only"}, false, "Mount the container's root filesystem as read only")
flLoggingDriver = cmd.String([]string{"-log-driver"}, "", "Logging driver for container")
flCgroupParent = cmd.String([]string{"-cgroup-parent"}, "", "Optional parent cgroup for the container")
flVolumeDriver = cmd.String([]string{"-volume-driver"}, "", "Optional volume driver for the container")
)

cmd.Var(&flAttach, []string{"a", "-attach"}, "Attach to STDIN, STDOUT or STDERR")
Expand Down Expand Up @@ -296,6 +297,7 @@ func Parse(cmd *flag.FlagSet, args []string) (*Config, *HostConfig, *flag.FlagSe
Entrypoint: entrypoint,
WorkingDir: *flWorkingDir,
Labels: convertKVStringsToMap(labels),
VolumeDriver: *flVolumeDriver,
}

hostConfig := &HostConfig{
Expand Down

0 comments on commit 9a4d310

Please sign in to comment.