FIX #2941 Wait for Docker after a restart

Signed-off-by: David Gageot <david@gageot.net>
This commit is contained in:
David Gageot 2016-01-27 09:34:40 +01:00
parent 62db9eb370
commit 1bc6cdd357
1 changed files with 18 additions and 17 deletions

View File

@ -104,6 +104,15 @@ func (h *Host) runActionForState(action func() error, desiredState state.State)
return mcnutils.WaitFor(drivers.MachineInState(h.Driver, desiredState))
}
func (h *Host) WaitForDocker() error {
provisioner, err := provision.DetectProvisioner(h.Driver)
if err != nil {
return err
}
return provision.WaitForDocker(provisioner, engine.DefaultPort)
}
func (h *Host) Start() error {
log.Infof("Starting %q...", h.Name)
if err := h.runActionForState(h.Driver.Start, state.Running); err != nil {
@ -112,17 +121,7 @@ func (h *Host) Start() error {
log.Infof("Machine %q was started.", h.Name)
provisioner, err := provision.DetectProvisioner(h.Driver)
if err != nil {
return err
}
// TODO: Migrate away from using hardcoded daemon port.
if err := provision.WaitForDocker(provisioner, engine.DefaultPort); err != nil {
return err
}
return nil
return h.WaitForDocker()
}
func (h *Host) Stop() error {
@ -148,17 +147,19 @@ func (h *Host) Kill() error {
func (h *Host) Restart() error {
log.Infof("Restarting %q...", h.Name)
if drivers.MachineInState(h.Driver, state.Stopped)() {
return h.Start()
}
if drivers.MachineInState(h.Driver, state.Running)() {
if err := h.Start(); err != nil {
return err
}
} else if drivers.MachineInState(h.Driver, state.Running)() {
if err := h.Driver.Restart(); err != nil {
return err
}
return mcnutils.WaitFor(drivers.MachineInState(h.Driver, state.Running))
if err := mcnutils.WaitFor(drivers.MachineInState(h.Driver, state.Running)); err != nil {
return err
}
}
return nil
return h.WaitForDocker()
}
func (h *Host) Upgrade() error {