From 52765ad94f233e4b4e57515e49f5b7c9e7c08b43 Mon Sep 17 00:00:00 2001 From: Aravinda VK Date: Wed, 7 Jan 2015 21:56:58 +0530 Subject: geo-rep: Adding Slave user field to georep status New column introduced in Status output, "SLAVE USER", Slave user is not "root" in non root Geo-replication setup. Added additional tag in XML output BUG: 1180459 Change-Id: Ia48a5a8eb892ce883b9ec114be7bb2d46eff8535 Signed-off-by: Aravinda VK Reviewed-on: http://review.gluster.org/9409 Tested-by: Gluster Build System Reviewed-by: Kotresh HR Reviewed-by: Avra Sengupta Reviewed-by: Venky Shankar Tested-by: Venky Shankar Reviewed-by: Vijay Bellur Tested-by: Vijay Bellur --- xlators/mgmt/glusterd/src/glusterd-geo-rep.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'xlators') diff --git a/xlators/mgmt/glusterd/src/glusterd-geo-rep.c b/xlators/mgmt/glusterd/src/glusterd-geo-rep.c index f75f7261ca1..c53f027def1 100644 --- a/xlators/mgmt/glusterd/src/glusterd-geo-rep.c +++ b/xlators/mgmt/glusterd/src/glusterd-geo-rep.c @@ -3487,6 +3487,10 @@ glusterd_read_status_file (glusterd_volinfo_t *volinfo, char *slave, dict_t *confd = NULL; char *slavekey = NULL; char *slaveentry = NULL; + char *slaveuser = NULL; + char *saveptr = NULL; + char *temp = NULL; + char *temp_inp = NULL; char *brick_host_uuid = NULL; int brick_host_uuid_length = 0; int gsync_count = 0; @@ -3718,10 +3722,27 @@ store_status: GF_FREE (sts_val); goto out; } + + memcpy (sts_val->session_slave, slaveentry, strlen(slaveentry)); sts_val->session_slave[strlen(slaveentry)] = '\0'; + temp_inp = gf_strdup(slaveentry); + if (!temp_inp) + goto out; + + if (strstr(temp_inp, "@") == NULL) { + slaveuser = "root"; + } else { + temp = strtok_r(temp_inp, "//", &saveptr); + temp = strtok_r(NULL, "/", &saveptr); + slaveuser = strtok_r(temp, "@", &saveptr); + } + memcpy (sts_val->slave_user, slaveuser, + strlen(slaveuser)); + sts_val->slave_user[strlen(slaveuser)] = '\0'; + snprintf (sts_val_name, sizeof (sts_val_name), "status_value%d", gsync_count); ret = dict_set_bin (dict, sts_val_name, sts_val, sizeof(gf_gsync_status_t)); if (ret) { @@ -3738,6 +3759,7 @@ store_status: goto out; out: + GF_FREE (temp_inp); dict_unref (confd); return 0; -- cgit