GBase 8a
运维管理
文章

vc下线清理资源池脚本-第一版

发表于2025-07-01 09:29:4119次浏览0个评论

#!/bin/bash
#set -euo pipefail
source /home/gbase/.gbase_profile
workdir=$(cd `dirname $0`;pwd)
cd ${workdir}
#数据库gbas密码:
user=xxxx
pass=xxxx
#清理资源池的vc名字
vc_name=${1}
#获取vc_id
vc_id=`gccli -u${user} -p${pass} -e"show vcs" | grep -w ${vc_name} | awk '{print $1}'`
#资源管理实效
gccli -u${user} -p${pass} -e"deactive resource plan  on vc ${vc_name};"
resource=`gccli -u${user} -p${pass} -e"select config_int_value from gbase.resource_config where config_name='active_resource_plan_id' and vc_id='${vc_id}';"| grep -iv config_int_value `
if [ ${resource} -eq 0 ]; then
       echo "资源管控已关闭"
else
       echo "资源管控未关闭"
fi
#清理用户组下用户
grep_user_list=`gccli -u${user} -p${pass} -e"use vc ${vc_name};use gbase; select a.user_name||'+'||b.consumer_group_name from consumer_group_user a join consumer_group b on a.consumer_group_id=b.consumer_group_id where b.vc_id='${vc_id}'" | grep -iv consumer_group`
for group_user_info in `echo ${grep_user_list}`
do

       group_name=`echo ${group_user_info}|awk -F'+' '{print $2}'`
       user_name=`echo ${group_user_info}|awk -F'+' '{print $1}'`
       gccli -u${user} -p${pass} -e"use vc ${vc_name}; ALTER CONSUMER GROUP ${group_name} REMOVE USER ${user_name};"
done
grep_user_num=`gccli -u${user} -p${pass} -e"use vc ${vc_name};use gbase; select count(*) from consumer_group_user a join consumer_group b on a.consumer_group_id=b.consumer_group_id where b.vc_id='${vc_id}'" | grep -iv count`

if [ ${grep_user_num} -eq 0 ]; then
       echo "资源池相关用户清理完成"
else
       echo "资源池相关用户清理未完成"
fi
#清理资源管理组
resource_plan_directive_name_list=`gccli -u${user} -p${pass} -e"use vc ${vc_name};use gbase; select resource_plan_directive_name from resource_plan_directive where vc_id='${vc_id}'" | grep -iv resource_plan_directive_name`
for resource_plan_directive_name_info in `echo ${resource_plan_directive_name_list}`
do
       gccli -u${user} -p${pass} -e"use vc ${vc_name}; DROP RESOURCE DIRECTIVE ${resource_plan_directive_name_info};"
done

resource_plan_directive_name_num=`gccli -u${user} -p${pass} -e"use vc ${vc_name};use gbase; select count(*) from resource_plan_directive where vc_id='${vc_id}'" | grep -iv count`

if [ ${resource_plan_directive_name_num} -eq 0 ]; then
       echo "资源管理绑定关系清理完成"
else
       echo "资源管理绑定关系清理未完成"
fi
#清理用户组
consumer_group_name_list=`gccli -u${user} -p${pass} -e"use vc ${vc_name};use gbase; select consumer_group_name from consumer_group where vc_id='${vc_id}'" | grep -iv consumer_group_name`
for consumer_group_name_info in `echo ${consumer_group_name_list}`
do
       gccli -u${user} -p${pass} -e"use vc ${vc_name}; DROP CONSUMER GROUP ${consumer_group_name_info};"
done

consumer_group_name_num=`gccli -u${user} -p${pass} -e"use vc ${vc_name};use gbase; select count(*) from consumer_group where vc_id='${vc_id}'" | grep -iv count`

if [ ${consumer_group_name_num} -eq 0 ]; then
       echo "用户组清理完成"
else
       echo "用户组清理未完成"
fi


#清理计划
resource_plan_name_list=`gccli -u${user} -p${pass} -e"use vc ${vc_name};use gbase; select resource_plan_name from resource_plan where vc_id='${vc_id}'" | grep -iv resource_plan_name`
for resource_plan_name_info in `echo ${resource_plan_name_list}`
do
       gccli -u${user} -p${pass} -e"use vc ${vc_name}; DROP RESOURCE PLAN ${resource_plan_name_info};"
done

resource_plan_name_num=`gccli -u${user} -p${pass} -e"use vc ${vc_name};use gbase; select count(*) from resource_plan where vc_id='${vc_id}'" | grep -iv count`
if [ ${resource_plan_name_num} -eq 0 ]; then
       echo "资源计划清理完成"
else
       echo "资源计划清理未完成"
fi

#清理动态池:

resource_pool_name_list=`gccli -u${user} -p${pass} -e"use vc ${vc_name};use gbase; select resource_pool_name from resource_pool where vc_id='${vc_id}'" | grep -ivE "resource_pool_name|static"`
for resource_pool_name_info in `echo ${resource_pool_name_list}`
do
       gccli -u${user} -p${pass} -e"use vc ${vc_name}; DROP RESOURCE POOL ${resource_pool_name_info};"
done

resource_pool_name_num=`gccli -u${user} -p${pass} -e"use vc ${vc_name};use gbase; select count(*) from resource_pool where vc_id='${vc_id}'" | grep -iv count`
if [ ${resource_pool_name_num} -eq 1 ]; then
       echo "动态池清理完成"
else
       echo "动态池清理未完成"
fi

#清理静态池:
resource_pool_name=`gccli -u${user} -p${pass} -e"use vc ${vc_name};use gbase; select resource_pool_name from resource_pool where vc_id='${vc_id}'" | grep -iv resource_pool_name`
gccli -u${user} -p${pass} -e"use vc ${vc_name}; DROP RESOURCE POOL ${resource_pool_name};"
resource_pool_name_num=`gccli -u${user} -p${pass} -e"use vc ${vc_name};use gbase; select count(*) from resource_pool where vc_id='${vc_id}'" | grep -iv count`
if [ ${resource_pool_name_num} -eq 0 ]; then
       echo "静态池清理完成" 
else
       echo "静态池清理未完成"
fi
 

 

评论

登录后才可以发表评论