test -d ../src && export PATH=$PATH:.
-if type xmlstarlet > /dev/null 2>&1; then
- XMLSTARLET=xmlstarlet
-elif type xml > /dev/null 2>&1; then
- XMLSTARLET=xml
-else
- echo "Missing xmlstarlet binary!"
+if ! which jq ; then
+ echo "Missing jq binary!"
exit 1
fi
$CEPH_BIN/ceph-monstore-tool $store_path get osdmap -- \
$epoch -o $osdmap > /dev/null || return
- echo $($CEPH_BIN/osdmaptool --dump xml $osdmap 2> /dev/null | \
- $XMLSTARLET sel -t -m "$query" -v .)
+ echo $($CEPH_BIN/osdmaptool --dump json $osdmap 2> /dev/null | \
+ jq "$query")
rm -f $osdmap
}
# try accessing the store; if it fails, likely means a mon is running
local last_osdmap_epoch
local max_osd
- last_osdmap_epoch=$(osdmap_get $store_path "/osdmap/epoch") || \
+ last_osdmap_epoch=$(osdmap_get $store_path ".epoch") || \
die "error accessing mon store at $store_path"
# get the max_osd # in last osdmap epoch, crushtool will use it to check
# the crush maps in previous osdmaps
- max_osd=$(osdmap_get $store_path "/osdmap/max_osd" $last_osdmap_epoch)
+ max_osd=$(osdmap_get $store_path ".max_osd" $last_osdmap_epoch)
local good_crush
local good_epoch