]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr: expose have_mon_connection to python modules
authorJohn Spray <john.spray@redhat.com>
Thu, 9 Nov 2017 11:27:24 +0000 (06:27 -0500)
committerBoris Ranto <branto@redhat.com>
Fri, 20 Apr 2018 10:49:05 +0000 (12:49 +0200)
So that they can warn their end users if the data
we have is probably stale.

Signed-off-by: John Spray <john.spray@redhat.com>
(cherry picked from commit 5633328e28c0f7a5122229737c2ca132174a4349)

src/mgr/BaseMgrModule.cc
src/mon/MonClient.h
src/pybind/mgr/mgr_module.py

index 74d1a948f306e7bc23417b26e4b7ef8f7cb3c87a..6777a5238881cc2580d6a7cb6f138af59e508725 100644 (file)
@@ -502,6 +502,16 @@ ceph_set_uri(BaseMgrModule *self, PyObject *args)
   Py_RETURN_NONE;
 }
 
+static PyObject*
+ceph_have_mon_connection(BaseMgrModule *self, PyObject *args)
+{
+  if (self->py_modules->get_monc().is_connected()) {
+    Py_RETURN_TRUE;
+  } else {
+    Py_RETURN_FALSE;
+  }
+}
+
 
 PyMethodDef BaseMgrModule_methods[] = {
   {"_ceph_get", (PyCFunction)ceph_state_get, METH_VARARGS,
@@ -555,6 +565,10 @@ PyMethodDef BaseMgrModule_methods[] = {
   {"_ceph_set_uri", (PyCFunction)ceph_set_uri, METH_VARARGS,
     "Advertize a service URI served by this module"},
 
+  {"_ceph_have_mon_connection", (PyCFunction)ceph_have_mon_connection,
+    METH_NOARGS, "Find out whether this mgr daemon currently has "
+                 "a connection to a monitor"},
+
   {NULL, NULL, 0, NULL}
 };
 
index 0b24e01e2bace5fe884b8265804d6a64d1986a47..703da88fa2bbbf7633f3146c599db1005c1e4f86 100644 (file)
@@ -224,6 +224,8 @@ public:
   int authenticate(double timeout=0.0);
   bool is_authenticated() const {return authenticated;}
 
+  bool is_connected() const { return active_con != nullptr; }
+
   /**
    * Try to flush as many log messages as we can in a single
    * message.  Use this before shutting down to transmit your
index 1d75b6f431ba39751dc815e0db20a0a7763e1bb0..be4510265f9d0ac794e0503975f800931ccf0fe6 100644 (file)
@@ -573,3 +573,13 @@ class MgrModule(ceph_module.BaseMgrModule):
         :return: a string
         """
         return self._ceph_set_uri(uri)
+
+    def have_mon_connection(self):
+        """
+        Check whether this ceph-mgr daemon has an open connection
+        to a monitor.  If it doesn't, then it's likely that the
+        information we have about the cluster is out of date,
+        and/or the monitor cluster is down.
+        """
+
+        return self._ceph_have_mon_connection()
\ No newline at end of file