From: Sage Weil Date: Wed, 11 Dec 2019 19:57:45 +0000 (-0600) Subject: qa: rename ceph-daemon tests -> cephadm X-Git-Tag: v15.1.0~544^2~5 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=137fa64e12657a20aa1c49dce19b5752cb2e41fc;p=ceph.git qa: rename ceph-daemon tests -> cephadm Also move the workunit to a better location. Signed-off-by: Sage Weil --- diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 51237b2330a1..65bed6376fb9 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -16,7 +16,7 @@ /src/pybind/mgr/ssh @ceph/orchestrators /src/pybind/mgr/test_orchestrator @ceph/orchestrators /src/python-common/ceph/deployment @ceph/orchestrators -/qa/standalone/test_ceph_daemon.sh @ceph/orchestrators +/qa/workunits/cephadm/test_cephadm.sh @ceph/orchestrators /qa/tasks/ceph2.py @ceph/orchestrators /qa/tasks/mgr/test_orchestrator_cli.py @ceph/orchestrators /qa/tasks/mgr/test_ssh_orchestrator.py @ceph/orchestrators diff --git a/qa/standalone/test_ceph_daemon.sh b/qa/standalone/test_ceph_daemon.sh deleted file mode 100755 index 12d8c10eb338..000000000000 --- a/qa/standalone/test_ceph_daemon.sh +++ /dev/null @@ -1,259 +0,0 @@ -#!/bin/bash -ex - -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:-'ceph/daemon-base:latest-master-devel'} -IMAGE_NAUTILUS=${IMAGE_NAUTILUS:-'ceph/daemon-base:latest-nautilus'} -IMAGE_MIMIC=${IMAGE_MIMIC:-'ceph/daemon-base:latest-mimic'} - -CORPUS_GIT_SUBMOD="ceph-daemon-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' -OSD_TO_CREATE=6 -OSD_VG_NAME=${SCRIPT_NAME%.*} -OSD_LV_NAME=${SCRIPT_NAME%.*} - -[ -z "$SUDO" ] && SUDO=sudo - -if [ -z "$CEPH_DAEMON" ]; then - CEPH_DAEMON=${SCRIPT_DIR}/../../src/cephadm/cephadm -fi - -# at this point, we need $CEPH_DAEMON set -if ! [ -x "$CEPH_DAEMON" ]; then - echo "cephadm not found. Please set \$CEPH_DAEMON" - exit 1 -fi - -# respawn ourselves with a shebang -PYTHONS="python3 python2" # which pythons we test -if [ -z "$PYTHON_KLUDGE" ]; then - TMPBINDIR=$(mktemp -d) - trap "rm -rf $TMPBINDIR" EXIT - ORIG_CEPH_DAEMON="$CEPH_DAEMON" - CEPH_DAEMON="$TMPBINDIR/cephadm" - for p in $PYTHONS; do - echo "=== re-running with $p ===" - ln -s `which $p` $TMPBINDIR/python - echo "#!$TMPBINDIR/python" > $CEPH_DAEMON - cat $ORIG_CEPH_DAEMON >> $CEPH_DAEMON - chmod 700 $CEPH_DAEMON - $TMPBINDIR/python --version - PYTHON_KLUDGE=1 CEPH_DAEMON=$CEPH_DAEMON $0 - rm $TMPBINDIR/python - done - rm -rf $TMPBINDIR - echo "PASS with all of: $PYTHONS" - exit 0 -fi - -# add image to args -CEPH_DAEMON_ARGS="$CEPH_DAEMON_ARGS --image $IMAGE_MASTER" - -# combine into a single var -CEPH_DAEMON_BIN="$CEPH_DAEMON" -CEPH_DAEMON="$SUDO $CEPH_DAEMON_BIN $CEPH_DAEMON_ARGS" - -# clean up previous run(s)? -$CEPH_DAEMON rm-cluster --fsid $FSID --force -$CEPH_DAEMON rm-cluster --fsid $FSID_LEGACY --force -vgchange -an $OSD_VG_NAME || true -loopdev=$($SUDO losetup -a | grep $(basename $OSD_IMAGE_NAME) | awk -F : '{print $1}') -if ! [ "$loopdev" = "" ]; then - $SUDO losetup -d $loopdev -fi - -TMPDIR=`mktemp -d -p .` -trap "rm -rf $TMPDIR" EXIT - -function expect_false() -{ - set -x - if "$@"; then return 1; else return 0; fi -} - -## prepare + check host -$SUDO $CEPH_DAEMON check-host - -## version + --image -$SUDO CEPH_DAEMON_IMAGE=$IMAGE_NAUTILUS $CEPH_DAEMON_BIN version \ - | grep 'ceph version 14' -$SUDO $CEPH_DAEMON_BIN --image $IMAGE_MIMIC version \ - | grep 'ceph version 13' -$SUDO $CEPH_DAEMON_BIN --image $IMAGE_MASTER version | grep 'ceph version' - -# try force docker; this won't work if docker isn't installed -which docker && ( $CEPH_DAEMON --docker version | grep 'ceph version' ) - -## test shell before bootstrap, when crash dir isn't (yet) present on this host -$CEPH_DAEMON shell -- ceph -v | grep 'ceph version' -$CEPH_DAEMON shell --fsid $FSID -- ceph -v | grep 'ceph version' - -## bootstrap -ORIG_CONFIG=`mktemp -p $TMPDIR` -CONFIG=`mktemp -p $TMPDIR` -KEYRING=`mktemp -p $TMPDIR` -IP=127.0.0.1 -cat < $ORIG_CONFIG -[global] - log to file = true -EOF -$CEPH_DAEMON bootstrap \ - --mon-id a \ - --mgr-id x \ - --mon-ip $IP \ - --fsid $FSID \ - --config $ORIG_CONFIG \ - --output-config $CONFIG \ - --output-keyring $KEYRING \ - --allow-overwrite -test -e $CONFIG -test -e $KEYRING -rm -f $ORIG_CONFIG - -$SUDO test -e /var/log/ceph/$FSID/ceph-mon.a.log -$SUDO test -e /var/log/ceph/$FSID/ceph-mgr.x.log - -for u in ceph.target \ - ceph-$FSID.target \ - ceph-$FSID@mon.a \ - ceph-$FSID@mgr.x; do - systemctl is-enabled $u - systemctl is-active $u -done -systemctl | grep system-ceph | grep -q .slice # naming is escaped and annoying - -# check ceph -s works (via shell w/ passed config/keyring) -$CEPH_DAEMON shell --fsid $FSID --config $CONFIG --keyring $KEYRING -- \ - ceph -s | grep $FSID - -## ls -$CEPH_DAEMON ls | jq '.[]' | jq 'select(.name == "mon.a").fsid' \ - | grep $FSID -$CEPH_DAEMON ls | jq '.[]' | jq 'select(.name == "mgr.x").fsid' \ - | grep $FSID - -## deploy -# add mon.b -$CEPH_DAEMON deploy --name mon.b \ - --fsid $FSID \ - --mon-ip $IP:3301 \ - --keyring /var/lib/ceph/$FSID/mon.a/keyring \ - --config $CONFIG -for u in ceph-$FSID@mon.b; do - systemctl is-enabled $u - systemctl is-active $u -done - -# add mgr.y -$CEPH_DAEMON shell --fsid $FSID --config $CONFIG --keyring $KEYRING -- \ - ceph auth get-or-create mgr.y \ - mon 'allow profile mgr' \ - osd 'allow *' \ - mds 'allow *' > $TMPDIR/keyring.mgr.y -$CEPH_DAEMON deploy --name mgr.y \ - --fsid $FSID \ - --keyring $TMPDIR/keyring.mgr.y \ - --config $CONFIG -for u in ceph-$FSID@mgr.y; do - systemctl is-enabled $u - systemctl is-active $u -done -for f in `seq 1 30`; do - if $CEPH_DAEMON shell --fsid $FSID \ - --config $CONFIG --keyring $KEYRING -- \ - ceph -s -f json-pretty \ - | jq '.mgrmap.num_standbys' | grep -q 1 ; then break; fi - sleep 1 -done -$CEPH_DAEMON shell --fsid $FSID --config $CONFIG --keyring $KEYRING -- \ - ceph -s -f json-pretty \ - | jq '.mgrmap.num_standbys' | grep -q 1 - -# add osd.{1,2,..} -dd if=/dev/zero of=$TMPDIR/$OSD_IMAGE_NAME bs=1 count=0 seek=$OSD_IMAGE_SIZE -loop_dev=$($SUDO losetup -f) -$SUDO vgremove -f $OSD_VG_NAME || true -$SUDO losetup $loop_dev $TMPDIR/$OSD_IMAGE_NAME -$SUDO pvcreate $loop_dev && $SUDO vgcreate $OSD_VG_NAME $loop_dev -for id in `seq 0 $((--OSD_TO_CREATE))`; do - $SUDO lvcreate -l $((100/$OSD_TO_CREATE))%VG -n $OSD_LV_NAME.$id $OSD_VG_NAME - $CEPH_DAEMON shell --config $CONFIG --keyring $KEYRING -- \ - ceph orchestrator osd create \ - $(hostname):/dev/$OSD_VG_NAME/$OSD_LV_NAME.$id -done - -## run -# WRITE ME - -## adopt -if false; then -for tarball in $TEST_TARS; do - TMP_TAR_DIR=`mktemp -d -p $TMPDIR` - $SUDO tar xzvf $tarball -C $TMP_TAR_DIR - NAMES=$($CEPH_DAEMON ls --legacy-dir $TMP_TAR_DIR | jq -r '.[].name') - for name in $NAMES; do - $CEPH_DAEMON adopt \ - --style legacy \ - --legacy-dir $TMP_TAR_DIR \ - --name $name - # validate after adopt - out=$($CEPH_DAEMON 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 - $CEPH_DAEMON rm-cluster --fsid $FSID_LEGACY --force - $SUDO rm -rf $TMP_TAR_DIR -done -fi - -## unit -$CEPH_DAEMON unit --fsid $FSID --name mon.a -- is-enabled -$CEPH_DAEMON unit --fsid $FSID --name mon.a -- is-active -expect_false $CEPH_DAEMON unit --fsid $FSID --name mon.xyz -- is-active -$CEPH_DAEMON unit --fsid $FSID --name mon.a -- disable -expect_false $CEPH_DAEMON unit --fsid $FSID --name mon.a -- is-enabled -$CEPH_DAEMON unit --fsid $FSID --name mon.a -- enable -$CEPH_DAEMON unit --fsid $FSID --name mon.a -- is-enabled - -## shell -$CEPH_DAEMON shell -- true -$CEPH_DAEMON shell --fsid $FSID -- test -d /var/log/ceph - -## enter -expect_false $CEPH_DAEMON enter -$CEPH_DAEMON enter --fsid $FSID --name mon.a -- test -d /var/lib/ceph/mon/ceph-a -$CEPH_DAEMON enter --fsid $FSID --name mgr.x -- test -d /var/lib/ceph/mgr/ceph-x -$CEPH_DAEMON enter --fsid $FSID --name mon.a -- pidof ceph-mon -expect_false $CEPH_DAEMON enter --fsid $FSID --name mgr.x -- pidof ceph-mon -$CEPH_DAEMON enter --fsid $FSID --name mgr.x -- pidof ceph-mgr - -## ceph-volume -$CEPH_DAEMON ceph-volume --fsid $FSID -- inventory --format=json \ - | jq '.[]' - -## rm-daemon -# mon and osd require --force -expect_false $CEPH_DAEMON rm-daemon --fsid $FSID --name mon.a -# mgr does not -$CEPH_DAEMON rm-daemon --fsid $FSID --name mgr.x - -## rm-cluster -expect_false $CEPH_DAEMON rm-cluster --fsid $FSID -$CEPH_DAEMON rm-cluster --fsid $FSID --force - -rm -rf $TMPDIR -echo PASS diff --git a/qa/suites/rados/singleton-nomsgr/all/ceph-daemon.yaml b/qa/suites/rados/singleton-nomsgr/all/ceph-daemon.yaml deleted file mode 100644 index ed19310d6819..000000000000 --- a/qa/suites/rados/singleton-nomsgr/all/ceph-daemon.yaml +++ /dev/null @@ -1,12 +0,0 @@ -roles: -- [mon.a, mgr.x, osd.0, client.0] -tasks: -- install: -- exec: - mon.a: - - yum install -y python3 || apt install -y python3 -- workunit: - basedir: qa/standalone - clients: - client.0: - - test_ceph_daemon.sh diff --git a/qa/suites/rados/singleton-nomsgr/all/cephadm.yaml b/qa/suites/rados/singleton-nomsgr/all/cephadm.yaml new file mode 100644 index 000000000000..4d253517cc95 --- /dev/null +++ b/qa/suites/rados/singleton-nomsgr/all/cephadm.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_cephadm.sh diff --git a/qa/workunits/cephadm/test_cephadm.sh b/qa/workunits/cephadm/test_cephadm.sh new file mode 100755 index 000000000000..390dfbd3e2c1 --- /dev/null +++ b/qa/workunits/cephadm/test_cephadm.sh @@ -0,0 +1,258 @@ +#!/bin/bash -ex + +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:-'ceph/daemon-base:latest-master-devel'} +IMAGE_NAUTILUS=${IMAGE_NAUTILUS:-'ceph/daemon-base:latest-nautilus'} +IMAGE_MIMIC=${IMAGE_MIMIC:-'ceph/daemon-base:latest-mimic'} + +CORPUS_GIT_SUBMOD="ceph-daemon-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' +OSD_TO_CREATE=6 +OSD_VG_NAME=${SCRIPT_NAME%.*} +OSD_LV_NAME=${SCRIPT_NAME%.*} + +[ -z "$SUDO" ] && SUDO=sudo + +if [ -z "$CEPHADM" ]; then + CEPHADM=${SCRIPT_DIR}/../../../src/cephadm/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 +PYTHONS="python3 python2" # which pythons we test +if [ -z "$PYTHON_KLUDGE" ]; then + 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 + +# add image to args +CEPHADM_ARGS="$CEPHADM_ARGS --image $IMAGE_MASTER" + +# combine into a single var +CEPHADM_BIN="$CEPHADM" +CEPHADM="$SUDO $CEPHADM_BIN $CEPHADM_ARGS" + +# clean up previous run(s)? +$CEPHADM rm-cluster --fsid $FSID --force +$CEPHADM rm-cluster --fsid $FSID_LEGACY --force +vgchange -an $OSD_VG_NAME || true +loopdev=$($SUDO losetup -a | grep $(basename $OSD_IMAGE_NAME) | awk -F : '{print $1}') +if ! [ "$loopdev" = "" ]; then + $SUDO losetup -d $loopdev +fi + +function expect_false() +{ + set -x + if "$@"; then return 1; else return 0; fi +} + +## prepare + check host +$SUDO $CEPHADM check-host + +## version + --image +$SUDO CEPHADM_IMAGE=$IMAGE_NAUTILUS $CEPHADM_BIN version +$SUDO CEPHADM_IMAGE=$IMAGE_NAUTILUS $CEPHADM_BIN version \ + | grep 'ceph version 14' +$SUDO $CEPHADM_BIN --image $IMAGE_MIMIC version +$SUDO $CEPHADM_BIN --image $IMAGE_MIMIC version \ + | grep 'ceph version 13' +$SUDO $CEPHADM_BIN --image $IMAGE_MASTER version | grep 'ceph version' + +# try force docker; this won't work if docker isn't installed +which docker && ( $CEPHADM --docker version | grep 'ceph version' ) + +## test shell before bootstrap, when crash dir isn't (yet) present on this host +$CEPHADM shell -- ceph -v | grep 'ceph version' +$CEPHADM shell --fsid $FSID -- ceph -v | grep 'ceph version' + +## bootstrap +ORIG_CONFIG=`mktemp -p $TMPDIR` +CONFIG=`mktemp -p $TMPDIR` +KEYRING=`mktemp -p $TMPDIR` +IP=127.0.0.1 +cat < $ORIG_CONFIG +[global] + log to file = true +EOF +$CEPHADM bootstrap \ + --mon-id a \ + --mgr-id x \ + --mon-ip $IP \ + --fsid $FSID \ + --config $ORIG_CONFIG \ + --output-config $CONFIG \ + --output-keyring $KEYRING \ + --allow-overwrite +test -e $CONFIG +test -e $KEYRING +rm -f $ORIG_CONFIG + +$SUDO test -e /var/log/ceph/$FSID/ceph-mon.a.log +$SUDO test -e /var/log/ceph/$FSID/ceph-mgr.x.log + +for u in ceph.target \ + ceph-$FSID.target \ + ceph-$FSID@mon.a \ + ceph-$FSID@mgr.x; do + systemctl is-enabled $u + systemctl is-active $u +done +systemctl | grep system-ceph | grep -q .slice # naming is escaped and annoying + +# check ceph -s works (via shell w/ passed config/keyring) +$CEPHADM shell --fsid $FSID --config $CONFIG --keyring $KEYRING -- \ + ceph -s | grep $FSID + +## ls +$CEPHADM ls | jq '.[]' | jq 'select(.name == "mon.a").fsid' \ + | grep $FSID +$CEPHADM ls | jq '.[]' | jq 'select(.name == "mgr.x").fsid' \ + | grep $FSID + +## deploy +# add mon.b +$CEPHADM deploy --name mon.b \ + --fsid $FSID \ + --mon-ip $IP:3301 \ + --keyring /var/lib/ceph/$FSID/mon.a/keyring \ + --config $CONFIG +for u in ceph-$FSID@mon.b; do + systemctl is-enabled $u + systemctl is-active $u +done + +# add mgr.y +$CEPHADM shell --fsid $FSID --config $CONFIG --keyring $KEYRING -- \ + ceph auth get-or-create mgr.y \ + mon 'allow profile mgr' \ + osd 'allow *' \ + mds 'allow *' > $TMPDIR/keyring.mgr.y +$CEPHADM deploy --name mgr.y \ + --fsid $FSID \ + --keyring $TMPDIR/keyring.mgr.y \ + --config $CONFIG +for u in ceph-$FSID@mgr.y; do + systemctl is-enabled $u + systemctl is-active $u +done +for f in `seq 1 30`; do + if $CEPHADM shell --fsid $FSID \ + --config $CONFIG --keyring $KEYRING -- \ + ceph -s -f json-pretty \ + | jq '.mgrmap.num_standbys' | grep -q 1 ; then break; fi + sleep 1 +done +$CEPHADM shell --fsid $FSID --config $CONFIG --keyring $KEYRING -- \ + ceph -s -f json-pretty \ + | jq '.mgrmap.num_standbys' | grep -q 1 + +# add osd.{1,2,..} +dd if=/dev/zero of=$TMPDIR/$OSD_IMAGE_NAME bs=1 count=0 seek=$OSD_IMAGE_SIZE +loop_dev=$($SUDO losetup -f) +$SUDO vgremove -f $OSD_VG_NAME || true +$SUDO losetup $loop_dev $TMPDIR/$OSD_IMAGE_NAME +$SUDO pvcreate $loop_dev && $SUDO vgcreate $OSD_VG_NAME $loop_dev +for id in `seq 0 $((--OSD_TO_CREATE))`; do + $SUDO lvcreate -l $((100/$OSD_TO_CREATE))%VG -n $OSD_LV_NAME.$id $OSD_VG_NAME + $CEPHADM shell --config $CONFIG --keyring $KEYRING -- \ + ceph orchestrator osd create \ + $(hostname):/dev/$OSD_VG_NAME/$OSD_LV_NAME.$id +done + +## run +# WRITE ME + +## adopt +if false; then +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 +fi + +## unit +$CEPHADM unit --fsid $FSID --name mon.a -- is-enabled +$CEPHADM unit --fsid $FSID --name mon.a -- is-active +expect_false $CEPHADM unit --fsid $FSID --name mon.xyz -- is-active +$CEPHADM unit --fsid $FSID --name mon.a -- disable +expect_false $CEPHADM unit --fsid $FSID --name mon.a -- is-enabled +$CEPHADM unit --fsid $FSID --name mon.a -- enable +$CEPHADM unit --fsid $FSID --name mon.a -- is-enabled + +## shell +$CEPHADM shell -- true +$CEPHADM shell --fsid $FSID -- test -d /var/log/ceph + +## enter +expect_false $CEPHADM enter +$CEPHADM enter --fsid $FSID --name mon.a -- test -d /var/lib/ceph/mon/ceph-a +$CEPHADM enter --fsid $FSID --name mgr.x -- test -d /var/lib/ceph/mgr/ceph-x +$CEPHADM enter --fsid $FSID --name mon.a -- pidof ceph-mon +expect_false $CEPHADM enter --fsid $FSID --name mgr.x -- pidof ceph-mon +$CEPHADM enter --fsid $FSID --name mgr.x -- pidof ceph-mgr + +## ceph-volume +$CEPHADM ceph-volume --fsid $FSID -- inventory --format=json \ + | jq '.[]' + +## rm-daemon +# mon and osd require --force +expect_false $CEPHADM rm-daemon --fsid $FSID --name mon.a +# mgr does not +$CEPHADM rm-daemon --fsid $FSID --name mgr.x + +## rm-cluster +expect_false $CEPHADM rm-cluster --fsid $FSID +$CEPHADM rm-cluster --fsid $FSID --force + +rm -rf $TMPDIR +echo PASS diff --git a/src/cephadm/cephadm b/src/cephadm/cephadm index 1dcf615e1f02..b9b4bf2d2649 100755 --- a/src/cephadm/cephadm +++ b/src/cephadm/cephadm @@ -1770,8 +1770,8 @@ def _get_parser(): formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument( '--image', - default=os.environ.get('CEPH_DAEMON_IMAGE', DEFAULT_IMAGE), - help='container image. Can also be set via the "CEPH_DAEMON_IMAGE" ' + default=os.environ.get('CEPHADM_IMAGE', DEFAULT_IMAGE), + help='container image. Can also be set via the "CEPHADM_IMAGE" ' 'env var') parser.add_argument( '--docker', diff --git a/src/cephadm/tests/test_ceph_daemon.py b/src/cephadm/tests/test_ceph_daemon.py index ada2beff714d..db94ba5d099f 100644 --- a/src/cephadm/tests/test_ceph_daemon.py +++ b/src/cephadm/tests/test_ceph_daemon.py @@ -19,7 +19,7 @@ class TestCephDaemon(unittest.TestCase): args = p.parse_args(['--image', 'foo', 'version']) assert args.image == 'foo' - @mock.patch.dict(os.environ,{'CEPH_DAEMON_IMAGE':'bar'}) + @mock.patch.dict(os.environ,{'CEPHADM_IMAGE':'bar'}) def test__get_parser_image_with_envvar(self): p = cd._get_parser() args = p.parse_args(['version']) diff --git a/test_ceph_daemon.sh b/test_ceph_daemon.sh deleted file mode 100755 index 5f68be4a4112..000000000000 --- a/test_ceph_daemon.sh +++ /dev/null @@ -1,96 +0,0 @@ -#!/bin/bash -ex - -SCRIPT_NAME=$(basename ${BASH_SOURCE[0]}) - -fsid='00000000-0000-0000-0000-0000deadbeef' -image='ceph/daemon-base:latest-master-devel' -[ -z "$ip" ] && ip=127.0.0.1 - -OSD_IMAGE_NAME="${SCRIPT_NAME%.*}_osd.img" -OSD_IMAGE_SIZE='6G' -OSD_TO_CREATE=6 -OSD_VG_NAME=${SCRIPT_NAME%.*} -OSD_LV_NAME=${SCRIPT_NAME%.*} - -CEPH_DAEMON=../src/cephadm/cephadm - -#A="-d" - -# clean up previous run(s)? -$CEPH_DAEMON $A rm-cluster --fsid $fsid --force -vgchange -an $OSD_VG_NAME || true -loopdev=$(losetup -a | grep $(basename $OSD_IMAGE_NAME) | awk -F : '{print $1}') -if ! [ "$loopdev" = "" ]; then - losetup -d $loopdev -fi -rm -f $OSD_IMAGE_NAME - -cat < c -[global] - log to file = true -EOF - -$CEPH_DAEMON $A \ - --image $image \ - bootstrap \ - --mon-id a \ - --mgr-id x \ - --fsid $fsid \ - --mon-ip $ip \ - --config c \ - --output-keyring k \ - --output-config c \ - --allow-overwrite -chmod 644 k c - -if [ -n "$ip2" ]; then - # mon.b - $CEPH_DAEMON $A \ - --image $image \ - deploy --name mon.b \ - --fsid $fsid \ - --mon-addrv "[v2:$ip2:3300,v1:$ip2:6789]" \ - --keyring /var/lib/ceph/$fsid/mon.a/keyring \ - --config c -fi - -# mgr.b -bin/ceph -c c -k k auth get-or-create mgr.y \ - mon 'allow profile mgr' \ - osd 'allow *' \ - mds 'allow *' > k-mgr.y -$CEPH_DAEMON $A \ - --image $image \ - deploy --name mgr.y \ - --fsid $fsid \ - --keyring k-mgr.y \ - --config c - -# mds.{k,j} -for id in k j; do - bin/ceph -c c -k k auth get-or-create mds.$id \ - mon 'allow profile mds' \ - mgr 'allow profile mds' \ - osd 'allow *' \ - mds 'allow *' > k-mds.$id - $CEPH_DAEMON $A \ - --image $image \ - deploy --name mds.$id \ - --fsid $fsid \ - --keyring k-mds.$id \ - --config c -done - -# add osd.{1,2,..} -dd if=/dev/zero of=$OSD_IMAGE_NAME bs=1 count=0 seek=$OSD_IMAGE_SIZE -loop_dev=$(losetup -f) -losetup $loop_dev $OSD_IMAGE_NAME -pvcreate $loop_dev && vgcreate $OSD_VG_NAME $loop_dev -for id in `seq 0 $((--OSD_TO_CREATE))`; do - lvcreate -l $((100/$OSD_TO_CREATE))%VG -n $OSD_LV_NAME.$id $OSD_VG_NAME - $SUDO $CEPH_DAEMON shell --config c --keyring k -- \ - ceph orchestrator osd create \ - $(hostname):/dev/$OSD_VG_NAME/$OSD_LV_NAME.$id -done - -bin/ceph -c c -k k -s diff --git a/test_cephadm.sh b/test_cephadm.sh new file mode 100755 index 000000000000..ac8763fa8980 --- /dev/null +++ b/test_cephadm.sh @@ -0,0 +1,96 @@ +#!/bin/bash -ex + +SCRIPT_NAME=$(basename ${BASH_SOURCE[0]}) + +fsid='00000000-0000-0000-0000-0000deadbeef' +image='ceph/daemon-base:latest-master-devel' +[ -z "$ip" ] && ip=127.0.0.1 + +OSD_IMAGE_NAME="${SCRIPT_NAME%.*}_osd.img" +OSD_IMAGE_SIZE='6G' +OSD_TO_CREATE=6 +OSD_VG_NAME=${SCRIPT_NAME%.*} +OSD_LV_NAME=${SCRIPT_NAME%.*} + +CEPHADM=../src/cephadm/cephadm + +#A="-d" + +# clean up previous run(s)? +$CEPHADM $A rm-cluster --fsid $fsid --force +vgchange -an $OSD_VG_NAME || true +loopdev=$(losetup -a | grep $(basename $OSD_IMAGE_NAME) | awk -F : '{print $1}') +if ! [ "$loopdev" = "" ]; then + losetup -d $loopdev +fi +rm -f $OSD_IMAGE_NAME + +cat < c +[global] + log to file = true +EOF + +$CEPHADM $A \ + --image $image \ + bootstrap \ + --mon-id a \ + --mgr-id x \ + --fsid $fsid \ + --mon-ip $ip \ + --config c \ + --output-keyring k \ + --output-config c \ + --allow-overwrite +chmod 644 k c + +if [ -n "$ip2" ]; then + # mon.b + $CEPHADM $A \ + --image $image \ + deploy --name mon.b \ + --fsid $fsid \ + --mon-addrv "[v2:$ip2:3300,v1:$ip2:6789]" \ + --keyring /var/lib/ceph/$fsid/mon.a/keyring \ + --config c +fi + +# mgr.b +bin/ceph -c c -k k auth get-or-create mgr.y \ + mon 'allow profile mgr' \ + osd 'allow *' \ + mds 'allow *' > k-mgr.y +$CEPHADM $A \ + --image $image \ + deploy --name mgr.y \ + --fsid $fsid \ + --keyring k-mgr.y \ + --config c + +# mds.{k,j} +for id in k j; do + bin/ceph -c c -k k auth get-or-create mds.$id \ + mon 'allow profile mds' \ + mgr 'allow profile mds' \ + osd 'allow *' \ + mds 'allow *' > k-mds.$id + $CEPHADM $A \ + --image $image \ + deploy --name mds.$id \ + --fsid $fsid \ + --keyring k-mds.$id \ + --config c +done + +# add osd.{1,2,..} +dd if=/dev/zero of=$OSD_IMAGE_NAME bs=1 count=0 seek=$OSD_IMAGE_SIZE +loop_dev=$(losetup -f) +losetup $loop_dev $OSD_IMAGE_NAME +pvcreate $loop_dev && vgcreate $OSD_VG_NAME $loop_dev +for id in `seq 0 $((--OSD_TO_CREATE))`; do + lvcreate -l $((100/$OSD_TO_CREATE))%VG -n $OSD_LV_NAME.$id $OSD_VG_NAME + $SUDO $CEPHADM shell --config c --keyring k -- \ + ceph orchestrator osd create \ + $(hostname):/dev/$OSD_VG_NAME/$OSD_LV_NAME.$id +done + +bin/ceph -c c -k k -s