diff --git a/contrib/scripts/orphan-clean-up/README.md b/contrib/scripts/orphan-clean-up/README.md index a6a25a4e7d..6fdf51bbbf 100644 --- a/contrib/scripts/orphan-clean-up/README.md +++ b/contrib/scripts/orphan-clean-up/README.md @@ -2,20 +2,47 @@ ## Overview -The Orphan Clean Up script is a basic PowerShell script to delete orphaned entities in the catalog. This script also assumes that you do not have authentication setup for your Backstage API endpoints. +The Orphan Clean Up scripts are a basic scripts to delete orphaned entities in the catalog. + +This script also assumes that you do not have authentication setup for your Backstage API endpoints. _Warning:_ There is a risk of entities being orphaned (and being deleted by this script) in case of the location having problems and returning a 404 status code. This might lead to accidental deletion of entities until the processing loop has recreated the entity. -## Requirements +## PowerShell + +A PowerShell implementation of the orphan cleanup script. + +### Requirements This script is PowerShell based so therefore needs to be ran in a PowerShell session. If you are not able to use PowerShell the script should give you a clear idea as to how to create it with another scripting language like Bash. -## Usage +### Usage Here's how to use the script: -1. Download the script +1. Download the `OrphanCleanUp.ps1` script 2. Now start a PowerShell session 3. Next navigate to the location you downloaded the script 4. Then run this command replacing `https:\\backstage.my-company.com` with the URL of your Backstage instance: `.\OrphanCleanUp.ps1 https:\\backstage.my-company.com` 5. The script will output the number of orphaned entities it finds and then the name for each one it deletes + +## Bash + +A bash implementation of the orphan cleanup script. + +### Requirements + +This script is shell based and requires the following programs to be installed on your system: + +- curl +- jq + +### Usage + +Here's how to use the script: + +1. Download the `orphan_cleanup.sh` script +2. Now start a bash session +3. Next navigate to the location you downloaded the script +4. Then run this command replacing `https://backstage.my-company.com` with the URL of your Backstage instance: `./orphan_cleanup.sh https://backstage.my-company.com` +5. The script will output the number of orphaned entities it finds and then the name for each one it deletes diff --git a/contrib/scripts/orphan-clean-up/orphan_cleanup.sh b/contrib/scripts/orphan-clean-up/orphan_cleanup.sh new file mode 100755 index 0000000000..6ffe4737fb --- /dev/null +++ b/contrib/scripts/orphan-clean-up/orphan_cleanup.sh @@ -0,0 +1,22 @@ +#!/bin/bash + +set -euo pipefail + +# Cleanes up orphaned entities for the provided Backstage URL, defaults to the local backend +BACKSTAGE_URL=${1:-'http://localhost:7007'} +echo $BACKSTAGE_URL + +ORPHAN_API_URL="$BACKSTAGE_URL/api/catalog/entities?filter=metadata.annotations.backstage.io/orphan=true" +ORPHAN_DELETE_API_URL="$BACKSTAGE_URL/api/catalog/entities/by-uid" + +ORPHANS=$(curl -s $ORPHAN_API_URL) + +echo "" +echo "Found $(echo $ORPHANS | jq length ) orphaned entities" +echo "" + +jq -c '.[]' <<< $ORPHANS | while read ORPHAN; do + echo $ORPHAN | jq "." + echo "Deleting orphan entity: $(echo $ORPHAN | jq -r .metadata.name) of kind: $(echo $ORPHAN | jq -r .kind)" + curl -X DELETE "$ORPHAN_DELETE_API_URL/$(echo $ORPHAN | jq -r .metadata.uid)" +done