@@ -247,20 +247,31 @@ func removeClusters(ctx context.Context, t *testing.T, dryRun bool, client *admi
247247 clusters , _ , err := client .ClustersApi .ListClusters (ctx , projectID ).ItemsPerPage (itemsPerPage ).Execute ()
248248 require .NoError (t , err )
249249 clustersResults := clusters .GetResults ()
250+ deleteFailures := []string {}
250251
251252 for i := range clustersResults {
252253 c := clustersResults [i ]
253254 cName := c .GetName ()
254255 t .Logf ("delete cluster %s" , cName )
255256 if ! dryRun {
256257 _ , err = client .ClustersApi .DeleteCluster (ctx , projectID , cName ).Execute ()
258+ if admin .IsErrorCode (err , "CANNOT_TERMINATE_CLUSTER_WITH_UNDERGOING_REGIONAL_OUTAGE_SIMULATION" ) {
259+ t .Logf ("cluster %s has ongoing region outage simulation, deleting it now" , cName )
260+ _ , _ , err = client .ClusterOutageSimulationApi .EndOutageSimulation (ctx , projectID , cName ).Execute ()
261+ if err != nil {
262+ deleteFailures = append (deleteFailures , fmt .Sprintf ("Unable to delete %s (cluster simulation stuck), might require manual action: %s" , cName , err ))
263+ continue
264+ }
265+ _ , err = client .ClustersApi .DeleteCluster (ctx , projectID , cName ).Execute () // Retry deletion after ending outage simulation
266+ }
257267 if admin .IsErrorCode (err , "CLUSTER_ALREADY_REQUESTED_DELETION" ) {
258268 t .Logf ("cluster %s already requested deletion" , cName )
259269 continue
260270 }
261271 require .NoError (t , err )
262272 }
263273 }
274+ require .Empty (t , deleteFailures , strings .Join (deleteFailures , "\n " ))
264275 return len (clustersResults )
265276}
266277
0 commit comments