X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fceph%2Fsrc%2Fmulti-dump.sh;fp=src%2Fceph%2Fsrc%2Fmulti-dump.sh;h=7eaf83203bd1c98b51eca50049f510af8f4bd6bf;hb=812ff6ca9fcd3e629e49d4328905f33eee8ca3f5;hp=0000000000000000000000000000000000000000;hpb=15280273faafb77777eab341909a3f495cf248d9;p=stor4nfv.git diff --git a/src/ceph/src/multi-dump.sh b/src/ceph/src/multi-dump.sh new file mode 100755 index 0000000..7eaf832 --- /dev/null +++ b/src/ceph/src/multi-dump.sh @@ -0,0 +1,97 @@ +#!/bin/bash + +# +# multi-dump.sh +# +# Dumps interesting information about the Ceph cluster at a series of epochs. +# + +### Functions +usage() { + cat < What epoch to end with. +-h This help message +-s What epoch to start with. Defaults to 1. +-t What type of map to dump. Defaults to osdmap. + Valid map types are: osdmap, +EOF +} + +cleanup() { + [ -n ${TEMPDIR} ] && rm -rf "${TEMPDIR}" +} + +die() { + echo $@ + exit 1 +} + +dump_osdmap() { + for v in `seq $START_EPOCH $END_EPOCH`; do + ./ceph osd getmap $v -o $TEMPDIR/$v >> $TEMPDIR/cephtool-out \ + || die "cephtool failed to dump epoch $v" + done + if [ $DIFFMODE -eq 1 ]; then + for v in `seq $START_EPOCH $END_EPOCH`; do + ./osdmaptool --print $TEMPDIR/$v > $TEMPDIR/$v.out + done + cat $TEMPDIR/$START_EPOCH.out + E=$((END_EPOCH-1)) + for v in `seq $START_EPOCH $E`; do + S=$((v+1)) + echo "************** $S **************" + diff $TEMPDIR/$v.out $TEMPDIR/$S.out + done + else + for v in `seq $START_EPOCH $END_EPOCH`; do + echo "************** $v **************" + ./osdmaptool --print $TEMPDIR/$v \ + || die "osdmaptool failed to print epoch $v" + done + fi +} + +### Setup +trap cleanup INT TERM EXIT +TEMPDIR=`mktemp -d` +MYDIR=`dirname $0` +MYDIR=`readlink -f $MYDIR` +MAP_TYPE=osdmap +cd $MYDIR + +### Parse arguments +DIFFMODE=0 +START_EPOCH=1 +END_EPOCH=0 + +while getopts "De:hs:t:" flag; do +case $flag in + D) DIFFMODE=1;; + + e) END_EPOCH=$OPTARG;; + + h) usage + exit 0 + ;; + + s) START_EPOCH=$OPTARG;; + + t) MAP_TYPE=$OPTARG;; + + *) usage + exit 1;; +esac +done +[ $END_EPOCH -eq 0 ] && die "You must supply an end epoch with -e" + +### Dump maps +case $MAP_TYPE in + "osdmap") dump_osdmap;; + + *) die "sorry, don't know how to handle MAP_TYPE '$MAP_TYPE'" +esac + +exit 0