archive_path: /home/teuthworker/mnt/teuthology/gabrioux-2026-02-11_07:53:20-orch:cephadm-wip-guits-main-2026-02-10-0743-distro-default-trial/45069 branch: wip-guits-main-2026-02-10-0743 description: orch:cephadm/workunits/{0-distro/centos_9.stream agent/off mon_election/classic task/test_host_drain} email: gabrioux@ibm.com first_in_suite: false flavor: default job_id: '45069' kernel: &id001 branch: distro kdb: true sha1: distro last_in_suite: false machine_type: trial name: gabrioux-2026-02-11_07:53:20-orch:cephadm-wip-guits-main-2026-02-10-0743-distro-default-trial no_nested_subset: false os_type: centos os_version: 9.stream overrides: admin_socket: branch: wip-guits-main-2026-02-10-0743 ceph: conf: global: mon election default strategy: 1 mgr: debug mgr: 20 debug ms: 1 mgr/cephadm/use_agent: false mon: debug mon: 20 debug ms: 1 debug paxos: 20 osd: debug ms: 1 debug osd: 20 flavor: default log-ignorelist: - \(MDS_ALL_DOWN\) - \(MDS_UP_LESS_THAN_MAX\) - MON_DOWN - mons down - mon down - out of quorum - CEPHADM_STRAY_HOST - CEPHADM_STRAY_DAEMON - CEPHADM_FAILED_DAEMON - OSD_DOWN - OSD_HOST_DOWN log-only-match: - CEPHADM_ sha1: e200f5a177e1f98aa64d47f88121b3121ef739b3 ceph-deploy: conf: client: log file: /var/log/ceph/ceph-$name.$pid.log mon: {} install: ceph: flavor: default sha1: e200f5a177e1f98aa64d47f88121b3121ef739b3 selinux: allowlist: - scontext=system_u:system_r:logrotate_t:s0 - scontext=system_u:system_r:getty_t:s0 workunit: branch: wip-guits-main-2026-02-10-0743 sha1: e200f5a177e1f98aa64d47f88121b3121ef739b3 owner: scheduled_gabrioux@soko04.front.sepia.ceph.com priority: 69 repo: https://git.ceph.com/ceph-ci.git roles: - - host.a - mon.a - mgr.a - osd.0 - osd.1 - - host.b - mon.b - mgr.b - osd.2 - osd.3 - - host.c - mon.c - osd.4 - osd.5 seed: 2771 sha1: e200f5a177e1f98aa64d47f88121b3121ef739b3 sleep_before_teardown: 0 subset: 1/8 suite: orch:cephadm suite_branch: wip-guits-main-2026-02-10-0743 suite_path: /home/teuthworker/src/git.ceph.com_ceph-c_e200f5a177e1f98aa64d47f88121b3121ef739b3/qa suite_relpath: qa suite_repo: https://git.ceph.com/ceph-ci.git suite_sha1: e200f5a177e1f98aa64d47f88121b3121ef739b3 targets: trial036.front.sepia.ceph.com: ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOfxu+2gCYKjUMVdqAl2GXJCL/pGwYK+G7OiIw6K2zhJ+1pTKcUWnI6/M0MIMmmtTNZM3yxBMGP4Qyo6ebryWwA= trial133.front.sepia.ceph.com: ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBDVbT7WxPD7gJYQLNeGDyQItAi1y/gB9Ho+tl8iMP1uYpMWA5Du9hMaNTf1hEeledkL2sYrsUx00vSAm0U38dTE= trial170.front.sepia.ceph.com: ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBF8t7iY7NSUsJC7HYFM4a72NosyXtsgnXKAx1rHpBsdRDTwJdPxjttV9NgZ3CX+/QT/6N7WiBDSua+Mive2bg20= tasks: - internal.check_packages: null - internal.buildpackages_prep: null - internal.save_config: null - internal.check_lock: null - internal.add_remotes: null - console_log: null - internal.connect: null - internal.push_inventory: null - internal.serialize_remote_roles: null - internal.check_conflict: null - internal.check_ceph_data: null - internal.vm_setup: null - kernel: *id001 - internal.base: null - internal.archive_upload: null - internal.archive: null - internal.coredump: null - internal.sudo: null - internal.syslog: null - internal.timer: null - pcp: null - selinux: null - ansible.cephlab: null - clock: null - pexec: all: - sudo dnf remove nvme-cli -y - sudo dnf install nvmetcli nvme-cli -y - install: null - cephadm: null - cephadm.shell: host.a: - "set -ex\nHOSTNAMES=$(ceph orch host ls --format json | jq -r '.[] | .hostname')\n\ for host in $HOSTNAMES; do\n # find the hostname for \"host.c\" which will\ \ have no mgr\n HAS_MGRS=$(ceph orch ps --hostname ${host} --format json |\ \ jq 'any(.daemon_type == \"mgr\")')\n if [ \"$HAS_MGRS\" == \"false\" ]; then\n\ \ HOST_C=\"${host}\"\n fi\ndone\n# One last thing to worry about before\ \ draining the host\n# is that the teuthology test tends to put the explicit\n\ # hostnames in the placement for the mon service.\n# We want to make sure we\ \ can drain without providing\n# --force and there is a check for the host being\ \ removed\n# being listed explicitly in the placements. Therefore,\n# we should\ \ remove it from the mon placement.\nceph orch ls mon --export > mon.yaml\n\ sed /\"$HOST_C\"/d mon.yaml > mon_adjusted.yaml\nceph orch apply -i mon_adjusted.yaml\n\ # now drain that host\nceph orch host drain $HOST_C --zap-osd-devices\n# wait\ \ for drain to complete\nHOST_C_DAEMONS=$(ceph orch ps --hostname $HOST_C)\n\ while [ \"$HOST_C_DAEMONS\" != \"No daemons reported\" ]; do\n sleep 15\n \ \ HOST_C_DAEMONS=$(ceph orch ps --hostname $HOST_C)\ndone\n# we want to check\ \ the ability to remove the host from\n# the CRUSH map, so we should first verify\ \ the host is in\n# the CRUSH map.\nceph osd getcrushmap -o compiled-crushmap\n\ crushtool -d compiled-crushmap -o crushmap.txt\nCRUSH_MAP=$(cat crushmap.txt)\n\ if ! grep -q \"$HOST_C\" <<< \"$CRUSH_MAP\"; then\n printf \"Expected to see\ \ $HOST_C in CRUSH map. Saw:\\n\\n$CRUSH_MAP\"\n exit 1\nfi\n# If the drain\ \ was successful, we should be able to remove the\n# host without force with\ \ no issues. If there are still daemons\n# we will get a response telling us\ \ to drain the host and a\n# non-zero return code\nceph orch host rm $HOST_C\ \ --rm-crush-entry\n# verify we've successfully removed the host from the CRUSH\ \ map\nsleep 30\nceph osd getcrushmap -o compiled-crushmap\ncrushtool -d compiled-crushmap\ \ -o crushmap.txt\nCRUSH_MAP=$(cat crushmap.txt)\nif grep -q \"$HOST_C\" <<<\ \ \"$CRUSH_MAP\"; then\n printf \"Saw $HOST_C in CRUSH map after it should\ \ have been removed.\\n\\n$CRUSH_MAP\"\n exit 1\nfi\n" teuthology: fragments_dropped: [] meta: {} postmerge: [] teuthology_branch: main teuthology_sha1: c433f1062990a0488dc29a553589bc609a460691 timestamp: 2026-02-11_07:53:20 tube: trial user: gabrioux verbose: true worker_log: /home/teuthworker/mnt/teuthology/worker_logs/dispatcher.trial.2161924