@@ -89,6 +89,7 @@ func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
8989 d .SSHPassword = flags .String ("vmware-ssh-password" )
9090 d .SSHPort = 22
9191 d .NoShare = flags .Bool ("vmware-no-share" )
92+ d .WaitIP = flags .Int ("vmware-wait-ip" )
9293
9394 // We support a maximum of 16 cpu to be consistent with Virtual Hardware 10
9495 // specs.
@@ -123,6 +124,11 @@ func (d *Driver) GetIP() (ip string, err error) {
123124 return "" , drivers .ErrHostIsNotRunning
124125 }
125126
127+ // attempt to find the address from vmrun
128+ if ip , err := d .getIPfromVmrun (); err == nil {
129+ return ip , err
130+ }
131+
126132 // determine MAC address for VM
127133 macaddr , err := d .getMacAddressFromVmx ()
128134 if err != nil {
@@ -401,6 +407,18 @@ func (d *Driver) getMacAddressFromVmx() (string, error) {
401407 return macaddr , nil
402408}
403409
410+ func (d * Driver ) getIPfromVmrun () (string , error ) {
411+ vmx := d .vmxPath ()
412+
413+ ip := regexp .MustCompile (`\d+\.\d+\.\d+\.\d+` )
414+ stdout , _ , _ := vmrun_wait (time .Duration (d .WaitIP )* time .Millisecond , "getGuestIPAddress" , vmx , "-wait" )
415+ if match := ip .FindString (stdout ); match != "" {
416+ return match , nil
417+ }
418+
419+ return "" , fmt .Errorf ("could not get IP from vmrun" )
420+ }
421+
404422func (d * Driver ) getIPfromVmnetConfiguration (macaddr string ) (string , error ) {
405423
406424 // DHCP lease table for NAT vmnet interface
0 commit comments