From 7a02a4cf9667cf105242e19fa745378d3282c56b Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Sun, 20 Oct 2013 17:19:18 +0200 Subject: [PATCH] feature #1678: Datastores report LN and CLONE target as SYSTEM, SELF or NONE --- src/datastore_mad/remotes/ceph/monitor | 2 ++ src/datastore_mad/remotes/dummy/monitor | 2 ++ src/datastore_mad/remotes/fs/monitor | 27 ++++++++++++++++++++++--- src/datastore_mad/remotes/iscsi/monitor | 2 ++ src/datastore_mad/remotes/lvm/monitor | 2 ++ src/datastore_mad/remotes/vmfs/monitor | 2 ++ src/image/ImageManagerDriver.cc | 5 +++++ 7 files changed, 39 insertions(+), 3 deletions(-) diff --git a/src/datastore_mad/remotes/ceph/monitor b/src/datastore_mad/remotes/ceph/monitor index 406cc1c4ab..cf6e7aee18 100755 --- a/src/datastore_mad/remotes/ceph/monitor +++ b/src/datastore_mad/remotes/ceph/monitor @@ -79,6 +79,8 @@ EOF MONITOR_DATA=$(ssh_monitor_and_log $HOST "$MONITOR_SCRIPT" 2>&1) MONITOR_STATUS=$? +MONITOR_DATA="$MONITOR_DATA LN_TARGET=NONE CLONE_TARGET=SELF" + if [ "$MONITOR_STATUS" = "0" ]; then echo "$MONITOR_DATA" | tr ' ' '\n' else diff --git a/src/datastore_mad/remotes/dummy/monitor b/src/datastore_mad/remotes/dummy/monitor index a0bc478062..d8caa01cea 100755 --- a/src/datastore_mad/remotes/dummy/monitor +++ b/src/datastore_mad/remotes/dummy/monitor @@ -19,3 +19,5 @@ echo "USED_MB=9720" echo "TOTAL_MB=20480" echo "FREE_MB=20480" +echo "LN_TARGET=NONE" +echo "CLONE_TARTGET=SYSTEM" diff --git a/src/datastore_mad/remotes/fs/monitor b/src/datastore_mad/remotes/fs/monitor index 0fdcd36bb4..9acdfa2fda 100755 --- a/src/datastore_mad/remotes/fs/monitor +++ b/src/datastore_mad/remotes/fs/monitor @@ -40,13 +40,32 @@ ID=$2 XPATH="${DRIVER_PATH}/../xpath.rb -b $DRV_ACTION" -unset i XPATH_ELEMENTS +unset i j XPATH_ELEMENTS while IFS= read -r -d '' element; do XPATH_ELEMENTS[i++]="$element" -done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH) +done < <($XPATH /DS_DRIVER_ACTION_DATA/DATASTORE/TM_MAD \ + /DS_DRIVER_ACTION_DATA/DATASTORE/BASE_PATH) -BASE_PATH="${XPATH_ELEMENTS[0]}" +TM_MAD="${XPATH_ELEMENTS[j++]}" +BASE_PATH="${XPATH_ELEMENTS[j++]}" + +case $TM_MAD in + "ssh") + LN_TARGET="SYSTEM" + CLONE_TARGET="SYSTEM" + ;; + + "lvm_shared") + LN_TARGET="SYSTEM" + CLONE_TARGET="SYSTEM" + ;; + + *) #shared, qcow2 + LN_TARGET="NONE" + CLONE_TARGET="SYSTEM" + ;; +esac # ------------ Compute datastore usage ------------- @@ -62,6 +81,8 @@ MONITOR_DATA=$(cat <&1) MONITOR_STATUS=$? +MONITOR_DATA="$MONITOR_DATA LN_TARGET=NONE CLONE_TARGET=SELF" + if [ "$MONITOR_STATUS" = "0" ]; then echo "$MONITOR_DATA" | tr ' ' '\n' else diff --git a/src/datastore_mad/remotes/lvm/monitor b/src/datastore_mad/remotes/lvm/monitor index f431e09690..97d2844126 100755 --- a/src/datastore_mad/remotes/lvm/monitor +++ b/src/datastore_mad/remotes/lvm/monitor @@ -77,6 +77,8 @@ EOF MONITOR_DATA=$(ssh_monitor_and_log $HOST "$MONITOR_SCRIPT" 2>&1) MONITOR_STATUS=$? +MONITOR_DATA="$MONITOR_DATA LN_TARGET=NONE CLONE_TARGET=SELF" + if [ "$MONITOR_STATUS" = "0" ]; then echo "$MONITOR_DATA" | tr ' ' '\n' else diff --git a/src/datastore_mad/remotes/vmfs/monitor b/src/datastore_mad/remotes/vmfs/monitor index f88824d3c1..40c7cef011 100755 --- a/src/datastore_mad/remotes/vmfs/monitor +++ b/src/datastore_mad/remotes/vmfs/monitor @@ -78,6 +78,8 @@ EOF MONITOR_DATA=$(ssh_monitor_and_log $HOST "$MONITOR_SCRIPT" 2>&1) MONITOR_STATUS=$? +MONITOR_DATA="$MONITOR_DATA LN_TARGET=NONE CLONE_TARGET=SYSTEM" + if [ "$MONITOR_STATUS" = "0" ]; then echo "$MONITOR_DATA" | tr ' ' '\n' else diff --git a/src/image/ImageManagerDriver.cc b/src/image/ImageManagerDriver.cc index 99248b1ccb..d5d4eedd69 100644 --- a/src/image/ImageManagerDriver.cc +++ b/src/image/ImageManagerDriver.cc @@ -663,12 +663,17 @@ void ImageManagerDriver::process_poll(Datastore* ds, const string &monitor_str) } long long total, free, used; + string ln_tgt, cl_tgt; monitor_data.get("TOTAL_MB", total); monitor_data.get("FREE_MB", free); monitor_data.get("USED_MB", used); + monitor_data.get("LN_TARGET", ln_tgt); + monitor_data.get("CLONE_TARGET", cl_tgt); ds->update_monitor(total, free, used); + ds->replace_template_attribute("LN_TARGET", ln_tgt); + ds->replace_template_attribute("CLONE_TARGET", cl_tgt); dspool->update(ds);