From 4a83a564470624f6934b14de2dbb84793ce87871 Mon Sep 17 00:00:00 2001 From: Mike D'Morto Date: Tue, 30 Jan 2024 01:15:27 +0700 Subject: [PATCH] mdmxenctrl.sh stage 1 --- mdmxen/bin/mdmxenctrl.sh | 141 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) create mode 100755 mdmxen/bin/mdmxenctrl.sh diff --git a/mdmxen/bin/mdmxenctrl.sh b/mdmxen/bin/mdmxenctrl.sh new file mode 100755 index 0000000..897ccc3 --- /dev/null +++ b/mdmxen/bin/mdmxenctrl.sh @@ -0,0 +1,141 @@ +#!/bin/bash -x +# mdmxen project - helper for configuration +# author mikedmorto 2024 year +VERSION="0.0.1-dev" +XE="/opt/xensource/bin/xe" + +##### PARAMETERS##### +METRIC="$1" +ITEM="$2" + +export LC_ALL="" +export LANG="en_US.UTF-8" + + # include this host config +. /root/bin/mdmxen/etc/host.cfg +# include libraries for work +. /root/bin/mdmxen/lib/libsys.sh +. /root/bin/mdmxen/lib/librotation.sh +. /root/bin/mdmxen/lib/libxen.sh + + +#functions +# 1 uuid +# ret = vm_name +fn.xen.vm.exist_by_uuid(){ + RET=`${XE} vm-param-get param-name=name-label uuid=$1 | wc -l` + echo ${RET} +} + + +fn.xen.vm.get_vmname_by_uuid(){ + RET=`${XE} vm-param-get param-name=name-label uuid=$1` + echo ${RET} +} + + +fn.xen.vm.exist_by_vmname(){ + RET=`${XE} vm-list is-control-domain=false is-a-snapshot=false params=uuid name-label=$1 | awk -F: '/^[^#]/ { print $2 }' | tr -d ' ' | tr ';' '\n' | wc -l` + echo ${RET} +} + +fn.xen.vm.get_uuid_by_vmname(){ + RET=`${XE} vm-list is-control-domain=false is-a-snapshot=false params=uuid name-label=$1 | awk -F: '/^[^#]/ { print $2 }' | tr -d ' ' | tr ';' '\n'` + echo ${RET} +} + + +fn.xen.pool.autostart.get(){ + POOL_UUID=`${XE} pool-list params=uuid | egrep -o "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}"` + RET=`${XE} pool-param-get param-name=other-config uuid=${POOL_UUID} param-key=auto_poweron` + echo "xen.pool.autostart = ${RET}" +} + + +fn.xen.vm.list.autostart.get(){ + XVM_LIST=`${XE} vm-list is-control-domain=false is-a-snapshot=false params=uuid | egrep -o "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}"` + + for VM_UUID in ${XVM_LIST}; do +# VM_NAME=`${XE} vm-param-get param-name=name-label uuid=${VM_UUID}` + VM_NAME=$( fn.xen.vm.get_vmname_by_uuid ${VM_UUID} ) + RET=`${XE} vm-param-get param-name=other-config param-key=auto_poweron uuid=${VM_UUID}` + echo "${VM_UUID} = ${VM_NAME} = ${RET}" + done + +} + + +#main + +##### PARAMETERS##### +METRIC="$1" +ITEM="$2" + +case "$METRIC" in +xen.version) + RET=`cat "/etc/xensource-inventory" | awk -F"=" '{if($1=="PRODUCT_VERSION"){print $2} }' | tr -d "'" ` + echo ${RET} + + exit 0 +;; +script.version) + echo ${VERSION} +;; + +xen.pool.autostart.get) + fn.xen.pool.autostart.get +;; + +xen.pool.autostart.set.true) + POOL_UUID=`${XE} pool-list params=uuid | egrep -o "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}"` + RET=`${XE} pool-param-set other-config:auto_poweron=true uuid=${POOL_UUID}` + fn.xen.pool.autostart.get +;; + +xen.pool.autostart.set.false) + POOL_UUID=`${XE} pool-list params=uuid | egrep -o "[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}"` + RET=`${XE} pool-param-set other-config:auto_poweron=false uuid=${POOL_UUID}` + fn.xen.pool.autostart.get +;; + +xen.vm.list.autostart.get) + fn.xen.vm.list.autostart.get +;; + +xen.mv.autostart.get) + VM_NAME=$2 + EXIST=$( fn.xen.vm.exist_by_vmname ${VM_NAME} ) + if [[ $EXIST = 0 ]] + then + echo "vmname is not exist" + exit 1 + fi + + VM_UUID=$( fn.xen.vm.get_uuid_by_vmname ${VM_NAME} ) + RET=`${XE} vm-param-get param-name=other-config param-key=auto_poweron uuid=${VM_UUID}` + echo "${VM_UUID} = ${VM_NAME} = ${RET}" + +;; + +help) +echo "please use these params +{ +xen.version +script.version +xen.pool.autostart.get +xen.pool.autostart.set.true +xen.pool.autostart.set.false +xen.vm.list.autostart.get +xen.mv.autostart.get +NEED: +xen.mv.autostart.set.true +xen.mv.autostart.set.false +}" +;; + + *) + echo "" +;; +esac + +