diff --git a/lib/pengine/pe_output.c b/lib/pengine/pe_output.c index 5562eb6..f1a6b43 100644 --- a/lib/pengine/pe_output.c +++ b/lib/pengine/pe_output.c @@ -1761,6 +1761,21 @@ resource_history_xml(pcmk__output_t *out, va_list args) { return pcmk_rc_ok; } +static void +print_resource_header(pcmk__output_t *out, gboolean group_by_node, + gboolean inactive_resources) +{ + if (group_by_node) { + /* Active resources have already been printed by node */ + out->begin_list(out, NULL, NULL, "Inactive Resources"); + } else if (inactive_resources) { + out->begin_list(out, NULL, NULL, "Full List of Resources"); + } else { + out->begin_list(out, NULL, NULL, "Active Resources"); + } +} + + PCMK__OUTPUT_ARGS("resource-list", "pe_working_set_t *", "unsigned int", "gboolean", "gboolean", "gboolean", "gboolean", "GList *", "GList *", "gboolean") static int @@ -1778,6 +1793,7 @@ resource_list(pcmk__output_t *out, va_list args) GList *rsc_iter; int rc = pcmk_rc_no_output; + bool printed_header = false; /* If we already showed active resources by node, and * we're not showing inactive resources, we have nothing to do @@ -1786,22 +1802,15 @@ resource_list(pcmk__output_t *out, va_list args) return rc; } - PCMK__OUTPUT_SPACER_IF(out, print_spacer); - - if (group_by_node) { - /* Active resources have already been printed by node */ - out->begin_list(out, NULL, NULL, "Inactive Resources"); - } else if (inactive_resources) { - out->begin_list(out, NULL, NULL, "Full List of Resources"); - } else { - out->begin_list(out, NULL, NULL, "Active Resources"); - } - /* If we haven't already printed resources grouped by node, * and brief output was requested, print resource summary */ if (brief_output && !group_by_node) { GList *rscs = pe__filter_rsc_list(data_set->resources, only_rsc); + PCMK__OUTPUT_SPACER_IF(out, print_spacer); + print_resource_header(out, group_by_node, inactive_resources); + printed_header = true; + pe__rscs_brief_output(out, rscs, print_opts, inactive_resources); g_list_free(rscs); } @@ -1839,6 +1848,12 @@ resource_list(pcmk__output_t *out, va_list args) continue; } + if (!printed_header) { + PCMK__OUTPUT_SPACER_IF(out, print_spacer); + print_resource_header(out, group_by_node, inactive_resources); + printed_header = true; + } + /* Print this resource */ x = out->message(out, crm_map_element_name(rsc->xml), print_opts, rsc, only_node, only_rsc); @@ -1848,6 +1863,12 @@ resource_list(pcmk__output_t *out, va_list args) } if (print_summary && rc != pcmk_rc_ok) { + if (!printed_header) { + PCMK__OUTPUT_SPACER_IF(out, print_spacer); + print_resource_header(out, group_by_node, inactive_resources); + printed_header = true; + } + if (group_by_node) { out->list_item(out, NULL, "No inactive resources"); } else if (inactive_resources) { @@ -1857,7 +1878,10 @@ resource_list(pcmk__output_t *out, va_list args) } } - out->end_list(out); + if (printed_header) { + out->end_list(out); + } + return rc; }