]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: wait for PG unknown state to be cleared 33013/head
authorTatjana Dehler <tdehler@suse.com>
Fri, 31 Jan 2020 15:00:21 +0000 (16:00 +0100)
committerTatjana Dehler <tdehler@suse.com>
Mon, 3 Feb 2020 10:58:10 +0000 (11:58 +0100)
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 <tdehler@suse.com>
qa/tasks/mgr/dashboard/test_osd.py

index a51b741cf27d7713dbdf18f0235f85a2416709e3..111c440ab45428a08dfa36da9fb66e80ca7641fc 100644 (file)
@@ -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,