mirror of https://github.com/docker/docs.git
Merge pull request #995 from exoscale/fix/dont-wait-in-drivers
Don't let drivers wait for SSH/Docker/State
This commit is contained in:
commit
191564564e
|
@ -398,12 +398,6 @@ func (d *Driver) Create() error {
|
|||
d.PrivateIPAddress,
|
||||
)
|
||||
|
||||
log.Infof("Waiting for SSH on %s:%d", d.IPAddress, 22)
|
||||
|
||||
if err := ssh.WaitForTCP(fmt.Sprintf("%s:%d", d.IPAddress, 22)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
log.Debug("Settings tags for instance")
|
||||
tags := map[string]string{
|
||||
"Name": d.MachineName,
|
||||
|
|
|
@ -3,12 +3,10 @@ package azure
|
|||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"net"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
azure "github.com/MSOpenTech/azure-sdk-for-go"
|
||||
"github.com/MSOpenTech/azure-sdk-for-go/clients/vmClient"
|
||||
|
@ -257,9 +255,7 @@ func (d *Driver) Create() error {
|
|||
return err
|
||||
}
|
||||
|
||||
log.Info("Waiting for SSH...")
|
||||
log.Debugf("Host: %s SSH Port: %d", d.getHostname(), d.SSHPort)
|
||||
return ssh.WaitForTCP(fmt.Sprintf("%s:%d", d.getHostname(), d.SSHPort))
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) GetURL() (string, error) {
|
||||
|
@ -315,10 +311,8 @@ func (d *Driver) Start() error {
|
|||
if err := vmClient.StartRole(d.MachineName, d.MachineName, d.MachineName); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := d.waitForSSH(); err != nil {
|
||||
return err
|
||||
}
|
||||
return d.waitForDocker()
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) Stop() error {
|
||||
|
@ -369,10 +363,8 @@ func (d *Driver) Restart() error {
|
|||
if err := vmClient.RestartRole(d.MachineName, d.MachineName, d.MachineName); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := d.waitForSSH(); err != nil {
|
||||
return err
|
||||
}
|
||||
return d.waitForDocker()
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) Kill() error {
|
||||
|
@ -424,40 +416,6 @@ func (d *Driver) addDockerEndpoint(vmConfig *vmClient.Role) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) waitForSSH() error {
|
||||
log.Infof("Waiting for SSH...")
|
||||
return ssh.WaitForTCP(fmt.Sprintf("%s:%v", d.getHostname(), d.SSHPort))
|
||||
}
|
||||
|
||||
func (d *Driver) waitForDocker() error {
|
||||
log.Infof("Waiting for docker daemon on host to be available...")
|
||||
maxRepeats := 48
|
||||
url := fmt.Sprintf("%s:%v", d.getHostname(), d.DockerPort)
|
||||
success := waitForDockerEndpoint(url, maxRepeats)
|
||||
if !success {
|
||||
return errors.New("Can not run docker daemon on remote machine. Please try again.")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func waitForDockerEndpoint(url string, maxRepeats int) bool {
|
||||
counter := 0
|
||||
for {
|
||||
conn, err := net.Dial("tcp", url)
|
||||
if err != nil {
|
||||
time.Sleep(10 * time.Second)
|
||||
counter++
|
||||
if counter == maxRepeats {
|
||||
return false
|
||||
}
|
||||
continue
|
||||
}
|
||||
defer conn.Close()
|
||||
break
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (d *Driver) generateCertForAzure() error {
|
||||
if err := ssh.GenerateSSHKey(d.sshKeyPath()); err != nil {
|
||||
return err
|
||||
|
|
|
@ -194,13 +194,6 @@ func (c *ComputeUtil) createInstance(d *Driver) error {
|
|||
return err
|
||||
}
|
||||
|
||||
instance, err = c.instance()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ip := instance.NetworkInterfaces[0].AccessConfigs[0].NatIP
|
||||
c.waitForSSH(ip)
|
||||
|
||||
// Update the SSH Key
|
||||
sshKey, err := ioutil.ReadFile(d.GetSSHKeyPath() + ".pub")
|
||||
if err != nil {
|
||||
|
@ -280,12 +273,6 @@ func (c *ComputeUtil) waitForGlobalOp(name string) error {
|
|||
})
|
||||
}
|
||||
|
||||
// waitForSSH waits for SSH to become ready on the instance.
|
||||
func (c *ComputeUtil) waitForSSH(ip string) error {
|
||||
log.Infof("Waiting for SSH...")
|
||||
return ssh.WaitForTCP(fmt.Sprintf("%s:22", ip))
|
||||
}
|
||||
|
||||
// ip retrieves and returns the external IP address of the instance.
|
||||
func (c *ComputeUtil) ip() (string, error) {
|
||||
if c.ipAddress == "" {
|
||||
|
|
|
@ -323,12 +323,7 @@ func (d *Driver) wait() error {
|
|||
}
|
||||
time.Sleep(1 * time.Second)
|
||||
}
|
||||
log.Infof("Got IP, waiting for SSH")
|
||||
ip, err := d.GetIP()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return ssh.WaitForTCP(fmt.Sprintf("%s:22", ip))
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) Start() error {
|
||||
|
|
|
@ -369,9 +369,6 @@ func (d *Driver) Create() error {
|
|||
if err := d.lookForIpAddress(); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := d.waitForSSHServer(); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -383,7 +380,7 @@ func (d *Driver) Start() error {
|
|||
if err := d.client.StartInstance(d); err != nil {
|
||||
return err
|
||||
}
|
||||
return d.waitForInstanceToStart()
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) Stop() error {
|
||||
|
@ -395,10 +392,6 @@ func (d *Driver) Stop() error {
|
|||
return err
|
||||
}
|
||||
|
||||
log.WithField("MachineId", d.MachineId).Info("Waiting for the OpenStack instance to stop...")
|
||||
if err := d.client.WaitForInstanceStatus(d, "SHUTOFF", 200); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -426,7 +419,7 @@ func (d *Driver) Restart() error {
|
|||
if err := d.client.RestartInstance(d); err != nil {
|
||||
return err
|
||||
}
|
||||
return d.waitForInstanceToStart()
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) Kill() error {
|
||||
|
@ -695,25 +688,6 @@ func (d *Driver) lookForIpAddress() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) waitForSSHServer() error {
|
||||
ip, err := d.GetIP()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
log.WithFields(log.Fields{
|
||||
"MachineId": d.MachineId,
|
||||
"IP": ip,
|
||||
}).Debug("Waiting for the SSH server to be started...")
|
||||
return ssh.WaitForTCP(fmt.Sprintf("%s:%d", ip, d.SSHPort))
|
||||
}
|
||||
|
||||
func (d *Driver) waitForInstanceToStart() error {
|
||||
if err := d.waitForInstanceActive(); err != nil {
|
||||
return err
|
||||
}
|
||||
return d.waitForSSHServer()
|
||||
}
|
||||
|
||||
func (d *Driver) publicSSHKeyPath() string {
|
||||
return d.GetSSHKeyPath() + ".pub"
|
||||
}
|
||||
|
|
|
@ -399,17 +399,6 @@ func (d *Driver) Create() error {
|
|||
d.getIp()
|
||||
d.waitForStart()
|
||||
d.waitForSetupTransactions()
|
||||
ssh.WaitForTCP(d.IPAddress + ":22")
|
||||
|
||||
cmd, err := drivers.GetSSHCommandFromDriver(d, "sudo apt-get update && DEBIAN_FRONTEND=noninteractive sudo apt-get install -yq curl")
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
}
|
||||
if err := cmd.Run(); err != nil {
|
||||
return err
|
||||
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -343,7 +343,7 @@ func (d *Driver) Start() error {
|
|||
if err := vbm("startvm", d.MachineName, "--type", "headless"); err != nil {
|
||||
return err
|
||||
}
|
||||
log.Infof("Waiting for VM to start...")
|
||||
log.Infof("Starting VM...")
|
||||
case state.Paused:
|
||||
if err := vbm("controlvm", d.MachineName, "resume", "--type", "headless"); err != nil {
|
||||
return err
|
||||
|
@ -353,7 +353,7 @@ func (d *Driver) Start() error {
|
|||
log.Infof("VM not in restartable state")
|
||||
}
|
||||
|
||||
return ssh.WaitForTCP(fmt.Sprintf("localhost:%d", d.SSHPort))
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Driver) Stop() error {
|
||||
|
|
|
@ -409,24 +409,6 @@ func (d *Driver) Create() error {
|
|||
return err
|
||||
}
|
||||
|
||||
log.Infof("Waiting for SSH...")
|
||||
|
||||
if err := ssh.WaitForTCP(fmt.Sprintf("%s:%d", d.PublicIP, d.SSHPort)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
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 )"
|
||||
|
||||
log.Debugf("Connectivity and DNS sanity test...")
|
||||
cmd, err := drivers.GetSSHCommandFromDriver(d, connTest)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := cmd.Run(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
log.Debugf("Disconnecting from vCloud Air...")
|
||||
|
||||
if err = p.Disconnect(); err != nil {
|
||||
|
|
Loading…
Reference in New Issue