From be2b1b363dbd06ca14c6c0f880ee8ae797148911 Mon Sep 17 00:00:00 2001 From: Koichi Shiraishi Date: Sat, 14 Nov 2015 13:45:18 +0900 Subject: [PATCH] Fix GetIP and GetState to Correctly get vm status Signed-off-by: Koichi Shiraishi --- xhyve.go | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/xhyve.go b/xhyve.go index c9e0129..64d53d3 100644 --- a/xhyve.go +++ b/xhyve.go @@ -142,28 +142,28 @@ func (d *Driver) GetURL() (string, error) { } func (d *Driver) GetIP() (string, error) { - s, err := d.GetState() - if err != nil { - return "", err - } - if s != state.Running { - return "", drivers.ErrHostIsNotRunning - } - - ip, err := d.getIPfromDHCPLease() - if err != nil { - return "", err + if d.IPAddress != "" { + return d.IPAddress, nil } - return ip, nil + return d.getIPfromDHCPLease() } func (d *Driver) GetState() (state.State, error) { // TODO - // VMRUN only tells use if the vm is running or not - // if stdout, _, _ := vmrun("list"); strings.Contains(stdout, d.vmxPath()) { + s, err := d.GetSShStates() + if !s { + return state.Stopping, err + } return state.Running, nil - // } - // return state.Stopped, nil +} + +func (d *Driver) GetSShStates() (bool, error) { + log.Debug("Getting to WaitForSSH function...") + if _, err := drivers.RunSSHCommandFromDriver(d, "exit 0"); err != nil { + log.Debugf("Error getting ssh command 'exit 0' : %s", err) + return false, nil + } + return true, nil } // Check VirtualBox version @@ -245,11 +245,10 @@ func (d *Driver) Create() error { if err := d.Start(); err != nil { return err } + log.Infof("Waiting for VM to come online...") var ip string var err error - log.Infof("Waiting for VM to come online...") - log.Debugf("d.MacAddr", d.MacAddr) for i := 1; i <= 60; i++ { ip, err = d.getIPfromDHCPLease() if err != nil {