[PATCH 4/5] quorumtool: make output more human friendly and retain machine parsable bits

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: "Fabio M. Di Nitto" <fdinitto@xxxxxxxxxx>

Signed-off-by: Fabio M. Di Nitto <fdinitto@xxxxxxxxxx>
---
 tools/corosync-quorumtool.c |   41 ++++++++++++++++++++++++-----------------
 1 files changed, 24 insertions(+), 17 deletions(-)

diff --git a/tools/corosync-quorumtool.c b/tools/corosync-quorumtool.c
index d016219..8d88131 100644
--- a/tools/corosync-quorumtool.c
+++ b/tools/corosync-quorumtool.c
@@ -295,6 +295,9 @@ static void display_nodes_data(uint32_t nodeid, nodeid_format_t nodeid_format, n
 {
 	int i;
 
+	printf("\nMembership information\n");
+	printf("----------------------\n");
+
 	if (v_handle) {
 		printf("Nodeid     Votes  Name\n");
 	} else {
@@ -329,9 +332,9 @@ static void display_nodes_data(uint32_t nodeid, nodeid_format_t nodeid_format, n
 			fprintf(stderr, "Unable to get quorum device info: %s\n", cs_strerror(err));
 		} else {
 			if (nodeid_format == NODEID_FORMAT_DECIMAL) {
-				printf("%10u   ", VOTEQUORUM_NODEID_QDEVICE);
+				printf("%4u   ", VOTEQUORUM_NODEID_QDEVICE);
 			} else {
-				printf("0x%08x   ", VOTEQUORUM_NODEID_QDEVICE);
+				printf("0x%04x   ", VOTEQUORUM_NODEID_QDEVICE);
 			}
 			printf("%3d  %s (%s)\n", qinfo.votes, qinfo.name, qinfo.state?"Voting":"Not voting");
 		}
@@ -357,21 +360,26 @@ static const char *decode_state(int state)
 	}
 }
 
-static int display_quorum_data(int is_quorate, uint32_t nodeid, int loop)
+static int display_quorum_data(int is_quorate, uint32_t nodeid,
+			       nodeid_format_t nodeid_format, name_format_t name_format,
+			       int loop)
 {
 	struct votequorum_info info;
 	int err;
 	char quorumtype[256];
+	time_t t;
 
 	memset(quorumtype, 0, sizeof(quorumtype));
 
-	if (!loop) {
-		if (get_quorum_type(quorumtype, sizeof(quorumtype))) {
-			strncpy(quorumtype, "Not configured", sizeof(quorumtype) - 1);
-		}
-		printf("Quorum type:      %s\n", quorumtype);
-	}
+	printf("Quorum information\n");
+	printf("------------------\n");
+	time(&t);
+	printf("Date:             %s", ctime((const time_t *)&t));
 
+	if (get_quorum_type(quorumtype, sizeof(quorumtype))) {
+		strncpy(quorumtype, "Not configured", sizeof(quorumtype) - 1);
+	}
+	printf("Quorum provider:  %s\n", quorumtype);
 	printf("Nodes:            %d\n", g_view_list_entries);
 	printf("Ring ID:          %" PRIu64 "\n", g_ring_id);
 	printf("Quorate:          %s\n", is_quorate?"Yes":"No");
@@ -381,6 +389,9 @@ static int display_quorum_data(int is_quorate, uint32_t nodeid, int loop)
 	}
 
 	if ((err=votequorum_getinfo(v_handle, nodeid, &info)) == CS_OK) {
+		printf("\nVotequorum information\n");
+		printf("----------------------\n");
+		printf("Node ID:          %u\n", nodeid);
 		printf("Node state:       %s\n", decode_state(info.node_state));
 		if (info.node_state != NODESTATE_MEMBER) {
 			return err;
@@ -408,6 +419,8 @@ static int display_quorum_data(int is_quorate, uint32_t nodeid, int loop)
 		fprintf(stderr, "Unable to get node %u info: %s\n", nodeid, cs_strerror(err));
 	}
 
+	display_nodes_data(nodeid, nodeid_format, name_format);
+
 	return err;
 }
 
@@ -450,11 +463,10 @@ quorum_err:
 		return -1;
 	}
 
-	err = display_quorum_data(is_quorate, nodeid, 0);
+	err = display_quorum_data(is_quorate, nodeid, nodeid_format, name_format, 0);
 	if (err != CS_OK) {
 		return -1;
 	}
-	display_nodes_data(nodeid, nodeid_format, name_format);
 
 	return is_quorate;
 }
@@ -475,17 +487,12 @@ static int monitor_status(nodeid_format_t nodeid_format, name_format_t name_form
 	}
 
 	while (1) {
-		time_t t;
-
 		err = quorum_dispatch(q_handle, CS_DISPATCH_ONE);
 		if (err != CS_OK) {
 			fprintf(stderr, "Unable to dispatch quorum status: %s\n", cs_strerror(err));
 			goto quorum_err;
 		}
-		time(&t);
-		printf("date:             %s", ctime((const time_t *)&t));
-		err = display_quorum_data(g_quorate, our_nodeid, loop);
-		display_nodes_data(our_nodeid, nodeid_format, name_format);
+		err = display_quorum_data(g_quorate, our_nodeid, nodeid_format, name_format, loop);
 		printf("\n");
 		loop = 1;
 		if (err != CS_OK) {
-- 
1.7.7.6

_______________________________________________
discuss mailing list
discuss@xxxxxxxxxxxx
http://lists.corosync.org/mailman/listinfo/discuss


[Index of Archives]     [Linux Clusters]     [Corosync Project]     [Linux USB Devel]     [Linux Audio Users]     [Photo]     [Yosemite News]    [Yosemite Photos]    [Linux Kernel]     [Linux SCSI]     [X.Org]

  Powered by Linux