cluster: STABLE3 - rgmanager: Add non-critical flag to resources

Lon Hohberger lon at fedoraproject.org
Fri Sep 24 22:19:21 UTC 2010


Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=1435ea61cd9e2f02be0a081bec2ccc3cf03b064b
Commit:        1435ea61cd9e2f02be0a081bec2ccc3cf03b064b
Parent:        386cc0432b522f547f566224a1ab9c2f3ebc93d1
Author:        Lon Hohberger <lhh at redhat.com>
AuthorDate:    Thu Aug 12 16:28:59 2010 -0400
Committer:     Lon Hohberger <lhh at redhat.com>
CommitterDate: Fri Sep 24 18:17:21 2010 -0400

rgmanager: Add non-critical flag to resources

Signed-off-by: Lon Hohberger <lhh at redhat.com>
---
 rgmanager/include/reslist.h     |    1 +
 rgmanager/src/daemons/restree.c |   14 +++++++++++++-
 2 files changed, 14 insertions(+), 1 deletions(-)

diff --git a/rgmanager/include/reslist.h b/rgmanager/include/reslist.h
index 575db8a..ba47c44 100644
--- a/rgmanager/include/reslist.h
+++ b/rgmanager/include/reslist.h
@@ -28,6 +28,7 @@
 				  resource class if you delete it from
 				  the configuration */
 #define RF_ENFORCE_TIMEOUTS (1<<9) /** Enforce timeouts for this node */
+#define RF_NON_CRITCIAL (1<<10) /** stop this resource if it fails */
 
 
 
diff --git a/rgmanager/src/daemons/restree.c b/rgmanager/src/daemons/restree.c
index 1ae9746..5f37716 100644
--- a/rgmanager/src/daemons/restree.c
+++ b/rgmanager/src/daemons/restree.c
@@ -605,8 +605,11 @@ do_load_resource(int ccsfd, char *base,
 #else
 	if (conf_get(tok, &ref) == 0) {
 #endif
-		if (atoi(ref) > 0 || strcasecmp(ref, "yes") == 0)
+		if (atoi(ref) == 1 || strcasecmp(ref, "yes") == 0)
 			node->rn_flags |= RF_INDEPENDENT;
+		if (atoi(ref) == 2 || strcasecmp(ref, "non-critical") == 0) {
+			curres->r_flags |= RF_NON_CRITICAL;
+		}
 		free(ref);
 	}
 
@@ -653,6 +656,13 @@ do_load_resource(int ccsfd, char *base,
 
 	curres->r_refs++;
 
+	if (curres->r_refs > 1 &&
+	    (curres->r_flags & RF_NON_CRITICAL)) {
+		res_build_name(tok, sizeof(tok), curres);
+		printf("Non-critical flag for %s is being cleared due to multiple references.\n", tok);
+		curres->r_flags &= ~RF_NON_CRITICAL;
+	}
+
 	*newnode = node;
 
 	list_insert(tree, node);
@@ -941,6 +951,8 @@ _print_resource_tree(FILE *fp, resource_node_t **tree, int level)
 				fprintf(fp, "DESTROY ");
 			if (node->rn_flags & RF_ENFORCE_TIMEOUTS)
 				fprintf(fp, "ENFORCE-TIMEOUTS ");
+			if (node->rn_flags & RF_NON_CRITICAL)
+				fprintf(fp, "NON-CRITICAL ");
 			fprintf(fp, "]");
 		}
 		fprintf(fp, " {\n");


More information about the cluster-commits mailing list