From 773aa78ac43e8bf5b152bb4f70b42726e538824c Mon Sep 17 00:00:00 2001 From: j3s Date: Wed, 20 May 2020 16:37:45 -0500 Subject: [PATCH] Switch shellscripts to customer pool --- .../shell_scripts/capacity-avaliable.sh | 25 +++++++++++-------- capsulflask/shell_scripts/create.sh | 4 +-- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/capsulflask/shell_scripts/capacity-avaliable.sh b/capsulflask/shell_scripts/capacity-avaliable.sh index affabb3..59b06f3 100755 --- a/capsulflask/shell_scripts/capacity-avaliable.sh +++ b/capsulflask/shell_scripts/capacity-avaliable.sh @@ -1,25 +1,30 @@ #!/bin/sh - -## check avaliable RAM and IPv4s +# +# check available RAM and IPv4s RAM_BYTES_TO_ALLOCATE="$1" +RAM_BYTES_AVAILABLE=$(grep -E "^(size|memory_available_bytes)" /proc/spl/kstat/zfs/arcstats | awk '{sum+=$3} END {printf "%.0f", sum}') +RAM_BYTES_REMAINDER="$((RAM_BYTES_AVAILABLE - RAM_BYTES_TO_ALLOCATE))" if echo "$RAM_BYTES_TO_ALLOCATE" | grep -vqE "^[0-9]+$"; then echo "RAM_BYTES_TO_ALLOCATE \"$RAM_BYTES_TO_ALLOCATE\" must be an integer" exit 1 fi -#100GB -RAM_LIMIT=100000000000 +# I picked 10GB arbitrarily +if [ "$RAM_BYTES_REMAINDER" -le $((10 * 1024 * 1024 * 1024)) ]; then + echo "VM is requesting more RAM than $(hostname -f) has available." + echo "Bytes requested: $RAM_BYTES_TO_ALLOCATE" + echo "Bytes available: $RAM_BYTES_AVAILABLE" + exit 1 +fi -## compare current allocated ram + RAM_BYTES_TO_ALLOCATE with RAM_LIMIT +IPV4_LIMIT=60 +IPV4_COUNT=$(grep ip-add /var/lib/libvirt/dnsmasq/virbr2.status | wc -l) -IPV4_LIMIT=26 -IPV4_COUNT=$(grep ip-add /var/lib/libvirt/dnsmasq/virbr1.status | wc -l) - -if [ $IPV4_COUNT -gt $IPV4_LIMIT ]; then +if [ "$IPV4_COUNT" -ge "$IPV4_LIMIT" ]; then echo "IPv4 address limit reached" exit 1 fi - echo "yes" \ No newline at end of file +echo "yes" diff --git a/capsulflask/shell_scripts/create.sh b/capsulflask/shell_scripts/create.sh index f320376..edf60a1 100755 --- a/capsulflask/shell_scripts/create.sh +++ b/capsulflask/shell_scripts/create.sh @@ -66,14 +66,12 @@ virt-install \ --os-variant generic \ --virt-type kvm \ --graphics vnc,listen=127.0.0.1 \ - --network network=public1,filterref=clean-traffic,model=virtio \ + --network network=public2,filterref=clean-traffic,model=virtio \ --import \ --print-xml > "$xml" -# --network network=public6,filterref=clean-traffic,model=virtio chmod 0600 "$xml" "$disk" "$cdrom" virsh define "$xml" virsh start "$vmname" echo "success" -