diff options
author | Prasanna Kumar Kalever <prasanna.kalever@redhat.com> | 2017-08-29 16:10:36 +0530 |
---|---|---|
committer | Pranith Kumar Karampuri <pkarampu@redhat.com> | 2018-03-05 09:40:27 +0000 |
commit | 2c44d5d25adba74f6aa3553bfa33d2909490fde1 (patch) | |
tree | c2b2216f9116d784dae521845da81a0b52338cf5 /rpc/block_svc_routines.c | |
parent | 66b4672a8c3c4a0f2a4e084ee7f5d19c07410af0 (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.c | 57 |
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 */ |