@@ -75,6 +75,23 @@ func createServerSpeed(server *serverExtended) {
75
75
log .Printf ("Time to create a server: %s" , t )
76
76
}
77
77
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
+
78
95
func waitForServer (client * gophercloud.ServiceClient , id string , secs float64 ) (* serverExtended , error ) {
79
96
var server serverExtended
80
97
var err error
@@ -1004,6 +1021,9 @@ func createServerRetry(dstServerClient *gophercloud.ServiceClient, createOpts se
1004
1021
if err := servers .Delete (dstServerClient , dstServerID ).ExtractErr (); err != nil {
1005
1022
log .Printf ("Error deleting the failed %q server: %s" , dstServerID , err )
1006
1023
}
1024
+ if err := waitForServerDeleted (dstServerClient , dstServerID , waitForServerSec ); err != nil {
1025
+ log .Printf ("Error waiting for %q server to be deleted: %s" , dstServerID , err )
1026
+ }
1007
1027
continue
1008
1028
}
1009
1029
return dstServer , nil
0 commit comments