File pacemaker-libpe_status-log-startup-fencing-value.patch of Package pacemaker.14737

commit 9caae1f540a248d5ebd95dc097664778c96dee60
Author: Ken Gaillot <kgaillot@redhat.com>
Date:   Tue Sep 26 12:28:51 2017 -0500

    Log: libpe_status: always log startup-fencing value
    
    This also refactors to make startup-fencing a data set flag,
    which is more consistent, readable and efficient.

Index: pacemaker/include/crm/pengine/status.h
===================================================================
--- pacemaker.orig/include/crm/pengine/status.h
+++ pacemaker/include/crm/pengine/status.h
@@ -70,6 +70,7 @@ enum pe_find {
 
 #  define pe_flag_start_failure_fatal	0x00001000ULL
 #  define pe_flag_remove_after_stop	0x00002000ULL
+#  define pe_flag_startup_fencing       0x00004000ULL
 
 #  define pe_flag_startup_probes	0x00010000ULL
 #  define pe_flag_have_status		0x00020000ULL
Index: pacemaker/lib/pengine/unpack.c
===================================================================
--- pacemaker.orig/lib/pengine/unpack.c
+++ pacemaker/lib/pengine/unpack.c
@@ -294,6 +294,15 @@ unpack_config(xmlNode * config, pe_worki
               is_set(data_set->flags,
                      pe_flag_start_failure_fatal) ? "always fatal" : "handled by failcount");
 
+    if (is_set(data_set->flags, pe_flag_stonith_enabled)) {
+        set_config_flag(data_set, "startup-fencing", pe_flag_startup_fencing);
+    }
+    if (is_set(data_set->flags, pe_flag_startup_fencing)) {
+        crm_trace("Unseen nodes will be fenced");
+    } else {
+        pe_warn_once(pe_wo_blind, "Blind faith: not fencing unseen nodes");
+    }
+
     node_score_red = char2score(pe_pref(data_set->config_hash, "node-health-red"));
     node_score_green = char2score(pe_pref(data_set->config_hash, "node-health-green"));
     node_score_yellow = char2score(pe_pref(data_set->config_hash, "node-health-yellow"));
@@ -542,9 +551,6 @@ expand_remote_rsc_meta(xmlNode *xml_obj,
 static void
 handle_startup_fencing(pe_working_set_t *data_set, node_t *new_node)
 {
-    static const char *blind_faith = NULL;
-    static gboolean unseen_are_unclean = TRUE;
-
     if ((new_node->details->type == node_remote) && (new_node->details->remote_rsc == NULL)) {
         /* ignore fencing remote-nodes that don't have a conneciton resource associated
          * with them. This happens when remote-node entries get left in the nodes section
@@ -552,23 +558,13 @@ handle_startup_fencing(pe_working_set_t
         return;
     }
 
-    blind_faith = pe_pref(data_set->config_hash, "startup-fencing");
-
-    if (crm_is_true(blind_faith) == FALSE) {
-        unseen_are_unclean = FALSE;
-        pe_warn_once(pe_wo_blind, "Blind faith: not fencing unseen nodes");
-    }
-
-    if (is_set(data_set->flags, pe_flag_stonith_enabled) == FALSE
-        || unseen_are_unclean == FALSE) {
-        /* blind faith... */
-        new_node->details->unclean = FALSE;
+    if (is_set(data_set->flags, pe_flag_startup_fencing)) {
+        // All nodes are unclean until we've seen their status entry
+        new_node->details->unclean = TRUE;
 
     } else {
-        /* all nodes are unclean until we've seen their
-         * status entry
-         */
-        new_node->details->unclean = TRUE;
+        // Blind faith ...
+        new_node->details->unclean = FALSE;
     }
 
     /* We need to be able to determine if a node's status section
openSUSE Build Service is sponsored by