Skip to content

Commit 59786b0

Browse files
committed
Wait for a VM to be deleted
1 parent 61f6c43 commit 59786b0

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

pkg/server.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,23 @@ func createServerSpeed(server *serverExtended) {
7575
log.Printf("Time to create a server: %s", t)
7676
}
7777

78+
func waitForServerDeleted(client *gophercloud.ServiceClient, id string, secs float64) error {
79+
return NewBackoff(int(secs), backoffFactor, backoffMaxInterval).WaitFor(func() (bool, error) {
80+
_, err := servers.Get(client, id).Extract()
81+
if err != nil {
82+
if _, ok := err.(gophercloud.ErrDefault404); ok {
83+
// server was removed
84+
return true, nil
85+
}
86+
// fail on non 404 error
87+
return false, err
88+
}
89+
90+
// continue status checks
91+
return false, nil
92+
})
93+
}
94+
7895
func waitForServer(client *gophercloud.ServiceClient, id string, secs float64) (*serverExtended, error) {
7996
var server serverExtended
8097
var err error
@@ -1004,6 +1021,9 @@ func createServerRetry(dstServerClient *gophercloud.ServiceClient, createOpts se
10041021
if err := servers.Delete(dstServerClient, dstServerID).ExtractErr(); err != nil {
10051022
log.Printf("Error deleting the failed %q server: %s", dstServerID, err)
10061023
}
1024+
if err := waitForServerDeleted(dstServerClient, dstServerID, waitForServerSec); err != nil {
1025+
log.Printf("Error waiting for %q server to be deleted: %s", dstServerID, err)
1026+
}
10071027
continue
10081028
}
10091029
return dstServer, nil

0 commit comments

Comments
 (0)