summaryrefslogtreecommitdiffstats
path: root/ctdb/client
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2009-12-02 12:51:37 +0100
committerStefan Metzmacher <metze@samba.org>2009-12-16 08:08:32 +0100
commit0e436b46c6051fed5a4d854f993bb635919700f1 (patch)
treed5275e1b773e7df6b8d95dd1d1065bb4ec5ccce4 /ctdb/client
parentf1f0af2b670fba2a02802266183d3b0136cbf72b (diff)
downloadsamba-0e436b46c6051fed5a4d854f993bb635919700f1.tar.gz
samba-0e436b46c6051fed5a4d854f993bb635919700f1.tar.xz
samba-0e436b46c6051fed5a4d854f993bb635919700f1.zip
client: add ctdb_ctrl_getdbhealth()
metze (This used to be ctdb commit 5abe44d0113839d3a45c9a31d30856aa70c2ea1f)
Diffstat (limited to 'ctdb/client')
-rw-r--r--ctdb/client/ctdb_client.c38
1 files changed, 38 insertions, 0 deletions
diff --git a/ctdb/client/ctdb_client.c b/ctdb/client/ctdb_client.c
index b623bfe352..6158fe2410 100644
--- a/ctdb/client/ctdb_client.c
+++ b/ctdb/client/ctdb_client.c
@@ -1498,6 +1498,44 @@ int ctdb_ctrl_getdbname(struct ctdb_context *ctdb, struct timeval timeout, uint3
}
/*
+ get the health status of a db
+ */
+int ctdb_ctrl_getdbhealth(struct ctdb_context *ctdb,
+ struct timeval timeout,
+ uint32_t destnode,
+ uint32_t dbid, TALLOC_CTX *mem_ctx,
+ const char **reason)
+{
+ int ret;
+ int32_t res;
+ TDB_DATA data;
+
+ data.dptr = (uint8_t *)&dbid;
+ data.dsize = sizeof(dbid);
+
+ ret = ctdb_control(ctdb, destnode, 0,
+ CTDB_CONTROL_DB_GET_HEALTH, 0, data,
+ mem_ctx, &data, &res, &timeout, NULL);
+ if (ret != 0 || res != 0) {
+ return -1;
+ }
+
+ if (data.dsize == 0) {
+ (*reason) = NULL;
+ return 0;
+ }
+
+ (*reason) = talloc_strndup(mem_ctx, (const char *)data.dptr, data.dsize);
+ if ((*reason) == NULL) {
+ return -1;
+ }
+
+ talloc_free(data.dptr);
+
+ return 0;
+}
+
+/*
create a database
*/
int ctdb_ctrl_createdb(struct ctdb_context *ctdb, struct timeval timeout, uint32_t destnode,