[Pacemaker] [PATCH] Allow the user to insert a startup configuration
frank.dimeo at bigbandnet.com
frank.dimeo at bigbandnet.com
Thu Dec 10 15:53:26 EST 2009
# HG changeset patch
# User Frank DiMeo <frank.dimeo at bigbandnet.com>
# Date 1260478129 18000
# Branch stable-1.0
# Node ID e7067734add7f3b148cb534b85b5af256db9fad7
# Parent 381160def02a34ae554637e0a26efda850ccc015
initial load of static configuration file
diff -r 381160def02a -r e7067734add7 cib/io.c
--- a/cib/io.c Thu Dec 10 09:07:45 2009 -0500
+++ b/cib/io.c Thu Dec 10 15:48:49 2009 -0500
@@ -261,7 +261,7 @@
crm_err("%s exists but does NOT contain valid XML. ", filename);
crm_warn("Continuing but %s will NOT used.", filename);
- } else if(validate_cib_digest(root, sigfile) == FALSE) {
+ } else if(sigfile && ( validate_cib_digest(root, sigfile) == FALSE )) {
crm_err("Checksum of %s failed! Configuration contents ignored!", filename);
crm_err("Usually this is caused by manual changes, "
"please refer to http://clusterlabs.org/wiki/FAQ#cib_changes_detected");
@@ -282,11 +282,12 @@
readCibXmlFile(const char *dir, const char *file, gboolean discard_status)
{
int seq = 0;
- char *filename = NULL, *sigfile = NULL;
+ char *filename = NULL, *sigfile = NULL, *static_config_file = NULL;
const char *name = NULL;
const char *value = NULL;
const char *validation = NULL;
const char *use_valgrind = getenv("HA_VALGRIND_ENABLED");
+ struct stat buf;
xmlNode *root = NULL;
xmlNode *status = NULL;
@@ -300,7 +301,23 @@
sigfile = crm_concat(filename, "sig", '.');
cib_status = cib_ok;
- root = retrieveCib(filename, sigfile, TRUE);
+
+ /*
+ ** we might drop a static config file in there as a known startup point
+ ** if we do, use it. Its called <file>.xml.static_init
+ */
+ static_config_file = crm_concat(filename, "static_init", '.');
+
+ crm_info("Looking for static initialization file : %s", static_config_file);
+
+ if(stat(static_config_file, &buf) == 0) {
+ crm_info("Using initial configuration file : %s", static_config_file);
+ root = retrieveCib(static_config_file, NULL, TRUE);
+ }
+ else {
+ crm_info("Using found configuration file : %s", filename);
+ root = retrieveCib(filename, sigfile, TRUE);
+ }
if(root == NULL) {
crm_warn("Primary configuration corrupt or unusable, trying backup...");
@@ -308,7 +325,6 @@
}
while(root == NULL) {
- struct stat buf;
char *backup_file = NULL;
crm_free(sigfile);
@@ -409,6 +425,7 @@
}
}
+ crm_free(static_config_file);
crm_free(filename);
crm_free(sigfile);
return root;
More information about the Pacemaker
mailing list