From: Tatjana Dehler Date: Fri, 31 Jan 2020 15:00:21 +0000 (+0100) Subject: mgr/dashboard: wait for PG unknown state to be cleared X-Git-Tag: v15.1.1~391^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=6ffb3e4097949471723ca502475e3abc34489b72;p=ceph.git 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 --- diff --git a/qa/tasks/mgr/dashboard/test_osd.py b/qa/tasks/mgr/dashboard/test_osd.py index a51b741cf27d7..111c440ab4542 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,