62ef318946
OBS-URL: https://build.opensuse.org/package/show/network:ha-clustering:Factory/pacemaker?expand=0&rev=45
85 lines
2.6 KiB
Diff
85 lines
2.6 KiB
Diff
commit e97f7eb36e1d2c3a8b241ba52e98b707da1eccf5
|
|
Author: Gao,Yan <ygao@suse.com>
|
|
Date: Mon Apr 1 14:19:47 2013 +0800
|
|
|
|
Log: tools: crm_mon - Save relevant cib XML into /tmp/cmon.* files if refreshing fails (bnc#800323)
|
|
|
|
diff --git a/tools/crm_mon.c b/tools/crm_mon.c
|
|
index da778de..c6af01b 100644
|
|
--- a/tools/crm_mon.c
|
|
+++ b/tools/crm_mon.c
|
|
@@ -85,6 +85,8 @@ const char *external_recipient = NULL;
|
|
cib_t *cib = NULL;
|
|
stonith_t *st = NULL;
|
|
xmlNode *current_cib = NULL;
|
|
+xmlNode *orig_cib = NULL;
|
|
+xmlNode *diff_cib = NULL;
|
|
|
|
gboolean one_shot = FALSE;
|
|
gboolean has_warnings = FALSE;
|
|
@@ -2130,10 +2132,12 @@ crm_diff_update(const char *event, xmlNode * msg)
|
|
static bool stale = FALSE;
|
|
|
|
print_dot();
|
|
+ diff_cib = copy_xml(msg);
|
|
|
|
if (current_cib != NULL) {
|
|
xmlNode *cib_last = current_cib;
|
|
|
|
+ orig_cib = copy_xml(cib_last);
|
|
current_cib = NULL;
|
|
|
|
rc = cib_apply_patch_event(msg, cib_last, ¤t_cib, LOG_DEBUG);
|
|
@@ -2196,6 +2200,38 @@ mon_refresh_display(gpointer user_data)
|
|
last_refresh = time(NULL);
|
|
|
|
if (cli_config_update(&cib_copy, NULL, FALSE) == FALSE) {
|
|
+ char *tmp_prefix = tempnam("/tmp", "cmon.");
|
|
+ char *real_filename = NULL;
|
|
+ char *orig_filename = NULL;
|
|
+ char *new_filename = NULL;
|
|
+ char *diff_filename = NULL;
|
|
+ xmlNode *real_cib = get_cib_copy(cib);
|
|
+
|
|
+ real_filename = g_strdup_printf("%s.real", tmp_prefix);
|
|
+ write_xml_file(real_cib, real_filename, FALSE);
|
|
+ free(real_filename);
|
|
+ free_xml(real_cib);
|
|
+ real_cib = NULL;
|
|
+
|
|
+ orig_filename = g_strdup_printf("%s.orig", tmp_prefix);
|
|
+ write_xml_file(orig_cib, orig_filename, FALSE);
|
|
+ free(orig_filename);
|
|
+ free_xml(orig_cib);
|
|
+ orig_cib = NULL;
|
|
+
|
|
+ new_filename = g_strdup_printf("%s.new", tmp_prefix);
|
|
+ write_xml_file(current_cib, new_filename, FALSE);
|
|
+ free(new_filename);
|
|
+
|
|
+ diff_filename = g_strdup_printf("%s.diff", tmp_prefix);
|
|
+ write_xml_file(diff_cib, diff_filename, FALSE);
|
|
+ free(diff_filename);
|
|
+ free_xml(diff_cib);
|
|
+ diff_cib = NULL;
|
|
+
|
|
+ print_as("Saved relevant XML into /tmp/%s* files", tmp_prefix);
|
|
+ free(tmp_prefix);
|
|
+
|
|
if (cib) {
|
|
cib->cmds->signoff(cib);
|
|
}
|
|
@@ -2207,6 +2243,12 @@ mon_refresh_display(gpointer user_data)
|
|
return FALSE;
|
|
}
|
|
|
|
+ free_xml(orig_cib);
|
|
+ orig_cib = NULL;
|
|
+
|
|
+ free_xml(diff_cib);
|
|
+ diff_cib = NULL;
|
|
+
|
|
set_working_set_defaults(&data_set);
|
|
data_set.input = cib_copy;
|
|
cluster_status(&data_set);
|