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());
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*
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[] = {
"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,