From 4ea29542f0d4ad61223fd121a61e79c237b0ab85 Mon Sep 17 00:00:00 2001 From: bertiethorpe Date: Tue, 29 Apr 2025 14:34:04 +0000 Subject: [PATCH] revert to ci_cluster delete within a loop --- .github/workflows/nightly-cleanup.yml | 30 ++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/.github/workflows/nightly-cleanup.yml b/.github/workflows/nightly-cleanup.yml index cc1d14c1e..897d3572d 100644 --- a/.github/workflows/nightly-cleanup.yml +++ b/.github/workflows/nightly-cleanup.yml @@ -59,10 +59,34 @@ jobs: - name: Delete CI clusters run: | . venv/bin/activate - if [[ -z "${ci_clusters}" ]]; then + if [[ -z ${ci_clusters} ]]; then echo "No clusters to delete." exit 0 fi - echo "Deleting clusters: ${ci_clusters}" - ./dev/delete-cluster.py ${ci_clusters} --force + + for cluster_prefix in ${ci_clusters} + do + echo "Processing cluster: $cluster_prefix" + + # Get all servers with the matching name for control node + CONTROL_SERVERS=$(openstack server list --name ${cluster_prefix}-control --format json) + + # Get unique server names to avoid duplicate cleanup + UNIQUE_NAMES=$(echo "$CONTROL_SERVERS" | jq -r '.[].Name' | sort | uniq) + for name in $UNIQUE_NAMES; do + echo "Deleting cluster with control node: $name" + + # Get the first matching server ID by name + server=$(echo "$CONTROL_SERVERS" | jq -r '.[] | select(.Name=="'"$name"'") | .ID' | head -n1) + + # Make sure server still exists (wasn't deleted earlier) + if ! openstack server show "$server" &>/dev/null; then + echo "Server $server no longer exists, skipping $name." + continue + fi + + echo "Deleting cluster $cluster_prefix (server $server)..." + ./dev/delete-cluster.py $cluster_prefix --force + done + done shell: bash