@@ -89,6 +89,7 @@ func (d *Driver) SetConfigFromFlags(flags drivers.DriverOptions) error {
89
89
d .SSHPassword = flags .String ("vmware-ssh-password" )
90
90
d .SSHPort = 22
91
91
d .NoShare = flags .Bool ("vmware-no-share" )
92
+ d .WaitIP = flags .Int ("vmware-wait-ip" )
92
93
93
94
// We support a maximum of 16 cpu to be consistent with Virtual Hardware 10
94
95
// specs.
@@ -123,6 +124,11 @@ func (d *Driver) GetIP() (ip string, err error) {
123
124
return "" , drivers .ErrHostIsNotRunning
124
125
}
125
126
127
+ // attempt to find the address from vmrun
128
+ if ip , err := d .getIPfromVmrun (); err == nil {
129
+ return ip , err
130
+ }
131
+
126
132
// determine MAC address for VM
127
133
macaddr , err := d .getMacAddressFromVmx ()
128
134
if err != nil {
@@ -401,6 +407,18 @@ func (d *Driver) getMacAddressFromVmx() (string, error) {
401
407
return macaddr , nil
402
408
}
403
409
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
+
404
422
func (d * Driver ) getIPfromVmnetConfiguration (macaddr string ) (string , error ) {
405
423
406
424
// DHCP lease table for NAT vmnet interface
0 commit comments