mirror of https://github.com/docker/docs.git
Wait for machine to start/stop
Signed-off-by: David Gageot <david@gageot.net>
This commit is contained in:
parent
8b31854a80
commit
fa8fa69e7c
|
|
@ -246,42 +246,23 @@ func (d *Driver) chooseVirtualSwitch() (string, error) {
|
||||||
return d.VSwitch, nil
|
return d.VSwitch, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *Driver) wait() error {
|
// waitForIP waits until the host has a valid IP
|
||||||
|
func (d *Driver) waitForIP() (string, error) {
|
||||||
log.Infof("Waiting for host to start...")
|
log.Infof("Waiting for host to start...")
|
||||||
|
|
||||||
for {
|
for {
|
||||||
ip, _ := d.GetIP()
|
ip, _ := d.GetIP()
|
||||||
if ip != "" {
|
if ip != "" {
|
||||||
break
|
return ip, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
time.Sleep(1 * time.Second)
|
time.Sleep(1 * time.Second)
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Start starts an host
|
// waitStopped waits until the host is stopped
|
||||||
func (d *Driver) Start() error {
|
func (d *Driver) waitStopped() error {
|
||||||
if err := cmd("Start-VM", d.MachineName); err != nil {
|
log.Infof("Waiting for host to stop...")
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := d.wait(); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
var err error
|
|
||||||
d.IPAddress, err = d.GetIP()
|
|
||||||
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// Stop stops an host
|
|
||||||
func (d *Driver) Stop() error {
|
|
||||||
if err := cmd("Stop-VM", d.MachineName); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
for {
|
for {
|
||||||
s, err := d.GetState()
|
s, err := d.GetState()
|
||||||
|
|
@ -290,11 +271,38 @@ func (d *Driver) Stop() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if s != state.Running {
|
if s != state.Running {
|
||||||
break
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
time.Sleep(1 * time.Second)
|
time.Sleep(1 * time.Second)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Start starts an host
|
||||||
|
func (d *Driver) Start() error {
|
||||||
|
if err := cmd("Start-VM", d.MachineName); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
ip, err := d.waitForIP()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
d.IPAddress = ip
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Stop stops an host
|
||||||
|
func (d *Driver) Stop() error {
|
||||||
|
if err := cmd("Stop-VM", d.MachineName); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := d.waitStopped(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
d.IPAddress = ""
|
d.IPAddress = ""
|
||||||
|
|
||||||
|
|
@ -333,17 +341,8 @@ func (d *Driver) Kill() error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
for {
|
if err := d.waitStopped(); err != nil {
|
||||||
s, err := d.GetState()
|
return err
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if s != state.Running {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
|
|
||||||
time.Sleep(1 * time.Second)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
d.IPAddress = ""
|
d.IPAddress = ""
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue