]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/pybind/mgr/dashboard/controllers/cephfs.py
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / pybind / mgr / dashboard / controllers / cephfs.py
index 3eb7e37e4e32c0c08d4f27cfd3d614dd174b8960..7b7589d423abde88a2cc313956ddab98891470b2 100644 (file)
@@ -134,6 +134,42 @@ class CephFS(RESTController):
             return
         mds_versions[metadata.get('ceph_version', 'unknown')].append(metadata_key)
 
+    def _find_standby_replays(self, mdsmap_info, rank_table):
+        # pylint: disable=unused-variable
+        for gid_str, daemon_info in mdsmap_info.items():
+            if daemon_info['state'] != "up:standby-replay":
+                continue
+
+            inos = mgr.get_latest("mds", daemon_info['name'], "mds_mem.ino")
+            dns = mgr.get_latest("mds", daemon_info['name'], "mds_mem.dn")
+            dirs = mgr.get_latest("mds", daemon_info['name'], "mds_mem.dir")
+            caps = mgr.get_latest("mds", daemon_info['name'], "mds_mem.cap")
+
+            activity = CephService.get_rate(
+                "mds", daemon_info['name'], "mds_log.replay")
+
+            rank_table.append(
+                {
+                    "rank": "{0}-s".format(daemon_info['rank']),
+                    "state": "standby-replay",
+                    "mds": daemon_info['name'],
+                    "activity": activity,
+                    "dns": dns,
+                    "inos": inos,
+                    "dirs": dirs,
+                    "caps": caps
+                }
+            )
+
+    def get_standby_table(self, standbys, mds_versions):
+        standby_table = []
+        for standby in standbys:
+            self._append_mds_metadata(mds_versions, standby['name'])
+            standby_table.append({
+                'name': standby['name']
+            })
+        return standby_table
+
     # pylint: disable=too-many-statements,too-many-branches
     def fs_status(self, fs_id):
         mds_versions: dict = defaultdict(list)
@@ -165,12 +201,9 @@ class CephFS(RESTController):
                 dirs = mgr.get_latest("mds", info['name'], "mds_mem.dir")
                 caps = mgr.get_latest("mds", info['name'], "mds_mem.cap")
 
-                if rank == 0:
-                    client_count = mgr.get_latest("mds", info['name'],
-                                                  "mds_sessions.session_count")
-                elif client_count == 0:
-                    # In case rank 0 was down, look at another rank's
-                    # sessionmap to get an indication of clients.
+                # In case rank 0 was down, look at another rank's
+                # sessionmap to get an indication of clients.
+                if rank == 0 or client_count == 0:
                     client_count = mgr.get_latest("mds", info['name'],
                                                   "mds_sessions.session_count")
 
@@ -218,32 +251,7 @@ class CephFS(RESTController):
                     }
                 )
 
-        # Find the standby replays
-        # pylint: disable=unused-variable
-        for gid_str, daemon_info in mdsmap['info'].items():
-            if daemon_info['state'] != "up:standby-replay":
-                continue
-
-            inos = mgr.get_latest("mds", daemon_info['name'], "mds_mem.ino")
-            dns = mgr.get_latest("mds", daemon_info['name'], "mds_mem.dn")
-            dirs = mgr.get_latest("mds", daemon_info['name'], "mds_mem.dir")
-            caps = mgr.get_latest("mds", daemon_info['name'], "mds_mem.cap")
-
-            activity = CephService.get_rate(
-                "mds", daemon_info['name'], "mds_log.replay")
-
-            rank_table.append(
-                {
-                    "rank": "{0}-s".format(daemon_info['rank']),
-                    "state": "standby-replay",
-                    "mds": daemon_info['name'],
-                    "activity": activity,
-                    "dns": dns,
-                    "inos": inos,
-                    "dirs": dirs,
-                    "caps": caps
-                }
-            )
+        self._find_standby_replays(mdsmap['info'], rank_table)
 
         df = mgr.get("df")
         pool_stats = {p['id']: p['stats'] for p in df['pools']}
@@ -263,12 +271,7 @@ class CephFS(RESTController):
                 "avail": stats['max_avail']
             })
 
-        standby_table = []
-        for standby in fsmap['standbys']:
-            self._append_mds_metadata(mds_versions, standby['name'])
-            standby_table.append({
-                'name': standby['name']
-            })
+        standby_table = self.get_standby_table(fsmap['standbys'], mds_versions)
 
         return {
             "cephfs": {
@@ -328,8 +331,9 @@ class CephFS(RESTController):
             raise cherrypy.HTTPError(404,
                                      "Client {0} does not exist in cephfs {1}".format(client_id,
                                                                                       fs_id))
+        filters = [f'id={client_id}']
         CephService.send_command('mds', 'client evict',
-                                 srv_spec='{0}:0'.format(fs_id), id=client_id)
+                                 srv_spec='{0}:0'.format(fs_id), filters=filters)
 
     @staticmethod
     def _cephfs_instance(fs_id):