Skip to content

Commit 1c6ceed

Browse files
committed
Fix Restart() for some drivers
Signed-off-by: David Gageot <david@gageot.net>
1 parent c045cee commit 1c6ceed

File tree

2 files changed

+17
-9
lines changed

2 files changed

+17
-9
lines changed

drivers/google/google.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,11 @@ func (d *Driver) Remove() error {
342342
return c.deleteDisk()
343343
}
344344

345+
// Restart restarts a machine which is known to be running.
345346
func (d *Driver) Restart() error {
346-
return nil
347+
if err := d.Stop(); err != nil {
348+
return err
349+
}
350+
351+
return d.Start()
347352
}

drivers/virtualbox/virtualbox.go

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -500,6 +500,10 @@ func (d *Driver) Start() error {
500500
return ErrMustEnableVTX
501501
}
502502

503+
return d.waitForIP()
504+
}
505+
506+
func (d *Driver) waitForIP() error {
503507
// Wait for SSH over NAT to be available before returning to user
504508
if err := drivers.WaitForSSH(d); err != nil {
505509
return err
@@ -510,6 +514,7 @@ func (d *Driver) Start() error {
510514
return err
511515
}
512516

517+
var err error
513518
d.IPAddress, err = d.GetIP()
514519

515520
return err
@@ -572,18 +577,16 @@ func (d *Driver) Remove() error {
572577
return d.vbm("unregistervm", "--delete", d.MachineName)
573578
}
574579

580+
// Restart restarts a machine which is known to be running.
575581
func (d *Driver) Restart() error {
576-
s, err := d.GetState()
577-
if err != nil {
582+
log.Infof("Restarting VM...")
583+
if err := d.vbm("controlvm", d.MachineName, "reset"); err != nil {
578584
return err
579585
}
580586

581-
if s == state.Running {
582-
if err := d.Stop(); err != nil {
583-
return err
584-
}
585-
}
586-
return d.Start()
587+
d.IPAddress = ""
588+
589+
return d.waitForIP()
587590
}
588591

589592
func (d *Driver) Kill() error {

0 commit comments

Comments
 (0)