func newPluginDriver(driverName string, rawContent []byte) (drivers.Driver, error) { d, err := rpcdriver.NewRpcClientDriver(rawContent, driverName) if err != nil { // Not being able to find a driver binary is a "known error" if _, ok := err.(localbinary.ErrPluginBinaryNotFound); ok { return errdriver.NewDriver(driverName), nil } return nil, err } return d, nil }
func (factory RPCPluginDriverFactory) NewPluginDriver(driverName string, rawContent []byte) (drivers.Driver, error) { d, err := rpcdriver.NewRPCClientDriver(rawContent, driverName) if err != nil { // Not being able to find a driver binary is a "known error" if _, ok := err.(localbinary.ErrPluginBinaryNotFound); ok { return errdriver.NewDriver(driverName), nil } return nil, err } if driverName == "virtualbox" { return drivers.NewSerialDriver(d), nil } return d, nil }
func (api *Client) Load(name string) (*host.Host, error) { h, err := api.Filestore.Load(name) if err != nil { return nil, err } d, err := api.clientDriverFactory.NewRPCClientDriver(h.DriverName, h.RawDriver) if err != nil { // Not being able to find a driver binary is a "known error" if _, ok := err.(localbinary.ErrPluginBinaryNotFound); ok { h.Driver = errdriver.NewDriver(h.DriverName) return h, nil } return nil, err } if h.DriverName == "virtualbox" { h.Driver = drivers.NewSerialDriver(d) } else { h.Driver = d } return h, nil }