Blame SOURCES/015-feature-set.patch

23c78e
From 12b30c920dd15287a7b295475ce1cc4a6cb1f43f Mon Sep 17 00:00:00 2001
23c78e
From: Chris Lumens <clumens@redhat.com>
23c78e
Date: Tue, 8 Dec 2020 15:48:38 -0500
23c78e
Subject: [PATCH] Fix: scheduler: Don't output a resource header with no list.
23c78e
23c78e
If there's no resources to print, don't output just the header with
23c78e
nothing under it.  This potentially comes up if there are only inactive
23c78e
resources, but inactive_resources is FALSE.
23c78e
---
23c78e
 lib/pengine/pe_output.c | 48 ++++++++++++++++++++++++++++++++++++------------
23c78e
 1 file changed, 36 insertions(+), 12 deletions(-)
23c78e
23c78e
diff --git a/lib/pengine/pe_output.c b/lib/pengine/pe_output.c
23c78e
index 5562eb6..f1a6b43 100644
23c78e
--- a/lib/pengine/pe_output.c
23c78e
+++ b/lib/pengine/pe_output.c
23c78e
@@ -1761,6 +1761,21 @@ resource_history_xml(pcmk__output_t *out, va_list args) {
23c78e
     return pcmk_rc_ok;
23c78e
 }
23c78e
 
23c78e
+static void
23c78e
+print_resource_header(pcmk__output_t *out, gboolean group_by_node,
23c78e
+                      gboolean inactive_resources)
23c78e
+{
23c78e
+    if (group_by_node) {
23c78e
+        /* Active resources have already been printed by node */
23c78e
+        out->begin_list(out, NULL, NULL, "Inactive Resources");
23c78e
+    } else if (inactive_resources) {
23c78e
+        out->begin_list(out, NULL, NULL, "Full List of Resources");
23c78e
+    } else {
23c78e
+        out->begin_list(out, NULL, NULL, "Active Resources");
23c78e
+    }
23c78e
+}
23c78e
+
23c78e
+
23c78e
 PCMK__OUTPUT_ARGS("resource-list", "pe_working_set_t *", "unsigned int", "gboolean",
23c78e
                   "gboolean", "gboolean", "gboolean", "GList *", "GList *", "gboolean")
23c78e
 static int
23c78e
@@ -1778,6 +1793,7 @@ resource_list(pcmk__output_t *out, va_list args)
23c78e
 
23c78e
     GList *rsc_iter;
23c78e
     int rc = pcmk_rc_no_output;
23c78e
+    bool printed_header = false;
23c78e
 
23c78e
     /* If we already showed active resources by node, and
23c78e
      * we're not showing inactive resources, we have nothing to do
23c78e
@@ -1786,22 +1802,15 @@ resource_list(pcmk__output_t *out, va_list args)
23c78e
         return rc;
23c78e
     }
23c78e
 
23c78e
-    PCMK__OUTPUT_SPACER_IF(out, print_spacer);
23c78e
-
23c78e
-    if (group_by_node) {
23c78e
-        /* Active resources have already been printed by node */
23c78e
-        out->begin_list(out, NULL, NULL, "Inactive Resources");
23c78e
-    } else if (inactive_resources) {
23c78e
-        out->begin_list(out, NULL, NULL, "Full List of Resources");
23c78e
-    } else {
23c78e
-        out->begin_list(out, NULL, NULL, "Active Resources");
23c78e
-    }
23c78e
-
23c78e
     /* If we haven't already printed resources grouped by node,
23c78e
      * and brief output was requested, print resource summary */
23c78e
     if (brief_output && !group_by_node) {
23c78e
         GList *rscs = pe__filter_rsc_list(data_set->resources, only_rsc);
23c78e
 
23c78e
+        PCMK__OUTPUT_SPACER_IF(out, print_spacer);
23c78e
+        print_resource_header(out, group_by_node, inactive_resources);
23c78e
+        printed_header = true;
23c78e
+
23c78e
         pe__rscs_brief_output(out, rscs, print_opts, inactive_resources);
23c78e
         g_list_free(rscs);
23c78e
     }
23c78e
@@ -1839,6 +1848,12 @@ resource_list(pcmk__output_t *out, va_list args)
23c78e
             continue;
23c78e
         }
23c78e
 
23c78e
+        if (!printed_header) {
23c78e
+            PCMK__OUTPUT_SPACER_IF(out, print_spacer);
23c78e
+            print_resource_header(out, group_by_node, inactive_resources);
23c78e
+            printed_header = true;
23c78e
+        }
23c78e
+
23c78e
         /* Print this resource */
23c78e
         x = out->message(out, crm_map_element_name(rsc->xml), print_opts, rsc,
23c78e
                          only_node, only_rsc);
23c78e
@@ -1848,6 +1863,12 @@ resource_list(pcmk__output_t *out, va_list args)
23c78e
     }
23c78e
 
23c78e
     if (print_summary && rc != pcmk_rc_ok) {
23c78e
+        if (!printed_header) {
23c78e
+            PCMK__OUTPUT_SPACER_IF(out, print_spacer);
23c78e
+            print_resource_header(out, group_by_node, inactive_resources);
23c78e
+            printed_header = true;
23c78e
+        }
23c78e
+
23c78e
         if (group_by_node) {
23c78e
             out->list_item(out, NULL, "No inactive resources");
23c78e
         } else if (inactive_resources) {
23c78e
@@ -1857,7 +1878,10 @@ resource_list(pcmk__output_t *out, va_list args)
23c78e
         }
23c78e
     }
23c78e
 
23c78e
-    out->end_list(out);
23c78e
+    if (printed_header) {
23c78e
+        out->end_list(out);
23c78e
+    }
23c78e
+
23c78e
     return rc;
23c78e
 }
23c78e
 
23c78e
-- 
23c78e
1.8.3.1
23c78e