diff --git a/src/im_mad/remotes/common.d/monitor_ds.sh b/src/im_mad/remotes/common.d/monitor_ds.sh index 4ff1ee2d7f..297291c70d 100755 --- a/src/im_mad/remotes/common.d/monitor_ds.sh +++ b/src/im_mad/remotes/common.d/monitor_ds.sh @@ -4,14 +4,6 @@ HYPERVISOR=$1 DATASTORE_LOCATION=${2:-"/var/lib/one/datastores"} -LVM_VG_PREFIX="vg-one-" - -PATH=$PATH:/sbin:/bin:/usr/sbin:/usr/bin which vgdisplay &> /dev/null - -if [ $? == 0 ]; then - LVM_SIZE_CMD="sudo vgdisplay --separator : --units m -o vg_size,vg_free --nosuffix --noheadings -C" -fi - mkdir -p "$DATASTORE_LOCATION" USED_MB=$(df -B1M -P $DATASTORE_LOCATION 2>/dev/null | tail -n 1 | awk '{print $3}') @@ -41,36 +33,10 @@ for ds in $dirs; do TOTAL_MB=${TOTAL_MB:-"0"} FREE_MB=${FREE_MB:-"0"} - if [ -n "$LVM_SIZE_CMD" ]; then - LVM_SIZE=$($LVM_SIZE_CMD ${LVM_VG_PREFIX}${ds} 2>/dev/null) - LVM_STATUS=$? - else - LVM_STATUS=255 - fi - echo "DS = [" echo " ID = $ds," - - if [ $LVM_STATUS = 0 ]; then - LVM_TOTAL=$(echo $LVM_SIZE | cut -d: -f1 | sed 's/\..*//') - LVM_FREE=$(echo $LVM_SIZE | cut -d: -f2 | sed 's/\..*//') - LVM_USED=$(( $LVM_TOTAL - $LVM_FREE )) - - LVM_TOTAL=${LVM_TOTAL:-"0"} - LVM_FREE=${LVM_FREE:-"0"} - LVM_USED=${LVM_USED:-"0"} - - echo " USED_MB = $LVM_USED," - echo " TOTAL_MB = $LVM_TOTAL," - echo " FREE_MB = $LVM_FREE," - echo " VOLATILE_USED_MB = $USED_MB," - echo " VOLATILE_TOTAL_MB = $TOTAL_MB," - echo " VOLATILE_FREE_MB = $FREE_MB" - else - echo " USED_MB = $USED_MB," - echo " TOTAL_MB = $TOTAL_MB," - echo " FREE_MB = $FREE_MB" - fi - + echo " USED_MB = $USED_MB," + echo " TOTAL_MB = $TOTAL_MB," + echo " FREE_MB = $FREE_MB" echo "]" done diff --git a/src/tm_mad/shared/monitor b/src/tm_mad/shared/monitor index 4e9a590a92..1184376bf4 100755 --- a/src/tm_mad/shared/monitor +++ b/src/tm_mad/shared/monitor @@ -36,7 +36,7 @@ source ${DRIVER_PATH}/../../datastore/libfs.sh # -------- Get datastore arguments from OpenNebula core ------------ DRV_ACTION=$1 -ID=$2 +DS_ID=$2 XPATH="${DRIVER_PATH}/../../datastore/xpath.rb -b $DRV_ACTION" @@ -54,14 +54,40 @@ BRIDGE_LIST="${XPATH_ELEMENTS[i++]}" # ------------ Compute datastore usage ------------- +LVM_VG_PREFIX="vg-one-" +LVM_SIZE_CMD="sudo vgdisplay --separator : --units m -o vg_size,vg_free --nosuffix --noheadings -C" + MONITOR_SCRIPT=$(cat </dev/null | tail -n 1 | awk '{print \$3}') -TOTAL_MB=\$(df -B1M -P $BASE_PATH 2>/dev/null | tail -n 1 | awk '{print \$2}') -FREE_MB=\$(df -B1M -P $BASE_PATH 2>/dev/null | tail -n 1 | awk '{print \$4}') +# If vg-one-$DS_ID exists, we assume it's an fs_lvm image datastore, therefore +# we return the space of the lvm, no of the filesystem +if PATH=\$PATH:/sbin:/bin:/usr/sbin:/usr/bin which vgdisplay &> /dev/null; then + LVM_SIZE=\$(sudo vgdisplay \ + --separator : \ + --units m \ + -o vg_size,vg_free \ + --nosuffix \ + --noheadings \ + -C \ + ${LVM_VG_PREFIX}${DS_ID} 2>/dev/null) +fi + +if [ -n "\$LVM_SIZE" ]; then + LVM_TOTAL=\$(echo \$LVM_SIZE | cut -d: -f1 | sed 's/\..*//;s/^\s*//') + LVM_FREE=\$(echo \$LVM_SIZE | cut -d: -f2 | sed 's/\..*//;s/^\s*//') + LVM_USED=\$(( \$LVM_TOTAL - \$LVM_FREE )) + + TOTAL_MB=\${LVM_TOTAL:-"0"} + FREE_MB=\${LVM_FREE:-"0"} + USED_MB=\${LVM_USED:-"0"} +else + USED_MB=\$(df -B1M -P $BASE_PATH 2>/dev/null | tail -n 1 | awk '{print \$3}') + TOTAL_MB=\$(df -B1M -P $BASE_PATH 2>/dev/null | tail -n 1 | awk '{print \$2}') + FREE_MB=\$(df -B1M -P $BASE_PATH 2>/dev/null | tail -n 1 | awk '{print \$4}') +fi if [ -z "\$USED_MB" -o -z "\$TOTAL_MB" -o -z "\$FREE_MB" ]; then msg="Empty value found"