cluster: RHEL6 - cman: only load ckpt service by default

Christine Caulfield chrissie at fedoraproject.org
Tue May 11 07:50:33 UTC 2010


Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=cae5311a3695e7a6a73e572a9db8e8a5bc148c1d
Commit:        cae5311a3695e7a6a73e572a9db8e8a5bc148c1d
Parent:        bd99e6e4616fddeba7b53333308a57fb327709a8
Author:        Christine Caulfield <ccaulfie at redhat.com>
AuthorDate:    Tue May 11 08:48:26 2010 +0100
Committer:     Christine Caulfield <ccaulfie at redhat.com>
CommitterDate: Tue May 11 08:48:26 2010 +0100

cman: only load ckpt service by default

Of all the openais services, cman only uses ckpt. So, in the interests
of not loading things we do not support, this patch only loads that service.
Other openais services can be loaded by adding stanzas to cluster.conf

Product Management Request

rhbz#568407

Signed-off-by: Christine Caulfield <ccaulfie at redhat.com>
---
 cman/cman_tool/join.c        |   12 +++++++-----
 cman/daemon/cman-preconfig.c |   42 +++++++++++++++++++++++++++++++++---------
 2 files changed, 40 insertions(+), 14 deletions(-)

diff --git a/cman/cman_tool/join.c b/cman/cman_tool/join.c
index 308d19b..c6cf4ef 100644
--- a/cman/cman_tool/join.c
+++ b/cman/cman_tool/join.c
@@ -176,13 +176,15 @@ int join(commandline_t *comline, char *main_envp[])
 	}
 	if (comline->noconfig_opt) {
 		envp[envptr++] = strdup("CMAN_NOCONFIG=true");
-		snprintf(config_modules, sizeof(config_modules), "cmanpreconfig%s",
-			 comline->noopenais_opt?"":":openaisserviceenablestable");
+		snprintf(config_modules, sizeof(config_modules), "cmanpreconfig");
 	}
 	else {
-		snprintf(config_modules, sizeof(config_modules), "%s:cmanpreconfig%s", comline->config_lcrso,
-			 comline->noopenais_opt?"":":openaisserviceenablestable");
+		snprintf(config_modules, sizeof(config_modules), "%s:cmanpreconfig", comline->config_lcrso);
 	}
+	if (comline->noopenais_opt) {
+		envp[envptr++] = strdup("CMAN_NOOPENAIS=true");
+	}
+
 	snprintf(scratch, sizeof(scratch), "COROSYNC_DEFAULT_CONFIG_IFACE=%s", config_modules);
 	envp[envptr++] = strdup(scratch);
 
@@ -358,7 +360,7 @@ int join(commandline_t *comline, char *main_envp[])
 				        strncpy(envname, envvar, PATH_MAX);
 					if (equal-envvar < PATH_MAX) {
 					    envname[equal-envvar] = '\0';
-					
+
 					    res = confdb_key_create_typed(confdb_handle, object_handle, envname,
 									  equal+1, strlen(equal+1),CONFDB_VALUETYPE_STRING);
 					}
diff --git a/cman/daemon/cman-preconfig.c b/cman/daemon/cman-preconfig.c
index 2352670..fb08e96 100644
--- a/cman/daemon/cman-preconfig.c
+++ b/cman/daemon/cman-preconfig.c
@@ -137,6 +137,19 @@ static int ipaddr_equal(struct sockaddr_storage *addr1, struct sockaddr_storage
 
 }
 
+/* Adds a service to objdb for the main corosync engine to load */
+static void add_service(struct objdb_iface_ver0 *objdb, const char *name)
+{
+      hdb_handle_t object_handle;
+
+      objdb->object_create(OBJECT_PARENT_HANDLE, &object_handle,
+			   "service", strlen("service"));
+      objdb->object_key_create_typed(object_handle, "name",
+				     name, strlen(name) + 1, OBJDB_VALUETYPE_STRING);
+      objdb->object_key_create_typed(object_handle, "ver",
+				     "0", 2, OBJDB_VALUETYPE_STRING);
+}
+
 /* Build a localhost ip_address */
 static int get_localhost(int family, struct sockaddr_storage *localhost)
 {
@@ -504,6 +517,9 @@ static int get_env_overrides(void)
 		if (debug > 0)
 			debug = 1;
 	}
+	if (getenv("CMAN_NOOPENAIS")) {
+		disable_openais = 1;
+	}
 
 	return 0;
 }
@@ -599,9 +615,6 @@ static int get_nodename(struct objdb_iface_ver0 *objdb)
 		if (!mcast_name)
 			return -1;
 
-		/* See if the user wants our default set of openais services (default=yes) */
-		objdb_get_int(objdb, object_handle, "disable_openais", &disable_openais, 0);
-
 		objdb->object_key_create_typed(object_handle, "nodename",
 					       nodename, strlen(nodename)+1, OBJDB_VALUETYPE_STRING);
 	}
@@ -879,12 +892,7 @@ static void add_cman_overrides(struct objdb_iface_ver0 *objdb)
 				       "0", 2, OBJDB_VALUETYPE_STRING);
 
 	/* Make sure we load our alter-ego - the main cman module */
-	objdb->object_create(OBJECT_PARENT_HANDLE, &object_handle,
-			     "service", strlen("service"));
-	objdb->object_key_create_typed(object_handle, "name",
-				       "corosync_cman", strlen("corosync_cman") + 1, OBJDB_VALUETYPE_STRING);
-	objdb->object_key_create_typed(object_handle, "ver",
-				       "0", 2, OBJDB_VALUETYPE_STRING);
+	add_service(objdb, "corosync_cman");
 
 	/* Define cman as the quorum provider for corosync */
 	objdb->object_find_create(OBJECT_PARENT_HANDLE, "quorum", strlen("quorum"), &find_handle);
@@ -896,6 +904,12 @@ static void add_cman_overrides(struct objdb_iface_ver0 *objdb)
 
 	objdb->object_key_create_typed(object_handle, "provider",
 				       "quorum_cman", strlen("quorum_cman") + 1, OBJDB_VALUETYPE_STRING);
+
+	/* Load openais services we need (unless told not to) */
+	if (!disable_openais) {
+	        add_service(objdb, "openais_ckpt");
+	}
+	
 }
 
 /* If ccs is not available then use some defaults */
@@ -1274,6 +1288,16 @@ static void setup_old_compat(struct objdb_iface_ver0 *objdb, hdb_handle_t cluste
 		objdb->object_key_create_typed(gfs_handle, plock_ownership,
 					       "0", 2, OBJDB_VALUETYPE_STRING);
 	}
+
+	/* Load a full set of openais services */
+	if (!disable_openais) {
+	        add_service(objdb, "openais_clm");
+		add_service(objdb, "openais_evt");
+		add_service(objdb, "openais_msg");
+		add_service(objdb, "openais_lck");
+		add_service(objdb, "openais_tmr");
+		/* ckpt is added as part of normal startup */
+	}
 }
 
 static int cmanpre_readconfig(struct objdb_iface_ver0 *objdb, const char **error_string)


More information about the cluster-commits mailing list