diff --git a/tools/crm_mon.h b/tools/crm_mon.h index 143e8d8..f746507 100644 --- a/tools/crm_mon.h +++ b/tools/crm_mon.h @@ -109,7 +109,6 @@ int print_html_status(pcmk__output_t *out, pe_working_set_t *data_set, GList *append_attr_list(GList *attr_list, char *name); void blank_screen(void); -void crm_mon_get_parameters(pe_resource_t *rsc, pe_working_set_t *data_set); unsigned int get_resource_display_options(unsigned int mon_ops); void crm_mon_register_messages(pcmk__output_t *out); diff --git a/tools/crm_mon_print.c b/tools/crm_mon_print.c index cc3efb0..8ae11bf 100644 --- a/tools/crm_mon_print.c +++ b/tools/crm_mon_print.c @@ -38,7 +38,8 @@ static int print_rsc_history(pcmk__output_t *out, pe_working_set_t *data_set, static int print_node_history(pcmk__output_t *out, pe_working_set_t *data_set, pe_node_t *node, xmlNode *node_state, gboolean operations, unsigned int mon_ops, GListPtr only_node, GListPtr only_rsc); -static gboolean add_extra_info(pcmk__output_t *out, pe_node_t * node, GListPtr rsc_list, +static gboolean add_extra_info(pcmk__output_t *out, pe_node_t *node, + GListPtr rsc_list, pe_working_set_t *data_set, const char *attrname, int *expected_score); static void print_node_attribute(gpointer name, gpointer user_data); static int print_node_summary(pcmk__output_t *out, pe_working_set_t * data_set, @@ -330,7 +331,8 @@ print_node_history(pcmk__output_t *out, pe_working_set_t *data_set, */ static gboolean add_extra_info(pcmk__output_t *out, pe_node_t *node, GListPtr rsc_list, - const char *attrname, int *expected_score) + pe_working_set_t *data_set, const char *attrname, + int *expected_score) { GListPtr gIter = NULL; @@ -338,9 +340,11 @@ add_extra_info(pcmk__output_t *out, pe_node_t *node, GListPtr rsc_list, pe_resource_t *rsc = (pe_resource_t *) gIter->data; const char *type = g_hash_table_lookup(rsc->meta, "type"); const char *name = NULL; + GHashTable *params = NULL; if (rsc->children != NULL) { - if (add_extra_info(out, node, rsc->children, attrname, expected_score)) { + if (add_extra_info(out, node, rsc->children, data_set, attrname, + expected_score)) { return TRUE; } } @@ -349,7 +353,8 @@ add_extra_info(pcmk__output_t *out, pe_node_t *node, GListPtr rsc_list, continue; } - name = g_hash_table_lookup(rsc->parameters, "name"); + params = pe_rsc_params(rsc, node, data_set); + name = g_hash_table_lookup(params, "name"); if (name == NULL) { name = "pingd"; @@ -359,8 +364,8 @@ add_extra_info(pcmk__output_t *out, pe_node_t *node, GListPtr rsc_list, if (pcmk__str_eq(name, attrname, pcmk__str_casei)) { int host_list_num = 0; /* int value = crm_parse_int(attrvalue, "0"); */ - const char *hosts = g_hash_table_lookup(rsc->parameters, "host_list"); - const char *multiplier = g_hash_table_lookup(rsc->parameters, "multiplier"); + const char *hosts = g_hash_table_lookup(params, "host_list"); + const char *multiplier = g_hash_table_lookup(params, "multiplier"); if (hosts) { char **host_list = g_strsplit(hosts, " ", 0); @@ -381,6 +386,7 @@ add_extra_info(pcmk__output_t *out, pe_node_t *node, GListPtr rsc_list, struct mon_attr_data { pcmk__output_t *out; pe_node_t *node; + pe_working_set_t *data_set; }; static void @@ -394,7 +400,7 @@ print_node_attribute(gpointer name, gpointer user_data) value = pe_node_attribute_raw(data->node, name); add_extra = add_extra_info(data->out, data->node, data->node->details->running_rsc, - name, &expected_score); + data->data_set, name, &expected_score); /* Print attribute name and value */ data->out->message(data->out, "node-attribute", name, value, add_extra, @@ -547,19 +553,13 @@ print_node_attributes(pcmk__output_t *out, pe_working_set_t *data_set, GListPtr gIter = NULL; int rc = pcmk_rc_no_output; - /* Unpack all resource parameters (it would be more efficient to do this - * only when needed for the first time in add_extra_info()) - */ - for (gIter = data_set->resources; gIter != NULL; gIter = gIter->next) { - crm_mon_get_parameters(gIter->data, data_set); - } - /* Display each node's attributes */ for (gIter = data_set->nodes; gIter != NULL; gIter = gIter->next) { struct mon_attr_data data; data.out = out; data.node = (pe_node_t *) gIter->data; + data.data_set = data_set; if (data.node && data.node->details && data.node->details->online) { GList *attr_list = NULL; diff --git a/tools/crm_mon_runtime.c b/tools/crm_mon_runtime.c index ce31559..43152ce 100644 --- a/tools/crm_mon_runtime.c +++ b/tools/crm_mon_runtime.c @@ -1,5 +1,5 @@ /* - * Copyright 2019 the Pacemaker project contributors + * Copyright 2019-2020 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -66,19 +66,6 @@ append_attr_list(GList *attr_list, char *name) return g_list_insert_sorted(attr_list, name, compare_attribute); } -void -crm_mon_get_parameters(pe_resource_t *rsc, pe_working_set_t * data_set) -{ - get_rsc_attributes(rsc->parameters, rsc, NULL, data_set); - if(rsc->children) { - GListPtr gIter = NULL; - - for (gIter = rsc->children; gIter != NULL; gIter = gIter->next) { - crm_mon_get_parameters(gIter->data, data_set); - } - } -} - /*! * \internal * \brief Return resource display options corresponding to command-line choices