]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/mgr/PyState.cc
update sources to v12.1.1
[ceph.git] / ceph / src / mgr / PyState.cc
index ce71dcd3f7003e2e1dfcb4bddb7b2db37d559f63..3bc8a23a8be316122f373e4686027b789720f9d6 100644 (file)
@@ -152,9 +152,27 @@ ceph_send_command(PyObject *self, PyObject *args)
       return nullptr;
     }
   } else if (std::string(type) == "pg") {
-    // TODO: expose objecter::pg_command
+    pg_t pgid;
+    if (!pgid.parse(name)) {
+      delete c;
+      string msg("invalid pgid: ");
+      msg.append("\"").append(name).append("\"");
+      PyErr_SetString(PyExc_ValueError, msg.c_str());
+      return nullptr;
+    }
+
+    ceph_tid_t tid;
+    global_handle->get_objecter().pg_command(
+        pgid,
+        {cmd_json},
+        {},
+        &tid,
+        &c->outbl,
+        &c->outs,
+        c);
     return nullptr;
   } else {
+    delete c;
     string msg("unknown service type: ");
     msg.append(type);
     PyErr_SetString(PyExc_ValueError, msg.c_str());
@@ -249,37 +267,29 @@ ceph_config_set(PyObject *self, PyObject *args)
   Py_RETURN_NONE;
 }
 
-static entity_type_t svc_type_from_str(const std::string &type_str)
-{
-  if (type_str == std::string("mds")) {
-    return CEPH_ENTITY_TYPE_MDS;
-  } else if (type_str == std::string("osd")) {
-    return CEPH_ENTITY_TYPE_OSD;
-  } else if (type_str == std::string("mon")) {
-    return CEPH_ENTITY_TYPE_MON;
-  } else {
-    return CEPH_ENTITY_TYPE_ANY;
-  }
-}
-
 static PyObject*
 get_metadata(PyObject *self, PyObject *args)
 {
   char *handle = nullptr;
-  char *type_str = NULL;
+  char *svc_name = NULL;
   char *svc_id = NULL;
-  if (!PyArg_ParseTuple(args, "sss:get_metadata", &handle, &type_str, &svc_id)) {
+  if (!PyArg_ParseTuple(args, "sss:get_metadata", &handle, &svc_name, &svc_id)) {
     return nullptr;
   }
+  return global_handle->get_metadata_python(handle, svc_name, svc_id);
+}
 
-  entity_type_t svc_type = svc_type_from_str(type_str);
-  if (svc_type == CEPH_ENTITY_TYPE_ANY) {
-    // FIXME: form a proper exception
+static PyObject*
+get_daemon_status(PyObject *self, PyObject *args)
+{
+  char *handle = nullptr;
+  char *svc_name = NULL;
+  char *svc_id = NULL;
+  if (!PyArg_ParseTuple(args, "sss:get_daemon_status", &handle, &svc_name,
+                       &svc_id)) {
     return nullptr;
   }
-
-
-  return global_handle->get_metadata_python(handle, svc_type, svc_id);
+  return global_handle->get_daemon_status_python(handle, svc_name, svc_id);
 }
 
 static PyObject*
@@ -313,22 +323,15 @@ static PyObject*
 get_counter(PyObject *self, PyObject *args)
 {
   char *handle = nullptr;
-  char *type_str = nullptr;
+  char *svc_name = nullptr;
   char *svc_id = nullptr;
   char *counter_path = nullptr;
-  if (!PyArg_ParseTuple(args, "ssss:get_counter", &handle, &type_str,
+  if (!PyArg_ParseTuple(args, "ssss:get_counter", &handle, &svc_name,
                                                   &svc_id, &counter_path)) {
     return nullptr;
   }
-
-  entity_type_t svc_type = svc_type_from_str(type_str);
-  if (svc_type == CEPH_ENTITY_TYPE_ANY) {
-    // FIXME: form a proper exception
-    return nullptr;
-  }
-
   return global_handle->get_counter_python(
-      handle, svc_type, svc_id, counter_path);
+      handle, svc_name, svc_id, counter_path);
 }
 
 PyMethodDef CephStateMethods[] = {
@@ -338,6 +341,8 @@ PyMethodDef CephStateMethods[] = {
      "Get a server object"},
     {"get_metadata", get_metadata, METH_VARARGS,
      "Get a service's metadata"},
+    {"get_daemon_status", get_daemon_status, METH_VARARGS,
+     "Get a service's status"},
     {"send_command", ceph_send_command, METH_VARARGS,
      "Send a mon command"},
     {"get_mgr_id", ceph_get_mgr_id, METH_NOARGS,