Fold destroy, pristine and virshall into 'command'. Add a lock to avoid destroying active/inuse LABs
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,3 +1,4 @@
|
|||||||
*.json
|
*.json
|
||||||
__pycache__/
|
__pycache__/
|
||||||
.peeringdb/
|
.peeringdb/
|
||||||
|
.lock*
|
||||||
|
49
command
Executable file
49
command
Executable file
@ -0,0 +1,49 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
BUILD=${BUILD:=default}
|
||||||
|
LAB=${LAB:=0}
|
||||||
|
|
||||||
|
[ -r .lock${LAB} ] && {
|
||||||
|
echo "Lock file for LAB${LAB}, bailing"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
## Do not touch below this line
|
||||||
|
LABDIR=/var/lab
|
||||||
|
STAGING=$LABDIR/staging
|
||||||
|
HVN="hvn${LAB}.lab.ipng.ch"
|
||||||
|
CMD=$1
|
||||||
|
|
||||||
|
[ "$CMD" != "start" -a "$CMD" != "shutdown" -a "$CMD" != "destroy" -a "$CMD" != "pristine" ] && {
|
||||||
|
echo "Usage: LAB=0 ./command start|shutdown|destroy|pristine"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
VMS=$(ls -1 build/${BUILD}/${HVN}/)
|
||||||
|
|
||||||
|
for VM in $VMS; do
|
||||||
|
echo "[$VM] Executing $CMD"
|
||||||
|
case $CMD in
|
||||||
|
pristine)
|
||||||
|
echo "[$VM] Destroying VM"
|
||||||
|
ssh root@$HVN "/usr/bin/virsh list --all | grep $VM.*running >/dev/null && virsh destroy $VM"
|
||||||
|
echo "[$VM] Rolling VM back to pristine snapshot"
|
||||||
|
ssh root@$HVN "zfs rollback ssd-vol0/${VM}@pristine"
|
||||||
|
;;
|
||||||
|
start|shutdown)
|
||||||
|
echo "[$VM] Sending $CMD to VM"
|
||||||
|
ssh root@$HVN "virsh $CMD $VM"
|
||||||
|
;;
|
||||||
|
destroy)
|
||||||
|
echo "[$VM] Destroying VM"
|
||||||
|
ssh root@$HVN "/usr/bin/virsh list --all | grep $VM.*running >/dev/null && virsh destroy $VM"
|
||||||
|
echo "[$VM] Destroying ZFS image"
|
||||||
|
ssh root@$HVN "zfs destroy -r ssd-vol0/$VM"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
[ "$CMD" = "start" ] && {
|
||||||
|
echo "* Committing OVS config"
|
||||||
|
scp overlays/$BUILD/ovs-config.sh root@$HVN:$LABDIR
|
||||||
|
ssh root@$HVN "set -x; LAB=${LAB} $LABDIR/ovs-config.sh"
|
||||||
|
}
|
5
create
5
create
@ -19,6 +19,11 @@ BASE=${BASE:=ssd-vol0/hvn0.chbtl0.ipng.ch/ssd-vol0/vpp-proto-disk0@20230403-rele
|
|||||||
BUILD=${BUILD:=default}
|
BUILD=${BUILD:=default}
|
||||||
LAB=${LAB:=0}
|
LAB=${LAB:=0}
|
||||||
|
|
||||||
|
[ -r .lock${LAB} ] && {
|
||||||
|
echo "Lock file for LAB${LAB}, bailing"
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
## Do not touch below this line
|
## Do not touch below this line
|
||||||
LABDIR=/var/lab
|
LABDIR=/var/lab
|
||||||
STAGING=$LABDIR/staging
|
STAGING=$LABDIR/staging
|
||||||
|
26
destroy
26
destroy
@ -1,26 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
## Using SSH:
|
|
||||||
## * Log in to hypervisor, retrieve list of running VMs
|
|
||||||
## * Log in to hypervisor, retrieve list of ZFS volumes
|
|
||||||
## * List any VM matching spec ^vpp[\d]+-[\d+]$
|
|
||||||
## * List any ZFS datasets matching matching spec ^ssd-vol0/vpp[\d]+-[\d+]$
|
|
||||||
## * If --force is set:
|
|
||||||
## * Destroy matching VMs
|
|
||||||
## * Recursively delete any matching ZFS datasets
|
|
||||||
|
|
||||||
BASE=${BASE:=ssd-vol0/hvn0.chbtl0.ipng.ch/ssd-vol0/vpp-proto-disk0@20221018-release}
|
|
||||||
BUILD=${BUILD:=default}
|
|
||||||
LAB=${LAB:=0}
|
|
||||||
|
|
||||||
## Do not touch below this line
|
|
||||||
HVN="hvn${LAB}.lab.ipng.ch"
|
|
||||||
|
|
||||||
VMS=$(ls -1 build/${BUILD}/${HVN}/)
|
|
||||||
|
|
||||||
for VM in $VMS; do
|
|
||||||
echo "[$VM] Destroying VM"
|
|
||||||
ssh root@$HVN "/usr/bin/virsh list --all | grep $VM.*running >/dev/null && virsh destroy $VM"
|
|
||||||
echo "[$VM] Destroying ZFS datasets"
|
|
||||||
ssh root@$HVN "zfs destroy -r ssd-vol0/$VM"
|
|
||||||
done
|
|
14
pristine
14
pristine
@ -1,14 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
BUILD=${BUILD:=default}
|
|
||||||
LAB=${LAB:=0}
|
|
||||||
|
|
||||||
## Do not touch below this line
|
|
||||||
HVN="hvn${LAB}.lab.ipng.ch"
|
|
||||||
VMS=$(ls -1 build/${BUILD}/${HVN}/)
|
|
||||||
|
|
||||||
for VM in $VMS; do
|
|
||||||
echo "[$VM] Destroying VM"
|
|
||||||
ssh root@$HVN "/usr/bin/virsh list --all | grep $VM.*running >/dev/null && virsh destroy $VM"
|
|
||||||
echo "[$VM] Rolling VM back to pristine snapshot"
|
|
||||||
ssh root@$HVN "zfs rollback ssd-vol0/${VM}@pristine"
|
|
||||||
done
|
|
27
virshall
27
virshall
@ -1,27 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
BUILD=${BUILD:=default}
|
|
||||||
LAB=${LAB:=0}
|
|
||||||
|
|
||||||
## Do not touch below this line
|
|
||||||
LABDIR=/var/lab
|
|
||||||
STAGING=$LABDIR/staging
|
|
||||||
HVN="hvn${LAB}.lab.ipng.ch"
|
|
||||||
CMD=$1
|
|
||||||
|
|
||||||
[ "$CMD" != "start" -a "$CMD" != "shutdown" -a "$CMD" != "destroy" ] && {
|
|
||||||
echo "Usage: LAB=0 ./virshall start|shutdown|destroy"
|
|
||||||
exit
|
|
||||||
}
|
|
||||||
|
|
||||||
VMS=$(ls -1 build/${BUILD}/${HVN}/)
|
|
||||||
|
|
||||||
for VM in $VMS; do
|
|
||||||
echo "[$VM] Executing $CMD against VMs on lab $LAB"
|
|
||||||
ssh root@$HVN "virsh $CMD $VM"
|
|
||||||
done
|
|
||||||
|
|
||||||
[ "$CMD" = "start" ] && {
|
|
||||||
echo "* Committing OVS config"
|
|
||||||
scp overlays/$BUILD/ovs-config.sh root@$HVN:$LABDIR
|
|
||||||
ssh root@$HVN "set -x; LAB=${LAB} $LABDIR/ovs-config.sh"
|
|
||||||
}
|
|
Reference in New Issue
Block a user