Back
9_neutron_cleanup
#!/bin/env bash
# ================================================================
# OPENSTACK NETWORK MANAGEMENT — CLEANUP
# ================================================================
set -euo pipefail
REGION="ap-south-1"
NODE_NAME="Practical-OpenStack-Node"
KEY_NAME="Practical-KeyPair"
info() { echo -e "\033[0;34m[INFO]\033[0m $*"; }
success() { echo -e "\033[0;32m[OK]\033[0m $*"; }
info "Locating OpenStack Node..."
NODE_IP=$(aws ec2 describe-instances \
--filters "Name=tag:Name,Values=$NODE_NAME" "Name=instance-state-name,Values=running" \
--region "$REGION" --query "Reservations[0].Instances[0].PublicIpAddress" --output text)
if [[ "$NODE_IP" == "None" || -z "$NODE_IP" ]]; then
info "OpenStack Node not found. Skipping network cleanup."
exit 0
fi
info "Cleaning up OpenStack networks via SSH..."
ssh -i "$HOME/${KEY_NAME}.pem" -o StrictHostKeyChecking=no ubuntu@$NODE_IP <<'EOF'
source /home/ubuntu/devstack/openrc admin admin 2>/dev/null || exit 0
echo "1. Deleting instance 'advanced-net-instance'..."
openstack server delete advanced-net-instance 2>/dev/null || true
sleep 5 # Wait for port detachment
echo "2. Releasing Floating IPs..."
for FIP in $(openstack floating ip list -f value -c "Floating IP Address"); do
openstack floating ip delete $FIP 2>/dev/null || true
done
echo "3. Detaching subnet from router..."
openstack router remove subnet custom-router custom-subnet 2>/dev/null || true
echo "4. Deleting router 'custom-router'..."
openstack router delete custom-router 2>/dev/null || true
echo "5. Deleting network 'custom-network' and its subnets..."
openstack network delete custom-network 2>/dev/null || true
echo "6. Deleting compute prerequisites (Flavor, Image, KeyPair)..."
openstack flavor delete m1.nano 2>/dev/null || true
openstack image delete "CirrOS 0.6.2" 2>/dev/null || true
openstack keypair delete my-key 2>/dev/null || true
rm -f /home/ubuntu/my-key.pem
EOF
success "OpenStack network resources cleaned up."