summaryrefslogtreecommitdiffstats
path: root/rpc/block_svc_routines.c
diff options
context:
space:
mode:
authorPrasanna Kumar Kalever <prasanna.kalever@redhat.com>2017-08-29 16:10:36 +0530
committerPranith Kumar Karampuri <pkarampu@redhat.com>2018-03-05 09:40:27 +0000
commit2c44d5d25adba74f6aa3553bfa33d2909490fde1 (patch)
treec2b2216f9116d784dae521845da81a0b52338cf5 /rpc/block_svc_routines.c
parent66b4672a8c3c4a0f2a4e084ee7f5d19c07410af0 (diff)
create: split "ROLLBACK ON:" to SUCCESS and FAILURE
Ex: When 192.168.124.179 goes while create is in progress, $ gluster-block create sample/1 ha 3 192.168.124.208,192.168.124.8,\ 192.168.124.179 1GiB --json-pretty; { "IQN":"iqn.2016-12.org.gluster-block:451cfb72-bf63-45ce-83d9-d059c010cbdd", "PORTAL(S)":[ "192.168.124.208:3260", "192.168.124.8:3260", "192.168.124.179:3260" ], "ROLLBACK FAILED ON":[ "192.168.124.179" ], "ROLLBACK SUCCESS ON":[ "192.168.124.8", "192.168.124.208" ], "RESULT":"FAIL" } Change-Id: Ibb947304154055f7477b80f1850184fb1965416d Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever@redhat.com>
Diffstat (limited to 'rpc/block_svc_routines.c')
-rw-r--r--rpc/block_svc_routines.c57
1 files changed, 27 insertions, 30 deletions
diff --git a/rpc/block_svc_routines.c b/rpc/block_svc_routines.c
index 0d75652..a28e64b 100644
--- a/rpc/block_svc_routines.c
+++ b/rpc/block_svc_routines.c
@@ -2770,8 +2770,7 @@ blockCreateCliFormatResponse(struct glfs *glfs, blockCreateCli *blk,
{
MetaInfo *info = NULL;
json_object *json_obj = NULL;
- json_object *json_array1 = NULL;
- json_object *json_array2 = NULL;
+ json_object *json_array[3] = {0};
char *tmp = NULL;
char *tmp2 = NULL;
char *portals = NULL;
@@ -2836,36 +2835,23 @@ blockCreateCliFormatResponse(struct glfs *glfs, blockCreateCli *blk,
GB_JSON_OBJ_TO_STR(cobj->passwd));
}
- json_array1 = json_object_new_array();
+ json_array[0] = json_object_new_array();
for (i = 0; i < savereply->nportal; i++) {
- json_object_array_add(json_array1,
+ json_object_array_add(json_array[0],
GB_JSON_OBJ_TO_STR(savereply->portal[i]));
}
- json_object_object_add(json_obj, "PORTAL(S)", json_array1);
+ json_object_object_add(json_obj, "PORTAL(S)", json_array[0]);
- if (savereply->obj->d_attempt || savereply->obj->d_success) {
- json_array2 = json_object_new_array();
-
- if (savereply->obj->d_attempt) {
- tmp = strtok (savereply->obj->d_attempt, " ");
- while (tmp!= NULL)
- {
- json_object_array_add(json_array2, GB_JSON_OBJ_TO_STR(tmp));
- tmp = strtok (NULL, " ");
- }
- }
+ if (savereply->obj->d_attempt) {
+ blockStr2arrayAddToJsonObj(json_obj, savereply->obj->d_attempt,
+ "ROLLBACK FAILED ON", &json_array[1]);
+ }
- if (savereply->obj->d_success) {
- tmp = strtok (savereply->obj->d_success, " ");
- while (tmp!= NULL) {
- json_object_array_add(json_array2, GB_JSON_OBJ_TO_STR(tmp));
- tmp = strtok (NULL, " ");
- }
- }
- tmp = NULL;
- json_object_object_add(json_obj, "ROLLBACK ON", json_array2);
+ if (savereply->obj->d_success) {
+ blockStr2arrayAddToJsonObj(json_obj, savereply->obj->d_success,
+ "ROLLBACK SUCCESS ON", &json_array[2]);
}
json_object_object_add(json_obj, "RESULT",
@@ -2874,8 +2860,11 @@ blockCreateCliFormatResponse(struct glfs *glfs, blockCreateCli *blk,
GB_ASPRINTF(&reply->out, "%s\n",
json_object_to_json_string_ext(json_obj,
mapJsonFlagToJsonCstring(blk->json_resp)));
- json_object_put(json_array1);
- json_object_put(json_array2);
+ for (i = 0; i < 3; i++) {
+ if (json_array[i]) {
+ json_object_put(json_array[i]);
+ }
+ }
json_object_put(json_obj);
} else {
for (i = 0; i < savereply->nportal; i++) {
@@ -2889,12 +2878,20 @@ blockCreateCliFormatResponse(struct glfs *glfs, blockCreateCli *blk,
/* save 'failed on'*/
tmp = NULL;
- if (savereply->obj->d_attempt || savereply->obj->d_success) {
- if (GB_ASPRINTF(&tmp, "ROLLBACK ON: %s %s\n",
- savereply->obj->d_attempt?savereply->obj->d_attempt:"",
+ if (savereply->obj->d_attempt) {
+ if (GB_ASPRINTF(&tmp, "ROLLBACK FAILED ON: %s\n",
+ savereply->obj->d_attempt?savereply->obj->d_attempt:"") == -1) {
+ goto out;
+ }
+ }
+
+ if (savereply->obj->d_success) {
+ tmp2 = tmp;
+ if (GB_ASPRINTF(&tmp, "%sROLLBACK SUCCESS ON: %s\n", tmp2?tmp2:"",
savereply->obj->d_success?savereply->obj->d_success:"") == -1) {
goto out;
}
+ GB_FREE(tmp2);
}
/* if savereply->iqn==NULL no point in printing auth */