clean_vpc.sh 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #/bin/bash
  2. set -e
  3. VPC=$1
  4. if [ -z "$VPC" ]; then
  5. echo "Usage: $0 <vpc_id_or_name>"
  6. exit 1
  7. fi
  8. VPC_NAME=$(climc vpc-show $VPC | grep -w " name " | awk '{print $4}')
  9. VPC_ID=$(climc vpc-show $VPC | grep -w " id " | awk '{print $4}')
  10. if [ -z "$VPC_ID" ]; then
  11. echo "Cannot find vpc $VPC"
  12. exit 1
  13. fi
  14. echo "To clean vpc $VPC_NAME($VPC_ID)..."
  15. clean_network() {
  16. climc network-purge $1 > /dev/null
  17. }
  18. clean_wire() {
  19. local WIRE_ID=$1
  20. for net_id in $(climc network-list --admin --wire $WIRE_ID --show-emulated | egrep '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' | awk '{print $2}')
  21. do
  22. clean_network $net_id
  23. done
  24. climc wire-delete $wire_id > /dev/null
  25. }
  26. clean_vpc() {
  27. local VPC_ID=$1
  28. climc vpc-purge $VPC_ID > /dev/null
  29. }
  30. echo "1. Clean wires ..."
  31. for wire_id in $(climc wire-list --vpc $VPC_ID --show-emulated | egrep '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' | awk '{print $2}')
  32. do
  33. clean_wire $wire_id
  34. done
  35. echo "2. Clean route tables ..."
  36. for routetable_id in $(climc routetable-list --vpc $VPC_ID --show-emulated | egrep '[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' | awk '{print $2}')
  37. do
  38. climc routetable-purge $routetable_id >/dev/null
  39. done
  40. echo "3. clean vpc ..."
  41. clean_vpc $VPC_ID