]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
qa: make filesystem to be compatible with nautilus for blocklist
authorXiubo Li <xiubli@redhat.com>
Mon, 1 Aug 2022 04:29:36 +0000 (12:29 +0800)
committerXiubo Li <xiubli@redhat.com>
Mon, 5 Dec 2022 01:06:04 +0000 (09:06 +0800)
Old cephs, such as nautilus, will use "blacklist" instead of "blocklist".

Fixes: https://tracker.ceph.com/issues/56529
Signed-off-by: Xiubo Li <xiubli@redhat.com>
(cherry picked from commit 1387fc7fa012af4d6a8efca2d6d37cdb2583b9da)
Conflicts:
- "osd blocklist clear" format conflict
- s/run_cluster_cmd/raw_cluster_cmd/

qa/tasks/cephfs/cephfs_test_case.py

index 40af40625498fc22e835e6a116867293bbaa19c3..41831dac6f5e198e213232f845aae695f4d59076 100644 (file)
@@ -90,6 +90,27 @@ class CephFSTestCase(CephTestCase):
         self._orig_mount_details = [MountDetails(m) for m in self.mounts]
         log.info(self._orig_mount_details)
 
+    def _remove_blocklist(self):
+        # In case anything is in the OSD blocklist list, clear it out.  This is to avoid
+        # the OSD map changing in the background (due to blocklist expiry) while tests run.
+        try:
+            self.mds_cluster.mon_manager.raw_cluster_cmd("osd", "blocklist", "clear")
+        except CommandFailedError:
+            # Fallback for older Ceph cluster
+            try:
+                blocklist = json.loads(self.mds_cluster.mon_manager.raw_cluster_cmd("osd",
+                                      "dump", "--format=json-pretty"))['blocklist']
+                log.info(f"Removing {len(blocklist)} blocklist entries")
+                for addr, blocklisted_at in blocklist.items():
+                    self.mds_cluster.mon_manager.raw_cluster_cmd("osd", "blocklist", "rm", addr)
+            except KeyError:
+                # Fallback for more older Ceph clusters, who will use 'blacklist' instead.
+                blacklist = json.loads(self.mds_cluster.mon_manager.raw_cluster_cmd("osd",
+                                      "dump", "--format=json-pretty"))['blacklist']
+                log.info(f"Removing {len(blacklist)} blacklist entries")
+                for addr, blocklisted_at in blacklist.items():
+                    self.mds_cluster.mon_manager.raw_cluster_cmd("osd", "blacklist", "rm", addr)
+
     def setUp(self):
         super(CephFSTestCase, self).setUp()
 
@@ -129,17 +150,7 @@ class CephFSTestCase(CephTestCase):
         self.backup_fs = None
         self.recovery_fs = None
 
-        # In case anything is in the OSD blocklist list, clear it out.  This is to avoid
-        # the OSD map changing in the background (due to blocklist expiry) while tests run.
-        try:
-            self.mds_cluster.mon_manager.raw_cluster_cmd("osd", "blocklist", "clear")
-        except CommandFailedError:
-            # Fallback for older Ceph cluster
-            blocklist = json.loads(self.mds_cluster.mon_manager.raw_cluster_cmd("osd",
-                                  "dump", "--format=json-pretty"))['blocklist']
-            log.info("Removing {0} blocklist entries".format(len(blocklist)))
-            for addr, blocklisted_at in blocklist.items():
-                self.mds_cluster.mon_manager.raw_cluster_cmd("osd", "blocklist", "rm", addr)
+        self._remove_blocklist()
 
         client_mount_ids = [m.client_id for m in self.mounts]
         # In case there were any extra auth identities around from a previous