diff --git a/commands.go b/commands.go index 42a1fa0c4b..1dcc04763e 100644 --- a/commands.go +++ b/commands.go @@ -381,7 +381,12 @@ func cmdConfig(c *cli.Context) { if err != nil { log.Fatal(err) } - dockerHost := cfg.machineUrl + + dockerHost, err := getHost(c).Driver.GetURL() + if err != nil { + log.Fatal(err) + } + if c.Bool("swarm") { if !cfg.swarmMaster { log.Fatalf("%s is not a swarm master", cfg.machineName) @@ -394,7 +399,7 @@ func cmdConfig(c *cli.Context) { swarmPort := parts[1] // get IP of machine to replace in case swarm host is 0.0.0.0 - mUrl, err := url.Parse(cfg.machineUrl) + mUrl, err := url.Parse(dockerHost) if err != nil { log.Fatal(err) } @@ -404,6 +409,8 @@ func cmdConfig(c *cli.Context) { dockerHost = fmt.Sprintf("tcp://%s:%s", machineIp, swarmPort) } + log.Debug(dockerHost) + u, err := url.Parse(cfg.machineUrl) if err != nil { log.Fatal(err) diff --git a/drivers/amazonec2/amazonec2.go b/drivers/amazonec2/amazonec2.go index 88f89915bb..26353957ae 100644 --- a/drivers/amazonec2/amazonec2.go +++ b/drivers/amazonec2/amazonec2.go @@ -384,10 +384,14 @@ func (d *Driver) Create() error { } func (d *Driver) GetURL() (string, error) { - if d.IPAddress == "" { + ip, err := d.GetIP() + if err != nil { + return "", err + } + if ip == "" { return "", nil } - return fmt.Sprintf("tcp://%s:%d", d.IPAddress, dockerPort), nil + return fmt.Sprintf("tcp://%s:%d", ip, dockerPort), nil } func (d *Driver) GetIP() (string, error) { diff --git a/host.go b/host.go index 417ebc7502..721f7390db 100644 --- a/host.go +++ b/host.go @@ -610,6 +610,11 @@ func (h *Host) Start() error { if err := h.Driver.Start(); err != nil { return err } + + if err := h.SaveConfig(); err != nil { + return err + } + return utils.WaitFor(h.MachineInState(state.Running)) } @@ -617,6 +622,11 @@ func (h *Host) Stop() error { if err := h.Driver.Stop(); err != nil { return err } + + if err := h.SaveConfig(); err != nil { + return err + } + return utils.WaitFor(h.MachineInState(state.Stopped)) } @@ -624,6 +634,11 @@ func (h *Host) Kill() error { if err := h.Driver.Stop(); err != nil { return err } + + if err := h.SaveConfig(); err != nil { + return err + } + return utils.WaitFor(h.MachineInState(state.Stopped)) } @@ -631,15 +646,23 @@ func (h *Host) Restart() error { if err := h.Stop(); err != nil { return err } + if err := utils.WaitFor(h.MachineInState(state.Stopped)); err != nil { return err } + if err := h.Start(); err != nil { return err } + if err := utils.WaitFor(h.MachineInState(state.Running)); err != nil { return err } + + if err := h.SaveConfig(); err != nil { + return err + } + return nil } @@ -654,6 +677,11 @@ func (h *Host) Remove(force bool) error { return err } } + + if err := h.SaveConfig(); err != nil { + return err + } + return h.removeStorePath() } diff --git a/utils/certs.go b/utils/certs.go index e2c22ad31d..84361f7694 100644 --- a/utils/certs.go +++ b/utils/certs.go @@ -192,7 +192,11 @@ func ValidateCertificate(addr, caCertPath, serverCertPath, serverKeyPath string) return false, err } - _, err = tls.Dial("tcp", addr, tlsConfig) + dialer := &net.Dialer{ + Timeout: time.Second * 2, + } + + _, err = tls.DialWithDialer(dialer, "tcp", addr, tlsConfig) if err != nil { return false, nil }