summaryrefslogtreecommitdiffstats
path: root/gluster-blockd.c
diff options
context:
space:
mode:
authorPrasanna Kumar Kalever <prasanna.kalever@redhat.com>2017-01-15 13:59:04 +0530
committerPrasanna Kumar Kalever <prasanna.kalever@redhat.com>2017-01-16 17:39:28 +0530
commitc5bcaaaf25e781c21d29dfb0f39b0aeb7edb8283 (patch)
tree3754ef31816e856b34007170afba07778df0cf76 /gluster-blockd.c
parent0a1c338a4814f91cd49b7747442d413c6b8f0dfa (diff)
gluster-blockd: daemonize the utility
this patch, deprecate ssh way of communicating between server nodes/pods Reason: ssh way is hard to be accepted in container world (Kube). An another option kubeExec way seems to be a bit weird, to have uniform way of communication in container and non container worlds, we prefer RPC. From now we communicate via RPC, using a static port 24009 Hence, we have two components, server component -> gluster-blockd (daemon) client component -> gluster-block (cli) Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
Diffstat (limited to 'gluster-blockd.c')
-rw-r--r--gluster-blockd.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/gluster-blockd.c b/gluster-blockd.c
new file mode 100644
index 0000000..18506ac
--- /dev/null
+++ b/gluster-blockd.c
@@ -0,0 +1,34 @@
+#define _GNU_SOURCE /* See feature_test_macros(7) */
+#include <stdio.h>
+
+#include "rpc/block.h"
+#include "utils.h"
+
+
+blockTrans *
+block_exec_1_svc(char **cmd, struct svc_req *rqstp)
+{
+ FILE *fp;
+ static blockTrans *obj;
+
+ if(GB_ALLOC(obj) < 0)
+ return NULL;
+
+ if (GB_ALLOC_N(obj->out, 4096) < 0) {
+ GB_FREE(obj);
+ return NULL;
+ }
+
+ fp = popen(*cmd, "r");
+ if (fp != NULL) {
+ size_t newLen = fread(obj->out, sizeof(char), 4996, fp);
+ if (ferror( fp ) != 0) {
+ ERROR("%s", "Error reading command output\n");
+ } else {
+ obj->out[newLen++] = '\0';
+ }
+ obj->exit = WEXITSTATUS(pclose(fp));
+ }
+
+ return obj;
+}