diff --git a/daemons/attrd/attrd_ipc.c b/daemons/attrd/attrd_ipc.c index fd917a37bb5..07fe84399ad 100644 --- a/daemons/attrd/attrd_ipc.c +++ b/daemons/attrd/attrd_ipc.c @@ -1,5 +1,5 @@ /* - * Copyright 2004-2024 the Pacemaker project contributors + * Copyright 2004-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -66,7 +66,7 @@ static xmlNode *build_query_reply(const char *attr, const char *host) if (host) { v = g_hash_table_lookup(a->values, host); host_value = pcmk__xe_create(reply, PCMK_XE_NODE); - pcmk__xe_add_node(host_value, host, 0); + crm_xml_add(host_value, PCMK__XA_ATTR_HOST, host); crm_xml_add(host_value, PCMK__XA_ATTR_VALUE, (v? v->current : NULL)); @@ -77,7 +77,7 @@ static xmlNode *build_query_reply(const char *attr, const char *host) g_hash_table_iter_init(&iter, a->values); while (g_hash_table_iter_next(&iter, NULL, (gpointer *) &v)) { host_value = pcmk__xe_create(reply, PCMK_XE_NODE); - pcmk__xe_add_node(host_value, v->nodename, 0); + crm_xml_add(host_value, PCMK__XA_ATTR_HOST, v->nodename); crm_xml_add(host_value, PCMK__XA_ATTR_VALUE, v->current); } } @@ -166,7 +166,7 @@ attrd_client_peer_remove(pcmk__request_t *request) host_alloc = pcmk__cluster_node_name(nodeid); host = host_alloc; } - pcmk__xe_add_node(xml, host, 0); + crm_xml_add(xml, PCMK__XA_ATTR_HOST, host); } } diff --git a/include/crm/common/internal.h b/include/crm/common/internal.h index b5a004500c9..0a406f966d7 100644 --- a/include/crm/common/internal.h +++ b/include/crm/common/internal.h @@ -1,5 +1,5 @@ /* - * Copyright 2015-2024 the Pacemaker project contributors + * Copyright 2015-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -64,19 +64,6 @@ int pcmk__add_mainloop_ipc(crm_ipc_t *ipc, int priority, void *userdata, guint pcmk__mainloop_timer_get_period(const mainloop_timer_t *timer); -/* internal node-related XML utilities (from nodes.c) */ - -/*! - * \internal - * \brief Add local node name and ID to an XML node - * - * \param[in,out] request XML node to modify - * \param[in] node The local node's name - * \param[in] nodeid The local node's ID (can be 0) - */ -void pcmk__xe_add_node(xmlNode *xml, const char *node, int nodeid); - - /* internal name/value utilities (from nvpair.c) */ int pcmk__scan_nvpair(const char *input, char **name, char **value); diff --git a/lib/common/ipc_attrd.c b/lib/common/ipc_attrd.c index ad66fce34c9..847e63d106e 100644 --- a/lib/common/ipc_attrd.c +++ b/lib/common/ipc_attrd.c @@ -1,5 +1,5 @@ /* - * Copyright 2011-2024 the Pacemaker project contributors + * Copyright 2011-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -201,7 +201,7 @@ pcmk__attrd_api_clear_failures(pcmk_ipc_api_t *api, const char *node, pcmk__s(resource, "all resources"), pcmk__s(node, "all nodes")); crm_xml_add(request, PCMK_XA_TASK, PCMK__ATTRD_CMD_CLEAR_FAILURE); - pcmk__xe_add_node(request, node, 0); + crm_xml_add(request, PCMK__XA_ATTR_HOST, node); crm_xml_add(request, PCMK__XA_ATTR_RESOURCE, resource); crm_xml_add(request, PCMK__XA_ATTR_CLEAR_OPERATION, operation); crm_xml_add(request, PCMK__XA_ATTR_CLEAR_INTERVAL, interval_spec); @@ -257,7 +257,7 @@ pcmk__attrd_api_purge(pcmk_ipc_api_t *api, const char *node, bool reap) crm_xml_add(request, PCMK_XA_TASK, PCMK__ATTRD_CMD_PEER_REMOVE); pcmk__xe_set_bool_attr(request, PCMK__XA_REAP, reap); - pcmk__xe_add_node(request, node, 0); + crm_xml_add(request, PCMK__XA_ATTR_HOST, node); rc = connect_and_send_attrd_request(api, request); @@ -297,7 +297,7 @@ pcmk__attrd_api_query(pcmk_ipc_api_t *api, const char *node, const char *name, crm_xml_add(request, PCMK__XA_ATTR_NAME, name); crm_xml_add(request, PCMK_XA_TASK, PCMK__ATTRD_CMD_QUERY); - pcmk__xe_add_node(request, node, 0); + crm_xml_add(request, PCMK__XA_ATTR_HOST, node); rc = connect_and_send_attrd_request(api, request); pcmk__xml_free(request); @@ -321,7 +321,7 @@ pcmk__attrd_api_refresh(pcmk_ipc_api_t *api, const char *node) request = create_attrd_op(NULL); crm_xml_add(request, PCMK_XA_TASK, PCMK__ATTRD_CMD_REFRESH); - pcmk__xe_add_node(request, node, 0); + crm_xml_add(request, PCMK__XA_ATTR_HOST, node); rc = connect_and_send_attrd_request(api, request); @@ -361,7 +361,7 @@ populate_update_op(xmlNode *op, const char *node, const char *name, const char * crm_xml_add(op, PCMK__XA_ATTR_VALUE, value); crm_xml_add(op, PCMK__XA_ATTR_DAMPENING, dampen); - pcmk__xe_add_node(op, node, 0); + crm_xml_add(op, PCMK__XA_ATTR_HOST, node); crm_xml_add(op, PCMK__XA_ATTR_SET, set); crm_xml_add_int(op, PCMK__XA_ATTR_IS_REMOTE, pcmk_is_set(options, pcmk__node_attr_remote)); diff --git a/lib/common/ipc_client.c b/lib/common/ipc_client.c index 6f2d65be2f1..941fe8c8894 100644 --- a/lib/common/ipc_client.c +++ b/lib/common/ipc_client.c @@ -1,5 +1,5 @@ /* - * Copyright 2004-2024 the Pacemaker project contributors + * Copyright 2004-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -754,7 +754,10 @@ create_purge_node_request(const pcmk_ipc_api_t *api, const char *node_name, crm_xml_add(request, PCMK__XA_SRC, crm_system_name); crm_xml_add(request, PCMK_XA_TASK, PCMK__ATTRD_CMD_PEER_REMOVE); pcmk__xe_set_bool_attr(request, PCMK__XA_REAP, true); - pcmk__xe_add_node(request, node_name, nodeid); + crm_xml_add(request, PCMK__XA_ATTR_HOST, node_name); + if (nodeid > 0) { + crm_xml_add_int(request, PCMK__XA_ATTR_HOST_ID, nodeid); + } break; case pcmk_ipc_controld: diff --git a/lib/common/nodes.c b/lib/common/nodes.c index 4a059e6520c..8ed0ab4f8ff 100644 --- a/lib/common/nodes.c +++ b/lib/common/nodes.c @@ -1,5 +1,5 @@ /* - * Copyright 2022-2024 the Pacemaker project contributors + * Copyright 2022-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -185,20 +185,6 @@ pcmk_foreach_active_resource(pcmk_node_t *node, return result; } -void -pcmk__xe_add_node(xmlNode *xml, const char *node, int nodeid) -{ - pcmk__assert(xml != NULL); - - if (node != NULL) { - crm_xml_add(xml, PCMK__XA_ATTR_HOST, node); - } - - if (nodeid > 0) { - crm_xml_add_int(xml, PCMK__XA_ATTR_HOST_ID, nodeid); - } -} - /*! * \internal * \brief Find a node by name in a list of nodes diff --git a/lib/common/tests/nodes/Makefile.am b/lib/common/tests/nodes/Makefile.am index a7884658d12..d63094de7c9 100644 --- a/lib/common/tests/nodes/Makefile.am +++ b/lib/common/tests/nodes/Makefile.am @@ -1,5 +1,5 @@ # -# Copyright 2024 the Pacemaker project contributors +# Copyright 2024-2025 the Pacemaker project contributors # # The version control history for this file may have further details. # @@ -13,7 +13,6 @@ include $(top_srcdir)/mk/unittest.mk # Add "_test" to the end of all test program names to simplify .gitignore. check_PROGRAMS = pcmk__find_node_in_list_test \ - pcmk__xe_add_node_test \ pcmk_cib_node_shutdown_test \ pcmk_foreach_active_resource_test \ pcmk_node_is_clean_test \ diff --git a/lib/common/tests/nodes/pcmk__xe_add_node_test.c b/lib/common/tests/nodes/pcmk__xe_add_node_test.c deleted file mode 100644 index 840fbac1fd1..00000000000 --- a/lib/common/tests/nodes/pcmk__xe_add_node_test.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2024 the Pacemaker project contributors - * - * The version control history for this file may have further details. - * - * This source code is licensed under the GNU General Public License version 2 - * or later (GPLv2+) WITHOUT ANY WARRANTY. - */ - -#include - -#include -#include -#include - -static void -bad_input(void **state) { - xmlNode *node = NULL; - - pcmk__assert_asserts(pcmk__xe_add_node(NULL, NULL, 0)); - - node = pcmk__xe_create(NULL, "test"); - - pcmk__xe_add_node(node, NULL, 0); - assert_null(xmlHasProp(node, (pcmkXmlStr) PCMK__XA_ATTR_HOST)); - assert_null(xmlHasProp(node, (pcmkXmlStr) PCMK__XA_ATTR_HOST_ID)); - - pcmk__xe_add_node(node, NULL, -100); - assert_null(xmlHasProp(node, (pcmkXmlStr) PCMK__XA_ATTR_HOST)); - assert_null(xmlHasProp(node, (pcmkXmlStr) PCMK__XA_ATTR_HOST_ID)); - - pcmk__xml_free(node); -} - -static void -expected_input(void **state) { - xmlNode *node = pcmk__xe_create(NULL, "test"); - int i; - - pcmk__xe_add_node(node, "somenode", 47); - assert_string_equal("somenode", - crm_element_value(node, PCMK__XA_ATTR_HOST)); - assert_int_equal(pcmk_rc_ok, - crm_element_value_int(node, PCMK__XA_ATTR_HOST_ID, &i)); - assert_int_equal(i, 47); - - pcmk__xml_free(node); -} - -static void -repeated_use(void **state) { - xmlNode *node = pcmk__xe_create(NULL, "test"); - int i; - - /* Later calls override settings from earlier calls. */ - pcmk__xe_add_node(node, "nodeA", 1); - pcmk__xe_add_node(node, "nodeB", 2); - pcmk__xe_add_node(node, "nodeC", 3); - - assert_string_equal("nodeC", crm_element_value(node, PCMK__XA_ATTR_HOST)); - assert_int_equal(pcmk_rc_ok, - crm_element_value_int(node, PCMK__XA_ATTR_HOST_ID, &i)); - assert_int_equal(i, 3); - - pcmk__xml_free(node); -} - -PCMK__UNIT_TEST(pcmk__xml_test_setup_group, pcmk__xml_test_teardown_group, - cmocka_unit_test(bad_input), - cmocka_unit_test(expected_input), - cmocka_unit_test(repeated_use)) diff --git a/lib/lrmd/proxy_common.c b/lib/lrmd/proxy_common.c index 19183918a0b..e02a89b352e 100644 --- a/lib/lrmd/proxy_common.c +++ b/lib/lrmd/proxy_common.c @@ -1,5 +1,5 @@ /* - * Copyright 2015-2024 the Pacemaker project contributors + * Copyright 2015-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -281,7 +281,8 @@ remote_proxy_cb(lrmd_t *lrmd, const char *node_name, xmlNode *msg) PCMK__ATTRD_CMD_UPDATE, PCMK__ATTRD_CMD_UPDATE_BOTH, PCMK__ATTRD_CMD_UPDATE_DELAY, NULL)) { - pcmk__xe_add_node(request, proxy->node_name, 0); + + crm_xml_add(request, PCMK__XA_ATTR_HOST, proxy->node_name); } rc = crm_ipc_send(proxy->ipc, request, flags, 5000, NULL);