[Cluster-devel] cluster/rgmanager/src/utils clustat.c
lhh at sourceware.org
lhh at sourceware.org
Thu Oct 12 22:07:58 UTC 2006
CVSROOT: /cvs/cluster
Module name: cluster
Changes by: lhh at 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:
More information about the Cluster-devel
mailing list