// +build experimental package graphdriver import ( "fmt" "io" "github.com/docker/docker/pkg/plugins" ) type pluginClient interface { // Call calls the specified method with the specified arguments for the plugin. Call(string, interface{}, interface{}) error // Stream calls the specified method with the specified arguments for the plugin and returns the response IO stream Stream(string, interface{}) (io.ReadCloser, error) // SendFile calls the specified method, and passes through the IO stream SendFile(string, io.Reader, interface{}) error } func lookupPlugin(name, home string, opts []string) (Driver, error) { pl, err := plugins.Get(name, "GraphDriver") if err != nil { return nil, fmt.Errorf("Error looking up graphdriver plugin %s: %v", name, err) } return newPluginDriver(name, home, opts, pl.Client) } func newPluginDriver(name, home string, opts []string, c pluginClient) (Driver, error) { proxy := &graphDriverProxy{name, c} return proxy, proxy.Init(home, opts) }