]> git.proxmox.com Git - ceph.git/blame - ceph/qa/workunits/cephadm/test_adoption.sh
import 15.2.4
[ceph.git] / ceph / qa / workunits / cephadm / test_adoption.sh
CommitLineData
9f95a23c
TL
1#!/bin/bash -ex
2
3SCRIPT_NAME=$(basename ${BASH_SOURCE[0]})
4SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
5CEPHADM_SRC_DIR=${SCRIPT_DIR}/../../../src/cephadm
e306af50 6CORPUS_COMMIT=9cd9ad020d93b0b420924fec55da307aff8bd422
9f95a23c
TL
7
8[ -z "$SUDO" ] && SUDO=sudo
9if [ -z "$CEPHADM" ]; then
10 CEPHADM=${CEPHADM_SRC_DIR}/cephadm
11fi
12
13# at this point, we need $CEPHADM set
14if ! [ -x "$CEPHADM" ]; then
15 echo "cephadm not found. Please set \$CEPHADM"
16 exit 1
17fi
18
19# respawn ourselves with a shebang
20if [ -z "$PYTHON_KLUDGE" ]; then
21 # see which pythons we should test with
22 PYTHONS=""
23 which python3 && PYTHONS="$PYTHONS python3"
24 which python2 && PYTHONS="$PYTHONS python2"
25 echo "PYTHONS $PYTHONS"
26 if [ -z "$PYTHONS" ]; then
27 echo "No PYTHONS found!"
28 exit 1
29 fi
30
31 TMPBINDIR=$(mktemp -d)
32 trap "rm -rf $TMPBINDIR" EXIT
33 ORIG_CEPHADM="$CEPHADM"
34 CEPHADM="$TMPBINDIR/cephadm"
35 for p in $PYTHONS; do
36 echo "=== re-running with $p ==="
37 ln -s `which $p` $TMPBINDIR/python
38 echo "#!$TMPBINDIR/python" > $CEPHADM
39 cat $ORIG_CEPHADM >> $CEPHADM
40 chmod 700 $CEPHADM
41 $TMPBINDIR/python --version
42 PYTHON_KLUDGE=1 CEPHADM=$CEPHADM $0
43 rm $TMPBINDIR/python
44 done
45 rm -rf $TMPBINDIR
46 echo "PASS with all of: $PYTHONS"
47 exit 0
48fi
49
50# combine into a single var
51CEPHADM_BIN="$CEPHADM"
52CEPHADM="$SUDO $CEPHADM_BIN"
53
54## adopt
55CORPUS_GIT_SUBMOD="cephadm-adoption-corpus"
56TMPDIR=$(mktemp -d)
57git clone https://github.com/ceph/$CORPUS_GIT_SUBMOD $TMPDIR
9f95a23c
TL
58trap "$SUDO rm -rf $TMPDIR" EXIT
59
1911f103
TL
60git -C $TMPDIR checkout $CORPUS_COMMIT
61CORPUS_DIR=${TMPDIR}/archive
62
9f95a23c
TL
63for subdir in `ls ${CORPUS_DIR}`; do
64 for tarfile in `ls ${CORPUS_DIR}/${subdir} | grep .tgz`; do
65 tarball=${CORPUS_DIR}/${subdir}/${tarfile}
66 FSID_LEGACY=`echo "$tarfile" | cut -c 1-36`
67 TMP_TAR_DIR=`mktemp -d -p $TMPDIR`
68 $SUDO tar xzvf $tarball -C $TMP_TAR_DIR
69 NAMES=$($CEPHADM ls --legacy-dir $TMP_TAR_DIR | jq -r '.[].name')
70 for name in $NAMES; do
71 $CEPHADM adopt \
72 --style legacy \
73 --legacy-dir $TMP_TAR_DIR \
74 --name $name
75 # validate after adopt
76 out=$($CEPHADM ls | jq '.[]' \
77 | jq 'select(.name == "'$name'")')
78 echo $out | jq -r '.style' | grep 'cephadm'
79 echo $out | jq -r '.fsid' | grep $FSID_LEGACY
80 done
81 # clean-up before next iter
82 $CEPHADM rm-cluster --fsid $FSID_LEGACY --force
83 $SUDO rm -rf $TMP_TAR_DIR
84 done
85done
86
87echo "OK"