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

[Cluster-devel] cluster/rgmanager/src/utils clustat.c



CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	lhh sourceware org	2006-10-12 22:07:57

Modified files:
	rgmanager/src/utils: clustat.c 

Log message:
	Ancillary patch to fix 202492 and actually add back groupmember attr, not just rgmanager (per-node) attr

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/utils/clustat.c.diff?cvsroot=cluster&r1=1.24&r2=1.25

--- cluster/rgmanager/src/utils/clustat.c	2006/10/06 21:22:28	1.24
+++ cluster/rgmanager/src/utils/clustat.c	2006/10/12 22:07:57	1.25
@@ -549,13 +549,20 @@
 void
 xml_quorum_state(int qs)
 {
+	/* XXX output groupmember attr (carry over from RHCS4) */
 	printf("  <quorum ");
 
-	if (qs) {
-		printf("quorate=\"1\"/>");
+	if (qs & FLAG_UP) {
+		printf("quorate=\"1\"");
+	} else {
+		printf("quorate=\"0\"\n");
+	}
+	if (qs & FLAG_RGMGR) {
+		printf(" groupmember=\"1\"");
 	} else {
-		printf("quorate=\"0\"/>\n");
+		printf(" groupmember=\"0\"");
 	}
+	printf("/>\n");
 }
 
 
@@ -661,9 +668,25 @@
 		   rg_state_list_t *rgs, char *name, char *svcname,
 		   int flags)
 {
+	int x;
+
 	printf("<?xml version=\"1.0\"?>\n");
 	printf("<clustat version=\"4.1.1\">\n");
 
+	if (qs) {
+		qs = FLAG_UP;
+		if (membership) {
+			for (x = 0; x < membership->cml_count; x++) {
+				if ((membership->cml_members[x].cn_member &
+				     (FLAG_LOCAL|FLAG_RGMGR)) ==
+				     (FLAG_LOCAL|FLAG_RGMGR)) {
+					qs |= FLAG_RGMGR;
+					break;
+				}
+			}
+		}
+	}
+
 	if (!svcname && !name)
 		xml_quorum_state(qs);
 	if (!svcname || (name && svcname)) 
@@ -722,6 +745,11 @@
 		all = part;
 	}
 
+	if (!all) {
+		*lid = 0;
+		return NULL;
+	}
+
 	/* Grab the local node ID and flag it from the list of reported
 	   online nodes */
 	*lid = get_my_nodeid(ch);
@@ -844,6 +872,10 @@
 
 	/* Connect & grab all our info */
 	ch = cman_init(NULL);
+	if (!ch) {
+		printf("CMAN is not running.\n");
+		return 1;
+	}
 
 	switch(runtype) {
 	case QSTAT_ONLY:


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