Advertisement
Guest User

Untitled

a guest
Sep 19th, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.58 KB | None | 0 0
  1. #!/bin/bash
  2. source /root/admin-openrc.sh
  3. TEST=true
  4.  
  5. query=""
  6. if [[ ${1} = "--test=false" ]] ; then
  7. TEST=false
  8. shift $@
  9. fi
  10.  
  11. while (( $# ))
  12. do
  13. query="$query and .Name != '$1'"
  14. done
  15. [[ $query != "" ]] && query=" | select( ${query:5} )"
  16. echo "Whitelist Query: @ $query @"
  17.  
  18. echo "Getting servers list ..."
  19. servers=$(openstack server list --all --format json)
  20. echo "Done"
  21.  
  22. echo "Getting volumes list ..."
  23. volumes=$(openstack volume list --all --format json)
  24. echo "Done"
  25. iifs="$IFS"
  26. IFS=$'\n'
  27.  
  28. echo "Finding orphane volumes ..."
  29. for volume in $(echo $volumes | jq ".[] | select (.\"Attached to\" == \"\") | @base64" )
  30. do
  31. volume=$(echo $volume | sed 's/"//g' | base64 --decode )
  32. vid=$(echo $volume | jq '.ID')
  33. vname=$(echo $volume | jq '.Name')
  34. if [ $TEST ] ; then
  35. echo "$vid:$vname => ..."
  36. else
  37. echo openstack volume remove $vid
  38. fi
  39. done
  40. echo "Done"
  41. echo "Finding non blacklisted servers ..."
  42. for server in $(echo $servers | jq ".[] $query | @base64")
  43. do
  44. server=$(echo $server | sed 's/"//g' | base64 --decode )
  45. sid=$(echo $server | jq '.ID')
  46. sname=$(echo $server | jq '.Name')
  47. if [ $TEST ] ; then
  48. echo "Removing $name"
  49. else
  50. echo openstack server delete $sid
  51. fi
  52. echo "Finding server volumes ..."
  53. for volume in $(echo $volumes | jq ".[] | select (.\"Attached to\" | contains($sid)) | @base64")
  54. do
  55. volume=$(echo $volume | sed 's/"//g' | base64 --decode )
  56. vid=$(echo $volume| jq '.ID')
  57. vname=$(echo $volume | jq '.Name')
  58. if [ $TEST ] ; then
  59. echo "$vid:$vname => $sname"
  60. else
  61. echo openstack volume remove $vid
  62. fi
  63. done
  64. echo "Remove Server $sname"
  65. done
  66. echo "Done"
  67. IFS="$iifs"
  68. exit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement