]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | #!/bin/bash |
2 | ||
3 | # | |
4 | # multi-dump.sh | |
5 | # | |
6 | # Dumps interesting information about the Ceph cluster at a series of epochs. | |
7 | # | |
8 | ||
9 | ### Functions | |
10 | usage() { | |
11 | cat <<EOF | |
12 | multi-dump.sh: dumps out ceph maps | |
13 | ||
14 | -D Enable diff-mode | |
15 | -e <start-epoch> What epoch to end with. | |
16 | -h This help message | |
17 | -s <start-epoch> What epoch to start with. Defaults to 1. | |
18 | -t <map-type> What type of map to dump. Defaults to osdmap. | |
19 | Valid map types are: osdmap, | |
20 | EOF | |
21 | } | |
22 | ||
23 | cleanup() { | |
24 | [ -n ${TEMPDIR} ] && rm -rf "${TEMPDIR}" | |
25 | } | |
26 | ||
27 | die() { | |
28 | echo $@ | |
29 | exit 1 | |
30 | } | |
31 | ||
32 | dump_osdmap() { | |
33 | for v in `seq $START_EPOCH $END_EPOCH`; do | |
34 | ./ceph osd getmap $v -o $TEMPDIR/$v >> $TEMPDIR/cephtool-out \ | |
35 | || die "cephtool failed to dump epoch $v" | |
36 | done | |
37 | if [ $DIFFMODE -eq 1 ]; then | |
38 | for v in `seq $START_EPOCH $END_EPOCH`; do | |
39 | ./osdmaptool --print $TEMPDIR/$v > $TEMPDIR/$v.out | |
40 | done | |
41 | cat $TEMPDIR/$START_EPOCH.out | |
42 | E=$((END_EPOCH-1)) | |
43 | for v in `seq $START_EPOCH $E`; do | |
44 | S=$((v+1)) | |
45 | echo "************** $S **************" | |
46 | diff $TEMPDIR/$v.out $TEMPDIR/$S.out | |
47 | done | |
48 | else | |
49 | for v in `seq $START_EPOCH $END_EPOCH`; do | |
50 | echo "************** $v **************" | |
51 | ./osdmaptool --print $TEMPDIR/$v \ | |
52 | || die "osdmaptool failed to print epoch $v" | |
53 | done | |
54 | fi | |
55 | } | |
56 | ||
57 | ### Setup | |
58 | trap cleanup INT TERM EXIT | |
59 | TEMPDIR=`mktemp -d` | |
60 | MYDIR=`dirname $0` | |
61 | MYDIR=`readlink -f $MYDIR` | |
62 | MAP_TYPE=osdmap | |
63 | cd $MYDIR | |
64 | ||
65 | ### Parse arguments | |
66 | DIFFMODE=0 | |
67 | START_EPOCH=1 | |
68 | END_EPOCH=0 | |
69 | ||
70 | while getopts "De:hs:t:" flag; do | |
71 | case $flag in | |
72 | D) DIFFMODE=1;; | |
73 | ||
74 | e) END_EPOCH=$OPTARG;; | |
75 | ||
76 | h) usage | |
77 | exit 0 | |
78 | ;; | |
79 | ||
80 | s) START_EPOCH=$OPTARG;; | |
81 | ||
82 | t) MAP_TYPE=$OPTARG;; | |
83 | ||
84 | *) usage | |
85 | exit 1;; | |
86 | esac | |
87 | done | |
88 | [ $END_EPOCH -eq 0 ] && die "You must supply an end epoch with -e" | |
89 | ||
90 | ### Dump maps | |
91 | case $MAP_TYPE in | |
92 | "osdmap") dump_osdmap;; | |
93 | ||
94 | *) die "sorry, don't know how to handle MAP_TYPE '$MAP_TYPE'" | |
95 | esac | |
96 | ||
97 | exit 0 |