github.com/endocode/docker@v1.4.2-0.20160113120958-46eb4700391e/volume/drivers/adapter.go (about) 1 package volumedrivers 2 3 import "github.com/docker/docker/volume" 4 5 type volumeDriverAdapter struct { 6 name string 7 proxy *volumeDriverProxy 8 } 9 10 func (a *volumeDriverAdapter) Name() string { 11 return a.name 12 } 13 14 func (a *volumeDriverAdapter) Create(name string, opts map[string]string) (volume.Volume, error) { 15 err := a.proxy.Create(name, opts) 16 if err != nil { 17 return nil, err 18 } 19 return &volumeAdapter{ 20 proxy: a.proxy, 21 name: name, 22 driverName: a.name}, nil 23 } 24 25 func (a *volumeDriverAdapter) Remove(v volume.Volume) error { 26 return a.proxy.Remove(v.Name()) 27 } 28 29 func (a *volumeDriverAdapter) List() ([]volume.Volume, error) { 30 ls, err := a.proxy.List() 31 if err != nil { 32 return nil, err 33 } 34 35 var out []volume.Volume 36 for _, vp := range ls { 37 out = append(out, &volumeAdapter{ 38 proxy: a.proxy, 39 name: vp.Name, 40 driverName: a.name, 41 eMount: vp.Mountpoint, 42 }) 43 } 44 return out, nil 45 } 46 47 func (a *volumeDriverAdapter) Get(name string) (volume.Volume, error) { 48 v, err := a.proxy.Get(name) 49 if err != nil { 50 return nil, err 51 } 52 53 return &volumeAdapter{ 54 proxy: a.proxy, 55 name: v.Name, 56 driverName: a.Name(), 57 eMount: v.Mountpoint, 58 }, nil 59 } 60 61 type volumeAdapter struct { 62 proxy *volumeDriverProxy 63 name string 64 driverName string 65 eMount string // ephemeral host volume path 66 } 67 68 type proxyVolume struct { 69 Name string 70 Mountpoint string 71 } 72 73 func (a *volumeAdapter) Name() string { 74 return a.name 75 } 76 77 func (a *volumeAdapter) DriverName() string { 78 return a.driverName 79 } 80 81 func (a *volumeAdapter) Path() string { 82 if len(a.eMount) > 0 { 83 return a.eMount 84 } 85 m, _ := a.proxy.Path(a.name) 86 return m 87 } 88 89 func (a *volumeAdapter) Mount() (string, error) { 90 var err error 91 a.eMount, err = a.proxy.Mount(a.name) 92 return a.eMount, err 93 } 94 95 func (a *volumeAdapter) Unmount() error { 96 return a.proxy.Unmount(a.name) 97 }