initial code repo
[stor4nfv.git] / src / ceph / src / pybind / mgr / restful / api / mon.py
diff --git a/src/ceph/src/pybind/mgr/restful/api/mon.py b/src/ceph/src/pybind/mgr/restful/api/mon.py
new file mode 100644 (file)
index 0000000..5b19aae
--- /dev/null
@@ -0,0 +1,44 @@
+from pecan import expose, response
+from pecan.rest import RestController
+
+from restful import module
+from restful.decorators import auth
+
+
+class MonName(RestController):
+    def __init__(self, name):
+        self.name = name
+
+
+    @expose(template='json')
+    @auth
+    def get(self, **kwargs):
+        """
+        Show the information for the monitor name
+        """
+        mon = filter(
+            lambda x: x['name'] == self.name,
+            module.instance.get_mons()
+        )
+
+        if len(mon) != 1:
+            response.status = 500
+            return {'message': 'Failed to identify the monitor node "%s"' % self.name}
+
+        return mon[0]
+
+
+
+class Mon(RestController):
+    @expose(template='json')
+    @auth
+    def get(self, **kwargs):
+        """
+        Show the information for all the monitors
+        """
+        return module.instance.get_mons()
+
+
+    @expose()
+    def _lookup(self, name, *remainder):
+        return MonName(name), remainder