Skip to content

Commit edcb73d

Browse files
authored
chore: Handles cluster deletion error during regional outage simulation (#3866)
* chore: Handles cluster deletion during regional outage simulation * chore: Enhance cluster removal logic to log deletion failures during outage simulations * chore: Retry cluster deletion after outage simulation to handle deletion failures
1 parent 92b88af commit edcb73d

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

internal/testutil/clean/org_clean_test.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)