summaryrefslogtreecommitdiffstats
path: root/cli/src/cli-xml-output.c
diff options
context:
space:
mode:
authorRavishankar N <ravishankar@redhat.com>2016-01-18 12:19:35 +0530
committerPranith Kumar Karampuri <pkarampu@redhat.com>2016-01-19 22:31:36 -0800
commit67b7752eccd8eae6a91f3bc3ff55d65dcf858dc7 (patch)
tree0c28eb2bc9e2407a7ce72a225690d13ef2882916 /cli/src/cli-xml-output.c
parentc535059299785f7d050482c257f10389c218048b (diff)
cli: Add arbiter details to volinfo xml output
The following are added: 1. "<arbiterCount>1</arbiterCount>" and "<coldarbiterCount>1</coldarbiterCount>" 2. "<isArbiter>0</isArbiter>" on the brick info, like so: <brick uuid="cafa8612-d7d4-4007-beea-72ae7477f3bb">127.0.0.2:/home/ravi/bricks/brick1 <name>127.0.0.2:/home/ravi/bricks/brick1</name> <hostUuid>cafa8612-d7d4-4007-beea-72ae7477f3bb</hostUuid> <isArbiter>0</isArbiter> </brick> Also fix a bug in gluster vol info where the abiter brick was shown the wrong brick of the cold tier after performing a tier-attach. Change-Id: Id978325d02b04f1a08856427827320e169169810 BUG: 1297750 Signed-off-by: Ravishankar N <ravishankar@redhat.com> Reviewed-on: http://review.gluster.org/13229 Smoke: Gluster Build System <jenkins@build.gluster.com> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org> CentOS-regression: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
Diffstat (limited to 'cli/src/cli-xml-output.c')
-rw-r--r--cli/src/cli-xml-output.c50
1 files changed, 47 insertions, 3 deletions
diff --git a/cli/src/cli-xml-output.c b/cli/src/cli-xml-output.c
index 7140f803071..f7ae0578b15 100644
--- a/cli/src/cli-xml-output.c
+++ b/cli/src/cli-xml-output.c
@@ -2551,6 +2551,8 @@ cli_xml_output_vol_info (cli_local_t *local, dict_t *dict)
int dist_count = 0;
int stripe_count = 0;
int replica_count = 0;
+ int arbiter_count = 0;
+ int isArbiter = 0;
int disperse_count = 0;
int redundancy_count = 0;
int transport = 0;
@@ -2561,6 +2563,7 @@ cli_xml_output_vol_info (cli_local_t *local, dict_t *dict)
char *caps = NULL;
int k __attribute__((unused)) = 0;
int index = 1;
+ int start_index = 1;
int vol_type = -1;
int tier_vol_type = 0;
/*hot disperse count, redundancy count and dist count are always
@@ -2569,17 +2572,18 @@ cli_xml_output_vol_info (cli_local_t *local, dict_t *dict)
int hot_dist_count = 0;
int hot_redundancy_count = 0;
values c = 0;
- char *keys[30] = {
+ char *keys[MAX] = {
[COLD_BRICK_COUNT] = "volume%d.cold_brick_count",
[COLD_TYPE] = "volume%d.cold_type",
[COLD_DIST_COUNT] = "volume%d.cold_dist_count",
[COLD_REPLICA_COUNT] = "volume%d.cold_replica_count",
+ [COLD_ARBITER_COUNT] = "volume%d.cold_arbiter_count",
[COLD_DISPERSE_COUNT] = "volume%d.cold_disperse_count",
[COLD_REDUNDANCY_COUNT] = "volume%d.cold_redundancy_count",
[HOT_BRICK_COUNT] = "volume%d.hot_brick_count",
[HOT_TYPE] = "volume%d.hot_type",
[HOT_REPLICA_COUNT] = "volume%d.hot_replica_count"};
- int value[9] = {};
+ int value[MAX] = {};
ret = dict_get_int32 (dict, "count", &count);
@@ -2668,6 +2672,16 @@ cli_xml_output_vol_info (cli_local_t *local, dict_t *dict)
XML_RET_CHECK_AND_GOTO (ret, out);
memset (key, 0, sizeof (key));
+ snprintf (key, sizeof (key), "volume%d.arbiter_count", i);
+ ret = dict_get_int32 (dict, key, &arbiter_count);
+ if (ret)
+ goto out;
+ ret = xmlTextWriterWriteFormatElement (local->writer,
+ (xmlChar *)"arbiterCount",
+ "%d", arbiter_count);
+ XML_RET_CHECK_AND_GOTO (ret, out);
+
+ memset (key, 0, sizeof (key));
snprintf (key, sizeof (key), "volume%d.disperse_count", i);
ret = dict_get_int32 (dict, key, &disperse_count);
if (ret)
@@ -2910,6 +2924,11 @@ cli_xml_output_vol_info (cli_local_t *local, dict_t *dict)
XML_RET_CHECK_AND_GOTO (ret, out);
ret = xmlTextWriterWriteFormatElement (local->writer,
+ (xmlChar *)"coldarbiterCount",
+ "%d", value[COLD_ARBITER_COUNT]);
+ XML_RET_CHECK_AND_GOTO (ret, out);
+
+ ret = xmlTextWriterWriteFormatElement (local->writer,
(xmlChar *)"coldbrickCount",
"%d",
value[COLD_BRICK_COUNT]);
@@ -2952,7 +2971,7 @@ cli_xml_output_vol_info (cli_local_t *local, dict_t *dict)
value[COLD_BRICK_COUNT]);
}
- index = value[HOT_BRICK_COUNT] + 1;
+ start_index = index = value[HOT_BRICK_COUNT] + 1;
while (index <= brick_count) {
snprintf (key, 1024, "volume%d.brick%d", i,
@@ -2990,6 +3009,19 @@ cli_xml_output_vol_info (cli_local_t *local, dict_t *dict)
"%s", uuid);
XML_RET_CHECK_AND_GOTO (ret, out);
+ memset (key, 0, sizeof (key));
+ snprintf (key, sizeof (key),
+ "volume%d.brick%d.isArbiter", i,
+ index);
+ if (dict_get (dict, key))
+ isArbiter = 1;
+ else
+ isArbiter = 0;
+ ret = xmlTextWriterWriteFormatElement
+ (local->writer, (xmlChar *)"isArbiter",
+ "%d", isArbiter);
+ XML_RET_CHECK_AND_GOTO (ret, out);
+
ret = xmlTextWriterEndElement (local->writer);
XML_RET_CHECK_AND_GOTO (ret, out);
@@ -3035,6 +3067,18 @@ cli_xml_output_vol_info (cli_local_t *local, dict_t *dict)
"%s", uuid);
XML_RET_CHECK_AND_GOTO (ret, out);
+ memset (key, 0, sizeof (key));
+ snprintf (key, sizeof (key),
+ "volume%d.brick%d.isArbiter", i, j);
+ if (dict_get (dict, key))
+ isArbiter = 1;
+ else
+ isArbiter = 0;
+ ret = xmlTextWriterWriteFormatElement
+ (local->writer, (xmlChar *)"isArbiter",
+ "%d", isArbiter);
+ XML_RET_CHECK_AND_GOTO (ret, out);
+
/* </brick> */
ret = xmlTextWriterEndElement (local->writer);
XML_RET_CHECK_AND_GOTO (ret, out);