Skip to content

Commit

Permalink
Merge pull request #11313 from openshift-cherrypick-robot/cherry-pick…
Browse files Browse the repository at this point in the history
…-11300-to-release-4.17

[release-4.17] Delete leftover dns records when destroying ibmcloud clusters
  • Loading branch information
petr-balogh authored Feb 7, 2025
2 parents b70178a + 3f57380 commit d2afa10
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 0 deletions.
1 change: 1 addition & 0 deletions ocs_ci/deployment/ibmcloud.py
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,7 @@ def destroy_cluster(self, log_level="DEBUG"):
self.delete_volumes(resource_group)
self.delete_leftover_resources(resource_group)
self.delete_resource_group(resource_group)
ibmcloud.delete_dns_records(self.cluster_name)
except Exception as ex:
logger.error(f"During IBM Cloud cleanup some exception occurred {ex}")
raise
Expand Down
44 changes: 44 additions & 0 deletions ocs_ci/utility/ibmcloud.py
Original file line number Diff line number Diff line change
Expand Up @@ -1242,6 +1242,50 @@ def find_free_network_subnets(subnet_cidr, network_prefix=27):
return possible_subnets


def delete_dns_records(cluster_name):
"""
Delete DNS records leftover from cluster destroy.
Args:
cluster_name (str): Name of the cluster, used to filter DNS records
"""
dns_domain_id = config.ENV_DATA["base_domain_id"]
cis_instance_name = config.ENV_DATA["cis_instance_name"]
ids_to_delete = []
page = 1

logger.info(f"Setting cis instance to {cis_instance_name}")
run_ibmcloud_cmd(f"ibmcloud cis instance-set {cis_instance_name}")

while True:
out = run_ibmcloud_cmd(
f"ibmcloud cis dns-records {dns_domain_id} --per-page 1000 --page {page} --output json"
)
records = json.loads(out)
if not records:
logger.info("Reached end of pagination")
break

filter_string = f".{cluster_name}."
logger.info(f"Searching for records with string: {filter_string}")
for record in records:
if filter_string in record["name"]:
logger.info(f"Found {record['name']}, marking for deletion")
ids_to_delete.append(record["id"])
page += 1

logger.info(f"Records to delete: {ids_to_delete}")
for record_id in ids_to_delete:
logger.info(f"Deleting DNS record: {record_id}")
try:
run_ibmcloud_cmd(
f"ibmcloud cis dns-record-delete {dns_domain_id} {record_id}"
)
except CommandFailed:
logger.exception("Failed to delete CIS leftovers")


class IBMCloudObjectStorage:
"""
IBM Cloud Object Storage (COS) class
Expand Down

0 comments on commit d2afa10

Please sign in to comment.