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

[Cluster-devel] cluster ./configure ccs/ccs_tool/editconf.c cc ...



CVSROOT:	/cvs/cluster
Module name:	cluster
Changes by:	fabbione sourceware org	2008-01-07 05:52:29

Modified files:
	.              : configure 
	ccs/ccs_tool   : editconf.c update.c 
	ccs/daemon     : ccsd.c cluster_mgr.c cnx_mgr.c globals.h 
	ccs/lib        : libccs.c 
	cman/daemon    : cmanccs.c 
	cman/init.d    : Makefile 
	fence/agents/xvm: options.c simple_auth.h 
	fence/fenced   : main.c 
	make           : defines.mk.input 
	rgmanager/init.d: Makefile 
	rgmanager/src/daemons: rg_locks.c 
	rgmanager/src/resources: Makefile 
Added files:
	cman/init.d    : cman.in 
	rgmanager/init.d: rgmanager.in 
	rgmanager/src/resources/utils: config-utils.sh.in 
Removed files:
	cman/init.d    : cman 
	rgmanager/init.d: rgmanager 
	rgmanager/src/resources/utils: config-utils.sh 

Log message:
	makes it possible to change the default configuration file by setting
	--confdir (default to /etc/cluster) and --conffile (cluster.conf).
	
	NOTE: manpages with hardencoded /etc/cluster/cluster.conf are not updated.
	If you dare to change these defaults you know what you are doing.
	
	NOTE to developers: you will need to re-run ./configure to set the new vars.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/configure.diff?cvsroot=cluster&r1=1.45&r2=1.46
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/ccs/ccs_tool/editconf.c.diff?cvsroot=cluster&r1=1.12&r2=1.13
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/ccs/ccs_tool/update.c.diff?cvsroot=cluster&r1=1.13&r2=1.14
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/ccs/daemon/ccsd.c.diff?cvsroot=cluster&r1=1.29&r2=1.30
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/ccs/daemon/cluster_mgr.c.diff?cvsroot=cluster&r1=1.26&r2=1.27
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/ccs/daemon/cnx_mgr.c.diff?cvsroot=cluster&r1=1.44&r2=1.45
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/ccs/daemon/globals.h.diff?cvsroot=cluster&r1=1.5&r2=1.6
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/ccs/lib/libccs.c.diff?cvsroot=cluster&r1=1.13&r2=1.14
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cman/daemon/cmanccs.c.diff?cvsroot=cluster&r1=1.39&r2=1.40
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cman/init.d/cman.in.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cman/init.d/Makefile.diff?cvsroot=cluster&r1=1.8&r2=1.9
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/cman/init.d/cman.diff?cvsroot=cluster&r1=1.34&r2=NONE
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/agents/xvm/options.c.diff?cvsroot=cluster&r1=1.5&r2=1.6
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/agents/xvm/simple_auth.h.diff?cvsroot=cluster&r1=1.1&r2=1.2
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/fence/fenced/main.c.diff?cvsroot=cluster&r1=1.45&r2=1.46
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/make/defines.mk.input.diff?cvsroot=cluster&r1=1.9&r2=1.10
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/init.d/rgmanager.in.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/init.d/Makefile.diff?cvsroot=cluster&r1=1.7&r2=1.8
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/init.d/rgmanager.diff?cvsroot=cluster&r1=1.7&r2=NONE
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/daemons/rg_locks.c.diff?cvsroot=cluster&r1=1.9&r2=1.10
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/Makefile.diff?cvsroot=cluster&r1=1.25&r2=1.26
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/utils/config-utils.sh.in.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/rgmanager/src/resources/utils/config-utils.sh.diff?cvsroot=cluster&r1=1.6&r2=NONE

--- cluster/configure	2007/12/21 07:28:37	1.45
+++ cluster/configure	2008/01/07 05:52:26	1.46
@@ -75,6 +75,8 @@
 	prefix => \$prefix,
 	sbindir => \$sbindir,
 	sharedir => \$sharedir,
+	confdir => \$confdir,
+	conffile => \$conffile,
 	fence_agents => \$fence_agents,
 	enable_xen => \$enable_xen,
 	release_major => \$release_major,
@@ -137,6 +139,8 @@
 		    'prefix=s',
 		    'sbindir=s',
 		    'sharedir=s',
+		    'confdir=s',
+		    'conffile=s',
 		    'release_major=s',
 		    'release_minor=s',
 		    'fence_agents=s',
@@ -169,6 +173,8 @@
   print "--libdir=\tthe base directory for libraries.  (Default: {prefix}/lib)\n";
   print "--libexecdir=\tthe base directory for executable components.  (Default: {prefix}/libexec)\n";
   print "--sharedir=\tthe base directory for misc cluster files.  (Default: {prefix}/share/cluster)\n";
+  print "--confdir=\tthe cluster config directory.  (Default: /etc/cluster)\n";
+  print "--conffile=\tthe cluster config file.  (Default: cluster.conf)\n";
   print "--mandir=\tthe base directory for man pages.  (Default: {prefix}/share/man)\n";
   print "--module_dir=\tthe base directory for kernel modules.  (Default:  /lib/modules/`uname -r`/kernel\n";
   print "\nbuild flags:\n";
@@ -473,6 +479,12 @@
 if (!$sharedir) {
   $sharedir="${prefix}/share/cluster";
 }
+if (!$confdir) {
+  $confdir="/etc/cluster";
+}
+if (!$conffile) {
+  $conffile="cluster.conf";
+}
 if (!$fence_agents) {
   $fence_agents="all";
 }
@@ -584,6 +596,8 @@
   $_ =~ s/\ MANDIR\@/$mandir/;
   $_ =~ s/\ SBINDIR\@/$sbindir/;
   $_ =~ s/\ SHAREDIR\@/$sharedir/;
+  $_ =~ s/\ CONFDIR\@/$confdir/;
+  $_ =~ s/\ CONFFILE\@/$conffile/;
   $_ =~ s/\ FENCE_AGENTS\@/$fence_agents/;
   $_ =~ s/\ ENABLE_XEN\@/$enable_xen/;
   $_ =~ s/\ DISABLE_CCS\@/$without_ccs/;
--- cluster/ccs/ccs_tool/editconf.c	2007/12/13 10:38:42	1.12
+++ cluster/ccs/ccs_tool/editconf.c	2008/01/07 05:52:27	1.13
@@ -26,7 +26,7 @@
 #include "update.h"
 
 #define MAX_NODES 256
-#define DEFAULT_CONFIG_FILE "/etc/cluster/cluster.conf"
+
 char *prog_name = "ccs_tool";
 
 #define die(fmt, args...) \
@@ -54,7 +54,7 @@
 
 static void config_usage(int rw)
 {
-	fprintf(stderr, " -c --configfile    Name of configuration file (/etc/cluster/cluster.conf)\n");
+	fprintf(stderr, " -c --configfile    Name of configuration file (" DEFAULT_CONFIG_DIR "/" DEFAULT_CONFIG_FILE ")\n");
 	if (rw)
 	{
 		fprintf(stderr, " -o --outputfile    Name of output file (defaults to same as --configfile)\n");
@@ -543,14 +543,14 @@
 	LIBXML_TEST_VERSION;
 
 	if (!ninfo->configfile)
-		ninfo->configfile = DEFAULT_CONFIG_FILE;
+		ninfo->configfile = DEFAULT_CONFIG_DIR "/" DEFAULT_CONFIG_FILE;
 	if (!ninfo->outputfile)
 		ninfo->outputfile = ninfo->configfile;
 
 	/* Load XML document */
 	doc = xmlParseFile(ninfo->configfile);
 	if (doc == NULL)
-		die("Error: unable to parse cluster.conf file\n");
+		die("Error: unable to parse requested configuration file\n");
 
 	return doc;
 
@@ -1036,7 +1036,7 @@
 		}
 	}
 	if (!ninfo.outputfile)
-		ninfo.outputfile = DEFAULT_CONFIG_FILE;
+		ninfo.outputfile = DEFAULT_CONFIG_DIR "/" DEFAULT_CONFIG_FILE;
 	ninfo.configfile = "-";
 
 	if (argc - optind < 1)
--- cluster/ccs/ccs_tool/update.c	2007/06/19 18:08:01	1.13
+++ cluster/ccs/ccs_tool/update.c	2008/01/07 05:52:27	1.14
@@ -379,7 +379,7 @@
 	    "  Old config version :: %d\n"
 	    "  Proposed config version :: %d\n"
 	    "  Winning config version  :: %d\n\n"
-	    "Check /etc/cluster/cluster.conf to ensure it contains the desired contents.\n", v1, v2, v3);
+	    "Check " DEFAULT_CONFIG_DIR "/" DEFAULT_CONFIG_FILE " to ensure it contains the desired contents.\n", v1, v2, v3);
     return -EAGAIN;
   }
 
--- cluster/ccs/daemon/ccsd.c	2007/08/30 21:31:41	1.29
+++ cluster/ccs/daemon/ccsd.c	2008/01/07 05:52:27	1.30
@@ -271,7 +271,7 @@
 	  " -t <ttl>      Multicast threshold (aka Time to Live) value.\n"
 	  " -P [bcf]:#    Specify various port numbers.\n"
 	  " -V            Print version information.\n"
-	  " -X            No cluster manager, just read local cluster.conf.\n"
+	  " -X            No cluster manager, just read local " DEFAULT_CONFIG_DIR "/" DEFAULT_CONFIG_FILE ".\n"
 	  );
   EXIT("print_usage");
 }
@@ -319,7 +319,7 @@
 
   ENTER("parse_cli_args");
 
-  config_file_location = strdup(DEFAULT_CONFIG_LOCATION);
+  config_file_location = strdup(DEFAULT_CONFIG_DIR "/" DEFAULT_CONFIG_FILE);
   lockfile_location = strdup(DEFAULT_CCSD_LOCKFILE);
 
   if(!config_file_location || !lockfile_location){
@@ -530,7 +530,7 @@
   } else {
     /* no cluster.conf file.  This is fine, just need to get it from the network */
     if(no_manager_opt){
-      log_err("\nNo local cluster.conf found: %s\n", config_file_location);
+      log_err("\nNo local config file found: %s\n", config_file_location);
       return -1;
     }
   }
--- cluster/ccs/daemon/cluster_mgr.c	2007/05/02 12:42:43	1.26
+++ cluster/ccs/daemon/cluster_mgr.c	2008/01/07 05:52:27	1.27
@@ -194,18 +194,18 @@
 
     old_mode = umask(026);
 
-    fp = fopen("/etc/cluster/cluster.conf-update", "w");
+    fp = fopen(DEFAULT_CONFIG_DIR "/" DEFAULT_CONFIG_FILE "-update", "w");
 
     umask(old_mode);
 
     if (!fp) {
-      log_sys_err("Unable to open /etc/cluster/cluster.conf-update");
+      log_sys_err("Unable to open " DEFAULT_CONFIG_DIR "/" DEFAULT_CONFIG_FILE "-update");
       error = -errno;
       goto fail;
     }
 
     if (xmlDocDump(fp, tmp_doc) < 0) {
-      log_sys_err("Unable to write /etc/cluster/cluster.conf-update");
+      log_sys_err("Unable to write " DEFAULT_CONFIG_DIR "/" DEFAULT_CONFIG_FILE "-update");
       goto fail;
     }
 
@@ -248,7 +248,7 @@
 
     log_dbg("Got lock 1\n");
 
-    tmp_doc = xmlParseFile("/etc/cluster/cluster.conf-update");
+    tmp_doc = xmlParseFile(DEFAULT_CONFIG_DIR "/" DEFAULT_CONFIG_FILE "-update");
 
     if (!tmp_doc) {
       log_err("Unable to parse updated config file.\n");
@@ -263,22 +263,22 @@
 
     old_mode = umask(026);
 
-    fp = fopen("/etc/cluster/.cluster.conf", "w");
+    fp = fopen(DEFAULT_CONFIG_DIR "/." DEFAULT_CONFIG_FILE, "w");
 
     umask(old_mode);
 
     if (!fp) {
-      log_sys_err("Unable to open /etc/cluster/.cluster.conf");
+      log_sys_err("Unable to open " DEFAULT_CONFIG_DIR "/." DEFAULT_CONFIG_FILE);
       error = -errno;
       goto fail;
     }
 
     if (xmlDocDump(fp, tmp_doc) < 0) {
-      log_sys_err("Unable to write /etc/cluster/.cluster.conf");
+      log_sys_err("Unable to write " DEFAULT_CONFIG_DIR "/." DEFAULT_CONFIG_FILE);
       goto fail;
     }
 
-    rename("/etc/cluster/cluster.conf-update", "/etc/cluster/cluster.conf");
+    rename(DEFAULT_CONFIG_DIR "/" DEFAULT_CONFIG_FILE "-update", DEFAULT_CONFIG_DIR "/" DEFAULT_CONFIG_FILE);
 
     update_required = 1;
     ch.comm_flags = COMM_UPDATE_COMMIT_ACK;
--- cluster/ccs/daemon/cnx_mgr.c	2007/12/11 20:58:00	1.44
+++ cluster/ccs/daemon/cnx_mgr.c	2008/01/07 05:52:27	1.45
@@ -83,13 +83,13 @@
     error = -EINVAL;
     goto fail;
   } else if((v2 = get_doc_version(tmp_doc)) < 0){
-    log_err("Unable to get config_version from cluster.conf.\n");
+    log_err("Unable to get config_version from %s.\n", location);
     error = v2;
     goto fail;
   } else if(master_doc && master_doc->od_doc){
     v1 = get_doc_version(master_doc->od_doc);
     if(v1 >= v2){
-      log_err("cluster.conf on-disk version is <= to in-memory version.\n");
+      log_err("%s on-disk version is <= to in-memory version.\n", location);
       log_err(" On-disk version   : %d\n", v2);
       log_err(" In-memory version : %d\n", v1);
       error = -EPERM;
@@ -118,7 +118,7 @@
     master_doc = tmp_odoc;
   }
 
-  log_msg("Update of cluster.conf complete (version %d -> %d).\n", v1, v2);
+  log_msg("Update of "DEFAULT_CONFIG_DIR "/" DEFAULT_CONFIG_FILE " complete (version %d -> %d).\n", v1, v2);
  fail:
   if(tmp_odoc != master_doc){
     free(tmp_odoc);
@@ -140,7 +140,7 @@
   /* If update_required is set, it means that there is still a pending **
   ** update.  We need to pull this one in before doing anything else.  */
   if(update_required){
-    error = _update_config("/etc/cluster/.cluster.conf");
+    error = _update_config(DEFAULT_CONFIG_DIR "/." DEFAULT_CONFIG_FILE);
     update_required = 0;
     if(error){
       log_err("Previous update could not be completed.\n");
@@ -348,7 +348,7 @@
 	tmp_doc = xmlParseMemory(bdoc+sizeof(comm_header_t),
 				 ch->comm_payload_size);
 	if(!tmp_doc){
-	  log_err("Unable to parse remote cluster.conf.\n");
+	  log_err("Unable to parse remote configuration.\n");
 	  free(bdoc); bdoc = NULL;
 	  goto reset_timer;
 	}
@@ -357,12 +357,12 @@
 	log_dbg("  Given cluster name = %s\n", cluster_name);
 	log_dbg("  Remote cluster name= %s\n", tmp_name);
 	if(!tmp_name){
-	  log_err("Unable to find cluster name in remote cluster.conf.\n");
+	  log_err("Unable to find cluster name in remote configuration.\n");
 	  free(bdoc); bdoc = NULL;
 	  xmlFreeDoc(tmp_doc); tmp_doc = NULL;
 	  goto reset_timer;
 	} else if(cluster_name && strcmp(cluster_name, tmp_name)){
-	  log_dbg("Remote and local cluster.conf have different cluster names.\n");
+	  log_dbg("Remote and local configuration have different cluster names.\n");
 	  log_dbg("Skipping...\n");
 	  free(tmp_name); tmp_name = NULL;
 	  free(bdoc); bdoc = NULL;
@@ -372,7 +372,7 @@
 	free(tmp_name); tmp_name = NULL;
 	if(!master_doc->od_doc){
 	  if((v2 = get_doc_version(tmp_doc)) >= 0){
-	    log_msg("Remote copy of cluster.conf (version = %d) found.\n", v2);
+	    log_msg("Remote configuration copy (version = %d) found.\n", v2);
 	    master_doc->od_doc = tmp_doc;
 	    tmp_doc = NULL;
 	    write_to_disk = 1;
@@ -381,7 +381,7 @@
 	  if(((v1 = get_doc_version(master_doc->od_doc)) >= 0) &&
 	     ((v2 = get_doc_version(tmp_doc)) >= 0)){
 	    if(ch->comm_flags & COMM_BROADCAST_FROM_QUORATE){
-	      log_msg("Remote copy of cluster.conf is from quorate node.\n");
+	      log_msg("Remote configuration copy is from quorate node.\n");
 	      log_msg(" Local version # : %d\n", v1);
 	      log_msg(" Remote version #: %d\n", v2);
 	      if(v1 != v2){
@@ -404,7 +404,7 @@
 	      write_to_disk = 1;
 	      goto out;
 	    } else if(v2 > v1){
-	      log_msg("Remote copy of cluster.conf is newer than local copy.\n");
+	      log_msg("Remote configuration copy is newer than local copy.\n");
 	      log_msg(" Local version # : %d\n", v1);
 	      log_msg(" Remote version #: %d\n", v2);
 	      if(master_doc->od_refs){
@@ -451,23 +451,23 @@
 
     /* ATTENTION -- its bad if we fail here, because we have an in-memory version **
     ** but it has not been written to disk....................................... */
-    if(stat("/etc/cluster", &stat_buf)){
-      if(mkdir("/etc/cluster", S_IRWXU | S_IRWXG)){
-	log_sys_err("Unable to create directory /etc/cluster");
+    if(stat(DEFAULT_CONFIG_DIR, &stat_buf)){
+      if(mkdir(DEFAULT_CONFIG_DIR, S_IRWXU | S_IRWXG)){
+	log_sys_err("Unable to create directory " DEFAULT_CONFIG_DIR);
 	error = -errno;
 	goto fail;
       }
     } else if(!S_ISDIR(stat_buf.st_mode)){
-      log_err("/etc/cluster is not a directory.\n");
+      log_err(DEFAULT_CONFIG_DIR " is not a directory.\n");
       error = -ENOTDIR;
       goto fail;
     }
 
     old_mode = umask(026);
-    f = fopen("/etc/cluster/cluster.conf", "w");
+    f = fopen(DEFAULT_CONFIG_DIR "/" DEFAULT_CONFIG_FILE, "w");
     umask(old_mode);
     if(!f){
-      log_sys_err("Unable to open /etc/cluster/cluster.conf");
+      log_sys_err("Unable to open " DEFAULT_CONFIG_DIR "/" DEFAULT_CONFIG_FILE);
       error = -errno;
       goto fail;
     }
@@ -535,28 +535,28 @@
   }
 
   if(!master_doc->od_doc){
-    master_doc->od_doc = xmlParseFile("/etc/cluster/cluster.conf");
+    master_doc->od_doc = xmlParseFile(DEFAULT_CONFIG_DIR "/" DEFAULT_CONFIG_FILE);
     if(!master_doc->od_doc){
-      log_msg("Unable to parse %s\n", "/etc/cluster/cluster.conf");
+      log_msg("Unable to parse " DEFAULT_CONFIG_DIR "/" DEFAULT_CONFIG_FILE "\n");
       log_msg("Searching cluster for valid copy.\n");
     } else if((error = get_doc_version(master_doc->od_doc)) < 0){
-      log_err("Unable to get config_version from cluster.conf.\n");
+      log_err("Unable to get config_version from " DEFAULT_CONFIG_DIR "/" DEFAULT_CONFIG_FILE ".\n");
       log_err("Discarding data and searching for valid copy.\n");
       xmlFreeDoc(master_doc->od_doc);
       master_doc->od_doc = NULL;
     } else if(!(tmp_name = get_cluster_name(master_doc->od_doc))){
-      log_err("Unable to get cluster name from cluster.conf.\n");
+      log_err("Unable to get cluster name from " DEFAULT_CONFIG_DIR "/" DEFAULT_CONFIG_FILE ".\n");
       log_err("Discarding data and searching for valid copy.\n");
       xmlFreeDoc(master_doc->od_doc);
       master_doc->od_doc = NULL;
     } else if(cluster_name && strcmp(cluster_name, tmp_name)){
-      log_err("Given cluster name does not match local cluster.conf.\n");
+      log_err("Given cluster name does not match local " DEFAULT_CONFIG_DIR "/" DEFAULT_CONFIG_FILE ".\n");
       log_err("Discarding data and searching for matching copy.\n");
       xmlFreeDoc(master_doc->od_doc);
       master_doc->od_doc = NULL;
       free(tmp_name); tmp_name = NULL;
     } else {  /* Either the names match, or a name wasn't specified. */
-      log_msg("cluster.conf (cluster name = %s, version = %d) found.\n",
+      log_msg(DEFAULT_CONFIG_DIR "/" DEFAULT_CONFIG_FILE " (cluster name = %s, version = %d) found.\n",
 	      tmp_name, error);
       /* We must check with the others to make sure this is valid. */
     }
@@ -570,8 +570,8 @@
     ** for the config of the name specified............................... */
 
     if(cluster_name && strcmp(cluster_name, tmp_name)){
-      log_err("Request for cluster.conf with cluster name, %s\n", cluster_name);
-      log_err(" However, a cluster.conf with cluster name, %s, is already loaded.\n",
+      log_err("Request for configuration with cluster name, %s\n", cluster_name);
+      log_err(" However, a configuration with cluster name, %s, is already loaded.\n",
 	      tmp_name);
       error = -EINVAL;
       goto fail;
@@ -1326,11 +1326,11 @@
       goto fail;
     }
     memset(master_doc, 0, sizeof(open_doc_t));
-    master_doc->od_doc = xmlParseFile("/etc/cluster/cluster.conf");
+    master_doc->od_doc = xmlParseFile(DEFAULT_CONFIG_DIR "/" DEFAULT_CONFIG_FILE);
     if(!master_doc->od_doc){
       free(master_doc);
       master_doc = NULL;
-      log_err("Unable to parse %s.\n", "/etc/cluster/cluster.conf");
+      log_err("Unable to parse " DEFAULT_CONFIG_DIR "/" DEFAULT_CONFIG_FILE ".\n");
       error = -ENODATA;
       goto fail;
     }
@@ -1370,7 +1370,7 @@
   swab_header(ch); /* Swab back to dip into ch for payload_size */
   memcpy(buffer+sizeof(comm_header_t), payload, ch->comm_payload_size);
 
-  log_dbg("Sending cluster.conf (version %d)...\n", get_doc_version(master_doc->od_doc));
+  log_dbg("Sending configuration (version %d)...\n", get_doc_version(master_doc->od_doc));
   sendlen = ch->comm_payload_size + sizeof(comm_header_t);
   if(sendto(sfd, buffer, sendlen, 0,
 	    (struct sockaddr *)&addr, (socklen_t)len) < 0){
--- cluster/ccs/daemon/globals.h	2006/01/11 16:00:55	1.5
+++ cluster/ccs/daemon/globals.h	2008/01/07 05:52:28	1.6
@@ -12,7 +12,6 @@
 #ifndef __GLOBALS_H__
 #define __GLOBALS_H__
 
-#define DEFAULT_CONFIG_LOCATION "/etc/cluster/cluster.conf"
 #define DEFAULT_CCSD_LOCKFILE "/var/run/cluster/ccsd.pid"
 
 #define EXIT_MAGMA_PLUGINS 2  /* Magma plugins are not available */
--- cluster/ccs/lib/libccs.c	2007/10/26 19:18:10	1.13
+++ cluster/ccs/lib/libccs.c	2008/01/07 05:52:28	1.14
@@ -376,10 +376,11 @@
  *
  * This function will only allow a connection even if the node is not
  * part of a quorate cluster.  It will use the configuration file
- * located in /etc/cluster/cluster.conf.  If that file does not exist,
- * a copy of the file will be broadcasted for.  If blocking is specified,
- * the broadcasts will be retried until a config file is located.  Otherwise,
- * the fuction will return an error if the initial broadcast is not successful.
+ * as specified at build time (default: /etc/cluster/cluster.conf).  If that
+ * file does not exist, a copy of the file will be broadcasted for.  If
+ * blocking is specified, the broadcasts will be retried until a config file
+ * is located.  Otherwise, the fuction will return an error if the initial
+ * broadcast is not successful.
  *
  * Returns: ccs_desc on success, < 0 on failure
  */
--- cluster/cman/daemon/cmanccs.c	2008/01/02 16:35:44	1.39
+++ cluster/cman/daemon/cmanccs.c	2008/01/07 05:52:28	1.40
@@ -35,7 +35,7 @@
 
 #define DEFAULT_PORT            5405
 #define DEFAULT_CLUSTER_NAME    "RHCluster"
-#define NOCCS_KEY_FILENAME      "/etc/cluster/cman_authkey"
+#define NOCCS_KEY_FILENAME      DEFAULT_CONFIG_DIR "/cman_authkey"
 
 #define CONFIG_VERSION_PATH	"/cluster/@config_version"
 #define CLUSTER_NAME_PATH	"/cluster/@name"
@@ -588,9 +588,9 @@
 	/* Find our nodename in cluster.conf */
 	error = verify_nodename(cd, nodename);
 	if (error) {
-		log_printf(LOG_ERR, "local node name \"%s\" not found in cluster.conf",
+		log_printf(LOG_ERR, "local node name \"%s\" not found in the configuration",
 			nodename);
-		write_cman_pipe("Can't find local node name in cluster.conf");
+		write_cman_pipe("Can't find local node name in the configuration");
 		error = -ENOENT;
 		goto out;
 	}
@@ -707,7 +707,7 @@
 	}
 
 	if (!nodeid) {
-		log_printf(LOG_ERR, "No nodeid specified in cluster.conf");
+		log_printf(LOG_ERR, "No nodeid specified in configuration file");
 		write_cman_pipe("CCS does not have a nodeid for this node, run 'ccs_tool addnodeids' to fix");
 		return -EINVAL;
 	}
/cvs/cluster/cluster/cman/init.d/cman.in,v  -->  standard output
revision 1.1
--- cluster/cman/init.d/cman.in
+++ -	2008-01-07 05:52:30.853759000 +0000
@@ -0,0 +1,554 @@
+#!/bin/bash
+#
+# chkconfig: 345 21 79
+# description: Starts and stops cman
+#
+#
+### BEGIN INIT INFO
+# Provides:
+### END INIT INFO
+. /etc/init.d/functions
+
+[ -f /etc/sysconfig/cman ] && . /etc/sysconfig/cman
+[ -z "$CCSD_OPTS" ] && CCSD_OPTS=
+
+# CMAN_CLUSTER_TIMEOUT -- amount of time to wait for joinging a cluster
+#     before giving up.  If CMAN_CLUSTER_TIMEOUT is positive, then we will
+#     wait CMAN_CLUSTER_TIMEOUT seconds before giving up and failing when
+#     a cluster is not joined.  If CMAN_CLUSTER_TIMEOUT is zero, then
+#     wait indefinately for a cluster join.  If CMAN_CLUSTER_TIMEOUT is
+#     negative, do not check to see that the cluster has been joined
+[ -z "$CMAN_CLUSTER_TIMEOUT" ] && CMAN_CLUSTER_TIMEOUT=120
+
+# CMAN_QUORUM_TIMEOUT -- amount of time to wait for a quorate cluster on 
+#     startup quorum is needed by many other applications, so we may as 
+#     well wait here.  If CMAN_QUORUM_TIMEOUT is less than 1, quorum will 
+#     be ignored.
+#CMAN_QUORUM_TIMEOUT=300
+[ -z "$CMAN_QUORUM_TIMEOUT" ] && CMAN_QUORUM_TIMEOUT=0
+
+# CMAN_SHUTDOWN_TIMEOUT -- amount of time to wait for cman to become a 
+#     cluster member before calling cman_tool leave during shutdown.  
+#     default is 60 seconds
+[ -z "$CMAN_SHUTDOWN_TIMEOUT" ] && CMAN_SHUTDOWN_TIMEOUT=60
+
+# FENCED_START_TIMEOUT -- amount of time to wait for starting fenced
+#     before giving up.  If FENCED_START_TIMEOUT is positive, then we will
+#     wait FENCED_START_TIMEOUT seconds before giving up and failing when
+#     fenced does not start.  If FENCED_START_TIMEOUT is zero, then
+#     wait indefinately for fenced to start.
+[ -z "$FENCED_START_TIMEOUT" ] && FENCED_START_TIMEOUT=300
+
+# NET_RMEM_DEFAULT -- minimum value for rmem_default. If this is set
+# higher elsewhere it will not be reduced here.
+# These two values are only really needed for the DLM when using sctp
+# but do no harm.
+[ -z "$NET_RMEM_DEFAULT" ] && NET_RMEM_DEFAULT=4194304
+
+# NET_RMEM_MAX -- minimum value for rmem_max. If this is set
+# higher elsewhere it will not be reduced here.
+[ -z "$NET_RMEM_MAX" ] && NET_RMEM_MAX=4194304
+
+[ -z "$LOCK_FILE" ] && LOCK_FILE="/var/lock/subsys/cman"
+
+[ -n "$CLUSTERNAME" ] && cman_join_opts="-c $CLUSTERNAME"
+
+load_modules()
+{
+    errmsg=$( /sbin/modprobe configfs 2>&1 ) || return 1
+    errmsg=$( /sbin/modprobe dlm 2>&1 ) || return 1
+    errmsg=$( /sbin/modprobe lock_dlm 2>&1 ) || return 1
+    return 0
+}
+
+start_configfs()
+{
+    # configfs
+    awk '{ print $2 }' /etc/mtab | grep "/sys/kernel/config" &> /dev/null \
+    && awk '{ print $3 }' /etc/mtab | grep "configfs" &> /dev/null
+    if [ $? -ne 0 ]
+    then
+	errmsg=$( /bin/mount -t configfs none /sys/kernel/config 2>&1 )
+	return $?
+    fi
+    return 0
+}
+
+start_ccsd()
+{
+    # ccsd
+    status ccsd &> /dev/null
+    if [ $? -ne 0 ]
+    then
+	errmsg=$(/sbin/ccsd $CCSD_OPTS 2>&1)
+	rtrn=$?
+	return $rtrn
+    fi
+    return 0
+}
+
+start_cman()
+{
+    # cman
+    /usr/sbin/cman_tool status &> /dev/null
+    if [ $? -ne 0 ]
+    then
+	errmsg=$( /usr/sbin/cman_tool -t $CMAN_CLUSTER_TIMEOUT -w join \
+	    $cman_join_opts 2>&1 ) || return 1
+
+	if [ $CMAN_QUORUM_TIMEOUT -gt 0 ]
+	then
+	    errmsg=$( /usr/sbin/cman_tool -t $CMAN_QUORUM_TIMEOUT \
+		    -q wait 2>&1 ) || return 1
+	fi
+    fi
+    return 0
+}
+
+start_daemons()
+{
+    status groupd &> /dev/null
+    if [ $? -ne 0 ]; then
+	errmsg=$( /sbin/groupd 2>&1 ) || return 1
+    fi
+    status fenced &> /dev/null
+    if [ $? -ne 0 ]; then
+	errmsg=$( /sbin/fenced 2>&1 ) || return 1
+    fi
+    status dlm_controld &> /dev/null
+    if [ $? -ne 0 ]; then
+	errmsg=$( /sbin/dlm_controld 2>&1 ) || return 1
+    fi
+    status gfs_controld &> /dev/null
+    if [ $? -ne 0 ]; then
+	errmsg=$( /sbin/gfs_controld 2>&1 ) || return 1
+    fi
+    return 0
+}
+
+start_fence()
+{
+    errmsg=$( /sbin/fence_tool -w -t $FENCED_START_TIMEOUT join \
+	     > /dev/null 2>&1 ) || return 1
+    return 0
+}
+
+start_fence_xvmd()
+{
+    status fence_xvmd &> /dev/null
+    if [ $? -ne 0 ]; then
+	errmsg=$( /sbin/fence_xvmd $FENCE_XVMD_OPTS 2>&1 ) || return 1
+    fi
+    return 0
+}
+
+xend_bridged_net_enabled() {
+	# Not a xen kernel
+	test -d /proc/xen || return 1
+
+    current_runlevel=$(/sbin/runlevel 2>/dev/null | awk '{ print $2 }' 2>/dev/null)
+    if [ -z "$current_runlevel" ]; then
+        errmsg='Unable to determine the current runlevel'
+        return 1
+    fi
+
+    /sbin/chkconfig --levels "$current_runlevel" xend 2>/dev/null
+    if [ $? -ne 0 ]; then
+        # xend doesn't start at this runlevel.
+        return 1
+    fi
+
+    if [ ! -f /etc/xen/xend-config.sxp ]; then
+        # xend isn't configured to use bridged networking.
+        return 1
+    fi
+
+    egrep "^[[:blank:]]*\([[:blank:]]*network-script[[:blank:]]+(')*[[:blank:]]*network-bridge([[:blank:]]*\)|[[:blank:]]+)" /etc/xen/xend-config.sxp >&/dev/null
+    if [ $? -ne 0 ]; then
+        # xend isn't configured to use bridged networking.
+        return 1
+    fi
+    return 0
+}
+
+xend_bridged_net_start() {
+    if [ ! -x /etc/xen/scripts/network-bridge ]; then
+        if [ -f /etc/xen/scripts/network-bridge ]; then
+            errmsg='The xend bridged network script cannot be run'
+        else
+            errmsg='The xend bridged network script is missing'
+        fi
+        return 1
+    fi
+
+    /sbin/modprobe netbk >& /dev/null
+    /sbin/modprobe netloop >& /dev/null
+    errmsg=$(/etc/xen/scripts/network-bridge start 2>&1) || return 1
+    return 0
+}
+
+fence_xvmd_enabled()
+{
+    #
+    # Check for the 'xm' binary.  If it's not here, we are not
+    # running on a machine capable of running xvmd.
+    #
+    which xm &> /dev/null || return 1
+	
+    #
+    # Check for presence of Domain-0; if it's not there, we can't
+    # run xvmd.
+    #
+    xm list --long 2> /dev/null | grep -q "Domain-0" || return 1
+	
+    #
+    # Check for presence of /cluster/fence_xvmd in cluster.conf
+    # (If -X is specified, it doesn't matter if it's in cluster.conf;
+    #  we'll start it anyway since ccsd is not required)
+    #
+    if [ "$FENCE_XVMD_OPTS" = "${FENCE_XVMD_OPTS/-X/}" ]; then
+        xmllint --shell @CONFDIR@/@CONFFILE@ 2> /dev/null \
+            < <(echo ls cluster) | grep -q fence_xvmd || return 1
+    fi   
+    
+    return 0
+}
+
+set_networking_params()
+{
+    if [ ! -f  /proc/sys/net/core/rmem_default ]
+    then
+	return 0;
+    fi
+   
+    value="$(cat /proc/sys/net/core/rmem_default)"
+    if [ $value -le $NET_RMEM_DEFAULT ]
+    then
+	echo $NET_RMEM_DEFAULT > /proc/sys/net/core/rmem_default
+    fi
+    
+    value="$(cat /proc/sys/net/core/rmem_max)"
+    if [ $value -le $NET_RMEM_MAX ]
+        then
+        echo $NET_RMEM_MAX > /proc/sys/net/core/rmem_max
+    fi
+}
+
+start()
+{
+    echo "Starting cluster: "
+
+    xend_bridged_net_enabled
+    if [ $? -eq 0 ]
+    then
+        echo -n "   Enabling workaround for Xend bridged networking... "
+        xend_bridged_net_start
+        if [ $? -eq 0 ] 
+        then
+            echo "done"
+        else
+            echo "failed: $errmsg"
+			return 1
+        fi
+    fi
+    echo -n "   Loading modules... "
+    ulimit -c unlimited
+    load_modules
+    if [ $? -eq 0 ] 
+    then
+	echo "done"
+    else
+	echo "failed"
+	return 1
+    fi
+    echo -n "   Mounting configfs... "
+    start_configfs
+    if [ $? -eq 0 ] 
+    then
+	echo "done"
+    else
+	echo "failed"
+	return 1
+    fi	
+    echo -n "   Setting network parameters... "
+    set_networking_params
+    if [ $? -eq 0 ] 
+    then
+	echo "done"
+    else
+	echo "failed"
+	return 1
+    fi
+    echo -n "   Starting ccsd... "
+    start_ccsd
+    if [ $? -eq 0 ] 
+    then
+	echo "done"
+    else
+	echo "failed"
+	return 1
+    fi
+    echo -n "   Starting cman... "
+    start_cman
+    if [ $? -eq 0 ] 
+    then
+	echo "done"
+    else
+	echo "failed"
+	return 1
+    fi
+    echo -n "   Starting daemons... "
+    start_daemons
+    if [ $? -eq 0 ] 
+    then
+	echo "done"
+    else
+	echo "failed"
+	return 1
+    fi
+    echo -n "   Starting fencing... "
+    start_fence
+    if [ $? -eq 0 ] 
+    then
+	echo "done"
+    else
+	echo "failed"
+	return 1
+    fi
+    
+    if fence_xvmd_enabled; then
+	echo -n "   Starting virtual machine fencing host... "
+	start_fence_xvmd
+	if [ $? -eq 0 ]
+	then
+	    echo "done"
+	else
+	    echo "failed"
+	return 1
+	fi
+    fi
+    
+    return 0
+}
+
+stop_configfs()
+{
+    awk '{ print $2 }' /etc/mtab | grep "/sys/kernel/config" &> /dev/null\
+    && awk '{ print $3 }' /etc/mtab | grep "configfs" &> /dev/null
+    if [ $? -eq 0 ]
+    then
+	errmsg=$( /bin/umount /sys/kernel/config 2>&1 )
+	if [ $? -ne 0 ]
+	then
+	    echo -n $errmsg " "
+	fi
+    fi
+    return 0
+}
+
+stop_ccsd()
+{
+    for sec in $(seq 1 10)
+    do
+	if /sbin/pidof ccsd &> /dev/null
+	then
+	    # get the pid of ccsd from /var/run/cluster/ccsd.pid
+	    # and break if the file is not there
+	    [ -r /var/run/cluster/ccsd.pid ] || break
+
+	    pid=$(cat /var/run/cluster/ccsd.pid)
+	    /usr/bin/kill $pid &> /dev/null || break
+	    
+	    sleep 1
+	else
+	    return 0
+	fi
+    done
+    return 1
+}
+
+stop_cman()
+{
+    /usr/sbin/cman_tool status &> /dev/null
+    if [ $? -eq 0 ]
+    then
+    errmsg=$( /usr/sbin/cman_tool -t $CMAN_SHUTDOWN_TIMEOUT \
+	    -w leave $1 2>&1 ) || return 1
+    fi
+    return 0 # all ok
+}
+
+stop_daemons()
+{
+    if pid=$(/sbin/pidof gfs_controld 2>&1); then
+	errmsg=$(/usr/bin/kill $pid 2>&1) || return 1
+    fi
+    if pid=$(/sbin/pidof dlm_controld 2>&1); then
+	errmsg=$(/usr/bin/kill $pid 2>&1) || return 1
+    fi
+    if pid=$(/sbin/pidof fenced 2>&1); then
+	errmsg=$(/usr/bin/kill $pid 2>&1) || return 1
+    fi
+    if pid=$(/sbin/pidof groupd 2>&1); then
+	errmsg=$(/usr/bin/kill $pid 2>&1) || return 1
+    fi
+    return 0 # all ok
+}
+
+stop_fence()
+{
+    if /sbin/pidof fenced &> /dev/null
+    then
+	/sbin/fence_tool -w leave > /dev/null 2>&1
+	rtrn=$?
+	sleep 1 # A bit of time for fenced to exit
+	return $rtrn
+    fi
+    return 0 # all ok
+}
+
+stop_fence_xvmd()
+{
+    if /sbin/pidof fence_xvmd &> /dev/null
+    then
+    	pkill -TERM fence_xvmd
+	sleep 1 # A bit of time for fenced to exit
+    fi
+    
+    [ -z "`pidof fence_xvmd`" ]
+    return $?
+}
+
+stop()
+{
+    echo "Stopping cluster: "
+    if fence_xvmd_enabled; then
+	echo -n "   Stopping virtual machine fencing host... "
+	stop_fence_xvmd
+	if [ $? -eq 0 ]
+	then
+	    echo "done"
+	else
+	    echo "failed"
+	    return 1
+	fi
+    fi        
+    echo -n "   Stopping fencing... "
+    stop_fence
+    if [ $? -eq 0 ]
+    then
+	echo "done"
+    else
+	echo "failed"
+	return 1
+    fi
+    echo -n "   Stopping cman... "
+    if [ $1 ]; then
+	stop_cman $1
+    else
+	stop_cman
+    fi
+    if [ $? -eq 0 ]
+    then
+	echo "done"
+    else
+	echo "failed"
+	return 1
+    fi
+#    stop_daemons
+#    [ $? -ne 0 ] && return 1
+    echo -n "   Stopping ccsd... "
+    stop_ccsd
+    if [ $? -eq 0 ]
+    then
+	echo "done"
+    else
+	echo "failed"
+	return 1
+    fi
+    echo -n "   Unmounting configfs... "
+    stop_configfs
+    if [ $? -eq 0 ]
+    then
+	echo "done"
+    else
+	echo "failed"
+	return 1
+    fi
+
+    return 0
+}
+
+cmanstatus()
+{
+	errmsg=$( status ccsd 2>&1) || return 1
+	errmsg=$( status groupd 2>&1) || return 1
+	errmsg=$( status fenced 2>&1) || return 1
+	errmsg=$( status dlm_controld 2>&1) || return 1
+	errmsg=$( status gfs_controld 2>&1) || return 1
+	
+	fence_xvmd_enabled || return 0
+	errmsg=$( status fence_xvmd 2>&1) || return 1
+
+	return 0
+}
+
+rtrn=1
+
+# See how we were called.
+case "$1" in
+    start)
+	start
+	rtrn=$?
+	[ $rtrn = 0 ] && touch $LOCK_FILE
+	if [ $rtrn -ne 0 ] 
+	then
+	    echo $errmsg
+	    failure "failed to start cman"
+	    echo
+	else
+	    success "start"
+	    echo
+	fi
+	;;
+    stop)
+	if [ $2 ]; then
+	    stop
+	else
+	    stop remove
+	fi
+	rtrn=$?
+	[ $rtrn = 0 ] && rm -f $LOCK_FILE
+	if [ $rtrn -ne 0 ] 
+	then
+	    echo $errmsg
+	    failure "failed to stop cman"
+	    echo
+	else
+	    success "shutdown"
+	    echo
+	fi
+	;;
+
+    restart)
+	$0 stop restart
+	$0 start
+	rtrn=$?
+	;;
+
+    status)
+	cmanstatus
+	rtrn=$?
+	if [ $rtrn -ne 0 ] ; then
+	    echo $errmsg
+	else
+	    echo "cman is running."
+	fi
+	;;
+
+    *)
+	    echo $"Usage: $0 {start|stop|restart|status}"
+	    ;;
+esac
+
+exit $rtrn
--- cluster/cman/init.d/Makefile	2007/12/22 13:36:50	1.8
+++ cluster/cman/init.d/Makefile	2008/01/07 05:52:28	1.9
@@ -10,15 +10,22 @@
 ###############################################################################
 ###############################################################################
 
-TARGETS= cman qdiskd
+TARGET=cman
 
-INITDT=$(TARGETS)
+INITDT=$(TARGET1) qdiskd
 
-all:
+all: $(TARGET)
 
 include ../../make/defines.mk
+include $(OBJDIR)/make/clean.mk
 include $(OBJDIR)/make/install.mk
 include $(OBJDIR)/make/uninstall.mk
 
+$(TARGET):
+	cat $(TARGET).in | sed \
+		-e 's# CONFDIR@#${CONFDIR}#g' \
+		-e 's# CONFFILE@#${CONFFILE}#g' \
+	> $(TARGET)
+	chmod 755 $(TARGET)
 
-clean:
+clean: generalclean
--- cluster/fence/agents/xvm/options.c	2007/06/26 17:23:41	1.5
+++ cluster/fence/agents/xvm/options.c	2008/01/07 05:52:28	1.6
@@ -303,7 +303,7 @@
 	  assign_auth },
 
 	{ 'k', "-k <file>", "key_file",
-	  "Shared key file (default=/etc/cluster/fence_xvm.key)",
+	  "Shared key file (default=" DEFAULT_CONFIG_DIR "/fence_xvm.key)",
 	  assign_key },
 
 	{ 'o', "-o <operation>", "option",
--- cluster/fence/agents/xvm/simple_auth.h	2006/10/05 16:11:36	1.1
+++ cluster/fence/agents/xvm/simple_auth.h	2008/01/07 05:52:28	1.2
@@ -22,7 +22,7 @@
 #include <sys/types.h>
 
 /* 2-way challenge/response simple auth */
-#define DEFAULT_KEY_FILE "/etc/cluster/fence_xvm.key"
+#define DEFAULT_KEY_FILE DEFAULT_CONFIG_DIR "/fence_xvm.key"
 
 int read_key_file(char *, char *, size_t);
 int tcp_challenge(int, fence_auth_type_t, void *, size_t, int);
--- cluster/fence/fenced/main.c	2007/10/26 19:33:47	1.45
+++ cluster/fence/fenced/main.c	2008/01/07 05:52:28	1.46
@@ -97,7 +97,7 @@
 
 	error = ccs_get(cd, path, &str);
 	if (error)
-		die1("local cman node name \"%s\" not found in cluster.conf",
+		die1("local cman node name \"%s\" not found in the configuration",
 		     our_name);
 
 
@@ -528,7 +528,7 @@
 	printf("  -h	       Print this help, then exit\n");
 	printf("  -V	       Print program version information, then exit\n");
 	printf("\n");
-	printf("Command line values override those in cluster.conf.\n");
+	printf("Command line values override those in " DEFAULT_CONFIG_DIR "/" DEFAULT_CONFIG_FILE ".\n");
 	printf("For an unbounded delay use <secs> value of -1.\n");
 	printf("\n");
 }
--- cluster/make/defines.mk.input	2007/12/20 22:10:04	1.9
+++ cluster/make/defines.mk.input	2008/01/07 05:52:28	1.10
@@ -27,7 +27,8 @@
 AR = ar
 RANLIB = ranlib
 
-CFLAGS += @CFLAGS@ -I SRCDIR@/config
+CFLAGS += @CFLAGS@ -I SRCDIR@/config 
+CFLAGS += -DDEFAULT_CONFIG_DIR=\"@CONFDIR \" -DDEFAULT_CONFIG_FILE=\"@CONFFILE \"
 LDFLAGS += @LDFLAGS@
 
 SRCDIR = @SRCDIR@
@@ -80,6 +81,9 @@
 THISDIR = $(shell echo $(CURDIR) | sed -e 's|$(OBJDIR)/||g')
 S=$(SRCDIR)/$(THISDIR)
 
+CONFDIR= CONFDIR@
+CONFFILE= CONFFILE@
+
 UNINSTALL = @SRCDIR@/scripts/uninstall.pl
 DEF2VAR = @SRCDIR@/scripts/define2var
 
/cvs/cluster/cluster/rgmanager/init.d/rgmanager.in,v  -->  standard output
revision 1.1
--- cluster/rgmanager/init.d/rgmanager.in
+++ -	2008-01-07 05:52:31.808705000 +0000
@@ -0,0 +1,151 @@
+#!/bin/sh
+#
+# Copyright (C) 2003 Red Hat, Inc.
+#
+# This program is Free Software.  You may modify and/or redistribute it under
+# the terms of the GNU General Public License version 2, or (at your option)
+# any later version.
+#
+# description:  Starts and stops Red Hat Service (resource group) Manager
+# chkconfig: 2345 99 01
+#
+
+# Source function library
+. /etc/init.d/functions
+
+# Grab the network config file
+. /etc/sysconfig/network
+
+# Grab cluster start config if it exists
+[ -f /etc/sysconfig/cluster ] && . /etc/sysconfig/cluster
+
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+
+export PATH
+
+ID="Cluster Service Manager"
+RGMGRD="clurgmgrd"
+CFG_FILE="@CONFDIR@/@CONFFILE@"
+
+LOG_ERR=3
+LOG_WARNING=4
+LOG_NOTICE=5
+LOG_INFO=6
+
+
+#
+# log_and_print <level> <message>
+#
+log_and_print()
+{
+	if [ -z "$1" -o -z "$2" ]; then
+		return 1;
+	fi
+
+	clulog -p $$ -n "rgmanager" -s $1 "$2"
+	echo $2
+
+	return 0;
+}
+
+
+#
+# Bring down the cluster on a node.
+#
+stop_cluster()
+{
+	kill -TERM `pidof $RGMGRD`
+
+	while [ 0 ]; do
+
+		if [ -n "`pidof $RGMGRD`" ]; then
+			echo -n $"Waiting for services to stop: " 
+			while [ -n "`pidof $RGMGRD`" ]; do
+				sleep 1
+			done
+			echo_success
+			echo
+		else
+			echo $"Services are stopped."
+		fi
+
+		# Ensure all NFS rmtab daemons are dead.
+		killall $RMTABD &> /dev/null
+		
+		rm -f /var/run/$RGMGRD.pid
+
+		return 0
+	done
+}
+
+
+case $1 in
+	start)
+		#
+		# If we're not configured, then don't start anything.
+		#
+		if [ "${NETWORKING}" != "yes" ]; then
+			echo "Cannot start $ID: Networking not configured"
+			exit 1
+		fi
+		[ -f "$CFG_FILE" ] || exit 0
+
+		echo -n $"Starting $ID: "
+		daemon $RGMGRD $RGMGR_OPTS
+		ret=$?
+		echo
+
+		# To be consistent...
+		if [ $ret -eq 0 ]; then
+			touch /var/lock/subsys/rgmanager
+		fi
+		exit $ret
+		;;
+
+	restart)
+		$0 status &> /dev/null
+		if [ $? -ne 1 ]; then
+			$0 stop
+		fi
+		$0 start
+		;;
+		
+	condrestart)
+		$0 status $> /dev/null
+		if [ $? -eq 0 ]; then
+			$0 stop
+			$0 start
+		fi
+		;;
+
+	reload)
+		clulog -p $LOG_NOTICE "Reloading Resource Configuration."
+		echo -n $"Reloading Resource Configuration: "
+		killproc $RGMGRD -HUP
+		rv=$?
+		echo
+
+		exit $rv
+		;;
+
+	status)
+		status $RGMGRD
+		exit $?
+		;;
+
+	stop)
+		if [ -n "`pidof $RGMGRD`" ]; then
+			log_and_print $LOG_NOTICE "Shutting down $ID..."
+			stop_cluster
+		fi
+
+		rm -f /var/lock/subsys/rgmanager
+		log_and_print $LOG_NOTICE "$ID is stopped."
+		;;
+	*)
+		echo "usage: $0 {start|restart|condrestart|reload|status|stop}"
+		exit 1
+		;;
+esac
+
+exit 0
--- cluster/rgmanager/init.d/Makefile	2007/12/22 13:36:58	1.7
+++ cluster/rgmanager/init.d/Makefile	2008/01/07 05:52:29	1.8
@@ -14,13 +14,20 @@
 
 INITDT=$(TARGET)
 
-all:
+all: $(TARGET)
 
 include ../../make/defines.mk
+include $(OBJDIR)/make/clean.mk
 include $(OBJDIR)/make/install.mk
 include $(OBJDIR)/make/uninstall.mk
 
+$(TARGET):
+	cat $(TARGET).in | sed \
+		-e 's# CONFDIR@#${CONFDIR}#g' \
+		-e 's# CONFFILE@#${CONFFILE}#g' \
+	> $(TARGET)
+	chmod 755 $(TARGET)
 
-clean:
+clean: generalclean
 
 check:
--- cluster/rgmanager/src/daemons/rg_locks.c	2007/03/27 19:33:20	1.9
+++ cluster/rgmanager/src/daemons/rg_locks.c	2008/01/07 05:52:29	1.10
@@ -50,7 +50,7 @@
 
 #ifdef NO_CCS
 static xmlDocPtr ccs_doc = NULL;
-static char *conffile = "/etc/cluster/cluster.conf";
+static char *conffile = DEFAULT_CONFIG_DIR "/" DEFAULT_CONFIG_FILE;
 #endif
 
 int
--- cluster/rgmanager/src/resources/Makefile	2008/01/03 21:02:53	1.25
+++ cluster/rgmanager/src/resources/Makefile	2008/01/07 05:52:29	1.26
@@ -10,9 +10,12 @@
 ###############################################################################
 ###############################################################################
 
-all:
+TARGET=	utils/config-utils.sh
+
+all: $(TARGET)
 
 include ../../../make/defines.mk
+include $(OBJDIR)/make/clean.mk
 
 RESOURCES=fs.sh service.sh ip.sh nfsclient.sh nfsexport.sh \
 	script.sh netfs.sh clusterfs.sh smb.sh \
@@ -24,20 +27,25 @@
 	mysql.metadata postgres-8.metadata tomcat-5.metadata \
 	named.metadata lvm.metadata
 
-TARGETS=ocf-shellfuncs svclib_nfslock default_event_script.sl
+GENERAL_TARGETS=ocf-shellfuncs svclib_nfslock default_event_script.sl
 
 UTIL_TARGETS= \
 	utils/config-utils.sh utils/ra-skelet.sh utils/messages.sh \
 	utils/httpd-parse-config.pl utils/tomcat-parse-config.pl \
 	utils/member_util.sh
 
+$(TARGET):
+	cat $(TARGET).in | sed \
+		-e 's# CONFDIR@#${CONFDIR}#g' \
+		-e 's# CONFFILE@#${CONFFILE}#g' \
+	> $(TARGET)
 
 install: all
 	install -d ${sharedir}/utils
 	for i in $(RESOURCES); do \
 	 install $(S)/$$i ${sharedir}; \
 	done
-	for i in $(TARGETS) $(METADATA); do \
+	for i in $(GENERAL_TARGETS) $(METADATA); do \
 	 install -m 644 $(S)/$$i ${sharedir}; \
 	done
 	for i in $(UTIL_TARGETS); do \
@@ -45,9 +53,9 @@
 	done
 
 uninstall:
-	${UNINSTALL} ${RESOURCES} ${TARGETS} ${METADATA} ${UTIL_TARGETS} ${sharedir}
+	${UNINSTALL} ${RESOURCES} ${GENERAL_TARGETS} ${METADATA} ${UTIL_TARGETS} ${sharedir}
 
-clean:
+clean: generalclean
 
 check: $(RESOURCES) ra-api-1-modified.dtd
 	@echo Validating resource agent meta-data
/cvs/cluster/cluster/rgmanager/src/resources/utils/config-utils.sh.in,v  -->  standard output
revision 1.1
--- cluster/rgmanager/src/resources/utils/config-utils.sh.in
+++ -	2008-01-07 05:52:32.308593000 +0000
@@ -0,0 +1,299 @@
+#!/bin/bash
+
+#
+#  Copyright Red Hat, Inc. 2006
+#
+#  This program is free software; you can redistribute it and/or modify it
+#  under the terms of the GNU General Public License as published by the
+#  Free Software Foundation; either version 2, or (at your option) any
+#  later version.
+#
+#  This program is distributed in the hope that it will be useful, but
+#  WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+#  General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; see the file COPYING.  If not, write to the
+#  Free Software Foundation, Inc.,  675 Mass Ave, Cambridge, 
+#  MA 02139, USA.
+#
+
+declare RA_COMMON_pid_dir=/var/run/cluster
+declare RA_COMMON_conf_dir= CONFDIR@
+
+declare -i FAIL=-1
+declare -a ip_keys
+
+generate_configTemplate()
+{
+	cat > $1 << EOT
+#
+# "$1" was created from the "$2"
+#
+# This template configuration was automatically generated, and will be
+# automatically regenerated if removed. Once this file has been altered,
+# automatic re-generation will stop. Remember to copy this file to all 
+# other cluster members after making changes, or your service will not 
+# operate correctly.
+#
+EOT
+}
+
+sha1_addToFile()
+{
+        declare sha1line="# rgmanager-sha1 $(sha1sum "$1")"
+        echo $sha1line >> "$1"
+}
+
+sha1_verify()
+{
+	declare sha1_new sha1_old
+	declare oldFile=$1
+
+	ocf_log debug "Checking: SHA1 checksum of config file $oldFile"
+
+	sha1_new=`cat $oldFile | grep -v "# rgmanager-sha1" | sha1sum | sed 's/^\([a-z0-9]\+\) .*$/\1/'`
+	sha1_old=`tail -n 1 $oldFile | sed 's/^# rgmanager-sha1 \(.*\)$/\1/' | sed 's/^\([a-z0-9]\+\) .*$/\1/'`
+
+	if [ $sha1_new = $sha1_old ]; then
+	        ocf_log debug "Checking: SHA1 checksum > succeed"
+		return 0;
+	else
+		ocf_log debug "Checking: SHA1 checksum > failed - file changed"
+		return 1;
+	fi
+}
+
+#
+# Usage: ccs_connect
+# Returns: $FAIL on failure, or a connection descriptor on success
+#
+ccs_connect()
+{
+	declare outp
+
+	outp=$(ccs_test connect 2>&1)
+	if [ $? -ne 0 ]; then
+		ocf_log err "$outp"
+		return $FAIL
+	fi
+
+	outp=${outp/*= /}
+	if [ -n "$outp" ]; then
+		echo $outp
+		return 0
+	fi
+
+	return 1
+}
+
+#
+# Usage: ccs_disconnect descriptor
+#
+ccs_disconnect()
+{
+	declare outp
+
+	[ -n "$1" ] || return $FAIL
+	outp=$(ccs_test disconnect $1 2>&1)
+	if [ $? -ne 0 ]; then
+		ocf_log warn "Disconnect CCS desc $1 failed: $outp"
+		return 1
+	fi
+	return 0
+}
+
+#
+# Usage: ccs_get desc key
+#
+ccs_get()
+{
+	declare outp
+	declare ccsfd=$1
+	declare key
+
+	[ -n "$1" ] || return $FAIL
+	[ -n "$2" ] || return $FAIL
+
+	shift
+	key="$*"
+
+	outp=$(ccs_test get $ccsfd "$key" 2>&1)
+	if [ $? -ne 0 ]; then
+		if [ "$outp" = "${outp/No data available/}" ]; then
+			ocf_log err "$outp ($key)"
+			return $FAIL
+		fi
+
+		# no real error, just no data available
+		return 0
+	fi
+
+	outp=${outp/*</}
+	outp=${outp/>*/}
+
+	echo $outp
+
+	return 0
+}
+
+#
+# Build a list of service IP keys; traverse refs if necessary
+# Usage: get_service_ip_keys desc serviceName
+#
+get_service_ip_keys()
+{
+	declare ccsfd=$1
+	declare svc=$2
+	declare -i x y=0
+	declare outp
+	declare key
+
+	if [ $ccsfd -eq $FAIL ]; then
+		ocf_log err "Can not talk to ccsd: invalid descriptor $ccsfd"
+		return 1
+	fi
+
+	#
+	# Find service-local IP keys
+	#
+	x=1
+	while : ; do
+		key="/cluster/rm/service[ name=\"$svc\"]/ip[$x]"
+
+		#
+		# Try direct method
+		#
+		outp=$(ccs_get $ccsfd "$key/@address")
+		if [ $? -ne 0 ]; then
+			return 1
+		fi
+
+		#
+		# Try by reference
+		#
+		if [ -z "$outp" ]; then
+			outp=$(ccs_get $ccsfd "$key/@ref")
+			if [ $? -ne 0 ]; then
+				return 1
+			fi
+			key="/cluster/rm/resources/ip[ address=\"$outp\"]"
+		fi
+
+		if [ -z "$outp" ]; then
+			break
+		fi
+
+		#ocf_log debug "IP $outp found @ $key"
+
+		ip_keys[$y]="$key"
+
+		((y++))
+		((x++))
+	done
+
+	ocf_log debug "$y IP addresses found for $svc/$OCF_RESKEY_name"
+
+	return 0
+}
+
+build_ip_list()
+{
+        declare -i ccsfd=$1
+        declare ipaddrs ipaddr
+        declare -i x=0
+                        
+        while [ -n "${ip_keys[$x]}" ]; do
+              ipaddr=$(ccs_get $ccsfd "${ip_keys[$x]}/@address")
+              if [ -z "$ipaddr" ]; then
+                                   break
+              fi
+
+              ipaddrs="$ipaddrs $ipaddr"
+             ((x++))
+        done
+
+        echo $ipaddrs
+}
+
+generate_name_for_pid_file()
+{
+	declare filename=$(basename $0)
+	
+	echo "$RA_COMMON_pid_dir/$(basename $0 | sed 's/^\(.*\)\..*/\1/')/$OCF_RESOURCE_INSTANCE.pid"
+	
+	return 0;
+}
+
+generate_name_for_pid_dir()
+{
+	declare filename=$(basename $0)
+	
+	echo "$RA_COMMON_pid_dir/$(basename $0 | sed 's/^\(.*\)\..*/\1/')/$OCF_RESOURCE_INSTANCE"
+	
+	return 0;
+}
+
+generate_name_for_conf_dir()
+{
+	declare filename=$(basename $0)
+
+	echo "$RA_COMMON_conf_dir/$(basename $0 | sed 's/^\(.*\)\..*/\1/')/$OCF_RESOURCE_INSTANCE"
+	
+	return 0;
+}
+
+create_pid_directory()
+{
+	declare program_name="$(basename $0 | sed 's/^\(.*\)\..*/\1/')"
+	declare dirname="$RA_COMMON_pid_dir/$program_name"
+
+	if [ -d "$dirname" ]; then
+		return 0;
+	fi
+	
+	chmod 711 "$RA_COMMON_pid_dir"
+	mkdir -p "$dirname"
+	
+	if [ "$program_name" = "mysql" ]; then
+		chown mysql.root "$dirname"
+	elif [ "$program_name" = "tomcat-5" ]; then
+		chown tomcat.root "$dirname"
+	fi
+
+	return 0;
+}
+
+create_conf_directory()
+{
+	declare dirname="$1"
+
+	if [ -d "$dirname" ]; then
+		return 0;
+	fi
+	
+	mkdir -p "$dirname"
+	
+	return 0;
+}
+
+check_pid_file() {
+	declare pid_file="$1"
+
+	if [ -z "$pid_file" ]; then
+		return 1;
+	fi
+
+	if [ ! -e "$pid_file" ]; then
+		return 0;
+	fi
+
+	if [ ! -d /proc/`cat "$pid_file"` ]; then	
+		rm "$pid_file"
+		ocf_log debug "PID File \"$pid_file\" Was Removed - PID Does Not Exist";
+		return 0;
+	fi
+
+	return 1;
+}


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