mirror of https://github.com/docker/docs.git
37 lines
738 B
Go
37 lines
738 B
Go
package virtualbox
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/docker/machine/libmachine/drivers"
|
|
"github.com/docker/machine/libmachine/mcnutils"
|
|
)
|
|
|
|
// IPWaiter waits for an IP to be configured.
|
|
type IPWaiter interface {
|
|
Wait(d *Driver) error
|
|
}
|
|
|
|
func NewIPWaiter() IPWaiter {
|
|
return &sshIPWaiter{}
|
|
}
|
|
|
|
type sshIPWaiter struct{}
|
|
|
|
func (w *sshIPWaiter) Wait(d *Driver) error {
|
|
// Wait for SSH over NAT to be available before returning to user
|
|
if err := drivers.WaitForSSH(d); err != nil {
|
|
return err
|
|
}
|
|
|
|
// Bail if we don't get an IP from DHCP after a given number of seconds.
|
|
if err := mcnutils.WaitForSpecific(d.hostOnlyIPAvailable, 5, 4*time.Second); err != nil {
|
|
return err
|
|
}
|
|
|
|
var err error
|
|
d.IPAddress, err = d.GetIP()
|
|
|
|
return err
|
|
}
|