2015-05-27 14:12:36 -04:00
|
|
|
package drivers
|
|
|
|
|
|
2015-10-29 11:14:09 -07:00
|
|
|
import (
|
|
|
|
|
"errors"
|
|
|
|
|
"path/filepath"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
const (
|
2016-01-28 12:30:48 +01:00
|
|
|
DefaultSSHUser = "root"
|
|
|
|
|
DefaultSSHPort = 22
|
|
|
|
|
DefaultEngineInstallURL = "https://get.docker.com"
|
2015-10-29 11:14:09 -07:00
|
|
|
)
|
2015-05-27 14:12:36 -04:00
|
|
|
|
|
|
|
|
// BaseDriver - Embed this struct into drivers to provide the common set
|
|
|
|
|
// of fields and functions.
|
|
|
|
|
type BaseDriver struct {
|
|
|
|
|
IPAddress string
|
2015-10-29 11:14:09 -07:00
|
|
|
MachineName string
|
2015-10-20 18:56:34 -07:00
|
|
|
SSHUser string
|
2015-10-26 18:46:48 +01:00
|
|
|
SSHPort int
|
2015-10-29 11:14:09 -07:00
|
|
|
SSHKeyPath string
|
|
|
|
|
StorePath string
|
2015-05-27 14:12:36 -04:00
|
|
|
SwarmMaster bool
|
|
|
|
|
SwarmHost string
|
|
|
|
|
SwarmDiscovery string
|
|
|
|
|
}
|
|
|
|
|
|
2015-10-20 18:37:36 -07:00
|
|
|
// DriverName returns the name of the driver
|
2015-05-27 14:12:36 -04:00
|
|
|
func (d *BaseDriver) DriverName() string {
|
|
|
|
|
return "unknown"
|
|
|
|
|
}
|
|
|
|
|
|
2015-10-29 11:14:09 -07:00
|
|
|
// GetMachineName returns the machine name
|
2015-05-27 14:12:36 -04:00
|
|
|
func (d *BaseDriver) GetMachineName() string {
|
|
|
|
|
return d.MachineName
|
|
|
|
|
}
|
|
|
|
|
|
2015-10-29 11:14:09 -07:00
|
|
|
// GetIP returns the ip
|
|
|
|
|
func (d *BaseDriver) GetIP() (string, error) {
|
|
|
|
|
if d.IPAddress == "" {
|
|
|
|
|
return "", errors.New("IP address is not set")
|
|
|
|
|
}
|
|
|
|
|
return d.IPAddress, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// GetSSHKeyPath returns the ssh key path
|
|
|
|
|
func (d *BaseDriver) GetSSHKeyPath() string {
|
|
|
|
|
if d.SSHKeyPath == "" {
|
|
|
|
|
d.SSHKeyPath = d.ResolveStorePath("id_rsa")
|
|
|
|
|
}
|
|
|
|
|
return d.SSHKeyPath
|
2015-08-18 11:26:42 +09:00
|
|
|
}
|
|
|
|
|
|
2015-10-20 18:37:36 -07:00
|
|
|
// GetSSHPort returns the ssh port, 22 if not specified
|
2015-05-27 14:12:36 -04:00
|
|
|
func (d *BaseDriver) GetSSHPort() (int, error) {
|
|
|
|
|
if d.SSHPort == 0 {
|
2015-10-29 11:14:09 -07:00
|
|
|
d.SSHPort = DefaultSSHPort
|
2015-05-27 14:12:36 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return d.SSHPort, nil
|
|
|
|
|
}
|
|
|
|
|
|
2015-10-20 18:37:36 -07:00
|
|
|
// GetSSHUsername returns the ssh user name, root if not specified
|
2015-05-27 14:12:36 -04:00
|
|
|
func (d *BaseDriver) GetSSHUsername() string {
|
|
|
|
|
if d.SSHUser == "" {
|
2015-10-29 11:14:09 -07:00
|
|
|
d.SSHUser = DefaultSSHUser
|
2015-05-27 14:12:36 -04:00
|
|
|
}
|
|
|
|
|
return d.SSHUser
|
|
|
|
|
}
|
2015-10-20 18:35:13 -07:00
|
|
|
|
|
|
|
|
// PreCreateCheck is called to enforce pre-creation steps
|
|
|
|
|
func (d *BaseDriver) PreCreateCheck() error {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
2015-10-29 11:14:09 -07:00
|
|
|
|
|
|
|
|
// ResolveStorePath returns the store path where the machine is
|
|
|
|
|
func (d *BaseDriver) ResolveStorePath(file string) string {
|
|
|
|
|
return filepath.Join(d.StorePath, "machines", d.MachineName, file)
|
|
|
|
|
}
|
2015-12-29 10:14:53 +01:00
|
|
|
|
|
|
|
|
// SetSwarmConfigFromFlags configures the driver for swarm
|
|
|
|
|
func (d *BaseDriver) SetSwarmConfigFromFlags(flags DriverOptions) {
|
|
|
|
|
d.SwarmMaster = flags.Bool("swarm-master")
|
|
|
|
|
d.SwarmHost = flags.String("swarm-host")
|
|
|
|
|
d.SwarmDiscovery = flags.String("swarm-discovery")
|
|
|
|
|
}
|
2016-01-28 12:30:48 +01:00
|
|
|
|
|
|
|
|
func EngineInstallURLFlagSet(flags DriverOptions) bool {
|
|
|
|
|
engineInstallURLFlag := flags.String("engine-install-url")
|
|
|
|
|
return engineInstallURLFlag != DefaultEngineInstallURL && engineInstallURLFlag != ""
|
|
|
|
|
}
|