@@ -246,19 +246,36 @@ func (d *Driver) chooseVirtualSwitch() (string, error) {
246246 return d .VSwitch , nil
247247}
248248
249- func (d * Driver ) wait () error {
249+ // waitForIP waits until the host has a valid IP
250+ func (d * Driver ) waitForIP () (string , error ) {
250251 log .Infof ("Waiting for host to start..." )
251252
252253 for {
253254 ip , _ := d .GetIP ()
254255 if ip != "" {
255- break
256+ return ip , nil
256257 }
257258
258259 time .Sleep (1 * time .Second )
259260 }
261+ }
260262
261- return nil
263+ // waitStopped waits until the host is stopped
264+ func (d * Driver ) waitStopped () error {
265+ log .Infof ("Waiting for host to stop..." )
266+
267+ for {
268+ s , err := d .GetState ()
269+ if err != nil {
270+ return err
271+ }
272+
273+ if s != state .Running {
274+ return nil
275+ }
276+
277+ time .Sleep (1 * time .Second )
278+ }
262279}
263280
264281// Start starts an host
@@ -267,14 +284,14 @@ func (d *Driver) Start() error {
267284 return err
268285 }
269286
270- if err := d .wait (); err != nil {
287+ ip , err := d .waitForIP ()
288+ if err != nil {
271289 return err
272290 }
273291
274- var err error
275- d .IPAddress , err = d .GetIP ()
292+ d .IPAddress = ip
276293
277- return err
294+ return nil
278295}
279296
280297// Stop stops an host
@@ -283,17 +300,8 @@ func (d *Driver) Stop() error {
283300 return err
284301 }
285302
286- for {
287- s , err := d .GetState ()
288- if err != nil {
289- return err
290- }
291-
292- if s != state .Running {
293- break
294- }
295-
296- time .Sleep (1 * time .Second )
303+ if err := d .waitStopped (); err != nil {
304+ return err
297305 }
298306
299307 d .IPAddress = ""
@@ -333,17 +341,8 @@ func (d *Driver) Kill() error {
333341 return err
334342 }
335343
336- for {
337- s , err := d .GetState ()
338- if err != nil {
339- return err
340- }
341-
342- if s != state .Running {
343- break
344- }
345-
346- time .Sleep (1 * time .Second )
344+ if err := d .waitStopped (); err != nil {
345+ return err
347346 }
348347
349348 d .IPAddress = ""
0 commit comments