summaryrefslogtreecommitdiffstats
path: root/rpc
diff options
context:
space:
mode:
authorPrasanna Kumar Kalever <prasanna.kalever@redhat.com>2017-01-21 15:08:50 +0530
committerPrasanna Kumar Kalever <prasanna.kalever@redhat.com>2017-01-30 19:31:50 +0530
commit7857ef74633919b8213009b411b0840eee144c97 (patch)
tree6d9fcf88b321b8b1011cd9d4053f20e004b7151c /rpc
parent683b6ba3f17a9bbf876c66f5d4b7a9d573d8853f (diff)
gluster-block: add delete rpc
Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
Diffstat (limited to 'rpc')
-rw-r--r--rpc/block.h62
-rw-r--r--rpc/block.x26
-rw-r--r--rpc/block_clnt.c75
-rw-r--r--rpc/block_svc.c35
-rw-r--r--rpc/block_xdr.c46
5 files changed, 243 insertions, 1 deletions
diff --git a/rpc/block.h b/rpc/block.h
index d939057..0ce4e33 100644
--- a/rpc/block.h
+++ b/rpc/block.h
@@ -33,6 +33,30 @@ struct blockCreateCli {
};
typedef struct blockCreateCli blockCreateCli;
+struct blockDeleteCli {
+ char block_name[255];
+ char *block_hosts;
+};
+typedef struct blockDeleteCli blockDeleteCli;
+
+struct blockDelete {
+ char block_name[255];
+ char gbid[127];
+};
+typedef struct blockDelete blockDelete;
+
+struct blockInfoCli {
+ char block_name[255];
+ char volume[255];
+};
+typedef struct blockInfoCli blockInfoCli;
+
+struct blockListCli {
+ char volume[255];
+ u_quad_t offset;
+};
+typedef struct blockListCli blockListCli;
+
struct blockResponse {
int exit;
char *out;
@@ -51,12 +75,30 @@ typedef struct blockResponse blockResponse;
#define BLOCK_CREATE_CLI 1
extern blockResponse * block_create_cli_1(blockCreateCli *, CLIENT *);
extern blockResponse * block_create_cli_1_svc(blockCreateCli *, struct svc_req *);
+#define BLOCK_LIST_CLI 2
+extern blockResponse * block_list_cli_1(blockListCli *, CLIENT *);
+extern blockResponse * block_list_cli_1_svc(blockListCli *, struct svc_req *);
+#define BLOCK_INFO_CLI 3
+extern blockResponse * block_info_cli_1(blockInfoCli *, CLIENT *);
+extern blockResponse * block_info_cli_1_svc(blockInfoCli *, struct svc_req *);
+#define BLOCK_DELETE_CLI 4
+extern blockResponse * block_delete_cli_1(blockDeleteCli *, CLIENT *);
+extern blockResponse * block_delete_cli_1_svc(blockDeleteCli *, struct svc_req *);
extern int gluster_block_cli_1_freeresult (SVCXPRT *, xdrproc_t, caddr_t);
#else /* K&R C */
#define BLOCK_CREATE_CLI 1
extern blockResponse * block_create_cli_1();
extern blockResponse * block_create_cli_1_svc();
+#define BLOCK_LIST_CLI 2
+extern blockResponse * block_list_cli_1();
+extern blockResponse * block_list_cli_1_svc();
+#define BLOCK_INFO_CLI 3
+extern blockResponse * block_info_cli_1();
+extern blockResponse * block_info_cli_1_svc();
+#define BLOCK_DELETE_CLI 4
+extern blockResponse * block_delete_cli_1();
+extern blockResponse * block_delete_cli_1_svc();
extern int gluster_block_cli_1_freeresult ();
#endif /* K&R C */
@@ -67,12 +109,24 @@ extern int gluster_block_cli_1_freeresult ();
#define BLOCK_CREATE 1
extern blockResponse * block_create_1(blockCreate *, CLIENT *);
extern blockResponse * block_create_1_svc(blockCreate *, struct svc_req *);
+#define BLOCK_DELETE 2
+extern blockResponse * block_delete_1(blockDelete *, CLIENT *);
+extern blockResponse * block_delete_1_svc(blockDelete *, struct svc_req *);
+#define BLOCK_EXEC 3
+extern blockResponse * block_exec_1(char **, CLIENT *);
+extern blockResponse * block_exec_1_svc(char **, struct svc_req *);
extern int gluster_block_1_freeresult (SVCXPRT *, xdrproc_t, caddr_t);
#else /* K&R C */
#define BLOCK_CREATE 1
extern blockResponse * block_create_1();
extern blockResponse * block_create_1_svc();
+#define BLOCK_DELETE 2
+extern blockResponse * block_delete_1();
+extern blockResponse * block_delete_1_svc();
+#define BLOCK_EXEC 3
+extern blockResponse * block_exec_1();
+extern blockResponse * block_exec_1_svc();
extern int gluster_block_1_freeresult ();
#endif /* K&R C */
@@ -81,11 +135,19 @@ extern int gluster_block_1_freeresult ();
#if defined(__STDC__) || defined(__cplusplus)
extern bool_t xdr_blockCreate (XDR *, blockCreate*);
extern bool_t xdr_blockCreateCli (XDR *, blockCreateCli*);
+extern bool_t xdr_blockDeleteCli (XDR *, blockDeleteCli*);
+extern bool_t xdr_blockDelete (XDR *, blockDelete*);
+extern bool_t xdr_blockInfoCli (XDR *, blockInfoCli*);
+extern bool_t xdr_blockListCli (XDR *, blockListCli*);
extern bool_t xdr_blockResponse (XDR *, blockResponse*);
#else /* K&R C */
extern bool_t xdr_blockCreate ();
extern bool_t xdr_blockCreateCli ();
+extern bool_t xdr_blockDeleteCli ();
+extern bool_t xdr_blockDelete ();
+extern bool_t xdr_blockInfoCli ();
+extern bool_t xdr_blockListCli ();
extern bool_t xdr_blockResponse ();
#endif /* K&R C */
diff --git a/rpc/block.x b/rpc/block.x
index b563c9e..aebe451 100644
--- a/rpc/block.x
+++ b/rpc/block.x
@@ -1,4 +1,3 @@
-
struct blockCreate {
char volume[255];
char volfileserver[255];
@@ -15,6 +14,26 @@ struct blockCreateCli {
string block_hosts<>;
};
+struct blockDeleteCli {
+ char block_name[255];
+ string block_hosts<>;
+};
+
+struct blockDelete {
+ char block_name[255];
+ char gbid[127];
+};
+
+struct blockInfoCli {
+ char block_name[255];
+ char volume[255];
+};
+
+struct blockListCli {
+ char volume[255];
+ u_quad_t offset; /* dentry d_name offset */
+};
+
struct blockResponse {
int exit; /* exit code of the command */
string out<>; /* json output */
@@ -25,11 +44,16 @@ struct blockResponse {
program GLUSTER_BLOCK_CLI {
version GLUSTER_BLOCK_CLI_VERS {
blockResponse BLOCK_CREATE_CLI(blockCreateCli) = 1;
+ blockResponse BLOCK_LIST_CLI(blockListCli) = 2;
+ blockResponse BLOCK_INFO_CLI(blockInfoCli) = 3;
+ blockResponse BLOCK_DELETE_CLI(blockDeleteCli) = 4;
} = 1;
} = 212153113; /* B2 L12 O15 C3 K11 C3 */
program GLUSTER_BLOCK {
version GLUSTER_BLOCK_VERS {
blockResponse BLOCK_CREATE(blockCreate) = 1;
+ blockResponse BLOCK_DELETE(blockDelete) = 2;
+ blockResponse BLOCK_EXEC(string) = 3;
} = 1;
} = 21215311; /* B2 L12 O15 C3 K11 */
diff --git a/rpc/block_clnt.c b/rpc/block_clnt.c
index ae95d9a..2e96709 100644
--- a/rpc/block_clnt.c
+++ b/rpc/block_clnt.c
@@ -25,6 +25,51 @@ block_create_cli_1(blockCreateCli *argp, CLIENT *clnt)
}
blockResponse *
+block_list_cli_1(blockListCli *argp, CLIENT *clnt)
+{
+ static blockResponse clnt_res;
+
+ memset((char *)&clnt_res, 0, sizeof(clnt_res));
+ if (clnt_call (clnt, BLOCK_LIST_CLI,
+ (xdrproc_t) xdr_blockListCli, (caddr_t) argp,
+ (xdrproc_t) xdr_blockResponse, (caddr_t) &clnt_res,
+ TIMEOUT) != RPC_SUCCESS) {
+ return (NULL);
+ }
+ return (&clnt_res);
+}
+
+blockResponse *
+block_info_cli_1(blockInfoCli *argp, CLIENT *clnt)
+{
+ static blockResponse clnt_res;
+
+ memset((char *)&clnt_res, 0, sizeof(clnt_res));
+ if (clnt_call (clnt, BLOCK_INFO_CLI,
+ (xdrproc_t) xdr_blockInfoCli, (caddr_t) argp,
+ (xdrproc_t) xdr_blockResponse, (caddr_t) &clnt_res,
+ TIMEOUT) != RPC_SUCCESS) {
+ return (NULL);
+ }
+ return (&clnt_res);
+}
+
+blockResponse *
+block_delete_cli_1(blockDeleteCli *argp, CLIENT *clnt)
+{
+ static blockResponse clnt_res;
+
+ memset((char *)&clnt_res, 0, sizeof(clnt_res));
+ if (clnt_call (clnt, BLOCK_DELETE_CLI,
+ (xdrproc_t) xdr_blockDeleteCli, (caddr_t) argp,
+ (xdrproc_t) xdr_blockResponse, (caddr_t) &clnt_res,
+ TIMEOUT) != RPC_SUCCESS) {
+ return (NULL);
+ }
+ return (&clnt_res);
+}
+
+blockResponse *
block_create_1(blockCreate *argp, CLIENT *clnt)
{
static blockResponse clnt_res;
@@ -38,3 +83,33 @@ block_create_1(blockCreate *argp, CLIENT *clnt)
}
return (&clnt_res);
}
+
+blockResponse *
+block_delete_1(blockDelete *argp, CLIENT *clnt)
+{
+ static blockResponse clnt_res;
+
+ memset((char *)&clnt_res, 0, sizeof(clnt_res));
+ if (clnt_call (clnt, BLOCK_DELETE,
+ (xdrproc_t) xdr_blockDelete, (caddr_t) argp,
+ (xdrproc_t) xdr_blockResponse, (caddr_t) &clnt_res,
+ TIMEOUT) != RPC_SUCCESS) {
+ return (NULL);
+ }
+ return (&clnt_res);
+}
+
+blockResponse *
+block_exec_1(char **argp, CLIENT *clnt)
+{
+ static blockResponse clnt_res;
+
+ memset((char *)&clnt_res, 0, sizeof(clnt_res));
+ if (clnt_call (clnt, BLOCK_EXEC,
+ (xdrproc_t) xdr_wrapstring, (caddr_t) argp,
+ (xdrproc_t) xdr_blockResponse, (caddr_t) &clnt_res,
+ TIMEOUT) != RPC_SUCCESS) {
+ return (NULL);
+ }
+ return (&clnt_res);
+}
diff --git a/rpc/block_svc.c b/rpc/block_svc.c
index 4c054f5..345581f 100644
--- a/rpc/block_svc.c
+++ b/rpc/block_svc.c
@@ -28,6 +28,9 @@ gluster_block_cli_1(struct svc_req *rqstp, register SVCXPRT *transp)
{
union {
blockCreateCli block_create_cli_1_arg;
+ blockListCli block_list_cli_1_arg;
+ blockInfoCli block_info_cli_1_arg;
+ blockDeleteCli block_delete_cli_1_arg;
} argument;
char *result;
xdrproc_t _xdr_argument, _xdr_result;
@@ -44,6 +47,24 @@ gluster_block_cli_1(struct svc_req *rqstp, register SVCXPRT *transp)
local = (char *(*)(char *, struct svc_req *)) block_create_cli_1_svc;
break;
+ case BLOCK_LIST_CLI:
+ _xdr_argument = (xdrproc_t) xdr_blockListCli;
+ _xdr_result = (xdrproc_t) xdr_blockResponse;
+ local = (char *(*)(char *, struct svc_req *)) block_list_cli_1_svc;
+ break;
+
+ case BLOCK_INFO_CLI:
+ _xdr_argument = (xdrproc_t) xdr_blockInfoCli;
+ _xdr_result = (xdrproc_t) xdr_blockResponse;
+ local = (char *(*)(char *, struct svc_req *)) block_info_cli_1_svc;
+ break;
+
+ case BLOCK_DELETE_CLI:
+ _xdr_argument = (xdrproc_t) xdr_blockDeleteCli;
+ _xdr_result = (xdrproc_t) xdr_blockResponse;
+ local = (char *(*)(char *, struct svc_req *)) block_delete_cli_1_svc;
+ break;
+
default:
svcerr_noproc (transp);
return;
@@ -69,6 +90,8 @@ gluster_block_1(struct svc_req *rqstp, register SVCXPRT *transp)
{
union {
blockCreate block_create_1_arg;
+ blockDelete block_delete_1_arg;
+ char *block_exec_1_arg;
} argument;
char *result;
xdrproc_t _xdr_argument, _xdr_result;
@@ -85,6 +108,18 @@ gluster_block_1(struct svc_req *rqstp, register SVCXPRT *transp)
local = (char *(*)(char *, struct svc_req *)) block_create_1_svc;
break;
+ case BLOCK_DELETE:
+ _xdr_argument = (xdrproc_t) xdr_blockDelete;
+ _xdr_result = (xdrproc_t) xdr_blockResponse;
+ local = (char *(*)(char *, struct svc_req *)) block_delete_1_svc;
+ break;
+
+ case BLOCK_EXEC:
+ _xdr_argument = (xdrproc_t) xdr_wrapstring;
+ _xdr_result = (xdrproc_t) xdr_blockResponse;
+ local = (char *(*)(char *, struct svc_req *)) block_exec_1_svc;
+ break;
+
default:
svcerr_noproc (transp);
return;
diff --git a/rpc/block_xdr.c b/rpc/block_xdr.c
index 91775fa..1b9a4c6 100644
--- a/rpc/block_xdr.c
+++ b/rpc/block_xdr.c
@@ -45,6 +45,52 @@ xdr_blockCreateCli (XDR *xdrs, blockCreateCli *objp)
}
bool_t
+xdr_blockDeleteCli (XDR *xdrs, blockDeleteCli *objp)
+{
+ if (!xdr_vector (xdrs, (char *)objp->block_name, 255,
+ sizeof (char), (xdrproc_t) xdr_char))
+ return FALSE;
+ if (!xdr_string (xdrs, &objp->block_hosts, ~0))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_blockDelete (XDR *xdrs, blockDelete *objp)
+{
+ if (!xdr_vector (xdrs, (char *)objp->block_name, 255,
+ sizeof (char), (xdrproc_t) xdr_char))
+ return FALSE;
+ if (!xdr_vector (xdrs, (char *)objp->gbid, 127,
+ sizeof (char), (xdrproc_t) xdr_char))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_blockInfoCli (XDR *xdrs, blockInfoCli *objp)
+{
+ if (!xdr_vector (xdrs, (char *)objp->block_name, 255,
+ sizeof (char), (xdrproc_t) xdr_char))
+ return FALSE;
+ if (!xdr_vector (xdrs, (char *)objp->volume, 255,
+ sizeof (char), (xdrproc_t) xdr_char))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
+xdr_blockListCli (XDR *xdrs, blockListCli *objp)
+{
+ if (!xdr_vector (xdrs, (char *)objp->volume, 255,
+ sizeof (char), (xdrproc_t) xdr_char))
+ return FALSE;
+ if (!xdr_u_quad_t (xdrs, &objp->offset))
+ return FALSE;
+ return TRUE;
+}
+
+bool_t
xdr_blockResponse (XDR *xdrs, blockResponse *objp)
{
if (!xdr_int (xdrs, &objp->exit))