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);
}