]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: rbd image show features 16468/head
authorYanhu Cao <gmayyyha@gmail.com>
Fri, 21 Jul 2017 02:02:39 +0000 (10:02 +0800)
committerYanhu Cao <gmayyyha@gmail.com>
Tue, 25 Jul 2017 00:33:26 +0000 (08:33 +0800)
Signed-off-by: Yanhu Cao <gmayyyha@gmail.com>
src/pybind/mgr/dashboard/rbd_ls.py
src/pybind/mgr/dashboard/rbd_pool.html

index e03d78ed1ade8f0f23831779ee61e041e979057a..6588766a7dad18962e8de2d5dff28f84b093bc6e 100644 (file)
@@ -50,6 +50,9 @@ class RbdLs(RemoteViewCache):
             i = rbd.Image(self.ioctx, name)
             stat = i.stat()
             stat['name'] = name
+            features = i.features()
+            stat['features'] = features
+            stat['features_name'] = self._format_bitmask(features)
 
             try:
                 parent_info = i.parent_info()
@@ -61,3 +64,26 @@ class RbdLs(RemoteViewCache):
                 pass
             result.append(stat)
         return result
+
+    def _format_bitmask(self, features):
+        names = ""
+        RBD_FEATURES_NAME_MAPPING = {
+            rbd.RBD_FEATURE_LAYERING: "layering",
+            rbd.RBD_FEATURE_STRIPINGV2: "striping",
+            rbd.RBD_FEATURE_EXCLUSIVE_LOCK: "exclusive-lock",
+            rbd.RBD_FEATURE_OBJECT_MAP: "object-map",
+            rbd.RBD_FEATURE_FAST_DIFF: "fast-diff",
+            rbd.RBD_FEATURE_DEEP_FLATTEN: "deep-flatten",
+            rbd.RBD_FEATURE_JOURNALING: "journaling",
+            rbd.RBD_FEATURE_DATA_POOL: "data-pool",
+        }
+
+        for key in RBD_FEATURES_NAME_MAPPING.keys():
+            if (key & features == 0):
+                continue
+
+            if names:
+                names = names + ", "
+            names = names + RBD_FEATURES_NAME_MAPPING.get(key)
+
+        return names
index 4aaef0242ab4c957be291e4260763428252e61f7..973bc3717d89e74ea290b3811a61194e6a0d8db5 100644 (file)
@@ -51,6 +51,7 @@
                     <th>Size</th>
                     <th>Objects</th>
                     <th>Object size</th>
+                    <th>Features</th>
                     <th>Parent</th>
                 </tr>
                 </thead>
@@ -60,6 +61,7 @@
                     <td>{image.size | dimless_binary}</td>
                     <td>{image.num_objs | dimless}</td>
                     <td>{image.obj_size | dimless_binary}</td>
+                    <td>{image.features_name}</td>
                     <td>{image.parent}</td>
                 </tr>
                 </tbody>