From 8f4dc0533eff558cd5bb900ef16602f001c71a1e Mon Sep 17 00:00:00 2001 From: Chris Lumens Date: Feb 05 2021 06:22:59 +0000 Subject: Refactor: libs: Remove most uses of xmlSetProp. We can use crm_xml_add to do this instead, and that function will take ACLs in account too (though, none of these call sites actually care about ACLs). I've left calls in most of the various XML manipulating functions because those seem more intentional. --- diff --git a/lib/common/output_html.c b/lib/common/output_html.c index cf51af4..542d863 100644 --- a/lib/common/output_html.c +++ b/lib/common/output_html.c @@ -98,7 +98,7 @@ html_init(pcmk__output_t *out) { priv->root = create_xml_node(NULL, "html"); xmlCreateIntSubset(priv->root->doc, (pcmkXmlStr) "html", NULL, NULL); - xmlSetProp(priv->root, (pcmkXmlStr) "lang", (pcmkXmlStr) "en"); + crm_xml_add(priv->root, "lang", "en"); g_queue_push_tail(priv->parent_q, priv->root); priv->errors = NULL; @@ -137,7 +137,7 @@ finish_reset_common(pcmk__output_t *out, crm_exit_t exit_status, bool print) { } charset_node = create_xml_node(head_node, "meta"); - xmlSetProp(charset_node, (pcmkXmlStr) "charset", (pcmkXmlStr) "utf-8"); + crm_xml_add(charset_node, "charset", "utf-8"); /* Add any extra header nodes the caller might have created. */ for (int i = 0; i < g_slist_length(extra_headers); i++) { @@ -275,7 +275,7 @@ html_output_xml(pcmk__output_t *out, const char *name, const char *buf) { CRM_ASSERT(priv != NULL); node = pcmk__output_create_html_node(out, "pre", NULL, NULL, buf); - xmlSetProp(node, (pcmkXmlStr) "lang", (pcmkXmlStr) "xml"); + crm_xml_add(node, "lang", "xml"); } G_GNUC_PRINTF(4, 5) @@ -340,7 +340,7 @@ html_list_item(pcmk__output_t *out, const char *name, const char *format, ...) { free(buf); if (name != NULL) { - xmlSetProp(item_node, (pcmkXmlStr) "class", (pcmkXmlStr) name); + crm_xml_add(item_node, "class", name); } } @@ -417,11 +417,11 @@ pcmk__output_create_html_node(pcmk__output_t *out, const char *element_name, con htmlNodePtr node = pcmk__output_create_xml_text_node(out, element_name, text); if (class_name != NULL) { - xmlSetProp(node, (pcmkXmlStr) "class", (pcmkXmlStr) class_name); + crm_xml_add(node, "class", class_name); } if (id != NULL) { - xmlSetProp(node, (pcmkXmlStr) "id", (pcmkXmlStr) id); + crm_xml_add(node, "id", id); } return node; @@ -444,7 +444,7 @@ pcmk__html_add_header(const char *name, ...) { } value = va_arg(ap, char *); - xmlSetProp(header_node, (pcmkXmlStr) key, (pcmkXmlStr) value); + crm_xml_add(header_node, key, value); } extra_headers = g_slist_append(extra_headers, header_node); diff --git a/lib/common/output_xml.c b/lib/common/output_xml.c index 6d92625..0053979 100644 --- a/lib/common/output_xml.c +++ b/lib/common/output_xml.c @@ -107,13 +107,13 @@ xml_init(pcmk__output_t *out) { if (legacy_xml) { priv->root = create_xml_node(NULL, "crm_mon"); - xmlSetProp(priv->root, (pcmkXmlStr) "version", (pcmkXmlStr) VERSION); + crm_xml_add(priv->root, "version", VERSION); } else { priv->root = create_xml_node(NULL, "pacemaker-result"); - xmlSetProp(priv->root, (pcmkXmlStr) "api-version", (pcmkXmlStr) PCMK__API_VERSION); + crm_xml_add(priv->root, "api-version", PCMK__API_VERSION); if (out->request != NULL) { - xmlSetProp(priv->root, (pcmkXmlStr) "request", (pcmkXmlStr) out->request); + crm_xml_add(priv->root, "request", out->request); } } @@ -223,12 +223,12 @@ xml_subprocess_output(pcmk__output_t *out, int exit_status, if (proc_stdout != NULL) { child_node = pcmk_create_xml_text_node(node, "output", proc_stdout); - xmlSetProp(child_node, (pcmkXmlStr) "source", (pcmkXmlStr) "stdout"); + crm_xml_add(child_node, "source", "stdout"); } if (proc_stderr != NULL) { child_node = pcmk_create_xml_text_node(node, "output", proc_stderr); - xmlSetProp(child_node, (pcmkXmlStr) "source", (pcmkXmlStr) "stderr"); + crm_xml_add(child_node, "source", "stderr"); } pcmk__output_xml_add_node(out, node); @@ -343,7 +343,7 @@ xml_list_item(pcmk__output_t *out, const char *name, const char *format, ...) { item_node = pcmk__output_create_xml_text_node(out, "item", buf); if (name != NULL) { - xmlSetProp(item_node, (pcmkXmlStr) "name", (pcmkXmlStr) name); + crm_xml_add(item_node, "name", name); } free(buf); @@ -368,7 +368,7 @@ xml_end_list(pcmk__output_t *out) { node = g_queue_pop_tail(priv->parent_q); buf = crm_strdup_printf("%lu", xmlChildElementCount(node)); - xmlSetProp(node, (pcmkXmlStr) "count", (pcmkXmlStr) buf); + crm_xml_add(node, "count", buf); free(buf); } } diff --git a/lib/common/xml.c b/lib/common/xml.c index e5de0d4..abb120c 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -703,11 +703,11 @@ pcmk_create_html_node(xmlNode * parent, const char *element_name, const char *id xmlNode *node = pcmk_create_xml_text_node(parent, element_name, text); if (class_name != NULL) { - xmlSetProp(node, (pcmkXmlStr) "class", (pcmkXmlStr) class_name); + crm_xml_add(node, "class", class_name); } if (id != NULL) { - xmlSetProp(node, (pcmkXmlStr) "id", (pcmkXmlStr) id); + crm_xml_add(node, "id", id); } return node; diff --git a/lib/fencing/st_output.c b/lib/fencing/st_output.c index 65f8ec9..04f4b83 100644 --- a/lib/fencing/st_output.c +++ b/lib/fencing/st_output.c @@ -331,11 +331,11 @@ stonith__event_xml(pcmk__output_t *out, va_list args) { switch (event->state) { case st_failed: - xmlSetProp(node, (pcmkXmlStr) "status", (pcmkXmlStr) "failed"); + crm_xml_add(node, "status", "failed"); break; case st_done: - xmlSetProp(node, (pcmkXmlStr) "status", (pcmkXmlStr) "success"); + crm_xml_add(node, "status", "success"); break; default: { @@ -349,12 +349,12 @@ stonith__event_xml(pcmk__output_t *out, va_list args) { } if (event->delegate != NULL) { - xmlSetProp(node, (pcmkXmlStr) "delegate", (pcmkXmlStr) event->delegate); + crm_xml_add(node, "delegate", event->delegate); } if (event->state == st_failed || event->state == st_done) { buf = time_t_string(event->completed); - xmlSetProp(node, (pcmkXmlStr) "completed", (pcmkXmlStr) buf); + crm_xml_add(node, "completed", buf); free(buf); } @@ -429,7 +429,7 @@ stonith__validate_agent_xml(pcmk__output_t *out, va_list args) { NULL); if (device != NULL) { - xmlSetProp(node, (pcmkXmlStr) "device", (pcmkXmlStr) device); + crm_xml_add(node, "device", device); } pcmk__output_xml_push_parent(out, node); diff --git a/lib/lrmd/lrmd_output.c b/lib/lrmd/lrmd_output.c index c01cc5e..dfcf3fa 100644 --- a/lib/lrmd/lrmd_output.c +++ b/lib/lrmd/lrmd_output.c @@ -73,7 +73,7 @@ lrmd__agents_list_xml(pcmk__output_t *out, va_list args) { NULL); if (!pcmk__str_empty(provider)) { - xmlSetProp(node, (pcmkXmlStr) "provider", (pcmkXmlStr) provider); + crm_xml_add(node, "provider", provider); } return xml_list(out, list, "agent"); @@ -105,7 +105,7 @@ lrmd__providers_list_xml(pcmk__output_t *out, va_list args) { NULL); if (agent_spec != NULL) { - xmlSetProp(node, (pcmkXmlStr) "agent", (pcmkXmlStr) agent_spec); + crm_xml_add(node, "agent", agent_spec); } return xml_list(out, list, "provider"); diff --git a/lib/pengine/pe_output.c b/lib/pengine/pe_output.c index 470b025..ecb5c2c 100644 --- a/lib/pengine/pe_output.c +++ b/lib/pengine/pe_output.c @@ -415,7 +415,7 @@ pe__name_and_nvpairs_xml(pcmk__output_t *out, bool is_list, const char *tag_name const char *param_name = va_arg(args, const char *); const char *param_value = va_arg(args, const char *); if (param_name && param_value) { - xmlSetProp(xml_node, (pcmkXmlStr)param_name, (pcmkXmlStr)param_value); + crm_xml_add(xml_node, param_name, param_value); } }; va_end(args); @@ -592,19 +592,19 @@ pe__cluster_counts_xml(pcmk__output_t *out, va_list args) { int nblocked = va_arg(args, int); char *s = crm_itoa(nnodes); - xmlSetProp(nodes_node, (pcmkXmlStr) "number", (pcmkXmlStr) s); + crm_xml_add(nodes_node, "number", s); free(s); s = crm_itoa(nresources); - xmlSetProp(resources_node, (pcmkXmlStr) "number", (pcmkXmlStr) s); + crm_xml_add(resources_node, "number", s); free(s); s = crm_itoa(ndisabled); - xmlSetProp(resources_node, (pcmkXmlStr) "disabled", (pcmkXmlStr) s); + crm_xml_add(resources_node, "disabled", s); free(s); s = crm_itoa(nblocked); - xmlSetProp(resources_node, (pcmkXmlStr) "blocked", (pcmkXmlStr) s); + crm_xml_add(resources_node, "blocked", s); free(s); return pcmk_rc_ok; @@ -1196,8 +1196,7 @@ pe__node_xml(pcmk__output_t *out, va_list args) { if (pe__is_guest_node(node)) { xmlNodePtr xml_node = pcmk__output_xml_peek_parent(out); - xmlSetProp(xml_node, (pcmkXmlStr) "id_as_resource", - (pcmkXmlStr) node->details->remote_rsc->container->id); + crm_xml_add(xml_node, "id_as_resource", node->details->remote_rsc->container->id); } if (group_by_node) { @@ -1395,7 +1394,7 @@ pe__node_attribute_xml(pcmk__output_t *out, va_list args) { if (add_extra) { char *buf = crm_itoa(expected_score); - xmlSetProp(node, (pcmkXmlStr) "expected", (pcmkXmlStr) buf); + crm_xml_add(node, "expected", buf); free(buf); } @@ -1635,7 +1634,7 @@ pe__op_history_xml(pcmk__output_t *out, va_list args) { if (interval_ms_s && !pcmk__str_eq(interval_ms_s, "0", pcmk__str_casei)) { char *s = crm_strdup_printf("%sms", interval_ms_s); - xmlSetProp(node, (pcmkXmlStr) "interval", (pcmkXmlStr) s); + crm_xml_add(node, "interval", s); free(s); } @@ -1646,8 +1645,7 @@ pe__op_history_xml(pcmk__output_t *out, va_list args) { if (value) { time_t int_value = (time_t) crm_parse_int(value, NULL); if (int_value > 0) { - xmlSetProp(node, (pcmkXmlStr) XML_RSC_OP_LAST_CHANGE, - (pcmkXmlStr) pcmk__epoch2str(&int_value)); + crm_xml_add(node, XML_RSC_OP_LAST_CHANGE, pcmk__epoch2str(&int_value)); } } @@ -1655,21 +1653,20 @@ pe__op_history_xml(pcmk__output_t *out, va_list args) { if (value) { time_t int_value = (time_t) crm_parse_int(value, NULL); if (int_value > 0) { - xmlSetProp(node, (pcmkXmlStr) XML_RSC_OP_LAST_RUN, - (pcmkXmlStr) pcmk__epoch2str(&int_value)); + crm_xml_add(node, XML_RSC_OP_LAST_RUN, pcmk__epoch2str(&int_value)); } } value = crm_element_value(xml_op, XML_RSC_OP_T_EXEC); if (value) { char *s = crm_strdup_printf("%sms", value); - xmlSetProp(node, (pcmkXmlStr) XML_RSC_OP_T_EXEC, (pcmkXmlStr) s); + crm_xml_add(node, XML_RSC_OP_T_EXEC, s); free(s); } value = crm_element_value(xml_op, XML_RSC_OP_T_QUEUE); if (value) { char *s = crm_strdup_printf("%sms", value); - xmlSetProp(node, (pcmkXmlStr) XML_RSC_OP_T_QUEUE, (pcmkXmlStr) s); + crm_xml_add(node, XML_RSC_OP_T_QUEUE, s); free(s); } } @@ -1734,7 +1731,7 @@ pe__resource_history_xml(pcmk__output_t *out, va_list args) { NULL); if (rsc == NULL) { - xmlSetProp(node, (pcmkXmlStr) "orphan", (pcmkXmlStr) "true"); + crm_xml_add(node, "orphan", "true"); } else if (all || failcount || last_failure > 0) { char *migration_s = crm_itoa(rsc->migration_threshold); @@ -1746,14 +1743,12 @@ pe__resource_history_xml(pcmk__output_t *out, va_list args) { if (failcount > 0) { char *s = crm_itoa(failcount); - xmlSetProp(node, (pcmkXmlStr) PCMK__FAIL_COUNT_PREFIX, - (pcmkXmlStr) s); + crm_xml_add(node, PCMK__FAIL_COUNT_PREFIX, s); free(s); } if (last_failure > 0) { - xmlSetProp(node, (pcmkXmlStr) PCMK__LAST_FAILURE_PREFIX, - (pcmkXmlStr) pcmk__epoch2str(&last_failure)); + crm_xml_add(node, PCMK__LAST_FAILURE_PREFIX, pcmk__epoch2str(&last_failure)); } } @@ -1920,8 +1915,7 @@ pe__ticket_xml(pcmk__output_t *out, va_list args) { NULL); if (ticket->last_granted > -1) { - xmlSetProp(node, (pcmkXmlStr) "last-granted", - (pcmkXmlStr) pcmk__epoch2str(&ticket->last_granted)); + crm_xml_add(node, "last-granted", pcmk__epoch2str(&ticket->last_granted)); } return pcmk_rc_ok; diff --git a/tools/crm_resource_print.c b/tools/crm_resource_print.c index a33356f..cb06879 100644 --- a/tools/crm_resource_print.c +++ b/tools/crm_resource_print.c @@ -252,19 +252,19 @@ resource_check_xml(pcmk__output_t *out, va_list args) { NULL); if (pcmk_is_set(checks->flags, rsc_remain_stopped)) { - xmlSetProp(node, (pcmkXmlStr) "remain_stopped", (pcmkXmlStr) "true"); + crm_xml_add(node, "remain_stopped", "true"); } if (pcmk_is_set(checks->flags, rsc_unpromotable)) { - xmlSetProp(node, (pcmkXmlStr) "promotable", (pcmkXmlStr) "false"); + crm_xml_add(node, "promotable", "false"); } if (pcmk_is_set(checks->flags, rsc_unmanaged)) { - xmlSetProp(node, (pcmkXmlStr) "unmanaged", (pcmkXmlStr) "true"); + crm_xml_add(node, "unmanaged", "true"); } if (checks->lock_node) { - xmlSetProp(node, (pcmkXmlStr) "locked-to", (pcmkXmlStr) checks->lock_node); + crm_xml_add(node, "locked-to", checks->lock_node); } return rc; @@ -333,7 +333,7 @@ resource_search_xml(pcmk__output_t *out, va_list args) xmlNode *sub_node = pcmk__output_create_xml_text_node(out, "node", node->details->uname); if (!pe_rsc_is_clone(rsc) && rsc->fns->state(rsc, TRUE) == RSC_ROLE_MASTER) { - xmlSetProp(sub_node, (pcmkXmlStr) "state", (pcmkXmlStr) "promoted"); + crm_xml_add(sub_node, "state", "promoted"); } } @@ -463,7 +463,7 @@ resource_why_xml(pcmk__output_t *out, va_list args) } else if ((rsc != NULL) && (host_uname != NULL)) { if (resource_is_running_on(rsc, host_uname)) { - xmlSetProp(xml_node, (pcmkXmlStr) "running_on", (pcmkXmlStr) host_uname); + crm_xml_add(xml_node, "running_on", host_uname); } cli_resource_check(out, cib_conn, rsc); @@ -512,8 +512,7 @@ resource_why_xml(pcmk__output_t *out, va_list args) GListPtr hosts = NULL; rsc->fns->location(rsc, &hosts, TRUE); - xmlSetProp(xml_node, (pcmkXmlStr) "running", - (pcmkXmlStr) pcmk__btoa(hosts != NULL)); + crm_xml_add(xml_node, "running", pcmk__btoa(hosts != NULL)); cli_resource_check(out, cib_conn, rsc); g_list_free(hosts); }