Skip to content

Commit bff7e97

Browse files
committed
vmwarevcloudair: update with new driver interface
Signed-off-by: Evan Hazlett <ejhazlett@gmail.com>
1 parent 4b034fd commit bff7e97

File tree

2 files changed

+64
-104
lines changed

2 files changed

+64
-104
lines changed

commands.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import (
2626
_ "github.com/docker/machine/drivers/softlayer"
2727
_ "github.com/docker/machine/drivers/virtualbox"
2828
//_ "github.com/docker/machine/drivers/vmwarefusion"
29-
//_ "github.com/docker/machine/drivers/vmwarevcloudair"
29+
_ "github.com/docker/machine/drivers/vmwarevcloudair"
3030
//_ "github.com/docker/machine/drivers/vmwarevsphere"
3131
"github.com/docker/machine/state"
3232
"github.com/docker/machine/utils"

drivers/vmwarevcloudair/vcloudair.go

Lines changed: 63 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ package vmwarevcloudair
77
import (
88
"fmt"
99
"io/ioutil"
10-
"os/exec"
11-
"path"
10+
"path/filepath"
1211
"strings"
1312

1413
"github.com/vmware/govcloudair"
@@ -17,6 +16,7 @@ import (
1716
"github.com/codegangsta/cli"
1817
"github.com/docker/docker/utils"
1918
"github.com/docker/machine/drivers"
19+
"github.com/docker/machine/provider"
2020
"github.com/docker/machine/ssh"
2121
"github.com/docker/machine/state"
2222
)
@@ -36,6 +36,7 @@ type Driver struct {
3636
Catalog string
3737
CatalogItem string
3838
MachineName string
39+
SSHUser string
3940
SSHPort int
4041
DockerPort int
4142
Provision bool
@@ -61,6 +62,7 @@ type CreateFlags struct {
6162
Catalog *string
6263
CatalogItem *string
6364
Name *string
65+
SSHUser string
6466
SSHPort *int
6567
DockerPort *int
6668
Provision *bool
@@ -166,55 +168,88 @@ func NewDriver(machineName string, storePath string, caCert string, privateKey s
166168
return driver, nil
167169
}
168170

171+
func (d *Driver) AuthorizePort(ports []*drivers.Port) error {
172+
return nil
173+
}
174+
175+
func (d *Driver) DeauthorizePort(ports []*drivers.Port) error {
176+
return nil
177+
}
178+
179+
func (d *Driver) GetMachineName() string {
180+
return d.MachineName
181+
}
182+
183+
func (d *Driver) GetSSHHostname() (string, error) {
184+
return d.GetIP()
185+
}
186+
187+
func (d *Driver) GetSSHKeyPath() string {
188+
return filepath.Join(d.storePath, "id_rsa")
189+
}
190+
191+
func (d *Driver) GetSSHPort() (int, error) {
192+
return d.SSHPort, nil
193+
}
194+
195+
func (d *Driver) GetSSHUsername() string {
196+
return d.SSHUser
197+
}
198+
199+
func (d *Driver) GetProviderType() provider.ProviderType {
200+
return provider.Remote
201+
}
202+
169203
// Driver interface implementation
170-
func (driver *Driver) DriverName() string {
204+
func (d *Driver) DriverName() string {
171205
return "vmwarevcloudair"
172206
}
173207

174-
func (driver *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
208+
func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
175209

176-
driver.UserName = flags.String("vmwarevcloudair-username")
177-
driver.UserPassword = flags.String("vmwarevcloudair-password")
178-
driver.VDCID = flags.String("vmwarevcloudair-vdcid")
179-
driver.PublicIP = flags.String("vmwarevcloudair-publicip")
180-
driver.SwarmMaster = flags.Bool("swarm-master")
181-
driver.SwarmHost = flags.String("swarm-host")
182-
driver.SwarmDiscovery = flags.String("swarm-discovery")
210+
d.UserName = flags.String("vmwarevcloudair-username")
211+
d.UserPassword = flags.String("vmwarevcloudair-password")
212+
d.VDCID = flags.String("vmwarevcloudair-vdcid")
213+
d.PublicIP = flags.String("vmwarevcloudair-publicip")
214+
d.SwarmMaster = flags.Bool("swarm-master")
215+
d.SwarmHost = flags.String("swarm-host")
216+
d.SwarmDiscovery = flags.String("swarm-discovery")
183217

184218
// Check for required Params
185-
if driver.UserName == "" || driver.UserPassword == "" || driver.VDCID == "" || driver.PublicIP == "" {
219+
if d.UserName == "" || d.UserPassword == "" || d.VDCID == "" || d.PublicIP == "" {
186220
return fmt.Errorf("Please specify vcloudair mandatory params using options: -vmwarevcloudair-username -vmwarevcloudair-password -vmwarevcloudair-vdcid and -vmwarevcloudair-publicip")
187221
}
188222

189223
// If ComputeID is not set we're using a VPC, hence setting ComputeID = VDCID
190224
if flags.String("vmwarevcloudair-computeid") == "" {
191-
driver.ComputeID = flags.String("vmwarevcloudair-vdcid")
225+
d.ComputeID = flags.String("vmwarevcloudair-vdcid")
192226
} else {
193-
driver.ComputeID = flags.String("vmwarevcloudair-computeid")
227+
d.ComputeID = flags.String("vmwarevcloudair-computeid")
194228
}
195229

196230
// If the Org VDC Network is empty, set it to the default routed network.
197231
if flags.String("vmwarevcloudair-orgvdcnetwork") == "" {
198-
driver.OrgVDCNet = flags.String("vmwarevcloudair-vdcid") + "-default-routed"
232+
d.OrgVDCNet = flags.String("vmwarevcloudair-vdcid") + "-default-routed"
199233
} else {
200-
driver.OrgVDCNet = flags.String("vmwarevcloudair-orgvdcnetwork")
234+
d.OrgVDCNet = flags.String("vmwarevcloudair-orgvdcnetwork")
201235
}
202236

203237
// If the Edge Gateway is empty, just set it to the default edge gateway.
204238
if flags.String("vmwarevcloudair-edgegateway") == "" {
205-
driver.EdgeGateway = flags.String("vmwarevcloudair-vdcid")
239+
d.EdgeGateway = flags.String("vmwarevcloudair-vdcid")
206240
} else {
207-
driver.EdgeGateway = flags.String("vmwarevcloudair-edgegateway")
241+
d.EdgeGateway = flags.String("vmwarevcloudair-edgegateway")
208242
}
209243

210-
driver.Catalog = flags.String("vmwarevcloudair-catalog")
211-
driver.CatalogItem = flags.String("vmwarevcloudair-catalogitem")
244+
d.Catalog = flags.String("vmwarevcloudair-catalog")
245+
d.CatalogItem = flags.String("vmwarevcloudair-catalogitem")
212246

213-
driver.DockerPort = flags.Int("vmwarevcloudair-docker-port")
214-
driver.SSHPort = flags.Int("vmwarevcloudair-ssh-port")
215-
driver.Provision = flags.Bool("vmwarevcloudair-provision")
216-
driver.CPUCount = flags.Int("vmwarevcloudair-cpu-count")
217-
driver.MemorySize = flags.Int("vmwarevcloudair-memory-size")
247+
d.DockerPort = flags.Int("vmwarevcloudair-docker-port")
248+
d.SSHUser = "root"
249+
d.SSHPort = flags.Int("vmwarevcloudair-ssh-port")
250+
d.Provision = flags.Bool("vmwarevcloudair-provision")
251+
d.CPUCount = flags.Int("vmwarevcloudair-cpu-count")
252+
d.MemorySize = flags.Int("vmwarevcloudair-memory-size")
218253

219254
return nil
220255
}
@@ -395,26 +430,10 @@ func (d *Driver) Create() error {
395430
return err
396431
}
397432

398-
log.Info("Configuring Machine...")
399-
400-
log.Debugf("Setting hostname: %s", d.MachineName)
401-
cmd, err := d.GetSSHCommand(fmt.Sprintf(
402-
"echo \"127.0.0.1 %s\" | sudo tee -a /etc/hosts && sudo hostname %s && echo \"%s\" | sudo tee /etc/hostname",
403-
d.MachineName,
404-
d.MachineName,
405-
d.MachineName,
406-
))
407-
if err != nil {
408-
return err
409-
}
410-
if err := cmd.Run(); err != nil {
411-
return err
412-
}
413-
414433
connTest := "ping -c 3 www.google.com >/dev/null 2>&1 && ( echo \"Connectivity and DNS tests passed.\" ) || ( echo \"Connectivity and DNS tests failed, trying to add Nameserver to resolv.conf\"; echo \"nameserver 8.8.8.8\" >> /etc/resolv.conf )"
415434

416435
log.Debugf("Connectivity and DNS sanity test...")
417-
cmd, err = d.GetSSHCommand(connTest)
436+
cmd, err := drivers.GetSSHCommandFromDriver(d, connTest)
418437
if err != nil {
419438
return err
420439
}
@@ -437,7 +456,6 @@ func (d *Driver) Create() error {
437456
}
438457

439458
func (d *Driver) Remove() error {
440-
441459
p, err := govcloudair.NewClient()
442460
if err != nil {
443461
return err
@@ -660,7 +678,6 @@ func (d *Driver) Restart() error {
660678
}
661679

662680
func (d *Driver) Kill() error {
663-
664681
p, err := govcloudair.NewClient()
665682
if err != nil {
666683
return err
@@ -703,58 +720,6 @@ func (d *Driver) Kill() error {
703720

704721
}
705722

706-
func (d *Driver) StartDocker() error {
707-
log.Debug("Starting Docker...")
708-
709-
cmd, err := d.GetSSHCommand("sudo service docker start")
710-
if err != nil {
711-
return err
712-
}
713-
if err := cmd.Run(); err != nil {
714-
return err
715-
}
716-
717-
return nil
718-
}
719-
720-
func (d *Driver) StopDocker() error {
721-
log.Debug("Stopping Docker...")
722-
723-
cmd, err := d.GetSSHCommand("sudo service docker stop")
724-
if err != nil {
725-
return err
726-
}
727-
if err := cmd.Run(); err != nil {
728-
return err
729-
}
730-
731-
return nil
732-
}
733-
734-
func (d *Driver) GetDockerConfigDir() string {
735-
return dockerConfigDir
736-
}
737-
738-
func (d *Driver) Upgrade() error {
739-
log.Debugf("Upgrading Docker")
740-
741-
cmd, err := d.GetSSHCommand("sudo apt-get update && sudo apt-get install --upgrade lxc-docker")
742-
if err != nil {
743-
return err
744-
745-
}
746-
if err := cmd.Run(); err != nil {
747-
return err
748-
749-
}
750-
751-
return cmd.Run()
752-
}
753-
754-
func (d *Driver) GetSSHCommand(args ...string) (*exec.Cmd, error) {
755-
return ssh.GetSSHCommand(d.PublicIP, d.SSHPort, "root", d.sshKeyPath(), args...), nil
756-
}
757-
758723
// Helpers
759724

760725
func generateVMName() string {
@@ -763,8 +728,7 @@ func generateVMName() string {
763728
}
764729

765730
func (d *Driver) createSSHKey() (string, error) {
766-
767-
if err := ssh.GenerateSSHKey(d.sshKeyPath()); err != nil {
731+
if err := ssh.GenerateSSHKey(d.GetSSHKeyPath()); err != nil {
768732
return "", err
769733
}
770734

@@ -776,10 +740,6 @@ func (d *Driver) createSSHKey() (string, error) {
776740
return string(publicKey), nil
777741
}
778742

779-
func (d *Driver) sshKeyPath() string {
780-
return path.Join(d.storePath, "id_rsa")
781-
}
782-
783743
func (d *Driver) publicSSHKeyPath() string {
784-
return d.sshKeyPath() + ".pub"
744+
return d.GetSSHKeyPath() + ".pub"
785745
}

0 commit comments

Comments
 (0)