From d40b4156deaf195db99eaff7c34493e43ca216ee Mon Sep 17 00:00:00 2001 From: Chris Lumens Date: Jan 22 2021 12:12:33 +0000 Subject: Feature: scheduler: Add a message for resource config printing. This prints out the XML or raw XML config for a given resource. --- diff --git a/cts/cli/regression.tools.exp b/cts/cli/regression.tools.exp index 10ec53b..738e800 100644 --- a/cts/cli/regression.tools.exp +++ b/cts/cli/regression.tools.exp @@ -972,7 +972,7 @@ dummy * Passed: crm_resource - List IDs of instantiated resources =#=#=#= Begin test: Show XML configuration of resource =#=#=#= dummy (ocf::pacemaker:Dummy): Stopped -xml: +Resource XML: diff --git a/include/crm/pengine/internal.h b/include/crm/pengine/internal.h index d658e86..00b6b4c 100644 --- a/include/crm/pengine/internal.h +++ b/include/crm/pengine/internal.h @@ -301,6 +301,7 @@ int pe__node_list_text(pcmk__output_t *out, va_list args); int pe__node_list_xml(pcmk__output_t *out, va_list args); int pe__op_history_text(pcmk__output_t *out, va_list args); int pe__op_history_xml(pcmk__output_t *out, va_list args); +int pe__resource_config(pcmk__output_t *out, va_list args); int pe__resource_history_text(pcmk__output_t *out, va_list args); int pe__resource_history_xml(pcmk__output_t *out, va_list args); int pe__resource_xml(pcmk__output_t *out, va_list args); diff --git a/lib/pengine/pe_output.c b/lib/pengine/pe_output.c index 9d43e5f..dd3a880 100644 --- a/lib/pengine/pe_output.c +++ b/lib/pengine/pe_output.c @@ -1583,6 +1583,26 @@ pe__op_history_xml(pcmk__output_t *out, va_list args) { return pcmk_rc_ok; } +PCMK__OUTPUT_ARGS("resource-config", "pe_resource_t *", "gboolean") +int pe__resource_config(pcmk__output_t *out, va_list args) { + pe_resource_t *rsc = va_arg(args, pe_resource_t *); + gboolean raw = va_arg(args, gboolean); + + char *rsc_xml = NULL; + + if (raw) { + rsc_xml = dump_xml_formatted(rsc->orig_xml ? rsc->orig_xml : rsc->xml); + } else { + rsc_xml = dump_xml_formatted(rsc->xml); + } + + out->info(out, "Resource XML:"); + out->output_xml(out, "xml", rsc_xml); + + free(rsc_xml); + return pcmk_rc_ok; +} + PCMK__OUTPUT_ARGS("resource-history", "pe_resource_t *", "const char *", "gboolean", "int", "time_t", "gboolean") int pe__resource_history_text(pcmk__output_t *out, va_list args) { @@ -1872,6 +1892,7 @@ static pcmk__message_entry_t fmt_functions[] = { { "primitive", "html", pe__resource_html }, { "primitive", "text", pe__resource_text }, { "primitive", "log", pe__resource_text }, + { "resource-config", "default", pe__resource_config }, { "resource-history", "default", pe__resource_history_text }, { "resource-history", "xml", pe__resource_history_xml }, { "resource-list", "default", pe__resource_list }, diff --git a/tools/crm_resource_print.c b/tools/crm_resource_print.c index 093eb75..99217aa 100644 --- a/tools/crm_resource_print.c +++ b/tools/crm_resource_print.c @@ -223,15 +223,12 @@ int cli_resource_print(pcmk__output_t *out, pe_resource_t *rsc, pe_working_set_t *data_set, bool expanded) { - char *rsc_xml = NULL; int opts = pe_print_printf | pe_print_pending; rsc->fns->print(rsc, NULL, opts, stdout); - rsc_xml = dump_xml_formatted((!expanded && rsc->orig_xml)? - rsc->orig_xml : rsc->xml); - fprintf(stdout, "%sxml:\n%s\n", expanded ? "" : "raw ", rsc_xml); - free(rsc_xml); + out->message(out, "resource-config", rsc, !expanded); + return pcmk_rc_ok; }