diff --git a/unstack.sh b/unstack.sh index 30ee512ebc..1bace156d6 100755 --- a/unstack.sh +++ b/unstack.sh @@ -18,6 +18,13 @@ source $TOP_DIR/functions # Load local configuration source $TOP_DIR/stackrc +# Destination path for service data +DATA_DIR=${DATA_DIR:-${DEST}/data} + +# Get project function libraries +source $TOP_DIR/lib/cinder +source $TOP_DIR/lib/n-vol + # Determine what system we are running on. This provides ``os_VENDOR``, # ``os_RELEASE``, ``os_UPDATE``, ``os_PACKAGE``, ``os_CODENAME`` GetOSVersion @@ -45,14 +52,41 @@ if is_service_enabled horizon; then stop_service apache2 fi +SCSI_PERSIST_DIR=$CINDER_STATE_PATH/volumes/* + # Get the iSCSI volumes if is_service_enabled cinder n-vol; then + if is_service_enabled n-vol; then + SCSI_PERSIST_DIR=$NOVA_STATE_PATH/volumes/* + fi + TARGETS=$(sudo tgtadm --op show --mode target) + if [ $? -ne 0 ]; then + # If tgt driver isn't running this won't work obviously + # So check the response and restart if need be + echo "tgtd seems to be in a bad state, restarting..." + if [[ "$os_PACKAGE" = "deb" ]]; then + restart_service tgt + else + restart_service tgtd + fi + TARGETS=$(sudo tgtadm --op show --mode target) + fi + if [[ -n "$TARGETS" ]]; then - # FIXME(dtroyer): this could very well require more here to - # clean up left-over volumes - echo "iSCSI target cleanup needed:" - echo "$TARGETS" + iqn_list=( $(grep --no-filename -r iqn $SCSI_PERSIST_DIR | sed 's///') ) + for i in "${iqn_list[@]}"; do + echo removing iSCSI target: $i + sudo tgt-admin --delete $i + done + fi + + if is_service_enabled cinder; then + sudo rm -rf $CINDER_STATE_PATH/volumes/* + fi + + if is_service_enabled n-vol; then + sudo rm -rf $NOVA_STATE_PATH/volumes/* fi if [[ "$os_PACKAGE" = "deb" ]]; then