softlayer: update with new driver interface

Signed-off-by: Evan Hazlett <ejhazlett@gmail.com>
This commit is contained in:
Evan Hazlett 2015-03-09 23:58:52 -04:00
parent 272d15343a
commit 4b034fd1b6
No known key found for this signature in database
GPG Key ID: A519480096146526
2 changed files with 42 additions and 62 deletions

View File

@ -23,7 +23,7 @@ import (
_ "github.com/docker/machine/drivers/none"
_ "github.com/docker/machine/drivers/openstack"
_ "github.com/docker/machine/drivers/rackspace"
//_ "github.com/docker/machine/drivers/softlayer"
_ "github.com/docker/machine/drivers/softlayer"
_ "github.com/docker/machine/drivers/virtualbox"
//_ "github.com/docker/machine/drivers/vmwarefusion"
//_ "github.com/docker/machine/drivers/vmwarevcloudair"

View File

@ -4,14 +4,14 @@ import (
"fmt"
"io/ioutil"
"os"
"os/exec"
"path"
"path/filepath"
"regexp"
"time"
log "github.com/Sirupsen/logrus"
"github.com/codegangsta/cli"
"github.com/docker/machine/drivers"
"github.com/docker/machine/provider"
"github.com/docker/machine/ssh"
"github.com/docker/machine/state"
)
@ -27,6 +27,8 @@ type Driver struct {
deviceConfig *deviceConfig
Id int
Client *Client
SSHUser string
SSHPort int
MachineName string
CaCertPath string
PrivateKeyPath string
@ -59,6 +61,38 @@ func NewDriver(machineName string, storePath string, caCert string, privateKey s
return &Driver{MachineName: machineName, storePath: storePath, CaCertPath: caCert, PrivateKeyPath: privateKey}, nil
}
func (d *Driver) AuthorizePort(ports []*drivers.Port) error {
return nil
}
func (d *Driver) DeauthorizePort(ports []*drivers.Port) error {
return nil
}
func (d *Driver) GetMachineName() string {
return d.MachineName
}
func (d *Driver) GetSSHHostname() (string, error) {
return d.GetIP()
}
func (d *Driver) GetSSHKeyPath() string {
return filepath.Join(d.storePath, "id_rsa")
}
func (d *Driver) GetSSHPort() (int, error) {
return d.SSHPort, nil
}
func (d *Driver) GetSSHUsername() string {
return d.SSHUser
}
func (d *Driver) GetProviderType() provider.ProviderType {
return provider.Remote
}
func GetCreateFlags() []cli.Flag {
// Set hourly billing to true by default since codegangsta cli doesn't take default bool values
if os.Getenv("SOFTLAYER_HOURLY_BILLING") == "" {
@ -188,6 +222,8 @@ func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
d.SwarmMaster = flags.Bool("swarm-master")
d.SwarmHost = flags.String("swarm-host")
d.SwarmDiscovery = flags.String("swarm-discovery")
d.SSHUser = "root"
d.SSHPort = 22
if err := validateClientConfig(d.Client); err != nil {
return err
@ -216,38 +252,6 @@ func (d *Driver) DriverName() string {
return "softlayer"
}
func (d *Driver) StartDocker() error {
log.Debug("Starting Docker...")
cmd, err := d.GetSSHCommand("sudo service docker start")
if err != nil {
return err
}
if err := cmd.Run(); err != nil {
return err
}
return nil
}
func (d *Driver) StopDocker() error {
log.Debug("Stopping Docker...")
cmd, err := d.GetSSHCommand("sudo service docker stop")
if err != nil {
return err
}
if err := cmd.Run(); err != nil {
return err
}
return nil
}
func (d *Driver) GetDockerConfigDir() string {
return dockerConfigDir
}
func (d *Driver) GetURL() (string, error) {
ip, err := d.GetIP()
if err != nil {
@ -283,10 +287,6 @@ func (d *Driver) GetState() (state.State, error) {
return vmState, nil
}
func (d *Driver) GetSSHCommand(args ...string) (*exec.Cmd, error) {
return ssh.GetSSHCommand(d.IPAddress, 22, "root", d.sshKeyPath(), args...), nil
}
func (d *Driver) PreCreateCheck() error {
return nil
}
@ -351,7 +351,7 @@ func (d *Driver) Create() error {
waitForStart()
ssh.WaitForTCP(d.IPAddress + ":22")
cmd, err := d.GetSSHCommand("sudo apt-get update && sudo apt-get install -y curl")
cmd, err := drivers.GetSSHCommandFromDriver(d, "sudo apt-get update && sudo apt-get install -y curl")
if err != nil {
return err
@ -382,7 +382,7 @@ func (d *Driver) buildHostSpec() *HostSpec {
}
func (d *Driver) createSSHKey() (*SshKey, error) {
if err := ssh.GenerateSSHKey(d.sshKeyPath()); err != nil {
if err := ssh.GenerateSSHKey(d.GetSSHKeyPath()); err != nil {
return nil, err
}
@ -400,11 +400,7 @@ func (d *Driver) createSSHKey() (*SshKey, error) {
}
func (d *Driver) publicSSHKeyPath() string {
return d.sshKeyPath() + ".pub"
}
func (d *Driver) sshKeyPath() string {
return path.Join(d.storePath, "id_rsa")
return d.GetSSHKeyPath() + ".pub"
}
func (d *Driver) Kill() error {
@ -430,19 +426,3 @@ func (d *Driver) Start() error {
func (d *Driver) Stop() error {
return d.getClient().VirtualGuest().PowerOff(d.Id)
}
func (d *Driver) Upgrade() error {
log.Debugf("Upgrading Docker")
cmd, err := d.GetSSHCommand("sudo apt-get update && sudo apt-get install --upgrade lxc-docker")
if err != nil {
return err
}
if err := cmd.Run(); err != nil {
return err
}
return cmd.Run()
}