docs/drivers/none/none.go

103 lines
2.2 KiB
Go

package none
import (
"fmt"
"os/exec"
"github.com/docker/docker/api"
flag "github.com/docker/docker/pkg/mflag"
"github.com/docker/machine/drivers"
"github.com/docker/machine/state"
)
// Driver is the driver used when no driver is selected. It is used to
// connect to existing Docker hosts by specifying the URL of the host as
// an option.
type Driver struct {
URL string
}
type CreateFlags struct {
URL *string
}
func init() {
drivers.Register("none", &drivers.RegisteredDriver{
New: NewDriver,
RegisterCreateFlags: RegisterCreateFlags,
})
}
// RegisterCreateFlags registers the flags this driver adds to
// "docker hosts create"
func RegisterCreateFlags(cmd *flag.FlagSet) interface{} {
createFlags := new(CreateFlags)
createFlags.URL = cmd.String([]string{"-url"}, "", "URL of host when no driver is selected")
return createFlags
}
func NewDriver(storePath string) (drivers.Driver, error) {
return &Driver{}, nil
}
func (d *Driver) DriverName() string {
return "none"
}
func (d *Driver) SetConfigFromFlags(flagsInterface interface{}) error {
flags := flagsInterface.(*CreateFlags)
if *flags.URL == "" {
return fmt.Errorf("--url option is required when no driver is selected")
}
url, err := api.ValidateHost(*flags.URL)
if err != nil {
return err
}
d.URL = url
return nil
}
func (d *Driver) GetURL() (string, error) {
return d.URL, nil
}
func (d *Driver) GetIP() (string, error) {
return "", nil
}
func (d *Driver) GetState() (state.State, error) {
return state.None, nil
}
func (d *Driver) Create() error {
return nil
}
func (d *Driver) Start() error {
return fmt.Errorf("hosts without a driver cannot be started")
}
func (d *Driver) Stop() error {
return fmt.Errorf("hosts without a driver cannot be stopped")
}
func (d *Driver) Remove() error {
return nil
}
func (d *Driver) Restart() error {
return fmt.Errorf("hosts without a driver cannot be restarted")
}
func (d *Driver) Kill() error {
return fmt.Errorf("hosts without a driver cannot be killed")
}
func (d *Driver) Upgrade() error {
return fmt.Errorf("hosts without a driver cannot be upgraded")
}
func (d *Driver) GetSSHCommand(args ...string) (*exec.Cmd, error) {
return nil, fmt.Errorf("hosts without a driver do not support SSH")
}