ceph-monitor.patch
/var/lib/one/remotes/datastore/ceph/monitor 2015-08-27 13:54:36.147348793 +0200 | ||
---|---|---|
61 | 61 |
fi |
62 | 62 | |
63 | 63 |
if [ -n "$CEPH_USER" ]; then |
64 |
RADOS="$RADOS --id ${CEPH_USER}"
|
|
64 |
CEPH="ceph --id ${CEPH_USER}"
|
|
65 | 65 |
fi |
66 | 66 | |
67 | 67 |
# ------------ Compute datastore usage ------------- |
68 | 68 | |
69 | 69 |
MONITOR_SCRIPT=$(cat <<EOF |
70 |
$RADOS df -p ${POOL_NAME}| $AWK '{ |
|
71 |
if (\$1 == "total") { |
|
72 | ||
73 |
space = int(\$3/1024) |
|
74 | ||
75 |
if (\$2 == "used") {var = "USED_MB"} |
|
76 |
else if (\$2 == "avail") {var = "FREE_MB"} |
|
77 |
else if (\$2 == "space") {var = "TOTAL_MB"} |
|
78 | ||
79 |
print var "=" space |
|
80 |
} |
|
81 |
}' |
|
70 |
$CEPH df --format xml |
|
82 | 71 |
EOF |
83 | 72 |
) |
84 | 73 | |
... | ... | |
86 | 75 |
MONITOR_STATUS=$? |
87 | 76 | |
88 | 77 |
if [ "$MONITOR_STATUS" = "0" ]; then |
89 |
echo "$MONITOR_DATA" | tr ' ' '\n' |
|
78 |
XPATH="${DRIVER_PATH}/../xpath.rb --stdin" |
|
79 |
|
|
80 |
unset i j XPATH_ELEMENTS |
|
81 | ||
82 |
while IFS= read -r -d '' element; do |
|
83 |
XPATH_ELEMENTS[i++]="$element" |
|
84 |
done < <(echo $MONITOR_DATA | $XPATH \ |
|
85 |
"/stats/pools/pool[name = \"${POOL_NAME}\"]/stats/bytes_used" \ |
|
86 |
"/stats/pools/pool[name = \"${POOL_NAME}\"]/stats/max_avail") |
|
87 | ||
88 |
BYTES_USED="${XPATH_ELEMENTS[j++]}" |
|
89 |
MAX_AVAIL="${XPATH_ELEMENTS[j++]}" |
|
90 |
FREE="$(expr $MAX_AVAIL - $BYTES_USED)" |
|
91 | ||
92 |
echo "USED_MB=$(($BYTES_USED / 1024**2)) |
|
93 |
TOTAL_MB=$(($MAX_AVAIL / 1024**2)) |
|
94 |
FREE_MB=$(($FREE / 1024**2))" | tr -d ' ' |
|
90 | 95 |
else |
91 | 96 |
echo "$MONITOR_DATA" |
92 | 97 |
exit $MONITOR_STATUS |