46 lines
1.8 KiB
Bash
Executable File
46 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Function to handle image deletion logic
|
|
delete_images() {
|
|
local image_type="$1"
|
|
local filter="$2"
|
|
local kept_images=0
|
|
|
|
echo "Processing ${image_type} images"
|
|
images=$(gcloud compute images list --sort-by=~creationTimestamp --filter="${filter} AND creationTimestamp < ${DELETE_BEFORE_DATE}" --format='value(NAME)')
|
|
|
|
for image in ${images}; do
|
|
if [[ "${kept_images}" -lt "${KEEP_LATEST_IMAGE_COUNT}" ]]; then
|
|
((kept_images++))
|
|
echo "Keeping image ${kept_images} named ${image}"
|
|
else
|
|
echo "Deleting image: ${image}"
|
|
gcloud compute images delete "${image}" || echo "Failed to delete image: ${image}"
|
|
fi
|
|
done
|
|
}
|
|
|
|
# Check if necessary variables are set
|
|
if ! [[ "${DELETE_AGE_DAYS}" =~ ^[0-9]+$ && "${KEEP_LATEST_IMAGE_COUNT}" =~ ^[0-9]+$ ]]; then
|
|
echo "ERROR: One or more required variables are not set or not numeric"
|
|
exit 1
|
|
fi
|
|
|
|
# Set pipefail
|
|
set -o pipefail
|
|
|
|
# Calculate the date before which images should be deleted
|
|
DELETE_BEFORE_DATE=$(date --date="${DELETE_AGE_DAYS} days ago" '+%Y%m%d')
|
|
|
|
# Mainnet and Testnet zebrad checkpoint
|
|
delete_images "Mainnet zebrad checkpoint" "name~^zebrad-cache-.*-mainnet-checkpoint" # As of April 2023, these disk names look like: zebrad-cache-6556-merge-a2ca4de-v25-mainnet-tip(-u)?-140654
|
|
delete_images "Testnet zebrad checkpoint" "name~^zebrad-cache-.*-testnet-checkpoint"
|
|
|
|
# Mainnet and Testnet zebrad tip
|
|
delete_images "Mainnet zebrad tip" "name~^zebrad-cache-.*-mainnet-tip"
|
|
delete_images "Testnet zebrad tip" "name~^zebrad-cache-.*-testnet-tip"
|
|
|
|
# Mainnet and Testnet lightwalletd tip
|
|
delete_images "Mainnet lightwalletd tip" "name~^lwd-cache-.*-mainnet-tip"
|
|
delete_images "Testnet lightwalletd tip" "name~^lwd-cache-.*-testnet-tip"
|