Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- source /root/admin-openrc.sh
- TEST=true
- query=""
- if [[ ${1} = "--test=false" ]] ; then
- TEST=false
- shift $@
- fi
- while (( $# ))
- do
- query="$query and .Name != '$1'"
- done
- [[ $query != "" ]] && query=" | select( ${query:5} )"
- echo "Whitelist Query: @ $query @"
- echo "Getting servers list ..."
- servers=$(openstack server list --all --format json)
- echo "Done"
- echo "Getting volumes list ..."
- volumes=$(openstack volume list --all --format json)
- echo "Done"
- iifs="$IFS"
- IFS=$'\n'
- echo "Finding orphane volumes ..."
- for volume in $(echo $volumes | jq ".[] | select (.\"Attached to\" == \"\") | @base64" )
- do
- volume=$(echo $volume | sed 's/"//g' | base64 --decode )
- vid=$(echo $volume | jq '.ID')
- vname=$(echo $volume | jq '.Name')
- if [ $TEST ] ; then
- echo "$vid:$vname => ..."
- else
- echo openstack volume remove $vid
- fi
- done
- echo "Done"
- echo "Finding non blacklisted servers ..."
- for server in $(echo $servers | jq ".[] $query | @base64")
- do
- server=$(echo $server | sed 's/"//g' | base64 --decode )
- sid=$(echo $server | jq '.ID')
- sname=$(echo $server | jq '.Name')
- if [ $TEST ] ; then
- echo "Removing $name"
- else
- echo openstack server delete $sid
- fi
- echo "Finding server volumes ..."
- for volume in $(echo $volumes | jq ".[] | select (.\"Attached to\" | contains($sid)) | @base64")
- do
- volume=$(echo $volume | sed 's/"//g' | base64 --decode )
- vid=$(echo $volume| jq '.ID')
- vname=$(echo $volume | jq '.Name')
- if [ $TEST ] ; then
- echo "$vid:$vname => $sname"
- else
- echo openstack volume remove $vid
- fi
- done
- echo "Remove Server $sname"
- done
- echo "Done"
- IFS="$iifs"
- exit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement