]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/pybind/mgr/dashboard/controllers/monitor.py
update source to Ceph Pacific 16.2.2
[ceph.git] / ceph / src / pybind / mgr / dashboard / controllers / monitor.py
index d4512fcfe357fc7e1f1865a5fce8efc310e2b1a9..b61fcd4f393e26e45039e107f1395fc50caf01f1 100644 (file)
@@ -3,15 +3,109 @@ from __future__ import absolute_import
 
 import json
 
-from . import ApiController, Endpoint, BaseController, ReadPermission
 from .. import mgr
 from ..security import Scope
+from . import ApiController, BaseController, ControllerDoc, Endpoint, EndpointDoc, ReadPermission
+
+MONITOR_SCHEMA = {
+    "mon_status": ({
+        "name": (str, ""),
+        "rank": (int, ""),
+        "state": (str, ""),
+        "election_epoch": (int, ""),
+        "quorum": ([int], ""),
+        "quorum_age": (int, ""),
+        "features": ({
+            "required_con": (str, ""),
+            "required_mon": ([int], ""),
+            "quorum_con": (str, ""),
+            "quorum_mon": ([str], "")
+        }, ""),
+        "outside_quorum": ([str], ""),
+        "extra_probe_peers": ([str], ""),
+        "sync_provider": ([str], ""),
+        "monmap": ({
+            "epoch": (int, ""),
+            "fsid": (str, ""),
+            "modified": (str, ""),
+            "created": (str, ""),
+            "min_mon_release": (int, ""),
+            "min_mon_release_name": (str, ""),
+            "features": ({
+                "persistent": ([str], ""),
+                "optional": ([str], "")
+            }, ""),
+            "mons": ([{
+                "rank": (int, ""),
+                "name": (str, ""),
+                "public_addrs": ({
+                    "addrvec": ([{
+                        "type": (str, ""),
+                        "addr": (str, ""),
+                        "nonce": (int, "")
+                    }], "")
+                }, ""),
+                "addr": (str, ""),
+                "public_addr": (str, ""),
+                "priority": (int, ""),
+                "weight": (int, ""),
+                "stats": ({
+                    "num_sessions": ([int], ""),
+                }, "")
+            }], "")
+        }, ""),
+        "feature_map": ({
+            "mon": ([{
+                "features": (str, ""),
+                "release": (str, ""),
+                "num": (int, "")
+            }], ""),
+            "mds": ([{
+                "features": (str, ""),
+                "release": (str, ""),
+                "num": (int, "")
+            }], ""),
+            "client": ([{
+                "features": (str, ""),
+                "release": (str, ""),
+                "num": (int, "")
+            }], ""),
+            "mgr": ([{
+                "features": (str, ""),
+                "release": (str, ""),
+                "num": (int, "")
+            }], ""),
+        }, "")
+    }, ""),
+    "in_quorum": ([{
+        "rank": (int, ""),
+        "name": (str, ""),
+        "public_addrs": ({
+            "addrvec": ([{
+                "type": (str, ""),
+                "addr": (str, ""),
+                "nonce": (int, "")
+            }], "")
+        }, ""),
+        "addr": (str, ""),
+        "public_addr": (str, ""),
+        "priority": (int, ""),
+        "weight": (int, ""),
+        "stats": ({
+            "num_sessions": ([int], "")
+        }, "")
+    }], ""),
+    "out_quorum": ([int], "")
+}
 
 
 @ApiController('/monitor', Scope.MONITOR)
+@ControllerDoc("Get Monitor Details", "Monitor")
 class Monitor(BaseController):
     @Endpoint()
     @ReadPermission
+    @EndpointDoc("Get Monitor Details",
+                 responses={200: MONITOR_SCHEMA})
     def __call__(self):
         in_quorum, out_quorum = [], []