From 6ffb3e4097949471723ca502475e3abc34489b72 Mon Sep 17 00:00:00 2001 From: Tatjana Dehler Date: Fri, 31 Jan 2020 16:00:21 +0100 Subject: [PATCH] mgr/dashboard: wait for PG unknown state to be cleared Give the cluster some time to recover from the unknown PG state before checking if the OSD is safe to destroy. Fixes: https://tracker.ceph.com/issues/43912 Signed-off-by: Tatjana Dehler --- qa/tasks/mgr/dashboard/test_osd.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/qa/tasks/mgr/dashboard/test_osd.py b/qa/tasks/mgr/dashboard/test_osd.py index a51b741cf27..111c440ab45 100644 --- a/qa/tasks/mgr/dashboard/test_osd.py +++ b/qa/tasks/mgr/dashboard/test_osd.py @@ -101,9 +101,16 @@ class OsdTest(DashboardTestCase): osd_dump = json.loads(self._ceph_cmd(['osd', 'dump', '-f', 'json'])) max_id = max(map(lambda e: e['osd'], osd_dump['osds'])) + def get_pg_status_equal_unknown(osd_ids): + self._get('/api/osd/safe_to_destroy?ids={}'.format(osd_ids)) + if 'message' in self.jsonBody(): + return 'pgs have unknown state' in self.jsonBody()['message'] + return False + # 1 OSD safe to destroy unused_osd_id = max_id + 10 - self._get('/api/osd/safe_to_destroy?ids={}'.format(unused_osd_id)) + self.wait_until_equal( + lambda: get_pg_status_equal_unknown(unused_osd_id), False, 30) self.assertStatus(200) self.assertJsonBody({ 'is_safe_to_destroy': True, @@ -115,7 +122,8 @@ class OsdTest(DashboardTestCase): # multiple OSDs safe to destroy unused_osd_ids = [max_id + 11, max_id + 12] - self._get('/api/osd/safe_to_destroy?ids={}'.format(str(unused_osd_ids))) + self.wait_until_equal( + lambda: get_pg_status_equal_unknown(str(unused_osd_ids)), False, 30) self.assertStatus(200) self.assertJsonBody({ 'is_safe_to_destroy': True,