删除Openstack僵尸instances和projects

来源:互联网 发布:怎么禁止程序访问网络 编辑:程序博客网 时间:2024/06/11 10:01

脚本主要包括三个方面:

1.删除指定的僵尸实例;

2.清空某个project的数据;

3.清空所有projects的数据。


clean.sh

#!/bin/bashcase "$1" in    1)      read -p "Please input specified instance UUID: "      echo "Begin to remove specified instance $REPLY....."      ./clean_instance.sh $1 $REPLY      echo "Script completes!!!!!"       exit 1      ;;    2)      read -p "Please input specified project tenand_id: "      echo "Begin to clear up specified project instances $REPLY....."      ./clean_instance.sh $1 $REPLY      echo "Script completes!!!!!"      exit 1      ;;    3)      read -p "Warnning: The operate would be clear up all project instances,do you want to excute it still [y/n]?"            echo "begin to clear up all project instances....."      ./clean_instance.sh $1 $REPLY      echo "Script completes!!!!!"      exit 1      ;;    *)      echo "Usage:            clean 1  --- will remove specified instance.            clean 2  --- will clear up specified project instances.            clean 3  --- will clear up all project instances."      exit 1      ;;esacexit 0


clean_all_instances.sh

#!/bin/bash############################################ @file clean_all_instances.sh            ## @brief Remove project database in mysql ## @author Evan Yang                       ## @version 1.1                            ## @date 2015-04-21                        ##################################################################################                                   ##      Remove nova datebase         ##                                   ####################################################Set variables##########USER="root"PASSWORD="password"if [ "$1" -eq 2 ];then  OPTIONAL_TID="WHERE tenant_id='$2'"  OPTIONAL_TID2="AND tenant_id='$2'"  OPTIONAL_PID="WHERE project_id='$2'"else  OPTIONAL_TID=""  OPTIONAL_TID2=""  OPTIONAL_PID=""fiecho $OPTIONAL_TIDFLOATING_IPS=`mysql -u$USER -p$PASSWORD -se "USE neutron; SELECT floating_ip_address FROM floatingips $OPTIONAL_TID;"`INSTANCES=`mysql -u$USER -p$PASSWORD -se "USE nova; SELECT distinct display_name FROM instances $OPTIONAL_PID;"`UUIDS=`mysql -u$USER -p$PASSWORD -se "USE nova; SELECT uuid FROM instances $OPTIONAL_PID;"`#########Remove all floating-ip############for fi in $FLOATING_IPSdofor in in $INSTANCESdo  echo $in ":Begin to remove floating ip..."  nova remove-floating-ip $in $fi  echo "The floating ip has been removed."donedone########Reset values of quota_usages########mysql -u$USER -p$PASSWORD -e "USE nova; UPDATE quota_usages SET in_use=0 $OPTIONAL_PID;"########Remove instance in nova database#####for ui in $UUIDSdo  echo "begin to remove instance $ui..."  mysql -u$USER -p$PASSWORD -e "USE nova; DELETE FROM security_group_instance_association WHERE instance_uuid='$ui';"  mysql -u$USER -p$PASSWORD -e "USE nova; DELETE FROM instance_info_caches WHERE instance_uuid='$ui';"  mysql -u$USER -p$PASSWORD -e "USE nova; DELETE FROM block_device_mapping WHERE instance_uuid='$ui';"  mysql -u$USER -p$PASSWORD -e "USE nova; DELETE FROM instance_extra WHERE instance_uuid='$ui';"  mysql -u$USER -p$PASSWORD -e "USE nova; DELETE FROM instance_actions_events WHERE action_id IN (SELECT id FROM instance_actions WHERE instance_uuid='$ui') ;"  mysql -u$USER -p$PASSWORD -e "USE nova; DELETE FROM instance_actions WHERE instance_uuid='$ui';"  mysql -u$USER -p$PASSWORD -e "USE nova; DELETE FROM instance_faults WHERE instance_uuid='$ui';"  mysql -u$USER -p$PASSWORD -e "USE nova; DELETE FROM instance_system_metadata WHERE instance_uuid='$ui';"  mysql -u$USER -p$PASSWORD -e "USE nova; DELETE FROM instances WHERE uuid='$ui';"  rm -rf /var/lib/nova/instances/$ui  echo "The instance has been removed."done######################################                                   ##      Remove neutron datebase      ##                                   ######################################echo "Begin to remove neutron..."#######Remove routers from neutron database#######echo "Begin to remove routers..."RESERVE_ROUTER_ID=`mysql -u$USER -p$PASSWORD -se "USE neutron; SELECT id FROM routers WHERE name ='extrouter';"`mysql -u$USER -p$PASSWORD -se "USE neutron; DELETE FROM routers WHERE id != '$RESERVE_ROUTER_ID' $OPTIONAL_TID2;"echo "All routers have been removed."########Remove ports from neutron database########echo "Begin to remove ports..."RESERVE_PORT_ID=`mysql -u$USER -p$PASSWORD -se "USE neutron; SELECT port_id FROM routerports WHERE router_id = '$RESERVE_ROUTER_ID';"`mysql -u$USER -p$PASSWORD -se "USE neutron; DELETE FROM ports WHERE id !='$RESERVE_PORT_ID' $OPTIONAL_TID2;"echo "All ports have been removed."#########Remove subnets from neutron database######echo "Begin to remove subnets..."RESERVE_NETWORK_ID=`mysql -u$USER -p$PASSWORD -se "USE neutron; SELECT network_id FROM externalnetworks;"`mysql -u$USER -p$PASSWORD -se "USE neutron; DELETE FROM subnets WHERE network_id != '$RESERVE_NETWORK_ID' $OPTIONAL_TID2;"echo "All subnets have been removed."#########Remove networks from neutron database######echo "Begin to remove networks..."mysql -u$USER -p$PASSWORD -se "USE neutron; DELETE FROM networks WHERE id != '$RESERVE_NETWORK_ID' $OPTIONAL_TID2;"echo "All networks have been removed."echo "The neutron has been removed."######################################                                   ##      Remove cinder datebase       ##                                   ######################################echo "Begin to remove cinder..."VOLUME_ID=`mysql -u$USER -p$PASSWORD -se "USE cinder; SELECT id FROM volumes $OPTIONAL_PID;"`for vid in $VOLUME_IDdo  mysql -u$USER -p$PASSWORD -se "USE cinder; DELETE FROM reservations $OPTIONAL_PID;"  mysql -u$USER -p$PASSWORD -se "USE cinder; DELETE FROM quota_usages $OPTIONAL_PID;"  mysql -u$USER -p$PASSWORD -se "USE cinder; UPDATE iscsi_targets SET volume_id='NULL' where volume_id='$vid';"  mysql -u$USER -p$PASSWORD -se "USE cinder; DELETE FROM volume_admin_metadata where volume_id='$vid';"  mysql -u$USER -p$PASSWORD -se "USE cinder; DELETE FROM volumes $OPTIONAL_PID;"  echo "delete volume $vid from hardware... "  rm -rf /dev/cinder-volumes/volume-$vid  echo "volume $vid has been removed."doneecho "All subnets have been removed."


clean_instance.sh
#!/bin/bash############################################ @file clean_instance.sh                 ## @brief Remove database in mysql         ## @author Evan Yang                       ## @version 1.0                            ## @date 2015-04-21                        ##########################################################Set variables##########USER="root"PASSWORD="password"#####################################if [ -n "$2" ];then   if [ "$1" -eq 1 ];then    UUID=`mysql -u$USER -p$PASSWORD -se "USE nova; SELECT distinct uuid FROM instances WHERE uuid='$2';"`    if [ -n "$UUID" ];then      mysql -u$USER -p$PASSWORD -e "USE nova; DELETE FROM security_group_instance_association WHERE instance_uuid='$2';"      mysql -u$USER -p$PASSWORD -e "USE nova; DELETE FROM instance_info_caches WHERE instance_uuid='$2';"      mysql -u$USER -p$PASSWORD -e "USE nova; DELETE FROM block_device_mapping WHERE instance_uuid='$2';"      mysql -u$USER -p$PASSWORD -e "USE nova; DELETE FROM instance_extra WHERE instance_uuid='$2';"      mysql -u$USER -p$PASSWORD -e "USE nova; DELETE FROM instance_actions_events WHERE action_id IN (SELECT id FROM instance_actions WHERE instance_uuid='$2') ;"      mysql -u$USER -p$PASSWORD -e "USE nova; DELETE FROM instance_actions WHERE instance_uuid='$2';"      mysql -u$USER -p$PASSWORD -e "USE nova; DELETE FROM instance_faults WHERE instance_uuid='$2';"      mysql -u$USER -p$PASSWORD -e "USE nova; DELETE FROM instance_system_metadata WHERE instance_uuid='$2';"      mysql -u$USER -p$PASSWORD -e "USE nova; DELETE FROM instances WHERE uuid='$2';"      rm -rf /var/lib/nova/instances/$2      echo "The instance $2 has been removed."    else      echo "The specified instance is not exsit,please check it."      fi  elif [ "$1" -eq 2 ];then    INSTANCE=`mysql -u$USER -p$PASSWORD -se "USE keystone; SELECT distinct id FROM project WHERE id='$2';"`    if [ -n "$INSTANCE" ];then      ./clean_all_instances.sh $1 $2    else      echo "The specified project is not exsit,please check it."    fi  elif [ "$1" -eq 3 ];then    if [ "$2"x = "y"x ]||[ "$2"x = "yes"x ]||[ "$2"x = "Y"x ];then    ./clean_all_instances.sh $1    else      echo "You have cancelled the operation."    fi   else     echo "Wrong input parameter,please check."  fielse  echo "Lack of some parameters,please check and try it again."fi


0 0
原创粉丝点击