Last active
August 27, 2018 13:30
-
-
Save ssbarnea/db5a0089f48405f9a92d73e2361b87b0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set -eu | |
die () { | |
echo >&2 "$@" | |
exit 1 | |
} | |
[ "$#" -eq 1 ] || die "ERROR: 1 argument required, $# provided. Please specify a name pattern for matching resources to remove, like 'sahara-188-' " | |
PATTERN=$1 | |
SERVERS=$(openstack server list --format=value -c Name | grep $PATTERN | sort) | |
ROUTERS=$(openstack router list --format=value -c Name | grep $PATTERN | sort) | |
NETWORKS=$(openstack network list --format=value -c Name | grep $PATTERN | sort) | |
KEYPAIRS=$(openstack keypair list --format=value -c 'Name' | grep $PATTERN | sort) | |
echo -e "INFO: servers:\n$SERVERS" | |
echo -e "INFO: routers:\n$ROUTERS" | |
echo -e "INFO: networks:\n$NETWORKS" | |
echo -e "INFO: keypairs:\n$KEYPAIRS" | |
read -p "Are you sure you want to delete all these resources? " -n 1 -r | |
echo # (optional) move to a new line | |
if [[ $REPLY =~ ^[Yy]$ ]] | |
then | |
for SERVER in $SERVERS | |
do | |
openstack server delete $SERVER & | |
done | |
wait $(jobs -p) | |
for ROUTER in $ROUTERS | |
do | |
openstack router unset --external-gateway $ROUTER | |
for PORT in $(openstack port list --router $ROUTER --format=value -c ID) | |
do | |
openstack router remove port $ROUTER $PORT | |
done | |
openstack router delete $ROUTER | |
done | |
for NETWORK in $NETWORKS | |
do | |
for PORT in $(openstack port list --network $NETWORK --format=value -c ID) | |
do | |
openstack port delete $PORT & | |
done | |
wait $(jobs -p) | |
openstack network delete $NETWORK | |
done | |
for KEYPAIR in $KEYPAIRS | |
do | |
openstack keypair delete $KEYPAIR & | |
done | |
wait $(jobs -p) | |
fi | |
echo "INFO: done running $0" |
I created a repository for the "tool" so we can track bugs an include fixes.
From now on, please use https://github.com/ssbarnea/osclean -- i will remove the gist at some point.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This is nice, but I miss more objects such as volumes or images.