From 12fe1a1c172b7818a377d4b69f3dcfbf917b85c4 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Fri, 21 Feb 2020 07:17:15 -0600 Subject: [PATCH] qa/workunits/cephadm: separate out test_adoption.sh; fix - fix adoption test to handle different legacy fsids - separate it out into a different script Signed-off-by: Sage Weil --- cephadm-adoption-corpus | 2 +- .../cephadm/workunits/task/test_adoption.yaml | 11 +++ qa/workunits/cephadm/test_adoption.sh | 81 +++++++++++++++++++ qa/workunits/cephadm/test_cephadm.sh | 27 ------- 4 files changed, 93 insertions(+), 28 deletions(-) create mode 100644 qa/suites/rados/cephadm/workunits/task/test_adoption.yaml create mode 100755 qa/workunits/cephadm/test_adoption.sh diff --git a/cephadm-adoption-corpus b/cephadm-adoption-corpus index 87b61cd97e4..3965bc7c8df 160000 --- a/cephadm-adoption-corpus +++ b/cephadm-adoption-corpus @@ -1 +1 @@ -Subproject commit 87b61cd97e4e8864913058e13cb192c28d359eee +Subproject commit 3965bc7c8dfb24536f7c5b6ce7b8227b08f49402 diff --git a/qa/suites/rados/cephadm/workunits/task/test_adoption.yaml b/qa/suites/rados/cephadm/workunits/task/test_adoption.yaml new file mode 100644 index 00000000000..e04fc1eea3c --- /dev/null +++ b/qa/suites/rados/cephadm/workunits/task/test_adoption.yaml @@ -0,0 +1,11 @@ +roles: +- [mon.a, mgr.x, osd.0, client.0] +tasks: +- install: +- exec: + mon.a: + - yum install -y python3 || apt install -y python3 +- workunit: + clients: + client.0: + - cephadm/test_adoption.sh diff --git a/qa/workunits/cephadm/test_adoption.sh b/qa/workunits/cephadm/test_adoption.sh new file mode 100755 index 00000000000..4de6d3eb1b4 --- /dev/null +++ b/qa/workunits/cephadm/test_adoption.sh @@ -0,0 +1,81 @@ +#!/bin/bash -ex + +SCRIPT_NAME=$(basename ${BASH_SOURCE[0]}) +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +CEPHADM_SRC_DIR=${SCRIPT_DIR}/../../../src/cephadm + +CORPUS_GIT_SUBMOD="cephadm-adoption-corpus" +TMPDIR=$(mktemp -d) +git clone https://github.com/ceph/$CORPUS_GIT_SUBMOD $TMPDIR +CORPUS_DIR=${TMPDIR}/archive +trap "$SUDO rm -rf $TMPDIR" EXIT + +[ -z "$SUDO" ] && SUDO=sudo + +if [ -z "$CEPHADM" ]; then + CEPHADM=${CEPHADM_SRC_DIR}/cephadm +fi + +# at this point, we need $CEPHADM set +if ! [ -x "$CEPHADM" ]; then + echo "cephadm not found. Please set \$CEPHADM" + exit 1 +fi + +# respawn ourselves with a shebang +if [ -z "$PYTHON_KLUDGE" ]; then + # see which pythons we should test with + PYTHONS="" + which python3 && PYTHONS="$PYTHONS python3" + which python2 && PYTHONS="$PYTHONS python2" + echo "PYTHONS $PYTHONS" + if [ -z "$PYTHONS" ]; then + echo "No PYTHONS found!" + exit 1 + fi + + TMPBINDIR=$(mktemp -d) + trap "rm -rf $TMPBINDIR" EXIT + ORIG_CEPHADM="$CEPHADM" + CEPHADM="$TMPBINDIR/cephadm" + for p in $PYTHONS; do + echo "=== re-running with $p ===" + ln -s `which $p` $TMPBINDIR/python + echo "#!$TMPBINDIR/python" > $CEPHADM + cat $ORIG_CEPHADM >> $CEPHADM + chmod 700 $CEPHADM + $TMPBINDIR/python --version + PYTHON_KLUDGE=1 CEPHADM=$CEPHADM $0 + rm $TMPBINDIR/python + done + rm -rf $TMPBINDIR + echo "PASS with all of: $PYTHONS" + exit 0 +fi + +## adopt +for subdir in `ls ${CORPUS_DIR}`; do + for tarfile in `ls ${CORPUS_DIR}/${subdir} | grep .tgz`; do + tarball=${CORPUS_DIR}/${subdir}/${tarfile} + FSID_LEGACY=`echo "$tarfile" | cut -c 1-36` + TMP_TAR_DIR=`mktemp -d -p $TMPDIR` + $SUDO tar xzvf $tarball -C $TMP_TAR_DIR + NAMES=$($CEPHADM ls --legacy-dir $TMP_TAR_DIR | jq -r '.[].name') + for name in $NAMES; do + $CEPHADM adopt \ + --style legacy \ + --legacy-dir $TMP_TAR_DIR \ + --name $name + # validate after adopt + out=$($CEPHADM ls | jq '.[]' \ + | jq 'select(.name == "'$name'")') + echo $out | jq -r '.style' | grep 'cephadm' + echo $out | jq -r '.fsid' | grep $FSID_LEGACY + done + # clean-up before next iter + $CEPHADM rm-cluster --fsid $FSID_LEGACY --force + $SUDO rm -rf $TMP_TAR_DIR + done +done + +echo "OK" diff --git a/qa/workunits/cephadm/test_cephadm.sh b/qa/workunits/cephadm/test_cephadm.sh index 83adc1dd1a7..9618d5241f4 100755 --- a/qa/workunits/cephadm/test_cephadm.sh +++ b/qa/workunits/cephadm/test_cephadm.sh @@ -4,19 +4,14 @@ SCRIPT_NAME=$(basename ${BASH_SOURCE[0]}) SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" FSID='00000000-0000-0000-0000-0000deadbeef' -FSID_LEGACY='00000000-0000-0000-0000-ffffdeadbeef' # images that are used IMAGE_MASTER=${IMAGE_MASTER:-'docker.io/ceph/daemon-base:latest-master-devel'} IMAGE_NAUTILUS=${IMAGE_NAUTILUS:-'docker.io/ceph/daemon-base:latest-nautilus'} IMAGE_MIMIC=${IMAGE_MIMIC:-'docker.io/ceph/daemon-base:latest-mimic'} -CORPUS_GIT_SUBMOD="cephadm-adoption-corpus" TMPDIR=$(mktemp -d) trap "rm -rf $TMPDIR" EXIT -git clone https://github.com/ceph/$CORPUS_GIT_SUBMOD $TMPDIR -CORPUS_DIR=${TMPDIR}/archive -TEST_TARS=$(find ${CORPUS_DIR} -type f -iname *.tgz) OSD_IMAGE_NAME="${SCRIPT_NAME%.*}_osd.img" OSD_IMAGE_SIZE='6G' @@ -79,7 +74,6 @@ CEPHADM="$SUDO $CEPHADM_BIN $CEPHADM_ARGS" # clean up previous run(s)? $CEPHADM rm-cluster --fsid $FSID --force -$CEPHADM rm-cluster --fsid $FSID_LEGACY --force $SUDO vgchange -an $OSD_VG_NAME || true loopdev=$($SUDO losetup -a | grep $(basename $OSD_IMAGE_NAME) | awk -F : '{print $1}') if ! [ "$loopdev" = "" ]; then @@ -270,27 +264,6 @@ echo "grafana ok" ## run # WRITE ME -## adopt -for tarball in $TEST_TARS; do - TMP_TAR_DIR=`mktemp -d -p $TMPDIR` - $SUDO tar xzvf $tarball -C $TMP_TAR_DIR - NAMES=$($CEPHADM ls --legacy-dir $TMP_TAR_DIR | jq -r '.[].name') - for name in $NAMES; do - $CEPHADM adopt \ - --style legacy \ - --legacy-dir $TMP_TAR_DIR \ - --name $name - # validate after adopt - out=$($CEPHADM ls | jq '.[]' \ - | jq 'select(.name == "'$name'")') - echo $out | jq -r '.style' | grep 'cephadm' - echo $out | jq -r '.fsid' | grep $FSID_LEGACY - done - # clean-up before next iter - $CEPHADM rm-cluster --fsid $FSID_LEGACY --force - $SUDO rm -rf $TMP_TAR_DIR -done - ## unit $CEPHADM unit --fsid $FSID --name mon.a -- is-enabled $CEPHADM unit --fsid $FSID --name mon.a -- is-active -- 2.39.5