1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

use go-generate to build volume/driver/proxy.go

Signed-off-by: Brian Goff <cpuguy83@gmail.com>
This commit is contained in:
Brian Goff 2015-06-10 09:46:54 -04:00
parent 4c81c9dddc
commit 88e4dff9a9
2 changed files with 135 additions and 57 deletions

View file

@ -1,20 +1,23 @@
//go:generate pluginrpc-gen -i $GOFILE -o proxy.go -type VolumeDriver -name VolumeDriver
package volumedrivers
import "github.com/docker/docker/volume"
type client interface {
Call(string, interface{}, interface{}) error
}
func NewVolumeDriver(name string, c client) volume.Driver {
proxy := &volumeDriverProxy{c}
return &volumeDriverAdapter{name, proxy}
}
type VolumeDriver interface {
// Create a volume with the given name
Create(name string) (err error)
// Remove the volume with the given name
Remove(name string) (err error)
// Get the mountpoint of the given volume
Path(name string) (mountpoint string, err error)
// Mount the given volume and return the mountpoint
Mount(name string) (mountpoint string, err error)
// Unmount the given volume
Unmount(name string) (err error)
}

View file

@ -1,74 +1,149 @@
// generated code - DO NOT EDIT
package volumedrivers
import "fmt"
import "errors"
// currently created by hand. generation tool would generate this like:
// $ rpc-gen volume/drivers/api.go VolumeDriver > volume/drivers/proxy.go
type volumeDriverRequest struct {
Name string
}
type volumeDriverResponse struct {
Mountpoint string `json:",omitempty"`
Err string `json:",omitempty"`
type client interface {
Call(string, interface{}, interface{}) error
}
type volumeDriverProxy struct {
c client
client
}
func (pp *volumeDriverProxy) Create(name string) error {
args := volumeDriverRequest{name}
var ret volumeDriverResponse
err := pp.c.Call("VolumeDriver.Create", args, &ret)
if err != nil {
return pp.fmtError(name, err.Error())
}
return pp.fmtError(name, ret.Err)
type volumeDriverProxyCreateRequest struct {
Name string
}
func (pp *volumeDriverProxy) Remove(name string) error {
args := volumeDriverRequest{name}
var ret volumeDriverResponse
err := pp.c.Call("VolumeDriver.Remove", args, &ret)
if err != nil {
return pp.fmtError(name, err.Error())
}
return pp.fmtError(name, ret.Err)
type volumeDriverProxyCreateResponse struct {
Err string
}
func (pp *volumeDriverProxy) Path(name string) (string, error) {
args := volumeDriverRequest{name}
var ret volumeDriverResponse
if err := pp.c.Call("VolumeDriver.Path", args, &ret); err != nil {
return "", pp.fmtError(name, err.Error())
func (pp *volumeDriverProxy) Create(name string) (err error) {
var (
req volumeDriverProxyCreateRequest
ret volumeDriverProxyCreateResponse
)
req.Name = name
if err = pp.Call("VolumeDriver.Create", req, &ret); err != nil {
return
}
return ret.Mountpoint, pp.fmtError(name, ret.Err)
if ret.Err != "" {
err = errors.New(ret.Err)
}
return
}
func (pp *volumeDriverProxy) Mount(name string) (string, error) {
args := volumeDriverRequest{name}
var ret volumeDriverResponse
if err := pp.c.Call("VolumeDriver.Mount", args, &ret); err != nil {
return "", pp.fmtError(name, err.Error())
}
return ret.Mountpoint, pp.fmtError(name, ret.Err)
type volumeDriverProxyRemoveRequest struct {
Name string
}
func (pp *volumeDriverProxy) Unmount(name string) error {
args := volumeDriverRequest{name}
var ret volumeDriverResponse
err := pp.c.Call("VolumeDriver.Unmount", args, &ret)
if err != nil {
return pp.fmtError(name, err.Error())
}
return pp.fmtError(name, ret.Err)
type volumeDriverProxyRemoveResponse struct {
Err string
}
func (pp *volumeDriverProxy) fmtError(name string, err string) error {
if len(err) == 0 {
return nil
func (pp *volumeDriverProxy) Remove(name string) (err error) {
var (
req volumeDriverProxyRemoveRequest
ret volumeDriverProxyRemoveResponse
)
req.Name = name
if err = pp.Call("VolumeDriver.Remove", req, &ret); err != nil {
return
}
return fmt.Errorf("External volume driver request failed for %s: %v", name, err)
if ret.Err != "" {
err = errors.New(ret.Err)
}
return
}
type volumeDriverProxyPathRequest struct {
Name string
}
type volumeDriverProxyPathResponse struct {
Mountpoint string
Err string
}
func (pp *volumeDriverProxy) Path(name string) (mountpoint string, err error) {
var (
req volumeDriverProxyPathRequest
ret volumeDriverProxyPathResponse
)
req.Name = name
if err = pp.Call("VolumeDriver.Path", req, &ret); err != nil {
return
}
mountpoint = ret.Mountpoint
if ret.Err != "" {
err = errors.New(ret.Err)
}
return
}
type volumeDriverProxyMountRequest struct {
Name string
}
type volumeDriverProxyMountResponse struct {
Mountpoint string
Err string
}
func (pp *volumeDriverProxy) Mount(name string) (mountpoint string, err error) {
var (
req volumeDriverProxyMountRequest
ret volumeDriverProxyMountResponse
)
req.Name = name
if err = pp.Call("VolumeDriver.Mount", req, &ret); err != nil {
return
}
mountpoint = ret.Mountpoint
if ret.Err != "" {
err = errors.New(ret.Err)
}
return
}
type volumeDriverProxyUnmountRequest struct {
Name string
}
type volumeDriverProxyUnmountResponse struct {
Err string
}
func (pp *volumeDriverProxy) Unmount(name string) (err error) {
var (
req volumeDriverProxyUnmountRequest
ret volumeDriverProxyUnmountResponse
)
req.Name = name
if err = pp.Call("VolumeDriver.Unmount", req, &ret); err != nil {
return
}
if ret.Err != "" {
err = errors.New(ret.Err)
}
return
}