From 3812b25fffde9a5108fd98dfc4284c56b16890e9 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Tue, 11 Mar 2025 23:35:33 -0700 Subject: [PATCH 001/186] Refactor: libcrmcommon: New pcmk__xml_commit_changes() To replace xml_accept_changes(). For now we basically mimic the logic in xml_accept_changes(), but perhaps we should be less aggressive or rename the function to reflect that it's clearing so many things. In particular, I'm not sure I like that this disables tracking, and I don't think I like that ACLs are so tightly coupled to change tracking (in many ways, not just here). Change tracking is required for ACLs but not vice-versa. Perhaps operations and flags should be kept a bit more... separate, though. Still, it's probably wise to throw away any unpacked ACLs when committing changes, as we're doing now and as we've been doing. ACLs themselves may have been added, modified, or removed as part of the changes. We want to get a current view of them before any further changes. Signed-off-by: Reid Wahl --- include/crm/common/xml_internal.h | 2 + lib/cib/cib_utils.c | 4 +- lib/common/patchset.c | 5 ++- lib/common/xml.c | 62 ++++++++++++++++++++++--------- tools/crm_diff.c | 4 +- tools/crm_shadow.c | 2 +- 6 files changed, 55 insertions(+), 24 deletions(-) diff --git a/include/crm/common/xml_internal.h b/include/crm/common/xml_internal.h index 4245985a744..03d3ceb355c 100644 --- a/include/crm/common/xml_internal.h +++ b/include/crm/common/xml_internal.h @@ -372,6 +372,8 @@ enum xml_private_flags { void pcmk__xml_doc_set_flags(xmlDoc *doc, uint32_t flags); bool pcmk__xml_doc_all_flags_set(const xmlDoc *xml, uint32_t flags); +void pcmk__xml_commit_changes(xmlDoc *doc); + bool pcmk__xml_tree_foreach(xmlNode *xml, bool (*fn)(xmlNode *, void *), void *user_data); diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c index 26981946809..2857ca49144 100644 --- a/lib/cib/cib_utils.c +++ b/lib/cib/cib_utils.c @@ -1,6 +1,6 @@ /* * Original copyright 2004 International Business Machines - * Later changes copyright 2008-2024 the Pacemaker project contributors + * Later changes copyright 2008-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -407,7 +407,7 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, config_changed, manage_counters); pcmk__log_xml_changes(LOG_TRACE, scratch); - xml_accept_changes(scratch); + pcmk__xml_commit_changes(scratch->doc); if(local_diff) { patchset_process_digest(local_diff, patchset_cib, scratch, with_digest); diff --git a/lib/common/patchset.c b/lib/common/patchset.c index 4f1fcbadf7b..f4bda8dfc38 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -296,8 +296,9 @@ patchset_process_digest(xmlNode *patch, xmlNode *source, xmlNode *target, return; } - /* We should always call xml_accept_changes() before calculating a digest. - * Otherwise, with an on-tracking dirty target, we could get a wrong digest. + /* We should always call pcmk__xml_commit_changes() before calculating a + * digest. Otherwise, with an on-tracking dirty target, we could get a wrong + * digest. */ CRM_LOG_ASSERT(!pcmk__xml_doc_all_flags_set(target->doc, pcmk__xf_dirty)); diff --git a/lib/common/xml.c b/lib/common/xml.c index 74bf14aa845..5ac7e33b43f 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -404,7 +404,7 @@ xml_track_changes(xmlNode * xml, const char *user, xmlNode *acl_source, bool enf return; } - xml_accept_changes(xml); + pcmk__xml_commit_changes(xml->doc); crm_trace("Tracking changes%s to %p", enforce_acls?" with ACLs":"", xml); pcmk__xml_doc_set_flags(xml->doc, pcmk__xf_tracking); if(enforce_acls) { @@ -454,13 +454,54 @@ pcmk__xml_position(const xmlNode *xml, enum xml_private_flags ignore_if_set) * \note This is compatible with \c pcmk__xml_tree_foreach(). */ static bool -accept_attr_deletions(xmlNode *xml, void *user_data) +commit_attr_deletions(xmlNode *xml, void *user_data) { pcmk__xml_reset_node_flags(xml, NULL); pcmk__xe_remove_matching_attrs(xml, true, pcmk__marked_as_deleted, NULL); return true; } +/*! + * \internal + * \brief Finalize all pending changes to an XML document and reset private data + * + * Clear the ACL user and all flags, unpacked ACLs, and deleted node records for + * the document; clear all flags on each node in the tree; and delete any + * attributes that are marked for deletion. + * + * \param[in,out] doc XML document + * + * \note When change tracking is enabled, "deleting" an attribute simply marks + * it for deletion (using \c pcmk__xf_deleted) until changes are + * committed. Freeing a node (using \c pcmk__xml_free()) adds a deleted + * node record (\c pcmk__deleted_xml_t) to the node's document before + * freeing it. + * \note This function clears all flags, not just flags that indicate changes. + * In particular, note that it clears the \c pcmk__xf_tracking flag, thus + * disabling tracking. + */ +void +pcmk__xml_commit_changes(xmlDoc *doc) +{ + xml_doc_private_t *docpriv = NULL; + + if (doc == NULL) { + return; + } + + docpriv = doc->_private; + if (docpriv == NULL) { + return; + } + + if (pcmk_is_set(docpriv->flags, pcmk__xf_dirty)) { + pcmk__xml_tree_foreach(xmlDocGetRootElement(doc), commit_attr_deletions, + NULL); + } + reset_xml_private_data(docpriv); + docpriv->flags = pcmk__xf_none; +} + /*! * \internal * \brief Find first child XML node matching another given XML node @@ -489,22 +530,9 @@ pcmk__xml_match(const xmlNode *haystack, const xmlNode *needle, bool exact) void xml_accept_changes(xmlNode * xml) { - xmlNode *top = NULL; - xml_doc_private_t *docpriv = NULL; - - if(xml == NULL) { - return; - } - - crm_trace("Accepting changes to %p", xml); - docpriv = xml->doc->_private; - top = xmlDocGetRootElement(xml->doc); - - if (pcmk_is_set(docpriv->flags, pcmk__xf_dirty)) { - pcmk__xml_tree_foreach(top, accept_attr_deletions, NULL); + if (xml != NULL) { + pcmk__xml_commit_changes(xml->doc); } - reset_xml_private_data(xml->doc->_private); - docpriv->flags = pcmk__xf_none; } /*! diff --git a/tools/crm_diff.c b/tools/crm_diff.c index 6fb5a1fb9f5..86f2b5e2b58 100644 --- a/tools/crm_diff.c +++ b/tools/crm_diff.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2024 the Pacemaker project contributors + * Copyright 2005-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -194,7 +194,7 @@ generate_patch(xmlNode *object_original, xmlNode *object_new, const char *xml_fi output = xml_create_patchset(0, object_original, object_new, NULL, FALSE); pcmk__log_xml_changes(LOG_INFO, object_new); - xml_accept_changes(object_new); + pcmk__xml_commit_changes(object_new->doc); if (output == NULL) { return pcmk_rc_ok; // No changes diff --git a/tools/crm_shadow.c b/tools/crm_shadow.c index d28b2e7c831..5fc9e57636c 100644 --- a/tools/crm_shadow.c +++ b/tools/crm_shadow.c @@ -949,7 +949,7 @@ show_shadow_diff(pcmk__output_t *out, GError **error) diff = xml_create_patchset(0, old_config, new_config, NULL, false); pcmk__log_xml_changes(LOG_INFO, new_config); - xml_accept_changes(new_config); + pcmk__xml_commit_changes(new_config->doc); out->quiet = true; out->message(out, "shadow", From 7d45b48e70c4ee0c4fbfa35f08f9c8fd9230ec83 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Tue, 11 Mar 2025 23:37:22 -0700 Subject: [PATCH 002/186] API: libcrmcommon: Deprecate xml_accept_changes() Signed-off-by: Reid Wahl --- include/crm/common/xml.h | 1 - include/crm/common/xml_compat.h | 3 +++ lib/common/xml.c | 16 ++++++++-------- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/include/crm/common/xml.h b/include/crm/common/xml.h index ac4c0739267..d321d748ec1 100644 --- a/include/crm/common/xml.h +++ b/include/crm/common/xml.h @@ -36,7 +36,6 @@ extern "C" { void xml_track_changes(xmlNode * xml, const char *user, xmlNode *acl_source, bool enforce_acls); void xml_calculate_changes(xmlNode *old_xml, xmlNode *new_xml); void xml_calculate_significant_changes(xmlNode *old_xml, xmlNode *new_xml); -void xml_accept_changes(xmlNode * xml); bool xml_patch_versions(const xmlNode *patchset, int add[3], int del[3]); xmlNode *xml_create_patchset( diff --git a/include/crm/common/xml_compat.h b/include/crm/common/xml_compat.h index d575326e0a6..135e9eddd20 100644 --- a/include/crm/common/xml_compat.h +++ b/include/crm/common/xml_compat.h @@ -111,6 +111,9 @@ bool xml_tracking_changes(xmlNode *xml); //! \deprecated Do not use bool xml_document_dirty(xmlNode *xml); +//! \deprecated Do not use +void xml_accept_changes(xmlNode *xml); + #ifdef __cplusplus } #endif diff --git a/lib/common/xml.c b/lib/common/xml.c index 5ac7e33b43f..d23161bf8b4 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -527,14 +527,6 @@ pcmk__xml_match(const xmlNode *haystack, const xmlNode *needle, bool exact) } } -void -xml_accept_changes(xmlNode * xml) -{ - if (xml != NULL) { - pcmk__xml_commit_changes(xml->doc); - } -} - /*! * \internal * \brief Create a new XML document @@ -1684,5 +1676,13 @@ xml_document_dirty(xmlNode *xml) && pcmk__xml_doc_all_flags_set(xml->doc, pcmk__xf_dirty); } +void +xml_accept_changes(xmlNode *xml) +{ + if (xml != NULL) { + pcmk__xml_commit_changes(xml->doc); + } +} + // LCOV_EXCL_STOP // End deprecated API From 9893e2f373038edb4ae88bedc83360eb3360306c Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 13 Mar 2025 00:53:29 -0700 Subject: [PATCH 003/186] Refactor: libcrmcommon: Rename xml_private_flags to pcmk__xml_flags And add doxygen. The doxygen is a bit hand-wavy for a few of them, because I don't yet understand everything they're doing. The wide spacing before the equal sign is to allow room to do a planned rename of pcmk__xf_lazy later, without having to change the other lines again. Signed-off-by: Reid Wahl --- include/crm/common/acl_internal.h | 4 +- include/crm/common/xml_internal.h | 89 ++++++++++++++++++++++++------- lib/common/acl.c | 15 +++--- lib/common/crmcommon_private.h | 9 ++-- lib/common/xml.c | 30 ++++------- 5 files changed, 93 insertions(+), 54 deletions(-) diff --git a/include/crm/common/acl_internal.h b/include/crm/common/acl_internal.h index a65be93c587..38d7f21e959 100644 --- a/include/crm/common/acl_internal.h +++ b/include/crm/common/acl_internal.h @@ -13,7 +13,7 @@ #include // strcmp() #include // xmlNode -#include // enum xml_private_flags +#include // enum pcmk__xml_flags #ifdef __cplusplus extern "C" { @@ -34,7 +34,7 @@ pcmk__is_privileged(const char *user) void pcmk__enable_acl(xmlNode *acl_source, xmlNode *target, const char *user); bool pcmk__check_acl(xmlNode *xml, const char *attr_name, - enum xml_private_flags mode); + enum pcmk__xml_flags mode); #ifdef __cplusplus } diff --git a/include/crm/common/xml_internal.h b/include/crm/common/xml_internal.h index 03d3ceb355c..8f087c4f756 100644 --- a/include/crm/common/xml_internal.h +++ b/include/crm/common/xml_internal.h @@ -347,26 +347,75 @@ void pcmk__xml_sanitize_id(char *id); /* internal XML-related utilities */ -enum xml_private_flags { - pcmk__xf_none = 0x0000, - pcmk__xf_dirty = 0x0001, - pcmk__xf_deleted = 0x0002, - pcmk__xf_created = 0x0004, - pcmk__xf_modified = 0x0008, - - pcmk__xf_tracking = 0x0010, - pcmk__xf_processed = 0x0020, - pcmk__xf_skip = 0x0040, - pcmk__xf_moved = 0x0080, - - pcmk__xf_acl_enabled = 0x0100, - pcmk__xf_acl_read = 0x0200, - pcmk__xf_acl_write = 0x0400, - pcmk__xf_acl_deny = 0x0800, - - pcmk__xf_acl_create = 0x1000, - pcmk__xf_acl_denied = 0x2000, - pcmk__xf_lazy = 0x4000, +/*! + * \internal + * \brief Flags related to XML change tracking and ACLs + */ +enum pcmk__xml_flags { + //! This flag has no effect + pcmk__xf_none = UINT32_C(0), + + /*! + * Node was created or modified, or one of its descendants was created, + * modified, moved, or deleted. + */ + pcmk__xf_dirty = (UINT32_C(1) << 0), + + //! Node was deleted (set for attribute only) + pcmk__xf_deleted = (UINT32_C(1) << 1), + + //! Node was created + pcmk__xf_created = (UINT32_C(1) << 2), + + //! Node was modified + pcmk__xf_modified = (UINT32_C(1) << 3), + + //! Tracking is enabled (set for document only) + pcmk__xf_tracking = (UINT32_C(1) << 4), + + //! Tree's changes compared to another XML tree have been marked + pcmk__xf_processed = (UINT32_C(1) << 5), + + //! Skip counting this node when getting a node's position among siblings + pcmk__xf_skip = (UINT32_C(1) << 6), + + //! Node was moved + pcmk__xf_moved = (UINT32_C(1) << 7), + + //! ACLs are enabled (set for document only) + pcmk__xf_acl_enabled = (UINT32_C(1) << 8), + + /* @TODO Consider splitting the ACL permission flags (pcmk__xf_acl_read, + * pcmk__xf_acl_write, pcmk__xf_acl_write, and pcmk__xf_acl_create) into a + * separate enum and reserving this enum for tracking-related flags. + * + * The ACL permission flags have various meanings in different contexts (for + * example, what permission an ACL grants or denies; what permissions the + * current ACL user has for a given XML node; and possibly others). And + * for xml_acl_t objects, they're used in exclusive mode (exactly one is + * set), rather than as flags. + */ + + //! ACL read permission + pcmk__xf_acl_read = (UINT32_C(1) << 9), + + //! ACL write permission (implies read permission in most or all contexts) + pcmk__xf_acl_write = (UINT32_C(1) << 10), + + //! ACL deny permission (that is, no permission) + pcmk__xf_acl_deny = (UINT32_C(1) << 11), + + /*! + * ACL create permission for attributes (if attribute exists, this is mapped + * to \c pcmk__xf_acl_write) + */ + pcmk__xf_acl_create = (UINT32_C(1) << 12), + + //! ACLs deny the user access (set for document only) + pcmk__xf_acl_denied = (UINT32_C(1) << 13), + + //! Ignore attribute moves within an element (set for document only) + pcmk__xf_lazy = (UINT32_C(1) << 14), }; void pcmk__xml_doc_set_flags(xmlDoc *doc, uint32_t flags); diff --git a/lib/common/acl.c b/lib/common/acl.c index 9cdafa70164..e14d3f14c44 100644 --- a/lib/common/acl.c +++ b/lib/common/acl.c @@ -26,8 +26,8 @@ #include "crmcommon_private.h" typedef struct xml_acl_s { - enum xml_private_flags mode; - gchar *xpath; + enum pcmk__xml_flags mode; + gchar *xpath; } xml_acl_t; static void @@ -48,7 +48,7 @@ pcmk__free_acls(GList *acls) } static GList * -create_acl(const xmlNode *xml, GList *acls, enum xml_private_flags mode) +create_acl(const xmlNode *xml, GList *acls, enum pcmk__xml_flags mode) { xml_acl_t *acl = NULL; @@ -198,7 +198,7 @@ parse_acl_entry(const xmlNode *acl_top, const xmlNode *acl_entry, GList *acls) */ static const char * -acl_to_text(enum xml_private_flags flags) +acl_to_text(enum pcmk__xml_flags flags) { if (pcmk_is_set(flags, pcmk__xf_acl_deny)) { return "deny"; @@ -386,7 +386,7 @@ pcmk__enable_acl(xmlNode *acl_source, xmlNode *target, const char *user) } static inline bool -test_acl_mode(enum xml_private_flags allowed, enum xml_private_flags requested) +test_acl_mode(enum pcmk__xml_flags allowed, enum pcmk__xml_flags requested) { if (pcmk_is_set(allowed, pcmk__xf_acl_deny)) { return false; @@ -719,7 +719,7 @@ xml_acl_enabled(const xmlNode *xml) * \param[in] prefix Prefix describing ACL that denied access (for * logging only) * \param[in] user User accessing \p xml (for logging only) - * \param[in] mode Access mode + * \param[in] mode Access mode (for logging only) */ #define check_acl_deny(xml, attr_name, prefix, user, mode) do { \ xmlNode *tree = xml; \ @@ -745,8 +745,7 @@ xml_acl_enabled(const xmlNode *xml) } while (false); bool -pcmk__check_acl(xmlNode *xml, const char *attr_name, - enum xml_private_flags mode) +pcmk__check_acl(xmlNode *xml, const char *attr_name, enum pcmk__xml_flags mode) { xml_doc_private_t *docpriv = NULL; diff --git a/lib/common/crmcommon_private.h b/lib/common/crmcommon_private.h index 8e1b453eb61..00948c7057f 100644 --- a/lib/common/crmcommon_private.h +++ b/lib/common/crmcommon_private.h @@ -30,7 +30,7 @@ #include // pcmk__output_t #include // crm_exit_t #include // pcmk_rule_input_t -#include // enum xml_private_flags +#include // enum pcmk__xml_flags #ifdef __cplusplus extern "C" { @@ -70,7 +70,7 @@ typedef struct pcmk__deleted_xml_s { */ typedef struct xml_node_private_s { uint32_t check; //!< Magic number for checking integrity - uint32_t flags; //!< Group of enum xml_private_flags + uint32_t flags; //!< Group of enum pcmk__xml_flags } xml_node_private_t; /*! @@ -79,7 +79,7 @@ typedef struct xml_node_private_s { */ typedef struct xml_doc_private_s { uint32_t check; //!< Magic number for checking integrity - uint32_t flags; //!< Group of enum xml_private_flags + uint32_t flags; //!< Group of enum pcmk__xml_flags char *acl_user; //!< User affected by \c acls (for logging) //! ACLs to check requested changes against (list of \c xml_acl_t) @@ -133,8 +133,7 @@ G_GNUC_INTERNAL xmlDoc *pcmk__xml_new_doc(void); G_GNUC_INTERNAL -int pcmk__xml_position(const xmlNode *xml, - enum xml_private_flags ignore_if_set); +int pcmk__xml_position(const xmlNode *xml, enum pcmk__xml_flags ignore_if_set); G_GNUC_INTERNAL xmlNode *pcmk__xml_match(const xmlNode *haystack, const xmlNode *needle, diff --git a/lib/common/xml.c b/lib/common/xml.c index d23161bf8b4..35c95ac19af 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -123,7 +123,7 @@ pcmk__xml_set_parent_flags(xmlNode *xml, uint64_t flags) * \brief Set flags for an XML document * * \param[in,out] doc XML document - * \param[in] flags Group of enum xml_private_flags + * \param[in] flags Group of enum pcmk__xml_flags */ void pcmk__xml_doc_set_flags(xmlDoc *doc, uint32_t flags) @@ -140,7 +140,7 @@ pcmk__xml_doc_set_flags(xmlDoc *doc, uint32_t flags) * \brief Check whether the given flags are set for an XML document * * \param[in] doc XML document to check - * \param[in] flags Group of enum xml_private_flags + * \param[in] flags Group of enum pcmk__xml_flags * * \return \c true if all of \p flags are set for \p doc, or \c false otherwise */ @@ -427,7 +427,7 @@ xml_track_changes(xmlNode * xml, const char *user, xmlNode *acl_source, bool enf * \return Ordinal position of \p xml (starting with 0) */ int -pcmk__xml_position(const xmlNode *xml, enum xml_private_flags ignore_if_set) +pcmk__xml_position(const xmlNode *xml, enum pcmk__xml_flags ignore_if_set) { int position = 0; @@ -1121,21 +1121,6 @@ pcmk__xml_escape(const char *text, enum pcmk__xml_escape_type type) return g_string_free(copy, FALSE); } -/*! - * \internal - * \brief Set a flag on all attributes of an XML element - * - * \param[in,out] xml XML node to set flags on - * \param[in] flag XML private flag to set - */ -static void -set_attrs_flag(xmlNode *xml, enum xml_private_flags flag) -{ - for (xmlAttr *attr = pcmk__xe_first_attr(xml); attr; attr = attr->next) { - pcmk__set_xml_flags((xml_node_private_t *) (attr->_private), flag); - } -} - /*! * \internal * \brief Add an XML attribute to a node, marked as deleted @@ -1333,7 +1318,14 @@ mark_created_attrs(xmlNode *new_xml) static void xml_diff_attrs(xmlNode *old_xml, xmlNode *new_xml) { - set_attrs_flag(new_xml, pcmk__xf_created); // cleared later if not really new + // Cleared later if attributes are not really new + for (xmlAttr *attr = pcmk__xe_first_attr(new_xml); attr != NULL; + attr = attr->next) { + xml_node_private_t *nodepriv = attr->_private; + + pcmk__set_xml_flags(nodepriv, pcmk__xf_created); + } + xml_diff_old_attrs(old_xml, new_xml); mark_created_attrs(new_xml); } From 69598435f8d66ab96c798d879f68d57941dab2b3 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 13 Mar 2025 03:37:05 -0700 Subject: [PATCH 004/186] Refactor: libcrmcommon, tools: Drop redundant xml_track_changes() calls xml_calculate{,_significant}_changes() already takes care of this, provided the node's document doesn't have the pcmk__xf_tracking flag set yet. That is true here, since these are all new documents. Signed-off-by: Reid Wahl --- lib/common/tests/patchset/pcmk__cib_element_in_patchset_test.c | 3 +-- tools/crm_diff.c | 1 - tools/crm_shadow.c | 1 - 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/lib/common/tests/patchset/pcmk__cib_element_in_patchset_test.c b/lib/common/tests/patchset/pcmk__cib_element_in_patchset_test.c index 79afff35a78..75d77393fde 100644 --- a/lib/common/tests/patchset/pcmk__cib_element_in_patchset_test.c +++ b/lib/common/tests/patchset/pcmk__cib_element_in_patchset_test.c @@ -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. * @@ -37,7 +37,6 @@ assert_in_patchset(const char *source_s, const char *target_s, xmlNode *target = pcmk__xml_parse(target_s); xmlNode *patchset = NULL; - xml_track_changes(target, NULL, NULL, false); xml_calculate_significant_changes(source, target); patchset = xml_create_patchset(2, source, target, NULL, false); diff --git a/tools/crm_diff.c b/tools/crm_diff.c index 86f2b5e2b58..d614574a291 100644 --- a/tools/crm_diff.c +++ b/tools/crm_diff.c @@ -183,7 +183,6 @@ generate_patch(xmlNode *object_original, xmlNode *object_new, const char *xml_fi } } - xml_track_changes(object_new, NULL, object_new, FALSE); if(as_cib) { xml_calculate_significant_changes(object_original, object_new); } else { diff --git a/tools/crm_shadow.c b/tools/crm_shadow.c index 5fc9e57636c..95946166af6 100644 --- a/tools/crm_shadow.c +++ b/tools/crm_shadow.c @@ -944,7 +944,6 @@ show_shadow_diff(pcmk__output_t *out, GError **error) if (read_xml(filename, &new_config, error) != pcmk_rc_ok) { goto done; } - xml_track_changes(new_config, NULL, new_config, false); xml_calculate_changes(old_config, new_config); diff = xml_create_patchset(0, old_config, new_config, NULL, false); From e022ecc27ec7b19109157c42bac9c45daf22557c Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 13 Mar 2025 11:20:58 -0700 Subject: [PATCH 005/186] Refactor: libcib: Avoid cib_acl_enabled() duplication In all of these cases, what we really care about is whether ACLs are enabled for the user in the original CIB (*current_cib). The differences come from the aliases (cib_ro and scratch) that we use for *current_cib, and whether scratch is a copy of *current_cib (in which case the return value of cib_acl_enabled() would be the same). Also add a couple of TODO comments. This is a very convoluted and confusing function and likely has some corner case bugs. Signed-off-by: Reid Wahl --- lib/cib/cib_utils.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c index 2857ca49144..5dead76dd0a 100644 --- a/lib/cib/cib_utils.c +++ b/lib/cib/cib_utils.c @@ -233,6 +233,7 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, xmlNode *local_diff = NULL; const char *user = crm_element_value(req, PCMK__XA_CIB_USER); + const bool enable_acl = cib_acl_enabled(*current_cib, user); bool with_digest = false; crm_trace("Begin %s%s%s op", @@ -259,7 +260,7 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, xmlNode *cib_ro = *current_cib; xmlNode *cib_filtered = NULL; - if (cib_acl_enabled(cib_ro, user) + if (enable_acl && xml_acl_filtered_copy(user, *current_cib, *current_cib, &cib_filtered)) { @@ -307,11 +308,14 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, pcmk__xe_copy_attrs(top, scratch, pcmk__xaf_none); patchset_cib = top; - xml_track_changes(scratch, user, NULL, cib_acl_enabled(scratch, user)); + xml_track_changes(scratch, user, NULL, enable_acl); rc = (*fn) (op, call_options, section, req, input, scratch, &scratch, output); /* If scratch points to a new object now (for example, after an erase * operation), then *current_cib should point to the same object. + * + * @TODO Enable tracking and ACLs and calculate changes? Change tracking + * and unpacked ACLs didn't carry over to new object. */ *current_cib = scratch; @@ -319,14 +323,17 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, scratch = pcmk__xml_copy(NULL, *current_cib); patchset_cib = *current_cib; - xml_track_changes(scratch, user, NULL, cib_acl_enabled(scratch, user)); + xml_track_changes(scratch, user, NULL, enable_acl); rc = (*fn) (op, call_options, section, req, input, *current_cib, &scratch, output); + /* @TODO This appears to be a hack to determine whether scratch points + * to a new object now, without saving the old pointer (which may be + * invalid now) for comparison. Confirm this, and check more clearly. + */ if (!pcmk__xml_doc_all_flags_set(scratch->doc, pcmk__xf_tracking)) { crm_trace("Inferring changes after %s op", op); - xml_track_changes(scratch, user, *current_cib, - cib_acl_enabled(*current_cib, user)); + xml_track_changes(scratch, user, *current_cib, enable_acl); xml_calculate_changes(*current_cib, scratch); } CRM_CHECK(*current_cib != scratch, return -EINVAL); From 353325253c0a48657a0af5670e256d5ac38da0e0 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 13 Mar 2025 11:48:29 -0700 Subject: [PATCH 006/186] Refactor: libcrmcommon: Don't reuse doc in pcmk__xc_create() unit test If we simply assume that pcmk__xml_new_doc() returns non-NULL (as it currently must because it asserts on allocation error), then it's simple to make assert_comment() more self-contained. Signed-off-by: Reid Wahl --- .../tests/xml_comment/pcmk__xc_create_test.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/lib/common/tests/xml_comment/pcmk__xc_create_test.c b/lib/common/tests/xml_comment/pcmk__xc_create_test.c index 4e25adc130c..de409d19ed8 100644 --- a/lib/common/tests/xml_comment/pcmk__xc_create_test.c +++ b/lib/common/tests/xml_comment/pcmk__xc_create_test.c @@ -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. * @@ -19,11 +19,12 @@ */ static void -assert_comment(xmlDoc *doc, const char *content) +assert_comment(const char *content) { + xmlDoc *doc = pcmk__xml_new_doc(); + xml_doc_private_t *docpriv = doc->_private; xmlNode *node = NULL; xml_node_private_t *nodepriv = NULL; - xml_doc_private_t *docpriv = doc->_private; // Also clears existing doc flags xml_track_changes((xmlNode *) doc, NULL, NULL, false); @@ -49,6 +50,7 @@ assert_comment(xmlDoc *doc, const char *content) assert_true(pcmk_is_set(docpriv->flags, pcmk__xf_dirty)); pcmk__xml_free(node); + pcmk__xml_free_doc(doc); } static void @@ -61,15 +63,8 @@ null_doc(void **state) static void with_doc(void **state) { - xmlDoc *doc = pcmk__xml_new_doc(); - - assert_non_null(doc); - assert_non_null(doc->_private); - - assert_comment(doc, NULL); - assert_comment(doc, "some content"); - - pcmk__xml_free_doc(doc); + assert_comment(NULL); + assert_comment("some content"); } PCMK__UNIT_TEST(pcmk__xml_test_setup_group, pcmk__xml_test_teardown_group, From 86b23ce27ba1ceb12aa41d5721cf376baae3a4ba Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 12 Mar 2025 11:16:03 -0700 Subject: [PATCH 007/186] Refactor: libcib, libcrmcommon: Drop xml_track_changes() internally The only remaining uses were in cib_perform_op() and in the unit tests for pcmk__xc_create(). For cib_perform_op(), this introduces some duplication. We could functionize the duplicated code, but that entire function is a huge mess anyway, so I'm simply leaving it for now until we can revisit it as a whole. Note that pcmk__enable_acl() is equivalent to the three calls that xml_track_changes() was making. Signed-off-by: Reid Wahl --- include/crm/common/xml_internal.h | 11 +++++++++- lib/cib/cib_utils.c | 20 ++++++++++++++++--- .../tests/xml_comment/pcmk__xc_create_test.c | 4 ++-- lib/common/xml.c | 8 +++++++- 4 files changed, 36 insertions(+), 7 deletions(-) diff --git a/include/crm/common/xml_internal.h b/include/crm/common/xml_internal.h index 8f087c4f756..33861940934 100644 --- a/include/crm/common/xml_internal.h +++ b/include/crm/common/xml_internal.h @@ -370,7 +370,16 @@ enum pcmk__xml_flags { //! Node was modified pcmk__xf_modified = (UINT32_C(1) << 3), - //! Tracking is enabled (set for document only) + /*! + * \brief Tracking is enabled (set for document only) + * + * \c pcmk__xml_commit_changes() should usually be called before setting + * this flag. Creating a node initializes its private data, which sets + * \c pcmk__xf_dirty and \c pcmk__xf_created on the node even if tracking is + * not enabled for the document. If we don't commit changes before enabling + * tracking, then earlier node creations might appear in the later set of + * changes. + */ pcmk__xf_tracking = (UINT32_C(1) << 4), //! Tree's changes compared to another XML tree have been marked diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c index 5dead76dd0a..06c065bacf0 100644 --- a/lib/cib/cib_utils.c +++ b/lib/cib/cib_utils.c @@ -308,7 +308,12 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, pcmk__xe_copy_attrs(top, scratch, pcmk__xaf_none); patchset_cib = top; - xml_track_changes(scratch, user, NULL, enable_acl); + pcmk__xml_commit_changes(scratch->doc); + pcmk__xml_doc_set_flags(scratch->doc, pcmk__xf_tracking); + if (enable_acl) { + pcmk__enable_acl(*current_cib, scratch, user); + } + rc = (*fn) (op, call_options, section, req, input, scratch, &scratch, output); /* If scratch points to a new object now (for example, after an erase @@ -323,7 +328,12 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, scratch = pcmk__xml_copy(NULL, *current_cib); patchset_cib = *current_cib; - xml_track_changes(scratch, user, NULL, enable_acl); + pcmk__xml_commit_changes(scratch->doc); + pcmk__xml_doc_set_flags(scratch->doc, pcmk__xf_tracking); + if (enable_acl) { + pcmk__enable_acl(*current_cib, scratch, user); + } + rc = (*fn) (op, call_options, section, req, input, *current_cib, &scratch, output); @@ -333,7 +343,11 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, */ if (!pcmk__xml_doc_all_flags_set(scratch->doc, pcmk__xf_tracking)) { crm_trace("Inferring changes after %s op", op); - xml_track_changes(scratch, user, *current_cib, enable_acl); + pcmk__xml_commit_changes(scratch->doc); + pcmk__xml_doc_set_flags(scratch->doc, pcmk__xf_tracking); + if (enable_acl) { + pcmk__enable_acl(*current_cib, scratch, user); + } xml_calculate_changes(*current_cib, scratch); } CRM_CHECK(*current_cib != scratch, return -EINVAL); diff --git a/lib/common/tests/xml_comment/pcmk__xc_create_test.c b/lib/common/tests/xml_comment/pcmk__xc_create_test.c index de409d19ed8..c9f0bdfbab6 100644 --- a/lib/common/tests/xml_comment/pcmk__xc_create_test.c +++ b/lib/common/tests/xml_comment/pcmk__xc_create_test.c @@ -26,8 +26,8 @@ assert_comment(const char *content) xmlNode *node = NULL; xml_node_private_t *nodepriv = NULL; - // Also clears existing doc flags - xml_track_changes((xmlNode *) doc, NULL, NULL, false); + pcmk__xml_commit_changes(doc); // Clear pcmk__xf_dirty and pcmk__xf_created + pcmk__xml_doc_set_flags(doc, pcmk__xf_tracking); node = pcmk__xc_create(doc, content); assert_non_null(node); diff --git a/lib/common/xml.c b/lib/common/xml.c index 35c95ac19af..2d1d7007250 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -281,6 +281,11 @@ reset_xml_private_data(xml_doc_private_t *docpriv) static bool new_private_data(xmlNode *node, void *user_data) { + /* @TODO Is it necessary to set pcmk__xf_dirty and pcmk__xf_created flags on + * new nodes when change tracking is not even enabled? This seems to be the + * main reason why committing changes before enabling tracking (by setting + * pcmk__xf_tracking) is so often required. + */ CRM_CHECK(node != NULL, return true); if (node->_private != NULL) { @@ -1474,7 +1479,8 @@ xml_calculate_changes(xmlNode *old_xml, xmlNode *new_xml) return); if (!pcmk__xml_doc_all_flags_set(new_xml->doc, pcmk__xf_tracking)) { - xml_track_changes(new_xml, NULL, NULL, FALSE); + pcmk__xml_commit_changes(new_xml->doc); + pcmk__xml_doc_set_flags(new_xml->doc, pcmk__xf_tracking); } mark_xml_changes(old_xml, new_xml, FALSE); From 24fc9a3c69bea12f6c528dbe4bc32a6aaa088d23 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 13 Mar 2025 11:54:38 -0700 Subject: [PATCH 008/186] API: libcrmcommon: Deprecate xml_track_changes() Signed-off-by: Reid Wahl --- include/crm/common/xml.h | 1 - include/crm/common/xml_compat.h | 4 ++++ lib/common/xml.c | 42 +++++++++++++++++---------------- 3 files changed, 26 insertions(+), 21 deletions(-) diff --git a/include/crm/common/xml.h b/include/crm/common/xml.h index d321d748ec1..99411fda578 100644 --- a/include/crm/common/xml.h +++ b/include/crm/common/xml.h @@ -33,7 +33,6 @@ extern "C" { * Searching & Modifying */ -void xml_track_changes(xmlNode * xml, const char *user, xmlNode *acl_source, bool enforce_acls); void xml_calculate_changes(xmlNode *old_xml, xmlNode *new_xml); void xml_calculate_significant_changes(xmlNode *old_xml, xmlNode *new_xml); bool xml_patch_versions(const xmlNode *patchset, int add[3], int del[3]); diff --git a/include/crm/common/xml_compat.h b/include/crm/common/xml_compat.h index 135e9eddd20..3b94ec42314 100644 --- a/include/crm/common/xml_compat.h +++ b/include/crm/common/xml_compat.h @@ -114,6 +114,10 @@ bool xml_document_dirty(xmlNode *xml); //! \deprecated Do not use void xml_accept_changes(xmlNode *xml); +//! \deprecated Do not use +void xml_track_changes(xmlNode *xml, const char *user, xmlNode *acl_source, + bool enforce_acls); + #ifdef __cplusplus } #endif diff --git a/lib/common/xml.c b/lib/common/xml.c index 2d1d7007250..5a1234cfd88 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -402,26 +402,6 @@ pcmk__xml_free_private_data(xmlNode *xml) pcmk__xml_tree_foreach(xml, free_private_data, NULL); } -void -xml_track_changes(xmlNode * xml, const char *user, xmlNode *acl_source, bool enforce_acls) -{ - if (xml == NULL) { - return; - } - - pcmk__xml_commit_changes(xml->doc); - crm_trace("Tracking changes%s to %p", enforce_acls?" with ACLs":"", xml); - pcmk__xml_doc_set_flags(xml->doc, pcmk__xf_tracking); - if(enforce_acls) { - if(acl_source == NULL) { - acl_source = xml; - } - pcmk__xml_doc_set_flags(xml->doc, pcmk__xf_acl_enabled); - pcmk__unpack_acl(acl_source, xml, user); - pcmk__apply_acl(xml); - } -} - /*! * \internal * \brief Return ordinal position of an XML node among its siblings @@ -1682,5 +1662,27 @@ xml_accept_changes(xmlNode *xml) } } +void +xml_track_changes(xmlNode *xml, const char *user, xmlNode *acl_source, + bool enforce_acls) +{ + if (xml == NULL) { + return; + } + + pcmk__xml_commit_changes(xml->doc); + crm_trace("Tracking changes%s to %p", + (enforce_acls? " with ACLs" : ""), xml); + pcmk__xml_doc_set_flags(xml->doc, pcmk__xf_tracking); + if (enforce_acls) { + if (acl_source == NULL) { + acl_source = xml; + } + pcmk__xml_doc_set_flags(xml->doc, pcmk__xf_acl_enabled); + pcmk__unpack_acl(acl_source, xml, user); + pcmk__apply_acl(xml); + } +} + // LCOV_EXCL_STOP // End deprecated API From bf8d589c7f65f884d7f00e80b56764c9ff40b3d3 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 13 Mar 2025 12:11:05 -0700 Subject: [PATCH 009/186] Refactor: libcrmcommon: Don't set XML private flags without tracking Previously, we marked newly a created element, attribute, or comment as "dirty and created" and marked all of its parents as dirty, regardless of whether tracking was enabled for the document. Similarly, we marked a newly created document as "dirty and created," even though tracking could not have been enabled for it. This didn't make sense, and it often required committing changes that were made without tracking enabled, to ensure that those changes didn't show up in a patchset after tracking was enabled later. Signed-off-by: Reid Wahl --- include/crm/common/xml_internal.h | 8 ++------ lib/cib/cib_utils.c | 1 - lib/common/tests/xml/pcmk__xml_new_doc_test.c | 5 ++--- .../tests/xml_comment/pcmk__xc_create_test.c | 1 - lib/common/xml.c | 17 +++++++++-------- 5 files changed, 13 insertions(+), 19 deletions(-) diff --git a/include/crm/common/xml_internal.h b/include/crm/common/xml_internal.h index 33861940934..f2aba5a1d0a 100644 --- a/include/crm/common/xml_internal.h +++ b/include/crm/common/xml_internal.h @@ -373,12 +373,8 @@ enum pcmk__xml_flags { /*! * \brief Tracking is enabled (set for document only) * - * \c pcmk__xml_commit_changes() should usually be called before setting - * this flag. Creating a node initializes its private data, which sets - * \c pcmk__xf_dirty and \c pcmk__xf_created on the node even if tracking is - * not enabled for the document. If we don't commit changes before enabling - * tracking, then earlier node creations might appear in the later set of - * changes. + * Call \c pcmk__xml_commit_changes() before setting this flag if a clean + * start for tracking is needed. */ pcmk__xf_tracking = (UINT32_C(1) << 4), diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c index 06c065bacf0..71535f9ffc3 100644 --- a/lib/cib/cib_utils.c +++ b/lib/cib/cib_utils.c @@ -328,7 +328,6 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, scratch = pcmk__xml_copy(NULL, *current_cib); patchset_cib = *current_cib; - pcmk__xml_commit_changes(scratch->doc); pcmk__xml_doc_set_flags(scratch->doc, pcmk__xf_tracking); if (enable_acl) { pcmk__enable_acl(*current_cib, scratch, user); diff --git a/lib/common/tests/xml/pcmk__xml_new_doc_test.c b/lib/common/tests/xml/pcmk__xml_new_doc_test.c index 762aec4007b..28b99b77e2b 100644 --- a/lib/common/tests/xml/pcmk__xml_new_doc_test.c +++ b/lib/common/tests/xml/pcmk__xml_new_doc_test.c @@ -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. * @@ -29,8 +29,7 @@ create_document_node(void **state) { docpriv = doc->_private; assert_non_null(docpriv); assert_int_equal(docpriv->check, PCMK__XML_DOC_PRIVATE_MAGIC); - assert_true(pcmk_all_flags_set(docpriv->flags, - pcmk__xf_dirty|pcmk__xf_created)); + assert_int_equal(docpriv->flags, pcmk__xf_none); pcmk__xml_free_doc(doc); } diff --git a/lib/common/tests/xml_comment/pcmk__xc_create_test.c b/lib/common/tests/xml_comment/pcmk__xc_create_test.c index c9f0bdfbab6..a16a7da6f8d 100644 --- a/lib/common/tests/xml_comment/pcmk__xc_create_test.c +++ b/lib/common/tests/xml_comment/pcmk__xc_create_test.c @@ -26,7 +26,6 @@ assert_comment(const char *content) xmlNode *node = NULL; xml_node_private_t *nodepriv = NULL; - pcmk__xml_commit_changes(doc); // Clear pcmk__xf_dirty and pcmk__xf_created pcmk__xml_doc_set_flags(doc, pcmk__xf_tracking); node = pcmk__xc_create(doc, content); diff --git a/lib/common/xml.c b/lib/common/xml.c index 5a1234cfd88..9aa0fb9db85 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -281,17 +281,16 @@ reset_xml_private_data(xml_doc_private_t *docpriv) static bool new_private_data(xmlNode *node, void *user_data) { - /* @TODO Is it necessary to set pcmk__xf_dirty and pcmk__xf_created flags on - * new nodes when change tracking is not even enabled? This seems to be the - * main reason why committing changes before enabling tracking (by setting - * pcmk__xf_tracking) is so often required. - */ + bool tracking = false; + CRM_CHECK(node != NULL, return true); if (node->_private != NULL) { return true; } + tracking = pcmk__xml_doc_all_flags_set(node->doc, pcmk__xf_tracking); + switch (node->type) { case XML_DOCUMENT_NODE: { @@ -300,7 +299,6 @@ new_private_data(xmlNode *node, void *user_data) docpriv->check = PCMK__XML_DOC_PRIVATE_MAGIC; node->_private = docpriv; - pcmk__set_xml_flags(docpriv, pcmk__xf_dirty|pcmk__xf_created); } break; @@ -313,7 +311,9 @@ new_private_data(xmlNode *node, void *user_data) nodepriv->check = PCMK__XML_NODE_PRIVATE_MAGIC; node->_private = nodepriv; - pcmk__set_xml_flags(nodepriv, pcmk__xf_dirty|pcmk__xf_created); + if (tracking) { + pcmk__set_xml_flags(nodepriv, pcmk__xf_dirty|pcmk__xf_created); + } for (xmlAttr *iter = pcmk__xe_first_attr(node); iter != NULL; iter = iter->next) { @@ -333,7 +333,7 @@ new_private_data(xmlNode *node, void *user_data) return true; } - if (pcmk__xml_doc_all_flags_set(node->doc, pcmk__xf_tracking)) { + if (tracking) { pcmk__mark_xml_node_dirty(node); } return true; @@ -1459,6 +1459,7 @@ xml_calculate_changes(xmlNode *old_xml, xmlNode *new_xml) return); if (!pcmk__xml_doc_all_flags_set(new_xml->doc, pcmk__xf_tracking)) { + // Ensure tracking has a clean start pcmk__xml_commit_changes(new_xml->doc); pcmk__xml_doc_set_flags(new_xml->doc, pcmk__xf_tracking); } From e08c9015211099227c57e6e9a30fe4801951fb3c Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 13 Mar 2025 12:17:35 -0700 Subject: [PATCH 010/186] Doc: libcrmcommon: Document bug in xml_calculate_significant_changes() Signed-off-by: Reid Wahl --- lib/common/xml.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/common/xml.c b/lib/common/xml.c index 9aa0fb9db85..00c5cd61a22 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -1443,6 +1443,10 @@ void xml_calculate_significant_changes(xmlNode *old_xml, xmlNode *new_xml) { if (new_xml != NULL) { + /* BUG: If pcmk__xf_tracking is not set for new_xml when this function + * is called, then xml_calculate_changes() will unset the lazy flag + * because pcmk__xml_commit_changes() will be in the call chain. + */ pcmk__xml_doc_set_flags(new_xml->doc, pcmk__xf_lazy); } xml_calculate_changes(old_xml, new_xml); From 768d2711fe7ae24f7984decd639cf4afd25b9ee9 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 13 Mar 2025 12:22:18 -0700 Subject: [PATCH 011/186] Refactor: libcrmcommon: Rename pcmk__xf_lazy to pcmk__xf_ignore_attr_pos The meaning of "lazy" was not clear. Signed-off-by: Reid Wahl --- include/crm/common/xml_internal.h | 2 +- .../tests/xml_element/pcmk__xe_sort_attrs_test.c | 4 ++-- lib/common/xml.c | 13 +++++++------ 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/include/crm/common/xml_internal.h b/include/crm/common/xml_internal.h index f2aba5a1d0a..d6aaf0c6f5f 100644 --- a/include/crm/common/xml_internal.h +++ b/include/crm/common/xml_internal.h @@ -420,7 +420,7 @@ enum pcmk__xml_flags { pcmk__xf_acl_denied = (UINT32_C(1) << 13), //! Ignore attribute moves within an element (set for document only) - pcmk__xf_lazy = (UINT32_C(1) << 14), + pcmk__xf_ignore_attr_pos = (UINT32_C(1) << 14), }; void pcmk__xml_doc_set_flags(xmlDoc *doc, uint32_t flags); diff --git a/lib/common/tests/xml_element/pcmk__xe_sort_attrs_test.c b/lib/common/tests/xml_element/pcmk__xe_sort_attrs_test.c index b5265b1d494..106d5bc34a4 100644 --- a/lib/common/tests/xml_element/pcmk__xe_sort_attrs_test.c +++ b/lib/common/tests/xml_element/pcmk__xe_sort_attrs_test.c @@ -137,7 +137,7 @@ already_sorted(void **state) xml_node_private_t *nodepriv = attr->_private; if (nodepriv != NULL) { - pcmk__set_xml_flags(nodepriv, pcmk__xf_lazy); + pcmk__set_xml_flags(nodepriv, pcmk__xf_ignore_attr_pos); } } @@ -171,7 +171,7 @@ need_sort(void **state) xml_node_private_t *nodepriv = attr->_private; if (nodepriv != NULL) { - pcmk__set_xml_flags(nodepriv, pcmk__xf_lazy); + pcmk__set_xml_flags(nodepriv, pcmk__xf_ignore_attr_pos); } } diff --git a/lib/common/xml.c b/lib/common/xml.c index 00c5cd61a22..f45684cf0f8 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -1241,11 +1241,11 @@ xml_diff_old_attrs(xmlNode *old_xml, xmlNode *new_xml) } else if ((old_pos != new_pos) && !pcmk__xml_doc_all_flags_set(new_xml->doc, - pcmk__xf_lazy + pcmk__xf_ignore_attr_pos |pcmk__xf_tracking)) { /* pcmk__xf_tracking is always set by xml_calculate_changes() - * before this function is called, so only the pcmk__xf_lazy - * check is truly relevant. + * before this function is called, so only the + * pcmk__xf_ignore_attr_pos check is truly relevant. */ mark_attr_moved(new_xml, (const char *) old_xml->name, old_attr, new_attr, old_pos, new_pos); @@ -1444,10 +1444,11 @@ xml_calculate_significant_changes(xmlNode *old_xml, xmlNode *new_xml) { if (new_xml != NULL) { /* BUG: If pcmk__xf_tracking is not set for new_xml when this function - * is called, then xml_calculate_changes() will unset the lazy flag - * because pcmk__xml_commit_changes() will be in the call chain. + * is called, then xml_calculate_changes() will unset + * pcmk__xf_ignore_attr_pos because pcmk__xml_commit_changes() will be + * in the call chain. */ - pcmk__xml_doc_set_flags(new_xml->doc, pcmk__xf_lazy); + pcmk__xml_doc_set_flags(new_xml->doc, pcmk__xf_ignore_attr_pos); } xml_calculate_changes(old_xml, new_xml); } From 61ad92b2f2b1c50527a920ab3f03ace525bf49a8 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Sat, 15 Mar 2025 15:49:13 -0700 Subject: [PATCH 012/186] Refactor: libcrmcommon: Make pcmk__xml_match() static Also rename to match_xml() and drop exact argument, which is always true. Signed-off-by: Reid Wahl --- lib/common/crmcommon_private.h | 4 ---- lib/common/xml.c | 13 ++++++------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/lib/common/crmcommon_private.h b/lib/common/crmcommon_private.h index 00948c7057f..4a71b5c5302 100644 --- a/lib/common/crmcommon_private.h +++ b/lib/common/crmcommon_private.h @@ -135,10 +135,6 @@ xmlDoc *pcmk__xml_new_doc(void); G_GNUC_INTERNAL int pcmk__xml_position(const xmlNode *xml, enum pcmk__xml_flags ignore_if_set); -G_GNUC_INTERNAL -xmlNode *pcmk__xml_match(const xmlNode *haystack, const xmlNode *needle, - bool exact); - G_GNUC_INTERNAL xmlNode *pcmk__xc_match(const xmlNode *root, const xmlNode *search_comment, bool exact); diff --git a/lib/common/xml.c b/lib/common/xml.c index f45684cf0f8..27f4c038d4e 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -493,15 +493,14 @@ pcmk__xml_commit_changes(xmlDoc *doc) * * \param[in] haystack XML whose children should be checked * \param[in] needle XML to match (comment content or element name and ID) - * \param[in] exact If true and needle is a comment, position must match */ -xmlNode * -pcmk__xml_match(const xmlNode *haystack, const xmlNode *needle, bool exact) +static xmlNode * +match_xml(const xmlNode *haystack, const xmlNode *needle) { CRM_CHECK(needle != NULL, return NULL); if (needle->type == XML_COMMENT_NODE) { - return pcmk__xc_match(haystack, needle, exact); + return pcmk__xc_match(haystack, needle, true); } else { const char *id = pcmk__xe_id(needle); @@ -1343,7 +1342,7 @@ mark_child_deleted(xmlNode *old_child, xmlNode *new_parent) free_xml_with_position(candidate, pcmk__xml_position(old_child, pcmk__xf_skip)); - if (pcmk__xml_match(new_parent, old_child, true) == NULL) { + if (match_xml(new_parent, old_child) == NULL) { pcmk__set_xml_flags((xml_node_private_t *) (old_child->_private), pcmk__xf_skip); } @@ -1400,7 +1399,7 @@ mark_xml_changes(xmlNode *old_xml, xmlNode *new_xml, bool check_top) for (old_child = pcmk__xml_first_child(old_xml); old_child != NULL; old_child = pcmk__xml_next(old_child)) { - new_child = pcmk__xml_match(new_xml, old_child, true); + new_child = match_xml(new_xml, old_child); if (new_child != NULL) { mark_xml_changes(old_child, new_child, true); @@ -1415,7 +1414,7 @@ mark_xml_changes(xmlNode *old_xml, xmlNode *new_xml, bool check_top) while (new_child != NULL) { xmlNode *next = pcmk__xml_next(new_child); - old_child = pcmk__xml_match(old_xml, new_child, true); + old_child = match_xml(old_xml, new_child); if (old_child == NULL) { // This is a newly created child From bb566e7a5bda7be0938807330220724c69232961 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Sat, 15 Mar 2025 16:00:32 -0700 Subject: [PATCH 013/186] Refactor: libcrmcommon: Drop redundant check from mark_child_deleted() mark_child_deleted() has only one caller (mark_xml_changes()). By the time we reach this point, we can be sure that match_xml(new_parent, old_child) will return NULL, because we checked it in the caller. Signed-off-by: Reid Wahl --- lib/common/xml.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/common/xml.c b/lib/common/xml.c index 27f4c038d4e..de1d180bdb1 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -1342,10 +1342,8 @@ mark_child_deleted(xmlNode *old_child, xmlNode *new_parent) free_xml_with_position(candidate, pcmk__xml_position(old_child, pcmk__xf_skip)); - if (match_xml(new_parent, old_child) == NULL) { - pcmk__set_xml_flags((xml_node_private_t *) (old_child->_private), - pcmk__xf_skip); - } + pcmk__set_xml_flags((xml_node_private_t *) old_child->_private, + pcmk__xf_skip); } static void From 76fd2895bd7ce17995fab4677ff1faa34e6629e9 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 13 Mar 2025 20:26:01 -0700 Subject: [PATCH 014/186] Refactor: libcrmcommon: Some best practices in mark_xml_changes() Improve variable names and scope, improve comments, use parallel structure (using for-loop and checking non-NULL condition first), assert on error. Signed-off-by: Reid Wahl --- lib/common/xml.c | 45 ++++++++++++++++++++++----------------------- 1 file changed, 22 insertions(+), 23 deletions(-) diff --git a/lib/common/xml.c b/lib/common/xml.c index de1d180bdb1..242b2d7421d 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -1371,11 +1371,10 @@ mark_child_moved(xmlNode *old_child, xmlNode *new_parent, xmlNode *new_child, static void mark_xml_changes(xmlNode *old_xml, xmlNode *new_xml, bool check_top) { - xmlNode *old_child = NULL; - xmlNode *new_child = NULL; xml_node_private_t *nodepriv = NULL; CRM_CHECK(new_xml != NULL, return); + if (old_xml == NULL) { mark_xml_tree_dirty_created(new_xml); pcmk__apply_creation_acl(new_xml, check_top); @@ -1385,19 +1384,19 @@ mark_xml_changes(xmlNode *old_xml, xmlNode *new_xml, bool check_top) nodepriv = new_xml->_private; CRM_CHECK(nodepriv != NULL, return); - if(nodepriv->flags & pcmk__xf_processed) { - /* Avoid re-comparing nodes */ + if (pcmk_is_set(nodepriv->flags, pcmk__xf_processed)) { + // Avoid re-comparing nodes return; } pcmk__set_xml_flags(nodepriv, pcmk__xf_processed); xml_diff_attrs(old_xml, new_xml); - // Check for differences in the original children - for (old_child = pcmk__xml_first_child(old_xml); old_child != NULL; + // Check for differences compared to the original children + for (xmlNode *old_child = pcmk__xml_first_child(old_xml); old_child != NULL; old_child = pcmk__xml_next(old_child)) { - new_child = match_xml(new_xml, old_child); + xmlNode *new_child = match_xml(new_xml, old_child); if (new_child != NULL) { mark_xml_changes(old_child, new_child, true); @@ -1408,31 +1407,31 @@ mark_xml_changes(xmlNode *old_xml, xmlNode *new_xml, bool check_top) } // Check for moved or created children - new_child = pcmk__xml_first_child(new_xml); - while (new_child != NULL) { - xmlNode *next = pcmk__xml_next(new_child); + for (xmlNode *new_child = pcmk__xml_first_child(new_xml), + *next = pcmk__xml_next(new_child); + new_child != NULL; + new_child = next, next = pcmk__xml_next(new_child)) { + + xmlNode *old_child = match_xml(old_xml, new_child); - old_child = match_xml(old_xml, new_child); + if (old_child != NULL) { + // Check for movement; we already marked other changes + int old_pos = pcmk__xml_position(old_child, pcmk__xf_skip); + int new_pos = pcmk__xml_position(new_child, pcmk__xf_skip); - if (old_child == NULL) { + if (old_pos != new_pos) { + mark_child_moved(old_child, new_xml, new_child, old_pos, + new_pos); + } + + } else { // This is a newly created child nodepriv = new_child->_private; pcmk__set_xml_flags(nodepriv, pcmk__xf_skip); // May free new_child mark_xml_changes(old_child, new_child, true); - - } else { - /* Check for movement, we already checked for differences */ - int p_new = pcmk__xml_position(new_child, pcmk__xf_skip); - int p_old = pcmk__xml_position(old_child, pcmk__xf_skip); - - if(p_old != p_new) { - mark_child_moved(old_child, new_xml, new_child, p_old, p_new); - } } - - new_child = next; } } From afb21dd92af4f7210c08f910c320178a6177c660 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Fri, 14 Mar 2025 19:19:22 -0700 Subject: [PATCH 015/186] Refactor: libcrmcommon: Drop old_xml NULL case from mark_xml_changes() We can easily bring the two lines of code down into the bottom for-loop. The only callers are xml_calculate_changes() (which ensures old_xml is not NULL) and the recursive calls. So we know that the top-level call will never have old_xml as NULL. This also allows us to drop the check_top argument. Signed-off-by: Reid Wahl --- lib/common/xml.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/lib/common/xml.c b/lib/common/xml.c index 242b2d7421d..0eedd16d675 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -1369,18 +1369,12 @@ mark_child_moved(xmlNode *old_child, xmlNode *new_parent, xmlNode *new_child, // Given original and new XML, mark new XML portions that have changed static void -mark_xml_changes(xmlNode *old_xml, xmlNode *new_xml, bool check_top) +mark_xml_changes(xmlNode *old_xml, xmlNode *new_xml) { xml_node_private_t *nodepriv = NULL; CRM_CHECK(new_xml != NULL, return); - if (old_xml == NULL) { - mark_xml_tree_dirty_created(new_xml); - pcmk__apply_creation_acl(new_xml, check_top); - return; - } - nodepriv = new_xml->_private; CRM_CHECK(nodepriv != NULL, return); @@ -1399,7 +1393,7 @@ mark_xml_changes(xmlNode *old_xml, xmlNode *new_xml, bool check_top) xmlNode *new_child = match_xml(new_xml, old_child); if (new_child != NULL) { - mark_xml_changes(old_child, new_child, true); + mark_xml_changes(old_child, new_child); } else { mark_child_deleted(old_child, new_xml); @@ -1428,9 +1422,10 @@ mark_xml_changes(xmlNode *old_xml, xmlNode *new_xml, bool check_top) // This is a newly created child nodepriv = new_child->_private; pcmk__set_xml_flags(nodepriv, pcmk__xf_skip); + mark_xml_tree_dirty_created(new_child); - // May free new_child - mark_xml_changes(old_child, new_child, true); + // Check whether creation was allowed; may free new_child + pcmk__apply_creation_acl(new_child, true); } } } @@ -1465,7 +1460,7 @@ xml_calculate_changes(xmlNode *old_xml, xmlNode *new_xml) pcmk__xml_doc_set_flags(new_xml->doc, pcmk__xf_tracking); } - mark_xml_changes(old_xml, new_xml, FALSE); + mark_xml_changes(old_xml, new_xml); } /*! From 40f582836f2c5db5820efb5c019f0f318366bd58 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Sat, 15 Mar 2025 20:19:35 -0700 Subject: [PATCH 016/186] Refactor: libcrmcommon: Best practices in pcmk__xc_match() And rename to pcmk__xc_match_child() Signed-off-by: Reid Wahl --- lib/common/crmcommon_private.h | 4 +-- lib/common/xml.c | 2 +- lib/common/xml_comment.c | 59 +++++++++++++++++++++------------- 3 files changed, 40 insertions(+), 25 deletions(-) diff --git a/lib/common/crmcommon_private.h b/lib/common/crmcommon_private.h index 4a71b5c5302..a992264cddd 100644 --- a/lib/common/crmcommon_private.h +++ b/lib/common/crmcommon_private.h @@ -136,8 +136,8 @@ G_GNUC_INTERNAL int pcmk__xml_position(const xmlNode *xml, enum pcmk__xml_flags ignore_if_set); G_GNUC_INTERNAL -xmlNode *pcmk__xc_match(const xmlNode *root, const xmlNode *search_comment, - bool exact); +xmlNode *pcmk__xc_match_child(const xmlNode *parent, const xmlNode *search, + bool exact); G_GNUC_INTERNAL void pcmk__xc_update(xmlNode *parent, xmlNode *target, xmlNode *update); diff --git a/lib/common/xml.c b/lib/common/xml.c index 0eedd16d675..de2e480d09b 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -500,7 +500,7 @@ match_xml(const xmlNode *haystack, const xmlNode *needle) CRM_CHECK(needle != NULL, return NULL); if (needle->type == XML_COMMENT_NODE) { - return pcmk__xc_match(haystack, needle, true); + return pcmk__xc_match_child(haystack, needle, true); } else { const char *id = pcmk__xe_id(needle); diff --git a/lib/common/xml_comment.c b/lib/common/xml_comment.c index 2bc2848ef69..16c70d0167d 100644 --- a/lib/common/xml_comment.c +++ b/lib/common/xml_comment.c @@ -9,6 +9,7 @@ #include +#include // bool, false #include // NULL #include // xmlDoc, xmlNode, etc. @@ -41,43 +42,57 @@ pcmk__xc_create(xmlDoc *doc, const char *content) /*! * \internal - * \brief Find a comment with matching content in specified XML + * \brief Find a comment with matching content among children of specified XML * - * \param[in] root XML to search - * \param[in] search_comment Comment whose content should be searched for - * \param[in] exact If true, comment must also be at same position + * \param[in] parent XML whose children to search + * \param[in] search Comment whose content should be searched for + * \param[in] exact If true, comment must also be at same position + * + * \return Matching comment, or \c NULL if no match is found */ xmlNode * -pcmk__xc_match(const xmlNode *root, const xmlNode *search_comment, bool exact) +pcmk__xc_match_child(const xmlNode *parent, const xmlNode *search, bool exact) { - xmlNode *a_child = NULL; - int search_offset = pcmk__xml_position(search_comment, pcmk__xf_skip); + int search_pos = 0; + + pcmk__assert((search != NULL) && (search->type == XML_COMMENT_NODE)); - CRM_CHECK(search_comment->type == XML_COMMENT_NODE, return NULL); + search_pos = pcmk__xml_position(search, pcmk__xf_skip); + + for (xmlNode *child = pcmk__xml_first_child(parent); child != NULL; + child = pcmk__xml_next(child)) { + + if (child->type != XML_COMMENT_NODE) { + continue; + } - for (a_child = pcmk__xml_first_child(root); a_child != NULL; - a_child = pcmk__xml_next(a_child)) { if (exact) { - int offset = pcmk__xml_position(a_child, pcmk__xf_skip); - xml_node_private_t *nodepriv = a_child->_private; + int pos = 0; + xml_node_private_t *nodepriv = child->_private; - if (offset < search_offset) { + if (pcmk_is_set(nodepriv->flags, pcmk__xf_skip)) { continue; - - } else if (offset > search_offset) { - return NULL; } - if (pcmk_is_set(nodepriv->flags, pcmk__xf_skip)) { + pos = pcmk__xml_position(child, pcmk__xf_skip); + if (pos < search_pos) { + // We have not yet reached the matching position continue; } + if (pos > search_pos) { + // We have already passed the matching position + return NULL; + } + // Position matches } - if (a_child->type == XML_COMMENT_NODE - && pcmk__str_eq((const char *)a_child->content, (const char *)search_comment->content, pcmk__str_casei)) { - return a_child; + if (pcmk__str_eq((const char *) child->content, + (const char *) search->content, pcmk__str_casei)) { + return child; + } - } else if (exact) { + if (exact) { + // We won't find another comment at the same position return NULL; } } @@ -103,7 +118,7 @@ pcmk__xc_update(xmlNode *parent, xmlNode *target, xmlNode *update) CRM_CHECK(update->type == XML_COMMENT_NODE, return); if (target == NULL) { - target = pcmk__xc_match(parent, update, false); + target = pcmk__xc_match_child(parent, update, false); } if (target == NULL) { From 63c58b11f512aeafca95bb307aaef1b2e7f53b55 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Sun, 16 Mar 2025 12:40:41 -0700 Subject: [PATCH 017/186] Refactor: libcrmcommon: Functionize matching XML comment content This will be used soon in xml.c. Signed-off-by: Reid Wahl --- lib/common/crmcommon_private.h | 3 +++ lib/common/xml_comment.c | 23 +++++++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/lib/common/crmcommon_private.h b/lib/common/crmcommon_private.h index a992264cddd..869c552613d 100644 --- a/lib/common/crmcommon_private.h +++ b/lib/common/crmcommon_private.h @@ -135,6 +135,9 @@ xmlDoc *pcmk__xml_new_doc(void); G_GNUC_INTERNAL int pcmk__xml_position(const xmlNode *xml, enum pcmk__xml_flags ignore_if_set); +G_GNUC_INTERNAL +bool pcmk__xc_matches(const xmlNode *comment1, const xmlNode *comment2); + G_GNUC_INTERNAL xmlNode *pcmk__xc_match_child(const xmlNode *parent, const xmlNode *search, bool exact); diff --git a/lib/common/xml_comment.c b/lib/common/xml_comment.c index 16c70d0167d..a65403f98c0 100644 --- a/lib/common/xml_comment.c +++ b/lib/common/xml_comment.c @@ -40,6 +40,26 @@ pcmk__xc_create(xmlDoc *doc, const char *content) return node; } +/*! + * \internal + * \brief Check whether two comments have matching content (case-insensitive) + * + * \param[in] comment1 First comment node to compare + * \param[in] comment2 Second comment node to compare + * + * \return \c true if \p comment1 and \p comment2 have matching content (by + * case-insensitive string comparison), or \c false otherwise + */ +bool +pcmk__xc_matches(const xmlNode *comment1, const xmlNode *comment2) +{ + pcmk__assert((comment1 != NULL) && (comment1->type == XML_COMMENT_NODE) + && (comment2 != NULL) && (comment2->type == XML_COMMENT_NODE)); + + return pcmk__str_eq((const char *) comment1->content, + (const char *) comment2->content, pcmk__str_casei); +} + /*! * \internal * \brief Find a comment with matching content among children of specified XML @@ -86,8 +106,7 @@ pcmk__xc_match_child(const xmlNode *parent, const xmlNode *search, bool exact) // Position matches } - if (pcmk__str_eq((const char *) child->content, - (const char *) search->content, pcmk__str_casei)) { + if (pcmk__xc_matches(child, search)) { return child; } From 5d7b74d0513a360ee7870cc35f50dfcb1e344f42 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Sat, 15 Mar 2025 16:53:57 -0700 Subject: [PATCH 018/186] Low: libcrmcommon: Fix XML matching when marking changes Note: the changes in the trace outputs demonstrate a bug in mark_child_deleted(). I'm not sure why it wasn't appearing before this fix, but the whole point of this is to be more thorough, after all. I'm leaving those incorrect outputs and fixing the mark_child_deleted() bug in a LATER commit, so that the effect is clearer. match_xml() didn't actually require an exact match. Element matching behavior depended on whether old XML or new XML was the "haystack". The signature was as follows, minus types: match_xml(haystack, needle) * If needle has an id attribute, then we look for a child of haystack with the same name (element type) that has an id attribute with the same value. * If needle does not have an id attribute, then we look for a child of haystack with the same name. We ignore the id attribute, if set. This means the match is asymmetric. Suppose we have the following old_xml: and the following new_xml: Further suppose that old_child and new_child refer to the child elements in the respective trees above. Then: * match_xml(new_xml, old_child) returns NULL, because old_child has an id and there is no child of new_xml with name "child" and the same id. * match_xml(old_xml, new_child) returns old_child, because new_child has no id, so it is free to match any child of old_xml named "child". Note that things become even more complicated if there are multiple children with the same name in old_xml, new_xml, or both. Especially if some of them move around: match_xml() returns the FIRST matching child. This may or may not make a practical difference. I wouldn't be surprised if some ACL scenarios break though, for example. Now, the matching is symmetric. We iterate over all old children and new_children, looking for matching comments and for elements with matching names and IDs. We mark any matches in the private data of both matching nodes. Then we iterate again, looking for elements with matching names. We can consider an ID change as an attribute change. Signed-off-by: Reid Wahl --- cts/cli/regression.acls.exp | 34 +++++ lib/common/crmcommon_private.h | 1 + lib/common/xml.c | 262 +++++++++++++++++++++++++++------ 3 files changed, 254 insertions(+), 43 deletions(-) diff --git a/cts/cli/regression.acls.exp b/cts/cli/regression.acls.exp index 8c263309e40..13954f35a63 100644 --- a/cts/cli/regression.acls.exp +++ b/cts/cli/regression.acls.exp @@ -1437,6 +1437,40 @@ Set 'dummy' option: id=dummy-meta_attributes-target-role set=dummy-meta_attribut =#=#=#= Begin test: niceguy: Replace - remove acls =#=#=#= pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib[@epoch] pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls +pcmk__apply_creation_acl trace: Creation of scaffolding with id="" is implicitly allowed +pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_target[@id='l33t-haxor'] +pcmk__apply_creation_acl trace: ACLs disallow creation of with id="l33t-haxor" +pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_target[@id='niceguy'] +pcmk__apply_creation_acl trace: ACLs disallow creation of with id="niceguy" +pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_target[@id='bob'] +pcmk__apply_creation_acl trace: ACLs disallow creation of with id="bob" +pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_target[@id='joe'] +pcmk__apply_creation_acl trace: ACLs disallow creation of with id="joe" +pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_target[@id='mike'] +pcmk__apply_creation_acl trace: ACLs disallow creation of with id="mike" +pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_target[@id='chris'] +pcmk__apply_creation_acl trace: ACLs disallow creation of with id="chris" +pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_role[@id='nothing'] +pcmk__apply_creation_acl trace: ACLs disallow creation of with id="nothing" +pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_role[@id='observer'] +pcmk__apply_creation_acl trace: ACLs disallow creation of with id="observer" +pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_role[@id='admin'] +pcmk__apply_creation_acl trace: ACLs disallow creation of with id="admin" +pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_role[@id='super_user'] +pcmk__apply_creation_acl trace: ACLs disallow creation of with id="super_user" +pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_role[@id='rsc_writer'] +pcmk__apply_creation_acl trace: ACLs disallow creation of with id="rsc_writer" +pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_role[@id='rsc_denied'] +pcmk__apply_creation_acl trace: ACLs disallow creation of with id="rsc_denied" +pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_role[@id='badidea-role'] +pcmk__apply_creation_acl trace: ACLs disallow creation of with id="badidea-role" +pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_target[@id='badidea'] +pcmk__apply_creation_acl trace: ACLs disallow creation of with id="badidea" +pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_role[@id='betteridea-role'] +pcmk__apply_creation_acl trace: ACLs disallow creation of with id="betteridea-role" +pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_target[@id='betteridea'] +pcmk__apply_creation_acl trace: ACLs disallow creation of with id="betteridea" +pcmk__apply_creation_acl trace: Creation of scaffolding with id="" is implicitly allowed Call failed: Permission denied =#=#=#= End test: niceguy: Replace - remove acls - Insufficient privileges (4) =#=#=#= * Passed: cibadmin - niceguy: Replace - remove acls diff --git a/lib/common/crmcommon_private.h b/lib/common/crmcommon_private.h index 869c552613d..140756820c6 100644 --- a/lib/common/crmcommon_private.h +++ b/lib/common/crmcommon_private.h @@ -71,6 +71,7 @@ typedef struct pcmk__deleted_xml_s { typedef struct xml_node_private_s { uint32_t check; //!< Magic number for checking integrity uint32_t flags; //!< Group of enum pcmk__xml_flags + xmlNode *match; //!< Pointer to matching node (defined by caller) } xml_node_private_t; /*! diff --git a/lib/common/xml.c b/lib/common/xml.c index de2e480d09b..14c93259ba4 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -487,30 +487,6 @@ pcmk__xml_commit_changes(xmlDoc *doc) docpriv->flags = pcmk__xf_none; } -/*! - * \internal - * \brief Find first child XML node matching another given XML node - * - * \param[in] haystack XML whose children should be checked - * \param[in] needle XML to match (comment content or element name and ID) - */ -static xmlNode * -match_xml(const xmlNode *haystack, const xmlNode *needle) -{ - CRM_CHECK(needle != NULL, return NULL); - - if (needle->type == XML_COMMENT_NODE) { - return pcmk__xc_match_child(haystack, needle, true); - - } else { - const char *id = pcmk__xe_id(needle); - const char *attr = (id == NULL)? NULL : PCMK_XA_ID; - - return pcmk__xe_first_child(haystack, (const char *) needle->name, attr, - id); - } -} - /*! * \internal * \brief Create a new XML document @@ -1367,16 +1343,180 @@ mark_child_moved(xmlNode *old_child, xmlNode *new_parent, xmlNode *new_child, pcmk__set_xml_flags(nodepriv, pcmk__xf_skip); } +/*! + * \internal + * \brief Check whether a new XML child comment matches an old XML child comment + * + * Two comments match if they have the same position among their siblings and + * the same contents. + * + * If \p new_comment has the \c pcmk__xf_skip flag set, then it is automatically + * considered not to match. + * + * \param[in] old_comment Old XML child element + * \param[in] new_comment New XML child element + * + * \retval \c true if \p new_comment matches \p old_comment + * \retval \c false otherwise + */ +static bool +new_comment_matches(const xmlNode *old_comment, const xmlNode *new_comment) +{ + xml_node_private_t *nodepriv = new_comment->_private; + + if (pcmk_is_set(nodepriv->flags, pcmk__xf_skip)) { + /* @TODO Should we also return false if old_comment has pcmk__xf_skip + * set? This preserves existing behavior at time of writing. + */ + return false; + } + if (pcmk__xml_position(old_comment, pcmk__xf_skip) + != pcmk__xml_position(new_comment, pcmk__xf_skip)) { + return false; + } + return pcmk__xc_matches(old_comment, new_comment); +} + +/*! + * \internal + * \brief Check whether a new XML child element matches an old XML child element + * + * Two elements match if they have the same name and, if \p match_ids is + * \c true, the same ID. (Both IDs can be \c NULL in this case.) + * + * \param[in] old_element Old XML child element + * \param[in] new_element New XML child element + * \param[in] match_ids If \c true, require IDs to match (or both to be + * \c NULL) + * + * \retval \c true if \p new_element matches \p old_element + * \retval \c false otherwise + */ +static bool +new_element_matches(const xmlNode *old_element, const xmlNode *new_element, + bool match_ids) +{ + if (!pcmk__xe_is(new_element, (const char *) old_element->name)) { + return false; + } + return !match_ids + || pcmk__str_eq(pcmk__xe_id(old_element), pcmk__xe_id(new_element), + pcmk__str_none); +} + +/*! + * \internal + * \brief Check whether a new XML child node matches an old XML child node + * + * Node types must be the same in order to match. + * + * For comments, a match is a comment at the same position with the same + * content. + * + * For elements, a match is an element with the same name and, if required, the + * same ID. (Both IDs can be \c NULL in this case.) + * + * For other node types, there is no match. + * + * \param[in] old_child Child of old XML + * \param[in] new_child Child of new XML + * \param[in] match_ids If \c true, require element IDs to match (or both to be + * \c NULL) + * + * \retval \c true if \p new_child matches \p old_child + * \retval \c false otherwise + */ +static bool +new_child_matches(const xmlNode *old_child, const xmlNode *new_child, + bool match_ids) +{ + if (old_child->type != new_child->type) { + return false; + } + + switch (old_child->type) { + case XML_COMMENT_NODE: + return new_comment_matches(old_child, new_child); + case XML_ELEMENT_NODE: + return new_element_matches(old_child, new_child, match_ids); + default: + return false; + } +} + +/*! + * \internal + * \brief Find matching XML node pairs between old and new XML's children + * + * A node that is part of a matching pair has its _private:match member + * set to the matching node. + * + * \param[in,out] old_xml Old XML + * \param[in,out] new_xml New XML + * \param[in] comments_ids If \c true, match comments and require element + * IDs to match; otherwise, skip comments and match + * elements by name only + */ +static void +find_matching_children(xmlNode *old_xml, xmlNode *new_xml, bool comments_ids) +{ + for (xmlNode *old_child = pcmk__xml_first_child(old_xml); old_child != NULL; + old_child = pcmk__xml_next(old_child)) { + + xml_node_private_t *old_nodepriv = old_child->_private; + + if ((old_nodepriv == NULL) || (old_nodepriv->match != NULL)) { + // Can't process, or we already found a match for this old child + continue; + } + if (!comments_ids && (old_child->type != XML_ELEMENT_NODE)) { + /* We only match comments and elements, and we're not matching + * comments during this call + */ + continue; + } + + for (xmlNode *new_child = pcmk__xml_first_child(new_xml); + new_child != NULL; new_child = pcmk__xml_next(new_child)) { + + xml_node_private_t *new_nodepriv = new_child->_private; + + if ((new_nodepriv == NULL) || (new_nodepriv->match != NULL)) { + /* Can't process, or this new child already matched some old + * child + */ + continue; + } + + if (new_child_matches(old_child, new_child, comments_ids)) { + old_nodepriv->match = new_child; + new_nodepriv->match = old_child; + break; + } + } + } +} + // Given original and new XML, mark new XML portions that have changed static void mark_xml_changes(xmlNode *old_xml, xmlNode *new_xml) { + /* This function may set the xml_node_private_t:match member on children of + * old_xml and new_xml, but it clears that member before returning. + * + * @TODO Ensure we handle (for example, by copying) or reject user-created + * XML that is missing xml_node_private_t at top level or in any children. + * Similarly, check handling of node types for which we don't create private + * data. For now, we'll skip them in the loops below. + */ xml_node_private_t *nodepriv = NULL; - CRM_CHECK(new_xml != NULL, return); + CRM_CHECK((old_xml != NULL) && (new_xml != NULL), return); + if ((old_xml->_private == NULL) || (new_xml->_private == NULL)) { + return; + } nodepriv = new_xml->_private; - CRM_CHECK(nodepriv != NULL, return); if (pcmk_is_set(nodepriv->flags, pcmk__xf_processed)) { // Avoid re-comparing nodes @@ -1386,30 +1526,66 @@ mark_xml_changes(xmlNode *old_xml, xmlNode *new_xml) xml_diff_attrs(old_xml, new_xml); - // Check for differences compared to the original children + find_matching_children(old_xml, new_xml, true); + find_matching_children(old_xml, new_xml, false); + + // Process matches (changed children) and deletions for (xmlNode *old_child = pcmk__xml_first_child(old_xml); old_child != NULL; old_child = pcmk__xml_next(old_child)) { - xmlNode *new_child = match_xml(new_xml, old_child); + xmlNode *new_child = NULL; - if (new_child != NULL) { - mark_xml_changes(old_child, new_child); + nodepriv = old_child->_private; + if (nodepriv == NULL) { + continue; + } - } else { + if (nodepriv->match == NULL) { + // No match in new XML means the old child was deleted mark_child_deleted(old_child, new_xml); + continue; } + + /* Fetch the match and clear old_child->_private's match member. + * new_child->_private's match member is handled in the new_xml loop. + */ + new_child = nodepriv->match; + nodepriv->match = NULL; + + pcmk__assert(old_child->type == new_child->type); + + if (old_child->type == XML_COMMENT_NODE) { + // Comments match only if their positions and contents match + continue; + } + + mark_xml_changes(old_child, new_child); } - // Check for moved or created children + /* Mark unmatched new children as created, and mark matched new children as + * moved if their positions changed. Grab the next new child in advance, + * since new_child may get freed in the loop body. + */ for (xmlNode *new_child = pcmk__xml_first_child(new_xml), *next = pcmk__xml_next(new_child); new_child != NULL; new_child = next, next = pcmk__xml_next(new_child)) { - xmlNode *old_child = match_xml(old_xml, new_child); + nodepriv = new_child->_private; + if (nodepriv == NULL) { + continue; + } - if (old_child != NULL) { - // Check for movement; we already marked other changes + if (nodepriv->match != NULL) { + /* Fetch the match and clear new_child->_private's match member. Any + * changes were marked in the old_xml loop. Mark the move. + * + * We might be able to mark the move earlier, when we mark changes + * for matches in the old_xml loop, consolidating both actions. We'd + * have to think about whether the timing of setting the + * pcmk__xf_skip flag makes any difference. + */ + xmlNode *old_child = nodepriv->match; int old_pos = pcmk__xml_position(old_child, pcmk__xf_skip); int new_pos = pcmk__xml_position(new_child, pcmk__xf_skip); @@ -1417,16 +1593,16 @@ mark_xml_changes(xmlNode *old_xml, xmlNode *new_xml) mark_child_moved(old_child, new_xml, new_child, old_pos, new_pos); } + nodepriv->match = NULL; + continue; + } - } else { - // This is a newly created child - nodepriv = new_child->_private; - pcmk__set_xml_flags(nodepriv, pcmk__xf_skip); - mark_xml_tree_dirty_created(new_child); + // No match in old XML means the new child is newly created + pcmk__set_xml_flags(nodepriv, pcmk__xf_skip); + mark_xml_tree_dirty_created(new_child); - // Check whether creation was allowed; may free new_child - pcmk__apply_creation_acl(new_child, true); - } + // Check whether creation was allowed (may free new_child) + pcmk__apply_creation_acl(new_child, true); } } From 37c27cf1858b8aaeaeb74e4e5e39af1118488544 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 26 Mar 2025 00:59:46 -0700 Subject: [PATCH 019/186] Low: libcrmcommon: Always free temp node in mark_child_deleted() This takes the ACL regression test trace outputs back to the state before the previous commit. The issue was that when candidate (the temp node) couldn't be freed due to ACL denial, it remained in the new XML and was processed as a newly created node (recursively). Signed-off-by: Reid Wahl --- cts/cli/regression.acls.exp | 34 ------------------- lib/common/xml.c | 66 ++++++++++++++++++++++++------------- 2 files changed, 43 insertions(+), 57 deletions(-) diff --git a/cts/cli/regression.acls.exp b/cts/cli/regression.acls.exp index 13954f35a63..8c263309e40 100644 --- a/cts/cli/regression.acls.exp +++ b/cts/cli/regression.acls.exp @@ -1437,40 +1437,6 @@ Set 'dummy' option: id=dummy-meta_attributes-target-role set=dummy-meta_attribut =#=#=#= Begin test: niceguy: Replace - remove acls =#=#=#= pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib[@epoch] pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls -pcmk__apply_creation_acl trace: Creation of scaffolding with id="" is implicitly allowed -pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_target[@id='l33t-haxor'] -pcmk__apply_creation_acl trace: ACLs disallow creation of with id="l33t-haxor" -pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_target[@id='niceguy'] -pcmk__apply_creation_acl trace: ACLs disallow creation of with id="niceguy" -pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_target[@id='bob'] -pcmk__apply_creation_acl trace: ACLs disallow creation of with id="bob" -pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_target[@id='joe'] -pcmk__apply_creation_acl trace: ACLs disallow creation of with id="joe" -pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_target[@id='mike'] -pcmk__apply_creation_acl trace: ACLs disallow creation of with id="mike" -pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_target[@id='chris'] -pcmk__apply_creation_acl trace: ACLs disallow creation of with id="chris" -pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_role[@id='nothing'] -pcmk__apply_creation_acl trace: ACLs disallow creation of with id="nothing" -pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_role[@id='observer'] -pcmk__apply_creation_acl trace: ACLs disallow creation of with id="observer" -pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_role[@id='admin'] -pcmk__apply_creation_acl trace: ACLs disallow creation of with id="admin" -pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_role[@id='super_user'] -pcmk__apply_creation_acl trace: ACLs disallow creation of with id="super_user" -pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_role[@id='rsc_writer'] -pcmk__apply_creation_acl trace: ACLs disallow creation of with id="rsc_writer" -pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_role[@id='rsc_denied'] -pcmk__apply_creation_acl trace: ACLs disallow creation of with id="rsc_denied" -pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_role[@id='badidea-role'] -pcmk__apply_creation_acl trace: ACLs disallow creation of with id="badidea-role" -pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_target[@id='badidea'] -pcmk__apply_creation_acl trace: ACLs disallow creation of with id="badidea" -pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_role[@id='betteridea-role'] -pcmk__apply_creation_acl trace: ACLs disallow creation of with id="betteridea-role" -pcmk__check_acl trace: Default ACL denies user 'niceguy' read/write access to /cib/configuration/acls/acl_target[@id='betteridea'] -pcmk__apply_creation_acl trace: ACLs disallow creation of with id="betteridea" -pcmk__apply_creation_acl trace: Creation of scaffolding with id="" is implicitly allowed Call failed: Permission denied =#=#=#= End test: niceguy: Replace - remove acls - Insufficient privileges (4) =#=#=#= * Passed: cibadmin - niceguy: Replace - remove acls diff --git a/lib/common/xml.c b/lib/common/xml.c index 14c93259ba4..879727bac4c 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -731,15 +731,17 @@ pcmk__xml_free_node(xmlNode *xml) * \param[in] position Position of \p node among its siblings for change * tracking (negative to calculate automatically if * needed) + * + * \return Standard Pacemaker return code */ -static void +static int free_xml_with_position(xmlNode *node, int position) { xmlDoc *doc = NULL; xml_node_private_t *nodepriv = NULL; if (node == NULL) { - return; + return pcmk_rc_ok; } doc = node->doc; nodepriv = node->_private; @@ -749,19 +751,23 @@ free_xml_with_position(xmlNode *node, int position) * free the root element without write permission. */ pcmk__xml_free_doc(doc); - return; + return pcmk_rc_ok; } if (!pcmk__check_acl(node, NULL, pcmk__xf_acl_write)) { - GString *xpath = NULL; - - pcmk__if_tracing({}, return); - xpath = pcmk__element_xpath(node); - qb_log_from_external_source(__func__, __FILE__, - "Cannot remove %s %x", LOG_TRACE, - __LINE__, 0, xpath->str, nodepriv->flags); - g_string_free(xpath, TRUE); - return; + pcmk__if_tracing( + { + GString *xpath = pcmk__element_xpath(node); + + qb_log_from_external_source(__func__, __FILE__, + "Cannot remove %s %x", LOG_TRACE, + __LINE__, 0, xpath->str, + nodepriv->flags); + g_string_free(xpath, TRUE); + }, + {} + ); + return EACCES; } if (pcmk__xml_doc_all_flags_set(node->doc, pcmk__xf_tracking) @@ -796,6 +802,7 @@ free_xml_with_position(xmlNode *node, int position) } } pcmk__xml_free_node(node); + return pcmk_rc_ok; } /*! @@ -1292,31 +1299,44 @@ xml_diff_attrs(xmlNode *old_xml, xmlNode *new_xml) /*! * \internal - * \brief Add an XML child element to a node, marked as deleted + * \brief Add a deleted object record for an old XML child if ACLs allow + * + * This is intended to be called for a child of an old XML element that is not + * present as a child of a new XML element. + * + * Add a temporary copy of the old child to the new XML. Then check whether ACLs + * would have allowed the deletion of that element. If so, add a deleted object + * record for it to the new XML's document, and set the \c pcmk__xf_skip flag on + * the old child. * - * When calculating XML changes, we need to know when a child element has been - * deleted. Add the child back to the new XML, so that we can check the removal - * against ACLs, and mark it as deleted for later removal after differences have - * been calculated. + * The temporary copy is removed before returning. The new XML and all of its + * ancestors will have the \c pcmk__xf_dirty flag set because of the creation, + * however. * - * \param[in,out] old_child Child element from original XML - * \param[in,out] new_parent New XML to add marked copy to + * \param[in,out] old_child Child of old XML + * \param[in,out] new_parent New XML that does not contain \p old_child */ static void mark_child_deleted(xmlNode *old_child, xmlNode *new_parent) { + int pos = pcmk__xml_position(old_child, pcmk__xf_skip); + // Re-create the child element so we can check ACLs xmlNode *candidate = pcmk__xml_copy(new_parent, old_child); // Clear flags on new child and its children pcmk__xml_tree_foreach(candidate, pcmk__xml_reset_node_flags, NULL); - // Check whether ACLs allow the deletion + // free_xml_with_position() will check whether ACLs allow the deletion pcmk__apply_acl(xmlDocGetRootElement(candidate->doc)); - // Remove the child again (which will track it in document's deleted_objs) - free_xml_with_position(candidate, - pcmk__xml_position(old_child, pcmk__xf_skip)); + /* Try to remove the child again (which will track it in document's + * deleted_objs on success) + */ + if (free_xml_with_position(candidate, pos) != pcmk_rc_ok) { + // ACLs denied deletion in free_xml_with_position. Free candidate here. + pcmk__xml_free_node(candidate); + } pcmk__set_xml_flags((xml_node_private_t *) old_child->_private, pcmk__xf_skip); From 8e3457f83422e66edca9d38d0c03d9a483f53598 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Sat, 15 Mar 2025 17:07:50 -0700 Subject: [PATCH 020/186] Refactor: libcrmcommon: Drop pcmk__xf_processed flag There is no longer any way that we could process a node more than once in mark_xml_changes(). Signed-off-by: Reid Wahl --- include/crm/common/xml_internal.h | 3 --- lib/common/xml.c | 15 +++------------ 2 files changed, 3 insertions(+), 15 deletions(-) diff --git a/include/crm/common/xml_internal.h b/include/crm/common/xml_internal.h index d6aaf0c6f5f..208a638b77c 100644 --- a/include/crm/common/xml_internal.h +++ b/include/crm/common/xml_internal.h @@ -378,9 +378,6 @@ enum pcmk__xml_flags { */ pcmk__xf_tracking = (UINT32_C(1) << 4), - //! Tree's changes compared to another XML tree have been marked - pcmk__xf_processed = (UINT32_C(1) << 5), - //! Skip counting this node when getting a node's position among siblings pcmk__xf_skip = (UINT32_C(1) << 6), diff --git a/lib/common/xml.c b/lib/common/xml.c index 879727bac4c..a7bf26ec1d1 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -1529,21 +1529,11 @@ mark_xml_changes(xmlNode *old_xml, xmlNode *new_xml) * Similarly, check handling of node types for which we don't create private * data. For now, we'll skip them in the loops below. */ - xml_node_private_t *nodepriv = NULL; - CRM_CHECK((old_xml != NULL) && (new_xml != NULL), return); if ((old_xml->_private == NULL) || (new_xml->_private == NULL)) { return; } - nodepriv = new_xml->_private; - - if (pcmk_is_set(nodepriv->flags, pcmk__xf_processed)) { - // Avoid re-comparing nodes - return; - } - pcmk__set_xml_flags(nodepriv, pcmk__xf_processed); - xml_diff_attrs(old_xml, new_xml); find_matching_children(old_xml, new_xml, true); @@ -1553,9 +1543,9 @@ mark_xml_changes(xmlNode *old_xml, xmlNode *new_xml) for (xmlNode *old_child = pcmk__xml_first_child(old_xml); old_child != NULL; old_child = pcmk__xml_next(old_child)) { + xml_node_private_t *nodepriv = old_child->_private; xmlNode *new_child = NULL; - nodepriv = old_child->_private; if (nodepriv == NULL) { continue; } @@ -1591,7 +1581,8 @@ mark_xml_changes(xmlNode *old_xml, xmlNode *new_xml) new_child != NULL; new_child = next, next = pcmk__xml_next(new_child)) { - nodepriv = new_child->_private; + xml_node_private_t *nodepriv = new_child->_private; + if (nodepriv == NULL) { continue; } From a2317a1dc89b30d75385ef74d6a109f1394a9c3c Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Sun, 16 Mar 2025 21:37:29 -0700 Subject: [PATCH 021/186] Refactor: libcrmcommon: Make pcmk__xc_match_child() static And drop unused exact argument. Signed-off-by: Reid Wahl --- lib/common/crmcommon_private.h | 4 ---- lib/common/xml_comment.c | 36 +++------------------------------- 2 files changed, 3 insertions(+), 37 deletions(-) diff --git a/lib/common/crmcommon_private.h b/lib/common/crmcommon_private.h index 140756820c6..49c6c6eaddf 100644 --- a/lib/common/crmcommon_private.h +++ b/lib/common/crmcommon_private.h @@ -139,10 +139,6 @@ int pcmk__xml_position(const xmlNode *xml, enum pcmk__xml_flags ignore_if_set); G_GNUC_INTERNAL bool pcmk__xc_matches(const xmlNode *comment1, const xmlNode *comment2); -G_GNUC_INTERNAL -xmlNode *pcmk__xc_match_child(const xmlNode *parent, const xmlNode *search, - bool exact); - G_GNUC_INTERNAL void pcmk__xc_update(xmlNode *parent, xmlNode *target, xmlNode *update); diff --git a/lib/common/xml_comment.c b/lib/common/xml_comment.c index a65403f98c0..ae4443ca9f8 100644 --- a/lib/common/xml_comment.c +++ b/lib/common/xml_comment.c @@ -66,19 +66,14 @@ pcmk__xc_matches(const xmlNode *comment1, const xmlNode *comment2) * * \param[in] parent XML whose children to search * \param[in] search Comment whose content should be searched for - * \param[in] exact If true, comment must also be at same position * * \return Matching comment, or \c NULL if no match is found */ -xmlNode * -pcmk__xc_match_child(const xmlNode *parent, const xmlNode *search, bool exact) +static xmlNode * +match_xc_child(const xmlNode *parent, const xmlNode *search) { - int search_pos = 0; - pcmk__assert((search != NULL) && (search->type == XML_COMMENT_NODE)); - search_pos = pcmk__xml_position(search, pcmk__xf_skip); - for (xmlNode *child = pcmk__xml_first_child(parent); child != NULL; child = pcmk__xml_next(child)) { @@ -86,34 +81,9 @@ pcmk__xc_match_child(const xmlNode *parent, const xmlNode *search, bool exact) continue; } - if (exact) { - int pos = 0; - xml_node_private_t *nodepriv = child->_private; - - if (pcmk_is_set(nodepriv->flags, pcmk__xf_skip)) { - continue; - } - - pos = pcmk__xml_position(child, pcmk__xf_skip); - if (pos < search_pos) { - // We have not yet reached the matching position - continue; - } - if (pos > search_pos) { - // We have already passed the matching position - return NULL; - } - // Position matches - } - if (pcmk__xc_matches(child, search)) { return child; } - - if (exact) { - // We won't find another comment at the same position - return NULL; - } } return NULL; @@ -137,7 +107,7 @@ pcmk__xc_update(xmlNode *parent, xmlNode *target, xmlNode *update) CRM_CHECK(update->type == XML_COMMENT_NODE, return); if (target == NULL) { - target = pcmk__xc_match_child(parent, update, false); + target = match_xc_child(parent, update); } if (target == NULL) { From f71acf36ac6fa245af6e593f08eae7a347475924 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 13 Mar 2025 20:00:37 -0700 Subject: [PATCH 022/186] Refactor: libcrmcommon: New pcmk__xml_mark_changes() To replace xml_calculate_changes(). This is just the existing mark_xml_changes(), except that it sets pcmk__xf_tracking on the document for convenience if it's not already set. This only needs to be done for the top-level call, but there's no harm in doing it on the recursive calls; it just adds redundant trace logging. The new CRM_CHECK() in xml_calculate_significant_changes() is just what would have happened in its call to xml_calculate_changes() prior to this commit. Signed-off-by: Reid Wahl --- daemons/based/based_callbacks.c | 2 +- include/crm/common/xml_internal.h | 1 + lib/cib/cib_utils.c | 3 +- lib/common/xml.c | 53 +++++++++++++++++++++---------- lib/common/xml_element.c | 2 +- tools/crm_diff.c | 2 +- tools/crm_shadow.c | 2 +- 7 files changed, 43 insertions(+), 22 deletions(-) diff --git a/daemons/based/based_callbacks.c b/daemons/based/based_callbacks.c index d9f359b5720..2b5be57f7d9 100644 --- a/daemons/based/based_callbacks.c +++ b/daemons/based/based_callbacks.c @@ -473,7 +473,7 @@ process_ping_reply(xmlNode *reply) if(remote_cib && remote_cib->children) { // Additional debug - xml_calculate_changes(the_cib, remote_cib); + pcmk__xml_mark_changes(the_cib, remote_cib); pcmk__log_xml_changes(LOG_INFO, remote_cib); crm_trace("End of differences"); } diff --git a/include/crm/common/xml_internal.h b/include/crm/common/xml_internal.h index 208a638b77c..b572155e9c3 100644 --- a/include/crm/common/xml_internal.h +++ b/include/crm/common/xml_internal.h @@ -424,6 +424,7 @@ void pcmk__xml_doc_set_flags(xmlDoc *doc, uint32_t flags); bool pcmk__xml_doc_all_flags_set(const xmlDoc *xml, uint32_t flags); void pcmk__xml_commit_changes(xmlDoc *doc); +void pcmk__xml_mark_changes(xmlNode *old_xml, xmlNode *new_xml); bool pcmk__xml_tree_foreach(xmlNode *xml, bool (*fn)(xmlNode *, void *), void *user_data); diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c index 71535f9ffc3..26a16a7f623 100644 --- a/lib/cib/cib_utils.c +++ b/lib/cib/cib_utils.c @@ -343,11 +343,10 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, if (!pcmk__xml_doc_all_flags_set(scratch->doc, pcmk__xf_tracking)) { crm_trace("Inferring changes after %s op", op); pcmk__xml_commit_changes(scratch->doc); - pcmk__xml_doc_set_flags(scratch->doc, pcmk__xf_tracking); if (enable_acl) { pcmk__enable_acl(*current_cib, scratch, user); } - xml_calculate_changes(*current_cib, scratch); + pcmk__xml_mark_changes(*current_cib, scratch); } CRM_CHECK(*current_cib != scratch, return -EINVAL); } diff --git a/lib/common/xml.c b/lib/common/xml.c index a7bf26ec1d1..8c1600615a2 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -1225,7 +1225,7 @@ xml_diff_old_attrs(xmlNode *old_xml, xmlNode *new_xml) && !pcmk__xml_doc_all_flags_set(new_xml->doc, pcmk__xf_ignore_attr_pos |pcmk__xf_tracking)) { - /* pcmk__xf_tracking is always set by xml_calculate_changes() + /* pcmk__xf_tracking is always set by pcmk__xml_mark_changes() * before this function is called, so only the * pcmk__xf_ignore_attr_pos check is truly relevant. */ @@ -1517,9 +1517,19 @@ find_matching_children(xmlNode *old_xml, xmlNode *new_xml, bool comments_ids) } } -// Given original and new XML, mark new XML portions that have changed -static void -mark_xml_changes(xmlNode *old_xml, xmlNode *new_xml) +/*! + * \internal + * \brief Mark changes between two XML trees + * + * Set flags in a new XML tree to indicate changes relative to an old XML tree. + * + * \param[in,out] old_xml XML before changes + * \param[in,out] new_xml XML after changes + * + * \note This may set \c pcmk__xf_skip on parts of \p old_xml. + */ +void +pcmk__xml_mark_changes(xmlNode *old_xml, xmlNode *new_xml) { /* This function may set the xml_node_private_t:match member on children of * old_xml and new_xml, but it clears that member before returning. @@ -1534,6 +1544,7 @@ mark_xml_changes(xmlNode *old_xml, xmlNode *new_xml) return; } + pcmk__xml_doc_set_flags(new_xml->doc, pcmk__xf_tracking); xml_diff_attrs(old_xml, new_xml); find_matching_children(old_xml, new_xml, true); @@ -1569,7 +1580,7 @@ mark_xml_changes(xmlNode *old_xml, xmlNode *new_xml) continue; } - mark_xml_changes(old_child, new_child); + pcmk__xml_mark_changes(old_child, new_child); } /* Mark unmatched new children as created, and mark matched new children as @@ -1620,15 +1631,26 @@ mark_xml_changes(xmlNode *old_xml, xmlNode *new_xml) void xml_calculate_significant_changes(xmlNode *old_xml, xmlNode *new_xml) { - if (new_xml != NULL) { - /* BUG: If pcmk__xf_tracking is not set for new_xml when this function - * is called, then xml_calculate_changes() will unset - * pcmk__xf_ignore_attr_pos because pcmk__xml_commit_changes() will be - * in the call chain. - */ - pcmk__xml_doc_set_flags(new_xml->doc, pcmk__xf_ignore_attr_pos); + CRM_CHECK((old_xml != NULL) && (new_xml != NULL) + && pcmk__xe_is(old_xml, (const char *) new_xml->name) + && pcmk__str_eq(pcmk__xe_id(old_xml), pcmk__xe_id(new_xml), + pcmk__str_none), + return); + + /* BUG: If pcmk__xf_tracking is not set for new_xml when this function is + * called, then we unset pcmk__xf_ignore_attr_pos via + * pcmk__xml_commit_changes(). Since this function is about to be + * deprecated, it's not worth fixing this and changing the user-facing + * behavior. + */ + pcmk__xml_doc_set_flags(new_xml->doc, pcmk__xf_ignore_attr_pos); + + if (!pcmk__xml_doc_all_flags_set(new_xml->doc, pcmk__xf_tracking)) { + // Ensure tracking has a clean start (pcmk__xml_mark_changes() enables) + pcmk__xml_commit_changes(new_xml->doc); } - xml_calculate_changes(old_xml, new_xml); + + pcmk__xml_mark_changes(old_xml, new_xml); } // Called functions may set the \p pcmk__xf_skip flag on parts of \p old_xml @@ -1642,12 +1664,11 @@ xml_calculate_changes(xmlNode *old_xml, xmlNode *new_xml) return); if (!pcmk__xml_doc_all_flags_set(new_xml->doc, pcmk__xf_tracking)) { - // Ensure tracking has a clean start + // Ensure tracking has a clean start (pcmk__xml_mark_changes() enables) pcmk__xml_commit_changes(new_xml->doc); - pcmk__xml_doc_set_flags(new_xml->doc, pcmk__xf_tracking); } - mark_xml_changes(old_xml, new_xml); + pcmk__xml_mark_changes(old_xml, new_xml); } /*! diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index 2361f8ff645..426ef3c898f 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -760,7 +760,7 @@ replace_node(xmlNode *old, xmlNode *new) // Replaced sections may have included relevant ACLs pcmk__apply_acl(new); } - xml_calculate_changes(old, new); + pcmk__xml_mark_changes(old, new); pcmk__xml_free_node(old); } diff --git a/tools/crm_diff.c b/tools/crm_diff.c index d614574a291..57f0f8a23e4 100644 --- a/tools/crm_diff.c +++ b/tools/crm_diff.c @@ -186,7 +186,7 @@ generate_patch(xmlNode *object_original, xmlNode *object_new, const char *xml_fi if(as_cib) { xml_calculate_significant_changes(object_original, object_new); } else { - xml_calculate_changes(object_original, object_new); + pcmk__xml_mark_changes(object_original, object_new); } crm_log_xml_debug(object_new, (xml_file_new? xml_file_new: "target")); diff --git a/tools/crm_shadow.c b/tools/crm_shadow.c index 95946166af6..823d3bc4b15 100644 --- a/tools/crm_shadow.c +++ b/tools/crm_shadow.c @@ -944,7 +944,7 @@ show_shadow_diff(pcmk__output_t *out, GError **error) if (read_xml(filename, &new_config, error) != pcmk_rc_ok) { goto done; } - xml_calculate_changes(old_config, new_config); + pcmk__xml_mark_changes(old_config, new_config); diff = xml_create_patchset(0, old_config, new_config, NULL, false); pcmk__log_xml_changes(LOG_INFO, new_config); From b235b11e0f32a5f38e421fc31180b45b72b04532 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 13:07:18 -0700 Subject: [PATCH 023/186] API: libcrmcommon: Deprecate xml_calculate_changes() Signed-off-by: Reid Wahl --- include/crm/common/xml.h | 1 - include/crm/common/xml_compat.h | 3 +++ lib/common/xml.c | 35 ++++++++++++++++----------------- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/include/crm/common/xml.h b/include/crm/common/xml.h index 99411fda578..217b5eb3faf 100644 --- a/include/crm/common/xml.h +++ b/include/crm/common/xml.h @@ -33,7 +33,6 @@ extern "C" { * Searching & Modifying */ -void xml_calculate_changes(xmlNode *old_xml, xmlNode *new_xml); void xml_calculate_significant_changes(xmlNode *old_xml, xmlNode *new_xml); bool xml_patch_versions(const xmlNode *patchset, int add[3], int del[3]); diff --git a/include/crm/common/xml_compat.h b/include/crm/common/xml_compat.h index 3b94ec42314..957d6599833 100644 --- a/include/crm/common/xml_compat.h +++ b/include/crm/common/xml_compat.h @@ -118,6 +118,9 @@ void xml_accept_changes(xmlNode *xml); void xml_track_changes(xmlNode *xml, const char *user, xmlNode *acl_source, bool enforce_acls); +//! \deprecated Do not use +void xml_calculate_changes(xmlNode *old_xml, xmlNode *new_xml); + #ifdef __cplusplus } #endif diff --git a/lib/common/xml.c b/lib/common/xml.c index 8c1600615a2..4a52136ba20 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -1653,24 +1653,6 @@ xml_calculate_significant_changes(xmlNode *old_xml, xmlNode *new_xml) pcmk__xml_mark_changes(old_xml, new_xml); } -// Called functions may set the \p pcmk__xf_skip flag on parts of \p old_xml -void -xml_calculate_changes(xmlNode *old_xml, xmlNode *new_xml) -{ - CRM_CHECK((old_xml != NULL) && (new_xml != NULL) - && pcmk__xe_is(old_xml, (const char *) new_xml->name) - && pcmk__str_eq(pcmk__xe_id(old_xml), pcmk__xe_id(new_xml), - pcmk__str_none), - return); - - if (!pcmk__xml_doc_all_flags_set(new_xml->doc, pcmk__xf_tracking)) { - // Ensure tracking has a clean start (pcmk__xml_mark_changes() enables) - pcmk__xml_commit_changes(new_xml->doc); - } - - pcmk__xml_mark_changes(old_xml, new_xml); -} - /*! * \internal * \brief Initialize the Pacemaker XML environment @@ -1889,5 +1871,22 @@ xml_track_changes(xmlNode *xml, const char *user, xmlNode *acl_source, } } +void +xml_calculate_changes(xmlNode *old_xml, xmlNode *new_xml) +{ + CRM_CHECK((old_xml != NULL) && (new_xml != NULL) + && pcmk__xe_is(old_xml, (const char *) new_xml->name) + && pcmk__str_eq(pcmk__xe_id(old_xml), pcmk__xe_id(new_xml), + pcmk__str_none), + return); + + if (!pcmk__xml_doc_all_flags_set(new_xml->doc, pcmk__xf_tracking)) { + // Ensure tracking has a clean start (pcmk__xml_mark_changes() enables) + pcmk__xml_commit_changes(new_xml->doc); + } + + pcmk__xml_mark_changes(old_xml, new_xml); +} + // LCOV_EXCL_STOP // End deprecated API From affe0d761de0af9dcd34dc76c92c074bab97377d Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 13:09:34 -0700 Subject: [PATCH 024/186] Refactor: libcrmcommon: Replace xml_calculate_significant_changes() ...internally with pcmk__xml_mark_changes(). Signed-off-by: Reid Wahl --- .../tests/patchset/pcmk__cib_element_in_patchset_test.c | 3 ++- tools/crm_diff.c | 7 +++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/common/tests/patchset/pcmk__cib_element_in_patchset_test.c b/lib/common/tests/patchset/pcmk__cib_element_in_patchset_test.c index 75d77393fde..dfe9e859f92 100644 --- a/lib/common/tests/patchset/pcmk__cib_element_in_patchset_test.c +++ b/lib/common/tests/patchset/pcmk__cib_element_in_patchset_test.c @@ -37,7 +37,8 @@ assert_in_patchset(const char *source_s, const char *target_s, xmlNode *target = pcmk__xml_parse(target_s); xmlNode *patchset = NULL; - xml_calculate_significant_changes(source, target); + pcmk__xml_doc_set_flags(target->doc, pcmk__xf_ignore_attr_pos); + pcmk__xml_mark_changes(source, target); patchset = xml_create_patchset(2, source, target, NULL, false); if (reference) { diff --git a/tools/crm_diff.c b/tools/crm_diff.c index 57f0f8a23e4..27eb6d155cc 100644 --- a/tools/crm_diff.c +++ b/tools/crm_diff.c @@ -183,11 +183,10 @@ generate_patch(xmlNode *object_original, xmlNode *object_new, const char *xml_fi } } - if(as_cib) { - xml_calculate_significant_changes(object_original, object_new); - } else { - pcmk__xml_mark_changes(object_original, object_new); + if (as_cib) { + pcmk__xml_doc_set_flags(object_new->doc, pcmk__xf_ignore_attr_pos); } + pcmk__xml_mark_changes(object_original, object_new); crm_log_xml_debug(object_new, (xml_file_new? xml_file_new: "target")); output = xml_create_patchset(0, object_original, object_new, NULL, FALSE); From 8d315fbb59d3b859d2d87a9be69ae7423b8950e8 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 13:10:56 -0700 Subject: [PATCH 025/186] API: libcrmcommon: Deprecate xml_calculate_significant_changes() Signed-off-by: Reid Wahl --- include/crm/common/xml.h | 1 - include/crm/common/xml_compat.h | 3 ++ lib/common/xml.c | 50 ++++++++++++++++----------------- 3 files changed, 28 insertions(+), 26 deletions(-) diff --git a/include/crm/common/xml.h b/include/crm/common/xml.h index 217b5eb3faf..1305ddb5410 100644 --- a/include/crm/common/xml.h +++ b/include/crm/common/xml.h @@ -33,7 +33,6 @@ extern "C" { * Searching & Modifying */ -void xml_calculate_significant_changes(xmlNode *old_xml, xmlNode *new_xml); bool xml_patch_versions(const xmlNode *patchset, int add[3], int del[3]); xmlNode *xml_create_patchset( diff --git a/include/crm/common/xml_compat.h b/include/crm/common/xml_compat.h index 957d6599833..dc3f924757a 100644 --- a/include/crm/common/xml_compat.h +++ b/include/crm/common/xml_compat.h @@ -121,6 +121,9 @@ void xml_track_changes(xmlNode *xml, const char *user, xmlNode *acl_source, //! \deprecated Do not use void xml_calculate_changes(xmlNode *old_xml, xmlNode *new_xml); +//! \deprecated Do not use +void xml_calculate_significant_changes(xmlNode *old_xml, xmlNode *new_xml); + #ifdef __cplusplus } #endif diff --git a/lib/common/xml.c b/lib/common/xml.c index 4a52136ba20..50d74a18aef 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -1628,31 +1628,6 @@ pcmk__xml_mark_changes(xmlNode *old_xml, xmlNode *new_xml) } } -void -xml_calculate_significant_changes(xmlNode *old_xml, xmlNode *new_xml) -{ - CRM_CHECK((old_xml != NULL) && (new_xml != NULL) - && pcmk__xe_is(old_xml, (const char *) new_xml->name) - && pcmk__str_eq(pcmk__xe_id(old_xml), pcmk__xe_id(new_xml), - pcmk__str_none), - return); - - /* BUG: If pcmk__xf_tracking is not set for new_xml when this function is - * called, then we unset pcmk__xf_ignore_attr_pos via - * pcmk__xml_commit_changes(). Since this function is about to be - * deprecated, it's not worth fixing this and changing the user-facing - * behavior. - */ - pcmk__xml_doc_set_flags(new_xml->doc, pcmk__xf_ignore_attr_pos); - - if (!pcmk__xml_doc_all_flags_set(new_xml->doc, pcmk__xf_tracking)) { - // Ensure tracking has a clean start (pcmk__xml_mark_changes() enables) - pcmk__xml_commit_changes(new_xml->doc); - } - - pcmk__xml_mark_changes(old_xml, new_xml); -} - /*! * \internal * \brief Initialize the Pacemaker XML environment @@ -1888,5 +1863,30 @@ xml_calculate_changes(xmlNode *old_xml, xmlNode *new_xml) pcmk__xml_mark_changes(old_xml, new_xml); } +void +xml_calculate_significant_changes(xmlNode *old_xml, xmlNode *new_xml) +{ + CRM_CHECK((old_xml != NULL) && (new_xml != NULL) + && pcmk__xe_is(old_xml, (const char *) new_xml->name) + && pcmk__str_eq(pcmk__xe_id(old_xml), pcmk__xe_id(new_xml), + pcmk__str_none), + return); + + /* BUG: If pcmk__xf_tracking is not set for new_xml when this function is + * called, then we unset pcmk__xf_ignore_attr_pos via + * pcmk__xml_commit_changes(). Since this function is about to be + * deprecated, it's not worth fixing this and changing the user-facing + * behavior. + */ + pcmk__xml_doc_set_flags(new_xml->doc, pcmk__xf_ignore_attr_pos); + + if (!pcmk__xml_doc_all_flags_set(new_xml->doc, pcmk__xf_tracking)) { + // Ensure tracking has a clean start (pcmk__xml_mark_changes() enables) + pcmk__xml_commit_changes(new_xml->doc); + } + + pcmk__xml_mark_changes(old_xml, new_xml); +} + // LCOV_EXCL_STOP // End deprecated API From d067e573227c33e028acc0953c1933a6a91937ca Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 26 Mar 2025 17:42:27 -0700 Subject: [PATCH 026/186] Refactor: libcrmcommon: Best practices in mark_child_moved() Only slight changes for readability, plus doxygen. Add a TODO to resolve some confusion that I still haven't figured out. Signed-off-by: Reid Wahl --- lib/common/xml.c | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/lib/common/xml.c b/lib/common/xml.c index 50d74a18aef..7edeb298170 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -1342,23 +1342,36 @@ mark_child_deleted(xmlNode *old_child, xmlNode *new_parent) pcmk__xf_skip); } +/*! + * \internal + * \brief Mark a new child as moved and set \c pcmk__xf_skip as appropriate + * + * \param[in,out] old_child Child of old XML + * \param[in,out] new_child Child of new XML that matches \p old_child + * \param[in] old_pos Position of \p old_child among its siblings + * \param[in] new_pos Position of \p new_child among its siblings + */ static void -mark_child_moved(xmlNode *old_child, xmlNode *new_parent, xmlNode *new_child, - int p_old, int p_new) +mark_child_moved(xmlNode *old_child, xmlNode *new_child, int old_pos, + int new_pos) { + const char *id_s = pcmk__s(pcmk__xe_id(new_child), ""); + xmlNode *new_parent = new_child->parent; xml_node_private_t *nodepriv = new_child->_private; - crm_trace("Child element %s with " - PCMK_XA_ID "='%s' moved from position %d to %d under %s", - new_child->name, pcmk__s(pcmk__xe_id(new_child), ""), - p_old, p_new, new_parent->name); + crm_trace("Child element %s with " PCMK_XA_ID "='%s' moved from position " + "%d to %d under %s", + new_child->name, id_s, old_pos, new_pos, new_parent->name); pcmk__mark_xml_node_dirty(new_parent); pcmk__set_xml_flags(nodepriv, pcmk__xf_moved); - if (p_old > p_new) { + /* @TODO Figure out and document why we skip the old child in future + * position calculations if the old position is higher, and skip the new + * child in future position calculations if the new position is higher. This + * goes back to 9bb15b38, and there's no explanation in the commit message. + */ + if (old_pos > new_pos) { nodepriv = old_child->_private; - } else { - nodepriv = new_child->_private; } pcmk__set_xml_flags(nodepriv, pcmk__xf_skip); } @@ -1612,8 +1625,7 @@ pcmk__xml_mark_changes(xmlNode *old_xml, xmlNode *new_xml) int new_pos = pcmk__xml_position(new_child, pcmk__xf_skip); if (old_pos != new_pos) { - mark_child_moved(old_child, new_xml, new_child, old_pos, - new_pos); + mark_child_moved(old_child, new_child, old_pos, new_pos); } nodepriv->match = NULL; continue; From 047d66eb7230dae7a9ef29faef61f104ba2158d5 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 13:13:46 -0700 Subject: [PATCH 027/186] Refactor: libcrmcommon: Document buggy return xml_patch_versions() RC This is a boolean function but has always returned a legacy Pacemaker return code. Signed-off-by: Reid Wahl --- lib/common/patchset.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/common/patchset.c b/lib/common/patchset.c index f4bda8dfc38..fb9edda3a45 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -311,6 +311,7 @@ patchset_process_digest(xmlNode *patch, xmlNode *source, xmlNode *target, } // Get CIB versions used for additions and deletions in a patchset +// Return value of true means failure; false means success bool xml_patch_versions(const xmlNode *patchset, int add[3], int del[3]) { @@ -331,7 +332,7 @@ xml_patch_versions(const xmlNode *patchset, int add[3], int del[3]) crm_element_value_int(patchset, PCMK_XA_FORMAT, &format); if (format != 2) { crm_err("Unknown patch format: %d", format); - return -EINVAL; + return true; } if (source != NULL) { @@ -347,7 +348,7 @@ xml_patch_versions(const xmlNode *patchset, int add[3], int del[3]) crm_trace("Got %d for add[%s]", add[i], vfields[i]); } } - return pcmk_ok; + return false; } /*! From 37410f812973244bbbaa73b0f6e454239892abc8 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 13:33:25 -0700 Subject: [PATCH 028/186] Refactor: libcrmcommon: New pcmk__xml_patchset_versions() Preserve the body of xml_patch_versions() because the new function returns EINVAL in the case where we fail to parse version numbers as integers. The order of arguments changes. I think it's clearer to use "source" and then "target". In v1 patchsets, we used "add"/"remove", but we can start moving away from that. Signed-off-by: Reid Wahl --- daemons/controld/controld_te_callbacks.c | 2 +- daemons/controld/controld_te_utils.c | 4 +- daemons/fenced/fenced_cib.c | 2 +- include/crm/common/xml_internal.h | 14 +--- lib/cib/cib_utils.c | 2 +- lib/common/patchset.c | 81 +++++++++++++++++++++++- lib/common/patchset_display.c | 4 +- tools/crm_diff.c | 2 +- 8 files changed, 91 insertions(+), 20 deletions(-) diff --git a/daemons/controld/controld_te_callbacks.c b/daemons/controld/controld_te_callbacks.c index b74da0ffb51..c78ec37037e 100644 --- a/daemons/controld/controld_te_callbacks.c +++ b/daemons/controld/controld_te_callbacks.c @@ -389,7 +389,7 @@ te_update_diff(const char *event, xmlNode * msg) wrapper = pcmk__xe_first_child(msg, PCMK__XE_CIB_UPDATE_RESULT, NULL, NULL); diff = pcmk__xe_first_child(wrapper, NULL, NULL, NULL); - xml_patch_versions(diff, p_add, p_del); + pcmk__xml_patchset_versions(diff, p_del, p_add); crm_debug("Processing (%s) diff: %d.%d.%d -> %d.%d.%d (%s)", op, p_del[0], p_del[1], p_del[2], p_add[0], p_add[1], p_add[2], fsa_state2string(controld_globals.fsa_state)); diff --git a/daemons/controld/controld_te_utils.c b/daemons/controld/controld_te_utils.c index 80d3c9477aa..289aa21b464 100644 --- a/daemons/controld/controld_te_utils.c +++ b/daemons/controld/controld_te_utils.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. * @@ -390,7 +390,7 @@ abort_transition_graph(int abort_priority, enum pcmk__graph_next abort_action, } if(diff) { - xml_patch_versions(diff, add, del); + pcmk__xml_patchset_versions(diff, del, add); for(search = reason; search; search = search->parent) { if (pcmk__xe_is(search, PCMK_XE_CHANGE)) { change = search; diff --git a/daemons/fenced/fenced_cib.c b/daemons/fenced/fenced_cib.c index 887486d04e7..c4cd9a41d0c 100644 --- a/daemons/fenced/fenced_cib.c +++ b/daemons/fenced/fenced_cib.c @@ -390,7 +390,7 @@ update_fencing_topology(const char *event, xmlNode *msg) return; } - xml_patch_versions(patchset, add, del); + pcmk__xml_patchset_versions(patchset, del, add); for (xmlNode *change = pcmk__xe_first_child(patchset, NULL, NULL, NULL); change != NULL; change = pcmk__xe_next(change, NULL)) { diff --git a/include/crm/common/xml_internal.h b/include/crm/common/xml_internal.h index b572155e9c3..3e186c74852 100644 --- a/include/crm/common/xml_internal.h +++ b/include/crm/common/xml_internal.h @@ -436,17 +436,9 @@ pcmk__xml_attr_value(const xmlAttr *attr) : (const char *) attr->children->content; } -/*! - * \internal - * \brief Check whether a given CIB element was modified in a CIB patchset - * - * \param[in] patchset CIB XML patchset - * \param[in] element XML tag of CIB element to check (\c NULL is equivalent - * to \c PCMK_XE_CIB). Supported values include any CIB - * element supported by \c pcmk__cib_abs_xpath_for(). - * - * \return \c true if \p element was modified, or \c false otherwise - */ +int pcmk__xml_patchset_versions(const xmlNode *patchset, int source[3], + int target[3]); + bool pcmk__cib_element_in_patchset(const xmlNode *patchset, const char *element); diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c index 26a16a7f623..9127e04b7c3 100644 --- a/lib/cib/cib_utils.c +++ b/lib/cib/cib_utils.c @@ -48,7 +48,7 @@ cib_diff_version_details(xmlNode * diff, int *admin_epoch, int *epoch, int *upda int add[] = { 0, 0, 0 }; int del[] = { 0, 0, 0 }; - xml_patch_versions(diff, add, del); + pcmk__xml_patchset_versions(diff, del, add); *admin_epoch = add[0]; *epoch = add[1]; diff --git a/lib/common/patchset.c b/lib/common/patchset.c index fb9edda3a45..c4af5aea76f 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -310,6 +310,69 @@ patchset_process_digest(xmlNode *patch, xmlNode *source, xmlNode *target, return; } +/*! + * \internal + * \brief Get the source and target CIB versions from an XML patchset + * + * Each output object will contain, in order, the following version fields from + * the source and target: + * * \c PCMK_XA_ADMIN_EPOCH + * * \c PCMK_XA_EPOCH + * * \c PCMK_XA_NUM_UPDATES + * + * \param[in] patchset XML patchset + * \param[out] source Where to store versions from source CIB + * \param[out] target Where to store versions from target CIB + * + * \return Standard Pacemaker return code + */ +int +pcmk__xml_patchset_versions(const xmlNode *patchset, int source[3], + int target[3]) +{ + static const char *const vfields[] = { + PCMK_XA_ADMIN_EPOCH, + PCMK_XA_EPOCH, + PCMK_XA_NUM_UPDATES, + }; + + int format = 1; + const xmlNode *version = NULL; + const xmlNode *source_xml = NULL; + const xmlNode *target_xml = NULL; + + CRM_CHECK((patchset != NULL) && (source != NULL) && (target != NULL), + return EINVAL); + + crm_element_value_int(patchset, PCMK_XA_FORMAT, &format); + if (format != 2) { + crm_err("Unknown patch format: %d", format); + return EINVAL; + } + + version = pcmk__xe_first_child(patchset, PCMK_XE_VERSION, NULL, NULL); + source_xml = pcmk__xe_first_child(version, PCMK_XE_SOURCE, NULL, NULL); + target_xml = pcmk__xe_first_child(version, PCMK_XE_TARGET, NULL, NULL); + + if ((source_xml == NULL) || (target_xml == NULL)) { + return EINVAL; + } + + for (int i = 0; i < PCMK__NELEM(vfields); i++) { + if (crm_element_value_int(source_xml, vfields[i], &(source[i])) != 0) { + return EINVAL; + } + crm_trace("Got %d for source[%s]", source[i], vfields[i]); + + if (crm_element_value_int(target_xml, vfields[i], &(target[i])) != 0) { + return EINVAL; + } + crm_trace("Got %d for target[%s]", target[i], vfields[i]); + } + + return pcmk_rc_ok; +} + // Get CIB versions used for additions and deletions in a patchset // Return value of true means failure; false means success bool @@ -369,6 +432,7 @@ xml_patch_version_check(const xmlNode *xml, const xmlNode *patchset) int this[] = { 0, 0, 0 }; int add[] = { 0, 0, 0 }; int del[] = { 0, 0, 0 }; + int rc = pcmk_rc_ok; const char *vfields[] = { PCMK_XA_ADMIN_EPOCH, @@ -392,7 +456,10 @@ xml_patch_version_check(const xmlNode *xml, const xmlNode *patchset) del[lpc] = this[lpc]; } - xml_patch_versions(patchset, add, del); + rc = pcmk__xml_patchset_versions(patchset, del, add); + if (rc != pcmk_rc_ok) { + return rc; + } for (lpc = 0; lpc < PCMK__NELEM(vfields); lpc++) { if (this[lpc] < del[lpc]) { @@ -830,6 +897,18 @@ xml_apply_patchset(xmlNode *xml, xmlNode *patchset, bool check_version) return rc; } +/*! + * \internal + * \brief Check whether a given CIB element was modified in a CIB patchset + * + * \param[in] patchset CIB XML patchset + * \param[in] element XML tag of CIB element to check (\c NULL is equivalent + * to \c PCMK_XE_CIB). Supported values include any CIB + * element supported by \c pcmk__cib_abs_xpath_for(). + * + * \retval \c true if \p element was modified + * \retval \c false otherwise + */ bool pcmk__cib_element_in_patchset(const xmlNode *patchset, const char *element) { diff --git a/lib/common/patchset_display.c b/lib/common/patchset_display.c index 5ddbdbc5337..f3dabb43ddc 100644 --- a/lib/common/patchset_display.c +++ b/lib/common/patchset_display.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. * @@ -44,7 +44,7 @@ xml_show_patchset_header(pcmk__output_t *out, const xmlNode *patchset) int add[] = { 0, 0, 0 }; int del[] = { 0, 0, 0 }; - xml_patch_versions(patchset, add, del); + pcmk__xml_patchset_versions(patchset, del, add); if ((add[0] != del[0]) || (add[1] != del[1]) || (add[2] != del[2])) { const char *fmt = crm_element_value(patchset, PCMK_XA_FORMAT); diff --git a/tools/crm_diff.c b/tools/crm_diff.c index 27eb6d155cc..f5292e9e064 100644 --- a/tools/crm_diff.c +++ b/tools/crm_diff.c @@ -150,7 +150,7 @@ log_patch_cib_versions(xmlNode *patch) const char *fmt = NULL; const char *digest = NULL; - xml_patch_versions(patch, add, del); + pcmk__xml_patchset_versions(patch, del, add); fmt = crm_element_value(patch, PCMK_XA_FORMAT); digest = crm_element_value(patch, PCMK__XA_DIGEST); From d37ac3faa7b7817772aa60ef58bb533a2d66bd3f Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 13:35:31 -0700 Subject: [PATCH 029/186] API: libcrmcommon: Deprecate xml_patch_versions() Signed-off-by: Reid Wahl --- include/crm/common/xml.h | 2 - include/crm/common/xml_compat.h | 3 ++ lib/common/patchset.c | 89 ++++++++++++++++++--------------- 3 files changed, 51 insertions(+), 43 deletions(-) diff --git a/include/crm/common/xml.h b/include/crm/common/xml.h index 1305ddb5410..24a9873575e 100644 --- a/include/crm/common/xml.h +++ b/include/crm/common/xml.h @@ -33,8 +33,6 @@ extern "C" { * Searching & Modifying */ -bool xml_patch_versions(const xmlNode *patchset, int add[3], int del[3]); - xmlNode *xml_create_patchset( int format, xmlNode *source, xmlNode *target, bool *config, bool manage_version); int xml_apply_patchset(xmlNode *xml, xmlNode *patchset, bool check_version); diff --git a/include/crm/common/xml_compat.h b/include/crm/common/xml_compat.h index dc3f924757a..6d4ea0166a0 100644 --- a/include/crm/common/xml_compat.h +++ b/include/crm/common/xml_compat.h @@ -124,6 +124,9 @@ void xml_calculate_changes(xmlNode *old_xml, xmlNode *new_xml); //! \deprecated Do not use void xml_calculate_significant_changes(xmlNode *old_xml, xmlNode *new_xml); +//! \deprecated Do not use +bool xml_patch_versions(const xmlNode *patchset, int add[3], int del[3]); + #ifdef __cplusplus } #endif diff --git a/lib/common/patchset.c b/lib/common/patchset.c index c4af5aea76f..980029c0aaf 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -373,47 +373,6 @@ pcmk__xml_patchset_versions(const xmlNode *patchset, int source[3], return pcmk_rc_ok; } -// Get CIB versions used for additions and deletions in a patchset -// Return value of true means failure; false means success -bool -xml_patch_versions(const xmlNode *patchset, int add[3], int del[3]) -{ - static const char *const vfields[] = { - PCMK_XA_ADMIN_EPOCH, - PCMK_XA_EPOCH, - PCMK_XA_NUM_UPDATES, - }; - - const xmlNode *version = pcmk__xe_first_child(patchset, PCMK_XE_VERSION, - NULL, NULL); - const xmlNode *source = pcmk__xe_first_child(version, PCMK_XE_SOURCE, NULL, - NULL); - const xmlNode *target = pcmk__xe_first_child(version, PCMK_XE_TARGET, NULL, - NULL); - int format = 1; - - crm_element_value_int(patchset, PCMK_XA_FORMAT, &format); - if (format != 2) { - crm_err("Unknown patch format: %d", format); - return true; - } - - if (source != NULL) { - for (int i = 0; i < PCMK__NELEM(vfields); i++) { - crm_element_value_int(source, vfields[i], &(del[i])); - crm_trace("Got %d for del[%s]", del[i], vfields[i]); - } - } - - if (target != NULL) { - for (int i = 0; i < PCMK__NELEM(vfields); i++) { - crm_element_value_int(target, vfields[i], &(add[i])); - crm_trace("Got %d for add[%s]", add[i], vfields[i]); - } - } - return false; -} - /*! * \internal * \brief Check whether patchset can be applied to current CIB @@ -963,3 +922,51 @@ pcmk__cib_element_in_patchset(const xmlNode *patchset, const char *element) free(element_regex); return rc; } + +// Deprecated functions kept only for backward API compatibility +// LCOV_EXCL_START + +#include + +// Return value of true means failure; false means success +bool +xml_patch_versions(const xmlNode *patchset, int add[3], int del[3]) +{ + static const char *const vfields[] = { + PCMK_XA_ADMIN_EPOCH, + PCMK_XA_EPOCH, + PCMK_XA_NUM_UPDATES, + }; + + const xmlNode *version = pcmk__xe_first_child(patchset, PCMK_XE_VERSION, + NULL, NULL); + const xmlNode *source = pcmk__xe_first_child(version, PCMK_XE_SOURCE, NULL, + NULL); + const xmlNode *target = pcmk__xe_first_child(version, PCMK_XE_TARGET, NULL, + NULL); + int format = 1; + + crm_element_value_int(patchset, PCMK_XA_FORMAT, &format); + if (format != 2) { + crm_err("Unknown patch format: %d", format); + return true; + } + + if (source != NULL) { + for (int i = 0; i < PCMK__NELEM(vfields); i++) { + crm_element_value_int(source, vfields[i], &(del[i])); + crm_trace("Got %d for del[%s]", del[i], vfields[i]); + } + } + + if (target != NULL) { + for (int i = 0; i < PCMK__NELEM(vfields); i++) { + crm_element_value_int(target, vfields[i], &(add[i])); + crm_trace("Got %d for add[%s]", add[i], vfields[i]); + } + } + return false; +} + +// LCOV_EXCL_STOP +// End deprecated API From fcfbff2d84062d87fcce2e8a416c0e74f49dcbba Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 13:40:22 -0700 Subject: [PATCH 030/186] Refactor: libcrmcommon: pcmk__digest_xml() argument is now const Signed-off-by: Reid Wahl --- include/crm/common/digest_internal.h | 4 ++-- lib/common/digest.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/include/crm/common/digest_internal.h b/include/crm/common/digest_internal.h index 5c49c1d09ed..172fad3d661 100644 --- a/include/crm/common/digest_internal.h +++ b/include/crm/common/digest_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. * @@ -43,7 +43,7 @@ typedef struct { char *pcmk__digest_on_disk_cib(xmlNode *input); char *pcmk__digest_operation(xmlNode *input); -char *pcmk__digest_xml(xmlNode *input, bool filter); +char *pcmk__digest_xml(const xmlNode *input, bool filter); bool pcmk__verify_digest(xmlNode *input, const char *expected); diff --git a/lib/common/digest.c b/lib/common/digest.c index e7d23f7088a..8c3ebd87b94 100644 --- a/lib/common/digest.c +++ b/lib/common/digest.c @@ -157,7 +157,7 @@ pcmk__digest_operation(xmlNode *input) * \return Newly allocated string containing digest */ char * -pcmk__digest_xml(xmlNode *xml, bool filter) +pcmk__digest_xml(const xmlNode *xml, bool filter) { /* @TODO Filtering accounts for significant CPU usage. Consider removing if * possible. From 02a80f2568e0deb5b9db11125a2abc2b3558064c Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 13:41:19 -0700 Subject: [PATCH 031/186] API: libcrmcommon: patchset_process_digest() const source/target args Signed-off-by: Reid Wahl --- include/crm/common/xml.h | 3 ++- lib/common/patchset.c | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/include/crm/common/xml.h b/include/crm/common/xml.h index 24a9873575e..57aeeccfcb9 100644 --- a/include/crm/common/xml.h +++ b/include/crm/common/xml.h @@ -37,7 +37,8 @@ xmlNode *xml_create_patchset( int format, xmlNode *source, xmlNode *target, bool *config, bool manage_version); int xml_apply_patchset(xmlNode *xml, xmlNode *patchset, bool check_version); -void patchset_process_digest(xmlNode *patch, xmlNode *source, xmlNode *target, bool with_digest); +void patchset_process_digest(xmlNode *patch, const xmlNode *source, + const xmlNode *target, bool with_digest); #ifdef __cplusplus } diff --git a/lib/common/patchset.c b/lib/common/patchset.c index 980029c0aaf..619af802db1 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -286,8 +286,8 @@ xml_create_patchset(int format, xmlNode *source, xmlNode *target, } void -patchset_process_digest(xmlNode *patch, xmlNode *source, xmlNode *target, - bool with_digest) +patchset_process_digest(xmlNode *patch, const xmlNode *source, + const xmlNode *target, bool with_digest) { char *digest = NULL; From 574c4d515d1a1fcf664e8825f89de34cc6a3d37d Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 13:45:09 -0700 Subject: [PATCH 032/186] Refactor: libcrmcommon: pcmk__digest_on_disk_cib() argument is now const Signed-off-by: Reid Wahl --- include/crm/common/digest_internal.h | 2 +- lib/common/digest.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/include/crm/common/digest_internal.h b/include/crm/common/digest_internal.h index 172fad3d661..b227fdefa94 100644 --- a/include/crm/common/digest_internal.h +++ b/include/crm/common/digest_internal.h @@ -41,7 +41,7 @@ typedef struct { char *digest_restart_calc; // Digest of params_restart } pcmk__op_digest_t; -char *pcmk__digest_on_disk_cib(xmlNode *input); +char *pcmk__digest_on_disk_cib(const xmlNode *input); char *pcmk__digest_operation(xmlNode *input); char *pcmk__digest_xml(const xmlNode *input, bool filter); diff --git a/lib/common/digest.c b/lib/common/digest.c index 8c3ebd87b94..151f4973bb5 100644 --- a/lib/common/digest.c +++ b/lib/common/digest.c @@ -58,7 +58,7 @@ * \return Newly allocated buffer containing dumped XML */ static GString * -dump_xml_for_digest(xmlNodePtr xml) +dump_xml_for_digest(const xmlNode *xml) { GString *buffer = g_string_sized_new(1024); @@ -81,7 +81,7 @@ dump_xml_for_digest(xmlNodePtr xml) * \note Example return value: "c048eae664dba840e1d2060f00299e9d" */ static char * -calculate_xml_digest_v1(xmlNode *input) +calculate_xml_digest_v1(const xmlNode *input) { GString *buffer = dump_xml_for_digest(input); char *digest = NULL; @@ -107,7 +107,7 @@ calculate_xml_digest_v1(xmlNode *input) * \return Newly allocated string containing digest */ char * -pcmk__digest_on_disk_cib(xmlNode *input) +pcmk__digest_on_disk_cib(const xmlNode *input) { /* Always use the v1 format for on-disk digests. * * Switching to v2 affects even full-restart upgrades, so it would be a From 223b70034be6119d4c8e61880f4a67555fd5795b Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 13:46:07 -0700 Subject: [PATCH 033/186] Refactor: libcrmcommon: pcmk__verify_digest() argument is now const Signed-off-by: Reid Wahl --- include/crm/common/digest_internal.h | 2 +- lib/common/digest.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/crm/common/digest_internal.h b/include/crm/common/digest_internal.h index b227fdefa94..977dce8806d 100644 --- a/include/crm/common/digest_internal.h +++ b/include/crm/common/digest_internal.h @@ -45,7 +45,7 @@ char *pcmk__digest_on_disk_cib(const xmlNode *input); char *pcmk__digest_operation(xmlNode *input); char *pcmk__digest_xml(const xmlNode *input, bool filter); -bool pcmk__verify_digest(xmlNode *input, const char *expected); +bool pcmk__verify_digest(const xmlNode *input, const char *expected); #ifdef __cplusplus } diff --git a/lib/common/digest.c b/lib/common/digest.c index 151f4973bb5..0401c9404f1 100644 --- a/lib/common/digest.c +++ b/lib/common/digest.c @@ -197,7 +197,7 @@ pcmk__digest_xml(const xmlNode *xml, bool filter) * \return true if digests match, false on mismatch or error */ bool -pcmk__verify_digest(xmlNode *input, const char *expected) +pcmk__verify_digest(const xmlNode *input, const char *expected) { char *calculated = NULL; bool passed; From 03bf6b7e32b6c2ddffa45e81d6b1be408360eb07 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 13:52:55 -0700 Subject: [PATCH 034/186] Refactor: libcrmcommon: pcmk__digest_operation() argument is now const Signed-off-by: Reid Wahl --- include/crm/common/digest_internal.h | 2 +- lib/common/digest.c | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/include/crm/common/digest_internal.h b/include/crm/common/digest_internal.h index 977dce8806d..729b4e8cbcf 100644 --- a/include/crm/common/digest_internal.h +++ b/include/crm/common/digest_internal.h @@ -42,7 +42,7 @@ typedef struct { } pcmk__op_digest_t; char *pcmk__digest_on_disk_cib(const xmlNode *input); -char *pcmk__digest_operation(xmlNode *input); +char *pcmk__digest_operation(const xmlNode *input); char *pcmk__digest_xml(const xmlNode *input, bool filter); bool pcmk__verify_digest(const xmlNode *input, const char *expected); diff --git a/lib/common/digest.c b/lib/common/digest.c index 0401c9404f1..ec7c8bdc103 100644 --- a/lib/common/digest.c +++ b/lib/common/digest.c @@ -122,25 +122,29 @@ pcmk__digest_on_disk_cib(const xmlNode *input) * \internal * \brief Calculate and return digest of an operation XML element * - * The digest is invariant to changes in the order of XML attributes, provided - * that \p input has no children. + * The digest is invariant to changes in the order of XML attributes. * - * \param[in] input Root of XML to digest + * \param[in] input Root of XML to digest (must have no children) * * \return Newly allocated string containing digest */ char * -pcmk__digest_operation(xmlNode *input) +pcmk__digest_operation(const xmlNode *input) { /* Switching to v2 digests would likely cause restarts during rolling * upgrades. * * @TODO Confirm this. Switch to v2 if safe, or drop this TODO otherwise. */ - xmlNode *sorted = pcmk__xml_copy(NULL, input); char *digest = NULL; + xmlNode *sorted = NULL; + + pcmk__assert(input->children == NULL); + sorted = pcmk__xe_create(NULL, (const char *) input->name); + pcmk__xe_copy_attrs(sorted, input, pcmk__xaf_none); pcmk__xe_sort_attrs(sorted); + digest = calculate_xml_digest_v1(sorted); pcmk__xml_free(sorted); From e157ac1f64e559321e96b7f7586cc71dacfc4ff8 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 14:08:23 -0700 Subject: [PATCH 035/186] Refactor: libcrmcommon: New pcmk__xml_patchset_add_digest() To replace patchset_process_digest(). Note that the fourth argument of patchset_process_digest(), if false, caused the function to return immediately. We have to preserve this behavior in the callers. Signed-off-by: Reid Wahl --- include/crm/common/xml_internal.h | 1 + lib/cib/cib_utils.c | 4 +++- lib/common/patchset.c | 26 ++++++++++++++++++++++++++ tools/crm_diff.c | 3 +-- 4 files changed, 31 insertions(+), 3 deletions(-) diff --git a/include/crm/common/xml_internal.h b/include/crm/common/xml_internal.h index 3e186c74852..a3b455cc0df 100644 --- a/include/crm/common/xml_internal.h +++ b/include/crm/common/xml_internal.h @@ -436,6 +436,7 @@ pcmk__xml_attr_value(const xmlAttr *attr) : (const char *) attr->children->content; } +void pcmk__xml_patchset_add_digest(xmlNode *patchset, const xmlNode *target); int pcmk__xml_patchset_versions(const xmlNode *patchset, int source[3], int target[3]); diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c index 9127e04b7c3..e591550d0f6 100644 --- a/lib/cib/cib_utils.c +++ b/lib/cib/cib_utils.c @@ -429,7 +429,9 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, pcmk__xml_commit_changes(scratch->doc); if(local_diff) { - patchset_process_digest(local_diff, patchset_cib, scratch, with_digest); + if (with_digest) { + pcmk__xml_patchset_add_digest(local_diff, scratch); + } pcmk__log_xml_patchset(LOG_INFO, local_diff); crm_log_xml_trace(local_diff, "raw patch"); } diff --git a/lib/common/patchset.c b/lib/common/patchset.c index 619af802db1..d49eb9d0431 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -285,6 +285,32 @@ xml_create_patchset(int format, xmlNode *source, xmlNode *target, return xml_create_patchset_v2(source, target); } +/*! + * \internal + * \brief Add a digest of a patchset's target XML to the patchset + * + * \param[in,out] patchset XML patchset + * \param[in] target Target XML + */ +void +pcmk__xml_patchset_add_digest(xmlNode *patchset, const xmlNode *target) +{ + char *digest = NULL; + + CRM_CHECK((patchset != NULL) && (target != NULL), return); + + /* If tracking is enabled and the document is dirty, we could get an + * incorrect digest. Call pcmk__xml_commit_changes() before calling this. + */ + CRM_CHECK(!pcmk__xml_doc_all_flags_set(target->doc, pcmk__xf_dirty), + return); + + digest = pcmk__digest_xml(target, true); + + crm_xml_add(patchset, PCMK__XA_DIGEST, digest); + free(digest); +} + void patchset_process_digest(xmlNode *patch, const xmlNode *source, const xmlNode *target, bool with_digest) diff --git a/tools/crm_diff.c b/tools/crm_diff.c index f5292e9e064..09aa272ae12 100644 --- a/tools/crm_diff.c +++ b/tools/crm_diff.c @@ -198,9 +198,8 @@ generate_patch(xmlNode *object_original, xmlNode *object_new, const char *xml_fi return pcmk_rc_ok; // No changes } - patchset_process_digest(output, object_original, object_new, as_cib); - if (as_cib) { + pcmk__xml_patchset_add_digest(output, object_new); log_patch_cib_versions(output); } else if (no_version) { From 2e357430a969fa4e36f899eab028a179c25ce922 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 14:21:51 -0700 Subject: [PATCH 036/186] API: libcrmcommon: Deprecate patchset_process_digest() Signed-off-by: Reid Wahl --- include/crm/common/xml.h | 3 -- include/crm/common/xml_compat.h | 4 +++ lib/common/patchset.c | 50 ++++++++++++++++----------------- 3 files changed, 29 insertions(+), 28 deletions(-) diff --git a/include/crm/common/xml.h b/include/crm/common/xml.h index 57aeeccfcb9..754b73d2804 100644 --- a/include/crm/common/xml.h +++ b/include/crm/common/xml.h @@ -37,9 +37,6 @@ xmlNode *xml_create_patchset( int format, xmlNode *source, xmlNode *target, bool *config, bool manage_version); int xml_apply_patchset(xmlNode *xml, xmlNode *patchset, bool check_version); -void patchset_process_digest(xmlNode *patch, const xmlNode *source, - const xmlNode *target, bool with_digest); - #ifdef __cplusplus } #endif diff --git a/include/crm/common/xml_compat.h b/include/crm/common/xml_compat.h index 6d4ea0166a0..76323d1230d 100644 --- a/include/crm/common/xml_compat.h +++ b/include/crm/common/xml_compat.h @@ -127,6 +127,10 @@ void xml_calculate_significant_changes(xmlNode *old_xml, xmlNode *new_xml); //! \deprecated Do not use bool xml_patch_versions(const xmlNode *patchset, int add[3], int del[3]); +//! \deprecated Do not use +void patchset_process_digest(xmlNode *patch, const xmlNode *source, + const xmlNode *target, bool with_digest); + #ifdef __cplusplus } #endif diff --git a/lib/common/patchset.c b/lib/common/patchset.c index d49eb9d0431..179300697b2 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -311,31 +311,6 @@ pcmk__xml_patchset_add_digest(xmlNode *patchset, const xmlNode *target) free(digest); } -void -patchset_process_digest(xmlNode *patch, const xmlNode *source, - const xmlNode *target, bool with_digest) -{ - char *digest = NULL; - - if ((patch == NULL) || (source == NULL) || (target == NULL) - || !with_digest) { - return; - } - - /* We should always call pcmk__xml_commit_changes() before calculating a - * digest. Otherwise, with an on-tracking dirty target, we could get a wrong - * digest. - */ - CRM_LOG_ASSERT(!pcmk__xml_doc_all_flags_set(target->doc, pcmk__xf_dirty)); - - digest = pcmk__digest_xml(target, true); - - crm_xml_add(patch, PCMK__XA_DIGEST, digest); - free(digest); - - return; -} - /*! * \internal * \brief Get the source and target CIB versions from an XML patchset @@ -994,5 +969,30 @@ xml_patch_versions(const xmlNode *patchset, int add[3], int del[3]) return false; } +void +patchset_process_digest(xmlNode *patch, const xmlNode *source, + const xmlNode *target, bool with_digest) +{ + char *digest = NULL; + + if ((patch == NULL) || (source == NULL) || (target == NULL) + || !with_digest) { + return; + } + + /* We should always call pcmk__xml_commit_changes() before calculating a + * digest. Otherwise, with an on-tracking dirty target, we could get a wrong + * digest. + */ + CRM_LOG_ASSERT(!pcmk__xml_doc_all_flags_set(target->doc, pcmk__xf_dirty)); + + digest = pcmk__digest_xml(target, true); + + crm_xml_add(patch, PCMK__XA_DIGEST, digest); + free(digest); + + return; +} + // LCOV_EXCL_STOP // End deprecated API From cb63a4395a3dba68316c661c6824052809029e68 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 14:22:55 -0700 Subject: [PATCH 037/186] Doc: libcrmcommon: Document need to maintain last two public XML funcs Signed-off-by: Reid Wahl --- include/crm/common/xml.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/crm/common/xml.h b/include/crm/common/xml.h index 754b73d2804..8d9aef05af7 100644 --- a/include/crm/common/xml.h +++ b/include/crm/common/xml.h @@ -29,8 +29,8 @@ extern "C" { * \ingroup core */ -/* - * Searching & Modifying +/* @COMPAT Create and apply patchset functions must remain public until we + * create libpacemaker equivalents */ xmlNode *xml_create_patchset( From 806cf9a56df116dfd6c7cdf584bdeab1a0a93c74 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 14:27:31 -0700 Subject: [PATCH 038/186] Refactor: libcrmcommon: Drop xml_acl_enabled() internally Signed-off-by: Reid Wahl --- lib/common/acl.c | 18 ++++-- lib/common/tests/acl/Makefile.am | 5 +- lib/common/tests/acl/xml_acl_enabled_test.c | 61 --------------------- 3 files changed, 14 insertions(+), 70 deletions(-) delete mode 100644 lib/common/tests/acl/xml_acl_enabled_test.c diff --git a/lib/common/acl.c b/lib/common/acl.c index e14d3f14c44..e34dabe4095 100644 --- a/lib/common/acl.c +++ b/lib/common/acl.c @@ -216,16 +216,20 @@ void pcmk__apply_acl(xmlNode *xml) { GList *aIter = NULL; - xml_doc_private_t *docpriv = xml->doc->_private; - xml_node_private_t *nodepriv; + xml_doc_private_t *docpriv = NULL; + xml_node_private_t *nodepriv = NULL; xmlXPathObject *xpathObj = NULL; - if (!xml_acl_enabled(xml)) { + pcmk__assert(xml != NULL); + + if (!pcmk__xml_doc_all_flags_set(xml->doc, pcmk__xf_acl_enabled)) { crm_trace("Skipping ACLs for user '%s' because not enabled for this XML", docpriv->acl_user); return; } + docpriv = xml->doc->_private; + for (aIter = docpriv->acls; aIter != NULL; aIter = aIter->next) { int max = 0, lpc = 0; xml_acl_t *acl = aIter->data; @@ -681,7 +685,9 @@ xml_acl_denied(const xmlNode *xml) void xml_acl_disable(xmlNode *xml) { - if (xml_acl_enabled(xml)) { + if ((xml != NULL) + && pcmk__xml_doc_all_flags_set(xml->doc, pcmk__xf_acl_enabled)) { + xml_doc_private_t *docpriv = xml->doc->_private; /* Catch anything that was created but shouldn't have been */ @@ -751,8 +757,8 @@ pcmk__check_acl(xmlNode *xml, const char *attr_name, enum pcmk__xml_flags mode) pcmk__assert((xml != NULL) && (xml->doc->_private != NULL)); - if (!pcmk__xml_doc_all_flags_set(xml->doc, pcmk__xf_tracking) - || !xml_acl_enabled(xml)) { + if (!pcmk__xml_doc_all_flags_set(xml->doc, + pcmk__xf_tracking|pcmk__xf_acl_enabled)) { return true; } diff --git a/lib/common/tests/acl/Makefile.am b/lib/common/tests/acl/Makefile.am index d8b8b06cbe2..e9e001283f4 100644 --- a/lib/common/tests/acl/Makefile.am +++ b/lib/common/tests/acl/Makefile.am @@ -1,5 +1,5 @@ # -# Copyright 2021-2024 the Pacemaker project contributors +# Copyright 2021-2025 the Pacemaker project contributors # # The version control history for this file may have further details. # @@ -15,7 +15,6 @@ include $(top_srcdir)/mk/unittest.mk check_PROGRAMS = pcmk__is_user_in_group_test \ pcmk_acl_required_test \ - xml_acl_denied_test \ - xml_acl_enabled_test + xml_acl_denied_test TESTS = $(check_PROGRAMS) diff --git a/lib/common/tests/acl/xml_acl_enabled_test.c b/lib/common/tests/acl/xml_acl_enabled_test.c deleted file mode 100644 index 6a920a3c73c..00000000000 --- a/lib/common/tests/acl/xml_acl_enabled_test.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2020-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 "../../crmcommon_private.h" - -static void -is_xml_acl_enabled_without_node(void **state) -{ - xmlNode *test_xml = pcmk__xe_create(NULL, "test_xml"); - assert_false(xml_acl_enabled(test_xml)); - - test_xml->doc->_private = NULL; - assert_false(xml_acl_enabled(test_xml)); - - test_xml->doc = NULL; - assert_false(xml_acl_enabled(test_xml)); - - test_xml = NULL; - assert_false(xml_acl_enabled(test_xml)); -} - -static void -is_xml_acl_enabled_with_node(void **state) -{ - xml_doc_private_t *docpriv; - - xmlNode *test_xml = pcmk__xe_create(NULL, "test_xml"); - - // allocate memory for _private, which is NULL by default - test_xml->doc->_private = pcmk__assert_alloc(1, sizeof(xml_doc_private_t)); - - assert_false(xml_acl_enabled(test_xml)); - - // cast _private from void* to xml_doc_private_t* - docpriv = test_xml->doc->_private; - - // enable an irrelevant flag - docpriv->flags |= pcmk__xf_acl_denied; - - assert_false(xml_acl_enabled(test_xml)); - - // enable pcmk__xf_acl_enabled - docpriv->flags |= pcmk__xf_acl_enabled; - - assert_true(xml_acl_enabled(test_xml)); -} - -PCMK__UNIT_TEST(pcmk__xml_test_setup_group, pcmk__xml_test_teardown_group, - cmocka_unit_test(is_xml_acl_enabled_without_node), - cmocka_unit_test(is_xml_acl_enabled_with_node)) From d912cb0f4571afecf7fb7738a361bfe88d2a04e1 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 14:32:13 -0700 Subject: [PATCH 039/186] API: libcrmcommon: Deprecate xml_acl_enabled() Signed-off-by: Reid Wahl --- include/crm/common/Makefile.am | 3 ++- include/crm/common/acl.h | 7 ++++-- include/crm/common/acl_compat.h | 37 ++++++++++++++++++++++++++++++++ lib/common/acl.c | 38 +++++++++++++++++---------------- 4 files changed, 64 insertions(+), 21 deletions(-) create mode 100644 include/crm/common/acl_compat.h diff --git a/include/crm/common/Makefile.am b/include/crm/common/Makefile.am index 7b9a676ffac..a9282737812 100644 --- a/include/crm/common/Makefile.am +++ b/include/crm/common/Makefile.am @@ -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. # @@ -12,6 +12,7 @@ include $(top_srcdir)/mk/common.mk headerdir=$(pkgincludedir)/crm/common header_HEADERS = acl.h \ + acl_compat.h \ actions.h \ agents.h \ cib.h \ diff --git a/include/crm/common/acl.h b/include/crm/common/acl.h index f8f4b688d40..0933a4554c6 100644 --- a/include/crm/common/acl.h +++ b/include/crm/common/acl.h @@ -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. * @@ -23,7 +23,6 @@ extern "C" { * \ingroup core */ -bool xml_acl_enabled(const xmlNode *xml); void xml_acl_disable(xmlNode *xml); bool xml_acl_denied(const xmlNode *xml); bool xml_acl_filtered_copy(const char *user, xmlNode* acl_source, xmlNode *xml, @@ -31,6 +30,10 @@ bool xml_acl_filtered_copy(const char *user, xmlNode* acl_source, xmlNode *xml, bool pcmk_acl_required(const char *user); +#if !defined(PCMK_ALLOW_DEPRECATED) || (PCMK_ALLOW_DEPRECATED == 1) +#include +#endif // !defined(PCMK_ALLOW_DEPRECATED) || (PCMK_ALLOW_DEPRECATED == 1) + #ifdef __cplusplus } #endif diff --git a/include/crm/common/acl_compat.h b/include/crm/common/acl_compat.h new file mode 100644 index 00000000000..fd67613ab70 --- /dev/null +++ b/include/crm/common/acl_compat.h @@ -0,0 +1,37 @@ +/* + * Copyright 2004-2025 the Pacemaker project contributors + * + * The version control history for this file may have further details. + * + * This source code is licensed under the GNU Lesser General Public License + * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY. + */ + +#ifndef PCMK__CRM_COMMON_ACL_COMPAT__H +#define PCMK__CRM_COMMON_ACL_COMPAT__H + +#include + +#include // xmlNode + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file + * \brief Deprecated Pacemaker ACL API + * \ingroup core + * \deprecated Do not include this header directly. The XML APIs in this + * header, and the header itself, will be removed in a future + * release. + */ + +//! \deprecated Do not use +bool xml_acl_enabled(const xmlNode *xml); + +#ifdef __cplusplus +} +#endif + +#endif // PCMK__CRM_COMMON_ACL_COMPAT__H diff --git a/lib/common/acl.c b/lib/common/acl.c index e34dabe4095..12c741e0e53 100644 --- a/lib/common/acl.c +++ b/lib/common/acl.c @@ -697,24 +697,6 @@ xml_acl_disable(xmlNode *xml) } } -/*! - * \brief Check whether or not an XML node is ACL-enabled - * - * \param[in] xml node to check - * - * \return true if XML node exists and is ACL-enabled, false otherwise - */ -bool -xml_acl_enabled(const xmlNode *xml) -{ - if (xml && xml->doc && xml->doc->_private){ - xml_doc_private_t *docpriv = xml->doc->_private; - - return pcmk_is_set(docpriv->flags, pcmk__xf_acl_enabled); - } - return false; -} - /*! * \internal * \brief Deny access to an XML tree's document based on ACLs @@ -926,3 +908,23 @@ pcmk__update_acl_user(xmlNode *request, const char *field, return requested_user; } + +// Deprecated functions kept only for backward API compatibility +// LCOV_EXCL_START + +#include +#include + +bool +xml_acl_enabled(const xmlNode *xml) +{ + if (xml && xml->doc && xml->doc->_private){ + xml_doc_private_t *docpriv = xml->doc->_private; + + return pcmk_is_set(docpriv->flags, pcmk__xf_acl_enabled); + } + return false; +} + +// LCOV_EXCL_STOP +// End deprecated API From 8101669dddbff721f9fe2d4d1d56b3dec2919284 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 14:35:47 -0700 Subject: [PATCH 040/186] Refactor: tools: Drop forward declarations in crm_diff.c And limit line length of SUMMARY Signed-off-by: Reid Wahl --- tools/crm_diff.c | 55 +++++++++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 26 deletions(-) diff --git a/tools/crm_diff.c b/tools/crm_diff.c index 09aa272ae12..cdd17127b2a 100644 --- a/tools/crm_diff.c +++ b/tools/crm_diff.c @@ -24,8 +24,9 @@ #include #include -#define SUMMARY "Compare two Pacemaker configurations (in XML format) to produce a custom diff-like output, " \ - "or apply such an output as a patch" +#define SUMMARY "Compare two Pacemaker configurations (in XML format) to " \ + "produce a custom diff-like output, or apply such an output " \ + "as a patch" struct { gboolean apply; @@ -38,9 +39,32 @@ struct { char *xml_file_new; } options; -gboolean new_string_cb(const gchar *option_name, const gchar *optarg, gpointer data, GError **error); -gboolean original_string_cb(const gchar *option_name, const gchar *optarg, gpointer data, GError **error); -gboolean patch_cb(const gchar *option_name, const gchar *optarg, gpointer data, GError **error); +static gboolean +new_string_cb(const gchar *option_name, const gchar *optarg, gpointer data, + GError **error) +{ + options.raw_new = TRUE; + pcmk__str_update(&options.xml_file_new, optarg); + return TRUE; +} + +static gboolean +original_string_cb(const gchar *option_name, const gchar *optarg, gpointer data, + GError **error) +{ + options.raw_original = TRUE; + pcmk__str_update(&options.xml_file_original, optarg); + return TRUE; +} + +static gboolean +patch_cb(const gchar *option_name, const gchar *optarg, gpointer data, + GError **error) +{ + options.apply = TRUE; + pcmk__str_update(&options.xml_file_new, optarg); + return TRUE; +} static GOptionEntry original_xml_entries[] = { { "original", 'o', 0, G_OPTION_ARG_STRING, &options.xml_file_original, @@ -81,27 +105,6 @@ static GOptionEntry addl_entries[] = { { NULL } }; -gboolean -new_string_cb(const gchar *option_name, const gchar *optarg, gpointer data, GError **error) { - options.raw_new = TRUE; - pcmk__str_update(&options.xml_file_new, optarg); - return TRUE; -} - -gboolean -original_string_cb(const gchar *option_name, const gchar *optarg, gpointer data, GError **error) { - options.raw_original = TRUE; - pcmk__str_update(&options.xml_file_original, optarg); - return TRUE; -} - -gboolean -patch_cb(const gchar *option_name, const gchar *optarg, gpointer data, GError **error) { - options.apply = TRUE; - pcmk__str_update(&options.xml_file_new, optarg); - return TRUE; -} - static void print_patch(xmlNode *patch) { From 3584d434a0fd8741705e8c5f77ae68fde2581993 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 14:42:19 -0700 Subject: [PATCH 041/186] Doc: tools: Document input source precedence in crm_diff help output This is highly unfortunate, but changing it would break backward compatibility. Signed-off-by: Reid Wahl --- tools/crm_diff.c | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/tools/crm_diff.c b/tools/crm_diff.c index cdd17127b2a..60e1dd2480e 100644 --- a/tools/crm_diff.c +++ b/tools/crm_diff.c @@ -27,6 +27,7 @@ #define SUMMARY "Compare two Pacemaker configurations (in XML format) to " \ "produce a custom diff-like output, or apply such an output " \ "as a patch" +#define INDENT " " struct { gboolean apply; @@ -66,12 +67,17 @@ patch_cb(const gchar *option_name, const gchar *optarg, gpointer data, return TRUE; } +// @COMPAT Use last-one-wins for original/new/patch input sources static GOptionEntry original_xml_entries[] = { { "original", 'o', 0, G_OPTION_ARG_STRING, &options.xml_file_original, - "XML is contained in the named file", + "XML is contained in the named file. Currently --original-string and\n" + INDENT "--stdin both override this. In a future release, the last one\n" + INDENT "specified will be used.", "FILE" }, { "original-string", 'O', 0, G_OPTION_ARG_CALLBACK, original_string_cb, - "XML is contained in the supplied string", + "XML is contained in the supplied string. Currently this takes\n" + INDENT "precedence over both --stdin and --original. In a future\n" + INDENT "release, the last one specified will be used.", "STRING" }, { NULL } @@ -79,13 +85,22 @@ static GOptionEntry original_xml_entries[] = { static GOptionEntry operation_entries[] = { { "new", 'n', 0, G_OPTION_ARG_STRING, &options.xml_file_new, - "Compare the original XML to the contents of the named file", + "Compare the original XML to the contents of the named file. Currently\n" + INDENT "--new-string and --stdin both override this. In a future\n" + INDENT "release, the last one specified will be used.", "FILE" }, { "new-string", 'N', 0, G_OPTION_ARG_CALLBACK, new_string_cb, - "Compare the original XML with the contents of the supplied string", + "Compare the original XML with the contents of the supplied string.\n" + INDENT "Currently this takes precedence over --stdin, --patch, and\n" + INDENT "--new. In a future release, the last one specified will be used.", "STRING" }, { "patch", 'p', 0, G_OPTION_ARG_CALLBACK, patch_cb, - "Patch the original XML with the contents of the named file", + "Patch the original XML with the contents of the named file. Currently\n" + INDENT "--new-string, --stdin, and (if specified later) --new override\n" + INDENT "the input source specified here. In a future release, the last\n" + INDENT "one specified will be used. Note: even if this input source is\n" + INDENT "overridden, the input source will be applied as a patch to the\n" + INDENT "original XML.", "FILE" }, { NULL } @@ -93,13 +108,16 @@ static GOptionEntry operation_entries[] = { static GOptionEntry addl_entries[] = { { "cib", 'c', 0, G_OPTION_ARG_NONE, &options.as_cib, - "Compare/patch the inputs as a CIB (includes versions details)", + "Compare/patch the inputs as a CIB (includes version details)", NULL }, { "stdin", 's', 0, G_OPTION_ARG_NONE, &options.use_stdin, - "", + "Get the original XML and new (or patch) XML from stdin. Currently\n" + INDENT "--original-string and --new-string override this for original\n" + INDENT "and new/patch XML, respectively. In a future release, the last\n" + INDENT "one specified will be used.", NULL }, { "no-version", 'u', 0, G_OPTION_ARG_NONE, &options.no_version, - "Generate the difference without versions details", + "Generate the difference without version details", NULL }, { NULL } From 44295516330f43ea59a46af6520e6ca631f6815c Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 14:52:43 -0700 Subject: [PATCH 042/186] Refactor: tools: Overhaul input option storage in crm_diff.c It's simpler to use multiple strings than to have a boolean represent whether a file name should be treated as a raw string. When we can make the input precedence sane at a compatibility break, an enum for input source will likely make the most sense. Then we can bring back callbacks to set the enum value. Also rename "apply" to "patch" for clarity, and use G_OPTION_FLAG_NONE. It's okay to continue passing options.source_file to generate_patch(). In the past, if it were a raw XML string, we would pass that as the argument. That's not a pretty prefix for logging XML. Use G_OPTION_ARG_NONE where appropriate. Signed-off-by: Reid Wahl --- tools/crm_diff.c | 90 ++++++++++++++++++++++-------------------------- 1 file changed, 41 insertions(+), 49 deletions(-) diff --git a/tools/crm_diff.c b/tools/crm_diff.c index 60e1dd2480e..60a5427c142 100644 --- a/tools/crm_diff.c +++ b/tools/crm_diff.c @@ -9,6 +9,7 @@ #include +#include // bool #include #include #include @@ -30,51 +31,36 @@ #define INDENT " " struct { - gboolean apply; + gchar *source_file; + gchar *target_file; + gchar *source_string; + gchar *target_string; + bool patch; gboolean as_cib; gboolean no_version; - gboolean raw_original; - gboolean raw_new; gboolean use_stdin; - char *xml_file_original; - char *xml_file_new; } options; -static gboolean -new_string_cb(const gchar *option_name, const gchar *optarg, gpointer data, - GError **error) -{ - options.raw_new = TRUE; - pcmk__str_update(&options.xml_file_new, optarg); - return TRUE; -} - -static gboolean -original_string_cb(const gchar *option_name, const gchar *optarg, gpointer data, - GError **error) -{ - options.raw_original = TRUE; - pcmk__str_update(&options.xml_file_original, optarg); - return TRUE; -} - static gboolean patch_cb(const gchar *option_name, const gchar *optarg, gpointer data, GError **error) { - options.apply = TRUE; - pcmk__str_update(&options.xml_file_new, optarg); + options.patch = true; + g_free(options.target_file); + options.target_file = g_strdup(optarg); return TRUE; } // @COMPAT Use last-one-wins for original/new/patch input sources static GOptionEntry original_xml_entries[] = { - { "original", 'o', 0, G_OPTION_ARG_STRING, &options.xml_file_original, + { "original", 'o', G_OPTION_FLAG_NONE, G_OPTION_ARG_STRING, + &options.source_file, "XML is contained in the named file. Currently --original-string and\n" INDENT "--stdin both override this. In a future release, the last one\n" INDENT "specified will be used.", "FILE" }, - { "original-string", 'O', 0, G_OPTION_ARG_CALLBACK, original_string_cb, + { "original-string", 'O', G_OPTION_FLAG_NONE, G_OPTION_ARG_CALLBACK, + &options.source_string, "XML is contained in the supplied string. Currently this takes\n" INDENT "precedence over both --stdin and --original. In a future\n" INDENT "release, the last one specified will be used.", @@ -84,17 +70,18 @@ static GOptionEntry original_xml_entries[] = { }; static GOptionEntry operation_entries[] = { - { "new", 'n', 0, G_OPTION_ARG_STRING, &options.xml_file_new, + { "new", 'n', G_OPTION_FLAG_NONE, G_OPTION_ARG_STRING, &options.target_file, "Compare the original XML to the contents of the named file. Currently\n" INDENT "--new-string and --stdin both override this. In a future\n" INDENT "release, the last one specified will be used.", "FILE" }, - { "new-string", 'N', 0, G_OPTION_ARG_CALLBACK, new_string_cb, + { "new-string", 'N', G_OPTION_FLAG_NONE, G_OPTION_ARG_CALLBACK, + &options.target_string, "Compare the original XML with the contents of the supplied string.\n" INDENT "Currently this takes precedence over --stdin, --patch, and\n" INDENT "--new. In a future release, the last one specified will be used.", "STRING" }, - { "patch", 'p', 0, G_OPTION_ARG_CALLBACK, patch_cb, + { "patch", 'p', G_OPTION_FLAG_NONE, G_OPTION_ARG_CALLBACK, patch_cb, "Patch the original XML with the contents of the named file. Currently\n" INDENT "--new-string, --stdin, and (if specified later) --new override\n" INDENT "the input source specified here. In a future release, the last\n" @@ -107,16 +94,17 @@ static GOptionEntry operation_entries[] = { }; static GOptionEntry addl_entries[] = { - { "cib", 'c', 0, G_OPTION_ARG_NONE, &options.as_cib, + { "cib", 'c', G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, &options.as_cib, "Compare/patch the inputs as a CIB (includes version details)", NULL }, - { "stdin", 's', 0, G_OPTION_ARG_NONE, &options.use_stdin, + { "stdin", 's', G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, &options.use_stdin, "Get the original XML and new (or patch) XML from stdin. Currently\n" INDENT "--original-string and --new-string override this for original\n" INDENT "and new/patch XML, respectively. In a future release, the last\n" INDENT "one specified will be used.", NULL }, - { "no-version", 'u', 0, G_OPTION_ARG_NONE, &options.no_version, + { "no-version", 'u', G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, + &options.no_version, "Generate the difference without version details", NULL }, @@ -183,8 +171,8 @@ log_patch_cib_versions(xmlNode *patch) // \return Standard Pacemaker return code static int -generate_patch(xmlNode *object_original, xmlNode *object_new, const char *xml_file_new, - gboolean as_cib, gboolean no_version) +generate_patch(xmlNode *object_original, xmlNode *object_new, + const char *target_file, bool as_cib, bool no_version) { const char *vfields[] = { PCMK_XA_ADMIN_EPOCH, @@ -208,7 +196,7 @@ generate_patch(xmlNode *object_original, xmlNode *object_new, const char *xml_fi pcmk__xml_doc_set_flags(object_new->doc, pcmk__xf_ignore_attr_pos); } pcmk__xml_mark_changes(object_original, object_new); - crm_log_xml_debug(object_new, (xml_file_new? xml_file_new: "target")); + crm_log_xml_debug(object_new, pcmk__s(target_file, "target")); output = xml_create_patchset(0, object_original, object_new, NULL, FALSE); @@ -295,7 +283,7 @@ main(int argc, char **argv) pcmk__cli_help('v'); } - if (options.apply && options.no_version) { + if (options.patch && options.no_version) { fprintf(stderr, "warning: -u/--no-version ignored with -p/--patch\n"); } else if (options.as_cib && options.no_version) { fprintf(stderr, "error: -u/--no-version incompatible with -c/--cib\n"); @@ -303,26 +291,26 @@ main(int argc, char **argv) goto done; } - if (options.raw_original) { - object_original = pcmk__xml_parse(options.xml_file_original); + if (options.source_string != NULL) { + object_original = pcmk__xml_parse(options.source_string); } else if (options.use_stdin) { fprintf(stderr, "Input first XML fragment:"); object_original = pcmk__xml_read(NULL); - } else if (options.xml_file_original != NULL) { - object_original = pcmk__xml_read(options.xml_file_original); + } else if (options.source_file != NULL) { + object_original = pcmk__xml_read(options.source_file); } - if (options.raw_new) { - object_new = pcmk__xml_parse(options.xml_file_new); + if (options.target_string != NULL) { + object_new = pcmk__xml_parse(options.target_string); } else if (options.use_stdin) { fprintf(stderr, "Input second XML fragment:"); object_new = pcmk__xml_read(NULL); - } else if (options.xml_file_new != NULL) { - object_new = pcmk__xml_read(options.xml_file_new); + } else if (options.target_file != NULL) { + object_new = pcmk__xml_read(options.target_file); } if (object_original == NULL) { @@ -336,18 +324,22 @@ main(int argc, char **argv) goto done; } - if (options.apply) { + if (options.patch) { rc = apply_patch(object_original, object_new, options.as_cib); } else { - rc = generate_patch(object_original, object_new, options.xml_file_new, options.as_cib, options.no_version); + rc = generate_patch(object_original, object_new, options.target_file, + options.as_cib, options.no_version); } exit_code = pcmk_rc2exitc(rc); done: g_strfreev(processed_args); pcmk__free_arg_context(context); - free(options.xml_file_original); - free(options.xml_file_new); + + g_free(options.source_file); + g_free(options.target_file); + g_free(options.source_string); + g_free(options.target_string); pcmk__xml_free(object_original); pcmk__xml_free(object_new); From 2d27fe6345d6041db856266cde70d0ce76694f9f Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 14:59:48 -0700 Subject: [PATCH 043/186] Refactor: tools: Use source/target consistently in crm_diff.c Signed-off-by: Reid Wahl --- tools/crm_diff.c | 50 ++++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/tools/crm_diff.c b/tools/crm_diff.c index 60a5427c142..1f6e6904811 100644 --- a/tools/crm_diff.c +++ b/tools/crm_diff.c @@ -171,8 +171,8 @@ log_patch_cib_versions(xmlNode *patch) // \return Standard Pacemaker return code static int -generate_patch(xmlNode *object_original, xmlNode *object_new, - const char *target_file, bool as_cib, bool no_version) +generate_patch(xmlNode *source, xmlNode *target, const char *target_file, + bool as_cib, bool no_version) { const char *vfields[] = { PCMK_XA_ADMIN_EPOCH, @@ -188,27 +188,27 @@ generate_patch(xmlNode *object_original, xmlNode *object_new, int lpc; for (lpc = 0; lpc < PCMK__NELEM(vfields); lpc++) { - crm_copy_xml_element(object_original, object_new, vfields[lpc]); + crm_copy_xml_element(source, target, vfields[lpc]); } } if (as_cib) { - pcmk__xml_doc_set_flags(object_new->doc, pcmk__xf_ignore_attr_pos); + pcmk__xml_doc_set_flags(target->doc, pcmk__xf_ignore_attr_pos); } - pcmk__xml_mark_changes(object_original, object_new); - crm_log_xml_debug(object_new, pcmk__s(target_file, "target")); + pcmk__xml_mark_changes(source, target); + crm_log_xml_debug(target, pcmk__s(target_file, "target")); - output = xml_create_patchset(0, object_original, object_new, NULL, FALSE); + output = xml_create_patchset(0, source, target, NULL, FALSE); - pcmk__log_xml_changes(LOG_INFO, object_new); - pcmk__xml_commit_changes(object_new->doc); + pcmk__log_xml_changes(LOG_INFO, target); + pcmk__xml_commit_changes(target->doc); if (output == NULL) { return pcmk_rc_ok; // No changes } if (as_cib) { - pcmk__xml_patchset_add_digest(output, object_new); + pcmk__xml_patchset_add_digest(output, target); log_patch_cib_versions(output); } else if (no_version) { @@ -257,8 +257,8 @@ build_arg_context(pcmk__common_args_t *args) { int main(int argc, char **argv) { - xmlNode *object_original = NULL; - xmlNode *object_new = NULL; + xmlNode *source = NULL; + xmlNode *target = NULL; crm_exit_t exit_code = CRM_EX_OK; GError *error = NULL; @@ -292,43 +292,43 @@ main(int argc, char **argv) } if (options.source_string != NULL) { - object_original = pcmk__xml_parse(options.source_string); + source = pcmk__xml_parse(options.source_string); } else if (options.use_stdin) { fprintf(stderr, "Input first XML fragment:"); - object_original = pcmk__xml_read(NULL); + source = pcmk__xml_read(NULL); } else if (options.source_file != NULL) { - object_original = pcmk__xml_read(options.source_file); + source = pcmk__xml_read(options.source_file); } if (options.target_string != NULL) { - object_new = pcmk__xml_parse(options.target_string); + target = pcmk__xml_parse(options.target_string); } else if (options.use_stdin) { fprintf(stderr, "Input second XML fragment:"); - object_new = pcmk__xml_read(NULL); + target = pcmk__xml_read(NULL); } else if (options.target_file != NULL) { - object_new = pcmk__xml_read(options.target_file); + target = pcmk__xml_read(options.target_file); } - if (object_original == NULL) { + if (source == NULL) { fprintf(stderr, "Could not parse the first XML fragment\n"); exit_code = CRM_EX_DATAERR; goto done; } - if (object_new == NULL) { + if (target == NULL) { fprintf(stderr, "Could not parse the second XML fragment\n"); exit_code = CRM_EX_DATAERR; goto done; } if (options.patch) { - rc = apply_patch(object_original, object_new, options.as_cib); + rc = apply_patch(source, target, options.as_cib); } else { - rc = generate_patch(object_original, object_new, options.target_file, - options.as_cib, options.no_version); + rc = generate_patch(source, target, options.target_file, options.as_cib, + options.no_version); } exit_code = pcmk_rc2exitc(rc); @@ -340,8 +340,8 @@ main(int argc, char **argv) g_free(options.target_file); g_free(options.source_string); g_free(options.target_string); - pcmk__xml_free(object_original); - pcmk__xml_free(object_new); + pcmk__xml_free(source); + pcmk__xml_free(target); pcmk__output_and_clear_error(&error, NULL); crm_exit(exit_code); From de7299e7dd94d7d7367f12693486c95c286f0592 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 15:01:26 -0700 Subject: [PATCH 044/186] Refactor: tools: Drop target_file arg of crm_diff.c:generate_patch() It was for logging only, and it's not particularly helpful information, especially since this is invoked only from the CLI currently. Signed-off-by: Reid Wahl --- tools/crm_diff.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/tools/crm_diff.c b/tools/crm_diff.c index 1f6e6904811..e84269a5a38 100644 --- a/tools/crm_diff.c +++ b/tools/crm_diff.c @@ -171,8 +171,7 @@ log_patch_cib_versions(xmlNode *patch) // \return Standard Pacemaker return code static int -generate_patch(xmlNode *source, xmlNode *target, const char *target_file, - bool as_cib, bool no_version) +generate_patch(xmlNode *source, xmlNode *target, bool as_cib, bool no_version) { const char *vfields[] = { PCMK_XA_ADMIN_EPOCH, @@ -196,7 +195,7 @@ generate_patch(xmlNode *source, xmlNode *target, const char *target_file, pcmk__xml_doc_set_flags(target->doc, pcmk__xf_ignore_attr_pos); } pcmk__xml_mark_changes(source, target); - crm_log_xml_debug(target, pcmk__s(target_file, "target")); + crm_log_xml_debug(target, "target"); output = xml_create_patchset(0, source, target, NULL, FALSE); @@ -327,8 +326,7 @@ main(int argc, char **argv) if (options.patch) { rc = apply_patch(source, target, options.as_cib); } else { - rc = generate_patch(source, target, options.target_file, options.as_cib, - options.no_version); + rc = generate_patch(source, target, options.as_cib, options.no_version); } exit_code = pcmk_rc2exitc(rc); From dee3d4341272d6d833ea58a73a1b15ebf5e0ce76 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 15:07:17 -0700 Subject: [PATCH 045/186] Refactor: various: Drop crm_copy_xml_element() internally It doesn't copy an element, so I'd like to deprecate it. It's useful, but only slightly, and we only call it four times. Signed-off-by: Reid Wahl --- daemons/controld/controld_te_actions.c | 11 ++++++----- tools/crm_diff.c | 3 ++- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/daemons/controld/controld_te_actions.c b/daemons/controld/controld_te_actions.c index 1df83e82b08..fba2463d1e0 100644 --- a/daemons/controld/controld_te_actions.c +++ b/daemons/controld/controld_te_actions.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. * @@ -299,10 +299,11 @@ controld_record_action_event(pcmk__graph_action_t *action, rsc = pcmk__xe_create(rsc, PCMK__XE_LRM_RESOURCE); crm_xml_add(rsc, PCMK_XA_ID, rsc_id); - - crm_copy_xml_element(action_rsc, rsc, PCMK_XA_TYPE); - crm_copy_xml_element(action_rsc, rsc, PCMK_XA_CLASS); - crm_copy_xml_element(action_rsc, rsc, PCMK_XA_PROVIDER); + crm_xml_add(rsc, PCMK_XA_TYPE, crm_element_value(action_rsc, PCMK_XA_TYPE)); + crm_xml_add(rsc, PCMK_XA_CLASS, + crm_element_value(action_rsc, PCMK_XA_CLASS)); + crm_xml_add(rsc, PCMK_XA_PROVIDER, + crm_element_value(action_rsc, PCMK_XA_PROVIDER)); pcmk__create_history_xml(rsc, op, CRM_FEATURE_SET, target_rc, target, __func__); diff --git a/tools/crm_diff.c b/tools/crm_diff.c index e84269a5a38..56a6f47ebce 100644 --- a/tools/crm_diff.c +++ b/tools/crm_diff.c @@ -187,7 +187,8 @@ generate_patch(xmlNode *source, xmlNode *target, bool as_cib, bool no_version) int lpc; for (lpc = 0; lpc < PCMK__NELEM(vfields); lpc++) { - crm_copy_xml_element(source, target, vfields[lpc]); + crm_xml_add(target, vfields[lpc], + crm_element_value(source, vfields[lpc])); } } From f9336af7fba6ca898c2c00398565c24df03e4ecf Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 15:10:47 -0700 Subject: [PATCH 046/186] API: libcrmcommon: Deprecate crm_copy_xml_element() We also de-inline it to prevent test-headers from complaining about undefined reference to crm_element_value(). I'd like to avoid circular includes in xml_element_compat.h. Signed-off-by: Reid Wahl --- include/crm/common/xml_element.h | 20 +------------------- include/crm/common/xml_element_compat.h | 6 +++++- lib/common/xml_element.c | 9 +++++++++ 3 files changed, 15 insertions(+), 20 deletions(-) diff --git a/include/crm/common/xml_element.h b/include/crm/common/xml_element.h index c49603b5454..7487cce1bf8 100644 --- a/include/crm/common/xml_element.h +++ b/include/crm/common/xml_element.h @@ -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. * @@ -42,24 +42,6 @@ int crm_element_value_timeval(const xmlNode *data, const char *name_sec, const char *name_usec, struct timeval *dest); char *crm_element_value_copy(const xmlNode *data, const char *name); -/*! - * \brief Copy an element from one XML object to another - * - * \param[in] obj1 Source XML - * \param[in,out] obj2 Destination XML - * \param[in] element Name of element to copy - * - * \return Pointer to copied value (from source) - */ -static inline const char * -crm_copy_xml_element(const xmlNode *obj1, xmlNode *obj2, const char *element) -{ - const char *value = crm_element_value(obj1, element); - - crm_xml_add(obj2, element, value); - return value; -} - #ifdef __cplusplus } #endif diff --git a/include/crm/common/xml_element_compat.h b/include/crm/common/xml_element_compat.h index 7c6e1f1c841..50e677afbcb 100644 --- a/include/crm/common/xml_element_compat.h +++ b/include/crm/common/xml_element_compat.h @@ -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. * @@ -35,6 +35,10 @@ void crm_xml_set_id(xmlNode *xml, const char *format, ...) G_GNUC_PRINTF(2, 3); //! \deprecated Do not use xmlNode *sorted_xml(xmlNode *input, xmlNode *parent, gboolean recursive); +//! \deprecated Do not use +const char *crm_copy_xml_element(const xmlNode *obj1, xmlNode *obj2, + const char *element); + #ifdef __cplusplus } #endif diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index 426ef3c898f..eebf2137ce8 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -1605,5 +1605,14 @@ sorted_xml(xmlNode *input, xmlNode *parent, gboolean recursive) return result; } +const char * +crm_copy_xml_element(const xmlNode *obj1, xmlNode *obj2, const char *element) +{ + const char *value = crm_element_value(obj1, element); + + crm_xml_add(obj2, element, value); + return value; +} + // LCOV_EXCL_STOP // End deprecated API From d1f77533af6d919520d1dda7d08c3ada007c349b Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 15:18:38 -0700 Subject: [PATCH 047/186] Refactor: tools: Best practices in crm_diff.c:generate_patch() Not much to do here. Mainly doxygen, renaming output to patchset, a sanity check for future-proofing. Signed-off-by: Reid Wahl --- tools/crm_diff.c | 52 +++++++++++++++++++++++++++++++----------------- 1 file changed, 34 insertions(+), 18 deletions(-) diff --git a/tools/crm_diff.c b/tools/crm_diff.c index 56a6f47ebce..4fb405923b0 100644 --- a/tools/crm_diff.c +++ b/tools/crm_diff.c @@ -169,26 +169,42 @@ log_patch_cib_versions(xmlNode *patch) } } -// \return Standard Pacemaker return code +/*! + * \internal + * \brief Create an XML patchset from the given source and target XML trees + * + * \param[in,out] source Source XML + * \param[in,out] target Target XML + * \param[in] as_cib If \c true, treat the XML trees as CIBs. In + * particular, ignore attribute position changes, + * include the target digest in the patchset, and log + * the source and target CIB versions. + * \param[in] no_version If \c true, ignore changes to the CIB version + * (must be \c false if \p as_cib is \c true) + * + * \return Standard Pacemaker return code + */ static int generate_patch(xmlNode *source, xmlNode *target, bool as_cib, bool no_version) { - const char *vfields[] = { + static const char *const vfields[] = { PCMK_XA_ADMIN_EPOCH, PCMK_XA_EPOCH, PCMK_XA_NUM_UPDATES, }; - xmlNode *output = NULL; + xmlNode *patchset = NULL; - /* If we're ignoring the version, make the version information - * identical, so it isn't detected as a change. */ - if (no_version) { - int lpc; + // Currently impossibly; just a reminder for when we move to libpacemaker + pcmk__assert(!as_cib || !no_version); - for (lpc = 0; lpc < PCMK__NELEM(vfields); lpc++) { - crm_xml_add(target, vfields[lpc], - crm_element_value(source, vfields[lpc])); + /* If we're ignoring the version, make the version information identical, so + * it isn't detected as a change. + */ + if (no_version) { + for (int i = 0; i < PCMK__NELEM(vfields); i++) { + crm_xml_add(target, vfields[i], + crm_element_value(source, vfields[i])); } } @@ -198,27 +214,27 @@ generate_patch(xmlNode *source, xmlNode *target, bool as_cib, bool no_version) pcmk__xml_mark_changes(source, target); crm_log_xml_debug(target, "target"); - output = xml_create_patchset(0, source, target, NULL, FALSE); + patchset = xml_create_patchset(0, source, target, NULL, false); pcmk__log_xml_changes(LOG_INFO, target); pcmk__xml_commit_changes(target->doc); - if (output == NULL) { + if (patchset == NULL) { return pcmk_rc_ok; // No changes } if (as_cib) { - pcmk__xml_patchset_add_digest(output, target); - log_patch_cib_versions(output); + pcmk__xml_patchset_add_digest(patchset, target); + log_patch_cib_versions(patchset); } else if (no_version) { - pcmk__xml_free(pcmk__xe_first_child(output, PCMK_XE_VERSION, NULL, + pcmk__xml_free(pcmk__xe_first_child(patchset, PCMK_XE_VERSION, NULL, NULL)); } - pcmk__log_xml_patchset(LOG_NOTICE, output); - print_patch(output); - pcmk__xml_free(output); + pcmk__log_xml_patchset(LOG_NOTICE, patchset); + print_patch(patchset); + pcmk__xml_free(patchset); /* pcmk_rc_error means there's a non-empty diff. * @COMPAT Choose a more descriptive return code, like one that maps to From f89da8d5b0c3fdd7b87d64f91c90d36bbbb92596 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 15:21:01 -0700 Subject: [PATCH 048/186] Refactor: libcrmcommon: NULL-check XML private data in display functions Sanity Signed-off-by: Reid Wahl --- lib/common/xml_display.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/common/xml_display.c b/lib/common/xml_display.c index d886d34c4bb..d6865f7474a 100644 --- a/lib/common/xml_display.c +++ b/lib/common/xml_display.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. * @@ -111,7 +111,8 @@ show_xml_element(pcmk__output_t *out, GString *buffer, const char *prefix, const char *p_value = pcmk__xml_attr_value(attr); gchar *p_copy = NULL; - if (pcmk_is_set(nodepriv->flags, pcmk__xf_deleted)) { + if ((nodepriv == NULL) + || pcmk_is_set(nodepriv->flags, pcmk__xf_deleted)) { continue; } @@ -265,6 +266,10 @@ show_xml_changes_recursive(pcmk__output_t *out, const xmlNode *data, int depth, int rc = pcmk_rc_no_output; int temp_rc = pcmk_rc_no_output; + if (nodepriv == NULL) { + return pcmk_rc_no_output; + } + if (pcmk_all_flags_set(nodepriv->flags, pcmk__xf_dirty|pcmk__xf_created)) { // Newly created return pcmk__xml_show(out, PCMK__XML_PREFIX_CREATED, data, depth, From d0c1a0e4bdeedc1889617b4bf28d4ac2f4b0ab29 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 15:22:52 -0700 Subject: [PATCH 049/186] API: libcrmcommon: xml_apply_patchset() patchset argument is now const Signed-off-by: Reid Wahl --- include/crm/common/xml.h | 3 ++- lib/common/patchset.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/include/crm/common/xml.h b/include/crm/common/xml.h index 8d9aef05af7..32bd5bb886d 100644 --- a/include/crm/common/xml.h +++ b/include/crm/common/xml.h @@ -35,7 +35,8 @@ extern "C" { xmlNode *xml_create_patchset( int format, xmlNode *source, xmlNode *target, bool *config, bool manage_version); -int xml_apply_patchset(xmlNode *xml, xmlNode *patchset, bool check_version); +int xml_apply_patchset(xmlNode *xml, const xmlNode *patchset, + bool check_version); #ifdef __cplusplus } diff --git a/lib/common/patchset.c b/lib/common/patchset.c index 179300697b2..875a80548a1 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -790,7 +790,7 @@ apply_v2_patchset(xmlNode *xml, const xmlNode *patchset) } int -xml_apply_patchset(xmlNode *xml, xmlNode *patchset, bool check_version) +xml_apply_patchset(xmlNode *xml, const xmlNode *patchset, bool check_version) { int format = 1; int rc = pcmk_ok; From 5a99b20244d1c47f7d65ed97a9377ad82ad6e3cd Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 15:26:37 -0700 Subject: [PATCH 050/186] Refactor: libcrmcommon: Make vfields file-scope in patchset.c Reduce some duplication Signed-off-by: Reid Wahl --- lib/common/patchset.c | 29 ++++++----------------------- 1 file changed, 6 insertions(+), 23 deletions(-) diff --git a/lib/common/patchset.c b/lib/common/patchset.c index 875a80548a1..1373e51e4a4 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -26,6 +26,12 @@ #include // CRM_XML_LOG_BASE, etc. #include "crmcommon_private.h" +static const char *const vfields[] = { + PCMK_XA_ADMIN_EPOCH, + PCMK_XA_EPOCH, + PCMK_XA_NUM_UPDATES, +}; + /* Add changes for specified XML to patchset. * For patchset format, refer to diff schema. */ @@ -185,11 +191,6 @@ xml_create_patchset_v2(xmlNode *source, xmlNode *target) xmlNode *v = NULL; xmlNode *version = NULL; xmlNode *patchset = NULL; - const char *vfields[] = { - PCMK_XA_ADMIN_EPOCH, - PCMK_XA_EPOCH, - PCMK_XA_NUM_UPDATES, - }; pcmk__assert(target != NULL); @@ -331,12 +332,6 @@ int pcmk__xml_patchset_versions(const xmlNode *patchset, int source[3], int target[3]) { - static const char *const vfields[] = { - PCMK_XA_ADMIN_EPOCH, - PCMK_XA_EPOCH, - PCMK_XA_NUM_UPDATES, - }; - int format = 1; const xmlNode *version = NULL; const xmlNode *source_xml = NULL; @@ -394,12 +389,6 @@ xml_patch_version_check(const xmlNode *xml, const xmlNode *patchset) int del[] = { 0, 0, 0 }; int rc = pcmk_rc_ok; - const char *vfields[] = { - PCMK_XA_ADMIN_EPOCH, - PCMK_XA_EPOCH, - PCMK_XA_NUM_UPDATES, - }; - for (lpc = 0; lpc < PCMK__NELEM(vfields); lpc++) { crm_element_value_int(xml, vfields[lpc], &(this[lpc])); crm_trace("Got %d for this[%s]", this[lpc], vfields[lpc]); @@ -933,12 +922,6 @@ pcmk__cib_element_in_patchset(const xmlNode *patchset, const char *element) bool xml_patch_versions(const xmlNode *patchset, int add[3], int del[3]) { - static const char *const vfields[] = { - PCMK_XA_ADMIN_EPOCH, - PCMK_XA_EPOCH, - PCMK_XA_NUM_UPDATES, - }; - const xmlNode *version = pcmk__xe_first_child(patchset, PCMK_XE_VERSION, NULL, NULL); const xmlNode *source = pcmk__xe_first_child(version, PCMK_XE_SOURCE, NULL, From 371ebb38063fa7568fe09fbf12a1035474d83d23 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 15:31:02 -0700 Subject: [PATCH 051/186] Refactor: libcrmcommon: Some best practices in xml_patch_version_check() Rename to check_patchset_versions() and rename arrays for clarity Signed-off-by: Reid Wahl --- lib/common/patchset.c | 51 ++++++++++++++++++++++++------------------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/lib/common/patchset.c b/lib/common/patchset.c index 1373e51e4a4..0caffdd0b76 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -379,67 +379,72 @@ pcmk__xml_patchset_versions(const xmlNode *patchset, int source[3], * \return Standard Pacemaker return code */ static int -xml_patch_version_check(const xmlNode *xml, const xmlNode *patchset) +check_patchset_versions(const xmlNode *xml, const xmlNode *patchset) { int lpc = 0; bool changed = FALSE; - int this[] = { 0, 0, 0 }; - int add[] = { 0, 0, 0 }; - int del[] = { 0, 0, 0 }; + int current[] = { 0, 0, 0 }; + int source[] = { 0, 0, 0 }; + int target[] = { 0, 0, 0 }; int rc = pcmk_rc_ok; for (lpc = 0; lpc < PCMK__NELEM(vfields); lpc++) { - crm_element_value_int(xml, vfields[lpc], &(this[lpc])); - crm_trace("Got %d for this[%s]", this[lpc], vfields[lpc]); - if (this[lpc] < 0) { - this[lpc] = 0; + crm_element_value_int(xml, vfields[lpc], &(current[lpc])); + crm_trace("Got %d for current[%s]", current[lpc], vfields[lpc]); + if (current[lpc] < 0) { + current[lpc] = 0; } } /* Set some defaults in case nothing is present */ - add[0] = this[0]; - add[1] = this[1]; - add[2] = this[2] + 1; + target[0] = current[0]; + target[1] = current[1]; + target[2] = current[2] + 1; for (lpc = 0; lpc < PCMK__NELEM(vfields); lpc++) { - del[lpc] = this[lpc]; + source[lpc] = current[lpc]; } - rc = pcmk__xml_patchset_versions(patchset, del, add); + rc = pcmk__xml_patchset_versions(patchset, source, target); if (rc != pcmk_rc_ok) { return rc; } for (lpc = 0; lpc < PCMK__NELEM(vfields); lpc++) { - if (this[lpc] < del[lpc]) { + if (current[lpc] < source[lpc]) { crm_debug("Current %s is too low (%d.%d.%d < %d.%d.%d --> %d.%d.%d)", - vfields[lpc], this[0], this[1], this[2], - del[0], del[1], del[2], add[0], add[1], add[2]); + vfields[lpc], + current[0], current[1], current[2], + source[0], source[1], source[2], + target[0], target[1], target[2]); return pcmk_rc_diff_resync; - } else if (this[lpc] > del[lpc]) { + } else if (current[lpc] > source[lpc]) { crm_info("Current %s is too high (%d.%d.%d > %d.%d.%d --> %d.%d.%d) %p", - vfields[lpc], this[0], this[1], this[2], - del[0], del[1], del[2], add[0], add[1], add[2], patchset); + vfields[lpc], + current[0], current[1], current[2], + source[0], source[1], source[2], + target[0], target[1], target[2], patchset); crm_log_xml_info(patchset, "OldPatch"); return pcmk_rc_old_data; } } for (lpc = 0; lpc < PCMK__NELEM(vfields); lpc++) { - if (add[lpc] > del[lpc]) { + if (target[lpc] > source[lpc]) { changed = TRUE; } } if (!changed) { crm_notice("Versions did not change in patch %d.%d.%d", - add[0], add[1], add[2]); + target[0], target[1], target[2]); return pcmk_rc_old_data; } crm_debug("Can apply patch %d.%d.%d to %d.%d.%d", - add[0], add[1], add[2], this[0], this[1], this[2]); + target[0], target[1], target[2], + current[0], current[1], current[2]); return pcmk_rc_ok; } @@ -793,7 +798,7 @@ xml_apply_patchset(xmlNode *xml, const xmlNode *patchset, bool check_version) pcmk__log_xml_patchset(LOG_TRACE, patchset); if (check_version) { - rc = pcmk_rc2legacy(xml_patch_version_check(xml, patchset)); + rc = pcmk_rc2legacy(check_patchset_versions(xml, patchset)); if (rc != pcmk_ok) { return rc; } From 3669a8c2c037dd28c8a10d0c3fcf10bee1458ece Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 15:33:12 -0700 Subject: [PATCH 052/186] Refactor: libcrmcommon: Rename lpc to i in xml_patch_version_check() And limit it to loop-scope. Signed-off-by: Reid Wahl --- lib/common/patchset.c | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/lib/common/patchset.c b/lib/common/patchset.c index 0caffdd0b76..7a29db729eb 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -381,7 +381,6 @@ pcmk__xml_patchset_versions(const xmlNode *patchset, int source[3], static int check_patchset_versions(const xmlNode *xml, const xmlNode *patchset) { - int lpc = 0; bool changed = FALSE; int current[] = { 0, 0, 0 }; @@ -389,11 +388,11 @@ check_patchset_versions(const xmlNode *xml, const xmlNode *patchset) int target[] = { 0, 0, 0 }; int rc = pcmk_rc_ok; - for (lpc = 0; lpc < PCMK__NELEM(vfields); lpc++) { - crm_element_value_int(xml, vfields[lpc], &(current[lpc])); - crm_trace("Got %d for current[%s]", current[lpc], vfields[lpc]); - if (current[lpc] < 0) { - current[lpc] = 0; + for (int i = 0; i < PCMK__NELEM(vfields); i++) { + crm_element_value_int(xml, vfields[i], &(current[i])); + crm_trace("Got %d for current[%s]", current[i], vfields[i]); + if (current[i] < 0) { + current[i] = 0; } } @@ -401,8 +400,8 @@ check_patchset_versions(const xmlNode *xml, const xmlNode *patchset) target[0] = current[0]; target[1] = current[1]; target[2] = current[2] + 1; - for (lpc = 0; lpc < PCMK__NELEM(vfields); lpc++) { - source[lpc] = current[lpc]; + for (int i = 0; i < PCMK__NELEM(vfields); i++) { + source[i] = current[i]; } rc = pcmk__xml_patchset_versions(patchset, source, target); @@ -410,18 +409,18 @@ check_patchset_versions(const xmlNode *xml, const xmlNode *patchset) return rc; } - for (lpc = 0; lpc < PCMK__NELEM(vfields); lpc++) { - if (current[lpc] < source[lpc]) { + for (int i = 0; i < PCMK__NELEM(vfields); i++) { + if (current[i] < source[i]) { crm_debug("Current %s is too low (%d.%d.%d < %d.%d.%d --> %d.%d.%d)", - vfields[lpc], + vfields[i], current[0], current[1], current[2], source[0], source[1], source[2], target[0], target[1], target[2]); return pcmk_rc_diff_resync; - } else if (current[lpc] > source[lpc]) { + } else if (current[i] > source[i]) { crm_info("Current %s is too high (%d.%d.%d > %d.%d.%d --> %d.%d.%d) %p", - vfields[lpc], + vfields[i], current[0], current[1], current[2], source[0], source[1], source[2], target[0], target[1], target[2], patchset); @@ -430,8 +429,8 @@ check_patchset_versions(const xmlNode *xml, const xmlNode *patchset) } } - for (lpc = 0; lpc < PCMK__NELEM(vfields); lpc++) { - if (target[lpc] > source[lpc]) { + for (int i = 0; i < PCMK__NELEM(vfields); i++) { + if (target[i] > source[i]) { changed = TRUE; } } From addc2ce73fc4dab1161d866dde48e985d2b708f2 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 20:38:33 -0700 Subject: [PATCH 053/186] Refactor: libcrmcommon: Clarify check_patchset_versions() Do not change behavior yet, as it will affect xml_apply_patchset(). Signed-off-by: Reid Wahl --- lib/common/patchset.c | 69 ++++++++++++++++++++++++++----------------- 1 file changed, 42 insertions(+), 27 deletions(-) diff --git a/lib/common/patchset.c b/lib/common/patchset.c index 7a29db729eb..4139f2df505 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -373,30 +373,47 @@ pcmk__xml_patchset_versions(const xmlNode *patchset, int source[3], * \internal * \brief Check whether patchset can be applied to current CIB * - * \param[in] xml Root of current CIB + * \param[in] cib_root Root of current CIB * \param[in] patchset Patchset to check * * \return Standard Pacemaker return code */ static int -check_patchset_versions(const xmlNode *xml, const xmlNode *patchset) +check_patchset_versions(const xmlNode *cib_root, const xmlNode *patchset) { - bool changed = FALSE; - int current[] = { 0, 0, 0 }; int source[] = { 0, 0, 0 }; int target[] = { 0, 0, 0 }; int rc = pcmk_rc_ok; for (int i = 0; i < PCMK__NELEM(vfields); i++) { - crm_element_value_int(xml, vfields[i], &(current[i])); - crm_trace("Got %d for current[%s]", current[i], vfields[i]); + /* @COMPAT We should probably fail with EINVAL for negative or invalid + * valid reason for such values to be present. + * + * Preserve behavior for xml_apply_patchset(). Use new behavior in + * libpacemaker replacement. + */ + if (crm_element_value_int(cib_root, vfields[i], &(current[i])) == 0) { + crm_trace("Got %d for current[%s]%s", + current[i], vfields[i], + ((current[i] < 0)? ", using 0" : "")); + } else { + crm_debug("Failed to get value for current[%s], using 0", + vfields[i]); + } if (current[i] < 0) { current[i] = 0; } } - /* Set some defaults in case nothing is present */ + /* Set some defaults in case nothing is present. + * + * @COMPAT We should probably skip this step, and fail immediately below if + * target[i] < source[i]. + * + * Preserve behavior for xml_apply_patchset(). Use new behavior in + * libpacemaker replacement. + */ target[0] = current[0]; target[1] = current[1]; target[2] = current[2] + 1; @@ -409,42 +426,40 @@ check_patchset_versions(const xmlNode *xml, const xmlNode *patchset) return rc; } + // Ensure current version matches patchset source version for (int i = 0; i < PCMK__NELEM(vfields); i++) { if (current[i] < source[i]) { - crm_debug("Current %s is too low (%d.%d.%d < %d.%d.%d --> %d.%d.%d)", - vfields[i], - current[0], current[1], current[2], + crm_debug("Current %s is too low " + "(%d.%d.%d < %d.%d.%d --> %d.%d.%d)", + vfields[i], current[0], current[1], current[2], source[0], source[1], source[2], target[0], target[1], target[2]); return pcmk_rc_diff_resync; - - } else if (current[i] > source[i]) { - crm_info("Current %s is too high (%d.%d.%d > %d.%d.%d --> %d.%d.%d) %p", - vfields[i], - current[0], current[1], current[2], + } + if (current[i] > source[i]) { + crm_info("Current %s is too high " + "(%d.%d.%d > %d.%d.%d --> %d.%d.%d)", + vfields[i], current[0], current[1], current[2], source[0], source[1], source[2], - target[0], target[1], target[2], patchset); + target[0], target[1], target[2]); crm_log_xml_info(patchset, "OldPatch"); return pcmk_rc_old_data; } } + // Ensure target version is newer than source version for (int i = 0; i < PCMK__NELEM(vfields); i++) { if (target[i] > source[i]) { - changed = TRUE; + crm_debug("Can apply patch %d.%d.%d to %d.%d.%d", + target[0], target[1], target[2], + current[0], current[1], current[2]); + return pcmk_rc_ok; } } - if (!changed) { - crm_notice("Versions did not change in patch %d.%d.%d", - target[0], target[1], target[2]); - return pcmk_rc_old_data; - } - - crm_debug("Can apply patch %d.%d.%d to %d.%d.%d", - target[0], target[1], target[2], - current[0], current[1], current[2]); - return pcmk_rc_ok; + crm_notice("Versions did not change in patch %d.%d.%d", + target[0], target[1], target[2]); + return pcmk_rc_old_data; } // Return first child matching element name and optionally id or position From c27d53132f9b26ca365613dbc9095ed1cdddbc3c Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 21:00:33 -0700 Subject: [PATCH 054/186] Refactor: tools: Clean up crm_diff.c:apply_patchset() We don't do anything with input afterward, and this is static for a CLI tool, so no need to make a copy. Don't bother adding doxygen. We're about to drop this function. I'm doing it in two steps to clarify what it's doing and that it's no longer worth functionizing. Also NULL-check digest before using it in crm_strdup_printf() in pcmk__digest_xml(). Signed-off-by: Reid Wahl --- lib/common/digest.c | 5 +++++ tools/crm_diff.c | 26 ++++++++++++-------------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/lib/common/digest.c b/lib/common/digest.c index ec7c8bdc103..a8e809719c5 100644 --- a/lib/common/digest.c +++ b/lib/common/digest.c @@ -171,6 +171,9 @@ pcmk__digest_xml(const xmlNode *xml, bool filter) pcmk__xml_string(xml, (filter? pcmk__xml_fmt_filtered : 0), buf, 0); digest = crm_md5sum(buf->str); + if (digest == NULL) { + goto done; + } pcmk__if_tracing( { @@ -187,6 +190,8 @@ pcmk__digest_xml(const xmlNode *xml, bool filter) }, {} ); + +done: g_string_free(buf, TRUE); return digest; } diff --git a/tools/crm_diff.c b/tools/crm_diff.c index 4fb405923b0..42e2a94dc7d 100644 --- a/tools/crm_diff.c +++ b/tools/crm_diff.c @@ -123,30 +123,28 @@ print_patch(xmlNode *patch) fflush(stdout); } -// \return Standard Pacemaker return code static int -apply_patch(xmlNode *input, xmlNode *patch, gboolean as_cib) +apply_patchset(xmlNode *input, const xmlNode *patch, bool check_version) { - xmlNode *output = pcmk__xml_copy(NULL, input); - int rc = xml_apply_patchset(output, patch, as_cib); + int rc = xml_apply_patchset(input, patch, check_version); rc = pcmk_legacy2rc(rc); if (rc != pcmk_rc_ok) { fprintf(stderr, "Could not apply patch: %s\n", pcmk_rc_str(rc)); - pcmk__xml_free(output); return rc; } - if (output != NULL) { - char *buffer; + print_patch(input); - print_patch(output); + pcmk__if_tracing( + { + char *digest = pcmk__digest_xml(input, true); - buffer = pcmk__digest_xml(output, true); - crm_trace("Digest: %s", pcmk__s(buffer, "\n")); - free(buffer); - pcmk__xml_free(output); - } + crm_trace("Digest: %s", pcmk__s(digest, "")); + free(digest); + }, + {} + ); return pcmk_rc_ok; } @@ -341,7 +339,7 @@ main(int argc, char **argv) } if (options.patch) { - rc = apply_patch(source, target, options.as_cib); + rc = apply_patchset(source, target, options.as_cib); } else { rc = generate_patch(source, target, options.as_cib, options.no_version); } From 5aed4abcf9b5b969c4c755defe740ab6ae99bc88 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 21:04:38 -0700 Subject: [PATCH 055/186] Refactor: tools: Drop crm_diff.c:apply_patchset() It's not really doing anything besides calling xml_apply_patchset() at this point. Even the trace message is redundant: xml_apply_patchset() logs a better trace message containing the new digest. Signed-off-by: Reid Wahl --- tools/crm_diff.c | 34 ++++++++-------------------------- 1 file changed, 8 insertions(+), 26 deletions(-) diff --git a/tools/crm_diff.c b/tools/crm_diff.c index 42e2a94dc7d..4952582ed2d 100644 --- a/tools/crm_diff.c +++ b/tools/crm_diff.c @@ -123,31 +123,6 @@ print_patch(xmlNode *patch) fflush(stdout); } -static int -apply_patchset(xmlNode *input, const xmlNode *patch, bool check_version) -{ - int rc = xml_apply_patchset(input, patch, check_version); - - rc = pcmk_legacy2rc(rc); - if (rc != pcmk_rc_ok) { - fprintf(stderr, "Could not apply patch: %s\n", pcmk_rc_str(rc)); - return rc; - } - - print_patch(input); - - pcmk__if_tracing( - { - char *digest = pcmk__digest_xml(input, true); - - crm_trace("Digest: %s", pcmk__s(digest, "")); - free(digest); - }, - {} - ); - return pcmk_rc_ok; -} - static void log_patch_cib_versions(xmlNode *patch) { @@ -339,7 +314,14 @@ main(int argc, char **argv) } if (options.patch) { - rc = apply_patchset(source, target, options.as_cib); + rc = xml_apply_patchset(source, target, options.as_cib); + rc = pcmk_legacy2rc(rc); + if (rc != pcmk_rc_ok) { + fprintf(stderr, "Could not apply patch: %s\n", pcmk_rc_str(rc)); + } else { + print_patch(source); + } + } else { rc = generate_patch(source, target, options.as_cib, options.no_version); } From cee87ab22ca75007f677fd73397100f77338d035 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 21:12:06 -0700 Subject: [PATCH 056/186] Refactor: tools: Drop log_patchset_cib_versions() pcmk__log_xml_patchset() already logs these, almost identically, at notice level. Signed-off-by: Reid Wahl --- tools/crm_diff.c | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/tools/crm_diff.c b/tools/crm_diff.c index 4952582ed2d..ae36e5488bf 100644 --- a/tools/crm_diff.c +++ b/tools/crm_diff.c @@ -123,25 +123,6 @@ print_patch(xmlNode *patch) fflush(stdout); } -static void -log_patch_cib_versions(xmlNode *patch) -{ - int add[] = { 0, 0, 0 }; - int del[] = { 0, 0, 0 }; - - const char *fmt = NULL; - const char *digest = NULL; - - pcmk__xml_patchset_versions(patch, del, add); - fmt = crm_element_value(patch, PCMK_XA_FORMAT); - digest = crm_element_value(patch, PCMK__XA_DIGEST); - - if (add[2] != del[2] || add[1] != del[1] || add[0] != del[0]) { - crm_info("Patch: --- %d.%d.%d %s", del[0], del[1], del[2], fmt); - crm_info("Patch: +++ %d.%d.%d %s", add[0], add[1], add[2], digest); - } -} - /*! * \internal * \brief Create an XML patchset from the given source and target XML trees @@ -198,7 +179,6 @@ generate_patch(xmlNode *source, xmlNode *target, bool as_cib, bool no_version) if (as_cib) { pcmk__xml_patchset_add_digest(patchset, target); - log_patch_cib_versions(patchset); } else if (no_version) { pcmk__xml_free(pcmk__xe_first_child(patchset, PCMK_XE_VERSION, NULL, From 2bfd6e5c06c8f5619623818cb30739e3b08f50df Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 21:20:14 -0700 Subject: [PATCH 057/186] Doc: tools: Doxygen for crm_diff.c:print_patch() Not really necessary but easy. Signed-off-by: Reid Wahl --- tools/crm_diff.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/tools/crm_diff.c b/tools/crm_diff.c index ae36e5488bf..a33ad212938 100644 --- a/tools/crm_diff.c +++ b/tools/crm_diff.c @@ -111,12 +111,24 @@ static GOptionEntry addl_entries[] = { { NULL } }; +/*! + * \internal + * \brief Print an XML tree serialized to text + * + * \param[in] xml XML tree to print + * + * \todo Use pcmk__output_t with message functions and drop this. + * + * \note This is basically a simplified version of \c pcmk__xml_write_fd(), but + * that function closes the stream before returning. We could modify it in + * the future. But we don't want to close stdout. + */ static void -print_patch(xmlNode *patch) +print_xml(const xmlNode *xml) { GString *buffer = g_string_sized_new(1024); - pcmk__xml_string(patch, pcmk__xml_fmt_pretty, buffer, 0); + pcmk__xml_string(xml, pcmk__xml_fmt_pretty, buffer, 0); printf("%s", buffer->str); g_string_free(buffer, TRUE); @@ -186,7 +198,7 @@ generate_patch(xmlNode *source, xmlNode *target, bool as_cib, bool no_version) } pcmk__log_xml_patchset(LOG_NOTICE, patchset); - print_patch(patchset); + print_xml(patchset); pcmk__xml_free(patchset); /* pcmk_rc_error means there's a non-empty diff. @@ -299,7 +311,7 @@ main(int argc, char **argv) if (rc != pcmk_rc_ok) { fprintf(stderr, "Could not apply patch: %s\n", pcmk_rc_str(rc)); } else { - print_patch(source); + print_xml(source); } } else { From 4e59c80cc64a2a005d0e4eaaf0982c6b91c0a9d4 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 21:30:31 -0700 Subject: [PATCH 058/186] Refactor: tools: Clean up crm_diff.c includes Signed-off-by: Reid Wahl --- include/crm_internal.h | 3 ++- tools/crm_diff.c | 23 ++++++++--------------- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/include/crm_internal.h b/include/crm_internal.h index 891f2e5b686..337d309b991 100644 --- a/include/crm_internal.h +++ b/include/crm_internal.h @@ -1,5 +1,5 @@ /* - * Copyright 2006-2024 the Pacemaker project contributors + * Copyright 2006-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -38,6 +38,7 @@ #include #include +#include #include #include #include diff --git a/tools/crm_diff.c b/tools/crm_diff.c index a33ad212938..70b7866ff3c 100644 --- a/tools/crm_diff.c +++ b/tools/crm_diff.c @@ -9,21 +9,14 @@ #include -#include // bool -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include +#include // bool +#include // NULL, printf(), fprintf(), etc. +#include // free() + +#include // GOption, etc. +#include // xmlNode + +#include // xml_{create,apply}_patchset() #define SUMMARY "Compare two Pacemaker configurations (in XML format) to " \ "produce a custom diff-like output, or apply such an output " \ From 2b0ddc8f976ed03577726a7d7dd5c83484c0cb72 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 21:36:38 -0700 Subject: [PATCH 059/186] Low: tools: Be stricter about crm_diff --cib/--no-version Previously, we allowed --cib and --no-version to be specified together as long as --patch was also specified. In that case, --no-version was ignored. Our option validation (or lack thereof) in crm_diff is a big mess. This is one small improvement that SHOULDN'T break anyone's workflow... if it does, they can fix it, or if it's something really insane, we can revert. Signed-off-by: Reid Wahl --- tools/crm_diff.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/tools/crm_diff.c b/tools/crm_diff.c index 70b7866ff3c..bd69b5e25f7 100644 --- a/tools/crm_diff.c +++ b/tools/crm_diff.c @@ -257,12 +257,17 @@ main(int argc, char **argv) pcmk__cli_help('v'); } - if (options.patch && options.no_version) { - fprintf(stderr, "warning: -u/--no-version ignored with -p/--patch\n"); - } else if (options.as_cib && options.no_version) { - fprintf(stderr, "error: -u/--no-version incompatible with -c/--cib\n"); - exit_code = CRM_EX_USAGE; - goto done; + if (options.no_version) { + if (options.as_cib) { + exit_code = CRM_EX_USAGE; + g_set_error(&error, PCMK__EXITC_ERROR, exit_code, + "-u/--no-version incompatible with -c/--cib"); + goto done; + } + if (options.patch) { + fprintf(stderr, + "Warning: -u/--no-version ignored with -p/--patch\n"); + } } if (options.source_string != NULL) { From 9eee50dbb2cbdcd9b84d2fad3c5802c689c86cd9 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 21:43:50 -0700 Subject: [PATCH 060/186] Log: tools: Improve error handling in crm_diff.c Signed-off-by: Reid Wahl --- tools/crm_diff.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/tools/crm_diff.c b/tools/crm_diff.c index bd69b5e25f7..5f58d7e96c1 100644 --- a/tools/crm_diff.c +++ b/tools/crm_diff.c @@ -279,6 +279,13 @@ main(int argc, char **argv) } else if (options.source_file != NULL) { source = pcmk__xml_read(options.source_file); + + } else { + exit_code = CRM_EX_USAGE; + g_set_error(&error, PCMK__EXITC_ERROR, exit_code, + "Either --original, --original-string, or --stdin must be " + "specified"); + goto done; } if (options.target_string != NULL) { @@ -290,16 +297,25 @@ main(int argc, char **argv) } else if (options.target_file != NULL) { target = pcmk__xml_read(options.target_file); + + } else { + exit_code = CRM_EX_USAGE; + g_set_error(&error, PCMK__EXITC_ERROR, exit_code, + "Either --new, --new-string, --patch, or --stdin must be " + "specified"); + goto done; } if (source == NULL) { - fprintf(stderr, "Could not parse the first XML fragment\n"); exit_code = CRM_EX_DATAERR; + g_set_error(&error, PCMK__EXITC_ERROR, exit_code, + "Failed to parse original XML"); goto done; } if (target == NULL) { - fprintf(stderr, "Could not parse the second XML fragment\n"); exit_code = CRM_EX_DATAERR; + g_set_error(&error, PCMK__EXITC_ERROR, exit_code, + "Failed to parse %s XML", (options.patch? "patch" : "new")); goto done; } @@ -307,7 +323,8 @@ main(int argc, char **argv) rc = xml_apply_patchset(source, target, options.as_cib); rc = pcmk_legacy2rc(rc); if (rc != pcmk_rc_ok) { - fprintf(stderr, "Could not apply patch: %s\n", pcmk_rc_str(rc)); + g_set_error(&error, PCMK__RC_ERROR, rc, + "Could not apply patch: %s", pcmk_rc_str(rc)); } else { print_xml(source); } From 23eaae9865e74324d3711c8e82d698b1e3937a3a Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 21:48:38 -0700 Subject: [PATCH 061/186] Refactor: tools: Add pcmk__output_t scaffolding to crm_diff.c No pcmk__message_entry_t array or pcmk__register_messages() call, because it looks like ouput_xml() will be sufficient, with no need for message functions. Signed-off-by: Reid Wahl --- tools/crm_diff.c | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/tools/crm_diff.c b/tools/crm_diff.c index 5f58d7e96c1..93f4af9f775 100644 --- a/tools/crm_diff.c +++ b/tools/crm_diff.c @@ -201,6 +201,14 @@ generate_patch(xmlNode *source, xmlNode *target, bool as_cib, bool no_version) return pcmk_rc_error; } +static const pcmk__supported_format_t formats[] = { + PCMK__SUPPORTED_FORMAT_NONE, + PCMK__SUPPORTED_FORMAT_TEXT, + PCMK__SUPPORTED_FORMAT_XML, + + { NULL, NULL, NULL } +}; + static GOptionContext * build_arg_context(pcmk__common_args_t *args) { GOptionContext *context = NULL; @@ -231,17 +239,22 @@ build_arg_context(pcmk__common_args_t *args) { int main(int argc, char **argv) { + crm_exit_t exit_code = CRM_EX_OK; + int rc = pcmk_rc_ok; + xmlNode *source = NULL; xmlNode *target = NULL; - crm_exit_t exit_code = CRM_EX_OK; + pcmk__output_t *out = NULL; + GError *error = NULL; + GOptionGroup *output_group = NULL; pcmk__common_args_t *args = pcmk__new_common_args(SUMMARY); gchar **processed_args = pcmk__cmdline_preproc(argv, "nopNO"); GOptionContext *context = build_arg_context(args); - int rc = pcmk_rc_ok; + pcmk__register_formats(output_group, formats); if (!g_option_context_parse_strv(context, &processed_args, &error)) { exit_code = CRM_EX_USAGE; @@ -250,11 +263,18 @@ main(int argc, char **argv) pcmk__cli_init_logging("crm_diff", args->verbosity); + rc = pcmk__output_new(&out, args->output_ty, args->output_dest, argv); + if (rc != pcmk_rc_ok) { + exit_code = CRM_EX_ERROR; + g_set_error(&error, PCMK__EXITC_ERROR, exit_code, + "Error creating output format %s: %s", args->output_ty, + pcmk_rc_str(rc)); + goto done; + } + if (args->version) { - g_strfreev(processed_args); - pcmk__free_arg_context(context); - /* FIXME: When crm_diff is converted to use formatted output, this can go. */ - pcmk__cli_help('v'); + out->version(out, false); + goto done; } if (options.no_version) { @@ -345,6 +365,11 @@ main(int argc, char **argv) pcmk__xml_free(source); pcmk__xml_free(target); - pcmk__output_and_clear_error(&error, NULL); + pcmk__output_and_clear_error(&error, out); + + if (out != NULL) { + out->finish(out, exit_code, true, NULL); + pcmk__output_free(out); + } crm_exit(exit_code); } From 2b3a10d6506addd360a68f36bd467124b4a87180 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 23:11:46 -0700 Subject: [PATCH 062/186] Refactor: tools: Use out->err() in crm_diff, and drop prompts The prompts would only make sense for text output format. They can't be sent to out->err() because it would show up as an error when the XML output is finished. If they're sent to out->info(), they won't be output at all for XML output format, and stdout can't easily be flushed for text output without checking the output format explicitly or adding new functionality to the pcmk__output_t API. We could continue printing to stderr directly, but I'd rather not. Besides, the prompts are not user-friendly at all, and I'm not sure who (if anyone) has ever used them. What they don't tell you is that you have to press Ctrl+D to mark end of input when you're done. Otherwise it will keep waiting for more input forever. I would like to eventually get rid of the --stdin option (deprecating and hiding it first), unless we can come up with a sane way to get TWO pieces of XML via stdin. Taking input from stdin makes some amount of sense when it's one piece. Signed-off-by: Reid Wahl --- tools/crm_diff.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/tools/crm_diff.c b/tools/crm_diff.c index 93f4af9f775..54e442784b1 100644 --- a/tools/crm_diff.c +++ b/tools/crm_diff.c @@ -10,7 +10,7 @@ #include #include // bool -#include // NULL, printf(), fprintf(), etc. +#include // NULL, printf(), etc. #include // free() #include // GOption, etc. @@ -285,8 +285,7 @@ main(int argc, char **argv) goto done; } if (options.patch) { - fprintf(stderr, - "Warning: -u/--no-version ignored with -p/--patch\n"); + out->err(out, "Warning: -u/--no-version ignored with -p/--patch"); } } @@ -294,7 +293,6 @@ main(int argc, char **argv) source = pcmk__xml_parse(options.source_string); } else if (options.use_stdin) { - fprintf(stderr, "Input first XML fragment:"); source = pcmk__xml_read(NULL); } else if (options.source_file != NULL) { @@ -312,7 +310,6 @@ main(int argc, char **argv) target = pcmk__xml_parse(options.target_string); } else if (options.use_stdin) { - fprintf(stderr, "Input second XML fragment:"); target = pcmk__xml_read(NULL); } else if (options.target_file != NULL) { From ffa608fc1105f85ebfa3aa025cd9e36fa29c01d8 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 17 Mar 2025 23:56:51 -0700 Subject: [PATCH 063/186] Feature: tools: Deprecate crm_diff --stdin I'm not aware of any tool in our ecosystem that uses this option. It's not user-friendly at all. They don't tell you that you have to press Ctrl+D (on Linux) at the beginning of a line to mark the end of an XML string and indicate that you're ready to input the next one. And then press Ctrl+D again to end the second XML string. So this isn't conducive to piping input into the command, which is typically the use case for a --stdin option. There's no obvious good way to delimit the first XML input string from the second one. The prompts (removed by a previous commit) also complicated the conversion to using pcmk__output_t. Basically, there's no great way to print the prompts when using XML-formatted output, and the output isn't flushed automatically for text-formatted output, so we can't guarantee that the prompts will appear on time. We could work around this by continuing to fprintf() to stderr and then flush, but that's ugly. Signed-off-by: Reid Wahl --- tools/crm_diff.c | 51 +++++++++++++++++++++++++++--------------------- 1 file changed, 29 insertions(+), 22 deletions(-) diff --git a/tools/crm_diff.c b/tools/crm_diff.c index 54e442784b1..634281ccb54 100644 --- a/tools/crm_diff.c +++ b/tools/crm_diff.c @@ -31,7 +31,7 @@ struct { bool patch; gboolean as_cib; gboolean no_version; - gboolean use_stdin; + gboolean use_stdin; //!< \deprecated } options; static gboolean @@ -44,41 +44,48 @@ patch_cb(const gchar *option_name, const gchar *optarg, gpointer data, return TRUE; } -// @COMPAT Use last-one-wins for original/new/patch input sources +/* @COMPAT Use last-one-wins for original/new/patch input sources + * + * @COMPAT Precedence is --original-string > --stdin > --original. --stdin is + * now deprecated and hidden, so we don't mention it in the help text. + */ static GOptionEntry original_xml_entries[] = { { "original", 'o', G_OPTION_FLAG_NONE, G_OPTION_ARG_STRING, &options.source_file, - "XML is contained in the named file. Currently --original-string and\n" - INDENT "--stdin both override this. In a future release, the last one\n" - INDENT "specified will be used.", + "XML is contained in the named file. Currently --original-string\n" + INDENT "overrides this. In a future release, the last one specified\n" + INDENT "will be used.", "FILE" }, { "original-string", 'O', G_OPTION_FLAG_NONE, G_OPTION_ARG_CALLBACK, &options.source_string, "XML is contained in the supplied string. Currently this takes\n" - INDENT "precedence over both --stdin and --original. In a future\n" + INDENT "precedence over --original. In a future release, the last one\n" INDENT "release, the last one specified will be used.", "STRING" }, { NULL } }; +/* @COMPAT Precedence is --original-string > --stdin > --original. --stdin is + * now deprecated and hidden, so we don't mention it in the help text. + */ static GOptionEntry operation_entries[] = { { "new", 'n', G_OPTION_FLAG_NONE, G_OPTION_ARG_STRING, &options.target_file, "Compare the original XML to the contents of the named file. Currently\n" - INDENT "--new-string and --stdin both override this. In a future\n" - INDENT "release, the last one specified will be used.", + INDENT "--new-string overrides this. In a future release, the last one\n" + INDENT "specified will be used.", "FILE" }, { "new-string", 'N', G_OPTION_FLAG_NONE, G_OPTION_ARG_CALLBACK, &options.target_string, "Compare the original XML with the contents of the supplied string.\n" - INDENT "Currently this takes precedence over --stdin, --patch, and\n" - INDENT "--new. In a future release, the last one specified will be used.", + INDENT "Currently this takes precedence over --patch and --new. In a \n" + INDENT "future release, the last one specified will be used.", "STRING" }, { "patch", 'p', G_OPTION_FLAG_NONE, G_OPTION_ARG_CALLBACK, patch_cb, "Patch the original XML with the contents of the named file. Currently\n" - INDENT "--new-string, --stdin, and (if specified later) --new override\n" - INDENT "the input source specified here. In a future release, the last\n" - INDENT "one specified will be used. Note: even if this input source is\n" + INDENT "--new-string and (if specified later) --new override the input\n" + INDENT "source specified here. In a future release, the last one\n" + INDENT "specified will be used. Note: even if this input source is\n" INDENT "overridden, the input source will be applied as a patch to the\n" INDENT "original XML.", "FILE" }, @@ -90,16 +97,18 @@ static GOptionEntry addl_entries[] = { { "cib", 'c', G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, &options.as_cib, "Compare/patch the inputs as a CIB (includes version details)", NULL }, - { "stdin", 's', G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, &options.use_stdin, + { "no-version", 'u', G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, + &options.no_version, + "Generate the difference without version details", + NULL }, + + // @COMPAT Deprecated + { "stdin", 's', G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_NONE, &options.use_stdin, "Get the original XML and new (or patch) XML from stdin. Currently\n" INDENT "--original-string and --new-string override this for original\n" INDENT "and new/patch XML, respectively. In a future release, the last\n" INDENT "one specified will be used.", NULL }, - { "no-version", 'u', G_OPTION_FLAG_NONE, G_OPTION_ARG_NONE, - &options.no_version, - "Generate the difference without version details", - NULL }, { NULL } }; @@ -301,8 +310,7 @@ main(int argc, char **argv) } else { exit_code = CRM_EX_USAGE; g_set_error(&error, PCMK__EXITC_ERROR, exit_code, - "Either --original, --original-string, or --stdin must be " - "specified"); + "Either --original or --original-string must be specified"); goto done; } @@ -318,8 +326,7 @@ main(int argc, char **argv) } else { exit_code = CRM_EX_USAGE; g_set_error(&error, PCMK__EXITC_ERROR, exit_code, - "Either --new, --new-string, --patch, or --stdin must be " - "specified"); + "Either --new, --new-string, or --patch must be specified"); goto done; } From fca4ebc9c36a03ab22680389ff489d085eef6229 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Tue, 18 Mar 2025 00:09:59 -0700 Subject: [PATCH 064/186] Feature: tools: Use formatted output in crm_diff.c It's a shame that the pcmk__output_t:output_xml() method requires preformatting the XML into a string. Since it's an internal API, maybe we can revisit that soon. Perhaps we should use "patchset" as the root element name for the response, since "diff" is already used as the root element name for the patchset itself. I would have preferred to use "patchset" as the root element name for patchsets, but I don't think I was around when that decision was made. Also, we already have a diff schema in xml/api. We **could** use it and output the patchset XML directly, instead of outputting the patchset XML as CDATA. Ken was pretty adamant about outputting CDATA here. I don't know why, or can't remember. The argument can't be that the XML isn't generated by crm_diff itself, because that's true for almost all of our output formatters. Something about how the format is supposed to be meaningful only to Pacemaker... though I don't see why that ought to be the case. I'm fine with CDATA, regardless. TODO: * Add API schema for crm_diff. * Ideally add some cts-cli tests. Closes T114 Signed-off-by: Reid Wahl --- tools/crm_diff.c | 52 +++++++++++++++++++----------------------------- 1 file changed, 21 insertions(+), 31 deletions(-) diff --git a/tools/crm_diff.c b/tools/crm_diff.c index 634281ccb54..ea244f48b28 100644 --- a/tools/crm_diff.c +++ b/tools/crm_diff.c @@ -113,34 +113,11 @@ static GOptionEntry addl_entries[] = { { NULL } }; -/*! - * \internal - * \brief Print an XML tree serialized to text - * - * \param[in] xml XML tree to print - * - * \todo Use pcmk__output_t with message functions and drop this. - * - * \note This is basically a simplified version of \c pcmk__xml_write_fd(), but - * that function closes the stream before returning. We could modify it in - * the future. But we don't want to close stdout. - */ -static void -print_xml(const xmlNode *xml) -{ - GString *buffer = g_string_sized_new(1024); - - pcmk__xml_string(xml, pcmk__xml_fmt_pretty, buffer, 0); - - printf("%s", buffer->str); - g_string_free(buffer, TRUE); - fflush(stdout); -} - /*! * \internal * \brief Create an XML patchset from the given source and target XML trees * + * \param[in,out] out Output object * \param[in,out] source Source XML * \param[in,out] target Target XML * \param[in] as_cib If \c true, treat the XML trees as CIBs. In @@ -153,7 +130,8 @@ print_xml(const xmlNode *xml) * \return Standard Pacemaker return code */ static int -generate_patch(xmlNode *source, xmlNode *target, bool as_cib, bool no_version) +generate_patch(pcmk__output_t *out, xmlNode *source, xmlNode *target, + bool as_cib, bool no_version) { static const char *const vfields[] = { PCMK_XA_ADMIN_EPOCH, @@ -162,6 +140,7 @@ generate_patch(xmlNode *source, xmlNode *target, bool as_cib, bool no_version) }; xmlNode *patchset = NULL; + GString *buffer = NULL; // Currently impossibly; just a reminder for when we move to libpacemaker pcmk__assert(!as_cib || !no_version); @@ -200,8 +179,13 @@ generate_patch(xmlNode *source, xmlNode *target, bool as_cib, bool no_version) } pcmk__log_xml_patchset(LOG_NOTICE, patchset); - print_xml(patchset); + + buffer = g_string_sized_new(1024); + pcmk__xml_string(patchset, pcmk__xml_fmt_pretty, buffer, 0); + out->output_xml(out, PCMK_XE_DIFF, buffer->str); + pcmk__xml_free(patchset); + g_string_free(buffer, TRUE); /* pcmk_rc_error means there's a non-empty diff. * @COMPAT Choose a more descriptive return code, like one that maps to @@ -219,7 +203,8 @@ static const pcmk__supported_format_t formats[] = { }; static GOptionContext * -build_arg_context(pcmk__common_args_t *args) { +build_arg_context(pcmk__common_args_t *args, GOptionGroup **group) +{ GOptionContext *context = NULL; const char *description = "Examples:\n\n" @@ -233,7 +218,7 @@ build_arg_context(pcmk__common_args_t *args) { "Apply the patch to the running cluster:\n\n" "\t# cibadmin --patch -x patch.xml\n"; - context = pcmk__build_arg_context(args, NULL, NULL, NULL); + context = pcmk__build_arg_context(args, "text (default), xml", group, NULL); g_option_context_set_description(context, description); pcmk__add_arg_group(context, "xml", "Original XML:", @@ -261,7 +246,7 @@ main(int argc, char **argv) GOptionGroup *output_group = NULL; pcmk__common_args_t *args = pcmk__new_common_args(SUMMARY); gchar **processed_args = pcmk__cmdline_preproc(argv, "nopNO"); - GOptionContext *context = build_arg_context(args); + GOptionContext *context = build_arg_context(args, &output_group); pcmk__register_formats(output_group, formats); @@ -350,11 +335,16 @@ main(int argc, char **argv) g_set_error(&error, PCMK__RC_ERROR, rc, "Could not apply patch: %s", pcmk_rc_str(rc)); } else { - print_xml(source); + GString *buffer = g_string_sized_new(1024); + + pcmk__xml_string(source, pcmk__xml_fmt_pretty, buffer, 0); + out->output_xml(out, PCMK_XE_DIFF, buffer->str); + g_string_free(buffer, TRUE); } } else { - rc = generate_patch(source, target, options.as_cib, options.no_version); + rc = generate_patch(out, source, target, options.as_cib, + options.no_version); } exit_code = pcmk_rc2exitc(rc); From d84c2b226677f3cf331de661995a50513082b84b Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Tue, 18 Mar 2025 19:18:40 -0700 Subject: [PATCH 065/186] Refactor: libcrmcluster: Check return value in parse_election_message() Signed-off-by: Reid Wahl --- lib/cluster/election.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/cluster/election.c b/lib/cluster/election.c index 51d4630b18b..683bdf48b68 100644 --- a/lib/cluster/election.c +++ b/lib/cluster/election.c @@ -451,11 +451,14 @@ parse_election_message(const xmlNode *message, struct vote *vote) /* Only vote ops have uptime. Warning: PCMK__XA_ELECTION_AGE_NANO_SEC value is in microseconds. */ - crm_element_value_timeval(message, PCMK__XA_ELECTION_AGE_SEC, - PCMK__XA_ELECTION_AGE_NANO_SEC, &(vote->age)); - if ((vote->age.tv_sec < 0) || (vote->age.tv_usec < 0)) { - crm_warn("Cannot count election %s from %s " - "because it is missing uptime", vote->op, vote->from); + if ((crm_element_value_timeval(message, PCMK__XA_ELECTION_AGE_SEC, + PCMK__XA_ELECTION_AGE_NANO_SEC, + &(vote->age)) != pcmk_ok) + || (vote->age.tv_sec < 0) || (vote->age.tv_usec < 0)) { + + crm_warn("Cannot count election %s from %s because uptime is " + "missing or invalid", + vote->op, vote->from); return FALSE; } From 41f778f4a9c2245eb6a7df7d9e316a64a19ac57d Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Tue, 18 Mar 2025 22:41:36 -0700 Subject: [PATCH 066/186] Refactor: libcrmcommon: New pcmk__xe_get_timeval() To replace crm_element_value_timeval(). Don't bother defaulting time values to 0. Instead, callers can check the return value and respond appropriately. Signed-off-by: Reid Wahl --- include/crm/common/xml_element_internal.h | 3 ++ lib/cluster/election.c | 8 ++-- lib/common/xml_element.c | 49 +++++++++++++++++++++++ 3 files changed, 56 insertions(+), 4 deletions(-) diff --git a/include/crm/common/xml_element_internal.h b/include/crm/common/xml_element_internal.h index 0420212952d..129b954b871 100644 --- a/include/crm/common/xml_element_internal.h +++ b/include/crm/common/xml_element_internal.h @@ -156,6 +156,9 @@ pcmk__xe_foreach_child(xmlNode *xml, const char *child_element_name, int pcmk__xe_get_datetime(const xmlNode *xml, const char *attr, crm_time_t **t); int pcmk__xe_get_flags(const xmlNode *xml, const char *name, uint32_t *dest, uint32_t default_value); +int pcmk__xe_get_timeval(const xmlNode *xml, const char *sec_attr, + const char *usec_attr, struct timeval *dest); + void pcmk__xe_set_bool_attr(xmlNodePtr node, const char *name, bool value); int pcmk__xe_get_bool_attr(const xmlNode *node, const char *name, bool *value); diff --git a/lib/cluster/election.c b/lib/cluster/election.c index 683bdf48b68..8ab48ca049d 100644 --- a/lib/cluster/election.c +++ b/lib/cluster/election.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. * @@ -451,9 +451,9 @@ parse_election_message(const xmlNode *message, struct vote *vote) /* Only vote ops have uptime. Warning: PCMK__XA_ELECTION_AGE_NANO_SEC value is in microseconds. */ - if ((crm_element_value_timeval(message, PCMK__XA_ELECTION_AGE_SEC, - PCMK__XA_ELECTION_AGE_NANO_SEC, - &(vote->age)) != pcmk_ok) + if ((pcmk__xe_get_timeval(message, PCMK__XA_ELECTION_AGE_SEC, + PCMK__XA_ELECTION_AGE_NANO_SEC, + &(vote->age)) != pcmk_rc_ok) || (vote->age.tv_sec < 0) || (vote->age.tv_usec < 0)) { crm_warn("Cannot count election %s from %s because uptime is " diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index eebf2137ce8..2c6564568c8 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -1276,6 +1276,55 @@ pcmk__xe_get_flags(const xmlNode *xml, const char *name, uint32_t *dest, return rc; } +/*! + * \internal + * \brief Retrieve the values of XML second/microsecond attributes as time + * + * This is like \c crm_element_value() but returns the value as a + * struct timeval. + * + * \param[in] xml XML element whose attributes to get + * \param[in] sec_attr Name of XML attribute for seconds + * \param[in] usec_attr Name of XML attribute for microseconds + * \param[out] dest Where to store result (unchanged on error) + * + * \return Standard Pacemaker return code + */ +int +pcmk__xe_get_timeval(const xmlNode *xml, const char *sec_attr, + const char *usec_attr, struct timeval *dest) +{ + long long value_ll = 0; + struct timeval result = { 0, 0 }; + + // Could allow one of sec_attr and usec_attr to be NULL in the future + CRM_CHECK((xml != NULL) && (sec_attr != NULL) && (usec_attr != NULL) + && (dest != NULL), return EINVAL); + + /* Unfortunately, we can't do any bounds checking, since there are no + * constants provided for the bounds of time_t and suseconds_t, and + * calculating them isn't worth the effort. If there are XML values + * beyond the native sizes, there will probably be worse problems anyway. + */ + + // Parse seconds + errno = 0; + if (crm_element_value_ll(xml, sec_attr, &value_ll) < 0) { + return (errno != 0)? errno : pcmk_rc_bad_nvpair; + } + result.tv_sec = (time_t) value_ll; + + // Parse microseconds + errno = 0; + if (crm_element_value_ll(xml, usec_attr, &value_ll) < 0) { + return (errno != 0)? errno : pcmk_rc_bad_nvpair; + } + result.tv_usec = (suseconds_t) value_ll; + + *dest = result; + return pcmk_rc_ok; +} + /*! * \brief Retrieve the long long integer value of an XML attribute * From 81421710be8610f9433b2243fe38a1c3f56e71f9 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Tue, 18 Mar 2025 22:43:04 -0700 Subject: [PATCH 067/186] API: libcrmcommon: Deprecate crm_element_value_timeval() Signed-off-by: Reid Wahl --- include/crm/common/xml_element.h | 2 - include/crm/common/xml_element_compat.h | 6 ++ lib/common/xml_element.c | 85 +++++++++++-------------- 3 files changed, 42 insertions(+), 51 deletions(-) diff --git a/include/crm/common/xml_element.h b/include/crm/common/xml_element.h index 7487cce1bf8..c2fdd59a948 100644 --- a/include/crm/common/xml_element.h +++ b/include/crm/common/xml_element.h @@ -38,8 +38,6 @@ int crm_element_value_int(const xmlNode *data, const char *name, int *dest); int crm_element_value_ll(const xmlNode *data, const char *name, long long *dest); int crm_element_value_ms(const xmlNode *data, const char *name, guint *dest); int crm_element_value_epoch(const xmlNode *xml, const char *name, time_t *dest); -int crm_element_value_timeval(const xmlNode *data, const char *name_sec, - const char *name_usec, struct timeval *dest); char *crm_element_value_copy(const xmlNode *data, const char *name); #ifdef __cplusplus diff --git a/include/crm/common/xml_element_compat.h b/include/crm/common/xml_element_compat.h index 50e677afbcb..e1aed5513e3 100644 --- a/include/crm/common/xml_element_compat.h +++ b/include/crm/common/xml_element_compat.h @@ -10,6 +10,8 @@ #ifndef PCMK__CRM_COMMON_XML_ELEMENT_COMPAT__H #define PCMK__CRM_COMMON_XML_ELEMENT_COMPAT__H +#include // struct timeval + #include // gboolean #include // xmlNode @@ -39,6 +41,10 @@ xmlNode *sorted_xml(xmlNode *input, xmlNode *parent, gboolean recursive); const char *crm_copy_xml_element(const xmlNode *obj1, xmlNode *obj2, const char *element); +//! \deprecated Do not use +int crm_element_value_timeval(const xmlNode *data, const char *name_sec, + const char *name_usec, struct timeval *dest); + #ifdef __cplusplus } #endif diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index 2c6564568c8..c20ded05d9d 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -1420,55 +1420,6 @@ crm_element_value_epoch(const xmlNode *xml, const char *name, time_t *dest) return pcmk_ok; } -/*! - * \brief Retrieve the value of XML second/microsecond attributes as time - * - * This is like \c crm_element_value() but returning value as a struct timeval. - * - * \param[in] xml XML to parse - * \param[in] name_sec Name of XML attribute for seconds - * \param[in] name_usec Name of XML attribute for microseconds - * \param[out] dest Where to store result - * - * \return \c pcmk_ok on success, -errno on error - * \note Values default to 0 if XML or XML attribute does not exist - */ -int -crm_element_value_timeval(const xmlNode *xml, const char *name_sec, - const char *name_usec, struct timeval *dest) -{ - long long value_i = 0; - - CRM_CHECK(dest != NULL, return -EINVAL); - dest->tv_sec = 0; - dest->tv_usec = 0; - - if (xml == NULL) { - return pcmk_ok; - } - - /* Unfortunately, we can't do any bounds checking, since there are no - * constants provided for the bounds of time_t and suseconds_t, and - * calculating them isn't worth the effort. If there are XML values - * beyond the native sizes, there will probably be worse problems anyway. - */ - - // Parse seconds - errno = 0; - if (crm_element_value_ll(xml, name_sec, &value_i) < 0) { - return -errno; - } - dest->tv_sec = (time_t) value_i; - - // Parse microseconds - if (crm_element_value_ll(xml, name_usec, &value_i) < 0) { - return -errno; - } - dest->tv_usec = (suseconds_t) value_i; - - return pcmk_ok; -} - /*! * \internal * \brief Get a date/time object from an XML attribute value @@ -1663,5 +1614,41 @@ crm_copy_xml_element(const xmlNode *obj1, xmlNode *obj2, const char *element) return value; } +int +crm_element_value_timeval(const xmlNode *xml, const char *name_sec, + const char *name_usec, struct timeval *dest) +{ + long long value_i = 0; + + CRM_CHECK(dest != NULL, return -EINVAL); + dest->tv_sec = 0; + dest->tv_usec = 0; + + if (xml == NULL) { + return pcmk_ok; + } + + /* Unfortunately, we can't do any bounds checking, since there are no + * constants provided for the bounds of time_t and suseconds_t, and + * calculating them isn't worth the effort. If there are XML values + * beyond the native sizes, there will probably be worse problems anyway. + */ + + // Parse seconds + errno = 0; + if (crm_element_value_ll(xml, name_sec, &value_i) < 0) { + return -errno; + } + dest->tv_sec = (time_t) value_i; + + // Parse microseconds + if (crm_element_value_ll(xml, name_usec, &value_i) < 0) { + return -errno; + } + dest->tv_usec = (suseconds_t) value_i; + + return pcmk_ok; +} + // LCOV_EXCL_STOP // End deprecated API From e63a6de830425a45d93a72197ab87b4cd0c20538 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Tue, 18 Mar 2025 23:33:13 -0700 Subject: [PATCH 068/186] Refactor: libcrmcommon: New pcmk__xe_get_time() To replace crm_element_value_epoch() Signed-off-by: Reid Wahl --- daemons/controld/controld_execd.c | 6 +-- daemons/controld/controld_te_callbacks.c | 4 +- include/crm/common/xml_element_internal.h | 1 + lib/common/xml_element.c | 49 +++++++++++++++++------ lib/lrmd/lrmd_client.c | 4 +- lib/pacemaker/pcmk_graph_consumer.c | 6 +-- lib/pacemaker/pcmk_simulate.c | 4 +- lib/pengine/pe_actions.c | 4 +- lib/pengine/pe_output.c | 31 +++++++------- lib/pengine/unpack.c | 13 +++--- 10 files changed, 75 insertions(+), 47 deletions(-) diff --git a/daemons/controld/controld_execd.c b/daemons/controld/controld_execd.c index b05c4810f2a..97077c0b4c9 100644 --- a/daemons/controld/controld_execd.c +++ b/daemons/controld/controld_execd.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. * @@ -2005,8 +2005,8 @@ do_lrm_rsc_op(lrm_state_t *lrm_state, lrmd_rsc_info_t *rsc, xmlNode *msg, pending->rsc_id = pcmk__str_copy(rsc->id); pending->start_time = time(NULL); pending->user_data = pcmk__str_copy(op->user_data); - if (crm_element_value_epoch(msg, PCMK_OPT_SHUTDOWN_LOCK, - &(pending->lock_time)) != pcmk_ok) { + if (pcmk__xe_get_time(msg, PCMK_OPT_SHUTDOWN_LOCK, + &(pending->lock_time)) != pcmk_rc_ok) { pending->lock_time = 0; } g_hash_table_replace(lrm_state->active_ops, call_id_s, pending); diff --git a/daemons/controld/controld_te_callbacks.c b/daemons/controld/controld_te_callbacks.c index c78ec37037e..7fb8905eaf4 100644 --- a/daemons/controld/controld_te_callbacks.c +++ b/daemons/controld/controld_te_callbacks.c @@ -25,8 +25,8 @@ shutdown_lock_cleared(xmlNode *lrm_resource) { time_t shutdown_lock = 0; - return (crm_element_value_epoch(lrm_resource, PCMK_OPT_SHUTDOWN_LOCK, - &shutdown_lock) == pcmk_ok) + return (pcmk__xe_get_time(lrm_resource, PCMK_OPT_SHUTDOWN_LOCK, + &shutdown_lock) == pcmk_rc_ok) && (shutdown_lock == 0); } diff --git a/include/crm/common/xml_element_internal.h b/include/crm/common/xml_element_internal.h index 129b954b871..d0b632cad83 100644 --- a/include/crm/common/xml_element_internal.h +++ b/include/crm/common/xml_element_internal.h @@ -156,6 +156,7 @@ pcmk__xe_foreach_child(xmlNode *xml, const char *child_element_name, int pcmk__xe_get_datetime(const xmlNode *xml, const char *attr, crm_time_t **t); int pcmk__xe_get_flags(const xmlNode *xml, const char *name, uint32_t *dest, uint32_t default_value); +int pcmk__xe_get_time(const xmlNode *xml, const char *attr, time_t *dest); int pcmk__xe_get_timeval(const xmlNode *xml, const char *sec_attr, const char *usec_attr, struct timeval *dest); diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index c20ded05d9d..e5bdafbcb28 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -1276,6 +1276,39 @@ pcmk__xe_get_flags(const xmlNode *xml, const char *name, uint32_t *dest, return rc; } +/*! + * \internal + * \brief Retrieve a \c time_t value from an XML attribute + * + * This is like \c crm_element_value() but returns the value as a \c time_t. + * + * \param[in] xml XML element whose attribute to get + * \param[in] attr Attribute name + * \param[out] dest Where to store attribute value (unchanged on error) + * + * \return Standard Pacemaker return code + */ +int +pcmk__xe_get_time(const xmlNode *xml, const char *attr, time_t *dest) +{ + long long value_ll = 0; + + CRM_CHECK((xml != NULL) && (attr != NULL) && (dest != NULL), return EINVAL); + + errno = 0; + if (crm_element_value_ll(xml, attr, &value_ll) < 0) { + return (errno != 0)? errno : pcmk_rc_bad_nvpair; + } + + /* We don't do any bounds checking, since there are no constants provided + * for the bounds of time_t, and calculating them isn't worth the effort. If + * there are XML values beyond the native sizes, there will likely be worse + * problems anyway. + */ + *dest = (time_t) value_ll; + return pcmk_rc_ok; +} + /*! * \internal * \brief Retrieve the values of XML second/microsecond attributes as time @@ -1301,11 +1334,7 @@ pcmk__xe_get_timeval(const xmlNode *xml, const char *sec_attr, CRM_CHECK((xml != NULL) && (sec_attr != NULL) && (usec_attr != NULL) && (dest != NULL), return EINVAL); - /* Unfortunately, we can't do any bounds checking, since there are no - * constants provided for the bounds of time_t and suseconds_t, and - * calculating them isn't worth the effort. If there are XML values - * beyond the native sizes, there will probably be worse problems anyway. - */ + // No bounds checking; see comment in pcmk__xe_get_time() // Parse seconds errno = 0; @@ -1413,9 +1442,7 @@ crm_element_value_epoch(const xmlNode *xml, const char *name, time_t *dest) return -1; } - /* Unfortunately, we can't do any bounds checking, since time_t has neither - * standardized bounds nor constants defined for them. - */ + // No bounds checking; see comment in pcmk__xe_get_time() *dest = (time_t) value_ll; return pcmk_ok; } @@ -1628,11 +1655,7 @@ crm_element_value_timeval(const xmlNode *xml, const char *name_sec, return pcmk_ok; } - /* Unfortunately, we can't do any bounds checking, since there are no - * constants provided for the bounds of time_t and suseconds_t, and - * calculating them isn't worth the effort. If there are XML values - * beyond the native sizes, there will probably be worse problems anyway. - */ + // No bounds checking; see comment in pcmk__xe_get_time() // Parse seconds errno = 0; diff --git a/lib/lrmd/lrmd_client.c b/lib/lrmd/lrmd_client.c index 23879814f5c..9303e9b847c 100644 --- a/lib/lrmd/lrmd_client.c +++ b/lib/lrmd/lrmd_client.c @@ -311,10 +311,10 @@ lrmd_dispatch_internal(gpointer data, gpointer user_data) crm_element_value_int(msg, PCMK__XA_LRMD_RSC_DELETED, &event.rsc_deleted); - crm_element_value_epoch(msg, PCMK__XA_LRMD_RUN_TIME, &epoch); + pcmk__xe_get_time(msg, PCMK__XA_LRMD_RUN_TIME, &epoch); event.t_run = epoch; - crm_element_value_epoch(msg, PCMK__XA_LRMD_RCCHANGE_TIME, &epoch); + pcmk__xe_get_time(msg, PCMK__XA_LRMD_RCCHANGE_TIME, &epoch); event.t_rcchange = epoch; crm_element_value_int(msg, PCMK__XA_LRMD_EXEC_TIME, &exec_time); diff --git a/lib/pacemaker/pcmk_graph_consumer.c b/lib/pacemaker/pcmk_graph_consumer.c index 745ff4b525a..671af9aa5d7 100644 --- a/lib/pacemaker/pcmk_graph_consumer.c +++ b/lib/pacemaker/pcmk_graph_consumer.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. * @@ -773,8 +773,8 @@ pcmk__unpack_graph(const xmlNode *xml_graph, const char *reference) new_graph->failed_start_offset = crm_element_value_copy(xml_graph, PCMK__XA_FAILED_START_OFFSET); - if (crm_element_value_epoch(xml_graph, "recheck-by", - &(new_graph->recheck_by)) != pcmk_ok) { + if (pcmk__xe_get_time(xml_graph, "recheck-by", + &(new_graph->recheck_by)) != pcmk_rc_ok) { new_graph->recheck_by = 0; } } diff --git a/lib/pacemaker/pcmk_simulate.c b/lib/pacemaker/pcmk_simulate.c index dbaf0d9da39..993d4da76c2 100644 --- a/lib/pacemaker/pcmk_simulate.c +++ b/lib/pacemaker/pcmk_simulate.c @@ -500,8 +500,8 @@ set_effective_date(pcmk_scheduler_t *scheduler, bool print_original, pcmk__assert(out != NULL); - crm_element_value_epoch(scheduler->input, PCMK_XA_EXECUTION_DATE, - &original_date); + pcmk__xe_get_time(scheduler->input, PCMK_XA_EXECUTION_DATE, + &original_date); if (use_date) { scheduler->priv->now = crm_time_new(use_date); diff --git a/lib/pengine/pe_actions.c b/lib/pengine/pe_actions.c index ab0c7605f80..6a81ee72431 100644 --- a/lib/pengine/pe_actions.c +++ b/lib/pengine/pe_actions.c @@ -1628,8 +1628,8 @@ pe__is_newer_op(const xmlNode *xml_a, const xmlNode *xml_b) time_t last_a = -1; time_t last_b = -1; - crm_element_value_epoch(xml_a, PCMK_XA_LAST_RC_CHANGE, &last_a); - crm_element_value_epoch(xml_b, PCMK_XA_LAST_RC_CHANGE, &last_b); + pcmk__xe_get_time(xml_a, PCMK_XA_LAST_RC_CHANGE, &last_a); + pcmk__xe_get_time(xml_b, PCMK_XA_LAST_RC_CHANGE, &last_b); crm_trace("rc-change: %lld vs %lld", (long long) last_a, (long long) last_b); diff --git a/lib/pengine/pe_output.c b/lib/pengine/pe_output.c index a8902f099c1..2be6a21ab8b 100644 --- a/lib/pengine/pe_output.c +++ b/lib/pengine/pe_output.c @@ -250,8 +250,8 @@ op_history_string(xmlNode *xml_op, const char *task, const char *interval_ms_s, time_t epoch = 0; - if ((crm_element_value_epoch(xml_op, PCMK_XA_LAST_RC_CHANGE, - &epoch) == pcmk_ok) + if ((pcmk__xe_get_time(xml_op, PCMK_XA_LAST_RC_CHANGE, + &epoch) == pcmk_rc_ok) && (epoch > 0)) { char *epoch_str = pcmk__epoch2str(&epoch, 0); @@ -1459,8 +1459,8 @@ failed_action_friendly(pcmk__output_t *out, const xmlNode *xml_op, } - if (crm_element_value_epoch(xml_op, PCMK_XA_LAST_RC_CHANGE, - &last_change_epoch) == pcmk_ok) { + if (pcmk__xe_get_time(xml_op, PCMK_XA_LAST_RC_CHANGE, + &last_change_epoch) == pcmk_rc_ok) { char *s = pcmk__epoch2str(&last_change_epoch, 0); pcmk__g_strcat(str, " at ", s, NULL); @@ -1529,8 +1529,8 @@ failed_action_technical(pcmk__output_t *out, const xmlNode *xml_op, pcmk__g_strcat(str, ", exitreason='", exit_reason, "'", NULL); } - if (crm_element_value_epoch(xml_op, PCMK_XA_LAST_RC_CHANGE, - &last_change_epoch) == pcmk_ok) { + if (pcmk__xe_get_time(xml_op, PCMK_XA_LAST_RC_CHANGE, + &last_change_epoch) == pcmk_rc_ok) { char *last_change_str = pcmk__epoch2str(&last_change_epoch, 0); pcmk__g_strcat(str, @@ -1631,8 +1631,9 @@ failed_action_xml(pcmk__output_t *out, va_list args) { NULL); free(rc_s); - if ((crm_element_value_epoch(xml_op, PCMK_XA_LAST_RC_CHANGE, - &epoch) == pcmk_ok) && (epoch > 0)) { + if ((pcmk__xe_get_time(xml_op, PCMK_XA_LAST_RC_CHANGE, + &epoch) == pcmk_rc_ok) + && (epoch > 0)) { const char *queue_time = crm_element_value(xml_op, PCMK_XA_QUEUE_TIME); const char *exec = crm_element_value(xml_op, PCMK_XA_EXEC_TIME); @@ -2228,8 +2229,8 @@ node_and_op(pcmk__output_t *out, va_list args) { node_str = crm_strdup_printf("Unknown resource %s", op_rsc); } - if (crm_element_value_epoch(xml_op, PCMK_XA_LAST_RC_CHANGE, - &last_change) == pcmk_ok) { + if (pcmk__xe_get_time(xml_op, PCMK_XA_LAST_RC_CHANGE, + &last_change) == pcmk_rc_ok) { const char *exec_time = crm_element_value(xml_op, PCMK_XA_EXEC_TIME); last_change_str = crm_strdup_printf(", %s='%s', exec=%sms", @@ -2301,8 +2302,8 @@ node_and_op_xml(pcmk__output_t *out, va_list args) { free(agent_tuple); } - if (crm_element_value_epoch(xml_op, PCMK_XA_LAST_RC_CHANGE, - &last_change) == pcmk_ok) { + if (pcmk__xe_get_time(xml_op, PCMK_XA_LAST_RC_CHANGE, + &last_change) == pcmk_rc_ok) { const char *last_rc_change = pcmk__trim(ctime(&last_change)); const char *exec_time = crm_element_value(xml_op, PCMK_XA_EXEC_TIME); @@ -2845,8 +2846,10 @@ op_history_xml(pcmk__output_t *out, va_list args) { const char *value = NULL; time_t epoch = 0; - if ((crm_element_value_epoch(xml_op, PCMK_XA_LAST_RC_CHANGE, - &epoch) == pcmk_ok) && (epoch > 0)) { + if ((pcmk__xe_get_time(xml_op, PCMK_XA_LAST_RC_CHANGE, + &epoch) == pcmk_rc_ok) + && (epoch > 0)) { + char *s = pcmk__epoch2str(&epoch, 0); crm_xml_add(node, PCMK_XA_LAST_RC_CHANGE, s); free(s); diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c index 83ecb2d838e..4329b2da326 100644 --- a/lib/pengine/unpack.c +++ b/lib/pengine/unpack.c @@ -2688,8 +2688,9 @@ unpack_shutdown_lock(const xmlNode *rsc_entry, pcmk_resource_t *rsc, { time_t lock_time = 0; // When lock started (i.e. node shutdown time) - if ((crm_element_value_epoch(rsc_entry, PCMK_OPT_SHUTDOWN_LOCK, - &lock_time) == pcmk_ok) && (lock_time != 0)) { + if ((pcmk__xe_get_time(rsc_entry, PCMK_OPT_SHUTDOWN_LOCK, + &lock_time) == pcmk_rc_ok) + && (lock_time != 0)) { if ((scheduler->priv->shutdown_lock_ms > 0U) && (pcmk__scheduler_epoch_time(scheduler) @@ -3526,8 +3527,8 @@ last_change_str(const xmlNode *xml_op) time_t when; char *result = NULL; - if (crm_element_value_epoch(xml_op, PCMK_XA_LAST_RC_CHANGE, - &when) == pcmk_ok) { + if (pcmk__xe_get_time(xml_op, PCMK_XA_LAST_RC_CHANGE, + &when) == pcmk_rc_ok) { char *when_s = pcmk__epoch2str(&when, 0); const char *p = strchr(when_s, ' '); @@ -4159,8 +4160,8 @@ check_operation_expiry(struct action_history *history) } if ((expiration_sec > 0) - && (crm_element_value_epoch(history->xml, PCMK_XA_LAST_RC_CHANGE, - &last_run) == 0)) { + && (pcmk__xe_get_time(history->xml, PCMK_XA_LAST_RC_CHANGE, + &last_run) == pcmk_rc_ok)) { /* Resource has a PCMK_META_FAILURE_TIMEOUT and history entry has a * timestamp From 30a31b21623d20b540881acc8f4e41c6d1e4d6c9 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Tue, 18 Mar 2025 23:43:43 -0700 Subject: [PATCH 069/186] Refactor: libpe_status: Fix whitespace issues in pe_actions.c Signed-off-by: Reid Wahl --- lib/pengine/pe_actions.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/lib/pengine/pe_actions.c b/lib/pengine/pe_actions.c index 6a81ee72431..5f17c42dcf1 100644 --- a/lib/pengine/pe_actions.c +++ b/lib/pengine/pe_actions.c @@ -1141,7 +1141,7 @@ get_pseudo_op(const char *name, pcmk_scheduler_t *scheduler) } static GList * -find_unfencing_devices(GList *candidates, GList *matches) +find_unfencing_devices(GList *candidates, GList *matches) { for (GList *gIter = candidates; gIter != NULL; gIter = gIter->next) { pcmk_resource_t *candidate = gIter->data; @@ -1569,13 +1569,14 @@ pe__clear_resource_history(pcmk_resource_t *rsc, const pcmk_node_t *node) PCMK_ACTION_LRM_DELETE, node, FALSE, rsc->priv->scheduler); } -#define sort_return(an_int, why) do { \ - free(a_uuid); \ - free(b_uuid); \ - crm_trace("%s (%d) %c %s (%d) : %s", \ - a_xml_id, a_call_id, an_int>0?'>':an_int<0?'<':'=', \ - b_xml_id, b_call_id, why); \ - return an_int; \ +#define sort_return(an_int, why) do { \ + free(a_uuid); \ + free(b_uuid); \ + crm_trace("%s (%d) %c %s (%d) : %s", \ + a_xml_id, a_call_id, \ + (((an_int) > 0)? '>' : (((an_int) < 0)? '<' : '=')), \ + b_xml_id, b_call_id, why); \ + return an_int; \ } while(0) int From 9be9dfd1e3d66a1a961e92801db1daf07ced2d74 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Tue, 18 Mar 2025 23:44:19 -0700 Subject: [PATCH 070/186] Refactor: various: Check pcmk__xe_get_time() rc only where useful Take advantage of the fact that the destination output variable is unchanged on error. If the caller initialized it to some value (either explicitly or by allocating memory with calloc() or pcmk__assert_alloc()), then we can assume that either it's unchanged or a valid value was parsed into it. Signed-off-by: Reid Wahl --- daemons/controld/controld_execd.c | 5 +---- lib/lrmd/lrmd_client.c | 8 ++------ lib/pacemaker/pcmk_graph_consumer.c | 5 +---- lib/pengine/pe_output.c | 17 ++++++---------- lib/pengine/unpack.c | 30 ++++++++++++++++------------- 5 files changed, 27 insertions(+), 38 deletions(-) diff --git a/daemons/controld/controld_execd.c b/daemons/controld/controld_execd.c index 97077c0b4c9..f2ecb49e05a 100644 --- a/daemons/controld/controld_execd.c +++ b/daemons/controld/controld_execd.c @@ -2005,10 +2005,7 @@ do_lrm_rsc_op(lrm_state_t *lrm_state, lrmd_rsc_info_t *rsc, xmlNode *msg, pending->rsc_id = pcmk__str_copy(rsc->id); pending->start_time = time(NULL); pending->user_data = pcmk__str_copy(op->user_data); - if (pcmk__xe_get_time(msg, PCMK_OPT_SHUTDOWN_LOCK, - &(pending->lock_time)) != pcmk_rc_ok) { - pending->lock_time = 0; - } + pcmk__xe_get_time(msg, PCMK_OPT_SHUTDOWN_LOCK, &(pending->lock_time)); g_hash_table_replace(lrm_state->active_ops, call_id_s, pending); if ((op->interval_ms > 0) diff --git a/lib/lrmd/lrmd_client.c b/lib/lrmd/lrmd_client.c index 9303e9b847c..f85a23bb6e4 100644 --- a/lib/lrmd/lrmd_client.c +++ b/lib/lrmd/lrmd_client.c @@ -295,7 +295,6 @@ lrmd_dispatch_internal(gpointer data, gpointer user_data) int rc = 0; int exec_time = 0; int queue_time = 0; - time_t epoch = 0; crm_element_value_int(msg, PCMK__XA_LRMD_TIMEOUT, &event.timeout); crm_element_value_ms(msg, PCMK__XA_LRMD_RSC_INTERVAL, @@ -311,11 +310,8 @@ lrmd_dispatch_internal(gpointer data, gpointer user_data) crm_element_value_int(msg, PCMK__XA_LRMD_RSC_DELETED, &event.rsc_deleted); - pcmk__xe_get_time(msg, PCMK__XA_LRMD_RUN_TIME, &epoch); - event.t_run = epoch; - - pcmk__xe_get_time(msg, PCMK__XA_LRMD_RCCHANGE_TIME, &epoch); - event.t_rcchange = epoch; + pcmk__xe_get_time(msg, PCMK__XA_LRMD_RUN_TIME, &event.t_run); + pcmk__xe_get_time(msg, PCMK__XA_LRMD_RCCHANGE_TIME, &event.t_rcchange); crm_element_value_int(msg, PCMK__XA_LRMD_EXEC_TIME, &exec_time); CRM_LOG_ASSERT(exec_time >= 0); diff --git a/lib/pacemaker/pcmk_graph_consumer.c b/lib/pacemaker/pcmk_graph_consumer.c index 671af9aa5d7..e13bc6a3604 100644 --- a/lib/pacemaker/pcmk_graph_consumer.c +++ b/lib/pacemaker/pcmk_graph_consumer.c @@ -773,10 +773,7 @@ pcmk__unpack_graph(const xmlNode *xml_graph, const char *reference) new_graph->failed_start_offset = crm_element_value_copy(xml_graph, PCMK__XA_FAILED_START_OFFSET); - if (pcmk__xe_get_time(xml_graph, "recheck-by", - &(new_graph->recheck_by)) != pcmk_rc_ok) { - new_graph->recheck_by = 0; - } + pcmk__xe_get_time(xml_graph, "recheck-by", &(new_graph->recheck_by)); } // Unpack each child element diff --git a/lib/pengine/pe_output.c b/lib/pengine/pe_output.c index 2be6a21ab8b..56197079d0e 100644 --- a/lib/pengine/pe_output.c +++ b/lib/pengine/pe_output.c @@ -250,9 +250,8 @@ op_history_string(xmlNode *xml_op, const char *task, const char *interval_ms_s, time_t epoch = 0; - if ((pcmk__xe_get_time(xml_op, PCMK_XA_LAST_RC_CHANGE, - &epoch) == pcmk_rc_ok) - && (epoch > 0)) { + pcmk__xe_get_time(xml_op, PCMK_XA_LAST_RC_CHANGE, &epoch); + if (epoch > 0) { char *epoch_str = pcmk__epoch2str(&epoch, 0); last_change_str = crm_strdup_printf(" %s=\"%s\"", @@ -1631,10 +1630,8 @@ failed_action_xml(pcmk__output_t *out, va_list args) { NULL); free(rc_s); - if ((pcmk__xe_get_time(xml_op, PCMK_XA_LAST_RC_CHANGE, - &epoch) == pcmk_rc_ok) - && (epoch > 0)) { - + pcmk__xe_get_time(xml_op, PCMK_XA_LAST_RC_CHANGE, &epoch); + if (epoch > 0) { const char *queue_time = crm_element_value(xml_op, PCMK_XA_QUEUE_TIME); const char *exec = crm_element_value(xml_op, PCMK_XA_EXEC_TIME); const char *task = crm_element_value(xml_op, PCMK_XA_OPERATION); @@ -2846,10 +2843,8 @@ op_history_xml(pcmk__output_t *out, va_list args) { const char *value = NULL; time_t epoch = 0; - if ((pcmk__xe_get_time(xml_op, PCMK_XA_LAST_RC_CHANGE, - &epoch) == pcmk_rc_ok) - && (epoch > 0)) { - + pcmk__xe_get_time(xml_op, PCMK_XA_LAST_RC_CHANGE, &epoch); + if (epoch > 0) { char *s = pcmk__epoch2str(&epoch, 0); crm_xml_add(node, PCMK_XA_LAST_RC_CHANGE, s); free(s); diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c index 4329b2da326..9ec9efa55cb 100644 --- a/lib/pengine/unpack.c +++ b/lib/pengine/unpack.c @@ -2687,21 +2687,25 @@ unpack_shutdown_lock(const xmlNode *rsc_entry, pcmk_resource_t *rsc, const pcmk_node_t *node, pcmk_scheduler_t *scheduler) { time_t lock_time = 0; // When lock started (i.e. node shutdown time) + time_t sched_time = 0; + guint shutdown_lock_ms = scheduler->priv->shutdown_lock_ms; - if ((pcmk__xe_get_time(rsc_entry, PCMK_OPT_SHUTDOWN_LOCK, - &lock_time) == pcmk_rc_ok) - && (lock_time != 0)) { + pcmk__xe_get_time(rsc_entry, PCMK_OPT_SHUTDOWN_LOCK, &lock_time); + if (lock_time == 0) { + return; + } - if ((scheduler->priv->shutdown_lock_ms > 0U) - && (pcmk__scheduler_epoch_time(scheduler) - > (lock_time + pcmk__timeout_ms2s(scheduler->priv->shutdown_lock_ms)))) { - pcmk__rsc_info(rsc, "Shutdown lock for %s on %s expired", - rsc->id, pcmk__node_name(node)); - pe__clear_resource_history(rsc, node); - } else { - rsc->priv->lock_node = node; - rsc->priv->lock_time = lock_time; - } + sched_time = pcmk__scheduler_epoch_time(scheduler); + if ((shutdown_lock_ms > 0U) + && (sched_time > (lock_time + pcmk__timeout_ms2s(shutdown_lock_ms)))) { + + pcmk__rsc_info(rsc, "Shutdown lock for %s on %s expired", + rsc->id, pcmk__node_name(node)); + pe__clear_resource_history(rsc, node); + + } else { + rsc->priv->lock_node = node; + rsc->priv->lock_time = lock_time; } } From 51e3d573e6d87d90aa2046dae403d8b20a5ce28b Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Tue, 18 Mar 2025 23:45:24 -0700 Subject: [PATCH 071/186] API: libcrmcommon: Deprecate crm_element_value_epoch() Signed-off-by: Reid Wahl --- include/crm/common/xml_element.h | 1 - include/crm/common/xml_element_compat.h | 3 ++ lib/common/xml_element.c | 39 +++++++++---------------- 3 files changed, 17 insertions(+), 26 deletions(-) diff --git a/include/crm/common/xml_element.h b/include/crm/common/xml_element.h index c2fdd59a948..70ae8d65a0a 100644 --- a/include/crm/common/xml_element.h +++ b/include/crm/common/xml_element.h @@ -37,7 +37,6 @@ const char *crm_element_value(const xmlNode *data, const char *name); int crm_element_value_int(const xmlNode *data, const char *name, int *dest); int crm_element_value_ll(const xmlNode *data, const char *name, long long *dest); int crm_element_value_ms(const xmlNode *data, const char *name, guint *dest); -int crm_element_value_epoch(const xmlNode *xml, const char *name, time_t *dest); char *crm_element_value_copy(const xmlNode *data, const char *name); #ifdef __cplusplus diff --git a/include/crm/common/xml_element_compat.h b/include/crm/common/xml_element_compat.h index e1aed5513e3..3ea8b1c88f6 100644 --- a/include/crm/common/xml_element_compat.h +++ b/include/crm/common/xml_element_compat.h @@ -45,6 +45,9 @@ const char *crm_copy_xml_element(const xmlNode *obj1, xmlNode *obj2, int crm_element_value_timeval(const xmlNode *data, const char *name_sec, const char *name_usec, struct timeval *dest); +//! \deprecated Do not use +int crm_element_value_epoch(const xmlNode *xml, const char *name, time_t *dest); + #ifdef __cplusplus } #endif diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index e5bdafbcb28..8f3f9ff806a 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -1422,31 +1422,6 @@ crm_element_value_ms(const xmlNode *data, const char *name, guint *dest) return pcmk_ok; } -/*! - * \brief Retrieve the seconds-since-epoch value of an XML attribute - * - * This is like \c crm_element_value() but returning the value as a time_t. - * - * \param[in] xml XML node to check - * \param[in] name Attribute name to check - * \param[out] dest Where to store attribute value - * - * \return \c pcmk_ok on success, -1 otherwise - */ -int -crm_element_value_epoch(const xmlNode *xml, const char *name, time_t *dest) -{ - long long value_ll = 0; - - if (crm_element_value_ll(xml, name, &value_ll) < 0) { - return -1; - } - - // No bounds checking; see comment in pcmk__xe_get_time() - *dest = (time_t) value_ll; - return pcmk_ok; -} - /*! * \internal * \brief Get a date/time object from an XML attribute value @@ -1673,5 +1648,19 @@ crm_element_value_timeval(const xmlNode *xml, const char *name_sec, return pcmk_ok; } +int +crm_element_value_epoch(const xmlNode *xml, const char *name, time_t *dest) +{ + long long value_ll = 0; + + if (crm_element_value_ll(xml, name, &value_ll) < 0) { + return -1; + } + + // No bounds checking; see comment in pcmk__xe_get_time() + *dest = (time_t) value_ll; + return pcmk_ok; +} + // LCOV_EXCL_STOP // End deprecated API From cbbcee50acfa7db65a71d7e5eb022a5a96c1ac61 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 19 Mar 2025 00:53:53 -0700 Subject: [PATCH 072/186] Refactor: libcrmcommon: New pcmk__xe_get_guint() To replace crm_element_value_ms(). The only thing milliseconds-specific about the existing function was the error message. IMO, it's better not to log errors or warnings within the getter function. The caller has more context and can log errors or warnings if appropriate. Sometimes, a parse failure may be expected as a legitimate possibility. Signed-off-by: Reid Wahl --- daemons/controld/controld_execd.c | 2 +- daemons/controld/controld_messages.c | 6 ++--- daemons/execd/execd_commands.c | 5 ++-- include/crm/common/xml_element_internal.h | 2 ++ lib/common/digest.c | 4 +-- lib/common/xml_element.c | 31 +++++++++++++++++++++++ lib/lrmd/lrmd_client.c | 3 +-- lib/pacemaker/pcmk_resource.c | 4 +-- lib/pacemaker/pcmk_sched_actions.c | 4 +-- lib/pengine/failcounts.c | 2 +- lib/pengine/pe_digest.c | 2 +- lib/pengine/pe_output.c | 2 +- lib/pengine/unpack.c | 12 ++++----- 13 files changed, 54 insertions(+), 25 deletions(-) diff --git a/daemons/controld/controld_execd.c b/daemons/controld/controld_execd.c index f2ecb49e05a..5fa73221c7d 100644 --- a/daemons/controld/controld_execd.c +++ b/daemons/controld/controld_execd.c @@ -1255,7 +1255,7 @@ static bool do_lrm_cancel(ha_msg_input_t *input, lrm_state_t *lrm_state, CRM_CHECK(op_task != NULL, return FALSE); meta_key = crm_meta_name(PCMK_META_INTERVAL); - if (crm_element_value_ms(params, meta_key, &interval_ms) != pcmk_ok) { + if (pcmk__xe_get_guint(params, meta_key, &interval_ms) != pcmk_rc_ok) { free(meta_key); return FALSE; } diff --git a/daemons/controld/controld_messages.c b/daemons/controld/controld_messages.c index df215e69dd4..b12d6823e0c 100644 --- a/daemons/controld/controld_messages.c +++ b/daemons/controld/controld_messages.c @@ -659,9 +659,9 @@ handle_failcount_op(xmlNode * stored_msg) if (xml_attrs) { op = crm_element_value(xml_attrs, CRM_META "_" PCMK__META_CLEAR_FAILURE_OP); - crm_element_value_ms(xml_attrs, - CRM_META "_" PCMK__META_CLEAR_FAILURE_INTERVAL, - &interval_ms); + pcmk__xe_get_guint(xml_attrs, + CRM_META "_" PCMK__META_CLEAR_FAILURE_INTERVAL, + &interval_ms); } } uname = crm_element_value(xml_op, PCMK__META_ON_NODE); diff --git a/daemons/execd/execd_commands.c b/daemons/execd/execd_commands.c index e961d3d661a..7939fe79f91 100644 --- a/daemons/execd/execd_commands.c +++ b/daemons/execd/execd_commands.c @@ -317,8 +317,7 @@ create_lrmd_cmd(xmlNode *msg, pcmk__client_t *client) cmd->client_id = pcmk__str_copy(client->id); crm_element_value_int(msg, PCMK__XA_LRMD_CALLID, &cmd->call_id); - crm_element_value_ms(rsc_xml, PCMK__XA_LRMD_RSC_INTERVAL, - &cmd->interval_ms); + pcmk__xe_get_guint(rsc_xml, PCMK__XA_LRMD_RSC_INTERVAL, &cmd->interval_ms); crm_element_value_int(rsc_xml, PCMK__XA_LRMD_TIMEOUT, &cmd->timeout); crm_element_value_int(rsc_xml, PCMK__XA_LRMD_RSC_START_DELAY, &cmd->start_delay); @@ -1792,7 +1791,7 @@ process_lrmd_rsc_cancel(pcmk__client_t *client, uint32_t id, xmlNode *request) const char *action = crm_element_value(rsc_xml, PCMK__XA_LRMD_RSC_ACTION); guint interval_ms = 0; - crm_element_value_ms(rsc_xml, PCMK__XA_LRMD_RSC_INTERVAL, &interval_ms); + pcmk__xe_get_guint(rsc_xml, PCMK__XA_LRMD_RSC_INTERVAL, &interval_ms); if (!rsc_id || !action) { return -EINVAL; diff --git a/include/crm/common/xml_element_internal.h b/include/crm/common/xml_element_internal.h index d0b632cad83..880c4855150 100644 --- a/include/crm/common/xml_element_internal.h +++ b/include/crm/common/xml_element_internal.h @@ -20,6 +20,7 @@ #include // NULL #include // strcmp() +#include // guint #include // xmlNode, etc. #include // crm_time_t @@ -156,6 +157,7 @@ pcmk__xe_foreach_child(xmlNode *xml, const char *child_element_name, int pcmk__xe_get_datetime(const xmlNode *xml, const char *attr, crm_time_t **t); int pcmk__xe_get_flags(const xmlNode *xml, const char *name, uint32_t *dest, uint32_t default_value); +int pcmk__xe_get_guint(const xmlNode *xml, const char *attr, guint *dest); int pcmk__xe_get_time(const xmlNode *xml, const char *attr, time_t *dest); int pcmk__xe_get_timeval(const xmlNode *xml, const char *sec_attr, const char *usec_attr, struct timeval *dest); diff --git a/lib/common/digest.c b/lib/common/digest.c index a8e809719c5..9eadcfbdda3 100644 --- a/lib/common/digest.c +++ b/lib/common/digest.c @@ -319,9 +319,7 @@ pcmk__filter_op_for_digest(xmlNode *param_set) * removing meta-attributes */ key = crm_meta_name(PCMK_META_INTERVAL); - if (crm_element_value_ms(param_set, key, &interval_ms) != pcmk_ok) { - interval_ms = 0; - } + pcmk__xe_get_guint(param_set, key, &interval_ms); free(key); key = NULL; if (interval_ms != 0) { diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index 8f3f9ff806a..e873a4924d8 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -1276,6 +1276,37 @@ pcmk__xe_get_flags(const xmlNode *xml, const char *name, uint32_t *dest, return rc; } +/*! + * \internal + * \brief Retrieve a \c guint value from an XML attribute + * + * This is like \c crm_element_value() but returns the value as a \c guint. + * + * \param[in] xml XML element whose attribute to get + * \param[in] attr Attribute name + * \param[out] dest Where to store attribute value (unchanged on error) + * + * \return Standard Pacemaker return code + */ +int +pcmk__xe_get_guint(const xmlNode *xml, const char *attr, guint *dest) +{ + long long value_ll = 0; + + CRM_CHECK((xml != NULL) && (attr != NULL) && (dest != NULL), return EINVAL); + + errno = 0; + if (crm_element_value_ll(xml, attr, &value_ll) != 0) { + return (errno != 0)? errno : pcmk_rc_bad_nvpair; + } + + if ((value_ll < 0) || (value_ll > G_MAXUINT)) { + return ERANGE; + } + *dest = (guint) value_ll; + return pcmk_rc_ok; +} + /*! * \internal * \brief Retrieve a \c time_t value from an XML attribute diff --git a/lib/lrmd/lrmd_client.c b/lib/lrmd/lrmd_client.c index f85a23bb6e4..d1349564e72 100644 --- a/lib/lrmd/lrmd_client.c +++ b/lib/lrmd/lrmd_client.c @@ -297,8 +297,7 @@ lrmd_dispatch_internal(gpointer data, gpointer user_data) int queue_time = 0; crm_element_value_int(msg, PCMK__XA_LRMD_TIMEOUT, &event.timeout); - crm_element_value_ms(msg, PCMK__XA_LRMD_RSC_INTERVAL, - &event.interval_ms); + pcmk__xe_get_guint(msg, PCMK__XA_LRMD_RSC_INTERVAL, &event.interval_ms); crm_element_value_int(msg, PCMK__XA_LRMD_RSC_START_DELAY, &event.start_delay); diff --git a/lib/pacemaker/pcmk_resource.c b/lib/pacemaker/pcmk_resource.c index f0dc928b78a..1233b039a1f 100644 --- a/lib/pacemaker/pcmk_resource.c +++ b/lib/pacemaker/pcmk_resource.c @@ -62,7 +62,7 @@ best_op(const pcmk_resource_t *rsc, const pcmk_node_t *node) "_last_failure_0"); - crm_element_value_ms(lrm_rsc_op, PCMK_META_INTERVAL, &interval_ms); + pcmk__xe_get_guint(lrm_rsc_op, PCMK_META_INTERVAL, &interval_ms); effective_op = interval_ms == 0 && pcmk__strcase_any_of(task, PCMK_ACTION_MONITOR, PCMK_ACTION_START, @@ -219,7 +219,7 @@ pcmk__resource_digests(pcmk__output_t *out, pcmk_resource_t *rsc, // Generate an operation key if (xml_op != NULL) { task = crm_element_value(xml_op, PCMK_XA_OPERATION); - crm_element_value_ms(xml_op, PCMK_META_INTERVAL, &interval_ms); + pcmk__xe_get_guint(xml_op, PCMK_META_INTERVAL, &interval_ms); } if (task == NULL) { // Assume start if no history is available task = PCMK_ACTION_START; diff --git a/lib/pacemaker/pcmk_sched_actions.c b/lib/pacemaker/pcmk_sched_actions.c index c7b7c62fbcf..3a93d64e3d4 100644 --- a/lib/pacemaker/pcmk_sched_actions.c +++ b/lib/pacemaker/pcmk_sched_actions.c @@ -1641,7 +1641,7 @@ pcmk__check_action_config(pcmk_resource_t *rsc, pcmk_node_t *node, task = crm_element_value(xml_op, PCMK_XA_OPERATION); CRM_CHECK(task != NULL, return false); - crm_element_value_ms(xml_op, PCMK_META_INTERVAL, &interval_ms); + pcmk__xe_get_guint(xml_op, PCMK_META_INTERVAL, &interval_ms); // If this is a recurring action, check whether it has been orphaned if (interval_ms > 0) { @@ -1829,7 +1829,7 @@ process_rsc_history(const xmlNode *rsc_entry, pcmk_resource_t *rsc, } task = crm_element_value(rsc_op, PCMK_XA_OPERATION); - crm_element_value_ms(rsc_op, PCMK_META_INTERVAL, &interval_ms); + pcmk__xe_get_guint(rsc_op, PCMK_META_INTERVAL, &interval_ms); if ((interval_ms > 0) && (pcmk_is_set(rsc->flags, pcmk__rsc_maintenance) diff --git a/lib/pengine/failcounts.c b/lib/pengine/failcounts.c index 4f3f3281912..07c4f84dd8d 100644 --- a/lib/pengine/failcounts.c +++ b/lib/pengine/failcounts.c @@ -42,7 +42,7 @@ is_matched_failure(const char *rsc_id, const xmlNode *conf_op_xml, // Get name and interval from op history entry lrm_op_task = crm_element_value(lrm_op_xml, PCMK_XA_OPERATION); - crm_element_value_ms(lrm_op_xml, PCMK_META_INTERVAL, &lrm_op_interval_ms); + pcmk__xe_get_guint(lrm_op_xml, PCMK_META_INTERVAL, &lrm_op_interval_ms); if ((conf_op_interval_ms != lrm_op_interval_ms) || !pcmk__str_eq(conf_op_name, lrm_op_task, pcmk__str_casei)) { diff --git a/lib/pengine/pe_digest.c b/lib/pengine/pe_digest.c index ff59a5aa74e..c0aead3895d 100644 --- a/lib/pengine/pe_digest.c +++ b/lib/pengine/pe_digest.c @@ -406,7 +406,7 @@ rsc_action_digest_cmp(pcmk_resource_t *rsc, const xmlNode *xml_op, digest_all = crm_element_value(xml_op, PCMK__XA_OP_DIGEST); digest_restart = crm_element_value(xml_op, PCMK__XA_OP_RESTART_DIGEST); - crm_element_value_ms(xml_op, PCMK_META_INTERVAL, &interval_ms); + pcmk__xe_get_guint(xml_op, PCMK_META_INTERVAL, &interval_ms); data = rsc_action_digest(rsc, task, interval_ms, node, xml_op, pcmk_is_set(scheduler->flags, pcmk__sched_sanitized), diff --git a/lib/pengine/pe_output.c b/lib/pengine/pe_output.c index 56197079d0e..7f7e97d6acc 100644 --- a/lib/pengine/pe_output.c +++ b/lib/pengine/pe_output.c @@ -1642,7 +1642,7 @@ failed_action_xml(pcmk__output_t *out, va_list args) { |crm_time_log_timeofday |crm_time_log_with_timezone); - crm_element_value_ms(xml_op, PCMK_META_INTERVAL, &interval_ms); + pcmk__xe_get_guint(xml_op, PCMK_META_INTERVAL, &interval_ms); interval_ms_s = crm_strdup_printf("%u", interval_ms); pcmk__xe_set_props(node, diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c index 9ec9efa55cb..0cc10b836ab 100644 --- a/lib/pengine/unpack.c +++ b/lib/pengine/unpack.c @@ -2608,7 +2608,7 @@ process_recurring(pcmk_node_t *node, pcmk_resource_t *rsc, continue; } - crm_element_value_ms(rsc_op, PCMK_META_INTERVAL, &interval_ms); + pcmk__xe_get_guint(rsc_op, PCMK_META_INTERVAL, &interval_ms); if (interval_ms == 0) { pcmk__rsc_trace(rsc, "Skipping %s on %s: non-recurring", id, pcmk__node_name(node)); @@ -3978,8 +3978,8 @@ remap_operation(struct action_history *history, case PCMK_OCF_UNIMPLEMENT_FEATURE: { guint interval_ms = 0; - crm_element_value_ms(history->xml, PCMK_META_INTERVAL, - &interval_ms); + pcmk__xe_get_guint(history->xml, PCMK_META_INTERVAL, + &interval_ms); if (interval_ms == 0) { if (!expired) { @@ -4595,8 +4595,8 @@ failure_is_newer(const struct action_history *history, return false; // last_failure is for different action } - if ((crm_element_value_ms(last_failure, PCMK_META_INTERVAL, - &failure_interval_ms) != pcmk_ok) + if ((pcmk__xe_get_guint(last_failure, PCMK_META_INTERVAL, + &failure_interval_ms) != pcmk_rc_ok) || (history->interval_ms != failure_interval_ms)) { return false; // last_failure is for action with different interval } @@ -4718,7 +4718,7 @@ unpack_rsc_op(pcmk_resource_t *rsc, pcmk_node_t *node, xmlNode *xml_op, history.id, rsc->id, pcmk__node_name(node)); return; } - crm_element_value_ms(xml_op, PCMK_META_INTERVAL, &(history.interval_ms)); + pcmk__xe_get_guint(xml_op, PCMK_META_INTERVAL, &(history.interval_ms)); if (!can_affect_state(&history)) { pcmk__rsc_trace(rsc, "Ignoring resource history entry %s for %s on %s " From a55fb7e2052aeead1ed1948b953e15ba6ff7e8d9 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 19 Mar 2025 01:09:07 -0700 Subject: [PATCH 073/186] API: libcrmcommon: Deprecate crm_element_value_ms() Signed-off-by: Reid Wahl --- include/crm/common/xml_element.h | 1 - include/crm/common/xml_element_compat.h | 5 +- lib/common/xml_element.c | 63 ++++++++++--------------- 3 files changed, 30 insertions(+), 39 deletions(-) diff --git a/include/crm/common/xml_element.h b/include/crm/common/xml_element.h index 70ae8d65a0a..c96984d4b1f 100644 --- a/include/crm/common/xml_element.h +++ b/include/crm/common/xml_element.h @@ -36,7 +36,6 @@ const char *crm_xml_add_timeval(xmlNode *xml, const char *name_sec, const char *crm_element_value(const xmlNode *data, const char *name); int crm_element_value_int(const xmlNode *data, const char *name, int *dest); int crm_element_value_ll(const xmlNode *data, const char *name, long long *dest); -int crm_element_value_ms(const xmlNode *data, const char *name, guint *dest); char *crm_element_value_copy(const xmlNode *data, const char *name); #ifdef __cplusplus diff --git a/include/crm/common/xml_element_compat.h b/include/crm/common/xml_element_compat.h index 3ea8b1c88f6..9783eeab28f 100644 --- a/include/crm/common/xml_element_compat.h +++ b/include/crm/common/xml_element_compat.h @@ -12,7 +12,7 @@ #include // struct timeval -#include // gboolean +#include // gboolean, guint #include // xmlNode #ifdef __cplusplus @@ -48,6 +48,9 @@ int crm_element_value_timeval(const xmlNode *data, const char *name_sec, //! \deprecated Do not use int crm_element_value_epoch(const xmlNode *xml, const char *name, time_t *dest); +//! \deprecated Do not use +int crm_element_value_ms(const xmlNode *data, const char *name, guint *dest); + #ifdef __cplusplus } #endif diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index e873a4924d8..5814e81aeac 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -1416,43 +1416,6 @@ crm_element_value_ll(const xmlNode *data, const char *name, long long *dest) return -1; } -/*! - * \brief Retrieve the millisecond value of an XML attribute - * - * This is like \c crm_element_value() but returning the value as a guint. - * - * \param[in] data XML node to check - * \param[in] name Attribute name to check - * \param[out] dest Where to store attribute value - * - * \return \c pcmk_ok on success, -1 otherwise - */ -int -crm_element_value_ms(const xmlNode *data, const char *name, guint *dest) -{ - const char *value = NULL; - long long value_ll; - int rc = pcmk_rc_ok; - - CRM_CHECK(dest != NULL, return -1); - *dest = 0; - value = crm_element_value(data, name); - rc = pcmk__scan_ll(value, &value_ll, 0LL); - if (rc != pcmk_rc_ok) { - crm_warn("Using default for %s " - "because '%s' is not valid milliseconds: %s", - name, value, pcmk_rc_str(rc)); - return -1; - } - if ((value_ll < 0) || (value_ll > G_MAXUINT)) { - crm_warn("Using default for %s because '%s' is out of range", - name, value); - return -1; - } - *dest = (guint) value_ll; - return pcmk_ok; -} - /*! * \internal * \brief Get a date/time object from an XML attribute value @@ -1693,5 +1656,31 @@ crm_element_value_epoch(const xmlNode *xml, const char *name, time_t *dest) return pcmk_ok; } +int +crm_element_value_ms(const xmlNode *data, const char *name, guint *dest) +{ + const char *value = NULL; + long long value_ll; + int rc = pcmk_rc_ok; + + CRM_CHECK(dest != NULL, return -1); + *dest = 0; + value = crm_element_value(data, name); + rc = pcmk__scan_ll(value, &value_ll, 0LL); + if (rc != pcmk_rc_ok) { + crm_warn("Using default for %s " + "because '%s' is not valid milliseconds: %s", + name, value, pcmk_rc_str(rc)); + return -1; + } + if ((value_ll < 0) || (value_ll > G_MAXUINT)) { + crm_warn("Using default for %s because '%s' is out of range", + name, value); + return -1; + } + *dest = (guint) value_ll; + return pcmk_ok; +} + // LCOV_EXCL_STOP // End deprecated API From 82d20392fe5b6a8030bdb7a8f1beba5dbf20bb88 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 19 Mar 2025 01:10:37 -0700 Subject: [PATCH 074/186] Refactor: various: Use pcmk__xe_get_time() where appropriate Signed-off-by: Reid Wahl --- daemons/fenced/fenced_history.c | 4 +--- lib/common/ipc_pacemakerd.c | 13 ++++++++----- lib/common/xml_element.c | 8 ++++---- lib/fencing/st_client.c | 4 +--- lib/lrmd/lrmd_client.c | 5 ++--- 5 files changed, 16 insertions(+), 18 deletions(-) diff --git a/daemons/fenced/fenced_history.c b/daemons/fenced/fenced_history.c index 9807a7f38cd..6eb393b2eed 100644 --- a/daemons/fenced/fenced_history.c +++ b/daemons/fenced/fenced_history.c @@ -251,7 +251,6 @@ stonith_xml_history_to_list(const xmlNode *history) int state; int exit_status = CRM_EX_OK; int execution_status = PCMK_EXEC_DONE; - long long completed; long long completed_nsec = 0L; if (!id) { @@ -270,8 +269,7 @@ stonith_xml_history_to_list(const xmlNode *history) op->delegate = crm_element_value_copy(xml_op, PCMK__XA_ST_DELEGATE); op->client_name = crm_element_value_copy(xml_op, PCMK__XA_ST_CLIENTNAME); - crm_element_value_ll(xml_op, PCMK__XA_ST_DATE, &completed); - op->completed = (time_t) completed; + pcmk__xe_get_time(xml_op, PCMK__XA_ST_DATE, &op->completed); crm_element_value_ll(xml_op, PCMK__XA_ST_DATE_NSEC, &completed_nsec); op->completed_nsec = completed_nsec; crm_element_value_int(xml_op, PCMK__XA_ST_STATE, &state); diff --git a/lib/common/ipc_pacemakerd.c b/lib/common/ipc_pacemakerd.c index 1ccf609eafe..8febcc5875c 100644 --- a/lib/common/ipc_pacemakerd.c +++ b/lib/common/ipc_pacemakerd.c @@ -1,5 +1,5 @@ /* - * Copyright 2020-2024 the Pacemaker project contributors + * Copyright 2020-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -200,7 +200,6 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) pcmk_pacemakerd_reply_unknown }; const char *value = NULL; - long long value_ll = 0; if (pcmk__xe_is(reply, PCMK__XE_ACK)) { long long int ack_status = 0; @@ -248,8 +247,6 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) wrapper = pcmk__xe_first_child(reply, PCMK__XE_CRM_XML, NULL, NULL); msg_data = pcmk__xe_first_child(wrapper, NULL, NULL, NULL); - crm_element_value_ll(msg_data, PCMK_XA_CRM_TIMESTAMP, &value_ll); - if (pcmk__str_eq(value, CRM_OP_PING, pcmk__str_none)) { reply_data.reply_type = pcmk_pacemakerd_reply_ping; reply_data.data.ping.state = @@ -258,7 +255,13 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) reply_data.data.ping.status = pcmk__str_eq(crm_element_value(msg_data, PCMK_XA_RESULT), "ok", pcmk__str_casei)?pcmk_rc_ok:pcmk_rc_error; - reply_data.data.ping.last_good = (value_ll < 0)? 0 : (time_t) value_ll; + + pcmk__xe_get_time(msg_data, PCMK_XA_CRM_TIMESTAMP, + &reply_data.data.ping.last_good); + if (reply_data.data.ping.last_good < 0) { + reply_data.data.ping.last_good = 0; + } + reply_data.data.ping.sys_from = crm_element_value(msg_data, PCMK__XA_CRM_SUBSYSTEM); } else if (pcmk__str_eq(value, CRM_OP_QUIT, pcmk__str_none)) { diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index 5814e81aeac..50dd896d112 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -1360,6 +1360,7 @@ pcmk__xe_get_timeval(const xmlNode *xml, const char *sec_attr, { long long value_ll = 0; struct timeval result = { 0, 0 }; + int rc = pcmk_rc_ok; // Could allow one of sec_attr and usec_attr to be NULL in the future CRM_CHECK((xml != NULL) && (sec_attr != NULL) && (usec_attr != NULL) @@ -1368,11 +1369,10 @@ pcmk__xe_get_timeval(const xmlNode *xml, const char *sec_attr, // No bounds checking; see comment in pcmk__xe_get_time() // Parse seconds - errno = 0; - if (crm_element_value_ll(xml, sec_attr, &value_ll) < 0) { - return (errno != 0)? errno : pcmk_rc_bad_nvpair; + rc = pcmk__xe_get_time(xml, sec_attr, &(result.tv_sec)); + if (rc != pcmk_rc_ok) { + return rc; } - result.tv_sec = (time_t) value_ll; // Parse microseconds errno = 0; diff --git a/lib/fencing/st_client.c b/lib/fencing/st_client.c index a2c541c366b..140faf55f89 100644 --- a/lib/fencing/st_client.c +++ b/lib/fencing/st_client.c @@ -732,7 +732,6 @@ stonith_api_history(stonith_t * stonith, int call_options, const char *node, for (op = pcmk__xe_first_child(reply, NULL, NULL, NULL); op != NULL; op = pcmk__xe_next(op, NULL)) { stonith_history_t *kvp; - long long completed; long long completed_nsec = 0L; kvp = pcmk__assert_alloc(1, sizeof(stonith_history_t)); @@ -741,8 +740,7 @@ stonith_api_history(stonith_t * stonith, int call_options, const char *node, kvp->origin = crm_element_value_copy(op, PCMK__XA_ST_ORIGIN); kvp->delegate = crm_element_value_copy(op, PCMK__XA_ST_DELEGATE); kvp->client = crm_element_value_copy(op, PCMK__XA_ST_CLIENTNAME); - crm_element_value_ll(op, PCMK__XA_ST_DATE, &completed); - kvp->completed = (time_t) completed; + pcmk__xe_get_time(op, PCMK__XA_ST_DATE, &kvp->completed); crm_element_value_ll(op, PCMK__XA_ST_DATE_NSEC, &completed_nsec); kvp->completed_nsec = completed_nsec; crm_element_value_int(op, PCMK__XA_ST_STATE, &kvp->state); diff --git a/lib/lrmd/lrmd_client.c b/lib/lrmd/lrmd_client.c index d1349564e72..7a63504e731 100644 --- a/lib/lrmd/lrmd_client.c +++ b/lib/lrmd/lrmd_client.c @@ -1021,7 +1021,6 @@ process_lrmd_handshake_reply(xmlNode *reply, lrmd_private_t *native) const char *msg_type = crm_element_value(reply, PCMK__XA_LRMD_OP); const char *tmp_ticket = crm_element_value(reply, PCMK__XA_LRMD_CLIENTID); const char *start_state = crm_element_value(reply, PCMK__XA_NODE_START_STATE); - long long uptime = -1; crm_element_value_int(reply, PCMK__XA_LRMD_RC, &rc); rc = pcmk_legacy2rc(rc); @@ -1030,8 +1029,8 @@ process_lrmd_handshake_reply(xmlNode *reply, lrmd_private_t *native) * in handling transient attributes when the connection to the remote node * unexpectedly drops. If no parameter is given, just default to -1. */ - crm_element_value_ll(reply, PCMK__XA_UPTIME, &uptime); - native->remote->uptime = uptime; + native->remote->uptime = -1; + pcmk__xe_get_time(reply, PCMK__XA_UPTIME, &native->remote->uptime); if (start_state) { native->remote->start_state = strdup(start_state); From f55aef510a39e7e494220a4db80c184a4e1e4622 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 19 Mar 2025 01:29:42 -0700 Subject: [PATCH 075/186] Refactor: libcrmcommon: New pcmk__xe_get_ll() To replace crm_element_value_ll(). IMO, it's better not to log errors or warnings within the getter function. The caller has more context and can log errors or warnings if appropriate. Sometimes, a parse failure may be expected as a legitimate possibility. Signed-off-by: Reid Wahl --- daemons/fenced/fenced_history.c | 4 +- include/crm/common/xml_element_internal.h | 1 + lib/common/ipc_controld.c | 4 +- lib/common/xml_element.c | 56 +++++++++++++++++++---- lib/fencing/st_client.c | 14 ++++-- 5 files changed, 60 insertions(+), 19 deletions(-) diff --git a/daemons/fenced/fenced_history.c b/daemons/fenced/fenced_history.c index 6eb393b2eed..eaeca4dc11f 100644 --- a/daemons/fenced/fenced_history.c +++ b/daemons/fenced/fenced_history.c @@ -251,7 +251,6 @@ stonith_xml_history_to_list(const xmlNode *history) int state; int exit_status = CRM_EX_OK; int execution_status = PCMK_EXEC_DONE; - long long completed_nsec = 0L; if (!id) { crm_warn("Malformed fencing history received from peer"); @@ -270,8 +269,7 @@ stonith_xml_history_to_list(const xmlNode *history) op->client_name = crm_element_value_copy(xml_op, PCMK__XA_ST_CLIENTNAME); pcmk__xe_get_time(xml_op, PCMK__XA_ST_DATE, &op->completed); - crm_element_value_ll(xml_op, PCMK__XA_ST_DATE_NSEC, &completed_nsec); - op->completed_nsec = completed_nsec; + pcmk__xe_get_ll(xml_op, PCMK__XA_ST_DATE_NSEC, &op->completed_nsec); crm_element_value_int(xml_op, PCMK__XA_ST_STATE, &state); op->state = (enum op_state) state; diff --git a/include/crm/common/xml_element_internal.h b/include/crm/common/xml_element_internal.h index 880c4855150..022b4ee26af 100644 --- a/include/crm/common/xml_element_internal.h +++ b/include/crm/common/xml_element_internal.h @@ -158,6 +158,7 @@ int pcmk__xe_get_datetime(const xmlNode *xml, const char *attr, crm_time_t **t); int pcmk__xe_get_flags(const xmlNode *xml, const char *name, uint32_t *dest, uint32_t default_value); int pcmk__xe_get_guint(const xmlNode *xml, const char *attr, guint *dest); +int pcmk__xe_get_ll(const xmlNode *xml, const char *attr, long long *dest); int pcmk__xe_get_time(const xmlNode *xml, const char *attr, time_t *dest); int pcmk__xe_get_timeval(const xmlNode *xml, const char *sec_attr, const char *usec_attr, struct timeval *dest); diff --git a/lib/common/ipc_controld.c b/lib/common/ipc_controld.c index d73a58408d7..7976029c962 100644 --- a/lib/common/ipc_controld.c +++ b/lib/common/ipc_controld.c @@ -1,5 +1,5 @@ /* - * Copyright 2020-2024 the Pacemaker project contributors + * Copyright 2020-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -173,7 +173,7 @@ set_nodes_data(pcmk_controld_api_reply_t *data, xmlNode *msg_data) long long id_ll = 0; node_info = pcmk__assert_alloc(1, sizeof(pcmk_controld_api_node_t)); - crm_element_value_ll(node, PCMK_XA_ID, &id_ll); + pcmk__xe_get_ll(node, PCMK_XA_ID, &id_ll); if (id_ll > 0) { node_info->id = id_ll; } diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index 50dd896d112..db05942d293 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -1292,12 +1292,13 @@ int pcmk__xe_get_guint(const xmlNode *xml, const char *attr, guint *dest) { long long value_ll = 0; + int rc = pcmk_rc_ok; CRM_CHECK((xml != NULL) && (attr != NULL) && (dest != NULL), return EINVAL); - errno = 0; - if (crm_element_value_ll(xml, attr, &value_ll) != 0) { - return (errno != 0)? errno : pcmk_rc_bad_nvpair; + rc = pcmk__xe_get_ll(xml, attr, &value_ll); + if (rc != pcmk_rc_ok) { + return rc; } if ((value_ll < 0) || (value_ll > G_MAXUINT)) { @@ -1307,6 +1308,42 @@ pcmk__xe_get_guint(const xmlNode *xml, const char *attr, guint *dest) return pcmk_rc_ok; } +/*! + * \internal + * \brief Retrieve a long long value from an XML attribute + * + * This is like \c crm_element_value() but returns the value as a + * long long + * + * \param[in] xml XML element whose attribute to get + * \param[in] attr Attribute name + * \param[out] dest Where to store element value (unchanged on error) + * + * \return Standard Pacemaker return code + */ +int +pcmk__xe_get_ll(const xmlNode *xml, const char *attr, long long *dest) +{ + const char *value = NULL; + long long value_ll = 0; + int rc = pcmk_rc_ok; + + CRM_CHECK((xml != NULL) && (attr != NULL) && (dest != NULL), return EINVAL); + + value = crm_element_value(xml, attr); + if (value == NULL) { + return ENXIO; + } + + rc = pcmk__scan_ll(value, &value_ll, PCMK__PARSE_INT_DEFAULT); + if (rc != pcmk_rc_ok) { + return rc; + } + + *dest = value_ll; + return pcmk_rc_ok; +} + /*! * \internal * \brief Retrieve a \c time_t value from an XML attribute @@ -1323,12 +1360,13 @@ int pcmk__xe_get_time(const xmlNode *xml, const char *attr, time_t *dest) { long long value_ll = 0; + int rc = pcmk_rc_ok; CRM_CHECK((xml != NULL) && (attr != NULL) && (dest != NULL), return EINVAL); - errno = 0; - if (crm_element_value_ll(xml, attr, &value_ll) < 0) { - return (errno != 0)? errno : pcmk_rc_bad_nvpair; + rc = pcmk__xe_get_ll(xml, attr, &value_ll); + if (rc != pcmk_rc_ok) { + return rc; } /* We don't do any bounds checking, since there are no constants provided @@ -1375,9 +1413,9 @@ pcmk__xe_get_timeval(const xmlNode *xml, const char *sec_attr, } // Parse microseconds - errno = 0; - if (crm_element_value_ll(xml, usec_attr, &value_ll) < 0) { - return (errno != 0)? errno : pcmk_rc_bad_nvpair; + rc = pcmk__xe_get_ll(xml, usec_attr, &value_ll); + if (rc != pcmk_rc_ok) { + return rc; } result.tv_usec = (suseconds_t) value_ll; diff --git a/lib/fencing/st_client.c b/lib/fencing/st_client.c index 140faf55f89..e8c83edeb49 100644 --- a/lib/fencing/st_client.c +++ b/lib/fencing/st_client.c @@ -731,18 +731,22 @@ stonith_api_history(stonith_t * stonith, int call_options, const char *node, for (op = pcmk__xe_first_child(reply, NULL, NULL, NULL); op != NULL; op = pcmk__xe_next(op, NULL)) { - stonith_history_t *kvp; - long long completed_nsec = 0L; + stonith_history_t *kvp = + pcmk__assert_alloc(1, sizeof(stonith_history_t)); + long long completed_nsec = 0LL; - kvp = pcmk__assert_alloc(1, sizeof(stonith_history_t)); kvp->target = crm_element_value_copy(op, PCMK__XA_ST_TARGET); kvp->action = crm_element_value_copy(op, PCMK__XA_ST_DEVICE_ACTION); kvp->origin = crm_element_value_copy(op, PCMK__XA_ST_ORIGIN); kvp->delegate = crm_element_value_copy(op, PCMK__XA_ST_DELEGATE); kvp->client = crm_element_value_copy(op, PCMK__XA_ST_CLIENTNAME); pcmk__xe_get_time(op, PCMK__XA_ST_DATE, &kvp->completed); - crm_element_value_ll(op, PCMK__XA_ST_DATE_NSEC, &completed_nsec); - kvp->completed_nsec = completed_nsec; + + pcmk__xe_get_ll(op, PCMK__XA_ST_DATE_NSEC, &completed_nsec); + if ((completed_nsec >= LONG_MIN) && (completed_nsec <= LONG_MAX)) { + kvp->completed_nsec = (long) completed_nsec; + } + crm_element_value_int(op, PCMK__XA_ST_STATE, &kvp->state); kvp->exit_reason = crm_element_value_copy(op, PCMK_XA_EXIT_REASON); From 832596da2fd02ea81efaea531700c9835bd3f461 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 19 Mar 2025 01:31:17 -0700 Subject: [PATCH 076/186] API: libcrmcommon: Deprecate crm_element_value_ll() Signed-off-by: Reid Wahl --- include/crm/common/xml_element.h | 1 - include/crm/common/xml_element_compat.h | 4 ++ lib/common/xml_element.c | 51 ++++++++++--------------- 3 files changed, 24 insertions(+), 32 deletions(-) diff --git a/include/crm/common/xml_element.h b/include/crm/common/xml_element.h index c96984d4b1f..36c6bde99d9 100644 --- a/include/crm/common/xml_element.h +++ b/include/crm/common/xml_element.h @@ -35,7 +35,6 @@ const char *crm_xml_add_timeval(xmlNode *xml, const char *name_sec, const char *crm_element_value(const xmlNode *data, const char *name); int crm_element_value_int(const xmlNode *data, const char *name, int *dest); -int crm_element_value_ll(const xmlNode *data, const char *name, long long *dest); char *crm_element_value_copy(const xmlNode *data, const char *name); #ifdef __cplusplus diff --git a/include/crm/common/xml_element_compat.h b/include/crm/common/xml_element_compat.h index 9783eeab28f..cd8d095172a 100644 --- a/include/crm/common/xml_element_compat.h +++ b/include/crm/common/xml_element_compat.h @@ -51,6 +51,10 @@ int crm_element_value_epoch(const xmlNode *xml, const char *name, time_t *dest); //! \deprecated Do not use int crm_element_value_ms(const xmlNode *data, const char *name, guint *dest); +//! \deprecated Do not use +int crm_element_value_ll(const xmlNode *data, const char *name, + long long *dest); + #ifdef __cplusplus } #endif diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index db05942d293..6230367327d 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -1423,37 +1423,6 @@ pcmk__xe_get_timeval(const xmlNode *xml, const char *sec_attr, return pcmk_rc_ok; } -/*! - * \brief Retrieve the long long integer value of an XML attribute - * - * This is like \c crm_element_value() but getting the value as a long long int. - * - * \param[in] data XML node to check - * \param[in] name Attribute name to check - * \param[out] dest Where to store element value - * - * \return 0 on success, -1 otherwise - */ -int -crm_element_value_ll(const xmlNode *data, const char *name, long long *dest) -{ - const char *value = NULL; - - CRM_CHECK(dest != NULL, return -1); - value = crm_element_value(data, name); - if (value != NULL) { - int rc = pcmk__scan_ll(value, dest, PCMK__PARSE_INT_DEFAULT); - - if (rc == pcmk_rc_ok) { - return 0; - } - crm_warn("Using default for %s " - "because '%s' is not a valid integer: %s", - name, value, pcmk_rc_str(rc)); - } - return -1; -} - /*! * \internal * \brief Get a date/time object from an XML attribute value @@ -1648,6 +1617,26 @@ crm_copy_xml_element(const xmlNode *obj1, xmlNode *obj2, const char *element) return value; } +int +crm_element_value_ll(const xmlNode *data, const char *name, long long *dest) +{ + const char *value = NULL; + + CRM_CHECK(dest != NULL, return -1); + value = crm_element_value(data, name); + if (value != NULL) { + int rc = pcmk__scan_ll(value, dest, PCMK__PARSE_INT_DEFAULT); + + if (rc == pcmk_rc_ok) { + return 0; + } + crm_warn("Using default for %s " + "because '%s' is not a valid integer: %s", + name, value, pcmk_rc_str(rc)); + } + return -1; +} + int crm_element_value_timeval(const xmlNode *xml, const char *name_sec, const char *name_usec, struct timeval *dest) From 00f435c4a2935a5597253a6ee4b6bdf17bc28c0d Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 19 Mar 2025 01:38:36 -0700 Subject: [PATCH 077/186] Refactor: libcrmcomon: New pcmk__xe_get_int() To replace crm_element_value_int(). Note that, like the other recently added getter functions, this leaves dest unchanged on error. crm_element_value_int() set dest to -1. This should indirectly improve some of the callers, which were not error-checking crm_element_value_int()'s return code and simply assumed the value was valid and not -1. And IMO, it's better not to log errors or warnings within the getter function as crm_element_value_int() was doing. The caller has more context and can log errors or warnings if appropriate. Sometimes, a parse failure may be expected as a legitimate possibility. The one case I found questionable was the getting of PCMK__XA_ST_DELAY in create_remote_stonith_op(). If that value is set to -1, then all delays are disabled. crm_element_value_int() sets the value to -1 upon a parse error, and this function was not doing any error checking before now. So I wondered if we were relying on the parse error defaulting to -1. However, I don't think it's a problem. It looks like that attribute is only ever getting set by crm_xml_add_int() -- so even if it's set based on user input, it's set to a valid integer. The -1 value seems to be intended only for when it's set explicitly to -1. We simply haven't error-checked the parsing before now. See commit a0cbd527 and associated commits in PR #2027. Signed-off-by: Reid Wahl --- daemons/attrd/attrd_attributes.c | 4 +-- daemons/attrd/attrd_corosync.c | 9 +++--- daemons/attrd/attrd_elections.c | 4 +-- daemons/attrd/attrd_ipc.c | 2 +- daemons/attrd/attrd_messages.c | 4 +-- daemons/attrd/attrd_sync.c | 7 +++-- daemons/based/based_callbacks.c | 5 ++-- daemons/controld/controld_execd_state.c | 6 ++-- daemons/controld/controld_join_client.c | 4 +-- daemons/controld/controld_join_dc.c | 7 +++-- daemons/controld/controld_messages.c | 4 +-- daemons/controld/controld_te_callbacks.c | 4 +-- daemons/controld/controld_te_events.c | 6 ++-- daemons/controld/controld_throttle.c | 6 ++-- daemons/execd/execd_alerts.c | 4 +-- daemons/execd/execd_commands.c | 15 +++++----- daemons/execd/remoted_proxy.c | 4 +-- daemons/execd/remoted_tls.c | 2 +- daemons/fenced/fenced_cib.c | 8 +++--- daemons/fenced/fenced_commands.c | 16 +++++------ daemons/fenced/fenced_history.c | 9 +++--- daemons/fenced/fenced_remote.c | 22 +++++++------- include/crm/common/xml_element_internal.h | 1 + lib/cib/cib_file.c | 4 +-- lib/cib/cib_native.c | 6 ++-- lib/cib/cib_remote.c | 4 +-- lib/cib/cib_utils.c | 27 +++++++++-------- lib/cluster/election.c | 2 +- lib/common/ipc_controld.c | 2 +- lib/common/patchset.c | 35 ++++++++++++----------- lib/common/patchset_display.c | 6 ++-- lib/common/probes.c | 6 ++-- lib/common/xml_element.c | 33 +++++++++++++++++++++ lib/fencing/st_actions.c | 8 +++--- lib/fencing/st_client.c | 10 +++---- lib/lrmd/lrmd_client.c | 29 +++++++++---------- lib/lrmd/proxy_common.c | 2 +- lib/pacemaker/pcmk_graph_consumer.c | 2 +- lib/pacemaker/pcmk_injections.c | 4 +-- lib/pengine/failcounts.c | 2 +- lib/pengine/pe_actions.c | 4 +-- lib/pengine/unpack.c | 24 ++++++++-------- tools/crm_mon.c | 5 ++-- 43 files changed, 202 insertions(+), 166 deletions(-) diff --git a/daemons/attrd/attrd_attributes.c b/daemons/attrd/attrd_attributes.c index fdc238375e7..7a5916ee3c6 100644 --- a/daemons/attrd/attrd_attributes.c +++ b/daemons/attrd/attrd_attributes.c @@ -1,5 +1,5 @@ /* - * Copyright 2013-2024 the Pacemaker project contributors + * Copyright 2013-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -38,7 +38,7 @@ attrd_create_attribute(xmlNode *xml) /* Set type is meaningful only when writing to the CIB. Private * attributes are not written. */ - crm_element_value_int(xml, PCMK__XA_ATTR_IS_PRIVATE, &is_private); + pcmk__xe_get_int(xml, PCMK__XA_ATTR_IS_PRIVATE, &is_private); if (!is_private && !pcmk__str_any_of(set_type, PCMK_XE_INSTANCE_ATTRIBUTES, PCMK_XE_UTILIZATION, NULL)) { diff --git a/daemons/attrd/attrd_corosync.c b/daemons/attrd/attrd_corosync.c index e97e09cb865..50a0151bc9e 100644 --- a/daemons/attrd/attrd_corosync.c +++ b/daemons/attrd/attrd_corosync.c @@ -1,5 +1,5 @@ /* - * Copyright 2013-2024 the Pacemaker project contributors + * Copyright 2013-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -81,7 +81,7 @@ attrd_peer_message(pcmk__node_status_t *peer, xmlNode *xml) * response so the originating peer knows what they're a confirmation * for. */ - crm_element_value_int(xml, PCMK__XA_CALL_ID, &callid); + pcmk__xe_get_int(xml, PCMK__XA_CALL_ID, &callid); reply = attrd_confirmation(callid); /* And then send the confirmation back to the originating peer. This @@ -243,7 +243,7 @@ update_attr_on_host(attribute_t *a, const pcmk__node_status_t *peer, } // If value is for a Pacemaker Remote node, remember that - crm_element_value_int(xml, PCMK__XA_ATTR_IS_REMOTE, &is_remote); + pcmk__xe_get_int(xml, PCMK__XA_ATTR_IS_REMOTE, &is_remote); if (is_remote) { attrd_set_value_flags(v, attrd_value_remote); pcmk__assert(pcmk__cluster_lookup_remote_node(host) != NULL); @@ -299,8 +299,7 @@ update_attr_on_host(attribute_t *a, const pcmk__node_status_t *peer, } else { int is_force_write = 0; - crm_element_value_int(xml, PCMK__XA_ATTRD_IS_FORCE_WRITE, - &is_force_write); + pcmk__xe_get_int(xml, PCMK__XA_ATTRD_IS_FORCE_WRITE, &is_force_write); if (is_force_write == 1 && a->timeout_ms && a->timer) { /* Save forced writing and set change flag. */ diff --git a/daemons/attrd/attrd_elections.c b/daemons/attrd/attrd_elections.c index 281ec12c2fd..87b79dcf6b1 100644 --- a/daemons/attrd/attrd_elections.c +++ b/daemons/attrd/attrd_elections.c @@ -1,5 +1,5 @@ /* - * Copyright 2013-2024 the Pacemaker project contributors + * Copyright 2013-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -108,7 +108,7 @@ attrd_check_for_new_writer(const pcmk__node_status_t *peer, const xmlNode *xml) { int peer_state = 0; - crm_element_value_int(xml, PCMK__XA_ATTR_WRITER, &peer_state); + pcmk__xe_get_int(xml, PCMK__XA_ATTR_WRITER, &peer_state); if (peer_state == election_won) { if ((election_state(attrd_cluster) == election_won) && !pcmk__str_eq(peer->name, attrd_cluster->priv->node_name, diff --git a/daemons/attrd/attrd_ipc.c b/daemons/attrd/attrd_ipc.c index 07fe84399ad..9c1812d490d 100644 --- a/daemons/attrd/attrd_ipc.c +++ b/daemons/attrd/attrd_ipc.c @@ -151,7 +151,7 @@ attrd_client_peer_remove(pcmk__request_t *request) if (host == NULL) { int nodeid = 0; - crm_element_value_int(xml, PCMK__XA_ATTR_HOST_ID, &nodeid); + pcmk__xe_get_int(xml, PCMK__XA_ATTR_HOST_ID, &nodeid); if (nodeid > 0) { pcmk__node_status_t *node = NULL; char *host_alloc = NULL; diff --git a/daemons/attrd/attrd_messages.c b/daemons/attrd/attrd_messages.c index 44312ae8bc7..cb9a5ec9369 100644 --- a/daemons/attrd/attrd_messages.c +++ b/daemons/attrd/attrd_messages.c @@ -107,8 +107,8 @@ handle_confirm_request(pcmk__request_t *request) crm_debug("Received confirmation from %s", request->peer); - if (crm_element_value_int(request->xml, PCMK__XA_CALL_ID, - &callid) == -1) { + if (pcmk__xe_get_int(request->xml, PCMK__XA_CALL_ID, + &callid) != pcmk_rc_ok) { pcmk__set_result(&request->result, CRM_EX_PROTOCOL, PCMK_EXEC_INVALID, "Could not get callid from XML"); } else { diff --git a/daemons/attrd/attrd_sync.c b/daemons/attrd/attrd_sync.c index 23915a619d1..ecb6f505b67 100644 --- a/daemons/attrd/attrd_sync.c +++ b/daemons/attrd/attrd_sync.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. * @@ -240,7 +240,7 @@ attrd_ack_waitlist_clients(enum attrd_sync_point sync_point, const xmlNode *xml) return; } - if (crm_element_value_int(xml, PCMK__XA_CALL_ID, &callid) == -1) { + if (pcmk__xe_get_int(xml, PCMK__XA_CALL_ID, &callid) != pcmk_rc_ok) { crm_warn("Could not get callid from request XML"); return; } @@ -484,7 +484,8 @@ attrd_expect_confirmations(pcmk__request_t *request, attrd_confirmation_action_f expected_confirmations = pcmk__intkey_table((GDestroyNotify) free_action); } - if (crm_element_value_int(request->xml, PCMK__XA_CALL_ID, &callid) == -1) { + if (pcmk__xe_get_int(request->xml, PCMK__XA_CALL_ID, + &callid) != pcmk_rc_ok) { crm_err("Could not get callid from xml"); return; } diff --git a/daemons/based/based_callbacks.c b/daemons/based/based_callbacks.c index 2b5be57f7d9..f04d3ceb30d 100644 --- a/daemons/based/based_callbacks.c +++ b/daemons/based/based_callbacks.c @@ -171,7 +171,7 @@ do_local_notify(const xmlNode *notify_src, const char *client_id, CRM_CHECK((notify_src != NULL) && (client_id != NULL), return); - crm_element_value_int(notify_src, PCMK__XA_CIB_CALLID, &msg_id); + pcmk__xe_get_int(notify_src, PCMK__XA_CIB_CALLID, &msg_id); client_obj = pcmk__find_client_by_id(client_id); if (client_obj == NULL) { @@ -259,8 +259,7 @@ cib_common_callback_worker(uint32_t id, uint32_t flags, xmlNode * op_request, const char *type = crm_element_value(op_request, PCMK__XA_CIB_NOTIFY_TYPE); - crm_element_value_int(op_request, PCMK__XA_CIB_NOTIFY_ACTIVATE, - &on_off); + pcmk__xe_get_int(op_request, PCMK__XA_CIB_NOTIFY_ACTIVATE, &on_off); crm_debug("Setting %s callbacks %s for client %s", type, (on_off? "on" : "off"), pcmk__client_name(cib_client)); diff --git a/daemons/controld/controld_execd_state.c b/daemons/controld/controld_execd_state.c index 99aac814240..3e8736bc7d3 100644 --- a/daemons/controld/controld_execd_state.c +++ b/daemons/controld/controld_execd_state.c @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the Pacemaker project contributors + * Copyright 2012-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -571,7 +571,7 @@ crmd_remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg) CRM_OP_NODE_INFO, pcmk__str_none)) { int node_id = 0; - crm_element_value_int(request, PCMK_XA_ID, &node_id); + pcmk__xe_get_int(request, PCMK_XA_ID, &node_id); if ((node_id <= 0) && (crm_element_value(request, PCMK_XA_UNAME) == NULL)) { crm_xml_add(request, PCMK_XA_UNAME, lrm_state->node_name); @@ -592,7 +592,7 @@ crmd_remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg) crm_xml_add(op_reply, PCMK_XA_FUNCTION, __func__); crm_xml_add_int(op_reply, PCMK__XA_LINE, __LINE__); - crm_element_value_int(msg, PCMK__XA_LRMD_IPC_MSG_ID, &msg_id); + pcmk__xe_get_int(msg, PCMK__XA_LRMD_IPC_MSG_ID, &msg_id); remote_proxy_relay_response(proxy, op_reply, msg_id); pcmk__xml_free(op_reply); diff --git a/daemons/controld/controld_join_client.c b/daemons/controld/controld_join_client.c index da6cbd3bd8f..468250a2d4e 100644 --- a/daemons/controld/controld_join_client.c +++ b/daemons/controld/controld_join_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. * @@ -278,7 +278,7 @@ do_cl_join_finalize_respond(long long action, was_nack = FALSE; } - crm_element_value_int(input->msg, PCMK__XA_JOIN_ID, &join_id); + pcmk__xe_get_int(input->msg, PCMK__XA_JOIN_ID, &join_id); if (was_nack) { crm_err("Shutting down because cluster join with leader %s failed " diff --git a/daemons/controld/controld_join_dc.c b/daemons/controld/controld_join_dc.c index a91fbfa3a74..f3fdd2a89c4 100644 --- a/daemons/controld/controld_join_dc.c +++ b/daemons/controld/controld_join_dc.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. * @@ -464,7 +464,7 @@ do_dc_join_filter_offer(long long action, join_node = pcmk__get_node(0, join_from, NULL, pcmk__node_search_cluster_member); - crm_element_value_int(join_ack->msg, PCMK__XA_JOIN_ID, &join_id); + pcmk__xe_get_int(join_ack->msg, PCMK__XA_JOIN_ID, &join_id); if (join_id != current_join_id) { crm_debug("Ignoring join-%d request from %s because we are on join-%d", join_id, join_from, current_join_id); @@ -795,7 +795,8 @@ do_dc_join_ack(long long action, goto done; } - if (crm_element_value_int(join_ack->msg, PCMK__XA_JOIN_ID, &join_id) != 0) { + if (pcmk__xe_get_int(join_ack->msg, PCMK__XA_JOIN_ID, + &join_id) != pcmk_rc_ok) { crm_warn("Ignoring join confirmation from %s without valid join ID", join_from); goto done; diff --git a/daemons/controld/controld_messages.c b/daemons/controld/controld_messages.c index b12d6823e0c..2bb2014d26b 100644 --- a/daemons/controld/controld_messages.c +++ b/daemons/controld/controld_messages.c @@ -933,7 +933,7 @@ handle_node_info_request(const xmlNode *msg) * @TODO A Corosync-layer node ID is of type uint32_t. We should be able to * handle legitimate node IDs greater than INT_MAX, but currently we do not. */ - crm_element_value_int(msg, PCMK_XA_ID, &node_id); + pcmk__xe_get_int(msg, PCMK_XA_ID, &node_id); if (node_id < 0) { node_id = 0; } @@ -1175,7 +1175,7 @@ handle_request(xmlNode *stored_msg, enum crmd_fsa_cause cause) int id = 0; const char *name = NULL; - crm_element_value_int(stored_msg, PCMK_XA_ID, &id); + pcmk__xe_get_int(stored_msg, PCMK_XA_ID, &id); name = crm_element_value(stored_msg, PCMK_XA_UNAME); if(cause == C_IPC_MESSAGE) { diff --git a/daemons/controld/controld_te_callbacks.c b/daemons/controld/controld_te_callbacks.c index 7fb8905eaf4..8dd175e1582 100644 --- a/daemons/controld/controld_te_callbacks.c +++ b/daemons/controld/controld_te_callbacks.c @@ -365,7 +365,7 @@ te_update_diff(const char *event, xmlNode * msg) int p_del[] = { 0, 0, 0 }; CRM_CHECK(msg != NULL, return); - crm_element_value_int(msg, PCMK__XA_CIB_RC, &rc); + pcmk__xe_get_int(msg, PCMK__XA_CIB_RC, &rc); if (controld_globals.transition_graph == NULL) { crm_trace("No graph"); @@ -394,7 +394,7 @@ te_update_diff(const char *event, xmlNode * msg) p_del[0], p_del[1], p_del[2], p_add[0], p_add[1], p_add[2], fsa_state2string(controld_globals.fsa_state)); - crm_element_value_int(diff, PCMK_XA_FORMAT, &format); + pcmk__xe_get_int(diff, PCMK_XA_FORMAT, &format); if (format == 2) { crm_log_xml_trace(diff, "patch"); diff --git a/daemons/controld/controld_te_events.c b/daemons/controld/controld_te_events.c index c5b8c604ee7..c264ada86ab 100644 --- a/daemons/controld/controld_te_events.c +++ b/daemons/controld/controld_te_events.c @@ -450,14 +450,14 @@ process_graph_event(xmlNode *event, const char *event_node) return; } - crm_element_value_int(event, PCMK__XA_OP_STATUS, &status); + pcmk__xe_get_int(event, PCMK__XA_OP_STATUS, &status); if (status == PCMK_EXEC_PENDING) { return; } id = crm_element_value(event, PCMK__XA_OPERATION_KEY); - crm_element_value_int(event, PCMK__XA_RC_CODE, &rc); - crm_element_value_int(event, PCMK__XA_CALL_ID, &callid); + pcmk__xe_get_int(event, PCMK__XA_RC_CODE, &rc); + pcmk__xe_get_int(event, PCMK__XA_CALL_ID, &callid); rc = pcmk__effective_rc(rc); diff --git a/daemons/controld/controld_throttle.c b/daemons/controld/controld_throttle.c index d2ad9355e9e..49400925fd4 100644 --- a/daemons/controld/controld_throttle.c +++ b/daemons/controld/controld_throttle.c @@ -1,5 +1,5 @@ /* - * Copyright 2013-2024 the Pacemaker project contributors + * Copyright 2013-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -387,8 +387,8 @@ throttle_update(xmlNode *xml) struct throttle_record_s *r = NULL; const char *from = crm_element_value(xml, PCMK__XA_SRC); - crm_element_value_int(xml, PCMK__XA_CRM_LIMIT_MODE, &mode); - crm_element_value_int(xml, PCMK__XA_CRM_LIMIT_MAX, &max); + pcmk__xe_get_int(xml, PCMK__XA_CRM_LIMIT_MODE, &mode); + pcmk__xe_get_int(xml, PCMK__XA_CRM_LIMIT_MAX, &max); r = g_hash_table_lookup(throttle_records, from); diff --git a/daemons/execd/execd_alerts.c b/daemons/execd/execd_alerts.c index bdf75f0477a..cbe1651263a 100644 --- a/daemons/execd/execd_alerts.c +++ b/daemons/execd/execd_alerts.c @@ -127,7 +127,7 @@ process_lrmd_alert_exec(pcmk__client_t *client, uint32_t id, xmlNode *request) return pcmk_ok; } - crm_element_value_int(alert_xml, PCMK__XA_LRMD_TIMEOUT, &alert_timeout); + pcmk__xe_get_int(alert_xml, PCMK__XA_LRMD_TIMEOUT, &alert_timeout); crm_info("Executing alert %s for %s", alert_id, client->id); @@ -139,7 +139,7 @@ process_lrmd_alert_exec(pcmk__client_t *client, uint32_t id, xmlNode *request) cb_data->client_id = pcmk__str_copy(client->id); - crm_element_value_int(request, PCMK__XA_LRMD_CALLID, &(cb_data->call_id)); + pcmk__xe_get_int(request, PCMK__XA_LRMD_CALLID, &(cb_data->call_id)); action = services_alert_create(alert_id, alert_path, alert_timeout, params, alert_sequence_no, cb_data); diff --git a/daemons/execd/execd_commands.c b/daemons/execd/execd_commands.c index 7939fe79f91..690b381c24b 100644 --- a/daemons/execd/execd_commands.c +++ b/daemons/execd/execd_commands.c @@ -287,7 +287,7 @@ build_rsc_from_xml(xmlNode * msg) rsc = pcmk__assert_alloc(1, sizeof(lrmd_rsc_t)); - crm_element_value_int(msg, PCMK__XA_LRMD_CALLOPT, &rsc->call_opts); + pcmk__xe_get_int(msg, PCMK__XA_LRMD_CALLOPT, &rsc->call_opts); rsc->rsc_id = crm_element_value_copy(rsc_xml, PCMK__XA_LRMD_RSC_ID); rsc->class = crm_element_value_copy(rsc_xml, PCMK__XA_LRMD_CLASS); @@ -312,15 +312,14 @@ create_lrmd_cmd(xmlNode *msg, pcmk__client_t *client) cmd = pcmk__assert_alloc(1, sizeof(lrmd_cmd_t)); - crm_element_value_int(msg, PCMK__XA_LRMD_CALLOPT, &call_options); + pcmk__xe_get_int(msg, PCMK__XA_LRMD_CALLOPT, &call_options); cmd->call_opts = call_options; cmd->client_id = pcmk__str_copy(client->id); - crm_element_value_int(msg, PCMK__XA_LRMD_CALLID, &cmd->call_id); + pcmk__xe_get_int(msg, PCMK__XA_LRMD_CALLID, &cmd->call_id); pcmk__xe_get_guint(rsc_xml, PCMK__XA_LRMD_RSC_INTERVAL, &cmd->interval_ms); - crm_element_value_int(rsc_xml, PCMK__XA_LRMD_TIMEOUT, &cmd->timeout); - crm_element_value_int(rsc_xml, PCMK__XA_LRMD_RSC_START_DELAY, - &cmd->start_delay); + pcmk__xe_get_int(rsc_xml, PCMK__XA_LRMD_TIMEOUT, &cmd->timeout); + pcmk__xe_get_int(rsc_xml, PCMK__XA_LRMD_RSC_START_DELAY, &cmd->start_delay); cmd->timeout_orig = cmd->timeout; cmd->origin = crm_element_value_copy(rsc_xml, PCMK__XA_LRMD_ORIGIN); @@ -707,7 +706,7 @@ send_generic_notify(int rc, xmlNode * request) const char *rsc_id = crm_element_value(rsc_xml, PCMK__XA_LRMD_RSC_ID); const char *op = crm_element_value(request, PCMK__XA_LRMD_OP); - crm_element_value_int(request, PCMK__XA_LRMD_CALLID, &call_id); + pcmk__xe_get_int(request, PCMK__XA_LRMD_CALLID, &call_id); notify = pcmk__xe_create(NULL, PCMK__XE_LRMD_NOTIFY); crm_xml_add(notify, PCMK__XA_LRMD_ORIGIN, __func__); @@ -1880,7 +1879,7 @@ process_lrmd_message(pcmk__client_t *client, uint32_t id, xmlNode *request) bool allowed = pcmk_is_set(client->flags, pcmk__client_privileged); crm_trace("Processing %s operation from %s", op, client->id); - crm_element_value_int(request, PCMK__XA_LRMD_CALLID, &call_id); + pcmk__xe_get_int(request, PCMK__XA_LRMD_CALLID, &call_id); if (pcmk__str_eq(op, CRM_OP_IPC_FWD, pcmk__str_none)) { #ifdef PCMK__COMPILE_REMOTE diff --git a/daemons/execd/remoted_proxy.c b/daemons/execd/remoted_proxy.c index 9083a9d9cc1..8f27b5a59e5 100644 --- a/daemons/execd/remoted_proxy.c +++ b/daemons/execd/remoted_proxy.c @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the Pacemaker project contributors + * Copyright 2012-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -204,7 +204,7 @@ ipc_proxy_forward_client(pcmk__client_t *ipc_proxy, xmlNode *xml) } else if (pcmk__str_eq(msg_type, LRMD_IPC_OP_RESPONSE, pcmk__str_casei)) { int msg_id = 0; - crm_element_value_int(xml, PCMK__XA_LRMD_IPC_MSG_ID, &msg_id); + pcmk__xe_get_int(xml, PCMK__XA_LRMD_IPC_MSG_ID, &msg_id); crm_trace("Sending response to %d - %s", ipc_client->request_id, ipc_client->id); rc = pcmk__ipc_send_xml(ipc_client, msg_id, msg, FALSE); diff --git a/daemons/execd/remoted_tls.c b/daemons/execd/remoted_tls.c index eede13edaec..625392887e1 100644 --- a/daemons/execd/remoted_tls.c +++ b/daemons/execd/remoted_tls.c @@ -129,7 +129,7 @@ lrmd_remote_client_msg(gpointer data) return 0; } - crm_element_value_int(request, PCMK__XA_LRMD_REMOTE_MSG_ID, &id); + pcmk__xe_get_int(request, PCMK__XA_LRMD_REMOTE_MSG_ID, &id); crm_trace("Processing remote client request %d", id); if (!client->name) { client->name = crm_element_value_copy(request, diff --git a/daemons/fenced/fenced_cib.c b/daemons/fenced/fenced_cib.c index c4cd9a41d0c..8aa2fcf64f5 100644 --- a/daemons/fenced/fenced_cib.c +++ b/daemons/fenced/fenced_cib.c @@ -108,7 +108,7 @@ remove_topology_level(xmlNode *match) CRM_CHECK(match != NULL, return); key = stonith_level_key(match, fenced_target_by_unknown); - crm_element_value_int(match, PCMK_XA_INDEX, &index); + pcmk__xe_get_int(match, PCMK_XA_INDEX, &index); topology_remove_helper(key, index); free(key); } @@ -242,7 +242,7 @@ update_cib_stonith_devices(const char *event, xmlNode * msg) char *reason = NULL; CRM_CHECK(patchset != NULL, return); - crm_element_value_int(patchset, PCMK_XA_FORMAT, &format); + pcmk__xe_get_int(patchset, PCMK_XA_FORMAT, &format); if (format != 2) { crm_warn("Unknown patch format: %d", format); @@ -384,7 +384,7 @@ update_fencing_topology(const char *event, xmlNode *msg) CRM_CHECK(patchset != NULL, return); - crm_element_value_int(patchset, PCMK_XA_FORMAT, &format); + pcmk__xe_get_int(patchset, PCMK_XA_FORMAT, &format); if (format != 2) { crm_warn("Unknown patch format: %d", format); return; @@ -485,7 +485,7 @@ update_cib_cache_cb(const char *event, xmlNode * msg) xmlNode *wrapper = NULL; xmlNode *patchset = NULL; - crm_element_value_int(msg, PCMK__XA_CIB_RC, &rc); + pcmk__xe_get_int(msg, PCMK__XA_CIB_RC, &rc); if (rc != pcmk_ok) { return; } diff --git a/daemons/fenced/fenced_commands.c b/daemons/fenced/fenced_commands.c index 51666992bff..8ffccf3d757 100644 --- a/daemons/fenced/fenced_commands.c +++ b/daemons/fenced/fenced_commands.c @@ -367,9 +367,9 @@ create_async_command(xmlNode *msg) return NULL; } - crm_element_value_int(msg, PCMK__XA_ST_CALLID, &(cmd->id)); - crm_element_value_int(msg, PCMK__XA_ST_DELAY, &(cmd->start_delay)); - crm_element_value_int(msg, PCMK__XA_ST_TIMEOUT, &(cmd->default_timeout)); + pcmk__xe_get_int(msg, PCMK__XA_ST_CALLID, &(cmd->id)); + pcmk__xe_get_int(msg, PCMK__XA_ST_DELAY, &(cmd->start_delay)); + pcmk__xe_get_int(msg, PCMK__XA_ST_TIMEOUT, &(cmd->default_timeout)); cmd->timeout = cmd->default_timeout; rc = pcmk__xe_get_flags(msg, PCMK__XA_ST_CALLOPT, &(cmd->options), @@ -1633,7 +1633,7 @@ unpack_level_request(xmlNode *xml, enum fenced_target_by *mode, char **target, } else { local_mode = unpack_level_kind(xml); local_target = stonith_level_key(xml, local_mode); - crm_element_value_int(xml, PCMK_XA_INDEX, &local_id); + pcmk__xe_get_int(xml, PCMK_XA_INDEX, &local_id); if (desc != NULL) { *desc = crm_strdup_printf("%s[%d]", local_target, local_id); } @@ -3161,7 +3161,7 @@ handle_update_timeout_request(pcmk__request_t *request) PCMK__XA_ST_CLIENTID); int op_timeout = 0; - crm_element_value_int(request->xml, PCMK__XA_ST_TIMEOUT, &op_timeout); + pcmk__xe_get_int(request->xml, PCMK__XA_ST_TIMEOUT, &op_timeout); do_stonith_async_timeout_update(client_id, call_id, op_timeout); pcmk__set_result(&request->result, CRM_EX_OK, PCMK_EXEC_DONE, NULL); return NULL; @@ -3213,7 +3213,7 @@ handle_query_request(pcmk__request_t *request) query->action = pcmk__str_copy(action); query->call_options = request->call_options; - crm_element_value_int(request->xml, PCMK__XA_ST_TIMEOUT, &timeout); + pcmk__xe_get_int(request->xml, PCMK__XA_ST_TIMEOUT, &timeout); get_capable_devices(target, action, timeout, pcmk_is_set(query->call_options, st_opt_allow_self_fencing), @@ -3312,7 +3312,7 @@ handle_fence_request(pcmk__request_t *request) crm_notice("Client %s wants to fence (%s) %s using %s", pcmk__request_origin(request), action, target, (device? device : "any device")); - crm_element_value_int(dev, PCMK__XA_ST_TOLERANCE, &tolerance); + pcmk__xe_get_int(dev, PCMK__XA_ST_TOLERANCE, &tolerance); if (stonith_check_fence_tolerance(tolerance, target, action)) { pcmk__set_result(&request->result, CRM_EX_OK, PCMK_EXEC_DONE, NULL); @@ -3487,7 +3487,7 @@ handle_cache_request(pcmk__request_t *request) int node_id = 0; const char *name = NULL; - crm_element_value_int(request->xml, PCMK_XA_ID, &node_id); + pcmk__xe_get_int(request->xml, PCMK_XA_ID, &node_id); name = crm_element_value(request->xml, PCMK_XA_UNAME); pcmk__cluster_forget_cluster_node(node_id, name); pcmk__set_result(&request->result, CRM_EX_OK, PCMK_EXEC_DONE, NULL); diff --git a/daemons/fenced/fenced_history.c b/daemons/fenced/fenced_history.c index eaeca4dc11f..f1bd6637be1 100644 --- a/daemons/fenced/fenced_history.c +++ b/daemons/fenced/fenced_history.c @@ -270,16 +270,17 @@ stonith_xml_history_to_list(const xmlNode *history) PCMK__XA_ST_CLIENTNAME); pcmk__xe_get_time(xml_op, PCMK__XA_ST_DATE, &op->completed); pcmk__xe_get_ll(xml_op, PCMK__XA_ST_DATE_NSEC, &op->completed_nsec); - crm_element_value_int(xml_op, PCMK__XA_ST_STATE, &state); + pcmk__xe_get_int(xml_op, PCMK__XA_ST_STATE, &state); op->state = (enum op_state) state; /* @COMPAT We can't use stonith__xe_get_result() here because * fencers <2.1.3 didn't include results, leading it to assume an error * status. Instead, set an unknown status in that case. */ - if ((crm_element_value_int(xml_op, PCMK__XA_RC_CODE, &exit_status) < 0) - || (crm_element_value_int(xml_op, PCMK__XA_OP_STATUS, - &execution_status) < 0)) { + if ((pcmk__xe_get_int(xml_op, PCMK__XA_RC_CODE, + &exit_status) != pcmk_rc_ok) + || (pcmk__xe_get_int(xml_op, PCMK__XA_OP_STATUS, + &execution_status) != pcmk_rc_ok)) { exit_status = CRM_EX_INDETERMINATE; execution_status = PCMK_EXEC_UNKNOWN; } diff --git a/daemons/fenced/fenced_remote.c b/daemons/fenced/fenced_remote.c index 42760b8d27d..d34b45e5859 100644 --- a/daemons/fenced/fenced_remote.c +++ b/daemons/fenced/fenced_remote.c @@ -1179,9 +1179,10 @@ create_remote_stonith_op(const char *client, xmlNode *request, gboolean peer) op = pcmk__assert_alloc(1, sizeof(remote_fencing_op_t)); - crm_element_value_int(request, PCMK__XA_ST_TIMEOUT, &(op->base_timeout)); + pcmk__xe_get_int(request, PCMK__XA_ST_TIMEOUT, &(op->base_timeout)); + // Value -1 means disable any static/random fencing delays - crm_element_value_int(request, PCMK__XA_ST_DELAY, &(op->client_delay)); + pcmk__xe_get_int(request, PCMK__XA_ST_DELAY, &(op->client_delay)); if (peer && dev) { op->id = crm_element_value_copy(dev, PCMK__XA_ST_REMOTE_OP); @@ -1237,7 +1238,7 @@ create_remote_stonith_op(const char *client, xmlNode *request, gboolean peer) op->id, pcmk_rc_str(rc)); } - crm_element_value_int(request, PCMK__XA_ST_CALLID, &(op->client_callid)); + pcmk__xe_get_int(request, PCMK__XA_ST_CALLID, &(op->client_callid)); crm_trace("%s new fencing op %s ('%s' targeting %s for client %s, " "base timeout %ds, %u %s expected)", @@ -2172,23 +2173,22 @@ parse_action_specific(const xmlNode *xml, const char *peer, const char *device, enum st_remap_phase phase, device_properties_t *props) { props->custom_action_timeout[phase] = 0; - crm_element_value_int(xml, PCMK__XA_ST_ACTION_TIMEOUT, - &props->custom_action_timeout[phase]); + pcmk__xe_get_int(xml, PCMK__XA_ST_ACTION_TIMEOUT, + &props->custom_action_timeout[phase]); if (props->custom_action_timeout[phase]) { crm_trace("Peer %s with device %s returned %s action timeout %ds", peer, device, action, props->custom_action_timeout[phase]); } props->delay_max[phase] = 0; - crm_element_value_int(xml, PCMK__XA_ST_DELAY_MAX, &props->delay_max[phase]); + pcmk__xe_get_int(xml, PCMK__XA_ST_DELAY_MAX, &props->delay_max[phase]); if (props->delay_max[phase]) { crm_trace("Peer %s with device %s returned maximum of random delay %ds for %s", peer, device, props->delay_max[phase], action); } props->delay_base[phase] = 0; - crm_element_value_int(xml, PCMK__XA_ST_DELAY_BASE, - &props->delay_base[phase]); + pcmk__xe_get_int(xml, PCMK__XA_ST_DELAY_BASE, &props->delay_base[phase]); if (props->delay_base[phase]) { crm_trace("Peer %s with device %s returned base delay %ds for %s", peer, device, props->delay_base[phase], action); @@ -2198,7 +2198,7 @@ parse_action_specific(const xmlNode *xml, const char *peer, const char *device, if (pcmk__str_eq(action, PCMK_ACTION_ON, pcmk__str_none)) { int required = 0; - crm_element_value_int(xml, PCMK__XA_ST_REQUIRED, &required); + pcmk__xe_get_int(xml, PCMK__XA_ST_REQUIRED, &required); if (required) { crm_trace("Peer %s requires device %s to execute for action %s", peer, device, action); @@ -2239,7 +2239,7 @@ add_device_properties(const xmlNode *xml, remote_fencing_op_t *op, g_hash_table_insert(peer->devices, pcmk__str_copy(device), props); /* Peers with verified (monitored) access will be preferred */ - crm_element_value_int(xml, PCMK__XA_ST_MONITOR_VERIFIED, &verified); + pcmk__xe_get_int(xml, PCMK__XA_ST_MONITOR_VERIFIED, &verified); if (verified) { crm_trace("Peer %s has confirmed a verified device %s", peer->host, device); @@ -2355,7 +2355,7 @@ process_remote_stonith_query(xmlNode *msg) "//*[@" PCMK__XA_ST_AVAILABLE_DEVICES "]", LOG_ERR); CRM_CHECK(dev != NULL, return -EPROTO); - crm_element_value_int(dev, PCMK__XA_ST_AVAILABLE_DEVICES, &ndevices); + pcmk__xe_get_int(dev, PCMK__XA_ST_AVAILABLE_DEVICES, &ndevices); op = g_hash_table_lookup(stonith_remote_op_list, id); if (op == NULL) { diff --git a/include/crm/common/xml_element_internal.h b/include/crm/common/xml_element_internal.h index 022b4ee26af..c97c473ec07 100644 --- a/include/crm/common/xml_element_internal.h +++ b/include/crm/common/xml_element_internal.h @@ -158,6 +158,7 @@ int pcmk__xe_get_datetime(const xmlNode *xml, const char *attr, crm_time_t **t); int pcmk__xe_get_flags(const xmlNode *xml, const char *name, uint32_t *dest, uint32_t default_value); int pcmk__xe_get_guint(const xmlNode *xml, const char *attr, guint *dest); +int pcmk__xe_get_int(const xmlNode *xml, const char *attr, int *dest); int pcmk__xe_get_ll(const xmlNode *xml, const char *attr, long long *dest); int pcmk__xe_get_time(const xmlNode *xml, const char *attr, time_t *dest); int pcmk__xe_get_timeval(const xmlNode *xml, const char *sec_attr, diff --git a/lib/cib/cib_file.c b/lib/cib/cib_file.c index 9cfa14c7b17..f254f2c8c98 100644 --- a/lib/cib/cib_file.c +++ b/lib/cib/cib_file.c @@ -1,6 +1,6 @@ /* * Original copyright 2004 International Business Machines - * Later changes copyright 2008-2024 the Pacemaker project contributors + * Later changes copyright 2008-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -235,7 +235,7 @@ cib_file_process_request(cib_t *cib, xmlNode *request, xmlNode **output) cib__get_operation(op, &operation); op_function = file_get_op_function(operation); - crm_element_value_int(request, PCMK__XA_CIB_CALLID, &call_id); + pcmk__xe_get_int(request, PCMK__XA_CIB_CALLID, &call_id); rc = pcmk__xe_get_flags(request, PCMK__XA_CIB_CALLOPT, &call_options, cib_none); if (rc != pcmk_rc_ok) { diff --git a/lib/cib/cib_native.c b/lib/cib/cib_native.c index 274c43b9d1a..4f2a7a74227 100644 --- a/lib/cib/cib_native.c +++ b/lib/cib/cib_native.c @@ -1,6 +1,6 @@ /* * Copyright 2004 International Business Machines - * Later changes copyright 2004-2024 the Pacemaker project contributors + * Later changes copyright 2004-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -97,14 +97,14 @@ cib_native_perform_op_delegate(cib_t *cib, const char *op, const char *host, } rc = pcmk_ok; - crm_element_value_int(op_reply, PCMK__XA_CIB_CALLID, &reply_id); + pcmk__xe_get_int(op_reply, PCMK__XA_CIB_CALLID, &reply_id); if (reply_id == cib->call_id) { xmlNode *wrapper = pcmk__xe_first_child(op_reply, PCMK__XE_CIB_CALLDATA, NULL, NULL); xmlNode *tmp = pcmk__xe_first_child(wrapper, NULL, NULL, NULL); crm_trace("Synchronous reply %d received", reply_id); - if (crm_element_value_int(op_reply, PCMK__XA_CIB_RC, &rc) != 0) { + if (pcmk__xe_get_int(op_reply, PCMK__XA_CIB_RC, &rc) != pcmk_rc_ok) { rc = -EPROTO; } diff --git a/lib/cib/cib_remote.c b/lib/cib/cib_remote.c index 1fb38dbb0bd..17cd055a1aa 100644 --- a/lib/cib/cib_remote.c +++ b/lib/cib/cib_remote.c @@ -125,7 +125,7 @@ cib_remote_perform_op(cib_t *cib, const char *op, const char *host, break; } - crm_element_value_int(op_reply, PCMK__XA_CIB_CALLID, &reply_id); + pcmk__xe_get_int(op_reply, PCMK__XA_CIB_CALLID, &reply_id); if (reply_id == msg_id) { break; @@ -160,7 +160,7 @@ cib_remote_perform_op(cib_t *cib, const char *op, const char *host, crm_trace("Synchronous reply received"); /* Start processing the reply... */ - if (crm_element_value_int(op_reply, PCMK__XA_CIB_RC, &rc) != 0) { + if (pcmk__xe_get_int(op_reply, PCMK__XA_CIB_RC, &rc) != pcmk_rc_ok) { rc = -EPROTO; } diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c index e591550d0f6..40b807bfe43 100644 --- a/lib/cib/cib_utils.c +++ b/lib/cib/cib_utils.c @@ -32,12 +32,11 @@ cib_version_details(xmlNode * cib, int *admin_epoch, int *epoch, int *updates) if (cib == NULL) { return FALSE; - - } else { - crm_element_value_int(cib, PCMK_XA_EPOCH, epoch); - crm_element_value_int(cib, PCMK_XA_NUM_UPDATES, updates); - crm_element_value_int(cib, PCMK_XA_ADMIN_EPOCH, admin_epoch); } + + pcmk__xe_get_int(cib, PCMK_XA_EPOCH, epoch); + pcmk__xe_get_int(cib, PCMK_XA_NUM_UPDATES, updates); + pcmk__xe_get_int(cib, PCMK_XA_ADMIN_EPOCH, admin_epoch); return TRUE; } @@ -84,7 +83,7 @@ cib__get_notify_patchset(const xmlNode *msg, const xmlNode **patchset) return ENOMSG; } - if ((crm_element_value_int(msg, PCMK__XA_CIB_RC, &rc) != 0) + if ((pcmk__xe_get_int(msg, PCMK__XA_CIB_RC, &rc) != pcmk_rc_ok) || (rc != pcmk_ok)) { crm_warn("Ignore failed CIB update: %s " QB_XS " rc=%d", @@ -386,8 +385,8 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, int old = 0; int new = 0; - crm_element_value_int(scratch, PCMK_XA_ADMIN_EPOCH, &new); - crm_element_value_int(patchset_cib, PCMK_XA_ADMIN_EPOCH, &old); + pcmk__xe_get_int(scratch, PCMK_XA_ADMIN_EPOCH, &new); + pcmk__xe_get_int(patchset_cib, PCMK_XA_ADMIN_EPOCH, &old); if (old > new) { crm_err("%s went backwards: %d -> %d (Opts: %#x)", @@ -397,8 +396,8 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, rc = -pcmk_err_old_data; } else if (old == new) { - crm_element_value_int(scratch, PCMK_XA_EPOCH, &new); - crm_element_value_int(patchset_cib, PCMK_XA_EPOCH, &old); + pcmk__xe_get_int(scratch, PCMK_XA_EPOCH, &new); + pcmk__xe_get_int(patchset_cib, PCMK_XA_EPOCH, &old); if (old > new) { crm_err("%s went backwards: %d -> %d (Opts: %#x)", PCMK_XA_EPOCH, old, new, call_options); @@ -445,7 +444,7 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, int format = 1; xmlNode *cib_copy = pcmk__xml_copy(NULL, patchset_cib); - crm_element_value_int(local_diff, PCMK_XA_FORMAT, &format); + pcmk__xe_get_int(local_diff, PCMK_XA_FORMAT, &format); test_rc = xml_apply_patchset(cib_copy, local_diff, manage_counters); @@ -672,8 +671,8 @@ cib_native_callback(cib_t * cib, xmlNode * msg, int call_id, int rc) if (msg != NULL) { xmlNode *wrapper = NULL; - crm_element_value_int(msg, PCMK__XA_CIB_RC, &rc); - crm_element_value_int(msg, PCMK__XA_CIB_CALLID, &call_id); + pcmk__xe_get_int(msg, PCMK__XA_CIB_RC, &rc); + pcmk__xe_get_int(msg, PCMK__XA_CIB_CALLID, &call_id); wrapper = pcmk__xe_first_child(msg, PCMK__XE_CIB_CALLDATA, NULL, NULL); output = pcmk__xe_first_child(wrapper, NULL, NULL, NULL); } @@ -820,7 +819,7 @@ cib_apply_patch_event(xmlNode *event, xmlNode *input, xmlNode **output, pcmk__assert((event != NULL) && (input != NULL) && (output != NULL)); - crm_element_value_int(event, PCMK__XA_CIB_RC, &rc); + pcmk__xe_get_int(event, PCMK__XA_CIB_RC, &rc); wrapper = pcmk__xe_first_child(event, PCMK__XE_CIB_UPDATE_RESULT, NULL, NULL); diff = pcmk__xe_first_child(wrapper, NULL, NULL, NULL); diff --git a/lib/cluster/election.c b/lib/cluster/election.c index 8ab48ca049d..18fe2072091 100644 --- a/lib/cluster/election.c +++ b/lib/cluster/election.c @@ -433,7 +433,7 @@ parse_election_message(const xmlNode *message, struct vote *vote) vote->version = crm_element_value(message, PCMK_XA_VERSION); vote->election_owner = crm_element_value(message, PCMK__XA_ELECTION_OWNER); - crm_element_value_int(message, PCMK__XA_ELECTION_ID, &(vote->election_id)); + pcmk__xe_get_int(message, PCMK__XA_ELECTION_ID, &(vote->election_id)); if ((vote->op == NULL) || (vote->from == NULL) || (vote->version == NULL) || (vote->election_owner == NULL) || (vote->election_id < 0)) { diff --git a/lib/common/ipc_controld.c b/lib/common/ipc_controld.c index 7976029c962..fef1ec96a17 100644 --- a/lib/common/ipc_controld.c +++ b/lib/common/ipc_controld.c @@ -139,7 +139,7 @@ set_node_info_data(pcmk_controld_api_reply_t *data, xmlNode *msg_data) * @TODO: Improve handling after pcmk__node_status_t is refactored to handle * layer-specific data better. */ - crm_element_value_int(msg_data, PCMK_XA_ID, &(data->data.node_info.id)); + pcmk__xe_get_int(msg_data, PCMK_XA_ID, &(data->data.node_info.id)); data->data.node_info.uuid = crm_element_value(msg_data, PCMK_XA_ID); data->data.node_info.uname = crm_element_value(msg_data, PCMK_XA_UNAME); diff --git a/lib/common/patchset.c b/lib/common/patchset.c index 4139f2df505..3d750decc87 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -274,11 +274,11 @@ xml_create_patchset(int format, xmlNode *source, xmlNode *target, if (*config_changed) { crm_xml_add(target, PCMK_XA_NUM_UPDATES, "0"); - crm_element_value_int(target, PCMK_XA_EPOCH, &counter); + pcmk__xe_get_int(target, PCMK_XA_EPOCH, &counter); crm_xml_add_int(target, PCMK_XA_EPOCH, counter + 1); } else { - crm_element_value_int(target, PCMK_XA_NUM_UPDATES, &counter); + pcmk__xe_get_int(target, PCMK_XA_NUM_UPDATES, &counter); crm_xml_add_int(target, PCMK_XA_NUM_UPDATES, counter + 1); } } @@ -340,7 +340,7 @@ pcmk__xml_patchset_versions(const xmlNode *patchset, int source[3], CRM_CHECK((patchset != NULL) && (source != NULL) && (target != NULL), return EINVAL); - crm_element_value_int(patchset, PCMK_XA_FORMAT, &format); + pcmk__xe_get_int(patchset, PCMK_XA_FORMAT, &format); if (format != 2) { crm_err("Unknown patch format: %d", format); return EINVAL; @@ -355,12 +355,14 @@ pcmk__xml_patchset_versions(const xmlNode *patchset, int source[3], } for (int i = 0; i < PCMK__NELEM(vfields); i++) { - if (crm_element_value_int(source_xml, vfields[i], &(source[i])) != 0) { + if (pcmk__xe_get_int(source_xml, vfields[i], + &(source[i])) != pcmk_rc_ok) { return EINVAL; } crm_trace("Got %d for source[%s]", source[i], vfields[i]); - if (crm_element_value_int(target_xml, vfields[i], &(target[i])) != 0) { + if (pcmk__xe_get_int(target_xml, vfields[i], &(target[i])) + != pcmk_rc_ok) { return EINVAL; } crm_trace("Got %d for target[%s]", target[i], vfields[i]); @@ -393,7 +395,8 @@ check_patchset_versions(const xmlNode *cib_root, const xmlNode *patchset) * Preserve behavior for xml_apply_patchset(). Use new behavior in * libpacemaker replacement. */ - if (crm_element_value_int(cib_root, vfields[i], &(current[i])) == 0) { + if (pcmk__xe_get_int(cib_root, vfields[i], + &(current[i])) == pcmk_rc_ok) { crm_trace("Got %d for current[%s]%s", current[i], vfields[i], ((current[i] < 0)? ", using 0" : "")); @@ -594,8 +597,8 @@ sort_change_obj_by_position(gconstpointer a, gconstpointer b) int position_a = -1; int position_b = -1; - crm_element_value_int(change_obj_a->change, PCMK_XE_POSITION, &position_a); - crm_element_value_int(change_obj_b->change, PCMK_XE_POSITION, &position_b); + pcmk__xe_get_int(change_obj_a->change, PCMK_XE_POSITION, &position_a); + pcmk__xe_get_int(change_obj_b->change, PCMK_XE_POSITION, &position_b); if (position_a < position_b) { return -1; @@ -641,7 +644,7 @@ apply_v2_patchset(xmlNode *xml, const xmlNode *patchset) * PCMK_XE_POSITION */ if (strcmp(op, PCMK_VALUE_DELETE) == 0) { - crm_element_value_int(change, PCMK_XE_POSITION, &position); + pcmk__xe_get_int(change, PCMK_XE_POSITION, &position); } match = search_v2_xpath(xml, xpath, position); crm_trace("Performing %s on %s with %p", op, xpath, match); @@ -726,7 +729,7 @@ apply_v2_patchset(xmlNode *xml, const xmlNode *patchset) xmlNode *match_child = NULL; match_child = match->children; - crm_element_value_int(change, PCMK_XE_POSITION, &position); + pcmk__xe_get_int(change, PCMK_XE_POSITION, &position); while ((match_child != NULL) && (position != pcmk__xml_position(match_child, pcmk__xf_skip))) { @@ -747,7 +750,7 @@ apply_v2_patchset(xmlNode *xml, const xmlNode *patchset) } else if (strcmp(op, PCMK_VALUE_MOVE) == 0) { int position = 0; - crm_element_value_int(change, PCMK_XE_POSITION, &position); + pcmk__xe_get_int(change, PCMK_XE_POSITION, &position); if (position != pcmk__xml_position(match, pcmk__xf_skip)) { xmlNode *match_child = NULL; int p = position; @@ -827,7 +830,7 @@ xml_apply_patchset(xmlNode *xml, const xmlNode *patchset, bool check_version) } if (rc == pcmk_ok) { - crm_element_value_int(patchset, PCMK_XA_FORMAT, &format); + pcmk__xe_get_int(patchset, PCMK_XA_FORMAT, &format); if (format != 2) { crm_err("Unknown patch format: %d", format); @@ -888,7 +891,7 @@ pcmk__cib_element_in_patchset(const xmlNode *patchset, const char *element) pcmk__assert(patchset != NULL); - crm_element_value_int(patchset, PCMK_XA_FORMAT, &format); + pcmk__xe_get_int(patchset, PCMK_XA_FORMAT, &format); if (format != 2) { crm_warn("Unknown patch format: %d", format); return false; @@ -949,7 +952,7 @@ xml_patch_versions(const xmlNode *patchset, int add[3], int del[3]) NULL); int format = 1; - crm_element_value_int(patchset, PCMK_XA_FORMAT, &format); + pcmk__xe_get_int(patchset, PCMK_XA_FORMAT, &format); if (format != 2) { crm_err("Unknown patch format: %d", format); return true; @@ -957,14 +960,14 @@ xml_patch_versions(const xmlNode *patchset, int add[3], int del[3]) if (source != NULL) { for (int i = 0; i < PCMK__NELEM(vfields); i++) { - crm_element_value_int(source, vfields[i], &(del[i])); + pcmk__xe_get_int(source, vfields[i], &(del[i])); crm_trace("Got %d for del[%s]", del[i], vfields[i]); } } if (target != NULL) { for (int i = 0; i < PCMK__NELEM(vfields); i++) { - crm_element_value_int(target, vfields[i], &(add[i])); + pcmk__xe_get_int(target, vfields[i], &(add[i])); crm_trace("Got %d for add[%s]", add[i], vfields[i]); } } diff --git a/lib/common/patchset_display.c b/lib/common/patchset_display.c index f3dabb43ddc..1919077d245 100644 --- a/lib/common/patchset_display.c +++ b/lib/common/patchset_display.c @@ -166,7 +166,7 @@ xml_show_patchset(pcmk__output_t *out, const xmlNode *patchset) } else if (strcmp(op, PCMK_VALUE_DELETE) == 0) { int position = -1; - crm_element_value_int(change, PCMK_XE_POSITION, &position); + pcmk__xe_get_int(change, PCMK_XE_POSITION, &position); if (position >= 0) { temp_rc = out->info(out, "-- %s (%d)", xpath, position); } else { @@ -207,7 +207,7 @@ xml_patchset_default(pcmk__output_t *out, va_list args) return pcmk_rc_no_output; } - crm_element_value_int(patchset, PCMK_XA_FORMAT, &format); + pcmk__xe_get_int(patchset, PCMK_XA_FORMAT, &format); if (format != 2) { crm_err("Unknown patch format: %d", format); return pcmk_rc_bad_xml_patch; @@ -262,7 +262,7 @@ xml_patchset_log(pcmk__output_t *out, va_list args) return pcmk_rc_no_output; } - crm_element_value_int(patchset, PCMK_XA_FORMAT, &format); + pcmk__xe_get_int(patchset, PCMK_XA_FORMAT, &format); if (format != 2) { crm_err("Unknown patch format: %d", format); return pcmk_rc_bad_xml_patch; diff --git a/lib/common/probes.c b/lib/common/probes.c index 776b911e02d..65298a91786 100644 --- a/lib/common/probes.c +++ b/lib/common/probes.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. * @@ -76,8 +76,8 @@ pcmk_xe_mask_probe_failure(const xmlNode *xml) return false; } - crm_element_value_int(xml, PCMK__XA_OP_STATUS, &exec_status); - crm_element_value_int(xml, PCMK__XA_RC_CODE, &exit_status); + pcmk__xe_get_int(xml, PCMK__XA_OP_STATUS, &exec_status); + pcmk__xe_get_int(xml, PCMK__XA_RC_CODE, &exit_status); return (exit_status == PCMK_OCF_NOT_INSTALLED) || (exit_status == PCMK_OCF_INVALID_PARAM) diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index 6230367327d..b53de64611f 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -1308,6 +1308,39 @@ pcmk__xe_get_guint(const xmlNode *xml, const char *attr, guint *dest) return pcmk_rc_ok; } +/*! + * \internal + * \brief Retrieve an \c int value from an XML attribute + * + * This is like \c crm_element_value() but returns the value as an \c int. + * + * \param[in] xml XML element whose attribute to get + * \param[in] attr Attribute name + * \param[out] dest Where to store element value (unchanged on error) + * + * \return Standard Pacemaker return code + */ +int +pcmk__xe_get_int(const xmlNode *xml, const char *attr, int *dest) +{ + long long value_ll = 0; + int rc = pcmk_rc_ok; + + CRM_CHECK((xml != NULL) && (attr != NULL) && (dest != NULL), return EINVAL); + + rc = pcmk__xe_get_ll(xml, attr, &value_ll); + if (rc != pcmk_rc_ok) { + return rc; + } + + if ((value_ll < INT_MIN) || (value_ll > INT_MAX)) { + return ERANGE; + } + + *dest = (int) value_ll; + return pcmk_rc_ok; +} + /*! * \internal * \brief Retrieve a long long value from an XML attribute diff --git a/lib/fencing/st_actions.c b/lib/fencing/st_actions.c index d085ff8ab30..846db2fa3bd 100644 --- a/lib/fencing/st_actions.c +++ b/lib/fencing/st_actions.c @@ -505,16 +505,16 @@ stonith__xe_get_result(const xmlNode *xml, pcmk__action_result_t *result) action_stdout = crm_element_value_copy(xml, PCMK__XA_ST_OUTPUT); // A result must include an exit status and execution status - if ((crm_element_value_int(xml, PCMK__XA_RC_CODE, &exit_status) < 0) - || (crm_element_value_int(xml, PCMK__XA_OP_STATUS, - &execution_status) < 0)) { + if ((pcmk__xe_get_int(xml, PCMK__XA_RC_CODE, &exit_status) != pcmk_rc_ok) + || (pcmk__xe_get_int(xml, PCMK__XA_OP_STATUS, + &execution_status) != pcmk_rc_ok)) { int rc = pcmk_ok; exit_status = CRM_EX_ERROR; /* @COMPAT Peers <=2.1.2 in rolling upgrades provide only a legacy * return code, not a full result, so check for that. */ - if (crm_element_value_int(xml, PCMK__XA_ST_RC, &rc) == 0) { + if (pcmk__xe_get_int(xml, PCMK__XA_ST_RC, &rc) == pcmk_rc_ok) { if ((rc == pcmk_ok) || (rc == -EINPROGRESS)) { exit_status = CRM_EX_OK; } diff --git a/lib/fencing/st_client.c b/lib/fencing/st_client.c index e8c83edeb49..70979020f67 100644 --- a/lib/fencing/st_client.c +++ b/lib/fencing/st_client.c @@ -747,7 +747,7 @@ stonith_api_history(stonith_t * stonith, int call_options, const char *node, kvp->completed_nsec = (long) completed_nsec; } - crm_element_value_int(op, PCMK__XA_ST_STATE, &kvp->state); + pcmk__xe_get_int(op, PCMK__XA_ST_STATE, &kvp->state); kvp->exit_reason = crm_element_value_copy(op, PCMK_XA_EXIT_REASON); if (last) { @@ -950,7 +950,7 @@ invoke_registered_callbacks(stonith_t *stonith, const xmlNode *msg, int call_id) } else { // We have the fencer reply - if ((crm_element_value_int(msg, PCMK__XA_ST_CALLID, &call_id) != 0) + if ((pcmk__xe_get_int(msg, PCMK__XA_ST_CALLID, &call_id) != pcmk_rc_ok) || (call_id <= 0)) { crm_log_xml_warn(msg, "Bad fencer reply"); } @@ -1082,8 +1082,8 @@ stonith_dispatch_internal(const char *buffer, ssize_t length, gpointer userdata) int call_id = 0; int timeout = 0; - crm_element_value_int(blob.xml, PCMK__XA_ST_TIMEOUT, &timeout); - crm_element_value_int(blob.xml, PCMK__XA_ST_CALLID, &call_id); + pcmk__xe_get_int(blob.xml, PCMK__XA_ST_TIMEOUT, &timeout); + pcmk__xe_get_int(blob.xml, PCMK__XA_ST_CALLID, &call_id); update_callback_timeout(call_id, timeout, st); } else { @@ -1621,7 +1621,7 @@ stonith_send_command(stonith_t * stonith, const char *op, xmlNode * data, xmlNod return stonith->call_id; } - crm_element_value_int(op_reply, PCMK__XA_ST_CALLID, &reply_id); + pcmk__xe_get_int(op_reply, PCMK__XA_ST_CALLID, &reply_id); if (reply_id == stonith->call_id) { pcmk__action_result_t result = PCMK__UNKNOWN_RESULT; diff --git a/lib/lrmd/lrmd_client.c b/lib/lrmd/lrmd_client.c index 7a63504e731..4748e9845f3 100644 --- a/lib/lrmd/lrmd_client.c +++ b/lib/lrmd/lrmd_client.c @@ -284,7 +284,7 @@ lrmd_dispatch_internal(gpointer data, gpointer user_data) event.remote_nodename = native->remote_nodename; type = crm_element_value(msg, PCMK__XA_LRMD_OP); - crm_element_value_int(msg, PCMK__XA_LRMD_CALLID, &event.call_id); + pcmk__xe_get_int(msg, PCMK__XA_LRMD_CALLID, &event.call_id); event.rsc_id = crm_element_value(msg, PCMK__XA_LRMD_RSC_ID); if (pcmk__str_eq(type, LRMD_OP_RSC_REG, pcmk__str_none)) { @@ -296,27 +296,25 @@ lrmd_dispatch_internal(gpointer data, gpointer user_data) int exec_time = 0; int queue_time = 0; - crm_element_value_int(msg, PCMK__XA_LRMD_TIMEOUT, &event.timeout); + pcmk__xe_get_int(msg, PCMK__XA_LRMD_TIMEOUT, &event.timeout); pcmk__xe_get_guint(msg, PCMK__XA_LRMD_RSC_INTERVAL, &event.interval_ms); - crm_element_value_int(msg, PCMK__XA_LRMD_RSC_START_DELAY, - &event.start_delay); + pcmk__xe_get_int(msg, PCMK__XA_LRMD_RSC_START_DELAY, + &event.start_delay); - crm_element_value_int(msg, PCMK__XA_LRMD_EXEC_RC, &rc); + pcmk__xe_get_int(msg, PCMK__XA_LRMD_EXEC_RC, &rc); event.rc = (enum ocf_exitcode) rc; - crm_element_value_int(msg, PCMK__XA_LRMD_EXEC_OP_STATUS, - &event.op_status); - crm_element_value_int(msg, PCMK__XA_LRMD_RSC_DELETED, - &event.rsc_deleted); + pcmk__xe_get_int(msg, PCMK__XA_LRMD_EXEC_OP_STATUS, &event.op_status); + pcmk__xe_get_int(msg, PCMK__XA_LRMD_RSC_DELETED, &event.rsc_deleted); pcmk__xe_get_time(msg, PCMK__XA_LRMD_RUN_TIME, &event.t_run); pcmk__xe_get_time(msg, PCMK__XA_LRMD_RCCHANGE_TIME, &event.t_rcchange); - crm_element_value_int(msg, PCMK__XA_LRMD_EXEC_TIME, &exec_time); + pcmk__xe_get_int(msg, PCMK__XA_LRMD_EXEC_TIME, &exec_time); CRM_LOG_ASSERT(exec_time >= 0); event.exec_time = QB_MAX(0, exec_time); - crm_element_value_int(msg, PCMK__XA_LRMD_QUEUE_TIME, &queue_time); + pcmk__xe_get_int(msg, PCMK__XA_LRMD_QUEUE_TIME, &queue_time); CRM_LOG_ASSERT(queue_time >= 0); event.queue_time = QB_MAX(0, queue_time); @@ -402,7 +400,8 @@ handle_remote_msg(xmlNode *xml, lrmd_t *lrmd) } } else { int reply_id = 0; - crm_element_value_int(xml, PCMK__XA_LRMD_CALLID, &reply_id); + + pcmk__xe_get_int(xml, PCMK__XA_LRMD_CALLID, &reply_id); /* if this happens, we want to know about it */ crm_err("Got outdated Pacemaker Remote reply %d", reply_id); } @@ -710,7 +709,7 @@ read_remote_reply(lrmd_t *lrmd, int total_timeout, int expected_reply_id, } } - crm_element_value_int(*reply, PCMK__XA_LRMD_REMOTE_MSG_ID, &reply_id); + pcmk__xe_get_int(*reply, PCMK__XA_LRMD_REMOTE_MSG_ID, &reply_id); msg_type = crm_element_value(*reply, PCMK__XA_LRMD_REMOTE_MSG_TYPE); if (!msg_type) { @@ -935,7 +934,7 @@ lrmd_send_command(lrmd_t *lrmd, const char *op, xmlNode *data, rc = pcmk_ok; crm_trace("%s op reply received", op); - if (crm_element_value_int(op_reply, PCMK__XA_LRMD_RC, &rc) != 0) { + if (pcmk__xe_get_int(op_reply, PCMK__XA_LRMD_RC, &rc) != pcmk_rc_ok) { rc = -ENOMSG; goto done; } @@ -1022,7 +1021,7 @@ process_lrmd_handshake_reply(xmlNode *reply, lrmd_private_t *native) const char *tmp_ticket = crm_element_value(reply, PCMK__XA_LRMD_CLIENTID); const char *start_state = crm_element_value(reply, PCMK__XA_NODE_START_STATE); - crm_element_value_int(reply, PCMK__XA_LRMD_RC, &rc); + pcmk__xe_get_int(reply, PCMK__XA_LRMD_RC, &rc); rc = pcmk_legacy2rc(rc); /* The remote executor may add its uptime to the XML reply, which is useful diff --git a/lib/lrmd/proxy_common.c b/lib/lrmd/proxy_common.c index e02a89b352e..1ec671cb0ac 100644 --- a/lib/lrmd/proxy_common.c +++ b/lib/lrmd/proxy_common.c @@ -228,7 +228,7 @@ remote_proxy_cb(lrmd_t *lrmd, const char *node_name, xmlNode *msg) CRM_CHECK(op != NULL, return); CRM_CHECK(session != NULL, return); - crm_element_value_int(msg, PCMK__XA_LRMD_IPC_MSG_ID, &msg_id); + pcmk__xe_get_int(msg, PCMK__XA_LRMD_IPC_MSG_ID, &msg_id); /* This is msg from remote ipc client going to real ipc server */ if (pcmk__str_eq(op, LRMD_IPC_OP_DESTROY, pcmk__str_casei)) { diff --git a/lib/pacemaker/pcmk_graph_consumer.c b/lib/pacemaker/pcmk_graph_consumer.c index e13bc6a3604..da68bd4a4e8 100644 --- a/lib/pacemaker/pcmk_graph_consumer.c +++ b/lib/pacemaker/pcmk_graph_consumer.c @@ -853,7 +853,7 @@ pcmk__event_from_graph_action(const xmlNode *resource, int tmp = 0; - crm_element_value_int(xop, PCMK__XA_CALL_ID, &tmp); + pcmk__xe_get_int(xop, PCMK__XA_CALL_ID, &tmp); crm_debug("Got call_id=%d for %s", tmp, pcmk__xe_id(resource)); if (tmp > op->call_id) { op->call_id = tmp; diff --git a/lib/pacemaker/pcmk_injections.c b/lib/pacemaker/pcmk_injections.c index 206731d64ea..1cc603128d1 100644 --- a/lib/pacemaker/pcmk_injections.c +++ b/lib/pacemaker/pcmk_injections.c @@ -121,7 +121,7 @@ pcmk__inject_failcount(pcmk__output_t *out, cib_t *cib_conn, xmlNode *cib_node, pcmk__xe_id(cib_node), NULL, NULL, NULL, name, NULL, &output) == pcmk_rc_ok) { - if (crm_element_value_int(output, PCMK_XA_VALUE, &failcount) != 0) { + if (pcmk__xe_get_int(output, PCMK_XA_VALUE, &failcount) != pcmk_rc_ok) { failcount = 0; } } @@ -211,7 +211,7 @@ create_op(const xmlNode *cib_resource, const char *task, guint interval_ms, int tmp = 0; - crm_element_value_int(xop, PCMK__XA_CALL_ID, &tmp); + pcmk__xe_get_int(xop, PCMK__XA_CALL_ID, &tmp); if (tmp > op->call_id) { op->call_id = tmp; } diff --git a/lib/pengine/failcounts.c b/lib/pengine/failcounts.c index 07c4f84dd8d..83a14de5a76 100644 --- a/lib/pengine/failcounts.c +++ b/lib/pengine/failcounts.c @@ -63,7 +63,7 @@ is_matched_failure(const char *rsc_id, const xmlNode *conf_op_xml, int rc = 0; int target_rc = pe__target_rc_from_xml(lrm_op_xml); - crm_element_value_int(lrm_op_xml, PCMK__XA_RC_CODE, &rc); + pcmk__xe_get_int(lrm_op_xml, PCMK__XA_RC_CODE, &rc); if (rc != target_rc) { matched = TRUE; } diff --git a/lib/pengine/pe_actions.c b/lib/pengine/pe_actions.c index 5f17c42dcf1..4801c34e0b2 100644 --- a/lib/pengine/pe_actions.c +++ b/lib/pengine/pe_actions.c @@ -1606,8 +1606,8 @@ pe__is_newer_op(const xmlNode *xml_a, const xmlNode *xml_b) sort_return(0, "duplicate"); } - crm_element_value_int(xml_a, PCMK__XA_CALL_ID, &a_call_id); - crm_element_value_int(xml_b, PCMK__XA_CALL_ID, &b_call_id); + pcmk__xe_get_int(xml_a, PCMK__XA_CALL_ID, &a_call_id); + pcmk__xe_get_int(xml_b, PCMK__XA_CALL_ID, &b_call_id); if (a_call_id == -1 && b_call_id == -1) { /* both are pending ops so it doesn't matter since diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c index 0cc10b836ab..72a57264412 100644 --- a/lib/pengine/unpack.c +++ b/lib/pengine/unpack.c @@ -314,8 +314,8 @@ unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler) if (pcmk_is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { int do_panic = 0; - crm_element_value_int(scheduler->input, PCMK_XA_NO_QUORUM_PANIC, - &do_panic); + pcmk__xe_get_int(scheduler->input, PCMK_XA_NO_QUORUM_PANIC, + &do_panic); if (do_panic || pcmk_is_set(scheduler->flags, pcmk__sched_quorate)) { scheduler->no_quorum_policy = pcmk_no_quorum_fence; @@ -908,7 +908,7 @@ pcmk__validate_fencing_topology(const xmlNode *xml) continue; } - if (crm_element_value_int(level, PCMK_XA_INDEX, &index) != 0) { + if (pcmk__xe_get_int(level, PCMK_XA_INDEX, &index) != pcmk_rc_ok) { pcmk__config_err("Ignoring fencing level %s with invalid index", id); continue; @@ -2980,8 +2980,8 @@ find_lrm_op(const char *resource, const char *op, const char *node, const char * int rc = PCMK_OCF_UNKNOWN_ERROR; int status = PCMK_EXEC_ERROR; - crm_element_value_int(xml, PCMK__XA_RC_CODE, &rc); - crm_element_value_int(xml, PCMK__XA_OP_STATUS, &status); + pcmk__xe_get_int(xml, PCMK__XA_RC_CODE, &rc); + pcmk__xe_get_int(xml, PCMK__XA_OP_STATUS, &status); if ((rc != target_rc) || (status != PCMK_EXEC_DONE)) { return NULL; } @@ -3293,8 +3293,8 @@ unpack_migrate_to_success(struct action_history *history) */ return; } - crm_element_value_int(migrate_from, PCMK__XA_RC_CODE, &from_rc); - crm_element_value_int(migrate_from, PCMK__XA_OP_STATUS, &from_status); + pcmk__xe_get_int(migrate_from, PCMK__XA_RC_CODE, &from_rc); + pcmk__xe_get_int(migrate_from, PCMK__XA_OP_STATUS, &from_status); } /* If the resource has newer state on both the source and target after the @@ -4441,8 +4441,8 @@ can_affect_state(struct action_history *history) static int unpack_action_result(struct action_history *history) { - if ((crm_element_value_int(history->xml, PCMK__XA_OP_STATUS, - &(history->execution_status)) < 0) + if ((pcmk__xe_get_int(history->xml, PCMK__XA_OP_STATUS, + &(history->execution_status)) != pcmk_rc_ok) || (history->execution_status < PCMK_EXEC_PENDING) || (history->execution_status > PCMK_EXEC_MAX) || (history->execution_status == PCMK_EXEC_CANCELLED)) { @@ -4455,8 +4455,8 @@ unpack_action_result(struct action_history *history) "")); return pcmk_rc_unpack_error; } - if ((crm_element_value_int(history->xml, PCMK__XA_RC_CODE, - &(history->exit_status)) < 0) + if ((pcmk__xe_get_int(history->xml, PCMK__XA_RC_CODE, + &(history->exit_status)) != pcmk_rc_ok) || (history->exit_status < 0) || (history->exit_status > CRM_EX_MAX)) { pcmk__config_err("Ignoring resource history entry %s for %s on %s " "with invalid " PCMK__XA_RC_CODE " '%s'", @@ -4734,7 +4734,7 @@ unpack_rsc_op(pcmk_resource_t *rsc, pcmk_node_t *node, xmlNode *xml_op, history.expected_exit_status = pe__target_rc_from_xml(xml_op); history.key = pcmk__xe_history_key(xml_op); - crm_element_value_int(xml_op, PCMK__XA_CALL_ID, &(history.call_id)); + pcmk__xe_get_int(xml_op, PCMK__XA_CALL_ID, &(history.call_id)); pcmk__rsc_trace(rsc, "Unpacking %s (%s call %d on %s): %s (%s)", history.id, history.task, history.call_id, diff --git a/tools/crm_mon.c b/tools/crm_mon.c index c0ad6c47b91..e93c6d0bbe9 100644 --- a/tools/crm_mon.c +++ b/tools/crm_mon.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. * @@ -1949,7 +1949,8 @@ crm_diff_update(const char *event, xmlNode * msg) if (options.external_agent) { int format = 0; - crm_element_value_int(diff, PCMK_XA_FORMAT, &format); + + pcmk__xe_get_int(diff, PCMK_XA_FORMAT, &format); if (format == 2) { xmlNode *wrapper = pcmk__xe_first_child(msg, From 8cb23d58c906ad937d7f4c39b5a49bae4b94f88d Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 19 Mar 2025 03:40:41 -0700 Subject: [PATCH 078/186] API: libcrmcommon: Deprecate crm_element_value_int() Signed-off-by: Reid Wahl --- include/crm/common/xml_element.h | 1 - include/crm/common/xml_element_compat.h | 3 ++ lib/common/xml_element.c | 65 ++++++++++--------------- 3 files changed, 30 insertions(+), 39 deletions(-) diff --git a/include/crm/common/xml_element.h b/include/crm/common/xml_element.h index 36c6bde99d9..eec7c439b50 100644 --- a/include/crm/common/xml_element.h +++ b/include/crm/common/xml_element.h @@ -34,7 +34,6 @@ const char *crm_xml_add_timeval(xmlNode *xml, const char *name_sec, const struct timeval *value); const char *crm_element_value(const xmlNode *data, const char *name); -int crm_element_value_int(const xmlNode *data, const char *name, int *dest); char *crm_element_value_copy(const xmlNode *data, const char *name); #ifdef __cplusplus diff --git a/include/crm/common/xml_element_compat.h b/include/crm/common/xml_element_compat.h index cd8d095172a..08823c3f09f 100644 --- a/include/crm/common/xml_element_compat.h +++ b/include/crm/common/xml_element_compat.h @@ -55,6 +55,9 @@ int crm_element_value_ms(const xmlNode *data, const char *name, guint *dest); int crm_element_value_ll(const xmlNode *data, const char *name, long long *dest); +//! \deprecated Do not use +int crm_element_value_int(const xmlNode *data, const char *name, int *dest); + #ifdef __cplusplus } #endif diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index b53de64611f..7c395a4e94a 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -1186,44 +1186,6 @@ crm_element_value(const xmlNode *data, const char *name) return (const char *) attr->children->content; } -/*! - * \brief Retrieve the integer value of an XML attribute - * - * This is like \c crm_element_value() but getting the value as an integer. - * - * \param[in] data XML node to check - * \param[in] name Attribute name to check - * \param[out] dest Where to store element value - * - * \return 0 on success, -1 otherwise - */ -int -crm_element_value_int(const xmlNode *data, const char *name, int *dest) -{ - const char *value = NULL; - - CRM_CHECK(dest != NULL, return -1); - value = crm_element_value(data, name); - if (value) { - long long value_ll; - int rc = pcmk__scan_ll(value, &value_ll, 0LL); - - *dest = PCMK__PARSE_INT_DEFAULT; - if (rc != pcmk_rc_ok) { - crm_warn("Using default for %s " - "because '%s' is not a valid integer: %s", - name, value, pcmk_rc_str(rc)); - } else if ((value_ll < INT_MIN) || (value_ll > INT_MAX)) { - crm_warn("Using default for %s because '%s' is out of range", - name, value); - } else { - *dest = (int) value_ll; - return 0; - } - } - return -1; -} - /*! * \internal * \brief Retrieve a flag group from an XML attribute value @@ -1742,5 +1704,32 @@ crm_element_value_ms(const xmlNode *data, const char *name, guint *dest) return pcmk_ok; } +int +crm_element_value_int(const xmlNode *data, const char *name, int *dest) +{ + const char *value = NULL; + + CRM_CHECK(dest != NULL, return -1); + value = crm_element_value(data, name); + if (value) { + long long value_ll; + int rc = pcmk__scan_ll(value, &value_ll, 0LL); + + *dest = PCMK__PARSE_INT_DEFAULT; + if (rc != pcmk_rc_ok) { + crm_warn("Using default for %s " + "because '%s' is not a valid integer: %s", + name, value, pcmk_rc_str(rc)); + } else if ((value_ll < INT_MIN) || (value_ll > INT_MAX)) { + crm_warn("Using default for %s because '%s' is out of range", + name, value); + } else { + *dest = (int) value_ll; + return 0; + } + } + return -1; +} + // LCOV_EXCL_STOP // End deprecated API From 3b125be511c886f4320ea8f978b6c148110e3679 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 19 Mar 2025 04:43:12 -0700 Subject: [PATCH 079/186] Refactor: libcrmcommon: New pcmk__xe_get() To replace crm_element_value() Signed-off-by: Reid Wahl --- daemons/attrd/attrd_attributes.c | 10 +- daemons/attrd/attrd_cib.c | 6 +- daemons/attrd/attrd_corosync.c | 23 ++- daemons/attrd/attrd_ipc.c | 37 +++-- daemons/attrd/attrd_messages.c | 6 +- daemons/attrd/attrd_sync.c | 4 +- daemons/based/based_callbacks.c | 114 ++++++-------- daemons/based/based_io.c | 6 +- daemons/based/based_messages.c | 43 +++-- daemons/based/based_notify.c | 4 +- daemons/based/based_remote.c | 12 +- daemons/based/based_transaction.c | 6 +- daemons/based/pacemaker-based.c | 7 +- daemons/controld/controld_callbacks.c | 12 +- daemons/controld/controld_cib.c | 6 +- daemons/controld/controld_execd.c | 53 ++++--- daemons/controld/controld_execd_state.c | 10 +- daemons/controld/controld_fencing.c | 13 +- daemons/controld/controld_join_client.c | 16 +- daemons/controld/controld_join_dc.c | 34 ++-- daemons/controld/controld_membership.c | 6 +- daemons/controld/controld_messages.c | 80 +++++----- daemons/controld/controld_metadata.c | 8 +- daemons/controld/controld_remote_ra.c | 3 +- daemons/controld/controld_te_actions.c | 65 ++++---- daemons/controld/controld_te_callbacks.c | 22 +-- daemons/controld/controld_te_events.c | 37 ++--- daemons/controld/controld_te_utils.c | 18 +-- daemons/controld/controld_throttle.c | 2 +- daemons/controld/controld_transition.c | 8 +- daemons/controld/controld_utils.c | 4 +- daemons/execd/execd_alerts.c | 5 +- daemons/execd/execd_commands.c | 26 ++-- daemons/execd/pacemaker-execd.c | 5 +- daemons/execd/remoted_proxy.c | 4 +- daemons/execd/remoted_schemas.c | 2 +- daemons/fenced/fenced_cib.c | 16 +- daemons/fenced/fenced_commands.c | 88 +++++------ daemons/fenced/fenced_history.c | 8 +- daemons/fenced/fenced_remote.c | 38 ++--- daemons/fenced/fenced_scheduler.c | 2 +- daemons/fenced/pacemaker-fenced.c | 12 +- daemons/pacemakerd/pcmkd_messages.c | 12 +- daemons/schedulerd/schedulerd_messages.c | 6 +- include/crm/common/history_internal.h | 5 +- include/crm/common/xml_element_internal.h | 30 ++-- lib/cib/cib_attrs.c | 17 +- lib/cib/cib_file.c | 12 +- lib/cib/cib_native.c | 4 +- lib/cib/cib_ops.c | 18 +-- lib/cib/cib_remote.c | 7 +- lib/cib/cib_utils.c | 20 +-- lib/cluster/election.c | 8 +- lib/cluster/membership.c | 6 +- lib/common/acl.c | 30 ++-- lib/common/alerts.c | 10 +- lib/common/digest.c | 6 +- lib/common/ipc_attrd.c | 12 +- lib/common/ipc_controld.c | 32 ++-- lib/common/ipc_pacemakerd.c | 20 +-- lib/common/ipc_schedulerd.c | 22 +-- lib/common/iso8601.c | 5 +- lib/common/messages.c | 22 ++- lib/common/nodes.c | 2 +- lib/common/nvpair.c | 18 +-- lib/common/patchset.c | 20 +-- lib/common/patchset_display.c | 16 +- lib/common/probes.c | 6 +- lib/common/rules.c | 30 ++-- lib/common/schemas.c | 9 +- .../messages/pcmk__new_message_as_test.c | 29 ++-- .../nvpair/pcmk__xe_set_bool_attr_test.c | 6 +- .../pcmk__build_schema_xml_node_test.c | 17 +- .../xml_element/pcmk__xe_copy_attrs_test.c | 40 ++--- .../xml_element/pcmk__xe_first_child_test.c | 10 +- .../xml_element/pcmk__xe_set_score_test.c | 6 +- .../pcmk__xe_dereference_children_test.c | 6 +- lib/common/xml.c | 2 +- lib/common/xml_display.c | 2 +- lib/common/xml_element.c | 65 +++++--- lib/common/xml_idref.c | 2 +- lib/common/xpath.c | 2 +- lib/fencing/st_actions.c | 2 +- lib/fencing/st_client.c | 16 +- lib/lrmd/lrmd_client.c | 36 ++--- lib/lrmd/proxy_common.c | 12 +- lib/pacemaker/pcmk_acl.c | 4 +- lib/pacemaker/pcmk_cluster_queries.c | 4 +- lib/pacemaker/pcmk_graph_consumer.c | 18 +-- lib/pacemaker/pcmk_graph_logging.c | 10 +- lib/pacemaker/pcmk_injections.c | 8 +- lib/pacemaker/pcmk_output.c | 6 +- lib/pacemaker/pcmk_resource.c | 8 +- lib/pacemaker/pcmk_sched_actions.c | 18 +-- lib/pacemaker/pcmk_sched_colocation.c | 38 +++-- lib/pacemaker/pcmk_sched_constraints.c | 6 +- lib/pacemaker/pcmk_sched_location.c | 39 +++-- lib/pacemaker/pcmk_sched_ordering.c | 38 ++--- lib/pacemaker/pcmk_sched_primitive.c | 4 +- lib/pacemaker/pcmk_sched_recurring.c | 11 +- lib/pacemaker/pcmk_sched_resource.c | 6 +- lib/pacemaker/pcmk_sched_tickets.c | 20 +-- lib/pacemaker/pcmk_simulate.c | 23 ++- .../pcmk_ticket/pcmk__get_ticket_state_test.c | 8 +- .../pcmk_ticket_constraints_test.c | 4 +- .../pcmk_ticket/pcmk_ticket_get_attr_test.c | 6 +- .../tests/pcmk_ticket/pcmk_ticket_info_test.c | 32 ++-- .../pcmk_ticket_remove_attr_test.c | 14 +- .../pcmk_ticket/pcmk_ticket_set_attr_test.c | 24 +-- .../pcmk_ticket/pcmk_ticket_state_test.c | 8 +- lib/pengine/bundle.c | 16 +- lib/pengine/clone.c | 4 +- lib/pengine/complex.c | 22 +-- lib/pengine/failcounts.c | 11 +- lib/pengine/group.c | 2 +- lib/pengine/native.c | 30 ++-- lib/pengine/pe_actions.c | 46 +++--- lib/pengine/pe_digest.c | 31 ++-- lib/pengine/pe_output.c | 147 ++++++++---------- lib/pengine/remote.c | 8 +- lib/pengine/status.c | 2 +- lib/pengine/unpack.c | 95 ++++++----- lib/pengine/utils.c | 2 +- tools/cibadmin.c | 4 +- tools/crm_attribute.c | 10 +- tools/crm_diff.c | 3 +- tools/crm_mon.c | 14 +- tools/crm_resource.c | 2 +- tools/crm_resource_ban.c | 2 +- tools/crm_resource_print.c | 20 +-- tools/crm_resource_runtime.c | 22 +-- tools/crm_shadow.c | 2 +- 132 files changed, 1164 insertions(+), 1227 deletions(-) diff --git a/daemons/attrd/attrd_attributes.c b/daemons/attrd/attrd_attributes.c index 7a5916ee3c6..21444112fe7 100644 --- a/daemons/attrd/attrd_attributes.c +++ b/daemons/attrd/attrd_attributes.c @@ -26,9 +26,9 @@ attrd_create_attribute(xmlNode *xml) { int is_private = 0; long long dampen = 0; - const char *name = crm_element_value(xml, PCMK__XA_ATTR_NAME); - const char *set_type = crm_element_value(xml, PCMK__XA_ATTR_SET_TYPE); - const char *dampen_s = crm_element_value(xml, PCMK__XA_ATTR_DAMPENING); + const char *name = pcmk__xe_get(xml, PCMK__XA_ATTR_NAME); + const char *set_type = pcmk__xe_get(xml, PCMK__XA_ATTR_SET_TYPE); + const char *dampen_s = pcmk__xe_get(xml, PCMK__XA_ATTR_DAMPENING); attribute_t *a = NULL; if (set_type == NULL) { @@ -82,7 +82,7 @@ attrd_create_attribute(xmlNode *xml) static int attrd_update_dampening(attribute_t *a, xmlNode *xml, const char *attr) { - const char *dvalue = crm_element_value(xml, PCMK__XA_ATTR_DAMPENING); + const char *dvalue = pcmk__xe_get(xml, PCMK__XA_ATTR_DAMPENING); long long dampen = 0; if (dvalue == NULL) { @@ -187,7 +187,7 @@ attrd_populate_attribute(xmlNode *xml, const char *attr) attribute_t *a = NULL; bool update_both = false; - const char *op = crm_element_value(xml, PCMK_XA_TASK); + const char *op = pcmk__xe_get(xml, PCMK_XA_TASK); // NULL because PCMK__ATTRD_CMD_SYNC_RESPONSE has no PCMK_XA_TASK update_both = pcmk__str_eq(op, PCMK__ATTRD_CMD_UPDATE_BOTH, diff --git a/daemons/attrd/attrd_cib.c b/daemons/attrd/attrd_cib.c index 4231e4a668a..fc5ac5e19bd 100644 --- a/daemons/attrd/attrd_cib.c +++ b/daemons/attrd/attrd_cib.c @@ -1,5 +1,5 @@ /* - * Copyright 2013-2024 the Pacemaker project contributors + * Copyright 2013-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -66,7 +66,7 @@ attrd_cib_updated_cb(const char *event, xmlNode *msg) status_changed = pcmk__cib_element_in_patchset(patchset, PCMK_XE_STATUS); - client_name = crm_element_value(msg, PCMK__XA_CIB_CLIENTNAME); + client_name = pcmk__xe_get(msg, PCMK__XA_CIB_CLIENTNAME); if (!cib__client_triggers_refresh(client_name)) { /* This change came from a source that ensured the CIB is consistent * with our attributes table, so we don't need to write anything out. @@ -92,7 +92,7 @@ attrd_cib_updated_cb(const char *event, xmlNode *msg) * the CIB. */ if (client_name == NULL) { - client_name = crm_element_value(msg, PCMK__XA_CIB_CLIENTID); + client_name = pcmk__xe_get(msg, PCMK__XA_CIB_CLIENTID); } crm_notice("Updating all attributes after %s event triggered by %s", event, pcmk__s(client_name, "unidentified client")); diff --git a/daemons/attrd/attrd_corosync.c b/daemons/attrd/attrd_corosync.c index 50a0151bc9e..fdfb108cd97 100644 --- a/daemons/attrd/attrd_corosync.c +++ b/daemons/attrd/attrd_corosync.c @@ -39,7 +39,7 @@ attrd_confirmation(int callid) static void attrd_peer_message(pcmk__node_status_t *peer, xmlNode *xml) { - const char *election_op = crm_element_value(xml, PCMK__XA_CRM_TASK); + const char *election_op = pcmk__xe_get(xml, PCMK__XA_CRM_TASK); if (election_op) { attrd_handle_election_op(peer, xml); @@ -223,7 +223,7 @@ update_attr_on_host(attribute_t *a, const pcmk__node_status_t *peer, bool changed = false; attribute_value_t *v = NULL; const char *prev_xml_id = NULL; - const char *node_xml_id = crm_element_value(xml, PCMK__XA_ATTR_HOST_ID); + const char *node_xml_id = pcmk__xe_get(xml, PCMK__XA_ATTR_HOST_ID); // Create entry for value if not already existing v = g_hash_table_lookup(a->values, host); @@ -335,9 +335,9 @@ attrd_peer_update_one(const pcmk__node_status_t *peer, xmlNode *xml, bool filter) { attribute_t *a = NULL; - const char *attr = crm_element_value(xml, PCMK__XA_ATTR_NAME); - const char *value = crm_element_value(xml, PCMK__XA_ATTR_VALUE); - const char *host = crm_element_value(xml, PCMK__XA_ATTR_HOST); + const char *attr = pcmk__xe_get(xml, PCMK__XA_ATTR_NAME); + const char *value = pcmk__xe_get(xml, PCMK__XA_ATTR_VALUE); + const char *host = pcmk__xe_get(xml, PCMK__XA_ATTR_HOST); if (attr == NULL) { crm_warn("Could not update attribute: peer did not specify name"); @@ -436,11 +436,10 @@ void attrd_peer_clear_failure(pcmk__request_t *request) { xmlNode *xml = request->xml; - const char *rsc = crm_element_value(xml, PCMK__XA_ATTR_RESOURCE); - const char *host = crm_element_value(xml, PCMK__XA_ATTR_HOST); - const char *op = crm_element_value(xml, PCMK__XA_ATTR_CLEAR_OPERATION); - const char *interval_spec = crm_element_value(xml, - PCMK__XA_ATTR_CLEAR_INTERVAL); + const char *rsc = pcmk__xe_get(xml, PCMK__XA_ATTR_RESOURCE); + const char *host = pcmk__xe_get(xml, PCMK__XA_ATTR_HOST); + const char *op = pcmk__xe_get(xml, PCMK__XA_ATTR_CLEAR_OPERATION); + const char *interval_spec = pcmk__xe_get(xml, PCMK__XA_ATTR_CLEAR_INTERVAL); guint interval_ms = 0U; char *attr = NULL; GHashTableIter iter; @@ -501,8 +500,8 @@ attrd_peer_sync_response(const pcmk__node_status_t *peer, bool peer_won, for (xmlNode *child = pcmk__xe_first_child(xml, NULL, NULL, NULL); child != NULL; child = pcmk__xe_next(child, NULL)) { - attrd_peer_update(peer, child, - crm_element_value(child, PCMK__XA_ATTR_HOST), true); + attrd_peer_update(peer, child, pcmk__xe_get(child, PCMK__XA_ATTR_HOST), + true); } if (peer_won) { diff --git a/daemons/attrd/attrd_ipc.c b/daemons/attrd/attrd_ipc.c index 9c1812d490d..bb03c6659d7 100644 --- a/daemons/attrd/attrd_ipc.c +++ b/daemons/attrd/attrd_ipc.c @@ -100,9 +100,9 @@ attrd_client_clear_failure(pcmk__request_t *request) return NULL; } - rsc = crm_element_value(xml, PCMK__XA_ATTR_RESOURCE); - op = crm_element_value(xml, PCMK__XA_ATTR_CLEAR_OPERATION); - interval_spec = crm_element_value(xml, PCMK__XA_ATTR_CLEAR_INTERVAL); + rsc = pcmk__xe_get(xml, PCMK__XA_ATTR_RESOURCE); + op = pcmk__xe_get(xml, PCMK__XA_ATTR_CLEAR_OPERATION); + interval_spec = pcmk__xe_get(xml, PCMK__XA_ATTR_CLEAR_INTERVAL); /* Map this to an update */ crm_xml_add(xml, PCMK_XA_TASK, PCMK__ATTRD_CMD_UPDATE); @@ -143,7 +143,7 @@ attrd_client_peer_remove(pcmk__request_t *request) xmlNode *xml = request->xml; // Host and ID are not used in combination, rather host has precedence - const char *host = crm_element_value(xml, PCMK__XA_ATTR_HOST); + const char *host = pcmk__xe_get(xml, PCMK__XA_ATTR_HOST); char *host_alloc = NULL; attrd_send_ack(request->ipc_client, request->ipc_id, request->ipc_flags); @@ -194,7 +194,7 @@ attrd_client_query(pcmk__request_t *request) crm_debug("Query arrived from %s", pcmk__client_name(request->ipc_client)); /* Request must specify attribute name to query */ - attr = crm_element_value(query, PCMK__XA_ATTR_NAME); + attr = pcmk__xe_get(query, PCMK__XA_ATTR_NAME); if (attr == NULL) { pcmk__format_result(&request->result, CRM_EX_ERROR, PCMK_EXEC_ERROR, "Ignoring malformed query from %s (no attribute name given)", @@ -203,8 +203,7 @@ attrd_client_query(pcmk__request_t *request) } /* Build the XML reply */ - reply = build_query_reply(attr, - crm_element_value(query, PCMK__XA_ATTR_HOST)); + reply = build_query_reply(attr, pcmk__xe_get(query, PCMK__XA_ATTR_HOST)); if (reply == NULL) { pcmk__format_result(&request->result, CRM_EX_ERROR, PCMK_EXEC_ERROR, "Could not respond to query from %s: could not create XML reply", @@ -233,7 +232,7 @@ attrd_client_refresh(pcmk__request_t *request) static void handle_missing_host(xmlNode *xml) { - if (crm_element_value(xml, PCMK__XA_ATTR_HOST) == NULL) { + if (pcmk__xe_get(xml, PCMK__XA_ATTR_HOST) == NULL) { crm_trace("Inferring local node %s with XML ID %s", attrd_cluster->priv->node_name, attrd_cluster->priv->node_xml_id); @@ -302,9 +301,9 @@ handle_regexes(pcmk__request_t *request) xmlNode *xml = request->xml; int rc = pcmk_rc_ok; - const char *attr = crm_element_value(xml, PCMK__XA_ATTR_NAME); - const char *value = crm_element_value(xml, PCMK__XA_ATTR_VALUE); - const char *regex = crm_element_value(xml, PCMK__XA_ATTR_REGEX); + const char *attr = pcmk__xe_get(xml, PCMK__XA_ATTR_NAME); + const char *value = pcmk__xe_get(xml, PCMK__XA_ATTR_VALUE); + const char *regex = pcmk__xe_get(xml, PCMK__XA_ATTR_REGEX); rc = expand_regexes(xml, attr, value, regex); @@ -338,7 +337,7 @@ handle_value_expansion(const char **value, xmlNode *xml, const char *op, attribute_value_t *v = NULL; if (a) { - const char *host = crm_element_value(xml, PCMK__XA_ATTR_HOST); + const char *host = pcmk__xe_get(xml, PCMK__XA_ATTR_HOST); v = g_hash_table_lookup(a->values, host); } @@ -348,7 +347,7 @@ handle_value_expansion(const char **value, xmlNode *xml, const char *op, crm_xml_add_int(xml, PCMK__XA_ATTR_VALUE, int_value); /* Replacing the value frees the previous memory, so re-query it */ - *value = crm_element_value(xml, PCMK__XA_ATTR_VALUE); + *value = pcmk__xe_get(xml, PCMK__XA_ATTR_VALUE); } return pcmk_rc_ok; @@ -414,8 +413,8 @@ attrd_client_update(pcmk__request_t *request) NULL); child != NULL; child = pcmk__xe_next(child, PCMK_XE_OP)) { - attr = crm_element_value(child, PCMK__XA_ATTR_NAME); - value = crm_element_value(child, PCMK__XA_ATTR_VALUE); + attr = pcmk__xe_get(child, PCMK__XA_ATTR_NAME); + value = pcmk__xe_get(child, PCMK__XA_ATTR_VALUE); handle_missing_host(child); @@ -446,9 +445,9 @@ attrd_client_update(pcmk__request_t *request) return NULL; } - attr = crm_element_value(xml, PCMK__XA_ATTR_NAME); - value = crm_element_value(xml, PCMK__XA_ATTR_VALUE); - regex = crm_element_value(xml, PCMK__XA_ATTR_REGEX); + attr = pcmk__xe_get(xml, PCMK__XA_ATTR_NAME); + value = pcmk__xe_get(xml, PCMK__XA_ATTR_VALUE); + regex = pcmk__xe_get(xml, PCMK__XA_ATTR_REGEX); if (handle_regexes(request) != pcmk_rc_ok) { /* Error handling was already dealt with in handle_regexes, so just return. */ @@ -470,7 +469,7 @@ attrd_client_update(pcmk__request_t *request) } crm_debug("Broadcasting %s[%s]=%s%s", - attr, crm_element_value(xml, PCMK__XA_ATTR_HOST), + attr, pcmk__xe_get(xml, PCMK__XA_ATTR_HOST), value, (attrd_election_won()? " (writer)" : "")); send_update_msg_to_cluster(request, xml); diff --git a/daemons/attrd/attrd_messages.c b/daemons/attrd/attrd_messages.c index cb9a5ec9369..602ca6f7a1a 100644 --- a/daemons/attrd/attrd_messages.c +++ b/daemons/attrd/attrd_messages.c @@ -136,7 +136,7 @@ static xmlNode * handle_remove_request(pcmk__request_t *request) { if (request->peer != NULL) { - const char *host = crm_element_value(request->xml, PCMK__XA_ATTR_HOST); + const char *host = pcmk__xe_get(request->xml, PCMK__XA_ATTR_HOST); bool reap = false; if (pcmk__xe_get_bool_attr(request->xml, PCMK__XA_REAP, @@ -188,7 +188,7 @@ static xmlNode * handle_update_request(pcmk__request_t *request) { if (request->peer != NULL) { - const char *host = crm_element_value(request->xml, PCMK__XA_ATTR_HOST); + const char *host = pcmk__xe_get(request->xml, PCMK__XA_ATTR_HOST); pcmk__node_status_t *peer = pcmk__get_node(0, request->peer, NULL, pcmk__node_search_cluster_member); @@ -330,7 +330,7 @@ attrd_broadcast_protocol(void) gboolean attrd_send_message(pcmk__node_status_t *node, xmlNode *data, bool confirm) { - const char *op = crm_element_value(data, PCMK_XA_TASK); + const char *op = pcmk__xe_get(data, PCMK_XA_TASK); crm_xml_add(data, PCMK__XA_T, PCMK__VALUE_ATTRD); crm_xml_add(data, PCMK__XA_ATTR_VERSION, ATTRD_PROTOCOL_VERSION); diff --git a/daemons/attrd/attrd_sync.c b/daemons/attrd/attrd_sync.c index ecb6f505b67..d82c15350d5 100644 --- a/daemons/attrd/attrd_sync.c +++ b/daemons/attrd/attrd_sync.c @@ -315,13 +315,13 @@ attrd_request_sync_point(xmlNode *xml) PCMK__XA_ATTR_SYNC_POINT, NULL); if (child) { - return crm_element_value(child, PCMK__XA_ATTR_SYNC_POINT); + return pcmk__xe_get(child, PCMK__XA_ATTR_SYNC_POINT); } else { return NULL; } } else { - return crm_element_value(xml, PCMK__XA_ATTR_SYNC_POINT); + return pcmk__xe_get(xml, PCMK__XA_ATTR_SYNC_POINT); } } diff --git a/daemons/based/based_callbacks.c b/daemons/based/based_callbacks.c index f04d3ceb30d..6e0e1dd916a 100644 --- a/daemons/based/based_callbacks.c +++ b/daemons/based/based_callbacks.c @@ -222,7 +222,7 @@ void cib_common_callback_worker(uint32_t id, uint32_t flags, xmlNode * op_request, pcmk__client_t *cib_client, gboolean privileged) { - const char *op = crm_element_value(op_request, PCMK__XA_CIB_OP); + const char *op = pcmk__xe_get(op_request, PCMK__XA_CIB_OP); uint32_t call_options = cib_none; int rc = pcmk_rc_ok; @@ -256,8 +256,7 @@ cib_common_callback_worker(uint32_t id, uint32_t flags, xmlNode * op_request, int on_off = 0; crm_exit_t status = CRM_EX_OK; uint64_t bit = UINT64_C(0); - const char *type = crm_element_value(op_request, - PCMK__XA_CIB_NOTIFY_TYPE); + const char *type = pcmk__xe_get(op_request, PCMK__XA_CIB_NOTIFY_TYPE); pcmk__xe_get_int(op_request, PCMK__XA_CIB_NOTIFY_ACTIVATE, &on_off); @@ -336,8 +335,7 @@ cib_common_callback(qb_ipcs_connection_t * c, void *data, size_t size, gboolean } if (cib_client->name == NULL) { - const char *value = crm_element_value(op_request, - PCMK__XA_CIB_CLIENTNAME); + const char *value = pcmk__xe_get(op_request, PCMK__XA_CIB_CLIENTNAME); if (value == NULL) { cib_client->name = pcmk__itoa(cib_client->pid); @@ -402,14 +400,14 @@ static void process_ping_reply(xmlNode *reply) { uint64_t seq = 0; - const char *host = crm_element_value(reply, PCMK__XA_SRC); + const char *host = pcmk__xe_get(reply, PCMK__XA_SRC); xmlNode *wrapper = pcmk__xe_first_child(reply, PCMK__XE_CIB_CALLDATA, NULL, NULL); xmlNode *pong = pcmk__xe_first_child(wrapper, NULL, NULL, NULL); - const char *seq_s = crm_element_value(pong, PCMK__XA_CIB_PING_ID); - const char *digest = crm_element_value(pong, PCMK__XA_DIGEST); + const char *seq_s = pcmk__xe_get(pong, PCMK__XA_CIB_PING_ID); + const char *digest = pcmk__xe_get(pong, PCMK__XA_DIGEST); if (seq_s == NULL) { crm_debug("Ignoring ping reply with no " PCMK__XA_CIB_PING_ID); @@ -453,17 +451,15 @@ process_ping_reply(xmlNode *reply) const char *num_updates_s = NULL; if (remote_cib != NULL) { - admin_epoch_s = crm_element_value(remote_cib, - PCMK_XA_ADMIN_EPOCH); - epoch_s = crm_element_value(remote_cib, PCMK_XA_EPOCH); - num_updates_s = crm_element_value(remote_cib, - PCMK_XA_NUM_UPDATES); + admin_epoch_s = pcmk__xe_get(remote_cib, PCMK_XA_ADMIN_EPOCH); + epoch_s = pcmk__xe_get(remote_cib, PCMK_XA_EPOCH); + num_updates_s = pcmk__xe_get(remote_cib, PCMK_XA_NUM_UPDATES); } crm_notice("Local CIB %s.%s.%s.%s differs from %s: %s.%s.%s.%s %p", - crm_element_value(the_cib, PCMK_XA_ADMIN_EPOCH), - crm_element_value(the_cib, PCMK_XA_EPOCH), - crm_element_value(the_cib, PCMK_XA_NUM_UPDATES), + pcmk__xe_get(the_cib, PCMK_XA_ADMIN_EPOCH), + pcmk__xe_get(the_cib, PCMK_XA_EPOCH), + pcmk__xe_get(the_cib, PCMK_XA_NUM_UPDATES), ping_digest, host, pcmk__s(admin_epoch_s, "_"), pcmk__s(epoch_s, "_"), @@ -556,11 +552,10 @@ parse_peer_options(const cib__operation_t *operation, xmlNode *request, * trace code more closely to check.) */ const char *host = NULL; - const char *delegated = crm_element_value(request, - PCMK__XA_CIB_DELEGATED_FROM); - const char *op = crm_element_value(request, PCMK__XA_CIB_OP); - const char *originator = crm_element_value(request, PCMK__XA_SRC); - const char *reply_to = crm_element_value(request, PCMK__XA_CIB_ISREPLYTO); + const char *delegated = pcmk__xe_get(request, PCMK__XA_CIB_DELEGATED_FROM); + const char *op = pcmk__xe_get(request, PCMK__XA_CIB_OP); + const char *originator = pcmk__xe_get(request, PCMK__XA_SRC); + const char *reply_to = pcmk__xe_get(request, PCMK__XA_CIB_ISREPLYTO); gboolean is_reply = pcmk__str_eq(reply_to, OUR_NODENAME, pcmk__str_casei); @@ -594,9 +589,8 @@ parse_peer_options(const cib__operation_t *operation, xmlNode *request, * Except this time PCMK__XA_CIB_SCHEMA_MAX will be set which puts a * limit on how far newer nodes will go */ - const char *max = crm_element_value(request, PCMK__XA_CIB_SCHEMA_MAX); - const char *upgrade_rc = crm_element_value(request, - PCMK__XA_CIB_UPGRADE_RC); + const char *max = pcmk__xe_get(request, PCMK__XA_CIB_SCHEMA_MAX); + const char *upgrade_rc = pcmk__xe_get(request, PCMK__XA_CIB_UPGRADE_RC); crm_trace("Parsing upgrade %s for %s with max=%s and upgrade_rc=%s", (is_reply? "reply" : "request"), @@ -656,7 +650,7 @@ parse_peer_options(const cib__operation_t *operation, xmlNode *request, *local_notify = pcmk__str_eq(delegated, OUR_NODENAME, pcmk__str_casei); - host = crm_element_value(request, PCMK__XA_CIB_HOST); + host = pcmk__xe_get(request, PCMK__XA_CIB_HOST); if (pcmk__str_eq(host, OUR_NODENAME, pcmk__str_casei)) { crm_trace("Processing %s request sent to us from %s", op, originator); *needs_reply = TRUE; @@ -673,10 +667,8 @@ parse_peer_options(const cib__operation_t *operation, xmlNode *request, crm_trace("Processing %s request broadcast by %s call %s on %s " "(local clients will%s be notified)", op, - pcmk__s(crm_element_value(request, PCMK__XA_CIB_CLIENTNAME), - "client"), - pcmk__s(crm_element_value(request, PCMK__XA_CIB_CALLID), - "without ID"), + pcmk__s(pcmk__xe_get(request, PCMK__XA_CIB_CLIENTNAME), "client"), + pcmk__s(pcmk__xe_get(request, PCMK__XA_CIB_CALLID), "without ID"), originator, (*local_notify? "" : "not")); return TRUE; } @@ -690,13 +682,12 @@ parse_peer_options(const cib__operation_t *operation, xmlNode *request, static void forward_request(xmlNode *request) { - const char *op = crm_element_value(request, PCMK__XA_CIB_OP); - const char *section = crm_element_value(request, PCMK__XA_CIB_SECTION); - const char *host = crm_element_value(request, PCMK__XA_CIB_HOST); - const char *originator = crm_element_value(request, PCMK__XA_SRC); - const char *client_name = crm_element_value(request, - PCMK__XA_CIB_CLIENTNAME); - const char *call_id = crm_element_value(request, PCMK__XA_CIB_CALLID); + const char *op = pcmk__xe_get(request, PCMK__XA_CIB_OP); + const char *section = pcmk__xe_get(request, PCMK__XA_CIB_SECTION); + const char *host = pcmk__xe_get(request, PCMK__XA_CIB_HOST); + const char *originator = pcmk__xe_get(request, PCMK__XA_SRC); + const char *client_name = pcmk__xe_get(request, PCMK__XA_CIB_CLIENTNAME); + const char *call_id = pcmk__xe_get(request, PCMK__XA_CIB_CALLID); pcmk__node_status_t *peer = NULL; int log_level = LOG_INFO; @@ -771,14 +762,13 @@ cib_process_request(xmlNode *request, gboolean privileged, xmlNode *result_diff = NULL; int rc = pcmk_ok; - const char *op = crm_element_value(request, PCMK__XA_CIB_OP); - const char *originator = crm_element_value(request, PCMK__XA_SRC); - const char *host = crm_element_value(request, PCMK__XA_CIB_HOST); - const char *call_id = crm_element_value(request, PCMK__XA_CIB_CALLID); - const char *client_id = crm_element_value(request, PCMK__XA_CIB_CLIENTID); - const char *client_name = crm_element_value(request, - PCMK__XA_CIB_CLIENTNAME); - const char *reply_to = crm_element_value(request, PCMK__XA_CIB_ISREPLYTO); + const char *op = pcmk__xe_get(request, PCMK__XA_CIB_OP); + const char *originator = pcmk__xe_get(request, PCMK__XA_SRC); + const char *host = pcmk__xe_get(request, PCMK__XA_CIB_HOST); + const char *call_id = pcmk__xe_get(request, PCMK__XA_CIB_CALLID); + const char *client_id = pcmk__xe_get(request, PCMK__XA_CIB_CLIENTID); + const char *client_name = pcmk__xe_get(request, PCMK__XA_CIB_CLIENTNAME); + const char *reply_to = pcmk__xe_get(request, PCMK__XA_CIB_ISREPLYTO); const cib__operation_t *operation = NULL; cib__op_fn_t op_function = NULL; @@ -870,7 +860,7 @@ cib_process_request(xmlNode *request, gboolean privileged, time_t finished = 0; time_t now = time(NULL); int level = LOG_INFO; - const char *section = crm_element_value(request, PCMK__XA_CIB_SECTION); + const char *section = pcmk__xe_get(request, PCMK__XA_CIB_SECTION); const char *admin_epoch_s = NULL; const char *epoch_s = NULL; const char *num_updates_s = NULL; @@ -900,9 +890,9 @@ cib_process_request(xmlNode *request, gboolean privileged, } if (the_cib != NULL) { - admin_epoch_s = crm_element_value(the_cib, PCMK_XA_ADMIN_EPOCH); - epoch_s = crm_element_value(the_cib, PCMK_XA_EPOCH); - num_updates_s = crm_element_value(the_cib, PCMK_XA_NUM_UPDATES); + admin_epoch_s = pcmk__xe_get(the_cib, PCMK_XA_ADMIN_EPOCH); + epoch_s = pcmk__xe_get(the_cib, PCMK_XA_EPOCH); + num_updates_s = pcmk__xe_get(the_cib, PCMK_XA_NUM_UPDATES); } do_crm_log(level, @@ -999,7 +989,7 @@ prepare_input(const xmlNode *request, enum cib__op_type type, if (type == cib__op_apply_patch) { *section = NULL; } else { - *section = crm_element_value(request, PCMK__XA_CIB_SECTION); + *section = pcmk__xe_get(request, PCMK__XA_CIB_SECTION); } // Grab the specified section @@ -1044,11 +1034,10 @@ cib_process_command(xmlNode *request, const cib__operation_t *operation, const char *op = NULL; const char *section = NULL; - const char *call_id = crm_element_value(request, PCMK__XA_CIB_CALLID); - const char *client_id = crm_element_value(request, PCMK__XA_CIB_CLIENTID); - const char *client_name = crm_element_value(request, - PCMK__XA_CIB_CLIENTNAME); - const char *originator = crm_element_value(request, PCMK__XA_SRC); + const char *call_id = pcmk__xe_get(request, PCMK__XA_CIB_CALLID); + const char *client_id = pcmk__xe_get(request, PCMK__XA_CIB_CLIENTID); + const char *client_name = pcmk__xe_get(request, PCMK__XA_CIB_CLIENTNAME); + const char *originator = pcmk__xe_get(request, PCMK__XA_SRC); int rc = pcmk_ok; @@ -1067,7 +1056,7 @@ cib_process_command(xmlNode *request, const cib__operation_t *operation, *cib_diff = NULL; /* Start processing the request... */ - op = crm_element_value(request, PCMK__XA_CIB_OP); + op = pcmk__xe_get(request, PCMK__XA_CIB_OP); rc = pcmk__xe_get_flags(request, PCMK__XA_CIB_CALLOPT, &call_options, cib_none); if (rc != pcmk_rc_ok) { @@ -1134,8 +1123,8 @@ cib_process_command(xmlNode *request, const cib__operation_t *operation, } crm_trace("Activating %s->%s%s", - crm_element_value(the_cib, PCMK_XA_NUM_UPDATES), - crm_element_value(result_cib, PCMK_XA_NUM_UPDATES), + pcmk__xe_get(the_cib, PCMK_XA_NUM_UPDATES), + pcmk__xe_get(result_cib, PCMK_XA_NUM_UPDATES), (config_changed? " changed" : "")); rc = activateCibXml(result_cib, config_changed, op); @@ -1159,8 +1148,7 @@ cib_process_command(xmlNode *request, const cib__operation_t *operation, */ if ((operation->type == cib__op_commit_transact) && pcmk__str_eq(originator, OUR_NODENAME, pcmk__str_casei) - && compare_version(crm_element_value(the_cib, - PCMK_XA_CRM_FEATURE_SET), + && compare_version(pcmk__xe_get(the_cib, PCMK_XA_CRM_FEATURE_SET), "3.19.0") < 0) { sync_our_cib(request, TRUE); @@ -1182,7 +1170,7 @@ cib_process_command(xmlNode *request, const cib__operation_t *operation, } else { crm_trace("Not activating %d %d %s", rc, pcmk_is_set(call_options, cib_dryrun), - crm_element_value(result_cib, PCMK_XA_NUM_UPDATES)); + pcmk__xe_get(result_cib, PCMK_XA_NUM_UPDATES)); if (result_cib != the_cib) { pcmk__xml_free(result_cib); @@ -1216,14 +1204,14 @@ void cib_peer_callback(xmlNode * msg, void *private_data) { const char *reason = NULL; - const char *originator = crm_element_value(msg, PCMK__XA_SRC); + const char *originator = pcmk__xe_get(msg, PCMK__XA_SRC); if (pcmk__peer_cache == NULL) { reason = "membership not established"; goto bail; } - if (crm_element_value(msg, PCMK__XA_CIB_CLIENTNAME) == NULL) { + if (pcmk__xe_get(msg, PCMK__XA_CIB_CLIENTNAME) == NULL) { crm_xml_add(msg, PCMK__XA_CIB_CLIENTNAME, originator); } @@ -1233,7 +1221,7 @@ cib_peer_callback(xmlNode * msg, void *private_data) bail: if (reason) { - const char *op = crm_element_value(msg, PCMK__XA_CIB_OP); + const char *op = pcmk__xe_get(msg, PCMK__XA_CIB_OP); crm_warn("Discarding %s message from %s: %s", op, originator, reason); } diff --git a/daemons/based/based_io.c b/daemons/based/based_io.c index 3424a7f03f8..7f2a959b1da 100644 --- a/daemons/based/based_io.c +++ b/daemons/based/based_io.c @@ -241,7 +241,7 @@ readCibXmlFile(const char *dir, const char *file, gboolean discard_status) /* Do this before schema validation happens */ /* fill in some defaults */ - value = crm_element_value(root, PCMK_XA_ADMIN_EPOCH); + value = pcmk__xe_get(root, PCMK_XA_ADMIN_EPOCH); if (value == NULL) { // Not possible with schema validation enabled crm_warn("Defaulting missing " PCMK_XA_ADMIN_EPOCH " to 0, but " "cluster may get confused about which node's configuration " @@ -250,13 +250,13 @@ readCibXmlFile(const char *dir, const char *file, gboolean discard_status) } name = PCMK_XA_EPOCH; - value = crm_element_value(root, name); + value = pcmk__xe_get(root, name); if (value == NULL) { crm_xml_add_int(root, name, 0); } name = PCMK_XA_NUM_UPDATES; - value = crm_element_value(root, name); + value = pcmk__xe_get(root, name); if (value == NULL) { crm_xml_add_int(root, name, 0); } diff --git a/daemons/based/based_messages.c b/daemons/based/based_messages.c index 596ccbc4e98..85957b5ab6d 100644 --- a/daemons/based/based_messages.c +++ b/daemons/based/based_messages.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. * @@ -44,11 +44,11 @@ cib_process_shutdown_req(const char *op, int options, const char *section, xmlNo xmlNode * input, xmlNode * existing_cib, xmlNode ** result_cib, xmlNode ** answer) { - const char *host = crm_element_value(req, PCMK__XA_SRC); + const char *host = pcmk__xe_get(req, PCMK__XA_SRC); *answer = NULL; - if (crm_element_value(req, PCMK__XA_CIB_ISREPLYTO) == NULL) { + if (pcmk__xe_get(req, PCMK__XA_CIB_ISREPLYTO) == NULL) { crm_info("Peer %s is requesting to shut down", host); return pcmk_ok; } @@ -138,8 +138,8 @@ int cib_process_ping(const char *op, int options, const char *section, xmlNode * req, xmlNode * input, xmlNode * existing_cib, xmlNode ** result_cib, xmlNode ** answer) { - const char *host = crm_element_value(req, PCMK__XA_SRC); - const char *seq = crm_element_value(req, PCMK__XA_CIB_PING_ID); + const char *host = pcmk__xe_get(req, PCMK__XA_SRC); + const char *seq = pcmk__xe_get(req, PCMK__XA_CIB_PING_ID); char *digest = pcmk__digest_xml(the_cib, true); xmlNode *wrapper = NULL; @@ -173,9 +173,9 @@ cib_process_ping(const char *op, int options, const char *section, xmlNode * req crm_info("Reporting our current digest to %s: %s for %s.%s.%s", host, digest, - crm_element_value(existing_cib, PCMK_XA_ADMIN_EPOCH), - crm_element_value(existing_cib, PCMK_XA_EPOCH), - crm_element_value(existing_cib, PCMK_XA_NUM_UPDATES)); + pcmk__xe_get(existing_cib, PCMK_XA_ADMIN_EPOCH), + pcmk__xe_get(existing_cib, PCMK_XA_EPOCH), + pcmk__xe_get(existing_cib, PCMK_XA_NUM_UPDATES)); free(digest); @@ -197,7 +197,7 @@ cib_process_upgrade_server(const char *op, int options, const char *section, xml *answer = NULL; - if (crm_element_value(req, PCMK__XA_CIB_SCHEMA_MAX) != NULL) { + if (pcmk__xe_get(req, PCMK__XA_CIB_SCHEMA_MAX) != NULL) { /* The originator of an upgrade request sends it to the DC, without * PCMK__XA_CIB_SCHEMA_MAX. If an upgrade is needed, the DC * re-broadcasts the request with PCMK__XA_CIB_SCHEMA_MAX, and each node @@ -208,16 +208,15 @@ cib_process_upgrade_server(const char *op, int options, const char *section, xml } else { xmlNode *scratch = pcmk__xml_copy(NULL, existing_cib); - const char *host = crm_element_value(req, PCMK__XA_SRC); + const char *host = pcmk__xe_get(req, PCMK__XA_SRC); const char *original_schema = NULL; const char *new_schema = NULL; - const char *client_id = crm_element_value(req, PCMK__XA_CIB_CLIENTID); - const char *call_opts = crm_element_value(req, PCMK__XA_CIB_CALLOPT); - const char *call_id = crm_element_value(req, PCMK__XA_CIB_CALLID); + const char *client_id = pcmk__xe_get(req, PCMK__XA_CIB_CLIENTID); + const char *call_opts = pcmk__xe_get(req, PCMK__XA_CIB_CALLOPT); + const char *call_id = pcmk__xe_get(req, PCMK__XA_CIB_CALLID); crm_trace("Processing \"%s\" event", op); - original_schema = crm_element_value(existing_cib, - PCMK_XA_VALIDATE_WITH); + original_schema = pcmk__xe_get(existing_cib, PCMK_XA_VALIDATE_WITH); if (original_schema == NULL) { crm_info("Rejecting upgrade request from %s: No " PCMK_XA_VALIDATE_WITH, host); @@ -226,7 +225,7 @@ cib_process_upgrade_server(const char *op, int options, const char *section, xml rc = pcmk__update_schema(&scratch, NULL, true, true); rc = pcmk_rc2legacy(rc); - new_schema = crm_element_value(scratch, PCMK_XA_VALIDATE_WITH); + new_schema = pcmk__xe_get(scratch, PCMK_XA_VALIDATE_WITH); if (pcmk__cmp_schemas_by_name(new_schema, original_schema) > 0) { xmlNode *up = pcmk__xe_create(NULL, __func__); @@ -395,7 +394,7 @@ cib_msg_copy(xmlNode *msg) for (int lpc = 0; lpc < PCMK__NELEM(field_list); lpc++) { const char *field = field_list[lpc]; - const char *value = crm_element_value(msg, field); + const char *value = pcmk__xe_get(msg, field); if (value != NULL) { crm_xml_add(copy, field, value); @@ -410,8 +409,8 @@ sync_our_cib(xmlNode * request, gboolean all) { int result = pcmk_ok; char *digest = NULL; - const char *host = crm_element_value(request, PCMK__XA_SRC); - const char *op = crm_element_value(request, PCMK__XA_CIB_OP); + const char *host = pcmk__xe_get(request, PCMK__XA_SRC); + const char *op = pcmk__xe_get(request, PCMK__XA_CIB_OP); pcmk__node_status_t *peer = NULL; xmlNode *replace_request = NULL; xmlNode *wrapper = NULL; @@ -466,8 +465,8 @@ cib_process_commit_transaction(const char *op, int options, const char *section, * On failure, our caller will free *result_cib. */ int rc = pcmk_rc_ok; - const char *client_id = crm_element_value(req, PCMK__XA_CIB_CLIENTID); - const char *origin = crm_element_value(req, PCMK__XA_SRC); + const char *client_id = pcmk__xe_get(req, PCMK__XA_CIB_CLIENTID); + const char *origin = pcmk__xe_get(req, PCMK__XA_SRC); pcmk__client_t *client = pcmk__find_client_by_id(client_id); rc = based_commit_transaction(input, client, origin, result_cib); @@ -503,7 +502,7 @@ cib_process_schemas(const char *op, int options, const char *section, xmlNode *r return -EPROTO; } - after_ver = crm_element_value(data, PCMK_XA_VERSION); + after_ver = pcmk__xe_get(data, PCMK_XA_VERSION); if (after_ver == NULL) { crm_warn("No version specified in request"); return -EPROTO; diff --git a/daemons/based/based_notify.c b/daemons/based/based_notify.c index 04b8ae48438..93248a08ccc 100644 --- a/daemons/based/based_notify.c +++ b/daemons/based/based_notify.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. * @@ -52,7 +52,7 @@ cib_notify_send_one(gpointer key, gpointer value, gpointer user_data) return; } - type = crm_element_value(update->msg, PCMK__XA_SUBT); + type = pcmk__xe_get(update->msg, PCMK__XA_SUBT); CRM_LOG_ASSERT(type != NULL); if (pcmk_is_set(client->flags, cib_notify_diff) diff --git a/daemons/based/based_remote.c b/daemons/based/based_remote.c index ea7378919bc..386acbf6717 100644 --- a/daemons/based/based_remote.c +++ b/daemons/based/based_remote.c @@ -205,7 +205,7 @@ cib_remote_auth(xmlNode * login) return FALSE; } - tmp = crm_element_value(login, PCMK_XA_OP); + tmp = pcmk__xe_get(login, PCMK_XA_OP); if (!pcmk__str_eq(tmp, "authenticate", pcmk__str_casei)) { crm_warn("Rejecting remote client: Unrecognizable message " "(operation '%s' not 'authenticate')", tmp); @@ -213,8 +213,8 @@ cib_remote_auth(xmlNode * login) return FALSE; } - user = crm_element_value(login, PCMK_XA_USER); - pass = crm_element_value(login, PCMK__XA_PASSWORD); + user = pcmk__xe_get(login, PCMK_XA_USER); + pass = pcmk__xe_get(login, PCMK__XA_PASSWORD); if (!user || !pass) { crm_warn("Rejecting remote client: No %s given", ((user == NULL)? "username" : "password")); @@ -390,7 +390,7 @@ cib_handle_remote_msg(pcmk__client_t *client, xmlNode *command) crm_xml_add(command, PCMK__XA_CIB_CLIENTNAME, client->name); crm_xml_add(command, PCMK__XA_CIB_USER, client->user); - if (crm_element_value(command, PCMK__XA_CIB_CALLID) == NULL) { + if (pcmk__xe_get(command, PCMK__XA_CIB_CALLID) == NULL) { char *call_uuid = crm_generate_uuid(); /* fix the command */ @@ -398,7 +398,7 @@ cib_handle_remote_msg(pcmk__client_t *client, xmlNode *command) free(call_uuid); } - if (crm_element_value(command, PCMK__XA_CIB_CALLOPT) == NULL) { + if (pcmk__xe_get(command, PCMK__XA_CIB_CALLOPT) == NULL) { crm_xml_add_int(command, PCMK__XA_CIB_CALLOPT, 0); } @@ -482,7 +482,7 @@ cib_remote_msg(gpointer data) client->remote->auth_timeout = 0; client->name = crm_element_value_copy(command, PCMK_XA_NAME); - user = crm_element_value(command, PCMK_XA_USER); + user = pcmk__xe_get(command, PCMK_XA_USER); if (user) { client->user = pcmk__str_copy(user); } diff --git a/daemons/based/based_transaction.c b/daemons/based/based_transaction.c index 93c09b6797b..7809ea3f181 100644 --- a/daemons/based/based_transaction.c +++ b/daemons/based/based_transaction.c @@ -1,5 +1,5 @@ /* - * Copyright 2023-2024 the Pacemaker project contributors + * Copyright 2023-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -61,8 +61,8 @@ process_transaction_requests(xmlNodePtr transaction, request != NULL; request = pcmk__xe_next(request, PCMK__XE_CIB_COMMAND)) { - const char *op = crm_element_value(request, PCMK__XA_CIB_OP); - const char *host = crm_element_value(request, PCMK__XA_CIB_HOST); + const char *op = pcmk__xe_get(request, PCMK__XA_CIB_OP); + const char *host = pcmk__xe_get(request, PCMK__XA_CIB_HOST); const cib__operation_t *operation = NULL; int rc = cib__get_operation(op, &operation); diff --git a/daemons/based/pacemaker-based.c b/daemons/based/pacemaker-based.c index fad865a920d..5abe62f84b1 100644 --- a/daemons/based/pacemaker-based.c +++ b/daemons/based/pacemaker-based.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. * @@ -422,13 +422,12 @@ startCib(const char *filename) cib_read_config(config_hash, cib); - pcmk__scan_port(crm_element_value(cib, PCMK_XA_REMOTE_TLS_PORT), &port); + pcmk__scan_port(pcmk__xe_get(cib, PCMK_XA_REMOTE_TLS_PORT), &port); if (port >= 0) { remote_tls_fd = init_remote_listener(port, TRUE); } - pcmk__scan_port(crm_element_value(cib, PCMK_XA_REMOTE_CLEAR_PORT), - &port); + pcmk__scan_port(pcmk__xe_get(cib, PCMK_XA_REMOTE_CLEAR_PORT), &port); if (port >= 0) { remote_fd = init_remote_listener(port, FALSE); } diff --git a/daemons/controld/controld_callbacks.c b/daemons/controld/controld_callbacks.c index fd70d85dcc1..b87e00e5788 100644 --- a/daemons/controld/controld_callbacks.c +++ b/daemons/controld/controld_callbacks.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. * @@ -30,14 +30,14 @@ void crmd_ha_msg_filter(xmlNode * msg) { if (AM_I_DC) { - const char *sys_from = crm_element_value(msg, PCMK__XA_CRM_SYS_FROM); + const char *sys_from = pcmk__xe_get(msg, PCMK__XA_CRM_SYS_FROM); if (pcmk__str_eq(sys_from, CRM_SYSTEM_DC, pcmk__str_casei)) { - const char *from = crm_element_value(msg, PCMK__XA_SRC); + const char *from = pcmk__xe_get(msg, PCMK__XA_SRC); if (!controld_is_local_node(from)) { int level = LOG_INFO; - const char *op = crm_element_value(msg, PCMK__XA_CRM_TASK); + const char *op = pcmk__xe_get(msg, PCMK__XA_CRM_TASK); /* make sure the election happens NOW */ if (controld_globals.fsa_state != S_ELECTION) { @@ -55,7 +55,7 @@ crmd_ha_msg_filter(xmlNode * msg) } } else { - const char *sys_to = crm_element_value(msg, PCMK__XA_CRM_SYS_TO); + const char *sys_to = pcmk__xe_get(msg, PCMK__XA_CRM_SYS_TO); if (pcmk__str_eq(sys_to, CRM_SYSTEM_DC, pcmk__str_casei)) { return; @@ -278,7 +278,7 @@ peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, } if (down) { - const char *task = crm_element_value(down->xml, PCMK_XA_OPERATION); + const char *task = pcmk__xe_get(down->xml, PCMK_XA_OPERATION); if (pcmk__str_eq(task, PCMK_ACTION_STONITH, pcmk__str_casei)) { const bool confirmed = diff --git a/daemons/controld/controld_cib.c b/daemons/controld/controld_cib.c index 122e5d81446..a53c2344700 100644 --- a/daemons/controld/controld_cib.c +++ b/daemons/controld/controld_cib.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. * @@ -69,7 +69,7 @@ do_cib_updated(const char *event, xmlNode * msg) return; } - client_name = crm_element_value(msg, PCMK__XA_CIB_CLIENTNAME); + client_name = pcmk__xe_get(msg, PCMK__XA_CIB_CLIENTNAME); if (!cib__client_triggers_refresh(client_name)) { // The CIB is still accurate return; @@ -83,7 +83,7 @@ do_cib_updated(const char *event, xmlNode * msg) * process again so we get everyone's current resource history. */ if (client_name == NULL) { - client_name = crm_element_value(msg, PCMK__XA_CIB_CLIENTID); + client_name = pcmk__xe_get(msg, PCMK__XA_CIB_CLIENTID); } crm_notice("Populating nodes and starting an election after %s event " "triggered by %s", diff --git a/daemons/controld/controld_execd.c b/daemons/controld/controld_execd.c index 5fa73221c7d..99875b0a47f 100644 --- a/daemons/controld/controld_execd.c +++ b/daemons/controld/controld_execd.c @@ -664,8 +664,8 @@ static void notify_deleted(lrm_state_t * lrm_state, ha_msg_input_t * input, const char *rsc_id, int rc) { lrmd_event_data_t *op = NULL; - const char *from_sys = crm_element_value(input->msg, PCMK__XA_CRM_SYS_FROM); - const char *from_host = crm_element_value(input->msg, PCMK__XA_SRC); + const char *from_sys = pcmk__xe_get(input->msg, PCMK__XA_CRM_SYS_FROM); + const char *from_host = pcmk__xe_get(input->msg, PCMK__XA_SRC); crm_info("Notifying %s on %s that %s was%s deleted", from_sys, (from_host? from_host : "localhost"), rsc_id, @@ -924,7 +924,7 @@ get_lrm_resource(lrm_state_t *lrm_state, const xmlNode *rsc_xml, // If resource isn't known by ID, try clone name, if provided if (!*rsc_info) { - const char *long_id = crm_element_value(rsc_xml, PCMK__XA_LONG_ID); + const char *long_id = pcmk__xe_get(rsc_xml, PCMK__XA_LONG_ID); if (long_id) { *rsc_info = lrm_state_get_rsc_info(lrm_state, long_id, 0); @@ -932,9 +932,9 @@ get_lrm_resource(lrm_state_t *lrm_state, const xmlNode *rsc_xml, } if ((*rsc_info == NULL) && do_create) { - const char *class = crm_element_value(rsc_xml, PCMK_XA_CLASS); - const char *provider = crm_element_value(rsc_xml, PCMK_XA_PROVIDER); - const char *type = crm_element_value(rsc_xml, PCMK_XA_TYPE); + const char *class = pcmk__xe_get(rsc_xml, PCMK_XA_CLASS); + const char *provider = pcmk__xe_get(rsc_xml, PCMK_XA_PROVIDER); + const char *type = pcmk__xe_get(rsc_xml, PCMK_XA_TYPE); int rc; crm_trace("Registering resource %s with the executor", id); @@ -1097,16 +1097,15 @@ synthesize_lrmd_failure(lrm_state_t *lrm_state, const xmlNode *action, const char *exit_reason) { lrmd_event_data_t *op = NULL; - const char *operation = crm_element_value(action, PCMK_XA_OPERATION); - const char *target_node = crm_element_value(action, PCMK__META_ON_NODE); + const char *operation = pcmk__xe_get(action, PCMK_XA_OPERATION); + const char *target_node = pcmk__xe_get(action, PCMK__META_ON_NODE); xmlNode *xml_rsc = pcmk__xe_first_child(action, PCMK_XE_PRIMITIVE, NULL, NULL); if ((xml_rsc == NULL) || (pcmk__xe_id(xml_rsc) == NULL)) { /* @TODO Should we do something else, like direct ack? */ crm_info("Can't fake %s failure (%d) on %s without resource configuration", - crm_element_value(action, PCMK__XA_OPERATION_KEY), rc, - target_node); + pcmk__xe_get(action, PCMK__XA_OPERATION_KEY), rc, target_node); return; } else if(operation == NULL) { @@ -1148,7 +1147,7 @@ lrm_op_target(const xmlNode *xml) const char *target = NULL; if (xml) { - target = crm_element_value(xml, PCMK__META_ON_NODE); + target = pcmk__xe_get(xml, PCMK__META_ON_NODE); } if (target == NULL) { target = controld_globals.cluster->priv->node_name; @@ -1250,7 +1249,7 @@ static bool do_lrm_cancel(ha_msg_input_t *input, lrm_state_t *lrm_state, CRM_CHECK(params != NULL, return FALSE); meta_key = crm_meta_name(PCMK_XA_OPERATION); - op_task = crm_element_value(params, meta_key); + op_task = pcmk__xe_get(params, meta_key); free(meta_key); CRM_CHECK(op_task != NULL, return FALSE); @@ -1264,7 +1263,7 @@ static bool do_lrm_cancel(ha_msg_input_t *input, lrm_state_t *lrm_state, op_key = pcmk__op_key(rsc->id, op_task, interval_ms); meta_key = crm_meta_name(PCMK__XA_CALL_ID); - call_id = crm_element_value(params, meta_key); + call_id = pcmk__xe_get(params, meta_key); free(meta_key); crm_debug("Scheduler requested op %s (call=%s) be cancelled", @@ -1419,10 +1418,10 @@ do_lrm_invoke(long long action, pcmk__assert(lrm_state != NULL); user_name = pcmk__update_acl_user(input->msg, PCMK__XA_CRM_USER, NULL); - crm_op = crm_element_value(input->msg, PCMK__XA_CRM_TASK); - from_sys = crm_element_value(input->msg, PCMK__XA_CRM_SYS_FROM); + crm_op = pcmk__xe_get(input->msg, PCMK__XA_CRM_TASK); + from_sys = pcmk__xe_get(input->msg, PCMK__XA_CRM_SYS_FROM); if (!pcmk__str_eq(from_sys, CRM_SYSTEM_TENGINE, pcmk__str_none)) { - from_host = crm_element_value(input->msg, PCMK__XA_SRC); + from_host = pcmk__xe_get(input->msg, PCMK__XA_SRC); } if (pcmk__str_eq(crm_op, PCMK_ACTION_LRM_DELETE, pcmk__str_none)) { @@ -1432,7 +1431,7 @@ do_lrm_invoke(long long action, operation = PCMK_ACTION_DELETE; } else if (input->xml != NULL) { - operation = crm_element_value(input->xml, PCMK_XA_OPERATION); + operation = pcmk__xe_get(input->xml, PCMK_XA_OPERATION); } CRM_CHECK(!pcmk__str_empty(crm_op) || !pcmk__str_empty(operation), return); @@ -1452,7 +1451,7 @@ do_lrm_invoke(long long action, if (input->xml != NULL) { // For CRM_OP_REPROBE, a NULL target means we're targeting all nodes - raw_target = crm_element_value(input->xml, PCMK__META_ON_NODE); + raw_target = pcmk__xe_get(input->xml, PCMK__META_ON_NODE); } handle_reprobe_op(lrm_state, input->msg, from_sys, from_host, user_name, is_remote_node, (raw_target == NULL)); @@ -1628,7 +1627,7 @@ construct_op(const lrm_state_t *lrm_state, const xmlNode *rsc_op, /* Use pcmk_monitor_timeout instead of meta timeout for stonith recurring monitor, if set */ primitive = pcmk__xe_first_child(rsc_op, PCMK_XE_PRIMITIVE, NULL, NULL); - class = crm_element_value(primitive, PCMK_XA_CLASS); + class = pcmk__xe_get(primitive, PCMK_XA_CLASS); if (pcmk_is_set(pcmk_get_ra_caps(class), pcmk_ra_cap_fence_params) && pcmk__str_eq(operation, PCMK_ACTION_MONITOR, pcmk__str_casei) @@ -1676,7 +1675,7 @@ construct_op(const lrm_state_t *lrm_state, const xmlNode *rsc_op, op->start_delay = 0; } - transition = crm_element_value(rsc_op, PCMK__XA_TRANSITION_KEY); + transition = pcmk__xe_get(rsc_op, PCMK__XA_TRANSITION_KEY); CRM_CHECK(transition != NULL, return op); op->user_data = pcmk__str_copy(transition); @@ -1755,7 +1754,7 @@ controld_ack_event_directly(const char *to_host, const char *to_sys, crm_debug("ACK'ing resource op " PCMK__OP_FMT " from %s: %s", op->rsc_id, op->op_type, op->interval_ms, op->user_data, - crm_element_value(reply, PCMK_XA_REFERENCE)); + pcmk__xe_get(reply, PCMK_XA_REFERENCE)); if (relay_message(reply, TRUE) == FALSE) { crm_log_xml_err(reply, "Unable to route reply"); @@ -1900,10 +1899,10 @@ do_lrm_rsc_op(lrm_state_t *lrm_state, lrmd_rsc_info_t *rsc, xmlNode *msg, CRM_CHECK((rsc != NULL) && (msg != NULL), return); - operation = crm_element_value(msg, PCMK_XA_OPERATION); + operation = pcmk__xe_get(msg, PCMK_XA_OPERATION); CRM_CHECK(!pcmk__str_empty(operation), return); - transition = crm_element_value(msg, PCMK__XA_TRANSITION_KEY); + transition = pcmk__xe_get(msg, PCMK__XA_TRANSITION_KEY); if (pcmk__str_empty(transition)) { crm_log_xml_err(msg, "Missing transition number"); } @@ -2212,9 +2211,9 @@ process_lrm_event(lrm_state_t *lrm_state, lrmd_event_data_t *op, xmlNode *xml = pcmk__xe_first_child(action_xml, PCMK_XE_PRIMITIVE, NULL, NULL); - const char *standard = crm_element_value(xml, PCMK_XA_CLASS); - const char *provider = crm_element_value(xml, PCMK_XA_PROVIDER); - const char *type = crm_element_value(xml, PCMK_XA_TYPE); + const char *standard = pcmk__xe_get(xml, PCMK_XA_CLASS); + const char *provider = pcmk__xe_get(xml, PCMK_XA_PROVIDER); + const char *type = pcmk__xe_get(xml, PCMK_XA_TYPE); if (standard && type) { crm_info("%s agent information not cached, using %s%s%s:%s from action XML", @@ -2231,7 +2230,7 @@ process_lrm_event(lrm_state_t *lrm_state, lrmd_event_data_t *op, if (lrm_state) { node_name = lrm_state->node_name; } else if (action_xml) { - node_name = crm_element_value(action_xml, PCMK__META_ON_NODE); + node_name = pcmk__xe_get(action_xml, PCMK__META_ON_NODE); } if(pending == NULL) { diff --git a/daemons/controld/controld_execd_state.c b/daemons/controld/controld_execd_state.c index 3e8736bc7d3..78c0c4b5700 100644 --- a/daemons/controld/controld_execd_state.c +++ b/daemons/controld/controld_execd_state.c @@ -495,12 +495,12 @@ static void crmd_remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg) { lrm_state_t *lrm_state = userdata; - const char *session = crm_element_value(msg, PCMK__XA_LRMD_IPC_SESSION); + const char *session = pcmk__xe_get(msg, PCMK__XA_LRMD_IPC_SESSION); remote_proxy_t *proxy = g_hash_table_lookup(proxy_table, session); - const char *op = crm_element_value(msg, PCMK__XA_LRMD_IPC_OP); + const char *op = pcmk__xe_get(msg, PCMK__XA_LRMD_IPC_OP); if (pcmk__str_eq(op, LRMD_IPC_OP_NEW, pcmk__str_casei)) { - const char *channel = crm_element_value(msg, PCMK__XA_LRMD_IPC_SERVER); + const char *channel = pcmk__xe_get(msg, PCMK__XA_LRMD_IPC_SERVER); proxy = crmd_remote_proxy_new(lrmd, lrm_state->node_name, session, channel); if (!remote_ra_controlling_guest(lrm_state)) { @@ -567,13 +567,13 @@ crmd_remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg) * the name, so we don't return info for ourselves instead of the * Pacemaker Remote node. */ - if (pcmk__str_eq(crm_element_value(request, PCMK__XA_CRM_TASK), + if (pcmk__str_eq(pcmk__xe_get(request, PCMK__XA_CRM_TASK), CRM_OP_NODE_INFO, pcmk__str_none)) { int node_id = 0; pcmk__xe_get_int(request, PCMK_XA_ID, &node_id); if ((node_id <= 0) - && (crm_element_value(request, PCMK_XA_UNAME) == NULL)) { + && (pcmk__xe_get(request, PCMK_XA_UNAME) == NULL)) { crm_xml_add(request, PCMK_XA_UNAME, lrm_state->node_name); } } diff --git a/daemons/controld/controld_fencing.c b/daemons/controld/controld_fencing.c index 49d1142cb36..33a02267f3b 100644 --- a/daemons/controld/controld_fencing.c +++ b/daemons/controld/controld_fencing.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. * @@ -421,7 +421,7 @@ fail_incompletable_stonith(pcmk__graph_t *graph) continue; } - task = crm_element_value(action->xml, PCMK_XA_OPERATION); + task = pcmk__xe_get(action->xml, PCMK_XA_OPERATION); if (pcmk__str_eq(task, PCMK_ACTION_STONITH, pcmk__str_casei)) { pcmk__set_graph_action_flags(action, pcmk__graph_action_failed); last_action = action->xml; @@ -827,7 +827,7 @@ tengine_stonith_callback(stonith_t *stonith, stonith_callback_data_t *data) goto bail; } - target = crm_element_value(action->xml, PCMK__META_ON_NODE); + target = pcmk__xe_get(action->xml, PCMK__META_ON_NODE); if (target == NULL) { crm_err("Ignoring fence operation %d result: No target given (bug?)", data->call_id); @@ -836,8 +836,7 @@ tengine_stonith_callback(stonith_t *stonith, stonith_callback_data_t *data) stop_te_timer(action); if (stonith__exit_status(data) == CRM_EX_OK) { - const char *uuid = crm_element_value(action->xml, - PCMK__META_ON_NODE_UUID); + const char *uuid = pcmk__xe_get(action->xml, PCMK__META_ON_NODE_UUID); const char *op = crm_meta_value(action->params, PCMK__META_STONITH_ACTION); @@ -954,8 +953,8 @@ controld_execute_fence_action(pcmk__graph_t *graph, { int rc = 0; const char *id = pcmk__xe_id(action->xml); - const char *uuid = crm_element_value(action->xml, PCMK__META_ON_NODE_UUID); - const char *target = crm_element_value(action->xml, PCMK__META_ON_NODE); + const char *uuid = pcmk__xe_get(action->xml, PCMK__META_ON_NODE_UUID); + const char *target = pcmk__xe_get(action->xml, PCMK__META_ON_NODE); const char *type = crm_meta_value(action->params, PCMK__META_STONITH_ACTION); char *transition_key = NULL; diff --git a/daemons/controld/controld_join_client.c b/daemons/controld/controld_join_client.c index 468250a2d4e..91f9b11113f 100644 --- a/daemons/controld/controld_join_client.c +++ b/daemons/controld/controld_join_client.c @@ -114,10 +114,10 @@ do_cl_join_offer_respond(long long action, CRM_CHECK(input != NULL, return); - welcome_from = crm_element_value(input->msg, PCMK__XA_SRC); - join_id = crm_element_value(input->msg, PCMK__XA_JOIN_ID); + welcome_from = pcmk__xe_get(input->msg, PCMK__XA_SRC); + join_id = pcmk__xe_get(input->msg, PCMK__XA_JOIN_ID); crm_trace("Accepting cluster join offer from node %s " QB_XS " join-%s", - welcome_from, crm_element_value(input->msg, PCMK__XA_JOIN_ID)); + welcome_from, pcmk__xe_get(input->msg, PCMK__XA_JOIN_ID)); /* we only ever want the last one */ if (query_call_id > 0) { @@ -228,9 +228,9 @@ set_join_state(const char *start_state, const char *node_name, const char *node_ static int update_conn_host_cache(xmlNode *node, void *userdata) { - const char *remote = crm_element_value(node, PCMK_XA_ID); - const char *conn_host = crm_element_value(node, PCMK__XA_CONNECTION_HOST); - const char *state = crm_element_value(node, PCMK__XA_NODE_STATE); + const char *remote = pcmk__xe_get(node, PCMK_XA_ID); + const char *conn_host = pcmk__xe_get(node, PCMK__XA_CONNECTION_HOST); + const char *state = pcmk__xe_get(node, PCMK__XA_NODE_STATE); pcmk__node_status_t *remote_peer = pcmk__cluster_lookup_remote_node(remote); @@ -265,8 +265,8 @@ do_cl_join_finalize_respond(long long action, const char *start_state = pcmk__env_option(PCMK__ENV_NODE_START_STATE); int join_id = -1; - const char *op = crm_element_value(input->msg, PCMK__XA_CRM_TASK); - const char *welcome_from = crm_element_value(input->msg, PCMK__XA_SRC); + const char *op = pcmk__xe_get(input->msg, PCMK__XA_CRM_TASK); + const char *welcome_from = pcmk__xe_get(input->msg, PCMK__XA_SRC); if (!pcmk__str_eq(op, CRM_OP_JOIN_ACKNAK, pcmk__str_casei)) { crm_trace("Ignoring op=%s message", op); diff --git a/daemons/controld/controld_join_dc.c b/daemons/controld/controld_join_dc.c index f3fdd2a89c4..cfeb78a8604 100644 --- a/daemons/controld/controld_join_dc.c +++ b/daemons/controld/controld_join_dc.c @@ -366,7 +366,7 @@ do_dc_join_offer_one(long long action, return; } - join_to = crm_element_value(welcome->msg, PCMK__XA_SRC); + join_to = pcmk__xe_get(welcome->msg, PCMK__XA_SRC); if (join_to == NULL) { crm_err("Can't make join-%d offer to unknown node", current_join_id); return; @@ -405,8 +405,8 @@ do_dc_join_offer_one(long long action, static int compare_int_fields(xmlNode * left, xmlNode * right, const char *field) { - const char *elem_l = crm_element_value(left, field); - const char *elem_r = crm_element_value(right, field); + const char *elem_l = pcmk__xe_get(left, field); + const char *elem_r = pcmk__xe_get(right, field); long long int_elem_l; long long int_elem_r; @@ -451,10 +451,10 @@ do_dc_join_filter_offer(long long action, gboolean ack_nack_bool = TRUE; ha_msg_input_t *join_ack = fsa_typed_data(fsa_dt_ha_msg); - const char *join_from = crm_element_value(join_ack->msg, PCMK__XA_SRC); - const char *ref = crm_element_value(join_ack->msg, PCMK_XA_REFERENCE); - const char *join_version = crm_element_value(join_ack->msg, - PCMK_XA_CRM_FEATURE_SET); + const char *join_from = pcmk__xe_get(join_ack->msg, PCMK__XA_SRC); + const char *ref = pcmk__xe_get(join_ack->msg, PCMK_XA_REFERENCE); + const char *join_version = pcmk__xe_get(join_ack->msg, + PCMK_XA_CRM_FEATURE_SET); pcmk__node_status_t *join_node = NULL; if (join_from == NULL) { @@ -537,8 +537,8 @@ do_dc_join_filter_offer(long long action, ack_nack_bool = FALSE; } else if (max_generation_xml == NULL) { - const char *validation = crm_element_value(generation, - PCMK_XA_VALIDATE_WITH); + const char *validation = pcmk__xe_get(generation, + PCMK_XA_VALIDATE_WITH); if (pcmk__get_schema(validation) == NULL) { crm_err("Rejecting join-%d request from %s (with first CIB " @@ -558,8 +558,8 @@ do_dc_join_filter_offer(long long action, } else if ((cmp < 0) || ((cmp == 0) && controld_is_local_node(join_from))) { - const char *validation = crm_element_value(generation, - PCMK_XA_VALIDATE_WITH); + const char *validation = pcmk__xe_get(generation, + PCMK_XA_VALIDATE_WITH); if (pcmk__get_schema(validation) == NULL) { crm_err("Rejecting join-%d request from %s (with better CIB " @@ -665,11 +665,11 @@ do_dc_join_finalize(long long action, "with schema %s and feature set %s from %s)", current_join_id, count_finalizable, pcmk__plural_s(count_finalizable), - crm_element_value(max_generation_xml, PCMK_XA_ADMIN_EPOCH), - crm_element_value(max_generation_xml, PCMK_XA_EPOCH), - crm_element_value(max_generation_xml, PCMK_XA_NUM_UPDATES), - crm_element_value(max_generation_xml, PCMK_XA_VALIDATE_WITH), - crm_element_value(max_generation_xml, PCMK_XA_CRM_FEATURE_SET), + pcmk__xe_get(max_generation_xml, PCMK_XA_ADMIN_EPOCH), + pcmk__xe_get(max_generation_xml, PCMK_XA_EPOCH), + pcmk__xe_get(max_generation_xml, PCMK_XA_NUM_UPDATES), + pcmk__xe_get(max_generation_xml, PCMK_XA_VALIDATE_WITH), + pcmk__xe_get(max_generation_xml, PCMK_XA_CRM_FEATURE_SET), sync_from); crmd_join_phase_log(LOG_DEBUG); @@ -766,7 +766,7 @@ do_dc_join_ack(long long action, int join_id = -1; ha_msg_input_t *join_ack = fsa_typed_data(fsa_dt_ha_msg); - const char *op = crm_element_value(join_ack->msg, PCMK__XA_CRM_TASK); + const char *op = pcmk__xe_get(join_ack->msg, PCMK__XA_CRM_TASK); char *join_from = crm_element_value_copy(join_ack->msg, PCMK__XA_SRC); pcmk__node_status_t *peer = NULL; enum controld_join_phase phase = controld_join_none; diff --git a/daemons/controld/controld_membership.c b/daemons/controld/controld_membership.c index daf0c5fd439..866741d93d8 100644 --- a/daemons/controld/controld_membership.c +++ b/daemons/controld/controld_membership.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. * @@ -240,8 +240,8 @@ search_conflicting_node_callback(xmlNode * msg, int call_id, int rc, pcmk__node_status_t *node = NULL; gboolean known = FALSE; - node_uuid = crm_element_value(node_xml, PCMK_XA_ID); - node_uname = crm_element_value(node_xml, PCMK_XA_UNAME); + node_uuid = pcmk__xe_get(node_xml, PCMK_XA_ID); + node_uname = pcmk__xe_get(node_xml, PCMK_XA_UNAME); if (node_uuid == NULL || node_uname == NULL) { continue; diff --git a/daemons/controld/controld_messages.c b/daemons/controld/controld_messages.c index 2bb2014d26b..7398de55b52 100644 --- a/daemons/controld/controld_messages.c +++ b/daemons/controld/controld_messages.c @@ -347,12 +347,12 @@ relay_message(xmlNode * msg, gboolean originated_locally) CRM_CHECK(msg != NULL, return TRUE); - host_to = crm_element_value(msg, PCMK__XA_CRM_HOST_TO); - sys_to = crm_element_value(msg, PCMK__XA_CRM_SYS_TO); - sys_from = crm_element_value(msg, PCMK__XA_CRM_SYS_FROM); - type = crm_element_value(msg, PCMK__XA_T); - task = crm_element_value(msg, PCMK__XA_CRM_TASK); - ref = crm_element_value(msg, PCMK_XA_REFERENCE); + host_to = pcmk__xe_get(msg, PCMK__XA_CRM_HOST_TO); + sys_to = pcmk__xe_get(msg, PCMK__XA_CRM_SYS_TO); + sys_from = pcmk__xe_get(msg, PCMK__XA_CRM_SYS_FROM); + type = pcmk__xe_get(msg, PCMK__XA_T); + task = pcmk__xe_get(msg, PCMK__XA_CRM_TASK); + ref = pcmk__xe_get(msg, PCMK_XA_REFERENCE); broadcast = pcmk__str_empty(host_to); @@ -432,7 +432,7 @@ relay_message(xmlNode * msg, gboolean originated_locally) xmlNode *wrapper = pcmk__xe_first_child(msg, PCMK__XE_CRM_XML, NULL, NULL); xmlNode *msg_data = pcmk__xe_first_child(wrapper, NULL, NULL, NULL); - const char *mode = crm_element_value(msg_data, PCMK__XA_MODE); + const char *mode = pcmk__xe_get(msg_data, PCMK__XA_MODE); if (pcmk__str_eq(mode, PCMK__VALUE_CIB, pcmk__str_none)) { // Local delete of an offline node's resource history @@ -445,7 +445,7 @@ relay_message(xmlNode * msg, gboolean originated_locally) && (controld_globals.dc_name == NULL)) { xmlNode *reply = create_ping_reply(msg); - sys_to = crm_element_value(reply, PCMK__XA_CRM_SYS_TO); + sys_to = pcmk__xe_get(reply, PCMK__XA_CRM_SYS_TO); // Explicitly leave src empty. It indicates that dc is "not yet selected" send_msg_via_ipc(reply, sys_to, NULL); pcmk__xml_free(reply); @@ -524,7 +524,7 @@ static bool authorize_version(xmlNode *message_data, const char *field, const char *client_name, const char *ref, const char *uuid) { - const char *version = crm_element_value(message_data, field); + const char *version = pcmk__xe_get(message_data, field); long long version_num; if ((pcmk__scan_ll(version, &version_num, -1LL) != pcmk_rc_ok) @@ -561,8 +561,8 @@ controld_authorize_ipc_message(const xmlNode *client_msg, pcmk__client_t *curr_c xmlNode *wrapper = NULL; xmlNode *message_data = NULL; const char *client_name = NULL; - const char *op = crm_element_value(client_msg, PCMK__XA_CRM_TASK); - const char *ref = crm_element_value(client_msg, PCMK_XA_REFERENCE); + const char *op = pcmk__xe_get(client_msg, PCMK__XA_CRM_TASK); + const char *ref = pcmk__xe_get(client_msg, PCMK_XA_REFERENCE); const char *uuid = (curr_client? curr_client->id : proxy_session); if (uuid == NULL) { @@ -579,7 +579,7 @@ controld_authorize_ipc_message(const xmlNode *client_msg, pcmk__client_t *curr_c wrapper = pcmk__xe_first_child(client_msg, PCMK__XE_CRM_XML, NULL, NULL); message_data = pcmk__xe_first_child(wrapper, NULL, NULL, NULL); - client_name = crm_element_value(message_data, PCMK__XA_CLIENT_NAME); + client_name = pcmk__xe_get(message_data, PCMK__XA_CLIENT_NAME); if (pcmk__str_empty(client_name)) { crm_warn("IPC hello from client rejected: No client name", QB_XS " ref=%s uuid=%s", (ref? ref : "none"), uuid); @@ -617,7 +617,7 @@ handle_message(xmlNode *msg, enum crmd_fsa_cause cause) CRM_CHECK(msg != NULL, return I_NULL); - type = crm_element_value(msg, PCMK__XA_SUBT); + type = pcmk__xe_get(msg, PCMK__XA_SUBT); if (pcmk__str_eq(type, PCMK__VALUE_REQUEST, pcmk__str_none)) { return handle_request(msg, cause); } @@ -657,21 +657,21 @@ handle_failcount_op(xmlNode * stored_msg) rsc = pcmk__xe_id(xml_rsc); } if (xml_attrs) { - op = crm_element_value(xml_attrs, - CRM_META "_" PCMK__META_CLEAR_FAILURE_OP); + op = pcmk__xe_get(xml_attrs, + CRM_META "_" PCMK__META_CLEAR_FAILURE_OP); pcmk__xe_get_guint(xml_attrs, CRM_META "_" PCMK__META_CLEAR_FAILURE_INTERVAL, &interval_ms); } } - uname = crm_element_value(xml_op, PCMK__META_ON_NODE); + uname = pcmk__xe_get(xml_op, PCMK__META_ON_NODE); if ((rsc == NULL) || (uname == NULL)) { crm_log_xml_warn(stored_msg, "invalid failcount op"); return I_NULL; } - if (crm_element_value(xml_op, PCMK__XA_ROUTER_NODE)) { + if (pcmk__xe_get(xml_op, PCMK__XA_ROUTER_NODE)) { is_remote_node = TRUE; } @@ -712,7 +712,7 @@ handle_lrm_delete(xmlNode *stored_msg) * should clear the resource's history from the CIB and nothing else. This * is used to clear shutdown locks. */ - mode = crm_element_value(msg_data, PCMK__XA_MODE); + mode = pcmk__xe_get(msg_data, PCMK__XA_MODE); if (!pcmk__str_eq(mode, PCMK__VALUE_CIB, pcmk__str_none)) { // Relay to affected node crm_xml_add(stored_msg, PCMK__XA_CRM_SYS_TO, CRM_SYSTEM_LRMD); @@ -731,8 +731,8 @@ handle_lrm_delete(xmlNode *stored_msg) CRM_CHECK(rsc_xml != NULL, return I_NULL); rsc_id = pcmk__xe_id(rsc_xml); - from_sys = crm_element_value(stored_msg, PCMK__XA_CRM_SYS_FROM); - node = crm_element_value(msg_data, PCMK__META_ON_NODE); + from_sys = pcmk__xe_get(stored_msg, PCMK__XA_CRM_SYS_FROM); + node = pcmk__xe_get(msg_data, PCMK__META_ON_NODE); user_name = pcmk__update_acl_user(stored_msg, PCMK__XA_CRM_USER, NULL); crm_debug("Handling " CRM_OP_LRM_DELETE " for %s on %s locally%s%s " "(clearing CIB resource history only)", rsc_id, node, @@ -749,15 +749,13 @@ handle_lrm_delete(xmlNode *stored_msg) */ if (from_sys) { lrmd_event_data_t *op = NULL; - const char *from_host = crm_element_value(stored_msg, PCMK__XA_SRC); + const char *from_host = pcmk__xe_get(stored_msg, PCMK__XA_SRC); const char *transition; if (strcmp(from_sys, CRM_SYSTEM_TENGINE)) { - transition = crm_element_value(msg_data, - PCMK__XA_TRANSITION_KEY); + transition = pcmk__xe_get(msg_data, PCMK__XA_TRANSITION_KEY); } else { - transition = crm_element_value(stored_msg, - PCMK__XA_TRANSITION_KEY); + transition = pcmk__xe_get(stored_msg, PCMK__XA_TRANSITION_KEY); } crm_info("Notifying %s on %s that %s was%s deleted", @@ -805,7 +803,7 @@ handle_remote_state(const xmlNode *msg) remote_is_up ? PCMK_VALUE_MEMBER : PCMK__VALUE_LOST, 0); - conn_host = crm_element_value(msg, PCMK__XA_CONNECTION_HOST); + conn_host = pcmk__xe_get(msg, PCMK__XA_CONNECTION_HOST); if (conn_host) { pcmk__str_update(&remote_peer->conn_host, conn_host); } else if (remote_peer->conn_host) { @@ -833,7 +831,7 @@ create_ping_reply(const xmlNode *msg) // Build reply ping = pcmk__xe_create(NULL, PCMK__XE_PING_RESPONSE); - value = crm_element_value(msg, PCMK__XA_CRM_SYS_TO); + value = pcmk__xe_get(msg, PCMK__XA_CRM_SYS_TO); crm_xml_add(ping, PCMK__XA_CRM_SUBSYSTEM, value); // Add controller state @@ -937,7 +935,7 @@ handle_node_info_request(const xmlNode *msg) if (node_id < 0) { node_id = 0; } - value = crm_element_value(msg, PCMK_XA_UNAME); + value = pcmk__xe_get(msg, PCMK_XA_UNAME); // Default to local node if none given if ((node_id == 0) && (value == NULL)) { @@ -970,7 +968,7 @@ handle_node_info_request(const xmlNode *msg) static void verify_feature_set(xmlNode *msg) { - const char *dc_version = crm_element_value(msg, PCMK_XA_CRM_FEATURE_SET); + const char *dc_version = pcmk__xe_get(msg, PCMK_XA_CRM_FEATURE_SET); if (dc_version == NULL) { /* All we really know is that the DC feature set is older than 3.1.0, @@ -996,7 +994,7 @@ verify_feature_set(xmlNode *msg) static enum crmd_fsa_input handle_shutdown_self_ack(xmlNode *stored_msg) { - const char *host_from = crm_element_value(stored_msg, PCMK__XA_SRC); + const char *host_from = pcmk__xe_get(stored_msg, PCMK__XA_SRC); if (pcmk_is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { // The expected case -- we initiated own shutdown sequence @@ -1029,7 +1027,7 @@ handle_shutdown_self_ack(xmlNode *stored_msg) static enum crmd_fsa_input handle_shutdown_ack(xmlNode *stored_msg) { - const char *host_from = crm_element_value(stored_msg, PCMK__XA_SRC); + const char *host_from = pcmk__xe_get(stored_msg, PCMK__XA_SRC); if (host_from == NULL) { crm_warn("Ignoring shutdown request without origin specified"); @@ -1059,7 +1057,7 @@ static enum crmd_fsa_input handle_request(xmlNode *stored_msg, enum crmd_fsa_cause cause) { xmlNode *msg = NULL; - const char *op = crm_element_value(stored_msg, PCMK__XA_CRM_TASK); + const char *op = pcmk__xe_get(stored_msg, PCMK__XA_CRM_TASK); /* Optimize this for the DC - it has the most to do */ @@ -1070,7 +1068,7 @@ handle_request(xmlNode *stored_msg, enum crmd_fsa_cause cause) } if (strcmp(op, CRM_OP_SHUTDOWN_REQ) == 0) { - const char *from = crm_element_value(stored_msg, PCMK__XA_SRC); + const char *from = pcmk__xe_get(stored_msg, PCMK__XA_SRC); pcmk__node_status_t *node = pcmk__search_node_caches(0, from, NULL, pcmk__node_search_cluster_member); @@ -1145,12 +1143,12 @@ handle_request(xmlNode *stored_msg, enum crmd_fsa_cause cause) } else if (strcmp(op, CRM_OP_JOIN_OFFER) == 0) { verify_feature_set(stored_msg); crm_debug("Raising I_JOIN_OFFER: join-%s", - crm_element_value(stored_msg, PCMK__XA_JOIN_ID)); + pcmk__xe_get(stored_msg, PCMK__XA_JOIN_ID)); return I_JOIN_OFFER; } else if (strcmp(op, CRM_OP_JOIN_ACKNAK) == 0) { crm_debug("Raising I_JOIN_RESULT: join-%s", - crm_element_value(stored_msg, PCMK__XA_JOIN_ID)); + pcmk__xe_get(stored_msg, PCMK__XA_JOIN_ID)); return I_JOIN_RESULT; } else if (strcmp(op, CRM_OP_LRM_DELETE) == 0) { @@ -1176,7 +1174,7 @@ handle_request(xmlNode *stored_msg, enum crmd_fsa_cause cause) const char *name = NULL; pcmk__xe_get_int(stored_msg, PCMK_XA_ID, &id); - name = crm_element_value(stored_msg, PCMK_XA_UNAME); + name = pcmk__xe_get(stored_msg, PCMK_XA_UNAME); if(cause == C_IPC_MESSAGE) { msg = pcmk__new_request(pcmk_ipc_controld, CRM_SYSTEM_CRMD, NULL, @@ -1227,7 +1225,7 @@ handle_request(xmlNode *stored_msg, enum crmd_fsa_cause cause) static void handle_response(xmlNode *stored_msg) { - const char *op = crm_element_value(stored_msg, PCMK__XA_CRM_TASK); + const char *op = pcmk__xe_get(stored_msg, PCMK__XA_CRM_TASK); crm_log_xml_trace(stored_msg, "reply"); if (op == NULL) { @@ -1235,7 +1233,7 @@ handle_response(xmlNode *stored_msg) } else if (AM_I_DC && strcmp(op, CRM_OP_PECALC) == 0) { // Check whether scheduler answer been superseded by subsequent request - const char *msg_ref = crm_element_value(stored_msg, PCMK_XA_REFERENCE); + const char *msg_ref = pcmk__xe_get(stored_msg, PCMK_XA_REFERENCE); if (msg_ref == NULL) { crm_err("%s - Ignoring calculation with no reference", op); @@ -1256,7 +1254,7 @@ handle_response(xmlNode *stored_msg) || strcmp(op, CRM_OP_SHUTDOWN_REQ) == 0 || strcmp(op, CRM_OP_SHUTDOWN) == 0) { } else { - const char *host_from = crm_element_value(stored_msg, PCMK__XA_SRC); + const char *host_from = pcmk__xe_get(stored_msg, PCMK__XA_SRC); crm_err("Unexpected response (op=%s, src=%s) sent to the %s", op, host_from, AM_I_DC ? "DC" : "controller"); @@ -1274,7 +1272,7 @@ handle_shutdown_request(xmlNode * stored_msg) */ char *now_s = NULL; - const char *host_from = crm_element_value(stored_msg, PCMK__XA_SRC); + const char *host_from = pcmk__xe_get(stored_msg, PCMK__XA_SRC); if (host_from == NULL) { /* we're shutting down and the DC */ @@ -1302,7 +1300,7 @@ send_msg_via_ipc(xmlNode * msg, const char *sys, const char *src) client_channel = pcmk__find_client_by_id(sys); - if (crm_element_value(msg, PCMK__XA_SRC) == NULL) { + if (pcmk__xe_get(msg, PCMK__XA_SRC) == NULL) { crm_xml_add(msg, PCMK__XA_SRC, src); } diff --git a/daemons/controld/controld_metadata.c b/daemons/controld/controld_metadata.c index 748e834cc6f..e35b48bc8b3 100644 --- a/daemons/controld/controld_metadata.c +++ b/daemons/controld/controld_metadata.c @@ -1,5 +1,5 @@ /* - * Copyright 2017-2024 the Pacemaker project contributors + * Copyright 2017-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -70,7 +70,7 @@ metadata_cache_reset(GHashTable *mdc) static struct ra_param_s * ra_param_from_xml(xmlNode *param_xml) { - const char *param_name = crm_element_value(param_xml, PCMK_XA_NAME); + const char *param_name = pcmk__xe_get(param_xml, PCMK_XA_NAME); struct ra_param_s *p; p = pcmk__assert_alloc(1, sizeof(struct ra_param_s)); @@ -161,7 +161,7 @@ controld_cache_metadata(GHashTable *mdc, const lrmd_rsc_info_t *rsc, for (match = pcmk__xe_first_child(match, PCMK_XE_ACTION, NULL, NULL); match != NULL; match = pcmk__xe_next(match, PCMK_XE_ACTION)) { - const char *action_name = crm_element_value(match, PCMK_XA_NAME); + const char *action_name = pcmk__xe_get(match, PCMK_XA_NAME); if (pcmk__str_eq(action_name, PCMK_ACTION_RELOAD_AGENT, pcmk__str_none)) { @@ -183,7 +183,7 @@ controld_cache_metadata(GHashTable *mdc, const lrmd_rsc_info_t *rsc, for (match = pcmk__xe_first_child(match, PCMK_XE_PARAMETER, NULL, NULL); match != NULL; match = pcmk__xe_next(match, PCMK_XE_PARAMETER)) { - const char *param_name = crm_element_value(match, PCMK_XA_NAME); + const char *param_name = pcmk__xe_get(match, PCMK_XA_NAME); if (param_name == NULL) { crm_warn("Metadata for %s:%s:%s has parameter without a " diff --git a/daemons/controld/controld_remote_ra.c b/daemons/controld/controld_remote_ra.c index a5e63ff092f..58694a8ad20 100644 --- a/daemons/controld/controld_remote_ra.c +++ b/daemons/controld/controld_remote_ra.c @@ -1464,8 +1464,7 @@ remote_ra_process_maintenance_nodes(xmlNode *xml) int in_maint; cnt_remote++; - in_maint_s = crm_element_value(node, - PCMK__XA_NODE_IN_MAINTENANCE); + in_maint_s = pcmk__xe_get(node, PCMK__XA_NODE_IN_MAINTENANCE); pcmk__scan_min_int(in_maint_s, &in_maint, 0); remote_ra_maintenance(lrm_state, in_maint); } diff --git a/daemons/controld/controld_te_actions.c b/daemons/controld/controld_te_actions.c index fba2463d1e0..0da4757ac68 100644 --- a/daemons/controld/controld_te_actions.c +++ b/daemons/controld/controld_te_actions.c @@ -43,7 +43,7 @@ te_start_action_timer(const pcmk__graph_t *graph, pcmk__graph_action_t *action) static int execute_pseudo_action(pcmk__graph_t *graph, pcmk__graph_action_t *pseudo) { - const char *task = crm_element_value(pseudo->xml, PCMK_XA_OPERATION); + const char *task = pcmk__xe_get(pseudo->xml, PCMK_XA_OPERATION); /* send to peers as well? */ if (pcmk__str_eq(task, PCMK_ACTION_MAINTENANCE_NODES, pcmk__str_casei)) { @@ -72,7 +72,7 @@ execute_pseudo_action(pcmk__graph_t *graph, pcmk__graph_action_t *pseudo) } crm_debug("Pseudo-action %d (%s) fired and confirmed", pseudo->id, - crm_element_value(pseudo->xml, PCMK__XA_OPERATION_KEY)); + pcmk__xe_get(pseudo->xml, PCMK__XA_OPERATION_KEY)); te_action_confirmed(pseudo, graph); return pcmk_rc_ok; } @@ -117,17 +117,17 @@ execute_cluster_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) id = pcmk__xe_id(action->xml); CRM_CHECK(!pcmk__str_empty(id), return EPROTO); - task = crm_element_value(action->xml, PCMK_XA_OPERATION); + task = pcmk__xe_get(action->xml, PCMK_XA_OPERATION); CRM_CHECK(!pcmk__str_empty(task), return EPROTO); - on_node = crm_element_value(action->xml, PCMK__META_ON_NODE); + on_node = pcmk__xe_get(action->xml, PCMK__META_ON_NODE); CRM_CHECK(!pcmk__str_empty(on_node), return pcmk_rc_node_unknown); - router_node = crm_element_value(action->xml, PCMK__XA_ROUTER_NODE); + router_node = pcmk__xe_get(action->xml, PCMK__XA_ROUTER_NODE); if (router_node == NULL) { router_node = on_node; if (pcmk__str_eq(task, PCMK_ACTION_LRM_DELETE, pcmk__str_none)) { - const char *mode = crm_element_value(action->xml, PCMK__XA_MODE); + const char *mode = pcmk__xe_get(action->xml, PCMK__XA_MODE); if (pcmk__str_eq(mode, PCMK__VALUE_CIB, pcmk__str_none)) { router_node = controld_globals.cluster->priv->node_name; @@ -218,7 +218,7 @@ static lrmd_event_data_t * synthesize_timeout_event(const pcmk__graph_action_t *action, int target_rc) { lrmd_event_data_t *op = NULL; - const char *target = crm_element_value(action->xml, PCMK__META_ON_NODE); + const char *target = pcmk__xe_get(action->xml, PCMK__META_ON_NODE); const char *reason = NULL; char *dynamic_reason = NULL; @@ -228,7 +228,7 @@ synthesize_timeout_event(const pcmk__graph_action_t *action, int target_rc) } else { const char *router_node = NULL; - router_node = crm_element_value(action->xml, PCMK__XA_ROUTER_NODE); + router_node = pcmk__xe_get(action->xml, PCMK__XA_ROUTER_NODE); if (router_node == NULL) { router_node = target; } @@ -260,11 +260,10 @@ controld_record_action_event(pcmk__graph_action_t *action, int rc = pcmk_ok; const char *rsc_id = NULL; - const char *target = crm_element_value(action->xml, PCMK__META_ON_NODE); - const char *task_uuid = crm_element_value(action->xml, - PCMK__XA_OPERATION_KEY); - const char *target_uuid = crm_element_value(action->xml, - PCMK__META_ON_NODE_UUID); + const char *target = pcmk__xe_get(action->xml, PCMK__META_ON_NODE); + const char *task_uuid = pcmk__xe_get(action->xml, PCMK__XA_OPERATION_KEY); + const char *target_uuid = pcmk__xe_get(action->xml, + PCMK__META_ON_NODE_UUID); int target_rc = get_target_rc(action); @@ -299,11 +298,10 @@ controld_record_action_event(pcmk__graph_action_t *action, rsc = pcmk__xe_create(rsc, PCMK__XE_LRM_RESOURCE); crm_xml_add(rsc, PCMK_XA_ID, rsc_id); - crm_xml_add(rsc, PCMK_XA_TYPE, crm_element_value(action_rsc, PCMK_XA_TYPE)); - crm_xml_add(rsc, PCMK_XA_CLASS, - crm_element_value(action_rsc, PCMK_XA_CLASS)); + crm_xml_add(rsc, PCMK_XA_TYPE, pcmk__xe_get(action_rsc, PCMK_XA_TYPE)); + crm_xml_add(rsc, PCMK_XA_CLASS, pcmk__xe_get(action_rsc, PCMK_XA_CLASS)); crm_xml_add(rsc, PCMK_XA_PROVIDER, - crm_element_value(action_rsc, PCMK_XA_PROVIDER)); + pcmk__xe_get(action_rsc, PCMK_XA_PROVIDER)); pcmk__create_history_xml(rsc, op, CRM_FEATURE_SET, target_rc, target, __func__); @@ -322,9 +320,8 @@ controld_record_action_timeout(pcmk__graph_action_t *action) { lrmd_event_data_t *op = NULL; - const char *target = crm_element_value(action->xml, PCMK__META_ON_NODE); - const char *task_uuid = crm_element_value(action->xml, - PCMK__XA_OPERATION_KEY); + const char *target = pcmk__xe_get(action->xml, PCMK__META_ON_NODE); + const char *task_uuid = pcmk__xe_get(action->xml, PCMK__XA_OPERATION_KEY); int target_rc = get_target_rc(action); @@ -371,14 +368,14 @@ execute_rsc_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) pcmk__assert((action != NULL) && (action->xml != NULL)); pcmk__clear_graph_action_flags(action, pcmk__graph_action_executed); - on_node = crm_element_value(action->xml, PCMK__META_ON_NODE); + on_node = pcmk__xe_get(action->xml, PCMK__META_ON_NODE); CRM_CHECK(!pcmk__str_empty(on_node), return pcmk_rc_node_unknown); rsc_op = action->xml; - task = crm_element_value(rsc_op, PCMK_XA_OPERATION); - task_uuid = crm_element_value(action->xml, PCMK__XA_OPERATION_KEY); - router_node = crm_element_value(rsc_op, PCMK__XA_ROUTER_NODE); + task = pcmk__xe_get(rsc_op, PCMK_XA_OPERATION); + task_uuid = pcmk__xe_get(action->xml, PCMK__XA_OPERATION_KEY); + router_node = pcmk__xe_get(rsc_op, PCMK__XA_ROUTER_NODE); if (!router_node) { router_node = on_node; @@ -524,8 +521,8 @@ te_update_job_count_on(const char *target, int offset, bool migrate) static void te_update_job_count(pcmk__graph_action_t *action, int offset) { - const char *task = crm_element_value(action->xml, PCMK_XA_OPERATION); - const char *target = crm_element_value(action->xml, PCMK__META_ON_NODE); + const char *task = pcmk__xe_get(action->xml, PCMK_XA_OPERATION); + const char *target = pcmk__xe_get(action->xml, PCMK__META_ON_NODE); if ((action->type != pcmk__rsc_graph_action) || (target == NULL)) { /* No limit on these */ @@ -536,7 +533,7 @@ te_update_job_count(pcmk__graph_action_t *action, int offset) * on a remote node. For now, we count all actions occurring on a * remote node against the job list on the cluster node hosting * the connection resources */ - target = crm_element_value(action->xml, PCMK__XA_ROUTER_NODE); + target = pcmk__xe_get(action->xml, PCMK__XA_ROUTER_NODE); if ((target == NULL) && pcmk__strcase_any_of(task, PCMK_ACTION_MIGRATE_TO, @@ -551,7 +548,7 @@ te_update_job_count(pcmk__graph_action_t *action, int offset) te_update_job_count_on(t2, offset, TRUE); return; } else if (target == NULL) { - target = crm_element_value(action->xml, PCMK__META_ON_NODE); + target = pcmk__xe_get(action->xml, PCMK__META_ON_NODE); } te_update_job_count_on(target, offset, FALSE); @@ -573,8 +570,8 @@ allowed_on_node(const pcmk__graph_t *graph, const pcmk__graph_action_t *action, { int limit = 0; struct te_peer_s *r = NULL; - const char *task = crm_element_value(action->xml, PCMK_XA_OPERATION); - const char *id = crm_element_value(action->xml, PCMK__XA_OPERATION_KEY); + const char *task = pcmk__xe_get(action->xml, PCMK_XA_OPERATION); + const char *id = pcmk__xe_get(action->xml, PCMK__XA_OPERATION_KEY); if(target == NULL) { /* No limit on these */ @@ -625,7 +622,7 @@ static bool graph_action_allowed(pcmk__graph_t *graph, pcmk__graph_action_t *action) { const char *target = NULL; - const char *task = crm_element_value(action->xml, PCMK_XA_OPERATION); + const char *task = pcmk__xe_get(action->xml, PCMK_XA_OPERATION); if (action->type != pcmk__rsc_graph_action) { /* No limit on these */ @@ -636,7 +633,7 @@ graph_action_allowed(pcmk__graph_t *graph, pcmk__graph_action_t *action) * on a remote node. For now, we count all actions occurring on a * remote node against the job list on the cluster node hosting * the connection resources */ - target = crm_element_value(action->xml, PCMK__XA_ROUTER_NODE); + target = pcmk__xe_get(action->xml, PCMK__XA_ROUTER_NODE); if ((target == NULL) && pcmk__strcase_any_of(task, PCMK_ACTION_MIGRATE_TO, @@ -649,7 +646,7 @@ graph_action_allowed(pcmk__graph_t *graph, pcmk__graph_action_t *action) target = crm_meta_value(action->params, PCMK__META_MIGRATE_TARGET); } else if (target == NULL) { - target = crm_element_value(action->xml, PCMK__META_ON_NODE); + target = pcmk__xe_get(action->xml, PCMK__META_ON_NODE); } return allowed_on_node(graph, action, target); @@ -666,7 +663,7 @@ te_action_confirmed(pcmk__graph_action_t *action, pcmk__graph_t *graph) { if (!pcmk_is_set(action->flags, pcmk__graph_action_confirmed)) { if ((action->type == pcmk__rsc_graph_action) - && (crm_element_value(action->xml, PCMK__META_ON_NODE) != NULL)) { + && (pcmk__xe_get(action->xml, PCMK__META_ON_NODE) != NULL)) { te_update_job_count(action, -1); } pcmk__set_graph_action_flags(action, pcmk__graph_action_confirmed); diff --git a/daemons/controld/controld_te_callbacks.c b/daemons/controld/controld_te_callbacks.c index 8dd175e1582..68e6a6add6c 100644 --- a/daemons/controld/controld_te_callbacks.c +++ b/daemons/controld/controld_te_callbacks.c @@ -236,10 +236,10 @@ te_update_diff_element(xmlNode *change, void *userdata) { xmlNode *match = NULL; const char *name = NULL; - const char *xpath = crm_element_value(change, PCMK_XA_PATH); + const char *xpath = pcmk__xe_get(change, PCMK_XA_PATH); // Possible ops: create, modify, delete, move - const char *op = crm_element_value(change, PCMK_XA_OPERATION); + const char *op = pcmk__xe_get(change, PCMK_XA_OPERATION); // Ignore uninteresting updates if (op == NULL) { @@ -384,7 +384,7 @@ te_update_diff(const char *event, xmlNode * msg) return; } - op = crm_element_value(msg, PCMK__XA_CIB_OP); + op = pcmk__xe_get(msg, PCMK__XA_CIB_OP); wrapper = pcmk__xe_first_child(msg, PCMK__XE_CIB_UPDATE_RESULT, NULL, NULL); diff = pcmk__xe_first_child(wrapper, NULL, NULL, NULL); @@ -417,7 +417,7 @@ process_te_message(xmlNode * msg, xmlNode * xml_data) CRM_CHECK(msg != NULL, return); // Transition requests must specify transition engine as subsystem - value = crm_element_value(msg, PCMK__XA_CRM_SYS_TO); + value = pcmk__xe_get(msg, PCMK__XA_CRM_SYS_TO); if (pcmk__str_empty(value) || !pcmk__str_eq(value, CRM_SYSTEM_TENGINE, pcmk__str_none)) { crm_info("Received invalid transition request: subsystem '%s' not '" @@ -426,7 +426,7 @@ process_te_message(xmlNode * msg, xmlNode * xml_data) } // Only the lrm_invoke command is supported as a transition request - value = crm_element_value(msg, PCMK__XA_CRM_TASK); + value = pcmk__xe_get(msg, PCMK__XA_CRM_TASK); if (!pcmk__str_eq(value, CRM_OP_INVOKE_LRM, pcmk__str_none)) { crm_info("Received invalid transition request: command '%s' not '" CRM_OP_INVOKE_LRM "'", pcmk__s(value, "")); @@ -434,7 +434,7 @@ process_te_message(xmlNode * msg, xmlNode * xml_data) } // Transition requests must be marked as coming from the executor - value = crm_element_value(msg, PCMK__XA_CRM_SYS_FROM); + value = pcmk__xe_get(msg, PCMK__XA_CRM_SYS_FROM); if (!pcmk__str_eq(value, CRM_SYSTEM_LRMD, pcmk__str_none)) { crm_info("Received invalid transition request: from '%s' not '" CRM_SYSTEM_LRMD "'", pcmk__s(value, "")); @@ -442,8 +442,8 @@ process_te_message(xmlNode * msg, xmlNode * xml_data) } crm_debug("Processing transition request with ref='%s' origin='%s'", - pcmk__s(crm_element_value(msg, PCMK_XA_REFERENCE), ""), - pcmk__s(crm_element_value(msg, PCMK__XA_SRC), "")); + pcmk__s(pcmk__xe_get(msg, PCMK_XA_REFERENCE), ""), + pcmk__s(pcmk__xe_get(msg, PCMK__XA_SRC), "")); xpathObj = pcmk__xpath_search(xml_data->doc, "//" PCMK__XE_LRM_RSC_OP); nmatches = pcmk__xpath_num_results(xpathObj); @@ -490,9 +490,9 @@ action_timer_callback(gpointer data) stop_te_timer(action); - task = crm_element_value(action->xml, PCMK_XA_OPERATION); - on_node = crm_element_value(action->xml, PCMK__META_ON_NODE); - via_node = crm_element_value(action->xml, PCMK__XA_ROUTER_NODE); + task = pcmk__xe_get(action->xml, PCMK_XA_OPERATION); + on_node = pcmk__xe_get(action->xml, PCMK__META_ON_NODE); + via_node = pcmk__xe_get(action->xml, PCMK__XA_ROUTER_NODE); if (controld_globals.transition_graph->complete) { crm_notice("Node %s did not send %s result (via %s) within %dms " diff --git a/daemons/controld/controld_te_events.c b/daemons/controld/controld_te_events.c index c264ada86ab..129f945c505 100644 --- a/daemons/controld/controld_te_events.c +++ b/daemons/controld/controld_te_events.c @@ -111,17 +111,15 @@ fail_incompletable_actions(pcmk__graph_t *graph, const char *down_node) || pcmk_is_set(action->flags, pcmk__graph_action_confirmed)) { continue; } else if (action->type == pcmk__cluster_graph_action) { - const char *task = crm_element_value(action->xml, - PCMK_XA_OPERATION); + const char *task = pcmk__xe_get(action->xml, PCMK_XA_OPERATION); if (pcmk__str_eq(task, PCMK_ACTION_STONITH, pcmk__str_casei)) { continue; } } - target_uuid = crm_element_value(action->xml, - PCMK__META_ON_NODE_UUID); - router = crm_element_value(action->xml, PCMK__XA_ROUTER_NODE); + target_uuid = pcmk__xe_get(action->xml, PCMK__META_ON_NODE_UUID); + router = pcmk__xe_get(action->xml, PCMK__XA_ROUTER_NODE); if (router) { const pcmk__node_status_t *node = pcmk__get_node(0, router, NULL, @@ -142,13 +140,13 @@ fail_incompletable_actions(pcmk__graph_t *graph, const char *down_node) if (pcmk_is_set(synapse->flags, pcmk__synapse_executed)) { crm_notice("Action %d (%s) was pending on %s (offline)", action->id, - crm_element_value(action->xml, - PCMK__XA_OPERATION_KEY), + pcmk__xe_get(action->xml, + PCMK__XA_OPERATION_KEY), down_node); } else { crm_info("Action %d (%s) is scheduled for %s (offline)", action->id, - crm_element_value(action->xml, PCMK__XA_OPERATION_KEY), + pcmk__xe_get(action->xml, PCMK__XA_OPERATION_KEY), down_node); } } @@ -188,9 +186,9 @@ update_failcount(const xmlNode *event, const char *event_node_uuid, int rc, char *rsc_id = NULL; const char *value = NULL; - const char *id = crm_element_value(event, PCMK__XA_OPERATION_KEY); + const char *id = pcmk__xe_get(event, PCMK__XA_OPERATION_KEY); const char *on_uname = pcmk__node_name_from_uuid(event_node_uuid); - const char *origin = crm_element_value(event, PCMK_XA_CRM_DEBUG_ORIGIN); + const char *origin = pcmk__xe_get(event, PCMK_XA_CRM_DEBUG_ORIGIN); // Nothing needs to be done for success or status refresh if (rc == target_rc) { @@ -323,17 +321,17 @@ get_cancel_action(const char *id, const char *node) const char *target = NULL; pcmk__graph_action_t *action = (pcmk__graph_action_t *) gIter2->data; - task = crm_element_value(action->xml, PCMK_XA_OPERATION); + task = pcmk__xe_get(action->xml, PCMK_XA_OPERATION); if (!pcmk__str_eq(PCMK_ACTION_CANCEL, task, pcmk__str_casei)) { continue; } - task = crm_element_value(action->xml, PCMK__XA_OPERATION_KEY); + task = pcmk__xe_get(action->xml, PCMK__XA_OPERATION_KEY); if (!pcmk__str_eq(task, id, pcmk__str_casei)) { continue; } - target = crm_element_value(action->xml, PCMK__META_ON_NODE_UUID); + target = pcmk__xe_get(action->xml, PCMK__META_ON_NODE_UUID); if (node && !pcmk__str_eq(target, node, pcmk__str_casei)) { crm_trace("Wrong node %s for %s on %s", target, id, node); continue; @@ -357,8 +355,8 @@ confirm_cancel_action(const char *id, const char *node_id) if (cancel == NULL) { return FALSE; } - op_key = crm_element_value(cancel->xml, PCMK__XA_OPERATION_KEY); - node_name = crm_element_value(cancel->xml, PCMK__META_ON_NODE); + op_key = pcmk__xe_get(cancel->xml, PCMK__XA_OPERATION_KEY); + node_name = pcmk__xe_get(cancel->xml, PCMK__META_ON_NODE); stop_te_timer(cancel); te_action_confirmed(cancel, controld_globals.transition_graph); @@ -414,8 +412,7 @@ match_down_event(const char *target) if (match != NULL) { crm_debug("Shutdown action %d (%s) found for node %s", match->id, - crm_element_value(match->xml, PCMK__XA_OPERATION_KEY), - target); + pcmk__xe_get(match->xml, PCMK__XA_OPERATION_KEY), target); } else { crm_debug("No reason to expect node %s to be down", target); } @@ -444,7 +441,7 @@ process_graph_event(xmlNode *event, const char *event_node) */ - magic = crm_element_value(event, PCMK__XA_TRANSITION_KEY); + magic = pcmk__xe_get(event, PCMK__XA_TRANSITION_KEY); if (magic == NULL) { /* non-change */ return; @@ -455,7 +452,7 @@ process_graph_event(xmlNode *event, const char *event_node) return; } - id = crm_element_value(event, PCMK__XA_OPERATION_KEY); + id = pcmk__xe_get(event, PCMK__XA_OPERATION_KEY); pcmk__xe_get_int(event, PCMK__XA_RC_CODE, &rc); pcmk__xe_get_int(event, PCMK__XA_CALL_ID, &callid); @@ -567,7 +564,7 @@ process_graph_event(xmlNode *event, const char *event_node) if (id == NULL) { id = "unknown action"; } - uname = crm_element_value(event, PCMK__META_ON_NODE); + uname = pcmk__xe_get(event, PCMK__META_ON_NODE); if (uname == NULL) { uname = "unknown node"; } diff --git a/daemons/controld/controld_te_utils.c b/daemons/controld/controld_te_utils.c index 289aa21b464..3b360e91d5e 100644 --- a/daemons/controld/controld_te_utils.c +++ b/daemons/controld/controld_te_utils.c @@ -420,8 +420,8 @@ abort_transition_graph(int abort_priority, enum pcmk__graph_next abort_action, g_string_free(local_path, TRUE); } else { - const char *op = crm_element_value(change, PCMK_XA_OPERATION); - const char *path = crm_element_value(change, PCMK_XA_PATH); + const char *op = pcmk__xe_get(change, PCMK_XA_OPERATION); + const char *path = pcmk__xe_get(change, PCMK_XA_PATH); if(change == reason) { if (strcmp(op, PCMK_VALUE_CREATE) == 0) { @@ -451,22 +451,20 @@ abort_transition_graph(int abort_priority, enum pcmk__graph_next abort_action, do_crm_log(level, "Transition %d aborted by %s doing %s %s=%s: %s " QB_XS " cib=%d.%d.%d source=%s:%d path=%s complete=%s", controld_globals.transition_graph->id, - crm_element_value(reason, PCMK_XA_ID), op, - crm_element_value(reason, PCMK_XA_NAME), - crm_element_value(reason, PCMK_XA_VALUE), + pcmk__xe_get(reason, PCMK_XA_ID), op, + pcmk__xe_get(reason, PCMK_XA_NAME), + pcmk__xe_get(reason, PCMK_XA_VALUE), abort_text, add[0], add[1], add[2], fn, line, path, pcmk__btoa(controld_globals.transition_graph->complete)); } else if (pcmk__xe_is(reason, PCMK__XE_LRM_RSC_OP)) { - const char *magic = crm_element_value(reason, - PCMK__XA_TRANSITION_MAGIC); + const char *magic = pcmk__xe_get(reason, PCMK__XA_TRANSITION_MAGIC); do_crm_log(level, "Transition %d aborted by operation %s '%s' on %s: %s " QB_XS " magic=%s cib=%d.%d.%d source=%s:%d complete=%s", controld_globals.transition_graph->id, - crm_element_value(reason, PCMK__XA_OPERATION_KEY), op, - crm_element_value(reason, PCMK__META_ON_NODE), - abort_text, + pcmk__xe_get(reason, PCMK__XA_OPERATION_KEY), op, + pcmk__xe_get(reason, PCMK__META_ON_NODE), abort_text, magic, add[0], add[1], add[2], fn, line, pcmk__btoa(controld_globals.transition_graph->complete)); diff --git a/daemons/controld/controld_throttle.c b/daemons/controld/controld_throttle.c index 49400925fd4..8ef18932f9d 100644 --- a/daemons/controld/controld_throttle.c +++ b/daemons/controld/controld_throttle.c @@ -385,7 +385,7 @@ throttle_update(xmlNode *xml) int max = 0; int mode = 0; struct throttle_record_s *r = NULL; - const char *from = crm_element_value(xml, PCMK__XA_SRC); + const char *from = pcmk__xe_get(xml, PCMK__XA_SRC); pcmk__xe_get_int(xml, PCMK__XA_CRM_LIMIT_MODE, &mode); pcmk__xe_get_int(xml, PCMK__XA_CRM_LIMIT_MAX, &max); diff --git a/daemons/controld/controld_transition.c b/daemons/controld/controld_transition.c index 9f4685bbd27..711bd887091 100644 --- a/daemons/controld/controld_transition.c +++ b/daemons/controld/controld_transition.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. * @@ -125,9 +125,9 @@ do_te_invoke(long long action, } else if (action & A_TE_INVOKE) { ha_msg_input_t *input = fsa_typed_data(fsa_dt_ha_msg); xmlNode *graph_data = input->xml; - const char *ref = crm_element_value(input->msg, PCMK_XA_REFERENCE); - const char *graph_input = crm_element_value(input->msg, - PCMK__XA_CRM_TGRAPH_IN); + const char *ref = pcmk__xe_get(input->msg, PCMK_XA_REFERENCE); + const char *graph_input = pcmk__xe_get(input->msg, + PCMK__XA_CRM_TGRAPH_IN); if (graph_data == NULL) { crm_log_xml_err(input->msg, "Bad command"); diff --git a/daemons/controld/controld_utils.c b/daemons/controld/controld_utils.c index d01e3dc6dd6..5dc302d8e61 100644 --- a/daemons/controld/controld_utils.c +++ b/daemons/controld/controld_utils.c @@ -712,8 +712,8 @@ update_dc(xmlNode * msg) if (msg != NULL) { gboolean invalid = FALSE; - dc_version = crm_element_value(msg, PCMK_XA_VERSION); - welcome_from = crm_element_value(msg, PCMK__XA_SRC); + dc_version = pcmk__xe_get(msg, PCMK_XA_VERSION); + welcome_from = pcmk__xe_get(msg, PCMK__XA_SRC); CRM_CHECK(dc_version != NULL, return FALSE); CRM_CHECK(welcome_from != NULL, return FALSE); diff --git a/daemons/execd/execd_alerts.c b/daemons/execd/execd_alerts.c index cbe1651263a..9685e8d0b99 100644 --- a/daemons/execd/execd_alerts.c +++ b/daemons/execd/execd_alerts.c @@ -109,9 +109,8 @@ process_lrmd_alert_exec(pcmk__client_t *client, uint32_t id, xmlNode *request) xmlNode *alert_xml = pcmk__xpath_find_one(request->doc, "//" PCMK__XE_LRMD_ALERT, LOG_ERR); - const char *alert_id = crm_element_value(alert_xml, PCMK__XA_LRMD_ALERT_ID); - const char *alert_path = crm_element_value(alert_xml, - PCMK__XA_LRMD_ALERT_PATH); + const char *alert_id = pcmk__xe_get(alert_xml, PCMK__XA_LRMD_ALERT_ID); + const char *alert_path = pcmk__xe_get(alert_xml, PCMK__XA_LRMD_ALERT_PATH); svc_action_t *action = NULL; int alert_timeout = 0; int rc = pcmk_ok; diff --git a/daemons/execd/execd_commands.c b/daemons/execd/execd_commands.c index 690b381c24b..93bbcb4d6b6 100644 --- a/daemons/execd/execd_commands.c +++ b/daemons/execd/execd_commands.c @@ -703,8 +703,8 @@ send_generic_notify(int rc, xmlNode * request) xmlNode *rsc_xml = pcmk__xpath_find_one(request->doc, "//" PCMK__XE_LRMD_RSC, LOG_ERR); - const char *rsc_id = crm_element_value(rsc_xml, PCMK__XA_LRMD_RSC_ID); - const char *op = crm_element_value(request, PCMK__XA_LRMD_OP); + const char *rsc_id = pcmk__xe_get(rsc_xml, PCMK__XA_LRMD_RSC_ID); + const char *op = pcmk__xe_get(request, PCMK__XA_LRMD_OP); pcmk__xe_get_int(request, PCMK__XA_LRMD_CALLID, &call_id); @@ -1510,8 +1510,8 @@ process_lrmd_signon(pcmk__client_t *client, xmlNode *request, int call_id, { int rc = pcmk_ok; time_t now = time(NULL); - const char *protocol_version = - crm_element_value(request, PCMK__XA_LRMD_PROTOCOL_VERSION); + const char *protocol_version = pcmk__xe_get(request, + PCMK__XA_LRMD_PROTOCOL_VERSION); const char *start_state = pcmk__env_option(PCMK__ENV_NODE_START_STATE); if (compare_version(protocol_version, LRMD_COMPATIBLE_PROTOCOL) < 0) { @@ -1525,7 +1525,7 @@ process_lrmd_signon(pcmk__client_t *client, xmlNode *request, int call_id, if ((client->remote != NULL) && pcmk_is_set(client->flags, pcmk__client_tls_handshake_complete)) { - const char *op = crm_element_value(request, PCMK__XA_LRMD_OP); + const char *op = pcmk__xe_get(request, PCMK__XA_LRMD_OP); // This is a remote connection from a cluster node's controller ipc_proxy_add_provider(client); @@ -1595,7 +1595,7 @@ process_lrmd_get_rsc_info(xmlNode *request, int call_id) xmlNode *rsc_xml = pcmk__xpath_find_one(request->doc, "//" PCMK__XE_LRMD_RSC, LOG_ERR); - const char *rsc_id = crm_element_value(rsc_xml, PCMK__XA_LRMD_RSC_ID); + const char *rsc_id = pcmk__xe_get(rsc_xml, PCMK__XA_LRMD_RSC_ID); xmlNode *reply = NULL; lrmd_rsc_t *rsc = NULL; @@ -1628,7 +1628,7 @@ process_lrmd_rsc_unregister(pcmk__client_t *client, uint32_t id, xmlNode *rsc_xml = pcmk__xpath_find_one(request->doc, "//" PCMK__XE_LRMD_RSC, LOG_ERR); - const char *rsc_id = crm_element_value(rsc_xml, PCMK__XA_LRMD_RSC_ID); + const char *rsc_id = pcmk__xe_get(rsc_xml, PCMK__XA_LRMD_RSC_ID); if (!rsc_id) { return -ENODEV; @@ -1661,7 +1661,7 @@ process_lrmd_rsc_exec(pcmk__client_t *client, uint32_t id, xmlNode *request) xmlNode *rsc_xml = pcmk__xpath_find_one(request->doc, "//" PCMK__XE_LRMD_RSC, LOG_ERR); - const char *rsc_id = crm_element_value(rsc_xml, PCMK__XA_LRMD_RSC_ID); + const char *rsc_id = pcmk__xe_get(rsc_xml, PCMK__XA_LRMD_RSC_ID); int call_id; if (!rsc_id) { @@ -1786,8 +1786,8 @@ process_lrmd_rsc_cancel(pcmk__client_t *client, uint32_t id, xmlNode *request) xmlNode *rsc_xml = pcmk__xpath_find_one(request->doc, "//" PCMK__XE_LRMD_RSC, LOG_ERR); - const char *rsc_id = crm_element_value(rsc_xml, PCMK__XA_LRMD_RSC_ID); - const char *action = crm_element_value(rsc_xml, PCMK__XA_LRMD_RSC_ACTION); + const char *rsc_id = pcmk__xe_get(rsc_xml, PCMK__XA_LRMD_RSC_ID); + const char *action = pcmk__xe_get(rsc_xml, PCMK__XA_LRMD_RSC_ACTION); guint interval_ms = 0; pcmk__xe_get_guint(rsc_xml, PCMK__XA_LRMD_RSC_INTERVAL, &interval_ms); @@ -1831,7 +1831,7 @@ process_lrmd_get_recurring(xmlNode *request, int call_id) rsc_xml = pcmk__xe_first_child(rsc_xml, PCMK__XE_LRMD_RSC, NULL, NULL); } if (rsc_xml) { - rsc_id = crm_element_value(rsc_xml, PCMK__XA_LRMD_RSC_ID); + rsc_id = pcmk__xe_get(rsc_xml, PCMK__XA_LRMD_RSC_ID); } // If resource ID is specified, resource must exist @@ -1867,7 +1867,7 @@ process_lrmd_message(pcmk__client_t *client, uint32_t id, xmlNode *request) { int rc = pcmk_ok; int call_id = 0; - const char *op = crm_element_value(request, PCMK__XA_LRMD_OP); + const char *op = pcmk__xe_get(request, PCMK__XA_LRMD_OP); int do_reply = 0; int do_notify = 0; xmlNode *reply = NULL; @@ -1948,7 +1948,7 @@ process_lrmd_message(pcmk__client_t *client, uint32_t id, xmlNode *request) const char *timeout = NULL; CRM_LOG_ASSERT(data != NULL); - timeout = crm_element_value(data, PCMK__XA_LRMD_WATCHDOG); + timeout = pcmk__xe_get(data, PCMK__XA_LRMD_WATCHDOG); pcmk__valid_stonith_watchdog_timeout(timeout); } else { rc = -EACCES; diff --git a/daemons/execd/pacemaker-execd.c b/daemons/execd/pacemaker-execd.c index c32f6b26aa2..4b05d766c45 100644 --- a/daemons/execd/pacemaker-execd.c +++ b/daemons/execd/pacemaker-execd.c @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the Pacemaker project contributors + * Copyright 2012-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -144,8 +144,7 @@ lrmd_ipc_dispatch(qb_ipcs_connection_t * c, void *data, size_t size) */ if (!client->name) { - const char *value = crm_element_value(request, - PCMK__XA_LRMD_CLIENTNAME); + const char *value = pcmk__xe_get(request, PCMK__XA_LRMD_CLIENTNAME); if (value == NULL) { client->name = pcmk__itoa(pcmk__client_pid(c)); diff --git a/daemons/execd/remoted_proxy.c b/daemons/execd/remoted_proxy.c index 8f27b5a59e5..1f4aa28531a 100644 --- a/daemons/execd/remoted_proxy.c +++ b/daemons/execd/remoted_proxy.c @@ -153,8 +153,8 @@ cib_proxy_accept_ro(qb_ipcs_connection_t * c, uid_t uid, gid_t gid) void ipc_proxy_forward_client(pcmk__client_t *ipc_proxy, xmlNode *xml) { - const char *session = crm_element_value(xml, PCMK__XA_LRMD_IPC_SESSION); - const char *msg_type = crm_element_value(xml, PCMK__XA_LRMD_IPC_OP); + const char *session = pcmk__xe_get(xml, PCMK__XA_LRMD_IPC_SESSION); + const char *msg_type = pcmk__xe_get(xml, PCMK__XA_LRMD_IPC_OP); xmlNode *wrapper = pcmk__xe_first_child(xml, PCMK__XE_LRMD_IPC_MSG, NULL, NULL); diff --git a/daemons/execd/remoted_schemas.c b/daemons/execd/remoted_schemas.c index f56ec00e307..7e84d286b6e 100644 --- a/daemons/execd/remoted_schemas.c +++ b/daemons/execd/remoted_schemas.c @@ -91,7 +91,7 @@ write_extra_schema_file(xmlNode *xml, void *user_data) char *path = NULL; int rc; - file = crm_element_value(xml, PCMK_XA_PATH); + file = pcmk__xe_get(xml, PCMK_XA_PATH); if (file == NULL) { crm_warn("No destination path given in schema request"); return; diff --git a/daemons/fenced/fenced_cib.c b/daemons/fenced/fenced_cib.c index 8aa2fcf64f5..59e68a722e3 100644 --- a/daemons/fenced/fenced_cib.c +++ b/daemons/fenced/fenced_cib.c @@ -181,7 +181,7 @@ update_stonith_watchdog_timeout_ms(xmlNode *cib) XPATH_WATCHDOG_TIMEOUT, LOG_NEVER); if (stonith_watchdog_xml) { - value = crm_element_value(stonith_watchdog_xml, PCMK_XA_VALUE); + value = pcmk__xe_get(stonith_watchdog_xml, PCMK_XA_VALUE); } if (value) { timeout_ms = crm_get_msec(value); @@ -205,9 +205,9 @@ cib_devices_update(void) stonith_device_t *device = NULL; crm_info("Updating devices to version %s.%s.%s", - crm_element_value(local_cib, PCMK_XA_ADMIN_EPOCH), - crm_element_value(local_cib, PCMK_XA_EPOCH), - crm_element_value(local_cib, PCMK_XA_NUM_UPDATES)); + pcmk__xe_get(local_cib, PCMK_XA_ADMIN_EPOCH), + pcmk__xe_get(local_cib, PCMK_XA_EPOCH), + pcmk__xe_get(local_cib, PCMK_XA_NUM_UPDATES)); g_hash_table_iter_init(&iter, device_list); while (g_hash_table_iter_next(&iter, NULL, (void **)&device)) { @@ -252,8 +252,8 @@ update_cib_stonith_devices(const char *event, xmlNode * msg) for (xmlNode *change = pcmk__xe_first_child(patchset, NULL, NULL, NULL); change != NULL; change = pcmk__xe_next(change, NULL)) { - const char *op = crm_element_value(change, PCMK_XA_OPERATION); - const char *xpath = crm_element_value(change, PCMK_XA_PATH); + const char *op = pcmk__xe_get(change, PCMK_XA_OPERATION); + const char *xpath = pcmk__xe_get(change, PCMK_XA_PATH); const char *shortpath = NULL; if (pcmk__str_eq(op, PCMK_VALUE_MOVE, pcmk__str_null_matches) @@ -395,8 +395,8 @@ update_fencing_topology(const char *event, xmlNode *msg) for (xmlNode *change = pcmk__xe_first_child(patchset, NULL, NULL, NULL); change != NULL; change = pcmk__xe_next(change, NULL)) { - const char *op = crm_element_value(change, PCMK_XA_OPERATION); - const char *xpath = crm_element_value(change, PCMK_XA_PATH); + const char *op = pcmk__xe_get(change, PCMK_XA_OPERATION); + const char *xpath = pcmk__xe_get(change, PCMK_XA_PATH); if (op == NULL) { continue; diff --git a/daemons/fenced/fenced_commands.c b/daemons/fenced/fenced_commands.c index 8ffccf3d757..12b205e302b 100644 --- a/daemons/fenced/fenced_commands.c +++ b/daemons/fenced/fenced_commands.c @@ -955,7 +955,7 @@ read_action_metadata(stonith_device_t *device) CRM_LOG_ASSERT(match != NULL); if(match == NULL) { continue; }; - action = crm_element_value(match, PCMK_XA_NAME); + action = pcmk__xe_get(match, PCMK_XA_NAME); if (pcmk__str_eq(action, PCMK_ACTION_LIST, pcmk__str_none)) { stonith__set_device_flags(device->flags, device->id, @@ -1076,7 +1076,7 @@ build_device_from_xml(xmlNode *dev) device->include_nodeid = is_nodeid_required(device->agent_metadata); } - value = crm_element_value(dev, PCMK__XA_RSC_PROVIDES); + value = pcmk__xe_get(dev, PCMK__XA_RSC_PROVIDES); if (pcmk__str_eq(value, PCMK_VALUE_UNFENCING, pcmk__str_casei)) { device->automatic_unfencing = TRUE; } @@ -1537,8 +1537,10 @@ stonith_level_key(const xmlNode *level, enum fenced_target_by mode) case fenced_target_by_attribute: return crm_strdup_printf("%s=%s", - crm_element_value(level, PCMK_XA_TARGET_ATTRIBUTE), - crm_element_value(level, PCMK_XA_TARGET_VALUE)); + pcmk__xe_get(level, + PCMK_XA_TARGET_ATTRIBUTE), + pcmk__xe_get(level, + PCMK_XA_TARGET_VALUE)); default: return crm_strdup_printf("unknown-%s", pcmk__xe_id(level)); @@ -1556,14 +1558,14 @@ stonith_level_key(const xmlNode *level, enum fenced_target_by mode) static enum fenced_target_by unpack_level_kind(const xmlNode *level) { - if (crm_element_value(level, PCMK_XA_TARGET) != NULL) { + if (pcmk__xe_get(level, PCMK_XA_TARGET) != NULL) { return fenced_target_by_name; } - if (crm_element_value(level, PCMK_XA_TARGET_PATTERN) != NULL) { + if (pcmk__xe_get(level, PCMK_XA_TARGET_PATTERN) != NULL) { return fenced_target_by_pattern; } - if ((crm_element_value(level, PCMK_XA_TARGET_ATTRIBUTE) != NULL) - && (crm_element_value(level, PCMK_XA_TARGET_VALUE) != NULL)) { + if ((pcmk__xe_get(level, PCMK_XA_TARGET_ATTRIBUTE) != NULL) + && (pcmk__xe_get(level, PCMK_XA_TARGET_VALUE) != NULL)) { return fenced_target_by_attribute; } return fenced_target_by_unknown; @@ -1718,8 +1720,7 @@ fenced_register_level(xmlNode *msg, char **desc, pcmk__action_result_t *result) crm_log_xml_trace(level, "Bad level"); pcmk__format_result(result, CRM_EX_INVALID_PARAM, PCMK_EXEC_INVALID, "Invalid level number '%s' for topology level '%s'", - pcmk__s(crm_element_value(level, PCMK_XA_INDEX), - ""), + pcmk__s(pcmk__xe_get(level, PCMK_XA_INDEX), ""), pcmk__xe_id(level)); return; } @@ -1749,7 +1750,7 @@ fenced_register_level(xmlNode *msg, char **desc, pcmk__action_result_t *result) tp->target, id); } - devices = parse_device_list(crm_element_value(level, PCMK_XA_DEVICES)); + devices = parse_device_list(pcmk__xe_get(level, PCMK_XA_DEVICES)); for (dIter = devices; dIter; dIter = dIter->next) { const char *device = dIter->value; @@ -1805,7 +1806,7 @@ fenced_unregister_level(xmlNode *msg, char **desc, crm_log_xml_trace(level, "Bad level"); pcmk__format_result(result, CRM_EX_INVALID_PARAM, PCMK_EXEC_INVALID, "Invalid level number '%s' for topology level %s", - pcmk__s(crm_element_value(level, PCMK_XA_INDEX), + pcmk__s(pcmk__xe_get(level, PCMK_XA_INDEX), ""), // Client API doesn't add ID to unregistration XML @@ -1902,8 +1903,8 @@ execute_agent_action(xmlNode *msg, pcmk__action_result_t *result) xmlNode *op = pcmk__xpath_find_one(msg->doc, "//*[@" PCMK__XA_ST_DEVICE_ACTION "]", LOG_ERR); - const char *id = crm_element_value(dev, PCMK__XA_ST_DEVICE_ID); - const char *action = crm_element_value(op, PCMK__XA_ST_DEVICE_ACTION); + const char *id = pcmk__xe_get(dev, PCMK__XA_ST_DEVICE_ID); + const char *action = pcmk__xe_get(op, PCMK__XA_ST_DEVICE_ACTION); async_command_t *cmd = NULL; stonith_device_t *device = NULL; @@ -2866,7 +2867,7 @@ fence_locally(xmlNode *msg, pcmk__action_result_t *result) return; } - device_id = crm_element_value(dev, PCMK__XA_ST_DEVICE_ID); + device_id = pcmk__xe_get(dev, PCMK__XA_ST_DEVICE_ID); if (device_id != NULL) { device = g_hash_table_lookup(device_list, device_id); if (device == NULL) { @@ -2878,7 +2879,7 @@ fence_locally(xmlNode *msg, pcmk__action_result_t *result) schedule_stonith_command(cmd, device); } else { - const char *host = crm_element_value(dev, PCMK__XA_ST_TARGET); + const char *host = pcmk__xe_get(dev, PCMK__XA_ST_TARGET); if (pcmk_is_set(cmd->options, st_opt_cs_nodeid)) { int nodeid = 0; @@ -2955,7 +2956,7 @@ fenced_construct_reply(const xmlNode *request, xmlNode *data, for (int lpc = 0; lpc < PCMK__NELEM(names); lpc++) { name = names[lpc]; - value = crm_element_value(request, name); + value = pcmk__xe_get(request, name); crm_xml_add(reply, name, value); } if (data != NULL) { @@ -3057,12 +3058,12 @@ remove_relay_op(xmlNode * request) remote_fencing_op_t *relay_op = NULL; if (dev) { - target = crm_element_value(dev, PCMK__XA_ST_TARGET); + target = pcmk__xe_get(dev, PCMK__XA_ST_TARGET); } - relay_op_id = crm_element_value(request, PCMK__XA_ST_REMOTE_OP_RELAY); - op_id = crm_element_value(request, PCMK__XA_ST_REMOTE_OP); - client_name = crm_element_value(request, PCMK__XA_ST_CLIENTNAME); + relay_op_id = pcmk__xe_get(request, PCMK__XA_ST_REMOTE_OP_RELAY); + op_id = pcmk__xe_get(request, PCMK__XA_ST_REMOTE_OP); + client_name = pcmk__xe_get(request, PCMK__XA_ST_CLIENTNAME); /* Delete RELAY operation. */ if ((relay_op_id != NULL) && (target != NULL) @@ -3156,9 +3157,8 @@ handle_agent_request(pcmk__request_t *request) static xmlNode * handle_update_timeout_request(pcmk__request_t *request) { - const char *call_id = crm_element_value(request->xml, PCMK__XA_ST_CALLID); - const char *client_id = crm_element_value(request->xml, - PCMK__XA_ST_CLIENTID); + const char *call_id = pcmk__xe_get(request->xml, PCMK__XA_ST_CALLID); + const char *client_id = pcmk__xe_get(request->xml, PCMK__XA_ST_CLIENTID); int op_timeout = 0; pcmk__xe_get_int(request->xml, PCMK__XA_ST_TIMEOUT, &op_timeout); @@ -3175,8 +3175,7 @@ handle_query_request(pcmk__request_t *request) xmlNode *dev = NULL; const char *action = NULL; const char *target = NULL; - const char *client_id = crm_element_value(request->xml, - PCMK__XA_ST_CLIENTID); + const char *client_id = pcmk__xe_get(request->xml, PCMK__XA_ST_CLIENTID); struct st_query_data *query = NULL; if (request->peer != NULL) { @@ -3193,13 +3192,13 @@ handle_query_request(pcmk__request_t *request) "//*[@" PCMK__XA_ST_DEVICE_ACTION "]", LOG_NEVER); if (dev != NULL) { - const char *device = crm_element_value(dev, PCMK__XA_ST_DEVICE_ID); + const char *device = pcmk__xe_get(dev, PCMK__XA_ST_DEVICE_ID); if (pcmk__str_eq(device, "manual_ack", pcmk__str_casei)) { return NULL; // No query or reply necessary } - target = crm_element_value(dev, PCMK__XA_ST_TARGET); - action = crm_element_value(dev, PCMK__XA_ST_DEVICE_ACTION); + target = pcmk__xe_get(dev, PCMK__XA_ST_TARGET); + action = pcmk__xe_get(dev, PCMK__XA_ST_DEVICE_ACTION); } crm_log_xml_trace(request->xml, "Query"); @@ -3228,14 +3227,14 @@ handle_notify_request(pcmk__request_t *request) const char *flag_name = NULL; pcmk__assert(request->ipc_client != NULL); - flag_name = crm_element_value(request->xml, PCMK__XA_ST_NOTIFY_ACTIVATE); + flag_name = pcmk__xe_get(request->xml, PCMK__XA_ST_NOTIFY_ACTIVATE); if (flag_name != NULL) { crm_debug("Enabling %s callbacks for client %s", flag_name, pcmk__request_origin(request)); pcmk__set_client_flags(request->ipc_client, get_stonith_flag(flag_name)); } - flag_name = crm_element_value(request->xml, PCMK__XA_ST_NOTIFY_DEACTIVATE); + flag_name = pcmk__xe_get(request->xml, PCMK__XA_ST_NOTIFY_DEACTIVATE); if (flag_name != NULL) { crm_debug("Disabling %s callbacks for client %s", flag_name, pcmk__request_origin(request)); @@ -3262,8 +3261,8 @@ handle_relay_request(pcmk__request_t *request) "%s %s to fence (%s) peer %s", pcmk__request_origin_type(request), pcmk__request_origin(request), - crm_element_value(dev, PCMK__XA_ST_DEVICE_ACTION), - crm_element_value(dev, PCMK__XA_ST_TARGET)); + pcmk__xe_get(dev, PCMK__XA_ST_DEVICE_ACTION), + pcmk__xe_get(dev, PCMK__XA_ST_TARGET)); if (initiate_remote_stonith_op(NULL, request->xml, FALSE) == NULL) { fenced_set_protocol_error(&request->result); @@ -3302,9 +3301,9 @@ handle_fence_request(pcmk__request_t *request) xmlNode *dev = pcmk__xpath_find_one(request->xml->doc, "//*[@" PCMK__XA_ST_TARGET "]", LOG_TRACE); - const char *target = crm_element_value(dev, PCMK__XA_ST_TARGET); - const char *action = crm_element_value(dev, PCMK__XA_ST_DEVICE_ACTION); - const char *device = crm_element_value(dev, PCMK__XA_ST_DEVICE_ID); + const char *target = pcmk__xe_get(dev, PCMK__XA_ST_TARGET); + const char *action = pcmk__xe_get(dev, PCMK__XA_ST_DEVICE_ACTION); + const char *device = pcmk__xe_get(dev, PCMK__XA_ST_DEVICE_ID); if (request->ipc_client != NULL) { int tolerance = 0; @@ -3335,8 +3334,7 @@ handle_fence_request(pcmk__request_t *request) pcmk__node_search_cluster_member); if (request->ipc_client->id == 0) { - client_id = crm_element_value(request->xml, - PCMK__XA_ST_CLIENTID); + client_id = pcmk__xe_get(request->xml, PCMK__XA_ST_CLIENTID); } else { client_id = request->ipc_client->id; } @@ -3398,7 +3396,7 @@ handle_history_request(pcmk__request_t *request) static xmlNode * handle_device_add_request(pcmk__request_t *request) { - const char *op = crm_element_value(request->xml, PCMK__XA_ST_OP); + const char *op = pcmk__xe_get(request->xml, PCMK__XA_ST_OP); xmlNode *dev = pcmk__xpath_find_one(request->xml->doc, "//" PCMK__XE_ST_DEVICE_ID, LOG_ERR); @@ -3425,8 +3423,8 @@ handle_device_delete_request(pcmk__request_t *request) { xmlNode *dev = pcmk__xpath_find_one(request->xml->doc, "//" PCMK__XE_ST_DEVICE_ID, LOG_ERR); - const char *device_id = crm_element_value(dev, PCMK_XA_ID); - const char *op = crm_element_value(request->xml, PCMK__XA_ST_OP); + const char *device_id = pcmk__xe_get(dev, PCMK_XA_ID); + const char *op = pcmk__xe_get(request->xml, PCMK__XA_ST_OP); if (is_privileged(request->ipc_client, op)) { stonith_device_remove(device_id, false); @@ -3445,7 +3443,7 @@ static xmlNode * handle_level_add_request(pcmk__request_t *request) { char *desc = NULL; - const char *op = crm_element_value(request->xml, PCMK__XA_ST_OP); + const char *op = pcmk__xe_get(request->xml, PCMK__XA_ST_OP); if (is_privileged(request->ipc_client, op)) { fenced_register_level(request->xml, &desc, &request->result); @@ -3465,7 +3463,7 @@ static xmlNode * handle_level_delete_request(pcmk__request_t *request) { char *desc = NULL; - const char *op = crm_element_value(request->xml, PCMK__XA_ST_OP); + const char *op = pcmk__xe_get(request->xml, PCMK__XA_ST_OP); if (is_privileged(request->ipc_client, op)) { fenced_unregister_level(request->xml, &desc, &request->result); @@ -3488,7 +3486,7 @@ handle_cache_request(pcmk__request_t *request) const char *name = NULL; pcmk__xe_get_int(request->xml, PCMK_XA_ID, &node_id); - name = crm_element_value(request->xml, PCMK_XA_UNAME); + name = pcmk__xe_get(request->xml, PCMK_XA_UNAME); pcmk__cluster_forget_cluster_node(node_id, name); pcmk__set_result(&request->result, CRM_EX_OK, PCMK_EXEC_DONE, NULL); return NULL; @@ -3634,7 +3632,7 @@ stonith_command(pcmk__client_t *client, uint32_t id, uint32_t flags, crm_debug("Processing %ssynchronous %s %s %u from %s %s", pcmk_is_set(call_options, st_opt_sync_call)? "" : "a", - crm_element_value(message, PCMK__XA_ST_OP), + pcmk__xe_get(message, PCMK__XA_ST_OP), (is_reply? "reply" : "request"), id, ((client == NULL)? "peer" : "client"), ((client == NULL)? remote_peer : pcmk__client_name(client))); diff --git a/daemons/fenced/fenced_history.c b/daemons/fenced/fenced_history.c index f1bd6637be1..70791c9d57e 100644 --- a/daemons/fenced/fenced_history.c +++ b/daemons/fenced/fenced_history.c @@ -285,7 +285,7 @@ stonith_xml_history_to_list(const xmlNode *history) execution_status = PCMK_EXEC_UNKNOWN; } pcmk__set_result(&op->result, exit_status, execution_status, - crm_element_value(xml_op, PCMK_XA_EXIT_REASON)); + pcmk__xe_get(xml_op, PCMK_XA_EXIT_REASON)); pcmk__set_result_output(&op->result, crm_element_value_copy(xml_op, PCMK__XA_ST_OUTPUT), @@ -482,7 +482,7 @@ stonith_fence_history(xmlNode *msg, xmlNode **output, xmlNode *out_history = NULL; if (dev) { - target = crm_element_value(dev, PCMK__XA_ST_TARGET); + target = pcmk__xe_get(dev, PCMK__XA_ST_TARGET); if (target && (options & st_opt_cs_nodeid)) { int nodeid; pcmk__node_status_t *node = NULL; @@ -498,7 +498,7 @@ stonith_fence_history(xmlNode *msg, xmlNode **output, } if (options & st_opt_cleanup) { - const char *call_id = crm_element_value(msg, PCMK__XA_ST_CALLID); + const char *call_id = pcmk__xe_get(msg, PCMK__XA_ST_CALLID); crm_trace("Cleaning up operations on %s in %p", target, stonith_remote_op_list); @@ -511,7 +511,7 @@ stonith_fence_history(xmlNode *msg, xmlNode **output, */ fenced_send_notification(PCMK__VALUE_ST_NOTIFY_HISTORY_SYNCED, NULL, NULL); - if (crm_element_value(msg, PCMK__XA_ST_CALLID) != NULL) { + if (pcmk__xe_get(msg, PCMK__XA_ST_CALLID) != NULL) { /* this is coming from the stonith-API * * craft a broadcast with node's history diff --git a/daemons/fenced/fenced_remote.c b/daemons/fenced/fenced_remote.c index d34b45e5859..eaab144afa0 100644 --- a/daemons/fenced/fenced_remote.c +++ b/daemons/fenced/fenced_remote.c @@ -590,14 +590,14 @@ finalize_op(remote_fencing_op_t *op, xmlNode *data, bool dup) } } - if (dup || (crm_element_value(data, PCMK__XA_ST_OP_MERGED) != NULL)) { + if (dup || (pcmk__xe_get(data, PCMK__XA_ST_OP_MERGED) != NULL)) { op_merged = true; } /* Tell everyone the operation is done, we will continue * with doing the local notifications once we receive * the broadcast back. */ - subt = crm_element_value(data, PCMK__XA_SUBT); + subt = pcmk__xe_get(data, PCMK__XA_SUBT); if (!dup && !pcmk__str_eq(subt, PCMK__VALUE_BROADCAST, pcmk__str_none)) { /* Defer notification until the bcast message arrives */ fenced_broadcast_op_result(op, op_merged); @@ -1120,7 +1120,7 @@ fenced_handle_manual_confirmation(const pcmk__client_t *client, xmlNode *msg) CRM_CHECK(dev != NULL, return EPROTO); crm_notice("Received manual confirmation that %s has been fenced", - pcmk__s(crm_element_value(dev, PCMK__XA_ST_TARGET), + pcmk__s(pcmk__xe_get(dev, PCMK__XA_ST_TARGET), "unknown target")); op = initiate_remote_stonith_op(client, msg, TRUE); if (op == NULL) { @@ -1165,7 +1165,7 @@ create_remote_stonith_op(const char *client, xmlNode *request, gboolean peer) /* If this operation is owned by another node, check to make * sure we haven't already created this operation. */ if (peer && dev) { - const char *op_id = crm_element_value(dev, PCMK__XA_ST_REMOTE_OP); + const char *op_id = pcmk__xe_get(dev, PCMK__XA_ST_REMOTE_OP); CRM_CHECK(op_id != NULL, return NULL); @@ -1216,7 +1216,7 @@ create_remote_stonith_op(const char *client, xmlNode *request, gboolean peer) op->client_id = pcmk__str_copy(client); /* For a RELAY operation, set fenced on the client. */ - operation = crm_element_value(request, PCMK__XA_ST_OP); + operation = pcmk__xe_get(request, PCMK__XA_ST_OP); if (pcmk__str_eq(operation, STONITH_OP_RELAY, pcmk__str_none)) { op->client_name = crm_strdup_printf("%s.%lu", crm_system_name, @@ -1305,7 +1305,7 @@ initiate_remote_stonith_op(const pcmk__client_t *client, xmlNode *request, if (client) { client_id = client->id; } else { - client_id = crm_element_value(request, PCMK__XA_ST_CLIENTID); + client_id = pcmk__xe_get(request, PCMK__XA_ST_CLIENTID); } CRM_LOG_ASSERT(client_id != NULL); @@ -1355,9 +1355,9 @@ initiate_remote_stonith_op(const pcmk__client_t *client, xmlNode *request, crm_xml_add_int(query, PCMK__XA_ST_TIMEOUT, op->base_timeout); /* In case of RELAY operation, RELAY information is added to the query to delete the original operation of RELAY. */ - operation = crm_element_value(request, PCMK__XA_ST_OP); + operation = pcmk__xe_get(request, PCMK__XA_ST_OP); if (pcmk__str_eq(operation, STONITH_OP_RELAY, pcmk__str_none)) { - relay_op_id = crm_element_value(request, PCMK__XA_ST_REMOTE_OP); + relay_op_id = pcmk__xe_get(request, PCMK__XA_ST_REMOTE_OP); if (relay_op_id) { crm_xml_add(query, PCMK__XA_ST_REMOTE_OP_RELAY, relay_op_id); } @@ -1730,9 +1730,9 @@ report_timeout_period(remote_fencing_op_t * op, int op_timeout) } crm_trace("Reporting timeout for %s (id=%.8s)", op->client_name, op->id); - client_node = crm_element_value(op->request, PCMK__XA_ST_CLIENTNODE); - call_id = crm_element_value(op->request, PCMK__XA_ST_CALLID); - client_id = crm_element_value(op->request, PCMK__XA_ST_CLIENTID); + client_node = pcmk__xe_get(op->request, PCMK__XA_ST_CLIENTNODE); + call_id = pcmk__xe_get(op->request, PCMK__XA_ST_CALLID); + client_id = pcmk__xe_get(op->request, PCMK__XA_ST_CLIENTID); if (!client_node || !call_id || !client_id) { return; } @@ -2348,7 +2348,7 @@ process_remote_stonith_query(xmlNode *msg) CRM_CHECK(dev != NULL, return -EPROTO); - id = crm_element_value(dev, PCMK__XA_ST_REMOTE_OP); + id = pcmk__xe_get(dev, PCMK__XA_ST_REMOTE_OP); CRM_CHECK(id != NULL, return -EPROTO); dev = pcmk__xpath_find_one(msg->doc, @@ -2371,7 +2371,7 @@ process_remote_stonith_query(xmlNode *msg) if ((++op->replies >= replies_expected) && (op->state == st_query)) { have_all_replies = TRUE; } - host = crm_element_value(msg, PCMK__XA_SRC); + host = pcmk__xe_get(msg, PCMK__XA_SRC); host_is_target = pcmk__str_eq(host, op->target, pcmk__str_casei); crm_info("Query result %d of %d from %s for %s/%s (%d device%s) %s", @@ -2451,7 +2451,7 @@ fenced_process_fencing_reply(xmlNode *msg) CRM_CHECK(dev != NULL, return); - id = crm_element_value(dev, PCMK__XA_ST_REMOTE_OP); + id = pcmk__xe_get(dev, PCMK__XA_ST_REMOTE_OP); CRM_CHECK(id != NULL, return); dev = stonith__find_xe_with_result(msg); @@ -2459,7 +2459,7 @@ fenced_process_fencing_reply(xmlNode *msg) stonith__xe_get_result(dev, &result); - device = crm_element_value(dev, PCMK__XA_ST_DEVICE_ID); + device = pcmk__xe_get(dev, PCMK__XA_ST_DEVICE_ID); if (stonith_remote_op_list) { op = g_hash_table_lookup(stonith_remote_op_list, id); @@ -2467,7 +2467,7 @@ fenced_process_fencing_reply(xmlNode *msg) if ((op == NULL) && pcmk__result_ok(&result)) { /* Record successful fencing operations */ - const char *client_id = crm_element_value(dev, PCMK__XA_ST_CLIENTID); + const char *client_id = pcmk__xe_get(dev, PCMK__XA_ST_CLIENTID); op = create_remote_stonith_op(client_id, dev, TRUE); } @@ -2490,8 +2490,8 @@ fenced_process_fencing_reply(xmlNode *msg) return; } - if (pcmk__str_eq(crm_element_value(msg, PCMK__XA_SUBT), - PCMK__VALUE_BROADCAST, pcmk__str_none)) { + if (pcmk__str_eq(pcmk__xe_get(msg, PCMK__XA_SUBT), PCMK__VALUE_BROADCAST, + pcmk__str_none)) { if (pcmk__result_ok(&op->result)) { op->state = st_done; @@ -2522,7 +2522,7 @@ fenced_process_fencing_reply(xmlNode *msg) return; } - device = crm_element_value(msg, PCMK__XA_ST_DEVICE_ID); + device = pcmk__xe_get(msg, PCMK__XA_ST_DEVICE_ID); if ((op->phase == 2) && !pcmk__result_ok(&op->result)) { /* A remapped "on" failed, but the node was already turned off diff --git a/daemons/fenced/fenced_scheduler.c b/daemons/fenced/fenced_scheduler.c index 46d74320fcc..19f42ed65ba 100644 --- a/daemons/fenced/fenced_scheduler.c +++ b/daemons/fenced/fenced_scheduler.c @@ -208,7 +208,7 @@ register_if_fencing_device(gpointer data, gpointer user_data) crm_debug("Reloading configuration of fencing device %s", rsc->id); - agent = crm_element_value(rsc->priv->xml, PCMK_XA_TYPE); + agent = pcmk__xe_get(rsc->priv->xml, PCMK_XA_TYPE); get_meta_attributes(rsc->priv->meta, rsc, NULL, scheduler); rsc_provides = g_hash_table_lookup(rsc->priv->meta, diff --git a/daemons/fenced/pacemaker-fenced.c b/daemons/fenced/pacemaker-fenced.c index 32a3f2bf562..0aa2439fc81 100644 --- a/daemons/fenced/pacemaker-fenced.c +++ b/daemons/fenced/pacemaker-fenced.c @@ -1,5 +1,5 @@ /* - * Copyright 2009-2024 the Pacemaker project contributors + * Copyright 2009-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -107,7 +107,7 @@ st_ipc_dispatch(qb_ipcs_connection_t * qbc, void *data, size_t size) } - op = crm_element_value(request, PCMK__XA_CRM_TASK); + op = pcmk__xe_get(request, PCMK__XA_CRM_TASK); if(pcmk__str_eq(op, CRM_OP_RM_NODE_CACHE, pcmk__str_casei)) { crm_xml_add(request, PCMK__XA_T, PCMK__VALUE_STONITH_NG); crm_xml_add(request, PCMK__XA_ST_OP, op); @@ -121,7 +121,7 @@ st_ipc_dispatch(qb_ipcs_connection_t * qbc, void *data, size_t size) } if (c->name == NULL) { - const char *value = crm_element_value(request, PCMK__XA_ST_CLIENTNAME); + const char *value = pcmk__xe_get(request, PCMK__XA_ST_CLIENTNAME); c->name = crm_strdup_printf("%s.%u", pcmk__s(value, "unknown"), c->pid); } @@ -180,8 +180,8 @@ st_ipc_destroy(qb_ipcs_connection_t * c) static void stonith_peer_callback(xmlNode * msg, void *private_data) { - const char *remote_peer = crm_element_value(msg, PCMK__XA_SRC); - const char *op = crm_element_value(msg, PCMK__XA_ST_OP); + const char *remote_peer = pcmk__xe_get(msg, PCMK__XA_SRC); + const char *op = pcmk__xe_get(msg, PCMK__XA_ST_OP); if (pcmk__str_eq(op, STONITH_OP_POKE, pcmk__str_none)) { return; @@ -287,7 +287,7 @@ stonith_notify_client(gpointer key, gpointer value, gpointer user_data) CRM_CHECK(client != NULL, return); CRM_CHECK(update_msg != NULL, return); - type = crm_element_value(update_msg, PCMK__XA_SUBT); + type = pcmk__xe_get(update_msg, PCMK__XA_SUBT); CRM_CHECK(type != NULL, crm_log_xml_err(update_msg, "notify"); return); if (client->ipcs == NULL) { diff --git a/daemons/pacemakerd/pcmkd_messages.c b/daemons/pacemakerd/pcmkd_messages.c index 3069aab3c74..fbf15e4fc64 100644 --- a/daemons/pacemakerd/pcmkd_messages.c +++ b/daemons/pacemakerd/pcmkd_messages.c @@ -1,5 +1,5 @@ /* - * Copyright 2010-2024 the Pacemaker project contributors + * Copyright 2010-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -42,19 +42,19 @@ handle_ping_request(pcmk__request_t *request) const char *value = NULL; xmlNode *ping = NULL; xmlNode *reply = NULL; - const char *from = crm_element_value(msg, PCMK__XA_CRM_SYS_FROM); + const char *from = pcmk__xe_get(msg, PCMK__XA_CRM_SYS_FROM); /* Pinged for status */ crm_trace("Pinged from " PCMK__XA_CRM_SYS_FROM "='%s' " PCMK_XA_ORIGIN "='%s'", pcmk__s(from, ""), - pcmk__s(crm_element_value(msg, PCMK_XA_ORIGIN), "")); + pcmk__s(pcmk__xe_get(msg, PCMK_XA_ORIGIN), "")); pcmk__ipc_send_ack(request->ipc_client, request->ipc_id, request->ipc_flags, PCMK__XE_ACK, NULL, CRM_EX_INDETERMINATE); ping = pcmk__xe_create(NULL, PCMK__XE_PING_RESPONSE); - value = crm_element_value(msg, PCMK__XA_CRM_SYS_TO); + value = pcmk__xe_get(msg, PCMK__XA_CRM_SYS_TO); crm_xml_add(ping, PCMK__XA_CRM_SUBSYSTEM, value); crm_xml_add(ping, PCMK__XA_PACEMAKERD_STATE, pacemakerd_state); crm_xml_add_ll(ping, PCMK_XA_CRM_TIMESTAMP, @@ -114,8 +114,8 @@ handle_shutdown_request(pcmk__request_t *request) if (allowed) { crm_notice("Shutting down in response to IPC request %s from %s", - crm_element_value(msg, PCMK_XA_REFERENCE), - crm_element_value(msg, PCMK_XA_ORIGIN)); + pcmk__xe_get(msg, PCMK_XA_REFERENCE), + pcmk__xe_get(msg, PCMK_XA_ORIGIN)); crm_xml_add_int(shutdown, PCMK__XA_OP_STATUS, CRM_EX_OK); } else { crm_warn("Ignoring shutdown request from unprivileged client %s", diff --git a/daemons/schedulerd/schedulerd_messages.c b/daemons/schedulerd/schedulerd_messages.c index 719473d4829..366c2996948 100644 --- a/daemons/schedulerd/schedulerd_messages.c +++ b/daemons/schedulerd/schedulerd_messages.c @@ -241,10 +241,10 @@ pe_ipc_dispatch(qb_ipcs_connection_t * qbc, void *data, size_t size) return 0; } - sys_to = crm_element_value(msg, PCMK__XA_CRM_SYS_TO); + sys_to = pcmk__xe_get(msg, PCMK__XA_CRM_SYS_TO); - if (pcmk__str_eq(crm_element_value(msg, PCMK__XA_SUBT), - PCMK__VALUE_RESPONSE, pcmk__str_none)) { + if (pcmk__str_eq(pcmk__xe_get(msg, PCMK__XA_SUBT), PCMK__VALUE_RESPONSE, + pcmk__str_none)) { pcmk__ipc_send_ack(c, id, flags, PCMK__XE_ACK, NULL, CRM_EX_INDETERMINATE); crm_info("Ignoring IPC reply from %s", pcmk__client_name(c)); diff --git a/include/crm/common/history_internal.h b/include/crm/common/history_internal.h index bcf2015d60c..783e6d7f2a2 100644 --- a/include/crm/common/history_internal.h +++ b/include/crm/common/history_internal.h @@ -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. * @@ -13,7 +13,6 @@ #include // NULL #include // xmlNode -#include // crm_element_value() #include // pcmk__str_empty() #include // pcmk__xe_id() #include // PCMK__XA_OPERATION_KEY @@ -40,7 +39,7 @@ pcmk__xe_history_key(const xmlNode *xml) * instead. Checking for that allows us to process old saved CIBs, * including some regression tests. */ - const char *key = crm_element_value(xml, PCMK__XA_OPERATION_KEY); + const char *key = pcmk__xe_get(xml, PCMK__XA_OPERATION_KEY); return pcmk__str_empty(key)? pcmk__xe_id(xml) : key; } diff --git a/include/crm/common/xml_element_internal.h b/include/crm/common/xml_element_internal.h index c97c473ec07..28dfe457a6c 100644 --- a/include/crm/common/xml_element_internal.h +++ b/include/crm/common/xml_element_internal.h @@ -24,7 +24,6 @@ #include // xmlNode, etc. #include // crm_time_t -#include // crm_element_value() #include // PCMK_XA_ID #ifdef __cplusplus @@ -45,20 +44,6 @@ int pcmk__xe_delete_match(xmlNode *xml, xmlNode *search); int pcmk__xe_replace_match(xmlNode *xml, xmlNode *replace); int pcmk__xe_update_match(xmlNode *xml, xmlNode *update, uint32_t flags); -/*! - * \internal - * \brief Retrieve the value of the \c PCMK_XA_ID XML attribute - * - * \param[in] xml XML element to check - * - * \return Value of the \c PCMK_XA_ID attribute (may be \c NULL) - */ -static inline const char * -pcmk__xe_id(const xmlNode *xml) -{ - return crm_element_value(xml, PCMK_XA_ID); -} - /*! * \internal * \brief Check whether an XML element is of a particular type @@ -154,6 +139,7 @@ pcmk__xe_foreach_child(xmlNode *xml, const char *child_element_name, int (*handler)(xmlNode *xml, void *userdata), void *userdata); +const char *pcmk__xe_get(const xmlNode *xml, const char *attr_name); int pcmk__xe_get_datetime(const xmlNode *xml, const char *attr, crm_time_t **t); int pcmk__xe_get_flags(const xmlNode *xml, const char *name, uint32_t *dest, uint32_t default_value); @@ -169,6 +155,20 @@ void pcmk__xe_set_bool_attr(xmlNodePtr node, const char *name, bool value); int pcmk__xe_get_bool_attr(const xmlNode *node, const char *name, bool *value); bool pcmk__xe_attr_is_true(const xmlNode *node, const char *name); +/*! + * \internal + * \brief Retrieve the value of the \c PCMK_XA_ID XML attribute + * + * \param[in] xml XML element to check + * + * \return Value of the \c PCMK_XA_ID attribute (may be \c NULL) + */ +static inline const char * +pcmk__xe_id(const xmlNode *xml) +{ + return pcmk__xe_get(xml, PCMK_XA_ID); +} + #ifdef __cplusplus } #endif diff --git a/lib/cib/cib_attrs.c b/lib/cib/cib_attrs.c index f0c8e52b589..992cf2ea83a 100644 --- a/lib/cib/cib_attrs.c +++ b/lib/cib/cib_attrs.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. * @@ -441,7 +441,7 @@ find_nvpair_attr_delegate(cib_t *cib, const char *attr, const char *section, rc = handle_multiples(out, xml_search, attr_name); if (rc == pcmk_rc_ok) { - pcmk__str_update(value, crm_element_value(xml_search, attr)); + pcmk__str_update(value, pcmk__xe_get(xml_search, attr)); } } @@ -494,8 +494,7 @@ read_attr_delegate(cib_t *cib, const char *section, const char *node_uuid, if (rc == pcmk_rc_ok) { if (result->children == NULL) { - pcmk__str_update(attr_value, - crm_element_value(result, PCMK_XA_VALUE)); + pcmk__str_update(attr_value, pcmk__xe_get(result, PCMK_XA_VALUE)); } else { rc = ENOTUNIQ; } @@ -559,9 +558,9 @@ get_uuid_from_result(const xmlNode *result, char **uuid, int *is_remote) if (pcmk__xe_is(result, PCMK_XE_NODE)) { // Result is PCMK_XE_NODE element from PCMK_XE_NODES section - if (pcmk__str_eq(crm_element_value(result, PCMK_XA_TYPE), - PCMK_VALUE_REMOTE, pcmk__str_casei)) { - parsed_uuid = crm_element_value(result, PCMK_XA_UNAME); + if (pcmk__str_eq(pcmk__xe_get(result, PCMK_XA_TYPE), PCMK_VALUE_REMOTE, + pcmk__str_casei)) { + parsed_uuid = pcmk__xe_get(result, PCMK_XA_UNAME); parsed_is_remote = TRUE; } else { parsed_uuid = pcmk__xe_id(result); @@ -579,13 +578,13 @@ get_uuid_from_result(const xmlNode *result, char **uuid, int *is_remote) * node */ - parsed_uuid = crm_element_value(result, PCMK_XA_VALUE); + parsed_uuid = pcmk__xe_get(result, PCMK_XA_VALUE); parsed_is_remote = TRUE; } else if (pcmk__xe_is(result, PCMK__XE_NODE_STATE)) { // Result is PCMK__XE_NODE_STATE element from PCMK_XE_STATUS section - parsed_uuid = crm_element_value(result, PCMK_XA_UNAME); + parsed_uuid = pcmk__xe_get(result, PCMK_XA_UNAME); if (pcmk__xe_attr_is_true(result, PCMK_XA_REMOTE_NODE)) { parsed_is_remote = TRUE; } diff --git a/lib/cib/cib_file.c b/lib/cib/cib_file.c index f254f2c8c98..c0a9505b3d4 100644 --- a/lib/cib/cib_file.c +++ b/lib/cib/cib_file.c @@ -218,8 +218,8 @@ cib_file_process_request(cib_t *cib, xmlNode *request, xmlNode **output) int call_id = 0; uint32_t call_options = cib_none; - const char *op = crm_element_value(request, PCMK__XA_CIB_OP); - const char *section = crm_element_value(request, PCMK__XA_CIB_SECTION); + const char *op = pcmk__xe_get(request, PCMK__XA_CIB_OP); + const char *section = pcmk__xe_get(request, PCMK__XA_CIB_SECTION); xmlNode *wrapper = pcmk__xe_first_child(request, PCMK__XE_CIB_CALLDATA, NULL, NULL); xmlNode *data = pcmk__xe_first_child(wrapper, NULL, NULL, NULL); @@ -924,8 +924,8 @@ cib_file_write_with_digest(xmlNode *cib_root, const char *cib_dirname, char *digest = NULL; /* Detect CIB version for diagnostic purposes */ - const char *epoch = crm_element_value(cib_root, PCMK_XA_EPOCH); - const char *admin_epoch = crm_element_value(cib_root, PCMK_XA_ADMIN_EPOCH); + const char *epoch = pcmk__xe_get(cib_root, PCMK_XA_EPOCH); + const char *admin_epoch = pcmk__xe_get(cib_root, PCMK_XA_ADMIN_EPOCH); /* Determine full CIB and signature pathnames */ char *cib_path = crm_strdup_printf("%s/%s", cib_dirname, cib_filename); @@ -1067,7 +1067,7 @@ cib_file_process_transaction_requests(cib_t *cib, xmlNode *transaction) request = pcmk__xe_next(request, PCMK__XE_CIB_COMMAND)) { xmlNode *output = NULL; - const char *op = crm_element_value(request, PCMK__XA_CIB_OP); + const char *op = pcmk__xe_get(request, PCMK__XA_CIB_OP); int rc = cib_file_process_request(cib, request, &output); @@ -1158,7 +1158,7 @@ cib_file_process_commit_transaction(const char *op, int options, xmlNode **result_cib, xmlNode **answer) { int rc = pcmk_rc_ok; - const char *client_id = crm_element_value(req, PCMK__XA_CIB_CLIENTID); + const char *client_id = pcmk__xe_get(req, PCMK__XA_CIB_CLIENTID); cib_t *cib = NULL; CRM_CHECK(client_id != NULL, return -EINVAL); diff --git a/lib/cib/cib_native.c b/lib/cib/cib_native.c index 4f2a7a74227..2c5708d0ac8 100644 --- a/lib/cib/cib_native.c +++ b/lib/cib/cib_native.c @@ -194,7 +194,7 @@ cib_native_dispatch_internal(const char *buffer, ssize_t length, } /* do callbacks */ - type = crm_element_value(msg, PCMK__XA_T); + type = pcmk__xe_get(msg, PCMK__XA_T); crm_trace("Activating %s callbacks...", type); crm_log_xml_explicit(msg, "cib-reply"); @@ -316,7 +316,7 @@ cib_native_signon(cib_t *cib, const char *name, enum cib_conn_type type) if (crm_ipc_send(native->ipc, hello, crm_ipc_client_response, -1, &reply) > 0) { - const char *msg_type = crm_element_value(reply, PCMK__XA_CIB_OP); + const char *msg_type = pcmk__xe_get(reply, PCMK__XA_CIB_OP); crm_log_xml_trace(reply, "reg-reply"); diff --git a/lib/cib/cib_ops.c b/lib/cib/cib_ops.c index f9a5aeea6df..7b42eaf1c09 100644 --- a/lib/cib/cib_ops.c +++ b/lib/cib/cib_ops.c @@ -218,7 +218,7 @@ update_counter(xmlNode *xml_obj, const char *field, bool reset) char *old_value = NULL; int int_value = -1; - if (!reset && crm_element_value(xml_obj, field) != NULL) { + if (!reset && pcmk__xe_get(xml_obj, field) != NULL) { old_value = crm_element_value_copy(xml_obj, field); } if (old_value != NULL) { @@ -263,18 +263,18 @@ cib_process_upgrade(const char *op, int options, const char *section, xmlNode * xmlNode ** answer) { int rc = 0; - const char *max_schema = crm_element_value(req, PCMK__XA_CIB_SCHEMA_MAX); + const char *max_schema = pcmk__xe_get(req, PCMK__XA_CIB_SCHEMA_MAX); const char *original_schema = NULL; const char *new_schema = NULL; *answer = NULL; crm_trace("Processing \"%s\" event with max=%s", op, max_schema); - original_schema = crm_element_value(existing_cib, PCMK_XA_VALIDATE_WITH); + original_schema = pcmk__xe_get(existing_cib, PCMK_XA_VALIDATE_WITH); rc = pcmk__update_schema(result_cib, max_schema, true, !pcmk_is_set(options, cib_verbose)); rc = pcmk_rc2legacy(rc); - new_schema = crm_element_value(*result_cib, PCMK_XA_VALIDATE_WITH); + new_schema = pcmk__xe_get(*result_cib, PCMK_XA_VALIDATE_WITH); if (pcmk__cmp_schemas_by_name(new_schema, original_schema) > 0) { update_counter(*result_cib, PCMK_XA_ADMIN_EPOCH, false); @@ -293,7 +293,7 @@ cib_process_bump(const char *op, int options, const char *section, xmlNode * req int result = pcmk_ok; crm_trace("Processing %s for epoch='%s'", op, - pcmk__s(crm_element_value(existing_cib, PCMK_XA_EPOCH), "")); + pcmk__s(pcmk__xe_get(existing_cib, PCMK_XA_EPOCH), "")); *answer = NULL; update_counter(*result_cib, PCMK_XA_EPOCH, false); @@ -339,8 +339,8 @@ cib_process_replace(const char *op, int options, const char *section, xmlNode * int replace_admin_epoch = 0; const char *reason = NULL; - const char *peer = crm_element_value(req, PCMK__XA_SRC); - const char *digest = crm_element_value(req, PCMK__XA_DIGEST); + const char *peer = pcmk__xe_get(req, PCMK__XA_SRC); + const char *digest = pcmk__xe_get(req, PCMK__XA_DIGEST); if (digest) { char *digest_verify = pcmk__digest_xml(input, true); @@ -648,7 +648,7 @@ cib_process_diff(const char *op, int options, const char *section, xmlNode * req const char *originator = NULL; if (req != NULL) { - originator = crm_element_value(req, PCMK__XA_SRC); + originator = pcmk__xe_get(req, PCMK__XA_SRC); } crm_trace("Processing \"%s\" event from %s%s", @@ -781,7 +781,7 @@ cib_process_xpath(const char *op, int options, const char *section, xmlNode *parent = match; while (parent && parent->type == XML_ELEMENT_NODE) { - const char *id = crm_element_value(parent, PCMK_XA_ID); + const char *id = pcmk__xe_get(parent, PCMK_XA_ID); char *new_path = NULL; if (id) { diff --git a/lib/cib/cib_remote.c b/lib/cib/cib_remote.c index 17cd055a1aa..5d547e962d1 100644 --- a/lib/cib/cib_remote.c +++ b/lib/cib/cib_remote.c @@ -245,7 +245,7 @@ cib_remote_callback_dispatch(gpointer user_data) return 0; } - type = crm_element_value(msg, PCMK__XA_T); + type = pcmk__xe_get(msg, PCMK__XA_T); crm_trace("Activating %s callbacks...", type); @@ -433,9 +433,8 @@ cib_tls_signon(cib_t *cib, pcmk__remote_t *connection, gboolean event_channel) } else { /* grab the token */ - const char *msg_type = crm_element_value(answer, PCMK__XA_CIB_OP); - const char *tmp_ticket = crm_element_value(answer, - PCMK__XA_CIB_CLIENTID); + const char *msg_type = pcmk__xe_get(answer, PCMK__XA_CIB_OP); + const char *tmp_ticket = pcmk__xe_get(answer, PCMK__XA_CIB_CLIENTID); if (!pcmk__str_eq(msg_type, CRM_OP_REGISTER, pcmk__str_casei)) { crm_err("Invalid registration message: %s", msg_type); diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c index 40b807bfe43..b3c29eaa9e0 100644 --- a/lib/cib/cib_utils.c +++ b/lib/cib/cib_utils.c @@ -231,7 +231,7 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, xmlNode *patchset_cib = NULL; xmlNode *local_diff = NULL; - const char *user = crm_element_value(req, PCMK__XA_CIB_USER); + const char *user = pcmk__xe_get(req, PCMK__XA_CIB_USER); const bool enable_acl = cib_acl_enabled(*current_cib, user); bool with_digest = false; @@ -370,7 +370,8 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, * is checked elsewhere. */ if (scratch && (cib == NULL || cib->variant != cib_file)) { - const char *new_version = crm_element_value(scratch, PCMK_XA_CRM_FEATURE_SET); + const char *new_version = pcmk__xe_get(scratch, + PCMK_XA_CRM_FEATURE_SET); rc = pcmk__check_feature_set(new_version); if (rc != pcmk_rc_ok) { @@ -485,7 +486,7 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, */ if (*config_changed && !pcmk_is_set(call_options, cib_no_mtime)) { - const char *schema = crm_element_value(scratch, PCMK_XA_VALIDATE_WITH); + const char *schema = pcmk__xe_get(scratch, PCMK_XA_VALIDATE_WITH); if (schema == NULL) { rc = -pcmk_err_cib_corrupt; @@ -498,9 +499,8 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, * the ones in req (if the schema allows the attributes) */ if (pcmk__cmp_schemas_by_name(schema, "pacemaker-1.2") >= 0) { - const char *origin = crm_element_value(req, PCMK__XA_SRC); - const char *client = crm_element_value(req, - PCMK__XA_CIB_CLIENTNAME); + const char *origin = pcmk__xe_get(req, PCMK__XA_SRC); + const char *client = pcmk__xe_get(req, PCMK__XA_CIB_CLIENTNAME); if (origin != NULL) { crm_xml_add(scratch, PCMK_XA_UPDATE_ORIGIN, origin); @@ -601,8 +601,8 @@ cib__create_op(cib_t *cib, const char *op, const char *host, static int validate_transaction_request(const xmlNode *request) { - const char *op = crm_element_value(request, PCMK__XA_CIB_OP); - const char *host = crm_element_value(request, PCMK__XA_CIB_HOST); + const char *op = pcmk__xe_get(request, PCMK__XA_CIB_OP); + const char *host = pcmk__xe_get(request, PCMK__XA_CIB_HOST); const cib__operation_t *operation = NULL; int rc = cib__get_operation(op, &operation); @@ -651,7 +651,7 @@ cib__extend_transaction(cib_t *cib, xmlNode *request) pcmk__xml_copy(cib->transaction, request); } else { - const char *op = crm_element_value(request, PCMK__XA_CIB_OP); + const char *op = pcmk__xe_get(request, PCMK__XA_CIB_OP); const char *client_id = NULL; cib->cmds->client_id(cib, NULL, &client_id); @@ -722,7 +722,7 @@ cib_native_notify(gpointer data, gpointer user_data) return; } - event = crm_element_value(msg, PCMK__XA_SUBT); + event = pcmk__xe_get(msg, PCMK__XA_SUBT); if (entry == NULL) { crm_warn("Skipping callback - NULL callback client"); diff --git a/lib/cluster/election.c b/lib/cluster/election.c index 18fe2072091..3bf13ed999c 100644 --- a/lib/cluster/election.c +++ b/lib/cluster/election.c @@ -428,10 +428,10 @@ parse_election_message(const xmlNode *message, struct vote *vote) vote->age.tv_sec = -1; vote->age.tv_usec = -1; - vote->op = crm_element_value(message, PCMK__XA_CRM_TASK); - vote->from = crm_element_value(message, PCMK__XA_SRC); - vote->version = crm_element_value(message, PCMK_XA_VERSION); - vote->election_owner = crm_element_value(message, PCMK__XA_ELECTION_OWNER); + vote->op = pcmk__xe_get(message, PCMK__XA_CRM_TASK); + vote->from = pcmk__xe_get(message, PCMK__XA_SRC); + vote->version = pcmk__xe_get(message, PCMK_XA_VERSION); + vote->election_owner = pcmk__xe_get(message, PCMK__XA_ELECTION_OWNER); pcmk__xe_get_int(message, PCMK__XA_ELECTION_ID, &(vote->election_id)); diff --git a/lib/cluster/membership.c b/lib/cluster/membership.c index e41d9673939..d6f7fb72b3c 100644 --- a/lib/cluster/membership.c +++ b/lib/cluster/membership.c @@ -270,7 +270,7 @@ static void remote_cache_refresh_helper(xmlNode *result, void *user_data) { const struct refresh_data *data = user_data; - const char *remote = crm_element_value(result, data->field); + const char *remote = pcmk__xe_get(result, data->field); const char *state = NULL; pcmk__node_status_t *node; @@ -1457,8 +1457,8 @@ find_cib_cluster_node(const char *id, const char *uname) static void cluster_node_cib_cache_refresh_helper(xmlNode *xml_node, void *user_data) { - const char *id = crm_element_value(xml_node, PCMK_XA_ID); - const char *uname = crm_element_value(xml_node, PCMK_XA_UNAME); + const char *id = pcmk__xe_get(xml_node, PCMK_XA_ID); + const char *uname = pcmk__xe_get(xml_node, PCMK_XA_UNAME); pcmk__node_status_t * node = NULL; CRM_CHECK(id != NULL && uname !=NULL, return); diff --git a/lib/common/acl.c b/lib/common/acl.c index 12c741e0e53..c064b4c8c02 100644 --- a/lib/common/acl.c +++ b/lib/common/acl.c @@ -52,10 +52,10 @@ create_acl(const xmlNode *xml, GList *acls, enum pcmk__xml_flags mode) { xml_acl_t *acl = NULL; - const char *tag = crm_element_value(xml, PCMK_XA_OBJECT_TYPE); - const char *ref = crm_element_value(xml, PCMK_XA_REFERENCE); - const char *xpath = crm_element_value(xml, PCMK_XA_XPATH); - const char *attr = crm_element_value(xml, PCMK_XA_ATTRIBUTE); + const char *tag = pcmk__xe_get(xml, PCMK_XA_OBJECT_TYPE); + const char *ref = pcmk__xe_get(xml, PCMK_XA_REFERENCE); + const char *xpath = pcmk__xe_get(xml, PCMK_XA_XPATH); + const char *attr = pcmk__xe_get(xml, PCMK_XA_ATTRIBUTE); if ((tag == NULL) && (ref == NULL) && (xpath == NULL)) { // Schema should prevent this, but to be safe ... @@ -121,7 +121,7 @@ parse_acl_entry(const xmlNode *acl_top, const xmlNode *acl_entry, GList *acls) child != NULL; child = pcmk__xe_next(child, NULL)) { if (pcmk__xe_is(child, PCMK_XE_ACL_PERMISSION)) { - const char *kind = crm_element_value(child, PCMK_XA_KIND); + const char *kind = pcmk__xe_get(child, PCMK_XA_KIND); pcmk__assert(kind != NULL); crm_trace("Unpacking <" PCMK_XE_ACL_PERMISSION "> element of " @@ -142,7 +142,7 @@ parse_acl_entry(const xmlNode *acl_top, const xmlNode *acl_entry, GList *acls) } } else if (pcmk__xe_is(child, PCMK_XE_ROLE)) { - const char *ref_role = crm_element_value(child, PCMK_XA_ID); + const char *ref_role = pcmk__xe_get(child, PCMK_XA_ID); crm_trace("Unpacking <" PCMK_XE_ROLE "> element"); @@ -160,7 +160,7 @@ parse_acl_entry(const xmlNode *acl_top, const xmlNode *acl_entry, GList *acls) continue; } - role_id = crm_element_value(role, PCMK_XA_ID); + role_id = pcmk__xe_get(role, PCMK_XA_ID); if (pcmk__str_eq(ref_role, role_id, pcmk__str_none)) { crm_trace("Unpacking referenced role '%s' in <%s> element", @@ -343,10 +343,10 @@ pcmk__unpack_acl(xmlNode *source, xmlNode *target, const char *user) child != NULL; child = pcmk__xe_next(child, NULL)) { if (pcmk__xe_is(child, PCMK_XE_ACL_TARGET)) { - const char *id = crm_element_value(child, PCMK_XA_NAME); + const char *id = pcmk__xe_get(child, PCMK_XA_NAME); if (id == NULL) { - id = crm_element_value(child, PCMK_XA_ID); + id = pcmk__xe_get(child, PCMK_XA_ID); } if (id && strcmp(id, user) == 0) { @@ -354,10 +354,10 @@ pcmk__unpack_acl(xmlNode *source, xmlNode *target, const char *user) docpriv->acls = parse_acl_entry(acls, child, docpriv->acls); } } else if (pcmk__xe_is(child, PCMK_XE_ACL_GROUP)) { - const char *id = crm_element_value(child, PCMK_XA_NAME); + const char *id = pcmk__xe_get(child, PCMK_XA_NAME); if (id == NULL) { - id = crm_element_value(child, PCMK_XA_ID); + id = pcmk__xe_get(child, PCMK_XA_ID); } if (id && pcmk__is_user_in_group(user,id)) { @@ -853,7 +853,7 @@ pcmk__update_acl_user(xmlNode *request, const char *field, } } - requested_user = crm_element_value(request, PCMK__XA_ACL_TARGET); + requested_user = pcmk__xe_get(request, PCMK__XA_ACL_TARGET); if (requested_user == NULL) { /* Currently, different XML attribute names are used for the ACL user in * different contexts (PCMK__XA_ATTR_USER, PCMK__XA_CIB_USER, etc.). @@ -863,7 +863,7 @@ pcmk__update_acl_user(xmlNode *request, const char *field, * others once rolling upgrades from versions older than that are no * longer supported. */ - requested_user = crm_element_value(request, field); + requested_user = pcmk__xe_get(request, field); } if (!pcmk__is_privileged(effective_user)) { @@ -898,11 +898,11 @@ pcmk__update_acl_user(xmlNode *request, const char *field, } // This requires pointer comparison, not string comparison - if (user != crm_element_value(request, PCMK__XA_ACL_TARGET)) { + if (user != pcmk__xe_get(request, PCMK__XA_ACL_TARGET)) { crm_xml_add(request, PCMK__XA_ACL_TARGET, user); } - if (field != NULL && user != crm_element_value(request, field)) { + if ((field != NULL) && (user != pcmk__xe_get(request, field))) { crm_xml_add(request, field, user); } diff --git a/lib/common/alerts.c b/lib/common/alerts.c index d9e18f4d09b..5d6ea20dc09 100644 --- a/lib/common/alerts.c +++ b/lib/common/alerts.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. * @@ -233,8 +233,8 @@ unpack_alert_parameters(const xmlNode *xml, pcmk__alert_t *entry) for (child = pcmk__xe_first_child(child, PCMK_XE_NVPAIR, NULL, NULL); child != NULL; child = pcmk__xe_next(child, PCMK_XE_NVPAIR)) { - const char *name = crm_element_value(child, PCMK_XA_NAME); - const char *value = crm_element_value(child, PCMK_XA_VALUE); + const char *name = pcmk__xe_get(child, PCMK_XA_NAME); + const char *value = pcmk__xe_get(child, PCMK_XA_VALUE); if (value == NULL) { value = ""; @@ -282,7 +282,7 @@ unpack_alert_filter(xmlNode *xml, pcmk__alert_t *entry) NULL, NULL); attr != NULL; attr = pcmk__xe_next(attr, PCMK_XE_ATTRIBUTE)) { - attr_name = crm_element_value(attr, PCMK_XA_NAME); + attr_name = pcmk__xe_get(attr, PCMK_XA_NAME); if (attr_name) { if (nattrs == 0) { g_strfreev(entry->select_attribute_name); @@ -355,7 +355,7 @@ pcmk__unpack_alerts(const xmlNode *alerts) xmlNode *recipient = NULL; int recipients = 0; const char *alert_id = pcmk__xe_id(alert); - const char *alert_path = crm_element_value(alert, PCMK_XA_PATH); + const char *alert_path = pcmk__xe_get(alert, PCMK_XA_PATH); // Not possible with schema validation enabled if (alert_id == NULL) { diff --git a/lib/common/digest.c b/lib/common/digest.c index 9eadcfbdda3..0c5cc8b4a00 100644 --- a/lib/common/digest.c +++ b/lib/common/digest.c @@ -181,9 +181,9 @@ pcmk__digest_xml(const xmlNode *xml, bool filter) pcmk__get_tmpdir(), digest); crm_trace("Saving %s.%s.%s to %s", - crm_element_value(xml, PCMK_XA_ADMIN_EPOCH), - crm_element_value(xml, PCMK_XA_EPOCH), - crm_element_value(xml, PCMK_XA_NUM_UPDATES), + pcmk__xe_get(xml, PCMK_XA_ADMIN_EPOCH), + pcmk__xe_get(xml, PCMK_XA_EPOCH), + pcmk__xe_get(xml, PCMK_XA_NUM_UPDATES), trace_file); save_xml_to_file(xml, "digest input", trace_file); free(trace_file); diff --git a/lib/common/ipc_attrd.c b/lib/common/ipc_attrd.c index 394bf75c1d2..c3d3da0fe65 100644 --- a/lib/common/ipc_attrd.c +++ b/lib/common/ipc_attrd.c @@ -26,7 +26,7 @@ set_pairs_data(pcmk__attrd_api_reply_t *data, xmlNode *msg_data) const char *name = NULL; pcmk__attrd_query_pair_t *pair; - name = crm_element_value(msg_data, PCMK__XA_ATTR_NAME); + name = pcmk__xe_get(msg_data, PCMK__XA_ATTR_NAME); for (xmlNode *node = pcmk__xe_first_child(msg_data, PCMK_XE_NODE, NULL, NULL); @@ -34,9 +34,9 @@ set_pairs_data(pcmk__attrd_api_reply_t *data, xmlNode *msg_data) pair = pcmk__assert_alloc(1, sizeof(pcmk__attrd_query_pair_t)); - pair->node = crm_element_value(node, PCMK__XA_ATTR_HOST); + pair->node = pcmk__xe_get(node, PCMK__XA_ATTR_HOST); pair->name = name; - pair->value = crm_element_value(node, PCMK__XA_ATTR_VALUE); + pair->value = pcmk__xe_get(node, PCMK__XA_ATTR_VALUE); data->data.pairs = g_list_prepend(data->data.pairs, pair); } } @@ -44,7 +44,7 @@ set_pairs_data(pcmk__attrd_api_reply_t *data, xmlNode *msg_data) static bool reply_expected(pcmk_ipc_api_t *api, const xmlNode *request) { - const char *command = crm_element_value(request, PCMK_XA_TASK); + const char *command = pcmk__xe_get(request, PCMK_XA_TASK); return pcmk__str_any_of(command, PCMK__ATTRD_CMD_CLEAR_FAILURE, @@ -71,7 +71,7 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) } /* Do some basic validation of the reply */ - value = crm_element_value(reply, PCMK__XA_T); + value = pcmk__xe_get(reply, PCMK__XA_T); if (pcmk__str_empty(value) || !pcmk__str_eq(value, PCMK__VALUE_ATTRD, pcmk__str_none)) { crm_info("Unrecognizable message from attribute manager: " @@ -81,7 +81,7 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) goto done; } - value = crm_element_value(reply, PCMK__XA_SUBT); + value = pcmk__xe_get(reply, PCMK__XA_SUBT); /* Only the query command gets a reply for now. NULL counts as query for * backward compatibility with attribute managers <2.1.3 that didn't set it. diff --git a/lib/common/ipc_controld.c b/lib/common/ipc_controld.c index fef1ec96a17..6951c8fc7da 100644 --- a/lib/common/ipc_controld.c +++ b/lib/common/ipc_controld.c @@ -141,9 +141,9 @@ set_node_info_data(pcmk_controld_api_reply_t *data, xmlNode *msg_data) */ pcmk__xe_get_int(msg_data, PCMK_XA_ID, &(data->data.node_info.id)); - data->data.node_info.uuid = crm_element_value(msg_data, PCMK_XA_ID); - data->data.node_info.uname = crm_element_value(msg_data, PCMK_XA_UNAME); - data->data.node_info.state = crm_element_value(msg_data, PCMK_XA_CRMD); + data->data.node_info.uuid = pcmk__xe_get(msg_data, PCMK_XA_ID); + data->data.node_info.uname = pcmk__xe_get(msg_data, PCMK_XA_UNAME); + data->data.node_info.state = pcmk__xe_get(msg_data, PCMK_XA_CRMD); } static void @@ -153,11 +153,9 @@ set_ping_data(pcmk_controld_api_reply_t *data, xmlNode *msg_data) if (msg_data == NULL) { return; } - data->data.ping.sys_from = crm_element_value(msg_data, - PCMK__XA_CRM_SUBSYSTEM); - data->data.ping.fsa_state = crm_element_value(msg_data, - PCMK__XA_CRMD_STATE); - data->data.ping.result = crm_element_value(msg_data, PCMK_XA_RESULT); + data->data.ping.sys_from = pcmk__xe_get(msg_data, PCMK__XA_CRM_SUBSYSTEM); + data->data.ping.fsa_state = pcmk__xe_get(msg_data, PCMK__XA_CRMD_STATE); + data->data.ping.result = pcmk__xe_get(msg_data, PCMK_XA_RESULT); } static void @@ -177,8 +175,8 @@ set_nodes_data(pcmk_controld_api_reply_t *data, xmlNode *msg_data) if (id_ll > 0) { node_info->id = id_ll; } - node_info->uname = crm_element_value(node, PCMK_XA_UNAME); - node_info->state = crm_element_value(node, PCMK__XA_IN_CCM); + node_info->uname = pcmk__xe_get(node, PCMK_XA_UNAME); + node_info->state = pcmk__xe_get(node, PCMK__XA_IN_CCM); data->data.nodes = g_list_prepend(data->data.nodes, node_info); } } @@ -187,7 +185,7 @@ static bool reply_expected(pcmk_ipc_api_t *api, const xmlNode *request) { // We only need to handle commands that API functions can send - return pcmk__str_any_of(crm_element_value(request, PCMK__XA_CRM_TASK), + return pcmk__str_any_of(pcmk__xe_get(request, PCMK__XA_CRM_TASK), PCMK__CONTROLD_CMD_NODES, CRM_OP_LRM_DELETE, CRM_OP_LRM_FAIL, @@ -224,7 +222,7 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) // Do some basic validation of the reply - value = crm_element_value(reply, PCMK__XA_SUBT); + value = pcmk__xe_get(reply, PCMK__XA_SUBT); if (pcmk__str_eq(value, PCMK__VALUE_REQUEST, pcmk__str_none)) { /* @COMPAT Controllers <3.0.0 set PCMK__XA_SUBT to PCMK__VALUE_REQUEST * for certain replies. Once we no longer support Pacemaker Remote nodes @@ -241,13 +239,13 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) goto done; } - if (pcmk__str_empty(crm_element_value(reply, PCMK_XA_REFERENCE))) { + if (pcmk__str_empty(pcmk__xe_get(reply, PCMK_XA_REFERENCE))) { crm_info("Unrecognizable message from controller: no reference"); status = CRM_EX_PROTOCOL; goto done; } - value = crm_element_value(reply, PCMK__XA_CRM_TASK); + value = pcmk__xe_get(reply, PCMK__XA_CRM_TASK); if (pcmk__str_empty(value)) { crm_info("Unrecognizable message from controller: no command name"); status = CRM_EX_PROTOCOL; @@ -256,8 +254,8 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) // Parse useful info from reply - reply_data.feature_set = crm_element_value(reply, PCMK_XA_VERSION); - reply_data.host_from = crm_element_value(reply, PCMK__XA_SRC); + reply_data.feature_set = pcmk__xe_get(reply, PCMK_XA_VERSION); + reply_data.host_from = pcmk__xe_get(reply, PCMK__XA_SRC); wrapper = pcmk__xe_first_child(reply, PCMK__XE_CRM_XML, NULL, NULL); msg_data = pcmk__xe_first_child(wrapper, NULL, NULL, NULL); @@ -352,7 +350,7 @@ static int send_controller_request(pcmk_ipc_api_t *api, const xmlNode *request, bool reply_is_expected) { - if (crm_element_value(request, PCMK_XA_REFERENCE) == NULL) { + if (pcmk__xe_get(request, PCMK_XA_REFERENCE) == NULL) { return EINVAL; } if (reply_is_expected) { diff --git a/lib/common/ipc_pacemakerd.c b/lib/common/ipc_pacemakerd.c index 8febcc5875c..ed56f2b5d78 100644 --- a/lib/common/ipc_pacemakerd.c +++ b/lib/common/ipc_pacemakerd.c @@ -180,7 +180,7 @@ post_disconnect(pcmk_ipc_api_t *api) static bool reply_expected(pcmk_ipc_api_t *api, const xmlNode *request) { - const char *command = crm_element_value(request, PCMK__XA_CRM_TASK); + const char *command = pcmk__xe_get(request, PCMK__XA_CRM_TASK); if (command == NULL) { return false; @@ -203,7 +203,7 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) if (pcmk__xe_is(reply, PCMK__XE_ACK)) { long long int ack_status = 0; - const char *status = crm_element_value(reply, PCMK_XA_STATUS); + const char *status = pcmk__xe_get(reply, PCMK_XA_STATUS); int rc = pcmk__scan_ll(status, &ack_status, CRM_EX_OK); if (rc != pcmk_rc_ok) { @@ -214,7 +214,7 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) return ack_status == CRM_EX_INDETERMINATE; } - value = crm_element_value(reply, PCMK__XA_T); + value = pcmk__xe_get(reply, PCMK__XA_T); if (pcmk__parse_server(value) != pcmk_ipc_pacemakerd) { /* @COMPAT pacemakerd <3.0.0 sets PCMK__VALUE_CRMD as the message type, * so we can't enforce this check until we no longer support @@ -225,7 +225,7 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) pcmk_ipc_name(api, true), pcmk__s(value, "")); } - value = crm_element_value(reply, PCMK__XA_SUBT); + value = pcmk__xe_get(reply, PCMK__XA_SUBT); if (!pcmk__str_eq(value, PCMK__VALUE_RESPONSE, pcmk__str_none)) { crm_info("Unrecognizable message from %s: " "message type '%s' not '" PCMK__VALUE_RESPONSE "'", @@ -234,14 +234,14 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) goto done; } - if (pcmk__str_empty(crm_element_value(reply, PCMK_XA_REFERENCE))) { + if (pcmk__str_empty(pcmk__xe_get(reply, PCMK_XA_REFERENCE))) { crm_info("Unrecognizable message from %s: no reference", pcmk_ipc_name(api, true)); status = CRM_EX_PROTOCOL; goto done; } - value = crm_element_value(reply, PCMK__XA_CRM_TASK); + value = pcmk__xe_get(reply, PCMK__XA_CRM_TASK); // Parse useful info from reply wrapper = pcmk__xe_first_child(reply, PCMK__XE_CRM_XML, NULL, NULL); @@ -251,9 +251,9 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) reply_data.reply_type = pcmk_pacemakerd_reply_ping; reply_data.data.ping.state = pcmk_pacemakerd_api_daemon_state_text2enum( - crm_element_value(msg_data, PCMK__XA_PACEMAKERD_STATE)); + pcmk__xe_get(msg_data, PCMK__XA_PACEMAKERD_STATE)); reply_data.data.ping.status = - pcmk__str_eq(crm_element_value(msg_data, PCMK_XA_RESULT), "ok", + pcmk__str_eq(pcmk__xe_get(msg_data, PCMK_XA_RESULT), "ok", pcmk__str_casei)?pcmk_rc_ok:pcmk_rc_error; pcmk__xe_get_time(msg_data, PCMK_XA_CRM_TIMESTAMP, @@ -263,9 +263,9 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) } reply_data.data.ping.sys_from = - crm_element_value(msg_data, PCMK__XA_CRM_SUBSYSTEM); + pcmk__xe_get(msg_data, PCMK__XA_CRM_SUBSYSTEM); } else if (pcmk__str_eq(value, CRM_OP_QUIT, pcmk__str_none)) { - const char *op_status = crm_element_value(msg_data, PCMK__XA_OP_STATUS); + const char *op_status = pcmk__xe_get(msg_data, PCMK__XA_OP_STATUS); reply_data.reply_type = pcmk_pacemakerd_reply_shutdown; reply_data.data.shutdown.status = atoi(op_status); diff --git a/lib/common/ipc_schedulerd.c b/lib/common/ipc_schedulerd.c index 55d2935e6d2..f68566af85b 100644 --- a/lib/common/ipc_schedulerd.c +++ b/lib/common/ipc_schedulerd.c @@ -1,5 +1,5 @@ /* - * Copyright 2021-2024 the Pacemaker project contributors + * Copyright 2021-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -63,7 +63,7 @@ post_connect(pcmk_ipc_api_t *api) static bool reply_expected(pcmk_ipc_api_t *api, const xmlNode *request) { - const char *command = crm_element_value(request, PCMK__XA_CRM_TASK); + const char *command = pcmk__xe_get(request, PCMK__XA_CRM_TASK); if (command == NULL) { return false; @@ -88,7 +88,7 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) return false; } - value = crm_element_value(reply, PCMK__XA_T); + value = pcmk__xe_get(reply, PCMK__XA_T); if (pcmk__parse_server(value) != pcmk_ipc_schedulerd) { crm_info("Unrecognizable message from schedulerd: " "unexpected message type '%s'", @@ -97,7 +97,7 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) goto done; } - value = crm_element_value(reply, PCMK__XA_SUBT); + value = pcmk__xe_get(reply, PCMK__XA_SUBT); if (!pcmk__str_eq(value, PCMK__VALUE_RESPONSE, pcmk__str_none)) { crm_info("Unrecognizable message from schedulerd: " "message type '%s' not '" PCMK__VALUE_RESPONSE "'", @@ -106,7 +106,7 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) goto done; } - if (pcmk__str_empty(crm_element_value(reply, PCMK_XA_REFERENCE))) { + if (pcmk__str_empty(pcmk__xe_get(reply, PCMK_XA_REFERENCE))) { crm_info("Unrecognizable message from schedulerd: no reference"); status = CRM_EX_PROTOCOL; goto done; @@ -116,14 +116,14 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) wrapper = pcmk__xe_first_child(reply, PCMK__XE_CRM_XML, NULL, NULL); msg_data = pcmk__xe_first_child(wrapper, NULL, NULL, NULL); - value = crm_element_value(reply, PCMK__XA_CRM_TASK); + value = pcmk__xe_get(reply, PCMK__XA_CRM_TASK); if (pcmk__str_eq(value, CRM_OP_PECALC, pcmk__str_none)) { reply_data.reply_type = pcmk_schedulerd_reply_graph; - reply_data.data.graph.reference = crm_element_value(reply, - PCMK_XA_REFERENCE); - reply_data.data.graph.input = crm_element_value(reply, - PCMK__XA_CRM_TGRAPH_IN); + reply_data.data.graph.reference = pcmk__xe_get(reply, + PCMK_XA_REFERENCE); + reply_data.data.graph.input = pcmk__xe_get(reply, + PCMK__XA_CRM_TGRAPH_IN); reply_data.data.graph.tgraph = msg_data; } else { crm_info("Unrecognizable message from schedulerd: " @@ -180,7 +180,7 @@ do_schedulerd_api_call(pcmk_ipc_api_t *api, const char *task, xmlNode *cib, char pcmk_rc_str(rc), rc); } - *ref = strdup(crm_element_value(cmd, PCMK_XA_REFERENCE)); + *ref = strdup(pcmk__xe_get(cmd, PCMK_XA_REFERENCE)); pcmk__xml_free(cmd); } else { rc = ENOMSG; diff --git a/lib/common/iso8601.c b/lib/common/iso8601.c index 007a64fff59..5c1f9d0a0ab 100644 --- a/lib/common/iso8601.c +++ b/lib/common/iso8601.c @@ -1,5 +1,5 @@ /* - * Copyright 2005-2024 the Pacemaker project contributors + * Copyright 2005-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -1627,8 +1627,7 @@ pcmk__add_time_from_xml(crm_time_t *t, enum pcmk__time_component component, return pcmk_rc_ok; } - if (pcmk__scan_ll(crm_element_value(xml, attr), &value, - 0LL) != pcmk_rc_ok) { + if (pcmk__scan_ll(pcmk__xe_get(xml, attr), &value, 0LL) != pcmk_rc_ok) { return pcmk_rc_unpack_error; } diff --git a/lib/common/messages.c b/lib/common/messages.c index 242ae2796f3..bd7ebf146b4 100644 --- a/lib/common/messages.c +++ b/lib/common/messages.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. * @@ -123,17 +123,15 @@ xmlNode * pcmk__new_reply_as(const char *origin, const xmlNode *original_request, xmlNode *data) { - const char *message_type = crm_element_value(original_request, PCMK__XA_T); - const char *host_from = crm_element_value(original_request, PCMK__XA_SRC); - const char *sys_from = crm_element_value(original_request, - PCMK__XA_CRM_SYS_FROM); - const char *sys_to = crm_element_value(original_request, - PCMK__XA_CRM_SYS_TO); - const char *type = crm_element_value(original_request, PCMK__XA_SUBT); - const char *operation = crm_element_value(original_request, - PCMK__XA_CRM_TASK); - const char *crm_msg_reference = crm_element_value(original_request, - PCMK_XA_REFERENCE); + const char *message_type = pcmk__xe_get(original_request, PCMK__XA_T); + const char *host_from = pcmk__xe_get(original_request, PCMK__XA_SRC); + const char *sys_from = pcmk__xe_get(original_request, + PCMK__XA_CRM_SYS_FROM); + const char *sys_to = pcmk__xe_get(original_request, PCMK__XA_CRM_SYS_TO); + const char *type = pcmk__xe_get(original_request, PCMK__XA_SUBT); + const char *operation = pcmk__xe_get(original_request, PCMK__XA_CRM_TASK); + const char *crm_msg_reference = pcmk__xe_get(original_request, + PCMK_XA_REFERENCE); enum pcmk_ipc_server server = pcmk__parse_server(message_type); if (server == pcmk_ipc_unknown) { diff --git a/lib/common/nodes.c b/lib/common/nodes.c index bf035434441..5d972690a0c 100644 --- a/lib/common/nodes.c +++ b/lib/common/nodes.c @@ -233,7 +233,7 @@ pcmk_cib_node_shutdown(xmlNode *cib, const char *node) free(xpath); if (match != NULL) { - return crm_element_value(match, PCMK_XA_VALUE); + return pcmk__xe_get(match, PCMK_XA_VALUE); } } return NULL; diff --git a/lib/common/nvpair.c b/lib/common/nvpair.c index 921119f8428..1bb0b16ef72 100644 --- a/lib/common/nvpair.c +++ b/lib/common/nvpair.c @@ -214,7 +214,7 @@ hash2smartfield(gpointer key, gpointer value, gpointer user_data) crm_xml_add(tmp, PCMK_XA_NAME, name); crm_xml_add(tmp, PCMK_XA_VALUE, s_value); - } else if (crm_element_value(xml_node, name) == NULL) { + } else if (pcmk__xe_get(xml_node, name) == NULL) { crm_xml_add(xml_node, name, s_value); crm_trace("dumped: %s=%s", name, s_value); @@ -242,7 +242,7 @@ hash2field(gpointer key, gpointer value, gpointer user_data) xmlNode *xml_node = user_data; - if (crm_element_value(xml_node, name) == NULL) { + if (pcmk__xe_get(xml_node, name) == NULL) { crm_xml_add(xml_node, name, s_value); } else { @@ -367,8 +367,8 @@ xml2list(const xmlNode *parent) for (child = pcmk__xe_first_child(nvpair_list, PCMK__XE_PARAM, NULL, NULL); child != NULL; child = pcmk__xe_next(child, PCMK__XE_PARAM)) { - const char *key = crm_element_value(child, PCMK_XA_NAME); - const char *value = crm_element_value(child, PCMK_XA_VALUE); + const char *key = pcmk__xe_get(child, PCMK_XA_NAME); + const char *value = pcmk__xe_get(child, PCMK_XA_VALUE); crm_trace("Added %s=%s", key, value); if (key != NULL && value != NULL) { @@ -405,8 +405,8 @@ unpack_nvpair(xmlNode *nvpair, void *userdata) return pcmk_rc_ok; } - name = crm_element_value(ref_nvpair, PCMK_XA_NAME); - value = crm_element_value(ref_nvpair, PCMK_XA_VALUE); + name = pcmk__xe_get(ref_nvpair, PCMK_XA_NAME); + value = pcmk__xe_get(ref_nvpair, PCMK_XA_VALUE); if ((name == NULL) || (value == NULL)) { return pcmk_rc_ok; // Not possible with schema validation enabled } @@ -631,8 +631,7 @@ pcmk__cmp_nvpair_blocks(gconstpointer a, gconstpointer b, gpointer user_data) pcmk__config_warn("Using 0 as %s score because '%s' " "is not a valid score: %s", pcmk__xe_id(pair_a), - crm_element_value(pair_a, PCMK_XA_SCORE), - pcmk_rc_str(rc)); + pcmk__xe_get(pair_a, PCMK_XA_SCORE), pcmk_rc_str(rc)); } rc = pcmk__xe_get_score(pair_b, PCMK_XA_SCORE, &score_b, 0); @@ -640,8 +639,7 @@ pcmk__cmp_nvpair_blocks(gconstpointer a, gconstpointer b, gpointer user_data) pcmk__config_warn("Using 0 as %s score because '%s' " "is not a valid score: %s", pcmk__xe_id(pair_b), - crm_element_value(pair_b, PCMK_XA_SCORE), - pcmk_rc_str(rc)); + pcmk__xe_get(pair_b, PCMK_XA_SCORE), pcmk_rc_str(rc)); } if (score_a < score_b) { diff --git a/lib/common/patchset.c b/lib/common/patchset.c index 3d750decc87..191dbbd257c 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -119,7 +119,7 @@ add_xml_changes_to_patchset(xmlNode *xml, xmlNode *patchset) pIter = pIter->next) { nodepriv = pIter->_private; if (!pcmk_is_set(nodepriv->flags, pcmk__xf_deleted)) { - value = crm_element_value(xml, (const char *) pIter->name); + value = pcmk__xe_get(xml, (const char *) pIter->name); crm_xml_add(result, (const char *)pIter->name, value); } } @@ -208,7 +208,7 @@ xml_create_patchset_v2(xmlNode *source, xmlNode *target) v = pcmk__xe_create(version, PCMK_XE_SOURCE); for (lpc = 0; lpc < PCMK__NELEM(vfields); lpc++) { - const char *value = crm_element_value(source, vfields[lpc]); + const char *value = pcmk__xe_get(source, vfields[lpc]); if (value == NULL) { value = "1"; @@ -218,7 +218,7 @@ xml_create_patchset_v2(xmlNode *source, xmlNode *target) v = pcmk__xe_create(version, PCMK_XE_TARGET); for (lpc = 0; lpc < PCMK__NELEM(vfields); lpc++) { - const char *value = crm_element_value(target, vfields[lpc]); + const char *value = pcmk__xe_get(target, vfields[lpc]); if (value == NULL) { value = "1"; @@ -630,8 +630,8 @@ apply_v2_patchset(xmlNode *xml, const xmlNode *patchset) for (change = pcmk__xml_first_child(patchset); change != NULL; change = pcmk__xml_next(change)) { xmlNode *match = NULL; - const char *op = crm_element_value(change, PCMK_XA_OPERATION); - const char *xpath = crm_element_value(change, PCMK_XA_PATH); + const char *op = pcmk__xe_get(change, PCMK_XA_OPERATION); + const char *xpath = pcmk__xe_get(change, PCMK_XA_PATH); int position = -1; if (op == NULL) { @@ -718,8 +718,8 @@ apply_v2_patchset(xmlNode *xml, const xmlNode *patchset) change = change_obj->change; - op = crm_element_value(change, PCMK_XA_OPERATION); - xpath = crm_element_value(change, PCMK_XA_PATH); + op = pcmk__xe_get(change, PCMK_XA_OPERATION); + xpath = pcmk__xe_get(change, PCMK_XA_PATH); crm_trace("Continue performing %s on %s with %p", op, xpath, match); @@ -821,7 +821,7 @@ xml_apply_patchset(xmlNode *xml, const xmlNode *patchset, bool check_version) } } - digest = crm_element_value(patchset, PCMK__XA_DIGEST); + digest = pcmk__xe_get(patchset, PCMK__XA_DIGEST); if (digest != NULL) { /* Make original XML available for logging in case result doesn't have * expected digest @@ -912,8 +912,8 @@ pcmk__cib_element_in_patchset(const xmlNode *patchset, const char *element) NULL, NULL); change != NULL; change = pcmk__xe_next(change, PCMK_XE_CHANGE)) { - const char *op = crm_element_value(change, PCMK_XA_OPERATION); - const char *diff_xpath = crm_element_value(change, PCMK_XA_PATH); + const char *op = pcmk__xe_get(change, PCMK_XA_OPERATION); + const char *diff_xpath = pcmk__xe_get(change, PCMK_XA_PATH); if (pcmk__str_eq(diff_xpath, element_regex, pcmk__str_regex)) { // Change to an existing element diff --git a/lib/common/patchset_display.c b/lib/common/patchset_display.c index 1919077d245..4a2883f4a0a 100644 --- a/lib/common/patchset_display.c +++ b/lib/common/patchset_display.c @@ -47,8 +47,8 @@ xml_show_patchset_header(pcmk__output_t *out, const xmlNode *patchset) pcmk__xml_patchset_versions(patchset, del, add); if ((add[0] != del[0]) || (add[1] != del[1]) || (add[2] != del[2])) { - const char *fmt = crm_element_value(patchset, PCMK_XA_FORMAT); - const char *digest = crm_element_value(patchset, PCMK__XA_DIGEST); + const char *fmt = pcmk__xe_get(patchset, PCMK_XA_FORMAT); + const char *digest = pcmk__xe_get(patchset, PCMK__XA_DIGEST); out->info(out, "Diff: --- %d.%d.%d %s", del[0], del[1], del[2], fmt); rc = out->info(out, "Diff: +++ %d.%d.%d %s", @@ -86,8 +86,8 @@ xml_show_patchset(pcmk__output_t *out, const xmlNode *patchset) NULL); change != NULL; change = pcmk__xe_next(change, NULL)) { - const char *op = crm_element_value(change, PCMK_XA_OPERATION); - const char *xpath = crm_element_value(change, PCMK_XA_PATH); + const char *op = pcmk__xe_get(change, PCMK_XA_OPERATION); + const char *xpath = pcmk__xe_get(change, PCMK_XA_PATH); if (op == NULL) { continue; @@ -114,7 +114,7 @@ xml_show_patchset(pcmk__output_t *out, const xmlNode *patchset) free(prefix); } else if (strcmp(op, PCMK_VALUE_MOVE) == 0) { - const char *position = crm_element_value(change, PCMK_XE_POSITION); + const char *position = pcmk__xe_get(change, PCMK_XE_POSITION); temp_rc = out->info(out, PCMK__XML_PREFIX_MOVED " %s moved to offset %s", @@ -131,15 +131,15 @@ xml_show_patchset(pcmk__output_t *out, const xmlNode *patchset) NULL); child != NULL; child = pcmk__xe_next(child, NULL)) { - const char *name = crm_element_value(child, PCMK_XA_NAME); + const char *name = pcmk__xe_get(child, PCMK_XA_NAME); - op = crm_element_value(child, PCMK_XA_OPERATION); + op = pcmk__xe_get(child, PCMK_XA_OPERATION); if (op == NULL) { continue; } if (strcmp(op, "set") == 0) { - const char *value = crm_element_value(child, PCMK_XA_VALUE); + const char *value = pcmk__xe_get(child, PCMK_XA_VALUE); pcmk__add_separated_word(&buffer_set, 256, "@", ", "); pcmk__g_strcat(buffer_set, name, "=", value, NULL); diff --git a/lib/common/probes.c b/lib/common/probes.c index 65298a91786..2b513a44eaa 100644 --- a/lib/common/probes.c +++ b/lib/common/probes.c @@ -51,11 +51,9 @@ pcmk_xe_is_probe(const xmlNode *xml) return false; } - pcmk__scan_min_int(crm_element_value(xml, PCMK_META_INTERVAL), - &interval_ms, 0); + pcmk__scan_min_int(pcmk__xe_get(xml, PCMK_META_INTERVAL), &interval_ms, 0); - return pcmk_is_probe(crm_element_value(xml, PCMK_XA_OPERATION), - interval_ms); + return pcmk_is_probe(pcmk__xe_get(xml, PCMK_XA_OPERATION), interval_ms); } /*! diff --git a/lib/common/rules.c b/lib/common/rules.c index e79ecb45aee..e97ce52cda6 100644 --- a/lib/common/rules.c +++ b/lib/common/rules.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. * @@ -59,7 +59,7 @@ pcmk__condition_type(const xmlNode *condition) // Expression types based on node attribute name - name = crm_element_value(condition, PCMK_XA_ATTRIBUTE); + name = pcmk__xe_get(condition, PCMK_XA_ATTRIBUTE); if (pcmk__str_any_of(name, CRM_ATTR_UNAME, CRM_ATTR_KIND, CRM_ATTR_ID, NULL)) { @@ -112,7 +112,7 @@ check_range(const xmlNode *date_spec, const char *id, const char *attr, uint32_t value) { int rc = pcmk_rc_ok; - const char *range = crm_element_value(date_spec, attr); + const char *range = pcmk__xe_get(date_spec, attr); long long low, high; if (range == NULL) { @@ -486,7 +486,7 @@ pcmk__evaluate_date_expression(const xmlNode *date_expression, return pcmk_rc_unpack_error; } - op = crm_element_value(date_expression, PCMK_XA_OPERATION); + op = pcmk__xe_get(date_expression, PCMK_XA_OPERATION); if (pcmk__str_eq(op, PCMK_VALUE_IN_RANGE, pcmk__str_null_matches|pcmk__str_casei)) { rc = evaluate_in_range(date_expression, id, now, next_change); @@ -988,7 +988,7 @@ pcmk__evaluate_attr_expression(const xmlNode *expression, /* Get name of node attribute to compare (expanding any %0-%9 to * regular expression submatches) */ - attr = crm_element_value(expression, PCMK_XA_ATTRIBUTE); + attr = pcmk__xe_get(expression, PCMK_XA_ATTRIBUTE); if (attr == NULL) { pcmk__config_err("Treating " PCMK_XE_EXPRESSION " %s as not passing " "because " PCMK_XA_ATTRIBUTE " was not specified", id); @@ -1002,7 +1002,7 @@ pcmk__evaluate_attr_expression(const xmlNode *expression, } // Get and validate operation - op = crm_element_value(expression, PCMK_XA_OPERATION); + op = pcmk__xe_get(expression, PCMK_XA_OPERATION); comparison = pcmk__parse_comparison(op); if (comparison == pcmk__comparison_unknown) { // Not possible with schema validation enabled @@ -1020,7 +1020,7 @@ pcmk__evaluate_attr_expression(const xmlNode *expression, } // How reference value is obtained (literal, resource meta-attribute, etc.) - source_s = crm_element_value(expression, PCMK_XA_VALUE_SOURCE); + source_s = pcmk__xe_get(expression, PCMK_XA_VALUE_SOURCE); source = pcmk__parse_source(source_s); if (source == pcmk__source_unknown) { // Not possible with schema validation enabled @@ -1032,7 +1032,7 @@ pcmk__evaluate_attr_expression(const xmlNode *expression, } // Get and validate reference value - value = crm_element_value(expression, PCMK_XA_VALUE); + value = pcmk__xe_get(expression, PCMK_XA_VALUE); switch (comparison) { case pcmk__comparison_defined: case pcmk__comparison_undefined: @@ -1065,7 +1065,7 @@ pcmk__evaluate_attr_expression(const xmlNode *expression, } // Get and validate value type (after expanding reference value) - type_s = crm_element_value(expression, PCMK_XA_TYPE); + type_s = pcmk__xe_get(expression, PCMK_XA_TYPE); type = pcmk__parse_type(type_s, comparison, actual, reference); if (type == pcmk__type_unknown) { // Not possible with schema validation enabled @@ -1129,7 +1129,7 @@ pcmk__evaluate_rsc_expression(const xmlNode *rsc_expression, } // Compare resource standard - standard = crm_element_value(rsc_expression, PCMK_XA_CLASS); + standard = pcmk__xe_get(rsc_expression, PCMK_XA_CLASS); if ((standard != NULL) && !pcmk__str_eq(standard, rule_input->rsc_standard, pcmk__str_none)) { crm_trace(PCMK_XE_RSC_EXPRESSION " %s is unsatisfied because " @@ -1139,7 +1139,7 @@ pcmk__evaluate_rsc_expression(const xmlNode *rsc_expression, } // Compare resource provider - provider = crm_element_value(rsc_expression, PCMK_XA_PROVIDER); + provider = pcmk__xe_get(rsc_expression, PCMK_XA_PROVIDER); if ((provider != NULL) && !pcmk__str_eq(provider, rule_input->rsc_provider, pcmk__str_none)) { crm_trace(PCMK_XE_RSC_EXPRESSION " %s is unsatisfied because " @@ -1149,7 +1149,7 @@ pcmk__evaluate_rsc_expression(const xmlNode *rsc_expression, } // Compare resource agent type - type = crm_element_value(rsc_expression, PCMK_XA_TYPE); + type = pcmk__xe_get(rsc_expression, PCMK_XA_TYPE); if ((type != NULL) && !pcmk__str_eq(type, rule_input->rsc_agent, pcmk__str_none)) { crm_trace(PCMK_XE_RSC_EXPRESSION " %s is unsatisfied because " @@ -1197,7 +1197,7 @@ pcmk__evaluate_op_expression(const xmlNode *op_expression, } // Validate operation name - name = crm_element_value(op_expression, PCMK_XA_NAME); + name = pcmk__xe_get(op_expression, PCMK_XA_NAME); if (name == NULL) { // Not possible with schema validation enabled pcmk__config_err("Treating " PCMK_XE_OP_EXPRESSION " %s as not " "passing because it has no " PCMK_XA_NAME, id); @@ -1205,7 +1205,7 @@ pcmk__evaluate_op_expression(const xmlNode *op_expression, } // Validate operation interval - interval_s = crm_element_value(op_expression, PCMK_META_INTERVAL); + interval_s = pcmk__xe_get(op_expression, PCMK_META_INTERVAL); if (pcmk_parse_interval_spec(interval_s, &interval_ms) != pcmk_rc_ok) { pcmk__config_err("Treating " PCMK_XE_OP_EXPRESSION " %s as not " "passing because '%s' is not a valid " @@ -1328,7 +1328,7 @@ pcmk_evaluate_rule(xmlNode *rule, const pcmk_rule_input_t *rule_input, return pcmk_rc_unpack_error; } - value = crm_element_value(rule, PCMK_XA_BOOLEAN_OP); + value = pcmk__xe_get(rule, PCMK_XA_BOOLEAN_OP); combine = pcmk__parse_combine(value); switch (combine) { case pcmk__combine_and: diff --git a/lib/common/schemas.c b/lib/common/schemas.c index 9e3f1c04626..0cb33fdae26 100644 --- a/lib/common/schemas.c +++ b/lib/common/schemas.c @@ -832,7 +832,7 @@ pcmk__validate_xml(xmlNode *xml_blob, const char *validation, CRM_CHECK((xml_blob != NULL) && (xml_blob->doc != NULL), return false); if (validation == NULL) { - validation = crm_element_value(xml_blob, PCMK_XA_VALIDATE_WITH); + validation = pcmk__xe_get(xml_blob, PCMK_XA_VALIDATE_WITH); } pcmk__warn_if_schema_deprecated(validation); @@ -1120,7 +1120,7 @@ apply_upgrade(const xmlNode *input_xml, int schema_index, gboolean to_logs) static GList * get_configured_schema(const xmlNode *xml) { - const char *schema_name = crm_element_value(xml, PCMK_XA_VALIDATE_WITH); + const char *schema_name = pcmk__xe_get(xml, PCMK_XA_VALIDATE_WITH); pcmk__warn_if_schema_deprecated(schema_name); return pcmk__get_schema(schema_name); @@ -1278,8 +1278,7 @@ pcmk__update_configured_schema(xmlNode **xml, bool to_logs) entry = NULL; converted = pcmk__xml_copy(NULL, *xml); if (pcmk__update_schema(&converted, NULL, true, to_logs) == pcmk_rc_ok) { - new_schema_name = crm_element_value(converted, - PCMK_XA_VALIDATE_WITH); + new_schema_name = pcmk__xe_get(converted, PCMK_XA_VALIDATE_WITH); entry = pcmk__get_schema(new_schema_name); } schema = (entry == NULL)? NULL : entry->data; @@ -1585,7 +1584,7 @@ cli_config_update(xmlNode **xml, int *best_version, gboolean to_logs) int rc = pcmk__update_configured_schema(xml, to_logs); if (best_version != NULL) { - const char *name = crm_element_value(*xml, PCMK_XA_VALIDATE_WITH); + const char *name = pcmk__xe_get(*xml, PCMK_XA_VALIDATE_WITH); if (name == NULL) { *best_version = -1; diff --git a/lib/common/tests/messages/pcmk__new_message_as_test.c b/lib/common/tests/messages/pcmk__new_message_as_test.c index f8a64255b2d..0f28f97660c 100644 --- a/lib/common/tests/messages/pcmk__new_message_as_test.c +++ b/lib/common/tests/messages/pcmk__new_message_as_test.c @@ -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 // xmlNode #include // pcmk_ipc_controld -#include // crm_element_value() #include // pcmk__new_message_as() #include // pcmk__server_message_type() #include // pcmk__xe_create(), etc. @@ -42,19 +41,18 @@ optional_arguments_null(void **state) message = pcmk__new_message_as("fn", pcmk_ipc_controld, NULL, "ss", NULL, NULL, "op", NULL); assert_non_null(message); - assert_string_equal(crm_element_value(message, PCMK_XA_ORIGIN), "fn"); - assert_string_equal(crm_element_value(message, PCMK__XA_T), + assert_string_equal(pcmk__xe_get(message, PCMK_XA_ORIGIN), "fn"); + assert_string_equal(pcmk__xe_get(message, PCMK__XA_T), pcmk__server_message_type(pcmk_ipc_controld)); - assert_string_equal(crm_element_value(message, PCMK__XA_SUBT), + assert_string_equal(pcmk__xe_get(message, PCMK__XA_SUBT), PCMK__VALUE_REQUEST); - assert_string_equal(crm_element_value(message, PCMK_XA_VERSION), + assert_string_equal(pcmk__xe_get(message, PCMK_XA_VERSION), CRM_FEATURE_SET); - assert_non_null(crm_element_value(message, PCMK_XA_REFERENCE)); - assert_string_equal(crm_element_value(message, PCMK__XA_CRM_SYS_FROM), - "ss"); - assert_null(crm_element_value(message, PCMK__XA_CRM_HOST_TO)); - assert_null(crm_element_value(message, PCMK__XA_CRM_SYS_TO)); - assert_string_equal(crm_element_value(message, PCMK__XA_CRM_TASK), "op"); + assert_non_null(pcmk__xe_get(message, PCMK_XA_REFERENCE)); + assert_string_equal(pcmk__xe_get(message, PCMK__XA_CRM_SYS_FROM), "ss"); + assert_null(pcmk__xe_get(message, PCMK__XA_CRM_HOST_TO)); + assert_null(pcmk__xe_get(message, PCMK__XA_CRM_SYS_TO)); + assert_string_equal(pcmk__xe_get(message, PCMK__XA_CRM_TASK), "op"); assert_null(message->children); pcmk__xml_free(message); } @@ -70,10 +68,9 @@ optional_arguments_nonnull(void **state) pcmk__xml_free(data); assert_non_null(message); - assert_string_equal(crm_element_value(message, PCMK_XA_REFERENCE), "rt"); - assert_string_equal(crm_element_value(message, PCMK__XA_CRM_HOST_TO), - "node1"); - assert_string_equal(crm_element_value(message, PCMK__XA_CRM_SYS_TO), "rs"); + assert_string_equal(pcmk__xe_get(message, PCMK_XA_REFERENCE), "rt"); + assert_string_equal(pcmk__xe_get(message, PCMK__XA_CRM_HOST_TO), "node1"); + assert_string_equal(pcmk__xe_get(message, PCMK__XA_CRM_SYS_TO), "rs"); assert_non_null(message->children); assert_null(message->children->next); assert_string_equal((const char *) (message->children->name), diff --git a/lib/common/tests/nvpair/pcmk__xe_set_bool_attr_test.c b/lib/common/tests/nvpair/pcmk__xe_set_bool_attr_test.c index 37527a73921..8cd5a72f610 100644 --- a/lib/common/tests/nvpair/pcmk__xe_set_bool_attr_test.c +++ b/lib/common/tests/nvpair/pcmk__xe_set_bool_attr_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2021-2024 the Pacemaker project contributors + * Copyright 2021-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -21,8 +21,8 @@ set_attr(void **state) pcmk__xe_set_bool_attr(node, "a", true); pcmk__xe_set_bool_attr(node, "b", false); - assert_string_equal(crm_element_value(node, "a"), PCMK_VALUE_TRUE); - assert_string_equal(crm_element_value(node, "b"), PCMK_VALUE_FALSE); + assert_string_equal(pcmk__xe_get(node, "a"), PCMK_VALUE_TRUE); + assert_string_equal(pcmk__xe_get(node, "b"), PCMK_VALUE_FALSE); pcmk__xml_free(node); } diff --git a/lib/common/tests/schemas/pcmk__build_schema_xml_node_test.c b/lib/common/tests/schemas/pcmk__build_schema_xml_node_test.c index 9cb29ad7b2f..17ff072eb8b 100644 --- a/lib/common/tests/schemas/pcmk__build_schema_xml_node_test.c +++ b/lib/common/tests/schemas/pcmk__build_schema_xml_node_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2023-2024 the Pacemaker project contributors + * Copyright 2023-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -85,12 +85,11 @@ single_schema(void **state) */ schema_node = pcmk__xe_first_child(parent, NULL, NULL, NULL); assert_string_equal("pacemaker-3.0", - crm_element_value(schema_node, PCMK_XA_VERSION)); + pcmk__xe_get(schema_node, PCMK_XA_VERSION)); file_node = pcmk__xe_first_child(schema_node, NULL, NULL, NULL); while (file_node != NULL && rngs1[i] != NULL) { - assert_string_equal(rngs1[i], - crm_element_value(file_node, PCMK_XA_PATH)); + assert_string_equal(rngs1[i], pcmk__xe_get(file_node, PCMK_XA_PATH)); assert_int_equal(pcmk__xml_first_child(file_node)->type, XML_CDATA_SECTION_NODE); file_node = pcmk__xe_next(file_node, NULL); @@ -121,12 +120,11 @@ multiple_schemas(void **state) */ schema_node = pcmk__xe_first_child(parent, NULL, NULL, NULL); assert_string_equal("pacemaker-2.0", - crm_element_value(schema_node, PCMK_XA_VERSION)); + pcmk__xe_get(schema_node, PCMK_XA_VERSION)); file_node = pcmk__xe_first_child(schema_node, NULL, NULL, NULL); while (file_node != NULL && rngs2[i] != NULL) { - assert_string_equal(rngs2[i], - crm_element_value(file_node, PCMK_XA_PATH)); + assert_string_equal(rngs2[i], pcmk__xe_get(file_node, PCMK_XA_PATH)); assert_int_equal(pcmk__xml_first_child(file_node)->type, XML_CDATA_SECTION_NODE); file_node = pcmk__xe_next(file_node, NULL); @@ -135,14 +133,13 @@ multiple_schemas(void **state) schema_node = pcmk__xe_next(schema_node, NULL); assert_string_equal("pacemaker-2.1", - crm_element_value(schema_node, PCMK_XA_VERSION)); + pcmk__xe_get(schema_node, PCMK_XA_VERSION)); file_node = pcmk__xe_first_child(schema_node, NULL, NULL, NULL); i = 0; while (file_node != NULL && rngs3[i] != NULL) { - assert_string_equal(rngs3[i], - crm_element_value(file_node, PCMK_XA_PATH)); + assert_string_equal(rngs3[i], pcmk__xe_get(file_node, PCMK_XA_PATH)); assert_int_equal(pcmk__xml_first_child(file_node)->type, XML_CDATA_SECTION_NODE); file_node = pcmk__xe_next(file_node, NULL); diff --git a/lib/common/tests/xml_element/pcmk__xe_copy_attrs_test.c b/lib/common/tests/xml_element/pcmk__xe_copy_attrs_test.c index a66098ed108..7745ff45833 100644 --- a/lib/common/tests/xml_element/pcmk__xe_copy_attrs_test.c +++ b/lib/common/tests/xml_element/pcmk__xe_copy_attrs_test.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. * @@ -42,7 +42,7 @@ no_source_attrs(void **state) crm_xml_add(target, "attr", "value"); assert_int_equal(pcmk__xe_copy_attrs(target, src, pcmk__xaf_none), pcmk_rc_ok); - assert_string_equal(crm_element_value(target, "attr"), "value"); + assert_string_equal(pcmk__xe_get(target, "attr"), "value"); pcmk__xml_free(src); pcmk__xml_free(target); @@ -58,8 +58,8 @@ copy_one(void **state) assert_int_equal(pcmk__xe_copy_attrs(target, src, pcmk__xaf_none), pcmk_rc_ok); - assert_string_equal(crm_element_value(src, "attr"), - crm_element_value(target, "attr")); + assert_string_equal(pcmk__xe_get(src, "attr"), + pcmk__xe_get(target, "attr")); pcmk__xml_free(src); pcmk__xml_free(target); @@ -79,12 +79,12 @@ copy_multiple(void **state) assert_int_equal(pcmk__xe_copy_attrs(target, src, pcmk__xaf_none), pcmk_rc_ok); - assert_string_equal(crm_element_value(src, "attr1"), - crm_element_value(target, "attr1")); - assert_string_equal(crm_element_value(src, "attr2"), - crm_element_value(target, "attr2")); - assert_string_equal(crm_element_value(src, "attr3"), - crm_element_value(target, "attr3")); + assert_string_equal(pcmk__xe_get(src, "attr1"), + pcmk__xe_get(target, "attr1")); + assert_string_equal(pcmk__xe_get(src, "attr2"), + pcmk__xe_get(target, "attr2")); + assert_string_equal(pcmk__xe_get(src, "attr3"), + pcmk__xe_get(target, "attr3")); pcmk__xml_free(src); pcmk__xml_free(target); @@ -102,8 +102,8 @@ overwrite(void **state) // Overwrite enabled by default assert_int_equal(pcmk__xe_copy_attrs(target, src, pcmk__xaf_none), pcmk_rc_ok); - assert_string_equal(crm_element_value(src, "attr"), - crm_element_value(target, "attr")); + assert_string_equal(pcmk__xe_get(src, "attr"), + pcmk__xe_get(target, "attr")); pcmk__xml_free(src); pcmk__xml_free(target); } @@ -119,16 +119,16 @@ no_overwrite(void **state) assert_int_equal(pcmk__xe_copy_attrs(target, src, pcmk__xaf_no_overwrite), pcmk_rc_ok); - assert_string_not_equal(crm_element_value(src, "attr"), - crm_element_value(target, "attr")); + assert_string_not_equal(pcmk__xe_get(src, "attr"), + pcmk__xe_get(target, "attr")); // no_overwrite doesn't prevent copy if there's no conflict pcmk__xe_remove_attr(target, "attr"); assert_int_equal(pcmk__xe_copy_attrs(target, src, pcmk__xaf_no_overwrite), pcmk_rc_ok); - assert_string_equal(crm_element_value(src, "attr"), - crm_element_value(target, "attr")); + assert_string_equal(pcmk__xe_get(src, "attr"), + pcmk__xe_get(target, "attr")); pcmk__xml_free(src); pcmk__xml_free(target); @@ -147,8 +147,8 @@ score_update(void **state) assert_int_equal(pcmk__xe_copy_attrs(target, src, pcmk__xaf_score_update), pcmk_rc_ok); - assert_string_equal(crm_element_value(target, "plus_plus_attr"), "2"); - assert_string_equal(crm_element_value(target, "plus_two_attr"), "3"); + assert_string_equal(pcmk__xe_get(target, "plus_plus_attr"), "2"); + assert_string_equal(pcmk__xe_get(target, "plus_two_attr"), "3"); pcmk__xml_free(src); pcmk__xml_free(target); @@ -168,9 +168,9 @@ no_score_update(void **state) // Score update disabled by default assert_int_equal(pcmk__xe_copy_attrs(target, src, pcmk__xaf_none), pcmk_rc_ok); - assert_string_equal(crm_element_value(target, "plus_plus_attr"), + assert_string_equal(pcmk__xe_get(target, "plus_plus_attr"), "plus_plus_attr++"); - assert_string_equal(crm_element_value(target, "plus_two_attr"), + assert_string_equal(pcmk__xe_get(target, "plus_two_attr"), "plus_two_attr+=2"); pcmk__xml_free(src); diff --git a/lib/common/tests/xml_element/pcmk__xe_first_child_test.c b/lib/common/tests/xml_element/pcmk__xe_first_child_test.c index 0cb1c703a67..41ea91b1177 100644 --- a/lib/common/tests/xml_element/pcmk__xe_first_child_test.c +++ b/lib/common/tests/xml_element/pcmk__xe_first_child_test.c @@ -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. * @@ -71,12 +71,12 @@ find_attrB(void **state) { /* Find the first node with attrB */ result = pcmk__xe_first_child(xml, NULL, "attrB", NULL); assert_non_null(result); - assert_string_equal(crm_element_value(result, PCMK_XA_ID), "3"); + assert_string_equal(pcmk__xe_get(result, PCMK_XA_ID), "3"); /* Find the first nodeB with attrB */ result = pcmk__xe_first_child(xml, "nodeB", "attrB", NULL); assert_non_null(result); - assert_string_equal(crm_element_value(result, PCMK_XA_ID), "5"); + assert_string_equal(pcmk__xe_get(result, PCMK_XA_ID), "5"); pcmk__xml_free(xml); } @@ -89,12 +89,12 @@ find_attrA_matching(void **state) { /* Find attrA=456 */ result = pcmk__xe_first_child(xml, NULL, "attrA", "456"); assert_non_null(result); - assert_string_equal(crm_element_value(result, PCMK_XA_ID), "2"); + assert_string_equal(pcmk__xe_get(result, PCMK_XA_ID), "2"); /* Find a nodeB with attrA=123 */ result = pcmk__xe_first_child(xml, "nodeB", "attrA", "123"); assert_non_null(result); - assert_string_equal(crm_element_value(result, PCMK_XA_ID), "4"); + assert_string_equal(pcmk__xe_get(result, PCMK_XA_ID), "4"); pcmk__xml_free(xml); } diff --git a/lib/common/tests/xml_element/pcmk__xe_set_score_test.c b/lib/common/tests/xml_element/pcmk__xe_set_score_test.c index 62a88939609..0f000463238 100644 --- a/lib/common/tests/xml_element/pcmk__xe_set_score_test.c +++ b/lib/common/tests/xml_element/pcmk__xe_set_score_test.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. * @@ -35,7 +35,7 @@ assert_set_score(const char *initial, const char *new, crm_xml_add(test_xml, name, initial); assert_int_equal(pcmk__xe_set_score(test_xml, name, new), reference_rc); - assert_string_equal(crm_element_value(test_xml, name), reference_val); + assert_string_equal(pcmk__xe_get(test_xml, name), reference_val); pcmk__xml_free(test_xml); } @@ -70,7 +70,7 @@ name_is_NULL(void **state) // Dumps core via CRM_CHECK() assert_int_equal(pcmk__xe_set_score(test_xml, NULL, "X++"), EINVAL); - assert_string_equal(crm_element_value(test_xml, "X"), "5"); + assert_string_equal(pcmk__xe_get(test_xml, "X"), "5"); pcmk__xml_free(test_xml); } diff --git a/lib/common/tests/xml_idref/pcmk__xe_dereference_children_test.c b/lib/common/tests/xml_idref/pcmk__xe_dereference_children_test.c index 70a35a4ae1f..9f41f2f1c58 100644 --- a/lib/common/tests/xml_idref/pcmk__xe_dereference_children_test.c +++ b/lib/common/tests/xml_idref/pcmk__xe_dereference_children_test.c @@ -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. * @@ -59,8 +59,8 @@ assert_deref(const char *xml_string, const char *element_name, ...) assert_null(list); } else { while (list != NULL) { - const char *value = crm_element_value((xmlNode *) list->data, - "testattr"); + const char *value = pcmk__xe_get((xmlNode *) list->data, + "testattr"); assert_true(g_hash_table_remove(table, value)); list = list->next; diff --git a/lib/common/xml.c b/lib/common/xml.c index 7edeb298170..57f71a16a93 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -1212,7 +1212,7 @@ xml_diff_old_attrs(xmlNode *old_xml, xmlNode *new_xml) pcmk__xf_skip); int old_pos = pcmk__xml_position((xmlNode*) old_attr, pcmk__xf_skip); - const char *new_value = crm_element_value(new_xml, name); + const char *new_value = pcmk__xe_get(new_xml, name); // This attribute isn't new pcmk__clear_xml_flags(nodepriv, pcmk__xf_created); diff --git a/lib/common/xml_display.c b/lib/common/xml_display.c index d6865f7474a..cee9e667de0 100644 --- a/lib/common/xml_display.c +++ b/lib/common/xml_display.c @@ -95,7 +95,7 @@ show_xml_element(pcmk__output_t *out, GString *buffer, const char *prefix, int rc = pcmk_rc_no_output; if (pcmk_is_set(options, pcmk__xml_fmt_open)) { - const char *hidden = crm_element_value(data, PCMK__XA_HIDDEN); + const char *hidden = pcmk__xe_get(data, PCMK__XA_HIDDEN); g_string_truncate(buffer, 0); diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index 7c395a4e94a..9e850d65834 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -68,7 +68,7 @@ pcmk__xe_first_child(const xmlNode *parent, const char *node_name, return child; } - value = crm_element_value(child, attr_n); + value = pcmk__xe_get(child, attr_n); if ((attr_v == NULL) && (value != NULL)) { // attr_v == NULL: Attribute attr_n must be set (to any value) @@ -133,7 +133,7 @@ pcmk__xe_get_score(const xmlNode *xml, const char *name, int *score, const char *value = NULL; CRM_CHECK((xml != NULL) && (name != NULL), return EINVAL); - value = crm_element_value(xml, name); + value = pcmk__xe_get(xml, name); return pcmk_parse_score(value, score, default_score); } @@ -180,7 +180,7 @@ pcmk__xe_set_score(xmlNode *target, const char *name, const char *value) return pcmk_rc_ok; } - old_value = crm_element_value(target, name); + old_value = pcmk__xe_get(target, name); // If no previous value, skip to default case and set the value unexpanded. if (old_value != NULL) { @@ -258,7 +258,7 @@ pcmk__xe_copy_attrs(xmlNode *target, const xmlNode *src, uint32_t flags) const char *value = pcmk__xml_attr_value(attr); if (pcmk_is_set(flags, pcmk__xaf_no_overwrite) - && (crm_element_value(target, name) != NULL)) { + && (pcmk__xe_get(target, name) != NULL)) { continue; } @@ -595,7 +595,7 @@ update_xe(xmlNode *parent, xmlNode *target, xmlNode *update, uint32_t flags) update_id_attr = PCMK_XA_ID; } else { - update_id_val = crm_element_value(update, PCMK_XA_ID_REF); + update_id_val = pcmk__xe_get(update, PCMK_XA_ID_REF); if (update_id_val != NULL) { update_id_attr = PCMK_XA_ID_REF; } @@ -679,7 +679,7 @@ delete_xe_if_matching(xmlNode *xml, void *user_data) attr = attr->next) { const char *search_val = pcmk__xml_attr_value(attr); - const char *xml_val = crm_element_value(xml, (const char *) attr->name); + const char *xml_val = pcmk__xe_get(xml, (const char *) attr->name); if (!pcmk__str_eq(search_val, xml_val, pcmk__str_casei)) { // No match: an attr in xml doesn't match the attr in search @@ -1026,7 +1026,7 @@ crm_xml_add(xmlNode *node, const char *name, const char *value) } if (pcmk__xml_doc_all_flags_set(node->doc, pcmk__xf_tracking)) { - const char *old = crm_element_value(node, name); + const char *old = pcmk__xe_get(node, name); if (old == NULL || value == NULL || strcmp(old, value) != 0) { dirty = TRUE; @@ -1186,12 +1186,35 @@ crm_element_value(const xmlNode *data, const char *name) return (const char *) attr->children->content; } +/*! + * \internal + * \brief Retrieve the value of an XML attribute + * + * \param[in] xml XML element whose attribute to get + * \param[in] attr_name Attribute name + * + * \return Value of specified attribute (may be \c NULL) + */ +const char * +pcmk__xe_get(const xmlNode *xml, const char *attr_name) +{ + xmlAttr *attr = NULL; + + CRM_CHECK((xml != NULL) && (attr_name != NULL), return NULL); + + attr = xmlHasProp(xml, (const xmlChar *) attr_name); + if ((attr == NULL) || (attr->children == NULL)) { + return NULL; + } + + return (const char *) attr->children->content; +} + /*! * \internal * \brief Retrieve a flag group from an XML attribute value * - * This is like \c crm_element_value() except getting the value as a 32-bit - * unsigned integer. + * This is like \c pcmk__xe_get() but returns the value as a \c uint32_t. * * \param[in] xml XML node to check * \param[in] name Attribute name to check (must not be NULL) @@ -1219,7 +1242,7 @@ pcmk__xe_get_flags(const xmlNode *xml, const char *name, uint32_t *dest, if (xml == NULL) { return pcmk_rc_ok; } - value = crm_element_value(xml, name); + value = pcmk__xe_get(xml, name); if (value == NULL) { return pcmk_rc_ok; } @@ -1242,7 +1265,7 @@ pcmk__xe_get_flags(const xmlNode *xml, const char *name, uint32_t *dest, * \internal * \brief Retrieve a \c guint value from an XML attribute * - * This is like \c crm_element_value() but returns the value as a \c guint. + * This is like \c pcmk__xe_get() but returns the value as a \c guint. * * \param[in] xml XML element whose attribute to get * \param[in] attr Attribute name @@ -1274,7 +1297,7 @@ pcmk__xe_get_guint(const xmlNode *xml, const char *attr, guint *dest) * \internal * \brief Retrieve an \c int value from an XML attribute * - * This is like \c crm_element_value() but returns the value as an \c int. + * This is like \c pcmk__xe_get() but returns the value as an \c int. * * \param[in] xml XML element whose attribute to get * \param[in] attr Attribute name @@ -1307,8 +1330,7 @@ pcmk__xe_get_int(const xmlNode *xml, const char *attr, int *dest) * \internal * \brief Retrieve a long long value from an XML attribute * - * This is like \c crm_element_value() but returns the value as a - * long long + * This is like \c pcmk__xe_get() but returns the value as a long long. * * \param[in] xml XML element whose attribute to get * \param[in] attr Attribute name @@ -1325,7 +1347,7 @@ pcmk__xe_get_ll(const xmlNode *xml, const char *attr, long long *dest) CRM_CHECK((xml != NULL) && (attr != NULL) && (dest != NULL), return EINVAL); - value = crm_element_value(xml, attr); + value = pcmk__xe_get(xml, attr); if (value == NULL) { return ENXIO; } @@ -1343,7 +1365,7 @@ pcmk__xe_get_ll(const xmlNode *xml, const char *attr, long long *dest) * \internal * \brief Retrieve a \c time_t value from an XML attribute * - * This is like \c crm_element_value() but returns the value as a \c time_t. + * This is like \c pcmk__xe_get() but returns the value as a \c time_t. * * \param[in] xml XML element whose attribute to get * \param[in] attr Attribute name @@ -1377,7 +1399,7 @@ pcmk__xe_get_time(const xmlNode *xml, const char *attr, time_t *dest) * \internal * \brief Retrieve the values of XML second/microsecond attributes as time * - * This is like \c crm_element_value() but returns the value as a + * This is like \c pcmk__xe_get() but returns the value as a * struct timeval. * * \param[in] xml XML element whose attributes to get @@ -1439,7 +1461,7 @@ pcmk__xe_get_datetime(const xmlNode *xml, const char *attr, crm_time_t **t) return EINVAL; } - value = crm_element_value(xml, attr); + value = pcmk__xe_get(xml, attr); if (value != NULL) { *t = crm_time_new(value); if (*t == NULL) { @@ -1452,7 +1474,7 @@ pcmk__xe_get_datetime(const xmlNode *xml, const char *attr, crm_time_t **t) /*! * \brief Retrieve a copy of the value of an XML attribute * - * This is like \c crm_element_value() but allocating new memory for the result. + * This is like \c pcmk__xe_get() but allocating new memory for the result. * * \param[in] data XML node to check * \param[in] name Attribute name to check @@ -1463,7 +1485,8 @@ pcmk__xe_get_datetime(const xmlNode *xml, const char *attr, crm_time_t **t) char * crm_element_value_copy(const xmlNode *data, const char *name) { - return pcmk__str_copy(crm_element_value(data, name)); + CRM_CHECK((data != NULL) && (name != NULL), return NULL); + return pcmk__str_copy(pcmk__xe_get(data, name)); } /*! @@ -1507,7 +1530,7 @@ pcmk__xe_get_bool_attr(const xmlNode *node, const char *name, bool *value) return EINVAL; } - xml_value = crm_element_value(node, name); + xml_value = pcmk__xe_get(node, name); if (xml_value == NULL) { return ENODATA; diff --git a/lib/common/xml_idref.c b/lib/common/xml_idref.c index c91b4d5bd26..d8238e6d9af 100644 --- a/lib/common/xml_idref.c +++ b/lib/common/xml_idref.c @@ -92,7 +92,7 @@ pcmk__xe_resolve_idref(xmlNode *xml, xmlNode *search) return NULL; } - ref = crm_element_value(xml, PCMK_XA_ID_REF); + ref = pcmk__xe_get(xml, PCMK_XA_ID_REF); if (ref == NULL) { return xml; } diff --git a/lib/common/xpath.c b/lib/common/xpath.c index e774bc7525a..f57b43d5b0d 100644 --- a/lib/common/xpath.c +++ b/lib/common/xpath.c @@ -357,7 +357,7 @@ output_attr_child(xmlNode *child, void *userdata) pcmk__output_t *out = userdata; out->info(out, " Value: %s \t(id=%s)", - crm_element_value(child, PCMK_XA_VALUE), + pcmk__xe_get(child, PCMK_XA_VALUE), pcmk__s(pcmk__xe_id(child), "")); return pcmk_rc_ok; } diff --git a/lib/fencing/st_actions.c b/lib/fencing/st_actions.c index 846db2fa3bd..378f94e4a92 100644 --- a/lib/fencing/st_actions.c +++ b/lib/fencing/st_actions.c @@ -501,7 +501,7 @@ stonith__xe_get_result(const xmlNode *xml, pcmk__action_result_t *result) CRM_CHECK((xml != NULL) && (result != NULL), return); - exit_reason = crm_element_value(xml, PCMK_XA_EXIT_REASON); + exit_reason = pcmk__xe_get(xml, PCMK_XA_EXIT_REASON); action_stdout = crm_element_value_copy(xml, PCMK__XA_ST_OUTPUT); // A result must include an exit status and execution status diff --git a/lib/fencing/st_client.c b/lib/fencing/st_client.c index 70979020f67..1700bb93f47 100644 --- a/lib/fencing/st_client.c +++ b/lib/fencing/st_client.c @@ -578,8 +578,8 @@ stonith_api_query(stonith_t * stonith, int call_options, const char *target, crm_info("//*[@" PCMK_XA_AGENT "][%d] = %s", lpc, match_path); free(match_path); *devices = stonith_key_value_add(*devices, NULL, - crm_element_value(match, - PCMK_XA_ID)); + pcmk__xe_get(match, + PCMK_XA_ID)); } } @@ -637,7 +637,7 @@ stonith_api_list(stonith_t * stonith, int call_options, const char *id, char **l if (output && list_info) { const char *list_str; - list_str = crm_element_value(output, PCMK__XA_ST_OUTPUT); + list_str = pcmk__xe_get(output, PCMK__XA_ST_OUTPUT); if (list_str) { *list_info = strdup(list_str); @@ -1068,7 +1068,7 @@ stonith_dispatch_internal(const char *buffer, ssize_t length, gpointer userdata) } /* do callbacks */ - type = crm_element_value(blob.xml, PCMK__XA_T); + type = pcmk__xe_get(blob.xml, PCMK__XA_T); crm_trace("Activating %s callbacks...", type); if (pcmk__str_eq(type, PCMK__VALUE_STONITH_NG, pcmk__str_none)) { @@ -1163,7 +1163,7 @@ stonith_api_signon(stonith_t * stonith, const char *name, int *stonith_fd) rc = -EPROTO; } else { - const char *msg_type = crm_element_value(reply, PCMK__XA_ST_OP); + const char *msg_type = pcmk__xe_get(reply, PCMK__XA_ST_OP); native->token = crm_element_value_copy(reply, PCMK__XA_ST_CLIENTID); if (!pcmk__str_eq(msg_type, CRM_OP_REGISTER, pcmk__str_none)) { @@ -1505,7 +1505,7 @@ stonith_send_notification(gpointer data, gpointer user_data) return; } - event = crm_element_value(blob->xml, PCMK__XA_SUBT); + event = pcmk__xe_get(blob->xml, PCMK__XA_SUBT); if (entry == NULL) { crm_warn("Skipping callback - NULL callback client"); @@ -1588,7 +1588,7 @@ stonith_send_command(stonith_t * stonith, const char *op, xmlNode * data, xmlNod crm_trace("Sending %s message to fencer with timeout %ds", op, timeout); if (data) { - const char *delay_s = crm_element_value(data, PCMK__XA_ST_DELAY); + const char *delay_s = pcmk__xe_get(data, PCMK__XA_ST_DELAY); if (delay_s) { crm_xml_add(op_msg, PCMK__XA_ST_DELAY, delay_s); @@ -2458,7 +2458,7 @@ stonith__device_parameter_flags(uint32_t *device_flags, const char *device_name, continue; } - parameter = crm_element_value(match, PCMK_XA_NAME); + parameter = pcmk__xe_get(match, PCMK_XA_NAME); if (pcmk__str_eq(parameter, "plug", pcmk__str_casei)) { stonith__set_device_flags(*device_flags, device_name, diff --git a/lib/lrmd/lrmd_client.c b/lib/lrmd/lrmd_client.c index 4748e9845f3..2adec7f17a8 100644 --- a/lib/lrmd/lrmd_client.c +++ b/lib/lrmd/lrmd_client.c @@ -267,8 +267,7 @@ lrmd_dispatch_internal(gpointer data, gpointer user_data) lrmd_t *lrmd = user_data; const char *type; - const char *proxy_session = crm_element_value(msg, - PCMK__XA_LRMD_IPC_SESSION); + const char *proxy_session = pcmk__xe_get(msg, PCMK__XA_LRMD_IPC_SESSION); lrmd_private_t *native = lrmd->lrmd_private; lrmd_event_data_t event = { 0, }; @@ -283,9 +282,9 @@ lrmd_dispatch_internal(gpointer data, gpointer user_data) } event.remote_nodename = native->remote_nodename; - type = crm_element_value(msg, PCMK__XA_LRMD_OP); + type = pcmk__xe_get(msg, PCMK__XA_LRMD_OP); pcmk__xe_get_int(msg, PCMK__XA_LRMD_CALLID, &event.call_id); - event.rsc_id = crm_element_value(msg, PCMK__XA_LRMD_RSC_ID); + event.rsc_id = pcmk__xe_get(msg, PCMK__XA_LRMD_RSC_ID); if (pcmk__str_eq(type, LRMD_OP_RSC_REG, pcmk__str_none)) { event.type = lrmd_event_register; @@ -318,15 +317,14 @@ lrmd_dispatch_internal(gpointer data, gpointer user_data) CRM_LOG_ASSERT(queue_time >= 0); event.queue_time = QB_MAX(0, queue_time); - event.op_type = crm_element_value(msg, PCMK__XA_LRMD_RSC_ACTION); - event.user_data = crm_element_value(msg, - PCMK__XA_LRMD_RSC_USERDATA_STR); + event.op_type = pcmk__xe_get(msg, PCMK__XA_LRMD_RSC_ACTION); + event.user_data = pcmk__xe_get(msg, PCMK__XA_LRMD_RSC_USERDATA_STR); event.type = lrmd_event_exec_complete; /* output and exit_reason may be freed by a callback */ event.output = crm_element_value_copy(msg, PCMK__XA_LRMD_RSC_OUTPUT); lrmd__set_result(&event, event.rc, event.op_status, - crm_element_value(msg, PCMK__XA_LRMD_RSC_EXIT_REASON)); + pcmk__xe_get(msg, PCMK__XA_LRMD_RSC_EXIT_REASON)); event.params = xml2list(msg); } else if (pcmk__str_eq(type, LRMD_OP_NEW_CLIENT, pcmk__str_none)) { @@ -382,11 +380,11 @@ handle_remote_msg(xmlNode *xml, lrmd_t *lrmd) lrmd_private_t *native = lrmd->lrmd_private; const char *msg_type = NULL; - msg_type = crm_element_value(xml, PCMK__XA_LRMD_REMOTE_MSG_TYPE); + msg_type = pcmk__xe_get(xml, PCMK__XA_LRMD_REMOTE_MSG_TYPE); if (pcmk__str_eq(msg_type, "notify", pcmk__str_casei)) { lrmd_dispatch_internal(xml, lrmd); } else if (pcmk__str_eq(msg_type, "reply", pcmk__str_casei)) { - const char *op = crm_element_value(xml, PCMK__XA_LRMD_OP); + const char *op = pcmk__xe_get(xml, PCMK__XA_LRMD_OP); if (native->expected_late_replies > 0) { native->expected_late_replies--; @@ -710,7 +708,7 @@ read_remote_reply(lrmd_t *lrmd, int total_timeout, int expected_reply_id, } pcmk__xe_get_int(*reply, PCMK__XA_LRMD_REMOTE_MSG_ID, &reply_id); - msg_type = crm_element_value(*reply, PCMK__XA_LRMD_REMOTE_MSG_TYPE); + msg_type = pcmk__xe_get(*reply, PCMK__XA_LRMD_REMOTE_MSG_TYPE); if (!msg_type) { crm_err("Empty msg type received while waiting for reply"); @@ -1016,10 +1014,10 @@ static int process_lrmd_handshake_reply(xmlNode *reply, lrmd_private_t *native) { int rc = pcmk_rc_ok; - const char *version = crm_element_value(reply, PCMK__XA_LRMD_PROTOCOL_VERSION); - const char *msg_type = crm_element_value(reply, PCMK__XA_LRMD_OP); - const char *tmp_ticket = crm_element_value(reply, PCMK__XA_LRMD_CLIENTID); - const char *start_state = crm_element_value(reply, PCMK__XA_NODE_START_STATE); + const char *version = pcmk__xe_get(reply, PCMK__XA_LRMD_PROTOCOL_VERSION); + const char *msg_type = pcmk__xe_get(reply, PCMK__XA_LRMD_OP); + const char *tmp_ticket = pcmk__xe_get(reply, PCMK__XA_LRMD_CLIENTID); + const char *start_state = pcmk__xe_get(reply, PCMK__XA_NODE_START_STATE); pcmk__xe_get_int(reply, PCMK__XA_LRMD_RC, &rc); rc = pcmk_legacy2rc(rc); @@ -1912,9 +1910,9 @@ lrmd_api_get_rsc_info(lrmd_t * lrmd, const char *rsc_id, enum lrmd_call_options return NULL; } - class = crm_element_value(output, PCMK__XA_LRMD_CLASS); - provider = crm_element_value(output, PCMK__XA_LRMD_PROVIDER); - type = crm_element_value(output, PCMK__XA_LRMD_TYPE); + class = pcmk__xe_get(output, PCMK__XA_LRMD_CLASS); + provider = pcmk__xe_get(output, PCMK__XA_LRMD_PROVIDER); + type = pcmk__xe_get(output, PCMK__XA_LRMD_TYPE); if (!class || !type) { pcmk__xml_free(output); @@ -1977,7 +1975,7 @@ lrmd_api_get_recurring_ops(lrmd_t *lrmd, const char *rsc_id, int timeout_ms, (rsc_xml != NULL) && (rc == pcmk_ok); rsc_xml = pcmk__xe_next(rsc_xml, PCMK__XE_LRMD_RSC)) { - rsc_id = crm_element_value(rsc_xml, PCMK__XA_LRMD_RSC_ID); + rsc_id = pcmk__xe_get(rsc_xml, PCMK__XA_LRMD_RSC_ID); if (rsc_id == NULL) { crm_err("Could not parse recurring operation information from executor"); continue; diff --git a/lib/lrmd/proxy_common.c b/lib/lrmd/proxy_common.c index 1ec671cb0ac..b73e19a12ad 100644 --- a/lib/lrmd/proxy_common.c +++ b/lib/lrmd/proxy_common.c @@ -216,8 +216,8 @@ remote_proxy_new(lrmd_t *lrmd, struct ipc_client_callbacks *proxy_callbacks, void remote_proxy_cb(lrmd_t *lrmd, const char *node_name, xmlNode *msg) { - const char *op = crm_element_value(msg, PCMK__XA_LRMD_IPC_OP); - const char *session = crm_element_value(msg, PCMK__XA_LRMD_IPC_SESSION); + const char *op = pcmk__xe_get(msg, PCMK__XA_LRMD_IPC_OP); + const char *session = pcmk__xe_get(msg, PCMK__XA_LRMD_IPC_SESSION); remote_proxy_t *proxy = g_hash_table_lookup(proxy_table, session); int msg_id = 0; @@ -237,7 +237,7 @@ remote_proxy_cb(lrmd_t *lrmd, const char *node_name, xmlNode *msg) } else if (pcmk__str_eq(op, LRMD_IPC_OP_REQUEST, pcmk__str_casei)) { uint32_t flags = 0U; int rc = pcmk_rc_ok; - const char *name = crm_element_value(msg, PCMK__XA_LRMD_IPC_CLIENT); + const char *name = pcmk__xe_get(msg, PCMK__XA_LRMD_IPC_CLIENT); xmlNode *wrapper = pcmk__xe_first_child(msg, PCMK__XE_LRMD_IPC_MSG, NULL, NULL); @@ -272,12 +272,12 @@ remote_proxy_cb(lrmd_t *lrmd, const char *node_name, xmlNode *msg) pcmk__update_acl_user(request, PCMK__XA_LRMD_IPC_USER, node_name); if (pcmk_is_set(flags, crm_ipc_proxied)) { - const char *type = crm_element_value(request, PCMK__XA_T); + const char *type = pcmk__xe_get(request, PCMK__XA_T); int rc = 0; if (pcmk__str_eq(type, PCMK__VALUE_ATTRD, pcmk__str_none) - && (crm_element_value(request, PCMK__XA_ATTR_HOST) == NULL) - && pcmk__str_any_of(crm_element_value(request, PCMK_XA_TASK), + && (pcmk__xe_get(request, PCMK__XA_ATTR_HOST) == NULL) + && pcmk__str_any_of(pcmk__xe_get(request, PCMK_XA_TASK), PCMK__ATTRD_CMD_UPDATE, PCMK__ATTRD_CMD_UPDATE_BOTH, PCMK__ATTRD_CMD_UPDATE_DELAY, NULL)) { diff --git a/lib/pacemaker/pcmk_acl.c b/lib/pacemaker/pcmk_acl.c index 96f07969b31..e944b251919 100644 --- a/lib/pacemaker/pcmk_acl.c +++ b/lib/pacemaker/pcmk_acl.c @@ -221,8 +221,8 @@ pcmk__acl_annotate_permissions(const char *cred, const xmlDoc *cib_doc, return pcmk_rc_already; } - validation = crm_element_value(xmlDocGetRootElement(cib_doc), - PCMK_XA_VALIDATE_WITH); + validation = pcmk__xe_get(xmlDocGetRootElement(cib_doc), + PCMK_XA_VALIDATE_WITH); if (pcmk__cmp_schemas_by_name(PCMK__COMPAT_ACL_2_MIN_INCL, validation) > 0) { diff --git a/lib/pacemaker/pcmk_cluster_queries.c b/lib/pacemaker/pcmk_cluster_queries.c index 2f91a687380..b747bd1737a 100644 --- a/lib/pacemaker/pcmk_cluster_queries.c +++ b/lib/pacemaker/pcmk_cluster_queries.c @@ -814,8 +814,8 @@ remote_node_print_helper(xmlNode *result, void *user_data) { struct node_data *data = user_data; pcmk__output_t *out = data->out; - const char *name = crm_element_value(result, PCMK_XA_UNAME); - const char *id = crm_element_value(result, data->field); + const char *name = pcmk__xe_get(result, PCMK_XA_UNAME); + const char *id = pcmk__xe_get(result, data->field); // node name and node id are the same for remote/guest nodes out->message(out, "crmadmin-node", data->type, diff --git a/lib/pacemaker/pcmk_graph_consumer.c b/lib/pacemaker/pcmk_graph_consumer.c index da68bd4a4e8..b8de60985ee 100644 --- a/lib/pacemaker/pcmk_graph_consumer.c +++ b/lib/pacemaker/pcmk_graph_consumer.c @@ -307,7 +307,7 @@ initiate_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) return graph_fns->rsc(graph, action); case pcmk__cluster_graph_action: - if (pcmk__str_eq(crm_element_value(action->xml, PCMK_XA_OPERATION), + if (pcmk__str_eq(pcmk__xe_get(action->xml, PCMK_XA_OPERATION), PCMK_ACTION_STONITH, pcmk__str_none)) { crm_trace("Executing fencing action %d (%s)", action->id, id); @@ -625,7 +625,7 @@ unpack_synapse(pcmk__graph_t *new_graph, const xmlNode *xml_synapse) pcmk__scan_min_int(pcmk__xe_id(xml_synapse), &(new_synapse->id), 0); - value = crm_element_value(xml_synapse, PCMK__XA_PRIORITY); + value = pcmk__xe_get(xml_synapse, PCMK__XA_PRIORITY); pcmk__scan_min_int(value, &(new_synapse->priority), 0); CRM_CHECK(new_synapse->id >= 0, @@ -634,7 +634,7 @@ unpack_synapse(pcmk__graph_t *new_graph, const xmlNode *xml_synapse) new_graph->num_synapses++; crm_trace("Unpacking synapse %s action sets", - crm_element_value(xml_synapse, PCMK_XA_ID)); + pcmk__xe_get(xml_synapse, PCMK_XA_ID)); for (action_set = pcmk__xe_first_child(xml_synapse, PCMK__XE_ACTION_SET, NULL, NULL); @@ -739,18 +739,18 @@ pcmk__unpack_graph(const xmlNode *xml_graph, const char *reference) // Parse top-level attributes from PCMK__XE_TRANSITION_GRAPH if (xml_graph != NULL) { - const char *buf = crm_element_value(xml_graph, "transition_id"); + const char *buf = pcmk__xe_get(xml_graph, "transition_id"); CRM_CHECK(buf != NULL, pcmk__free_graph(new_graph); return NULL); pcmk__scan_min_int(buf, &(new_graph->id), 1); - buf = crm_element_value(xml_graph, PCMK_OPT_CLUSTER_DELAY); + buf = pcmk__xe_get(xml_graph, PCMK_OPT_CLUSTER_DELAY); CRM_CHECK(buf != NULL, pcmk__free_graph(new_graph); return NULL); pcmk_parse_interval_spec(buf, &(new_graph->network_delay)); - buf = crm_element_value(xml_graph, PCMK_OPT_STONITH_TIMEOUT); + buf = pcmk__xe_get(xml_graph, PCMK_OPT_STONITH_TIMEOUT); if (buf == NULL) { new_graph->stonith_timeout = new_graph->network_delay; } else { @@ -758,14 +758,14 @@ pcmk__unpack_graph(const xmlNode *xml_graph, const char *reference) } // Use 0 (dynamic limit) as default/invalid, -1 (no limit) as minimum - buf = crm_element_value(xml_graph, PCMK_OPT_BATCH_LIMIT); + buf = pcmk__xe_get(xml_graph, PCMK_OPT_BATCH_LIMIT); if ((buf == NULL) || (pcmk__scan_min_int(buf, &(new_graph->batch_limit), -1) != pcmk_rc_ok)) { new_graph->batch_limit = 0; } - buf = crm_element_value(xml_graph, PCMK_OPT_MIGRATION_LIMIT); + buf = pcmk__xe_get(xml_graph, PCMK_OPT_MIGRATION_LIMIT); pcmk__scan_min_int(buf, &(new_graph->migration_limit), -1); new_graph->failed_stop_offset = @@ -836,7 +836,7 @@ pcmk__event_from_graph_action(const xmlNode *resource, return NULL); op = lrmd_new_event(pcmk__xe_id(action_resource), - crm_element_value(action->xml, PCMK_XA_OPERATION), + pcmk__xe_get(action->xml, PCMK_XA_OPERATION), action->interval_ms); lrmd__set_result(op, rc, status, exit_reason); op->t_run = time(NULL); diff --git a/lib/pacemaker/pcmk_graph_logging.c b/lib/pacemaker/pcmk_graph_logging.c index a7d27d866fc..46920826e53 100644 --- a/lib/pacemaker/pcmk_graph_logging.c +++ b/lib/pacemaker/pcmk_graph_logging.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. * @@ -145,8 +145,8 @@ log_unresolved_inputs(unsigned int log_level, pcmk__graph_t *graph, { for (GList *lpc = synapse->inputs; lpc != NULL; lpc = lpc->next) { pcmk__graph_action_t *input = (pcmk__graph_action_t *) lpc->data; - const char *key = crm_element_value(input->xml, PCMK__XA_OPERATION_KEY); - const char *host = crm_element_value(input->xml, PCMK__META_ON_NODE); + const char *key = pcmk__xe_get(input->xml, PCMK__XA_OPERATION_KEY); + const char *host = pcmk__xe_get(input->xml, PCMK__META_ON_NODE); if (find_graph_action_by_id(graph, input->id) == NULL) { do_crm_log(log_level, @@ -161,8 +161,8 @@ static void log_synapse_action(unsigned int log_level, pcmk__graph_synapse_t *synapse, pcmk__graph_action_t *action, const char *pending_inputs) { - const char *key = crm_element_value(action->xml, PCMK__XA_OPERATION_KEY); - const char *host = crm_element_value(action->xml, PCMK__META_ON_NODE); + const char *key = pcmk__xe_get(action->xml, PCMK__XA_OPERATION_KEY); + const char *host = pcmk__xe_get(action->xml, PCMK__META_ON_NODE); char *desc = crm_strdup_printf("%s %s op %s", synapse_state_str(synapse), actiontype2text(action->type), key); diff --git a/lib/pacemaker/pcmk_injections.c b/lib/pacemaker/pcmk_injections.c index 1cc603128d1..9d1f2af695b 100644 --- a/lib/pacemaker/pcmk_injections.c +++ b/lib/pacemaker/pcmk_injections.c @@ -386,7 +386,7 @@ pcmk__inject_node_state_change(cib_t *cib_conn, const char *node, bool up) static xmlNode * find_resource_xml(xmlNode *cib_node, const char *resource) { - const char *node = crm_element_value(cib_node, PCMK_XA_UNAME); + const char *node = pcmk__xe_get(cib_node, PCMK_XA_UNAME); char *xpath = crm_strdup_printf(XPATH_RSC_HISTORY, node, resource); xmlNode *match = pcmk__xpath_find_one(cib_node->doc, xpath, LOG_TRACE); @@ -598,9 +598,9 @@ inject_action(pcmk__output_t *out, const char *spec, cib_t *cib, goto done; } - rclass = crm_element_value(rsc->priv->xml, PCMK_XA_CLASS); - rtype = crm_element_value(rsc->priv->xml, PCMK_XA_TYPE); - rprovider = crm_element_value(rsc->priv->xml, PCMK_XA_PROVIDER); + rclass = pcmk__xe_get(rsc->priv->xml, PCMK_XA_CLASS); + rtype = pcmk__xe_get(rsc->priv->xml, PCMK_XA_TYPE); + rprovider = pcmk__xe_get(rsc->priv->xml, PCMK_XA_PROVIDER); cib_node = pcmk__inject_node(cib, node, NULL); pcmk__assert(cib_node != NULL); diff --git a/lib/pacemaker/pcmk_output.c b/lib/pacemaker/pcmk_output.c index eca11a0c7d2..1d5a3eba845 100644 --- a/lib/pacemaker/pcmk_output.c +++ b/lib/pacemaker/pcmk_output.c @@ -1,5 +1,5 @@ /* - * Copyright 2019-2024 the Pacemaker project contributors + * Copyright 2019-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -2496,7 +2496,7 @@ static int add_ticket_element_with_constraints(xmlNode *node, void *userdata) { pcmk__output_t *out = (pcmk__output_t *) userdata; - const char *ticket_id = crm_element_value(node, PCMK_XA_TICKET); + const char *ticket_id = pcmk__xe_get(node, PCMK_XA_TICKET); pcmk__output_xml_create_parent(out, PCMK_XE_TICKET, PCMK_XA_ID, ticket_id, NULL); @@ -2514,7 +2514,7 @@ static int add_resource_element(xmlNode *node, void *userdata) { pcmk__output_t *out = (pcmk__output_t *) userdata; - const char *rsc = crm_element_value(node, PCMK_XA_RSC); + const char *rsc = pcmk__xe_get(node, PCMK_XA_RSC); pcmk__output_create_xml_node(out, PCMK_XE_RESOURCE, PCMK_XA_ID, rsc, NULL); diff --git a/lib/pacemaker/pcmk_resource.c b/lib/pacemaker/pcmk_resource.c index 1233b039a1f..6a3e50ae579 100644 --- a/lib/pacemaker/pcmk_resource.c +++ b/lib/pacemaker/pcmk_resource.c @@ -53,10 +53,10 @@ best_op(const pcmk_resource_t *rsc, const pcmk_node_t *node) lrm_rsc_op != NULL; lrm_rsc_op = pcmk__xe_next(lrm_rsc_op, PCMK__XE_LRM_RSC_OP)) { - const char *digest = crm_element_value(lrm_rsc_op, - PCMK__XA_OP_RESTART_DIGEST); + const char *digest = pcmk__xe_get(lrm_rsc_op, + PCMK__XA_OP_RESTART_DIGEST); guint interval_ms = 0; - const char *task = crm_element_value(lrm_rsc_op, PCMK_XA_OPERATION); + const char *task = pcmk__xe_get(lrm_rsc_op, PCMK_XA_OPERATION); bool effective_op = false; bool failure = pcmk__ends_with(pcmk__xe_id(lrm_rsc_op), "_last_failure_0"); @@ -218,7 +218,7 @@ pcmk__resource_digests(pcmk__output_t *out, pcmk_resource_t *rsc, // Generate an operation key if (xml_op != NULL) { - task = crm_element_value(xml_op, PCMK_XA_OPERATION); + task = pcmk__xe_get(xml_op, PCMK_XA_OPERATION); pcmk__xe_get_guint(xml_op, PCMK_META_INTERVAL, &interval_ms); } if (task == NULL) { // Assume start if no history is available diff --git a/lib/pacemaker/pcmk_sched_actions.c b/lib/pacemaker/pcmk_sched_actions.c index 3a93d64e3d4..ea97a4e0be3 100644 --- a/lib/pacemaker/pcmk_sched_actions.c +++ b/lib/pacemaker/pcmk_sched_actions.c @@ -1524,7 +1524,7 @@ only_sanitized_changed(const xmlNode *xml_op, return false; } - digest_secure = crm_element_value(xml_op, PCMK__XA_OP_SECURE_DIGEST); + digest_secure = pcmk__xe_get(xml_op, PCMK__XA_OP_SECURE_DIGEST); return (digest_data->rc != pcmk__digest_match) && (digest_secure != NULL) && (digest_data->digest_secure_calc != NULL) @@ -1638,7 +1638,7 @@ pcmk__check_action_config(pcmk_resource_t *rsc, pcmk_node_t *node, CRM_CHECK((rsc != NULL) && (node != NULL) && (xml_op != NULL), return false); - task = crm_element_value(xml_op, PCMK_XA_OPERATION); + task = pcmk__xe_get(xml_op, PCMK_XA_OPERATION); CRM_CHECK(task != NULL, return false); pcmk__xe_get_guint(xml_op, PCMK_META_INTERVAL, &interval_ms); @@ -1652,8 +1652,7 @@ pcmk__check_action_config(pcmk_resource_t *rsc, pcmk_node_t *node, pcmk__node_name(node)); } else if (pcmk_is_set(rsc->priv->scheduler->flags, pcmk__sched_cancel_removed_actions)) { - pcmk__schedule_cancel(rsc, - crm_element_value(xml_op, PCMK__XA_CALL_ID), + pcmk__schedule_cancel(rsc, pcmk__xe_get(xml_op, PCMK__XA_CALL_ID), task, interval_ms, node, "orphan"); return true; } else { @@ -1680,7 +1679,7 @@ pcmk__check_action_config(pcmk_resource_t *rsc, pcmk_node_t *node, "on %s changed: %s", pcmk__readable_interval(interval_ms), task, rsc->id, pcmk__node_name(node), - crm_element_value(xml_op, PCMK__XA_TRANSITION_MAGIC)); + pcmk__xe_get(xml_op, PCMK__XA_TRANSITION_MAGIC)); } return false; } @@ -1703,8 +1702,8 @@ pcmk__check_action_config(pcmk_resource_t *rsc, pcmk_node_t *node, crm_log_xml_debug(digest_data->params_all, "params:reschedule"); pcmk__reschedule_recurring(rsc, task, interval_ms, node); - } else if (crm_element_value(xml_op, - PCMK__XA_OP_RESTART_DIGEST) != NULL) { + } else if (pcmk__xe_get(xml_op, + PCMK__XA_OP_RESTART_DIGEST) != NULL) { // Agent supports reload, so use it trigger_unfencing(rsc, node, "Device parameters changed (reload)", NULL, @@ -1828,15 +1827,14 @@ process_rsc_history(const xmlNode *rsc_entry, pcmk_resource_t *rsc, continue; } - task = crm_element_value(rsc_op, PCMK_XA_OPERATION); + task = pcmk__xe_get(rsc_op, PCMK_XA_OPERATION); pcmk__xe_get_guint(rsc_op, PCMK_META_INTERVAL, &interval_ms); if ((interval_ms > 0) && (pcmk_is_set(rsc->flags, pcmk__rsc_maintenance) || node->details->maintenance)) { // Maintenance mode cancels recurring operations - pcmk__schedule_cancel(rsc, - crm_element_value(rsc_op, PCMK__XA_CALL_ID), + pcmk__schedule_cancel(rsc, pcmk__xe_get(rsc_op, PCMK__XA_CALL_ID), task, interval_ms, node, "maintenance mode"); } else if ((interval_ms > 0) diff --git a/lib/pacemaker/pcmk_sched_colocation.c b/lib/pacemaker/pcmk_sched_colocation.c index 3c4c4c6b23e..1e47cf787a0 100644 --- a/lib/pacemaker/pcmk_sched_colocation.c +++ b/lib/pacemaker/pcmk_sched_colocation.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. * @@ -481,13 +481,13 @@ unpack_colocation_set(xmlNode *set, int score, const char *coloc_id, pcmk_resource_t *other = NULL; pcmk_resource_t *resource = NULL; const char *set_id = pcmk__xe_id(set); - const char *role = crm_element_value(set, PCMK_XA_ROLE); + const char *role = pcmk__xe_get(set, PCMK_XA_ROLE); bool with_previous = false; int local_score = score; bool sequential = false; uint32_t flags = pcmk__coloc_none; const char *xml_rsc_id = NULL; - const char *score_s = crm_element_value(set, PCMK_XA_SCORE); + const char *score_s = pcmk__xe_get(set, PCMK_XA_SCORE); if (score_s != NULL) { int rc = pcmk_parse_score(score_s, &local_score, 0); @@ -509,8 +509,7 @@ unpack_colocation_set(xmlNode *set, int score, const char *coloc_id, * resources in a positive-score set are colocated with the previous or next * resource. */ - if (pcmk__str_eq(crm_element_value(set, PCMK__XA_ORDERING), - PCMK__VALUE_GROUP, + if (pcmk__str_eq(pcmk__xe_get(set, PCMK__XA_ORDERING), PCMK__VALUE_GROUP, pcmk__str_null_matches|pcmk__str_casei)) { with_previous = true; } else { @@ -630,8 +629,8 @@ colocate_rsc_sets(const char *id, const xmlNode *set1, const xmlNode *set2, pcmk_resource_t *rsc_2 = NULL; const char *xml_rsc_id = NULL; - const char *role_1 = crm_element_value(set1, PCMK_XA_ROLE); - const char *role_2 = crm_element_value(set2, PCMK_XA_ROLE); + const char *role_1 = pcmk__xe_get(set1, PCMK_XA_ROLE); + const char *role_2 = pcmk__xe_get(set2, PCMK_XA_ROLE); int rc = pcmk_rc_ok; bool sequential = false; @@ -797,12 +796,11 @@ unpack_simple_colocation(const xmlNode *xml_obj, const char *id, int score, { uint32_t flags = pcmk__coloc_none; - const char *dependent_id = crm_element_value(xml_obj, PCMK_XA_RSC); - const char *primary_id = crm_element_value(xml_obj, PCMK_XA_WITH_RSC); - const char *dependent_role = crm_element_value(xml_obj, PCMK_XA_RSC_ROLE); - const char *primary_role = crm_element_value(xml_obj, - PCMK_XA_WITH_RSC_ROLE); - const char *attr = crm_element_value(xml_obj, PCMK_XA_NODE_ATTRIBUTE); + const char *dependent_id = pcmk__xe_get(xml_obj, PCMK_XA_RSC); + const char *primary_id = pcmk__xe_get(xml_obj, PCMK_XA_WITH_RSC); + const char *dependent_role = pcmk__xe_get(xml_obj, PCMK_XA_RSC_ROLE); + const char *primary_role = pcmk__xe_get(xml_obj, PCMK_XA_WITH_RSC_ROLE); + const char *attr = pcmk__xe_get(xml_obj, PCMK_XA_NODE_ATTRIBUTE); pcmk_resource_t *primary = NULL; pcmk_resource_t *dependent = NULL; @@ -873,8 +871,8 @@ unpack_colocation_tags(xmlNode *xml_obj, xmlNode **expanded_xml, return pcmk_rc_ok; } - dependent_id = crm_element_value(xml_obj, PCMK_XA_RSC); - primary_id = crm_element_value(xml_obj, PCMK_XA_WITH_RSC); + dependent_id = pcmk__xe_get(xml_obj, PCMK_XA_RSC); + primary_id = pcmk__xe_get(xml_obj, PCMK_XA_WITH_RSC); if ((dependent_id == NULL) || (primary_id == NULL)) { return pcmk_rc_ok; } @@ -905,8 +903,8 @@ unpack_colocation_tags(xmlNode *xml_obj, xmlNode **expanded_xml, return pcmk_rc_unpack_error; } - dependent_role = crm_element_value(xml_obj, PCMK_XA_RSC_ROLE); - primary_role = crm_element_value(xml_obj, PCMK_XA_WITH_RSC_ROLE); + dependent_role = pcmk__xe_get(xml_obj, PCMK_XA_RSC_ROLE); + primary_role = pcmk__xe_get(xml_obj, PCMK_XA_WITH_RSC_ROLE); *expanded_xml = pcmk__xml_copy(NULL, xml_obj); @@ -979,7 +977,7 @@ pcmk__unpack_colocation(xmlNode *xml_obj, pcmk_scheduler_t *scheduler) xmlNode *orig_xml = NULL; xmlNode *expanded_xml = NULL; - const char *id = crm_element_value(xml_obj, PCMK_XA_ID); + const char *id = pcmk__xe_get(xml_obj, PCMK_XA_ID); const char *score = NULL; const char *influence_s = NULL; @@ -998,7 +996,7 @@ pcmk__unpack_colocation(xmlNode *xml_obj, pcmk_scheduler_t *scheduler) xml_obj = expanded_xml; } - score = crm_element_value(xml_obj, PCMK_XA_SCORE); + score = pcmk__xe_get(xml_obj, PCMK_XA_SCORE); if (score != NULL) { int rc = pcmk_parse_score(score, &score_i, 0); @@ -1008,7 +1006,7 @@ pcmk__unpack_colocation(xmlNode *xml_obj, pcmk_scheduler_t *scheduler) return; } } - influence_s = crm_element_value(xml_obj, PCMK_XA_INFLUENCE); + influence_s = pcmk__xe_get(xml_obj, PCMK_XA_INFLUENCE); for (set = pcmk__xe_first_child(xml_obj, PCMK_XE_RESOURCE_SET, NULL, NULL); set != NULL; set = pcmk__xe_next(set, PCMK_XE_RESOURCE_SET)) { diff --git a/lib/pacemaker/pcmk_sched_constraints.c b/lib/pacemaker/pcmk_sched_constraints.c index bbf1bd9ae40..bafe7d7f434 100644 --- a/lib/pacemaker/pcmk_sched_constraints.c +++ b/lib/pacemaker/pcmk_sched_constraints.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. * @@ -45,7 +45,7 @@ pcmk__unpack_constraints(pcmk_scheduler_t *scheduler) NULL); xml_obj != NULL; xml_obj = pcmk__xe_next(xml_obj, NULL)) { - const char *id = crm_element_value(xml_obj, PCMK_XA_ID); + const char *id = pcmk__xe_get(xml_obj, PCMK_XA_ID); const char *tag = (const char *) xml_obj->name; if (id == NULL) { @@ -368,7 +368,7 @@ pcmk__tag_to_set(xmlNode *xml_obj, xmlNode **rsc_set, const char *attr, return false; } - id = crm_element_value(xml_obj, attr); + id = pcmk__xe_get(xml_obj, attr); if (id == NULL) { return true; } diff --git a/lib/pacemaker/pcmk_sched_location.c b/lib/pacemaker/pcmk_sched_location.c index 44cd997f074..e806437e7d6 100644 --- a/lib/pacemaker/pcmk_sched_location.c +++ b/lib/pacemaker/pcmk_sched_location.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. * @@ -75,7 +75,7 @@ score_attribute_name(const xmlNode *rule_xml, char **allocated, { const char *name = NULL; - name = crm_element_value(rule_xml, PCMK_XA_SCORE_ATTRIBUTE); + name = pcmk__xe_get(rule_xml, PCMK_XA_SCORE_ATTRIBUTE); if (name == NULL) { return NULL; } @@ -109,7 +109,7 @@ static int score_from_rule(const xmlNode *rule_xml, int *score) { int rc = pcmk_rc_ok; - const char *score_s = crm_element_value(rule_xml, PCMK_XA_SCORE); + const char *score_s = pcmk__xe_get(rule_xml, PCMK_XA_SCORE); if (score_s == NULL) { // Not possible with schema validation enabled pcmk__config_err("Ignoring location constraint rule %s because " @@ -211,7 +211,7 @@ generate_location_rule(pcmk_resource_t *rsc, xmlNode *rule_xml, return false; // Error already logged } - rule_id = crm_element_value(rule_xml, PCMK_XA_ID); + rule_id = pcmk__xe_get(rule_xml, PCMK_XA_ID); if (rule_id == NULL) { pcmk__config_err("Ignoring location constraint '%s' because its rule " "has no " PCMK_XA_ID, @@ -219,8 +219,8 @@ generate_location_rule(pcmk_resource_t *rsc, xmlNode *rule_xml, return false; } - boolean = crm_element_value(rule_xml, PCMK_XA_BOOLEAN_OP); - role_spec = crm_element_value(rule_xml, PCMK_XA_ROLE); + boolean = pcmk__xe_get(rule_xml, PCMK_XA_BOOLEAN_OP); + role_spec = pcmk__xe_get(rule_xml, PCMK_XA_ROLE); if (parse_location_role(role_spec, &role)) { crm_trace("Setting rule %s role filter to %s", rule_id, role_spec); @@ -306,11 +306,10 @@ unpack_rsc_location(xmlNode *xml_obj, pcmk_resource_t *rsc, char *rsc_id_match, int rsc_id_nmatches, regmatch_t *rsc_id_submatches) { - const char *rsc_id = crm_element_value(xml_obj, PCMK_XA_RSC); - const char *id = crm_element_value(xml_obj, PCMK_XA_ID); - const char *node = crm_element_value(xml_obj, PCMK_XA_NODE); - const char *discovery = crm_element_value(xml_obj, - PCMK_XA_RESOURCE_DISCOVERY); + const char *rsc_id = pcmk__xe_get(xml_obj, PCMK_XA_RSC); + const char *id = pcmk__xe_get(xml_obj, PCMK_XA_ID); + const char *node = pcmk__xe_get(xml_obj, PCMK_XA_NODE); + const char *discovery = pcmk__xe_get(xml_obj, PCMK_XA_RESOURCE_DISCOVERY); if (rsc == NULL) { pcmk__config_warn("Ignoring constraint '%s' because resource '%s' " @@ -319,7 +318,7 @@ unpack_rsc_location(xmlNode *xml_obj, pcmk_resource_t *rsc, } if (score == NULL) { - score = crm_element_value(xml_obj, PCMK_XA_SCORE); + score = pcmk__xe_get(xml_obj, PCMK_XA_SCORE); } if ((node != NULL) && (score != NULL)) { @@ -344,7 +343,7 @@ unpack_rsc_location(xmlNode *xml_obj, pcmk_resource_t *rsc, } if (role_spec == NULL) { - role_spec = crm_element_value(xml_obj, PCMK_XA_ROLE); + role_spec = pcmk__xe_get(xml_obj, PCMK_XA_ROLE); } if (parse_location_role(role_spec, &role)) { crm_trace("Setting location constraint %s role filter: %s", @@ -393,8 +392,8 @@ unpack_rsc_location(xmlNode *xml_obj, pcmk_resource_t *rsc, static void unpack_simple_location(xmlNode *xml_obj, pcmk_scheduler_t *scheduler) { - const char *id = crm_element_value(xml_obj, PCMK_XA_ID); - const char *value = crm_element_value(xml_obj, PCMK_XA_RSC); + const char *id = pcmk__xe_get(xml_obj, PCMK_XA_ID); + const char *value = pcmk__xe_get(xml_obj, PCMK_XA_RSC); if (value) { pcmk_resource_t *rsc; @@ -403,7 +402,7 @@ unpack_simple_location(xmlNode *xml_obj, pcmk_scheduler_t *scheduler) unpack_rsc_location(xml_obj, rsc, NULL, NULL, NULL, 0, NULL); } - value = crm_element_value(xml_obj, PCMK_XA_RSC_PATTERN); + value = pcmk__xe_get(xml_obj, PCMK_XA_RSC_PATTERN); if (value) { regex_t regex; bool invert = false; @@ -490,7 +489,7 @@ unpack_location_tags(xmlNode *xml_obj, xmlNode **expanded_xml, return pcmk_rc_ok; } - rsc_id = crm_element_value(xml_obj, PCMK_XA_RSC); + rsc_id = pcmk__xe_get(xml_obj, PCMK_XA_RSC); if (rsc_id == NULL) { return pcmk_rc_ok; } @@ -505,7 +504,7 @@ unpack_location_tags(xmlNode *xml_obj, xmlNode **expanded_xml, return pcmk_rc_ok; } - state = crm_element_value(xml_obj, PCMK_XA_ROLE); + state = pcmk__xe_get(xml_obj, PCMK_XA_ROLE); *expanded_xml = pcmk__xml_copy(NULL, xml_obj); @@ -559,8 +558,8 @@ unpack_location_set(xmlNode *location, xmlNode *set, return pcmk_rc_unpack_error; } - role = crm_element_value(set, PCMK_XA_ROLE); - local_score = crm_element_value(set, PCMK_XA_SCORE); + role = pcmk__xe_get(set, PCMK_XA_ROLE); + local_score = pcmk__xe_get(set, PCMK_XA_SCORE); for (xml_rsc = pcmk__xe_first_child(set, PCMK_XE_RESOURCE_REF, NULL, NULL); xml_rsc != NULL; diff --git a/lib/pacemaker/pcmk_sched_ordering.c b/lib/pacemaker/pcmk_sched_ordering.c index 3370cc52e81..836040dd9e7 100644 --- a/lib/pacemaker/pcmk_sched_ordering.c +++ b/lib/pacemaker/pcmk_sched_ordering.c @@ -75,10 +75,10 @@ static enum pe_order_kind get_ordering_type(const xmlNode *xml_obj) { enum pe_order_kind kind_e = pe_order_kind_mandatory; - const char *kind = crm_element_value(xml_obj, PCMK_XA_KIND); + const char *kind = pcmk__xe_get(xml_obj, PCMK_XA_KIND); if (kind == NULL) { - const char *score = crm_element_value(xml_obj, PCMK_XA_SCORE); + const char *score = pcmk__xe_get(xml_obj, PCMK_XA_SCORE); kind_e = pe_order_kind_mandatory; @@ -135,8 +135,8 @@ get_ordering_symmetry(const xmlNode *xml_obj, enum pe_order_kind parent_kind, enum pe_order_kind kind = parent_kind; // Default to parent's kind // Check ordering XML for explicit kind - if ((crm_element_value(xml_obj, PCMK_XA_KIND) != NULL) - || (crm_element_value(xml_obj, PCMK_XA_SCORE) != NULL)) { + if ((pcmk__xe_get(xml_obj, PCMK_XA_KIND) != NULL) + || (pcmk__xe_get(xml_obj, PCMK_XA_SCORE) != NULL)) { kind = get_ordering_type(xml_obj); } @@ -239,7 +239,7 @@ get_ordering_resource(const xmlNode *xml, const char *resource_attr, const pcmk_scheduler_t *scheduler) { pcmk_resource_t *rsc = NULL; - const char *rsc_id = crm_element_value(xml, resource_attr); + const char *rsc_id = pcmk__xe_get(xml, resource_attr); if (rsc_id == NULL) { pcmk__config_err("Ignoring constraint '%s' without %s", @@ -402,7 +402,7 @@ unpack_simple_rsc_order(xmlNode *xml_obj, pcmk_scheduler_t *scheduler) CRM_CHECK(xml_obj != NULL, return); - id = crm_element_value(xml_obj, PCMK_XA_ID); + id = pcmk__xe_get(xml_obj, PCMK_XA_ID); if (id == NULL) { pcmk__config_err("Ignoring <%s> constraint without " PCMK_XA_ID, xml_obj->name); @@ -419,12 +419,12 @@ unpack_simple_rsc_order(xmlNode *xml_obj, pcmk_scheduler_t *scheduler) return; } - action_first = crm_element_value(xml_obj, PCMK_XA_FIRST_ACTION); + action_first = pcmk__xe_get(xml_obj, PCMK_XA_FIRST_ACTION); if (action_first == NULL) { action_first = PCMK_ACTION_START; } - action_then = crm_element_value(xml_obj, PCMK_XA_THEN_ACTION); + action_then = pcmk__xe_get(xml_obj, PCMK_XA_THEN_ACTION); if (action_then == NULL) { action_then = action_first; } @@ -568,9 +568,9 @@ unpack_order_set(const xmlNode *set, enum pe_order_kind parent_kind, char *key = NULL; const char *id = pcmk__xe_id(set); - const char *action = crm_element_value(set, PCMK_XA_ACTION); - const char *sequential_s = crm_element_value(set, PCMK_XA_SEQUENTIAL); - const char *kind_s = crm_element_value(set, PCMK_XA_KIND); + const char *action = pcmk__xe_get(set, PCMK_XA_ACTION); + const char *sequential_s = pcmk__xe_get(set, PCMK_XA_SEQUENTIAL); + const char *kind_s = pcmk__xe_get(set, PCMK_XA_KIND); if (action == NULL) { action = PCMK_ACTION_START; @@ -684,8 +684,8 @@ order_rsc_sets(const char *id, const xmlNode *set1, const xmlNode *set2, pcmk_resource_t *rsc_1 = NULL; pcmk_resource_t *rsc_2 = NULL; - const char *action_1 = crm_element_value(set1, PCMK_XA_ACTION); - const char *action_2 = crm_element_value(set2, PCMK_XA_ACTION); + const char *action_1 = pcmk__xe_get(set1, PCMK_XA_ACTION); + const char *action_2 = pcmk__xe_get(set2, PCMK_XA_ACTION); uint32_t flags = pcmk__ar_none; @@ -899,8 +899,8 @@ unpack_order_tags(xmlNode *xml_obj, xmlNode **expanded_xml, return pcmk_rc_ok; } - id_first = crm_element_value(xml_obj, PCMK_XA_FIRST); - id_then = crm_element_value(xml_obj, PCMK_XA_THEN); + id_first = pcmk__xe_get(xml_obj, PCMK_XA_FIRST); + id_then = pcmk__xe_get(xml_obj, PCMK_XA_THEN); if ((id_first == NULL) || (id_then == NULL)) { return pcmk_rc_ok; } @@ -926,8 +926,8 @@ unpack_order_tags(xmlNode *xml_obj, xmlNode **expanded_xml, return pcmk_rc_ok; } - action_first = crm_element_value(xml_obj, PCMK_XA_FIRST_ACTION); - action_then = crm_element_value(xml_obj, PCMK_XA_THEN_ACTION); + action_first = pcmk__xe_get(xml_obj, PCMK_XA_FIRST_ACTION); + action_then = pcmk__xe_get(xml_obj, PCMK_XA_THEN_ACTION); *expanded_xml = pcmk__xml_copy(NULL, xml_obj); @@ -999,8 +999,8 @@ pcmk__unpack_ordering(xmlNode *xml_obj, pcmk_scheduler_t *scheduler) xmlNode *orig_xml = NULL; xmlNode *expanded_xml = NULL; - const char *id = crm_element_value(xml_obj, PCMK_XA_ID); - const char *invert = crm_element_value(xml_obj, PCMK_XA_SYMMETRICAL); + const char *id = pcmk__xe_get(xml_obj, PCMK_XA_ID); + const char *invert = pcmk__xe_get(xml_obj, PCMK_XA_SYMMETRICAL); enum pe_order_kind kind = get_ordering_type(xml_obj); enum ordering_symmetry symmetry = get_ordering_symmetry(xml_obj, kind, diff --git a/lib/pacemaker/pcmk_sched_primitive.c b/lib/pacemaker/pcmk_sched_primitive.c index 390072a214a..962a592518d 100644 --- a/lib/pacemaker/pcmk_sched_primitive.c +++ b/lib/pacemaker/pcmk_sched_primitive.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. * @@ -789,7 +789,7 @@ pcmk__primitive_create_actions(pcmk_resource_t *rsc) } if (multiply_active) { - const char *class = crm_element_value(rsc->priv->xml, PCMK_XA_CLASS); + const char *class = pcmk__xe_get(rsc->priv->xml, PCMK_XA_CLASS); // Resource was (possibly) incorrectly multiply active pcmk__sched_err(rsc->priv->scheduler, diff --git a/lib/pacemaker/pcmk_sched_recurring.c b/lib/pacemaker/pcmk_sched_recurring.c index 88d8a7035b1..6d2fad5d6c8 100644 --- a/lib/pacemaker/pcmk_sched_recurring.c +++ b/lib/pacemaker/pcmk_sched_recurring.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. * @@ -42,7 +42,7 @@ xe_interval(const xmlNode *xml) { guint interval_ms = 0U; - pcmk_parse_interval_spec(crm_element_value(xml, PCMK_META_INTERVAL), + pcmk_parse_interval_spec(pcmk__xe_get(xml, PCMK_META_INTERVAL), &interval_ms); return interval_ms; } @@ -68,8 +68,7 @@ is_op_dup(const pcmk_resource_t *rsc, const char *name, guint interval_ms) op != NULL; op = pcmk__xe_next(op, PCMK_XE_OP)) { // Check whether action name and interval match - if (!pcmk__str_eq(crm_element_value(op, PCMK_XA_NAME), name, - pcmk__str_none) + if (!pcmk__str_eq(pcmk__xe_get(op, PCMK_XA_NAME), name, pcmk__str_none) || (xe_interval(op) != interval_ms)) { continue; } @@ -143,7 +142,7 @@ is_recurring_history(const pcmk_resource_t *rsc, const xmlNode *xml, return false; // Shouldn't be possible (unless CIB was manually edited) } - op->name = crm_element_value(xml, PCMK_XA_NAME); + op->name = pcmk__xe_get(xml, PCMK_XA_NAME); if (op_cannot_recur(op->name)) { pcmk__config_err("Ignoring %s because %s action cannot be recurring", op->id, pcmk__s(op->name, "unnamed")); @@ -156,7 +155,7 @@ is_recurring_history(const pcmk_resource_t *rsc, const xmlNode *xml, } // Ensure role is valid if specified - role = crm_element_value(xml, PCMK_XA_ROLE); + role = pcmk__xe_get(xml, PCMK_XA_ROLE); if (role == NULL) { op->role = pcmk_role_unknown; } else { diff --git a/lib/pacemaker/pcmk_sched_resource.c b/lib/pacemaker/pcmk_sched_resource.c index 2bc843f05f8..372cfa7db02 100644 --- a/lib/pacemaker/pcmk_sched_resource.c +++ b/lib/pacemaker/pcmk_sched_resource.c @@ -1,5 +1,5 @@ /* - * Copyright 2014-2024 the Pacemaker project contributors + * Copyright 2014-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -119,8 +119,8 @@ pcmk__rsc_agent_changed(pcmk_resource_t *rsc, pcmk_node_t *node, }; for (int i = 0; i < PCMK__NELEM(attr_list); i++) { - const char *value = crm_element_value(rsc->priv->xml, attr_list[i]); - const char *old_value = crm_element_value(rsc_entry, attr_list[i]); + const char *value = pcmk__xe_get(rsc->priv->xml, attr_list[i]); + const char *old_value = pcmk__xe_get(rsc_entry, attr_list[i]); if (!pcmk__str_eq(value, old_value, pcmk__str_none)) { changed = true; diff --git a/lib/pacemaker/pcmk_sched_tickets.c b/lib/pacemaker/pcmk_sched_tickets.c index 3bc2db3087c..154bb514ede 100644 --- a/lib/pacemaker/pcmk_sched_tickets.c +++ b/lib/pacemaker/pcmk_sched_tickets.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. * @@ -255,7 +255,7 @@ unpack_rsc_ticket_set(xmlNode *set, pcmk__ticket_t *ticket, return pcmk_rc_unpack_error; } - role = crm_element_value(set, PCMK_XA_ROLE); + role = pcmk__xe_get(set, PCMK_XA_ROLE); for (xmlNode *xml_rsc = pcmk__xe_first_child(set, PCMK_XE_RESOURCE_REF, NULL, NULL); @@ -283,13 +283,13 @@ static void unpack_simple_rsc_ticket(xmlNode *xml_obj, pcmk_scheduler_t *scheduler) { const char *id = NULL; - const char *ticket_str = crm_element_value(xml_obj, PCMK_XA_TICKET); - const char *loss_policy = crm_element_value(xml_obj, PCMK_XA_LOSS_POLICY); + const char *ticket_str = pcmk__xe_get(xml_obj, PCMK_XA_TICKET); + const char *loss_policy = pcmk__xe_get(xml_obj, PCMK_XA_LOSS_POLICY); pcmk__ticket_t *ticket = NULL; - const char *rsc_id = crm_element_value(xml_obj, PCMK_XA_RSC); - const char *state = crm_element_value(xml_obj, PCMK_XA_RSC_ROLE); + const char *rsc_id = pcmk__xe_get(xml_obj, PCMK_XA_RSC); + const char *state = pcmk__xe_get(xml_obj, PCMK_XA_RSC_ROLE); pcmk_resource_t *rsc = NULL; @@ -366,7 +366,7 @@ unpack_rsc_ticket_tags(xmlNode *xml_obj, xmlNode **expanded_xml, return pcmk_rc_ok; } - rsc_id = crm_element_value(xml_obj, PCMK_XA_RSC); + rsc_id = pcmk__xe_get(xml_obj, PCMK_XA_RSC); if (rsc_id == NULL) { return pcmk_rc_ok; } @@ -381,7 +381,7 @@ unpack_rsc_ticket_tags(xmlNode *xml_obj, xmlNode **expanded_xml, return pcmk_rc_ok; } - state = crm_element_value(xml_obj, PCMK_XA_RSC_ROLE); + state = pcmk__xe_get(xml_obj, PCMK_XA_RSC_ROLE); *expanded_xml = pcmk__xml_copy(NULL, xml_obj); @@ -440,7 +440,7 @@ pcmk__unpack_rsc_ticket(xmlNode *xml_obj, pcmk_scheduler_t *scheduler) pcmk__strkey_table(free, destroy_ticket); } - ticket_str = crm_element_value(xml_obj, PCMK_XA_TICKET); + ticket_str = pcmk__xe_get(xml_obj, PCMK_XA_TICKET); if (ticket_str == NULL) { pcmk__config_err("Ignoring constraint '%s' without ticket", id); return; @@ -472,7 +472,7 @@ pcmk__unpack_rsc_ticket(xmlNode *xml_obj, pcmk_scheduler_t *scheduler) any_sets = true; set = pcmk__xe_resolve_idref(set, scheduler->input); - loss_policy = crm_element_value(xml_obj, PCMK_XA_LOSS_POLICY); + loss_policy = pcmk__xe_get(xml_obj, PCMK_XA_LOSS_POLICY); if ((set == NULL) // Configuration error, message already logged || (unpack_rsc_ticket_set(set, ticket, loss_policy, diff --git a/lib/pacemaker/pcmk_simulate.c b/lib/pacemaker/pcmk_simulate.c index 993d4da76c2..1784c15c680 100644 --- a/lib/pacemaker/pcmk_simulate.c +++ b/lib/pacemaker/pcmk_simulate.c @@ -535,8 +535,8 @@ set_effective_date(pcmk_scheduler_t *scheduler, bool print_original, static int simulate_pseudo_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) { - const char *node = crm_element_value(action->xml, PCMK__META_ON_NODE); - const char *task = crm_element_value(action->xml, PCMK__XA_OPERATION_KEY); + const char *node = pcmk__xe_get(action->xml, PCMK__META_ON_NODE); + const char *task = pcmk__xe_get(action->xml, PCMK__XA_OPERATION_KEY); pcmk__set_graph_action_flags(action, pcmk__graph_action_confirmed); out->message(out, "inject-pseudo-action", node, task); @@ -566,7 +566,7 @@ simulate_resource_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) const char *resource = NULL; const char *rprovider = NULL; const char *resource_config_name = NULL; - const char *operation = crm_element_value(action->xml, PCMK_XA_OPERATION); + const char *operation = pcmk__xe_get(action->xml, PCMK_XA_OPERATION); const char *target_rc_s = crm_meta_value(action->params, PCMK__META_OP_TARGET_RC); @@ -577,8 +577,7 @@ simulate_resource_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) char *node = crm_element_value_copy(action->xml, PCMK__META_ON_NODE); char *uuid = NULL; - const char *router_node = crm_element_value(action->xml, - PCMK__XA_ROUTER_NODE); + const char *router_node = pcmk__xe_get(action->xml, PCMK__XA_ROUTER_NODE); // Certain actions don't need to be displayed or history entries if (pcmk__str_eq(operation, CRM_OP_REPROBE, pcmk__str_none)) { @@ -597,7 +596,7 @@ simulate_resource_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) * (which is preferred when writing history), and if necessary, the instance * name. */ - resource_config_name = crm_element_value(action_rsc, PCMK_XA_ID); + resource_config_name = pcmk__xe_get(action_rsc, PCMK_XA_ID); if (resource_config_name == NULL) { // Shouldn't be possible crm_log_xml_err(action->xml, "No ID"); free(node); @@ -605,7 +604,7 @@ simulate_resource_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) } resource = resource_config_name; if (pe_find_resource(fake_resource_list, resource) == NULL) { - const char *longname = crm_element_value(action_rsc, PCMK__XA_LONG_ID); + const char *longname = pcmk__xe_get(action_rsc, PCMK__XA_LONG_ID); if ((longname != NULL) && (pe_find_resource(fake_resource_list, longname) != NULL)) { @@ -621,9 +620,9 @@ simulate_resource_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) goto done; // Confirm action and update graph } - rclass = crm_element_value(action_rsc, PCMK_XA_CLASS); - rtype = crm_element_value(action_rsc, PCMK_XA_TYPE); - rprovider = crm_element_value(action_rsc, PCMK_XA_PROVIDER); + rclass = pcmk__xe_get(action_rsc, PCMK_XA_CLASS); + rtype = pcmk__xe_get(action_rsc, PCMK_XA_TYPE); + rprovider = pcmk__xe_get(action_rsc, PCMK_XA_PROVIDER); pcmk__scan_min_int(target_rc_s, &target_outcome, 0); @@ -740,8 +739,8 @@ simulate_resource_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) static int simulate_cluster_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) { - const char *node = crm_element_value(action->xml, PCMK__META_ON_NODE); - const char *task = crm_element_value(action->xml, PCMK_XA_OPERATION); + const char *node = pcmk__xe_get(action->xml, PCMK__META_ON_NODE); + const char *task = pcmk__xe_get(action->xml, PCMK_XA_OPERATION); xmlNode *rsc = pcmk__xe_first_child(action->xml, PCMK_XE_PRIMITIVE, NULL, NULL); diff --git a/lib/pacemaker/tests/pcmk_ticket/pcmk__get_ticket_state_test.c b/lib/pacemaker/tests/pcmk_ticket/pcmk__get_ticket_state_test.c index 2eefed8d6ca..a47e0148467 100644 --- a/lib/pacemaker/tests/pcmk_ticket/pcmk__get_ticket_state_test.c +++ b/lib/pacemaker/tests/pcmk_ticket/pcmk__get_ticket_state_test.c @@ -127,19 +127,19 @@ multiple_tickets(void **state) ticket_node = pcmk__xpath_result(xpath_obj, 0); assert_non_null(ticket_node); - assert_string_equal(crm_element_value(ticket_node, PCMK_XA_ID), "ticketA"); + assert_string_equal(pcmk__xe_get(ticket_node, PCMK_XA_ID), "ticketA"); ticket_node = pcmk__xpath_result(xpath_obj, 1); assert_non_null(ticket_node); - assert_string_equal(crm_element_value(ticket_node, PCMK_XA_ID), "ticketB"); + assert_string_equal(pcmk__xe_get(ticket_node, PCMK_XA_ID), "ticketB"); ticket_node = pcmk__xpath_result(xpath_obj, 2); assert_non_null(ticket_node); - assert_string_equal(crm_element_value(ticket_node, PCMK_XA_ID), "ticketC"); + assert_string_equal(pcmk__xe_get(ticket_node, PCMK_XA_ID), "ticketC"); ticket_node = pcmk__xpath_result(xpath_obj, 3); assert_non_null(ticket_node); - assert_string_equal(crm_element_value(ticket_node, PCMK_XA_ID), "ticketC"); + assert_string_equal(pcmk__xe_get(ticket_node, PCMK_XA_ID), "ticketC"); xmlXPathFreeObject(xpath_obj); pcmk__xml_free(xml); diff --git a/lib/pacemaker/tests/pcmk_ticket/pcmk_ticket_constraints_test.c b/lib/pacemaker/tests/pcmk_ticket/pcmk_ticket_constraints_test.c index b3a536fa838..4141e9e3a20 100644 --- a/lib/pacemaker/tests/pcmk_ticket/pcmk_ticket_constraints_test.c +++ b/lib/pacemaker/tests/pcmk_ticket/pcmk_ticket_constraints_test.c @@ -111,11 +111,11 @@ multiple_tickets(void **state) ticket_node = pcmk__xpath_result(xpath_obj, 0); assert_non_null(ticket_node); - assert_string_equal(crm_element_value(ticket_node, PCMK_XA_ID), "ticketA"); + assert_string_equal(pcmk__xe_get(ticket_node, PCMK_XA_ID), "ticketA"); ticket_node = pcmk__xpath_result(xpath_obj, 1); assert_non_null(ticket_node); - assert_string_equal(crm_element_value(ticket_node, PCMK_XA_ID), "ticketB"); + assert_string_equal(pcmk__xe_get(ticket_node, PCMK_XA_ID), "ticketB"); xmlXPathFreeObject(xpath_obj); pcmk__xml_free(xml); diff --git a/lib/pacemaker/tests/pcmk_ticket/pcmk_ticket_get_attr_test.c b/lib/pacemaker/tests/pcmk_ticket/pcmk_ticket_get_attr_test.c index 882eadbb7c4..fce482fe064 100644 --- a/lib/pacemaker/tests/pcmk_ticket/pcmk_ticket_get_attr_test.c +++ b/lib/pacemaker/tests/pcmk_ticket/pcmk_ticket_get_attr_test.c @@ -92,7 +92,7 @@ verify_results(xmlNode *xml, const char *ticket_id, const char *attr_name, node = pcmk__xpath_result(xpath_obj, 0); assert_non_null(node); - assert_string_equal(crm_element_value(node, PCMK_XA_ID), ticket_id); + assert_string_equal(pcmk__xe_get(node, PCMK_XA_ID), ticket_id); xmlXPathFreeObject(xpath_obj); /* Verify that it has an child whose name and value are what @@ -106,8 +106,8 @@ verify_results(xmlNode *xml, const char *ticket_id, const char *attr_name, node = pcmk__xpath_result(xpath_obj, 0); assert_non_null(node); - assert_string_equal(crm_element_value(node, PCMK_XA_NAME), attr_name); - assert_string_equal(crm_element_value(node, PCMK_XA_VALUE), attr_value); + assert_string_equal(pcmk__xe_get(node, PCMK_XA_NAME), attr_name); + assert_string_equal(pcmk__xe_get(node, PCMK_XA_VALUE), attr_value); xmlXPathFreeObject(xpath_obj); } diff --git a/lib/pacemaker/tests/pcmk_ticket/pcmk_ticket_info_test.c b/lib/pacemaker/tests/pcmk_ticket/pcmk_ticket_info_test.c index 486d2c439c2..3289dac99f3 100644 --- a/lib/pacemaker/tests/pcmk_ticket/pcmk_ticket_info_test.c +++ b/lib/pacemaker/tests/pcmk_ticket/pcmk_ticket_info_test.c @@ -82,10 +82,10 @@ all_tickets(void **state) node = pcmk__xpath_result(xpath_obj, 0); assert_non_null(node); - assert_string_equal(crm_element_value(node, PCMK_XA_STATUS), PCMK_VALUE_REVOKED); - assert_string_equal(crm_element_value(node, PCMK__XA_GRANTED), "false"); - assert_string_equal(crm_element_value(node, PCMK_XA_STANDBY), PCMK_VALUE_FALSE); - assert_string_equal(crm_element_value(node, "owner"), "1"); + assert_string_equal(pcmk__xe_get(node, PCMK_XA_STATUS), PCMK_VALUE_REVOKED); + assert_string_equal(pcmk__xe_get(node, PCMK__XA_GRANTED), "false"); + assert_string_equal(pcmk__xe_get(node, PCMK_XA_STANDBY), PCMK_VALUE_FALSE); + assert_string_equal(pcmk__xe_get(node, "owner"), "1"); xmlXPathFreeObject(xpath_obj); xpath_obj = pcmk__xpath_search(xml->doc, @@ -95,10 +95,10 @@ all_tickets(void **state) node = pcmk__xpath_result(xpath_obj, 0); assert_non_null(node); - assert_string_equal(crm_element_value(node, PCMK_XA_STATUS), PCMK_VALUE_GRANTED); - assert_string_equal(crm_element_value(node, PCMK__XA_GRANTED), "true"); - assert_string_equal(crm_element_value(node, PCMK_XA_STANDBY), PCMK_VALUE_FALSE); - assert_null(crm_element_value(node, "owner")); + assert_string_equal(pcmk__xe_get(node, PCMK_XA_STATUS), PCMK_VALUE_GRANTED); + assert_string_equal(pcmk__xe_get(node, PCMK__XA_GRANTED), "true"); + assert_string_equal(pcmk__xe_get(node, PCMK_XA_STANDBY), PCMK_VALUE_FALSE); + assert_null(pcmk__xe_get(node, "owner")); xmlXPathFreeObject(xpath_obj); xpath_obj = pcmk__xpath_search(xml->doc, @@ -108,10 +108,10 @@ all_tickets(void **state) node = pcmk__xpath_result(xpath_obj, 0); assert_non_null(node); - assert_string_equal(crm_element_value(node, PCMK_XA_STATUS), PCMK_VALUE_GRANTED); - assert_string_equal(crm_element_value(node, PCMK__XA_GRANTED), "true"); - assert_string_equal(crm_element_value(node, PCMK_XA_STANDBY), PCMK_VALUE_FALSE); - assert_null(crm_element_value(node, "owner")); + assert_string_equal(pcmk__xe_get(node, PCMK_XA_STATUS), PCMK_VALUE_GRANTED); + assert_string_equal(pcmk__xe_get(node, PCMK__XA_GRANTED), "true"); + assert_string_equal(pcmk__xe_get(node, PCMK_XA_STANDBY), PCMK_VALUE_FALSE); + assert_null(pcmk__xe_get(node, "owner")); xmlXPathFreeObject(xpath_obj); pcmk__xml_free(xml); @@ -138,10 +138,10 @@ single_ticket(void **state) node = pcmk__xpath_result(xpath_obj, 0); assert_non_null(node); - assert_string_equal(crm_element_value(node, PCMK_XA_STATUS), PCMK_VALUE_REVOKED); - assert_string_equal(crm_element_value(node, PCMK__XA_GRANTED), "false"); - assert_string_equal(crm_element_value(node, PCMK_XA_STANDBY), PCMK_VALUE_FALSE); - assert_string_equal(crm_element_value(node, "owner"), "1"); + assert_string_equal(pcmk__xe_get(node, PCMK_XA_STATUS), PCMK_VALUE_REVOKED); + assert_string_equal(pcmk__xe_get(node, PCMK__XA_GRANTED), "false"); + assert_string_equal(pcmk__xe_get(node, PCMK_XA_STANDBY), PCMK_VALUE_FALSE); + assert_string_equal(pcmk__xe_get(node, "owner"), "1"); xmlXPathFreeObject(xpath_obj); pcmk__xml_free(xml); diff --git a/lib/pacemaker/tests/pcmk_ticket/pcmk_ticket_remove_attr_test.c b/lib/pacemaker/tests/pcmk_ticket/pcmk_ticket_remove_attr_test.c index 93f4597a8b8..219f7899979 100644 --- a/lib/pacemaker/tests/pcmk_ticket/pcmk_ticket_remove_attr_test.c +++ b/lib/pacemaker/tests/pcmk_ticket/pcmk_ticket_remove_attr_test.c @@ -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. * @@ -90,7 +90,7 @@ no_attrs(void **state) cib->cmds->query(cib, "//" PCMK__XE_TICKET_STATE "[@" PCMK_XA_ID "=\"ticketA\"]", &xml_search, cib_xpath); - assert_string_equal("1", crm_element_value(xml_search, "owner")); + assert_string_equal("1", pcmk__xe_get(xml_search, "owner")); pcmk__xml_free(xml_search); /* Another way of specifying no attributes */ @@ -126,8 +126,8 @@ remove_missing_attrs(void **state) cib->cmds->query(cib, "//" PCMK__XE_TICKET_STATE "[@" PCMK_XA_ID "=\"ticketA\"]", &xml_search, cib_xpath); - assert_string_equal("1", crm_element_value(xml_search, "owner")); - assert_null(crm_element_value(xml_search, "XYZ")); + assert_string_equal("1", pcmk__xe_get(xml_search, "owner")); + assert_null(pcmk__xe_get(xml_search, "XYZ")); pcmk__xml_free(xml_search); g_list_free_full(attrs, free); @@ -153,7 +153,7 @@ remove_existing_attr(void **state) cib->cmds->query(cib, "//" PCMK__XE_TICKET_STATE "[@" PCMK_XA_ID "=\"ticketA\"]", &xml_search, cib_xpath); - assert_null(crm_element_value(xml_search, "owner")); + assert_null(pcmk__xe_get(xml_search, "owner")); pcmk__xml_free(xml_search); g_list_free_full(attrs, free); @@ -179,7 +179,7 @@ remove_granted_without_force(void **state) cib->cmds->query(cib, "//" PCMK__XE_TICKET_STATE "[@" PCMK_XA_ID "=\"ticketB\"]", &xml_search, cib_xpath); - assert_string_equal("true", crm_element_value(xml_search, PCMK__XA_GRANTED)); + assert_string_equal("true", pcmk__xe_get(xml_search, PCMK__XA_GRANTED)); pcmk__xml_free(xml_search); g_list_free_full(attrs, free); @@ -205,7 +205,7 @@ remove_granted_with_force(void **state) cib->cmds->query(cib, "//" PCMK__XE_TICKET_STATE "[@" PCMK_XA_ID "=\"ticketB\"]", &xml_search, cib_xpath); - assert_null(crm_element_value(xml_search, PCMK__XA_GRANTED)); + assert_null(pcmk__xe_get(xml_search, PCMK__XA_GRANTED)); pcmk__xml_free(xml_search); g_list_free_full(attrs, free); diff --git a/lib/pacemaker/tests/pcmk_ticket/pcmk_ticket_set_attr_test.c b/lib/pacemaker/tests/pcmk_ticket/pcmk_ticket_set_attr_test.c index 5dd1831c55c..dcadfe71380 100644 --- a/lib/pacemaker/tests/pcmk_ticket/pcmk_ticket_set_attr_test.c +++ b/lib/pacemaker/tests/pcmk_ticket/pcmk_ticket_set_attr_test.c @@ -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. * @@ -118,8 +118,8 @@ unknown_ticket_with_attrs(void **state) cib->cmds->query(cib, "//" PCMK__XE_TICKET_STATE "[@" PCMK_XA_ID "=\"XYZ\"]", &xml_search, cib_xpath); - assert_string_equal("123", crm_element_value(xml_search, "attrA")); - assert_string_equal("456", crm_element_value(xml_search, "attrB")); + assert_string_equal("123", pcmk__xe_get(xml_search, "attrA")); + assert_string_equal("456", pcmk__xe_get(xml_search, "attrB")); pcmk__xml_free(xml_search); g_hash_table_destroy(attrs); @@ -145,7 +145,7 @@ overwrite_existing_attr(void **state) cib->cmds->query(cib, "//" PCMK__XE_TICKET_STATE "[@" PCMK_XA_ID "=\"ticketA\"]", &xml_search, cib_xpath); - assert_string_equal("2", crm_element_value(xml_search, "owner")); + assert_string_equal("2", pcmk__xe_get(xml_search, "owner")); pcmk__xml_free(xml_search); g_hash_table_destroy(attrs); @@ -171,8 +171,8 @@ not_granted_to_granted_without_force(void **state) cib->cmds->query(cib, "//" PCMK__XE_TICKET_STATE "[@" PCMK_XA_ID "=\"ticketA\"]", &xml_search, cib_xpath); - assert_string_equal("false", crm_element_value(xml_search, PCMK__XA_GRANTED)); - assert_null(crm_element_value(xml_search, PCMK_XA_LAST_GRANTED)); + assert_string_equal("false", pcmk__xe_get(xml_search, PCMK__XA_GRANTED)); + assert_null(pcmk__xe_get(xml_search, PCMK_XA_LAST_GRANTED)); pcmk__xml_free(xml_search); g_hash_table_destroy(attrs); @@ -198,8 +198,8 @@ not_granted_to_granted_with_force(void **state) cib->cmds->query(cib, "//" PCMK__XE_TICKET_STATE "[@" PCMK_XA_ID "=\"ticketA\"]", &xml_search, cib_xpath); - assert_string_equal("true", crm_element_value(xml_search, PCMK__XA_GRANTED)); - assert_non_null(crm_element_value(xml_search, PCMK_XA_LAST_GRANTED)); + assert_string_equal("true", pcmk__xe_get(xml_search, PCMK__XA_GRANTED)); + assert_non_null(pcmk__xe_get(xml_search, PCMK_XA_LAST_GRANTED)); pcmk__xml_free(xml_search); g_hash_table_destroy(attrs); @@ -225,8 +225,8 @@ granted_to_not_granted_without_force(void **state) cib->cmds->query(cib, "//" PCMK__XE_TICKET_STATE "[@" PCMK_XA_ID "=\"ticketB\"]", &xml_search, cib_xpath); - assert_string_equal("true", crm_element_value(xml_search, PCMK__XA_GRANTED)); - assert_null(crm_element_value(xml_search, PCMK_XA_LAST_GRANTED)); + assert_string_equal("true", pcmk__xe_get(xml_search, PCMK__XA_GRANTED)); + assert_null(pcmk__xe_get(xml_search, PCMK_XA_LAST_GRANTED)); pcmk__xml_free(xml_search); g_hash_table_destroy(attrs); @@ -252,8 +252,8 @@ granted_to_not_granted_with_force(void **state) cib->cmds->query(cib, "//" PCMK__XE_TICKET_STATE "[@" PCMK_XA_ID "=\"ticketB\"]", &xml_search, cib_xpath); - assert_string_equal("false", crm_element_value(xml_search, PCMK__XA_GRANTED)); - assert_null(crm_element_value(xml_search, PCMK_XA_LAST_GRANTED)); + assert_string_equal("false", pcmk__xe_get(xml_search, PCMK__XA_GRANTED)); + assert_null(pcmk__xe_get(xml_search, PCMK_XA_LAST_GRANTED)); pcmk__xml_free(xml_search); g_hash_table_destroy(attrs); diff --git a/lib/pacemaker/tests/pcmk_ticket/pcmk_ticket_state_test.c b/lib/pacemaker/tests/pcmk_ticket/pcmk_ticket_state_test.c index c23b71bd505..68fda98087b 100644 --- a/lib/pacemaker/tests/pcmk_ticket/pcmk_ticket_state_test.c +++ b/lib/pacemaker/tests/pcmk_ticket/pcmk_ticket_state_test.c @@ -111,19 +111,19 @@ multiple_tickets(void **state) ticket_node = pcmk__xpath_result(xpath_obj, 0); assert_non_null(ticket_node); - assert_string_equal(crm_element_value(ticket_node, PCMK_XA_ID), "ticketA"); + assert_string_equal(pcmk__xe_get(ticket_node, PCMK_XA_ID), "ticketA"); ticket_node = pcmk__xpath_result(xpath_obj, 1); assert_non_null(ticket_node); - assert_string_equal(crm_element_value(ticket_node, PCMK_XA_ID), "ticketB"); + assert_string_equal(pcmk__xe_get(ticket_node, PCMK_XA_ID), "ticketB"); ticket_node = pcmk__xpath_result(xpath_obj, 2); assert_non_null(ticket_node); - assert_string_equal(crm_element_value(ticket_node, PCMK_XA_ID), "ticketC"); + assert_string_equal(pcmk__xe_get(ticket_node, PCMK_XA_ID), "ticketC"); ticket_node = pcmk__xpath_result(xpath_obj, 3); assert_non_null(ticket_node); - assert_string_equal(crm_element_value(ticket_node, PCMK_XA_ID), "ticketC"); + assert_string_equal(pcmk__xe_get(ticket_node, PCMK_XA_ID), "ticketC"); xmlXPathFreeObject(xpath_obj); pcmk__xml_free(xml); diff --git a/lib/pengine/bundle.c b/lib/pengine/bundle.c index f9bb6b70179..4daa8211267 100644 --- a/lib/pengine/bundle.c +++ b/lib/pengine/bundle.c @@ -989,13 +989,13 @@ pe__unpack_bundle(pcmk_resource_t *rsc) } // Use 0 for default, minimum, and invalid PCMK_XA_PROMOTED_MAX - value = crm_element_value(xml_obj, PCMK_XA_PROMOTED_MAX); + value = pcmk__xe_get(xml_obj, PCMK_XA_PROMOTED_MAX); pcmk__scan_min_int(value, &bundle_data->promoted_max, 0); /* Default replicas to PCMK_XA_PROMOTED_MAX if it was specified and 1 * otherwise */ - value = crm_element_value(xml_obj, PCMK_XA_REPLICAS); + value = pcmk__xe_get(xml_obj, PCMK_XA_REPLICAS); if ((value == NULL) && (bundle_data->promoted_max > 0)) { bundle_data->nreplicas = bundle_data->promoted_max; } else { @@ -1007,7 +1007,7 @@ pe__unpack_bundle(pcmk_resource_t *rsc) * floating IPs only works if the container is started with: * --userland-proxy=false --ip-masq=false */ - value = crm_element_value(xml_obj, PCMK_XA_REPLICAS_PER_HOST); + value = pcmk__xe_get(xml_obj, PCMK_XA_REPLICAS_PER_HOST); pcmk__scan_min_int(value, &bundle_data->nreplicas_per_host, 1); if (bundle_data->nreplicas_per_host == 1) { pcmk__clear_rsc_flags(rsc, pcmk__rsc_unique); @@ -1032,7 +1032,7 @@ pe__unpack_bundle(pcmk_resource_t *rsc) crm_element_value_copy(xml_obj, PCMK_XA_HOST_INTERFACE); bundle_data->control_port = crm_element_value_copy(xml_obj, PCMK_XA_CONTROL_PORT); - value = crm_element_value(xml_obj, PCMK_XA_ADD_HOST); + value = pcmk__xe_get(xml_obj, PCMK_XA_ADD_HOST); if (crm_str_to_boolean(value, &bundle_data->add_host) != 1) { bundle_data->add_host = TRUE; } @@ -1075,13 +1075,13 @@ pe__unpack_bundle(pcmk_resource_t *rsc) xml_child != NULL; xml_child = pcmk__xe_next(xml_child, PCMK_XE_STORAGE_MAPPING)) { - const char *source = crm_element_value(xml_child, PCMK_XA_SOURCE_DIR); - const char *target = crm_element_value(xml_child, PCMK_XA_TARGET_DIR); - const char *options = crm_element_value(xml_child, PCMK_XA_OPTIONS); + const char *source = pcmk__xe_get(xml_child, PCMK_XA_SOURCE_DIR); + const char *target = pcmk__xe_get(xml_child, PCMK_XA_TARGET_DIR); + const char *options = pcmk__xe_get(xml_child, PCMK_XA_OPTIONS); int flags = pe__bundle_mount_none; if (source == NULL) { - source = crm_element_value(xml_child, PCMK_XA_SOURCE_DIR_ROOT); + source = pcmk__xe_get(xml_child, PCMK_XA_SOURCE_DIR_ROOT); pe__set_bundle_mount_flags(xml_child, flags, pe__bundle_mount_subdir); } diff --git a/lib/pengine/clone.c b/lib/pengine/clone.c index 30835f9a9a2..d321f0163cf 100644 --- a/lib/pengine/clone.c +++ b/lib/pengine/clone.c @@ -860,8 +860,8 @@ pe__clone_default(pcmk__output_t *out, va_list args) if (probe_op != NULL) { int rc; - pcmk__scan_min_int(crm_element_value(probe_op, - PCMK__XA_RC_CODE), + pcmk__scan_min_int(pcmk__xe_get(probe_op, + PCMK__XA_RC_CODE), &rc, 0); g_hash_table_insert(stopped, strdup(node->priv->name), crm_strdup_printf("Stopped (%s)", diff --git a/lib/pengine/complex.c b/lib/pengine/complex.c index bead3756b27..838d3fc1d3c 100644 --- a/lib/pengine/complex.c +++ b/lib/pengine/complex.c @@ -174,9 +174,9 @@ get_meta_attributes(GHashTable * meta_hash, pcmk_resource_t * rsc, { const pcmk_rule_input_t rule_input = { .now = scheduler->priv->now, - .rsc_standard = crm_element_value(rsc->priv->xml, PCMK_XA_CLASS), - .rsc_provider = crm_element_value(rsc->priv->xml, PCMK_XA_PROVIDER), - .rsc_agent = crm_element_value(rsc->priv->xml, PCMK_XA_TYPE) + .rsc_standard = pcmk__xe_get(rsc->priv->xml, PCMK_XA_CLASS), + .rsc_provider = pcmk__xe_get(rsc->priv->xml, PCMK_XA_PROVIDER), + .rsc_agent = pcmk__xe_get(rsc->priv->xml, PCMK_XA_TYPE) }; for (xmlAttrPtr a = pcmk__xe_first_attr(rsc->priv->xml); @@ -249,8 +249,8 @@ get_rsc_attributes(GHashTable *instance_attrs, const pcmk_resource_t *rsc, static char * template_op_key(xmlNode * op) { - const char *name = crm_element_value(op, PCMK_XA_NAME); - const char *role = crm_element_value(op, PCMK_XA_ROLE); + const char *name = pcmk__xe_get(op, PCMK_XA_NAME); + const char *role = pcmk__xe_get(op, PCMK_XA_ROLE); char *key = NULL; if ((role == NULL) @@ -281,7 +281,7 @@ unpack_template(xmlNode *xml_obj, xmlNode **expanded_xml, return FALSE; } - template_ref = crm_element_value(xml_obj, PCMK_XA_TEMPLATE); + template_ref = pcmk__xe_get(xml_obj, PCMK_XA_TEMPLATE); if (template_ref == NULL) { return TRUE; } @@ -316,7 +316,7 @@ unpack_template(xmlNode *xml_obj, xmlNode **expanded_xml, xmlNodeSetName(new_xml, xml_obj->name); crm_xml_add(new_xml, PCMK_XA_ID, id); crm_xml_add(new_xml, PCMK__META_CLONE, - crm_element_value(xml_obj, PCMK__META_CLONE)); + pcmk__xe_get(xml_obj, PCMK__META_CLONE)); template_ops = pcmk__xe_first_child(new_xml, PCMK_XE_OPERATIONS, NULL, NULL); @@ -388,7 +388,7 @@ add_template_rsc(xmlNode *xml_obj, pcmk_scheduler_t *scheduler) return FALSE; } - template_ref = crm_element_value(xml_obj, PCMK_XA_TEMPLATE); + template_ref = pcmk__xe_get(xml_obj, PCMK_XA_TEMPLATE); if (template_ref == NULL) { return TRUE; } @@ -707,7 +707,7 @@ pe__unpack_resource(xmlNode *xml_obj, pcmk_resource_t **rsc, crm_log_xml_trace(xml_obj, "[raw XML]"); - id = crm_element_value(xml_obj, PCMK_XA_ID); + id = pcmk__xe_get(xml_obj, PCMK_XA_ID); if (id == NULL) { pcmk__config_err("Ignoring <%s> configuration without " PCMK_XA_ID, xml_obj->name); @@ -769,7 +769,7 @@ pe__unpack_resource(xmlNode *xml_obj, pcmk_resource_t **rsc, rsc_private->probed_nodes = pcmk__strkey_table(NULL, pcmk__free_node_copy); rsc_private->allowed_nodes = pcmk__strkey_table(NULL, pcmk__free_node_copy); - value = crm_element_value(rsc_private->xml, PCMK__META_CLONE); + value = pcmk__xe_get(rsc_private->xml, PCMK__META_CLONE); if (value) { (*rsc)->id = crm_strdup_printf("%s:%s", id, value); pcmk__insert_meta(rsc_private, PCMK__META_CLONE, value); @@ -901,7 +901,7 @@ pe__unpack_resource(xmlNode *xml_obj, pcmk_resource_t **rsc, unpack_stickiness(*rsc); unpack_migration_threshold(*rsc); - if (pcmk__str_eq(crm_element_value(rsc_private->xml, PCMK_XA_CLASS), + if (pcmk__str_eq(pcmk__xe_get(rsc_private->xml, PCMK_XA_CLASS), PCMK_RESOURCE_CLASS_STONITH, pcmk__str_casei)) { pcmk__set_scheduler_flags(scheduler, pcmk__sched_have_fencing); pcmk__set_rsc_flags(*rsc, pcmk__rsc_fence_device); diff --git a/lib/pengine/failcounts.c b/lib/pengine/failcounts.c index 83a14de5a76..e7ce2e2e6f4 100644 --- a/lib/pengine/failcounts.c +++ b/lib/pengine/failcounts.c @@ -36,12 +36,12 @@ is_matched_failure(const char *rsc_id, const xmlNode *conf_op_xml, } // Get name and interval from configured op - conf_op_name = crm_element_value(conf_op_xml, PCMK_XA_NAME); - conf_op_interval_spec = crm_element_value(conf_op_xml, PCMK_META_INTERVAL); + conf_op_name = pcmk__xe_get(conf_op_xml, PCMK_XA_NAME); + conf_op_interval_spec = pcmk__xe_get(conf_op_xml, PCMK_META_INTERVAL); pcmk_parse_interval_spec(conf_op_interval_spec, &conf_op_interval_ms); // Get name and interval from op history entry - lrm_op_task = crm_element_value(lrm_op_xml, PCMK_XA_OPERATION); + lrm_op_task = pcmk__xe_get(lrm_op_xml, PCMK_XA_OPERATION); pcmk__xe_get_guint(lrm_op_xml, PCMK_META_INTERVAL, &lrm_op_interval_ms); if ((conf_op_interval_ms != lrm_op_interval_ms) @@ -125,9 +125,8 @@ block_failure(const pcmk_node_t *node, pcmk_resource_t *rsc, xmlXPathObject *lrm_op_xpathObj = NULL; // Get name and interval from configured op - conf_op_name = crm_element_value(pref, PCMK_XA_NAME); - conf_op_interval_spec = crm_element_value(pref, - PCMK_META_INTERVAL); + conf_op_name = pcmk__xe_get(pref, PCMK_XA_NAME); + conf_op_interval_spec = pcmk__xe_get(pref, PCMK_META_INTERVAL); pcmk_parse_interval_spec(conf_op_interval_spec, &conf_op_interval_ms); diff --git a/lib/pengine/group.c b/lib/pengine/group.c index 489c5de4d98..78375499936 100644 --- a/lib/pengine/group.c +++ b/lib/pengine/group.c @@ -200,7 +200,7 @@ group_unpack(pcmk_resource_t *rsc) set_group_flag(rsc, "collocated", pcmk__group_colocated, pcmk__wo_group_coloc); - clone_id = crm_element_value(rsc->priv->xml, PCMK__META_CLONE); + clone_id = pcmk__xe_get(rsc->priv->xml, PCMK__META_CLONE); for (xml_native_rsc = pcmk__xe_first_child(xml_obj, PCMK_XE_PRIMITIVE, NULL, NULL); diff --git a/lib/pengine/native.c b/lib/pengine/native.c index 5b0d79c2327..ddc91b7ae11 100644 --- a/lib/pengine/native.c +++ b/lib/pengine/native.c @@ -205,7 +205,7 @@ bool native_unpack(pcmk_resource_t *rsc) { pcmk_resource_t *parent = uber_parent(rsc); - const char *standard = crm_element_value(rsc->priv->xml, PCMK_XA_CLASS); + const char *standard = pcmk__xe_get(rsc->priv->xml, PCMK_XA_CLASS); uint32_t ra_caps = pcmk_get_ra_caps(standard); pcmk__rsc_trace(rsc, "Processing resource %s...", rsc->id); @@ -474,9 +474,9 @@ pcmk__native_output_string(const pcmk_resource_t *rsc, const char *name, const pcmk_node_t *node, uint32_t show_opts, const char *target_role, bool show_nodes) { - const char *class = crm_element_value(rsc->priv->xml, PCMK_XA_CLASS); + const char *class = pcmk__xe_get(rsc->priv->xml, PCMK_XA_CLASS); const char *provider = NULL; - const char *kind = crm_element_value(rsc->priv->xml, PCMK_XA_TYPE); + const char *kind = pcmk__xe_get(rsc->priv->xml, PCMK_XA_TYPE); GString *outstr = NULL; bool have_flags = false; @@ -489,7 +489,7 @@ pcmk__native_output_string(const pcmk_resource_t *rsc, const char *name, CRM_CHECK(class != NULL, class = "unknown"); if (pcmk_is_set(pcmk_get_ra_caps(class), pcmk_ra_cap_provider)) { - provider = crm_element_value(rsc->priv->xml, PCMK_XA_PROVIDER); + provider = pcmk__xe_get(rsc->priv->xml, PCMK_XA_PROVIDER); } if ((node == NULL) && (rsc->priv->lock_node != NULL)) { @@ -534,8 +534,8 @@ pcmk__native_output_string(const pcmk_resource_t *rsc, const char *name, if (probe_op != NULL) { int rc; - pcmk__scan_min_int(crm_element_value(probe_op, PCMK__XA_RC_CODE), - &rc, 0); + pcmk__scan_min_int(pcmk__xe_get(probe_op, PCMK__XA_RC_CODE), &rc, + 0); pcmk__g_strcat(outstr, " (", crm_exit_str(rc), ") ", NULL); } } @@ -609,8 +609,7 @@ pcmk__native_output_string(const pcmk_resource_t *rsc, const char *name, // User-supplied description if (pcmk_any_flags_set(show_opts, pcmk_show_rsc_only|pcmk_show_description) || pcmk__list_of_multiple(rsc->priv->active_nodes)) { - const char *desc = crm_element_value(rsc->priv->xml, - PCMK_XA_DESCRIPTION); + const char *desc = pcmk__xe_get(rsc->priv->xml, PCMK_XA_DESCRIPTION); if (desc) { g_string_append(outstr, " ("); @@ -644,7 +643,7 @@ pe__common_output_html(pcmk__output_t *out, const pcmk_resource_t *rsc, const char *name, const pcmk_node_t *node, uint32_t show_opts) { - const char *kind = crm_element_value(rsc->priv->xml, PCMK_XA_TYPE); + const char *kind = pcmk__xe_get(rsc->priv->xml, PCMK_XA_TYPE); const char *target_role = NULL; const char *cl = NULL; @@ -735,8 +734,8 @@ pe__resource_xml(pcmk__output_t *out, va_list args) int rc = pcmk_rc_no_output; bool print_pending = pcmk_is_set(show_opts, pcmk_show_pending); - const char *class = crm_element_value(rsc->priv->xml, PCMK_XA_CLASS); - const char *prov = crm_element_value(rsc->priv->xml, PCMK_XA_PROVIDER); + const char *class = pcmk__xe_get(rsc->priv->xml, PCMK_XA_CLASS); + const char *prov = pcmk__xe_get(rsc->priv->xml, PCMK_XA_PROVIDER); char ra_name[LINE_MAX]; const char *rsc_state = native_displayable_state(rsc, print_pending); @@ -763,7 +762,7 @@ pe__resource_xml(pcmk__output_t *out, va_list args) // Resource information snprintf(ra_name, LINE_MAX, "%s%s%s:%s", class, ((prov == NULL)? "" : ":"), ((prov == NULL)? "" : prov), - crm_element_value(rsc->priv->xml, PCMK_XA_TYPE)); + pcmk__xe_get(rsc->priv->xml, PCMK_XA_TYPE)); target_role = g_hash_table_lookup(rsc->priv->meta, PCMK_META_TARGET_ROLE); @@ -953,8 +952,8 @@ get_rscs_brief(GList *rsc_list, GHashTable * rsc_table, GHashTable * active_tabl for (; gIter != NULL; gIter = gIter->next) { pcmk_resource_t *rsc = (pcmk_resource_t *) gIter->data; - const char *class = crm_element_value(rsc->priv->xml, PCMK_XA_CLASS); - const char *kind = crm_element_value(rsc->priv->xml, PCMK_XA_TYPE); + const char *class = pcmk__xe_get(rsc->priv->xml, PCMK_XA_CLASS); + const char *kind = pcmk__xe_get(rsc->priv->xml, PCMK_XA_TYPE); int offset = 0; char buffer[LINE_MAX]; @@ -968,8 +967,7 @@ get_rscs_brief(GList *rsc_list, GHashTable * rsc_table, GHashTable * active_tabl offset += snprintf(buffer + offset, LINE_MAX - offset, "%s", class); if (pcmk_is_set(pcmk_get_ra_caps(class), pcmk_ra_cap_provider)) { - const char *prov = crm_element_value(rsc->priv->xml, - PCMK_XA_PROVIDER); + const char *prov = pcmk__xe_get(rsc->priv->xml, PCMK_XA_PROVIDER); if (prov != NULL) { offset += snprintf(buffer + offset, LINE_MAX - offset, diff --git a/lib/pengine/pe_actions.c b/lib/pengine/pe_actions.c index 4801c34e0b2..7720b777804 100644 --- a/lib/pengine/pe_actions.c +++ b/lib/pengine/pe_actions.c @@ -108,13 +108,13 @@ find_exact_action_config(const pcmk_resource_t *rsc, const char *action_name, continue; } - interval_spec = crm_element_value(operation, PCMK_META_INTERVAL); + interval_spec = pcmk__xe_get(operation, PCMK_META_INTERVAL); pcmk_parse_interval_spec(interval_spec, &tmp_ms); if (tmp_ms != interval_ms) { continue; } - config_name = crm_element_value(operation, PCMK_XA_NAME); + config_name = pcmk__xe_get(operation, PCMK_XA_NAME); if (pcmk__str_eq(action_name, config_name, pcmk__str_none)) { return operation; } @@ -466,20 +466,20 @@ validate_on_fail(const pcmk_resource_t *rsc, const char *action_name, /* We only care about explicit on-fail (if promote uses default, so * can demote) */ - promote_on_fail = crm_element_value(operation, PCMK_META_ON_FAIL); + promote_on_fail = pcmk__xe_get(operation, PCMK_META_ON_FAIL); if (promote_on_fail == NULL) { continue; } // We only care about recurring monitors for the promoted role - name = crm_element_value(operation, PCMK_XA_NAME); - role = crm_element_value(operation, PCMK_XA_ROLE); + name = pcmk__xe_get(operation, PCMK_XA_NAME); + role = pcmk__xe_get(operation, PCMK_XA_ROLE); if (!pcmk__str_eq(name, PCMK_ACTION_MONITOR, pcmk__str_none) || !pcmk__strcase_any_of(role, PCMK_ROLE_PROMOTED, PCMK__ROLE_PROMOTED_LEGACY, NULL)) { continue; } - interval_spec = crm_element_value(operation, PCMK_META_INTERVAL); + interval_spec = pcmk__xe_get(operation, PCMK_META_INTERVAL); pcmk_parse_interval_spec(interval_spec, &interval_ms); if (interval_ms == 0U) { continue; @@ -514,9 +514,9 @@ validate_on_fail(const pcmk_resource_t *rsc, const char *action_name, // PCMK_META_ON_FAIL=PCMK_VALUE_DEMOTE is allowed only for certain actions if (pcmk__str_eq(value, PCMK_VALUE_DEMOTE, pcmk__str_casei)) { - name = crm_element_value(action_config, PCMK_XA_NAME); - role = crm_element_value(action_config, PCMK_XA_ROLE); - interval_spec = crm_element_value(action_config, PCMK_META_INTERVAL); + name = pcmk__xe_get(action_config, PCMK_XA_NAME); + role = pcmk__xe_get(action_config, PCMK_XA_ROLE); + interval_spec = pcmk__xe_get(action_config, PCMK_META_INTERVAL); pcmk_parse_interval_spec(interval_spec, &interval_ms); if (!pcmk__str_eq(name, PCMK_ACTION_PROMOTE, pcmk__str_none) @@ -631,11 +631,10 @@ most_frequent_monitor(const pcmk_resource_t *rsc) bool enabled = false; guint interval_ms = 0U; - const char *interval_spec = crm_element_value(operation, - PCMK_META_INTERVAL); + const char *interval_spec = pcmk__xe_get(operation, PCMK_META_INTERVAL); // We only care about enabled recurring monitors - if (!pcmk__str_eq(crm_element_value(operation, PCMK_XA_NAME), + if (!pcmk__str_eq(pcmk__xe_get(operation, PCMK_XA_NAME), PCMK_ACTION_MONITOR, pcmk__str_none)) { continue; } @@ -689,9 +688,9 @@ pcmk__unpack_action_meta(pcmk_resource_t *rsc, const pcmk_node_t *node, * for meta-attributes */ .now = rsc->priv->scheduler->priv->now, - .rsc_standard = crm_element_value(rsc->priv->xml, PCMK_XA_CLASS), - .rsc_provider = crm_element_value(rsc->priv->xml, PCMK_XA_PROVIDER), - .rsc_agent = crm_element_value(rsc->priv->xml, PCMK_XA_TYPE), + .rsc_standard = pcmk__xe_get(rsc->priv->xml, PCMK_XA_CLASS), + .rsc_provider = pcmk__xe_get(rsc->priv->xml, PCMK_XA_PROVIDER), + .rsc_agent = pcmk__xe_get(rsc->priv->xml, PCMK_XA_TYPE), .op_name = action_name, .op_interval_ms = interval_ms, }; @@ -726,8 +725,7 @@ pcmk__unpack_action_meta(pcmk_resource_t *rsc, const pcmk_node_t *node, * PCMK_XE_META_ATTRIBUTES blocks (which may also have rules that * need to be evaluated). */ - timeout_spec = crm_element_value(min_interval_mon, - PCMK_META_TIMEOUT); + timeout_spec = pcmk__xe_get(min_interval_mon, PCMK_META_TIMEOUT); if (timeout_spec != NULL) { pcmk__rsc_trace(rsc, "Setting default timeout for %s probe to " @@ -1588,11 +1586,11 @@ pe__is_newer_op(const xmlNode *xml_a, const xmlNode *xml_b) char *a_uuid = NULL; char *b_uuid = NULL; - const char *a_xml_id = crm_element_value(xml_a, PCMK_XA_ID); - const char *b_xml_id = crm_element_value(xml_b, PCMK_XA_ID); + const char *a_xml_id = pcmk__xe_get(xml_a, PCMK_XA_ID); + const char *b_xml_id = pcmk__xe_get(xml_b, PCMK_XA_ID); - const char *a_node = crm_element_value(xml_a, PCMK__META_ON_NODE); - const char *b_node = crm_element_value(xml_b, PCMK__META_ON_NODE); + const char *a_node = pcmk__xe_get(xml_a, PCMK__META_ON_NODE); + const char *b_node = pcmk__xe_get(xml_b, PCMK__META_ON_NODE); bool same_node = pcmk__str_eq(a_node, b_node, pcmk__str_casei); if (same_node && pcmk__str_eq(a_xml_id, b_xml_id, pcmk__str_none)) { @@ -1651,10 +1649,8 @@ pe__is_newer_op(const xmlNode *xml_a, const xmlNode *xml_b) int a_id = -1; int b_id = -1; - const char *a_magic = crm_element_value(xml_a, - PCMK__XA_TRANSITION_MAGIC); - const char *b_magic = crm_element_value(xml_b, - PCMK__XA_TRANSITION_MAGIC); + const char *a_magic = pcmk__xe_get(xml_a, PCMK__XA_TRANSITION_MAGIC); + const char *b_magic = pcmk__xe_get(xml_b, PCMK__XA_TRANSITION_MAGIC); CRM_CHECK(a_magic != NULL && b_magic != NULL, sort_return(0, "No magic")); if (!decode_transition_magic(a_magic, &a_uuid, &a_id, NULL, NULL, NULL, diff --git a/lib/pengine/pe_digest.c b/lib/pengine/pe_digest.c index c0aead3895d..f5eef5b554d 100644 --- a/lib/pengine/pe_digest.c +++ b/lib/pengine/pe_digest.c @@ -187,14 +187,14 @@ calculate_secure_digest(pcmk__op_digest_t *data, const pcmk_resource_t *rsc, GHashTable *params, const xmlNode *xml_op, const char *op_version, GHashTable *overrides) { - const char *class = crm_element_value(rsc->priv->xml, PCMK_XA_CLASS); + const char *class = pcmk__xe_get(rsc->priv->xml, PCMK_XA_CLASS); const char *secure_list = NULL; bool old_version = (compare_version(op_version, "3.16.0") < 0); if (xml_op == NULL) { secure_list = " passwd password user "; } else { - secure_list = crm_element_value(xml_op, PCMK__XA_OP_SECURE_PARAMS); + secure_list = pcmk__xe_get(xml_op, PCMK__XA_OP_SECURE_PARAMS); } if (old_version) { @@ -264,7 +264,7 @@ calculate_restart_digest(pcmk__op_digest_t *data, const xmlNode *xml_op, } // And the history must have a restart digest to compare against - if (crm_element_value(xml_op, PCMK__XA_OP_RESTART_DIGEST) == NULL) { + if (pcmk__xe_get(xml_op, PCMK__XA_OP_RESTART_DIGEST) == NULL) { return; } @@ -272,13 +272,13 @@ calculate_restart_digest(pcmk__op_digest_t *data, const xmlNode *xml_op, data->params_restart = pcmk__xml_copy(NULL, data->params_all); // Then filter out reloadable parameters, if any - value = crm_element_value(xml_op, PCMK__XA_OP_FORCE_RESTART); + value = pcmk__xe_get(xml_op, PCMK__XA_OP_FORCE_RESTART); if (value != NULL) { pcmk__xe_remove_matching_attrs(data->params_restart, false, attr_not_in_string, (void *) value); } - value = crm_element_value(xml_op, PCMK_XA_CRM_FEATURE_SET); + value = pcmk__xe_get(xml_op, PCMK_XA_CRM_FEATURE_SET); data->digest_restart_calc = pcmk__digest_operation(data->params_restart); } @@ -321,12 +321,11 @@ pe__calculate_digests(pcmk_resource_t *rsc, const char *task, data->rc = pcmk__digest_match; if (xml_op != NULL) { - op_version = crm_element_value(xml_op, PCMK_XA_CRM_FEATURE_SET); + op_version = pcmk__xe_get(xml_op, PCMK_XA_CRM_FEATURE_SET); } if ((op_version == NULL) && (scheduler->input != NULL)) { - op_version = crm_element_value(scheduler->input, - PCMK_XA_CRM_FEATURE_SET); + op_version = pcmk__xe_get(scheduler->input, PCMK_XA_CRM_FEATURE_SET); } if (op_version == NULL) { @@ -396,15 +395,15 @@ rsc_action_digest_cmp(pcmk_resource_t *rsc, const xmlNode *xml_op, guint interval_ms = 0; const char *op_version; - const char *task = crm_element_value(xml_op, PCMK_XA_OPERATION); + const char *task = pcmk__xe_get(xml_op, PCMK_XA_OPERATION); const char *digest_all; const char *digest_restart; pcmk__assert(node != NULL); - op_version = crm_element_value(xml_op, PCMK_XA_CRM_FEATURE_SET); - digest_all = crm_element_value(xml_op, PCMK__XA_OP_DIGEST); - digest_restart = crm_element_value(xml_op, PCMK__XA_OP_RESTART_DIGEST); + op_version = pcmk__xe_get(xml_op, PCMK_XA_CRM_FEATURE_SET); + digest_all = pcmk__xe_get(xml_op, PCMK__XA_OP_DIGEST); + digest_restart = pcmk__xe_get(xml_op, PCMK__XA_OP_RESTART_DIGEST); pcmk__xe_get_guint(xml_op, PCMK_META_INTERVAL, &interval_ms); data = rsc_action_digest(rsc, task, interval_ms, node, xml_op, @@ -421,7 +420,7 @@ rsc_action_digest_cmp(pcmk_resource_t *rsc, const xmlNode *xml_op, pcmk__readable_interval(interval_ms), task, rsc->id, pcmk__node_name(node), data->digest_restart_calc, pcmk__s(digest_restart, "missing"), op_version, - crm_element_value(xml_op, PCMK__XA_TRANSITION_MAGIC)); + pcmk__xe_get(xml_op, PCMK__XA_TRANSITION_MAGIC)); data->rc = pcmk__digest_restart; } else if (digest_all == NULL) { @@ -446,8 +445,7 @@ rsc_action_digest_cmp(pcmk_resource_t *rsc, const xmlNode *xml_op, interval_ms, task, rsc->id, pcmk__node_name(node), pcmk__s(digest_all, "missing"), data->digest_all_calc, op_version, - crm_element_value(xml_op, - PCMK__XA_TRANSITION_MAGIC)); + pcmk__xe_get(xml_op, PCMK__XA_TRANSITION_MAGIC)); } else { pcmk__rsc_info(rsc, @@ -458,8 +456,7 @@ rsc_action_digest_cmp(pcmk_resource_t *rsc, const xmlNode *xml_op, data->digest_all_calc, (interval_ms > 0)? "reschedule" : "reload", op_version, - crm_element_value(xml_op, - PCMK__XA_TRANSITION_MAGIC)); + pcmk__xe_get(xml_op, PCMK__XA_TRANSITION_MAGIC)); data->rc = pcmk__digest_mismatch; } diff --git a/lib/pengine/pe_output.c b/lib/pengine/pe_output.c index 7f7e97d6acc..83d0205361f 100644 --- a/lib/pengine/pe_output.c +++ b/lib/pengine/pe_output.c @@ -27,7 +27,7 @@ pe__resource_description(const pcmk_resource_t *rsc, uint32_t show_opts) // User-supplied description if (pcmk_any_flags_set(show_opts, pcmk_show_rsc_only|pcmk_show_description)) { - desc = crm_element_value(rsc->priv->xml, PCMK_XA_DESCRIPTION); + desc = pcmk__xe_get(rsc->priv->xml, PCMK_XA_DESCRIPTION); } return desc; } @@ -151,19 +151,19 @@ get_operation_list(xmlNode *rsc_entry) { NULL); rsc_op != NULL; rsc_op = pcmk__xe_next(rsc_op, PCMK__XE_LRM_RSC_OP)) { - const char *task = crm_element_value(rsc_op, PCMK_XA_OPERATION); + const char *task = pcmk__xe_get(rsc_op, PCMK_XA_OPERATION); if (pcmk__str_eq(task, PCMK_ACTION_NOTIFY, pcmk__str_none)) { continue; // Ignore notify actions } else { int exit_status; - pcmk__scan_min_int(crm_element_value(rsc_op, PCMK__XA_RC_CODE), + pcmk__scan_min_int(pcmk__xe_get(rsc_op, PCMK__XA_RC_CODE), &exit_status, 0); if ((exit_status == CRM_EX_NOT_RUNNING) && pcmk__str_eq(task, PCMK_ACTION_MONITOR, pcmk__str_none) - && pcmk__str_eq(crm_element_value(rsc_op, PCMK_META_INTERVAL), - "0", pcmk__str_null_matches)) { + && pcmk__str_eq(pcmk__xe_get(rsc_op, PCMK_META_INTERVAL), "0", + pcmk__str_null_matches)) { continue; // Ignore probes that found the resource not running } } @@ -206,7 +206,7 @@ get_cluster_stack(pcmk_scheduler_t *scheduler) LOG_DEBUG); if (stack != NULL) { - return crm_element_value(stack, PCMK_XA_VALUE); + return pcmk__xe_get(stack, PCMK_XA_VALUE); } return PCMK_VALUE_UNKNOWN; } @@ -231,7 +231,7 @@ last_changed_string(const char *last_written, const char *user, static char * op_history_string(xmlNode *xml_op, const char *task, const char *interval_ms_s, int rc, bool print_timing) { - const char *call = crm_element_value(xml_op, PCMK__XA_CALL_ID); + const char *call = pcmk__xe_get(xml_op, PCMK__XA_CALL_ID); char *interval_str = NULL; char *buf = NULL; @@ -260,14 +260,14 @@ op_history_string(xmlNode *xml_op, const char *task, const char *interval_ms_s, free(epoch_str); } - value = crm_element_value(xml_op, PCMK_XA_EXEC_TIME); + value = pcmk__xe_get(xml_op, PCMK_XA_EXEC_TIME); if (value) { char *pair = pcmk__format_nvpair(PCMK_XA_EXEC_TIME, value, "ms"); exec_str = crm_strdup_printf(" %s", pair); free(pair); } - value = crm_element_value(xml_op, PCMK_XA_QUEUE_TIME); + value = pcmk__xe_get(xml_op, PCMK_XA_QUEUE_TIME); if (value) { char *pair = pcmk__format_nvpair(PCMK_XA_QUEUE_TIME, value, "ms"); queue_str = crm_strdup_printf(" %s", pair); @@ -423,10 +423,10 @@ cluster_summary(pcmk__output_t *out, va_list args) { xmlNode *dc_version = pcmk__xpath_find_one(scheduler->input->doc, XPATH_DC_VERSION, LOG_DEBUG); const char *dc_version_s = dc_version? - crm_element_value(dc_version, PCMK_XA_VALUE) + pcmk__xe_get(dc_version, PCMK_XA_VALUE) : NULL; - const char *quorum = crm_element_value(scheduler->input, - PCMK_XA_HAVE_QUORUM); + const char *quorum = pcmk__xe_get(scheduler->input, + PCMK_XA_HAVE_QUORUM); char *dc_name = scheduler->dc_node? pe__node_display_name(scheduler->dc_node, pcmk_is_set(show_opts, pcmk_show_node_id)) : NULL; bool mixed_version = is_mixed_version(scheduler); @@ -437,13 +437,12 @@ cluster_summary(pcmk__output_t *out, va_list args) { } if (pcmk_is_set(section_opts, pcmk_section_times)) { - const char *last_written = crm_element_value(scheduler->input, - PCMK_XA_CIB_LAST_WRITTEN); - const char *user = crm_element_value(scheduler->input, - PCMK_XA_UPDATE_USER); - const char *client = crm_element_value(scheduler->input, - PCMK_XA_UPDATE_CLIENT); - const char *origin = crm_element_value(scheduler->input, + const char *last_written = pcmk__xe_get(scheduler->input, + PCMK_XA_CIB_LAST_WRITTEN); + const char *user = pcmk__xe_get(scheduler->input, PCMK_XA_UPDATE_USER); + const char *client = pcmk__xe_get(scheduler->input, + PCMK_XA_UPDATE_CLIENT); + const char *origin = pcmk__xe_get(scheduler->input, PCMK_XA_UPDATE_ORIGIN); PCMK__OUTPUT_LIST_HEADER(out, false, rc, "Cluster Summary"); @@ -499,10 +498,10 @@ cluster_summary_html(pcmk__output_t *out, va_list args) { xmlNode *dc_version = pcmk__xpath_find_one(scheduler->input->doc, XPATH_DC_VERSION, LOG_DEBUG); const char *dc_version_s = dc_version? - crm_element_value(dc_version, PCMK_XA_VALUE) + pcmk__xe_get(dc_version, PCMK_XA_VALUE) : NULL; - const char *quorum = crm_element_value(scheduler->input, - PCMK_XA_HAVE_QUORUM); + const char *quorum = pcmk__xe_get(scheduler->input, + PCMK_XA_HAVE_QUORUM); char *dc_name = scheduler->dc_node? pe__node_display_name(scheduler->dc_node, pcmk_is_set(show_opts, pcmk_show_node_id)) : NULL; bool mixed_version = is_mixed_version(scheduler); @@ -513,14 +512,13 @@ cluster_summary_html(pcmk__output_t *out, va_list args) { } if (pcmk_is_set(section_opts, pcmk_section_times)) { - const char *last_written = crm_element_value(scheduler->input, - PCMK_XA_CIB_LAST_WRITTEN); - const char *user = crm_element_value(scheduler->input, - PCMK_XA_UPDATE_USER); - const char *client = crm_element_value(scheduler->input, - PCMK_XA_UPDATE_CLIENT); - const char *origin = crm_element_value(scheduler->input, - PCMK_XA_UPDATE_ORIGIN); + const char *last_written = pcmk__xe_get(scheduler->input, + PCMK_XA_CIB_LAST_WRITTEN); + const char *user = pcmk__xe_get(scheduler->input, PCMK_XA_UPDATE_USER); + const char *client = pcmk__xe_get(scheduler->input, + PCMK_XA_UPDATE_CLIENT); + const char *origin = pcmk__xe_get(scheduler->input, + PCMK_XA_UPDATE_ORIGIN); PCMK__OUTPUT_LIST_HEADER(out, false, rc, "Cluster Summary"); out->message(out, "cluster-times", scheduler->priv->local_node_name, @@ -1501,8 +1499,8 @@ failed_action_technical(pcmk__output_t *out, const xmlNode *xml_op, int status, const char *exit_reason, const char *exec_time) { - const char *call_id = crm_element_value(xml_op, PCMK__XA_CALL_ID); - const char *queue_time = crm_element_value(xml_op, PCMK_XA_QUEUE_TIME); + const char *call_id = pcmk__xe_get(xml_op, PCMK__XA_CALL_ID); + const char *queue_time = pcmk__xe_get(xml_op, PCMK_XA_QUEUE_TIME); const char *exit_status = crm_exit_str(rc); const char *lrm_status = pcmk_exec_status_str(status); time_t last_change_epoch = 0; @@ -1556,17 +1554,15 @@ failed_action_default(pcmk__output_t *out, va_list args) uint32_t show_opts = va_arg(args, uint32_t); const char *op_key = pcmk__xe_history_key(xml_op); - const char *node_name = crm_element_value(xml_op, PCMK_XA_UNAME); - const char *exit_reason = crm_element_value(xml_op, PCMK_XA_EXIT_REASON); - const char *exec_time = crm_element_value(xml_op, PCMK_XA_EXEC_TIME); + const char *node_name = pcmk__xe_get(xml_op, PCMK_XA_UNAME); + const char *exit_reason = pcmk__xe_get(xml_op, PCMK_XA_EXIT_REASON); + const char *exec_time = pcmk__xe_get(xml_op, PCMK_XA_EXEC_TIME); int rc; int status; - pcmk__scan_min_int(crm_element_value(xml_op, PCMK__XA_RC_CODE), &rc, 0); - - pcmk__scan_min_int(crm_element_value(xml_op, PCMK__XA_OP_STATUS), &status, - 0); + pcmk__scan_min_int(pcmk__xe_get(xml_op, PCMK__XA_RC_CODE), &rc, 0); + pcmk__scan_min_int(pcmk__xe_get(xml_op, PCMK__XA_OP_STATUS), &status, 0); if (pcmk__str_empty(node_name)) { node_name = "unknown node"; @@ -1592,11 +1588,10 @@ failed_action_xml(pcmk__output_t *out, va_list args) { const char *op_key_name = PCMK_XA_OP_KEY; int rc; int status; - const char *uname = crm_element_value(xml_op, PCMK_XA_UNAME); - const char *call_id = crm_element_value(xml_op, PCMK__XA_CALL_ID); + const char *uname = pcmk__xe_get(xml_op, PCMK_XA_UNAME); + const char *call_id = pcmk__xe_get(xml_op, PCMK__XA_CALL_ID); const char *exitstatus = NULL; - const char *exit_reason = pcmk__s(crm_element_value(xml_op, - PCMK_XA_EXIT_REASON), + const char *exit_reason = pcmk__s(pcmk__xe_get(xml_op, PCMK_XA_EXIT_REASON), "none"); const char *status_s = NULL; @@ -1609,11 +1604,10 @@ failed_action_xml(pcmk__output_t *out, va_list args) { exit_reason_esc = pcmk__xml_escape(exit_reason, pcmk__xml_escape_attr); exit_reason = exit_reason_esc; } - pcmk__scan_min_int(crm_element_value(xml_op, PCMK__XA_RC_CODE), &rc, 0); - pcmk__scan_min_int(crm_element_value(xml_op, PCMK__XA_OP_STATUS), &status, - 0); + pcmk__scan_min_int(pcmk__xe_get(xml_op, PCMK__XA_RC_CODE), &rc, 0); + pcmk__scan_min_int(pcmk__xe_get(xml_op, PCMK__XA_OP_STATUS), &status, 0); - if (crm_element_value(xml_op, PCMK__XA_OPERATION_KEY) == NULL) { + if (pcmk__xe_get(xml_op, PCMK__XA_OPERATION_KEY) == NULL) { op_key_name = PCMK_XA_ID; } exitstatus = crm_exit_str(rc); @@ -1632,9 +1626,9 @@ failed_action_xml(pcmk__output_t *out, va_list args) { pcmk__xe_get_time(xml_op, PCMK_XA_LAST_RC_CHANGE, &epoch); if (epoch > 0) { - const char *queue_time = crm_element_value(xml_op, PCMK_XA_QUEUE_TIME); - const char *exec = crm_element_value(xml_op, PCMK_XA_EXEC_TIME); - const char *task = crm_element_value(xml_op, PCMK_XA_OPERATION); + const char *queue_time = pcmk__xe_get(xml_op, PCMK_XA_QUEUE_TIME); + const char *exec = pcmk__xe_get(xml_op, PCMK_XA_EXEC_TIME); + const char *task = pcmk__xe_get(xml_op, PCMK_XA_OPERATION); guint interval_ms = 0; char *interval_ms_s = NULL; char *rc_change = pcmk__epoch2str(&epoch, @@ -1684,8 +1678,7 @@ failed_action_list(pcmk__output_t *out, va_list args) { char *rsc = NULL; - if (!pcmk__str_in_list(crm_element_value(xml_op, PCMK_XA_UNAME), - only_node, + if (!pcmk__str_in_list(pcmk__xe_get(xml_op, PCMK_XA_UNAME), only_node, pcmk__str_star_matches|pcmk__str_casei)) { continue; } @@ -2201,11 +2194,11 @@ node_and_op(pcmk__output_t *out, va_list args) { gchar *node_str = NULL; char *last_change_str = NULL; - const char *op_rsc = crm_element_value(xml_op, PCMK_XA_RESOURCE); + const char *op_rsc = pcmk__xe_get(xml_op, PCMK_XA_RESOURCE); int status; time_t last_change = 0; - pcmk__scan_min_int(crm_element_value(xml_op, PCMK__XA_OP_STATUS), &status, + pcmk__scan_min_int(pcmk__xe_get(xml_op, PCMK__XA_OP_STATUS), &status, PCMK_EXEC_UNKNOWN); rsc = pe_find_resource(scheduler->priv->resources, op_rsc); @@ -2228,7 +2221,7 @@ node_and_op(pcmk__output_t *out, va_list args) { if (pcmk__xe_get_time(xml_op, PCMK_XA_LAST_RC_CHANGE, &last_change) == pcmk_rc_ok) { - const char *exec_time = crm_element_value(xml_op, PCMK_XA_EXEC_TIME); + const char *exec_time = pcmk__xe_get(xml_op, PCMK_XA_EXEC_TIME); last_change_str = crm_strdup_printf(", %s='%s', exec=%sms", PCMK_XA_LAST_RC_CHANGE, @@ -2238,9 +2231,9 @@ node_and_op(pcmk__output_t *out, va_list args) { out->list_item(out, NULL, "%s: %s (node=%s, call=%s, rc=%s%s): %s", node_str, pcmk__xe_history_key(xml_op), - crm_element_value(xml_op, PCMK_XA_UNAME), - crm_element_value(xml_op, PCMK__XA_CALL_ID), - crm_element_value(xml_op, PCMK__XA_RC_CODE), + pcmk__xe_get(xml_op, PCMK_XA_UNAME), + pcmk__xe_get(xml_op, PCMK__XA_CALL_ID), + pcmk__xe_get(xml_op, PCMK__XA_RC_CODE), last_change_str ? last_change_str : "", pcmk_exec_status_str(status)); @@ -2256,17 +2249,17 @@ node_and_op_xml(pcmk__output_t *out, va_list args) { xmlNodePtr xml_op = va_arg(args, xmlNodePtr); pcmk_resource_t *rsc = NULL; - const char *uname = crm_element_value(xml_op, PCMK_XA_UNAME); - const char *call_id = crm_element_value(xml_op, PCMK__XA_CALL_ID); - const char *rc_s = crm_element_value(xml_op, PCMK__XA_RC_CODE); + const char *uname = pcmk__xe_get(xml_op, PCMK_XA_UNAME); + const char *call_id = pcmk__xe_get(xml_op, PCMK__XA_CALL_ID); + const char *rc_s = pcmk__xe_get(xml_op, PCMK__XA_RC_CODE); const char *status_s = NULL; - const char *op_rsc = crm_element_value(xml_op, PCMK_XA_RESOURCE); + const char *op_rsc = pcmk__xe_get(xml_op, PCMK_XA_RESOURCE); int status; time_t last_change = 0; xmlNode *node = NULL; - pcmk__scan_min_int(crm_element_value(xml_op, PCMK__XA_OP_STATUS), - &status, PCMK_EXEC_UNKNOWN); + pcmk__scan_min_int(pcmk__xe_get(xml_op, PCMK__XA_OP_STATUS), &status, + PCMK_EXEC_UNKNOWN); status_s = pcmk_exec_status_str(status); node = pcmk__output_create_xml_node(out, PCMK_XE_OPERATION, @@ -2280,10 +2273,9 @@ node_and_op_xml(pcmk__output_t *out, va_list args) { rsc = pe_find_resource(scheduler->priv->resources, op_rsc); if (rsc) { - const char *class = crm_element_value(rsc->priv->xml, PCMK_XA_CLASS); - const char *provider = crm_element_value(rsc->priv->xml, - PCMK_XA_PROVIDER); - const char *kind = crm_element_value(rsc->priv->xml, PCMK_XA_TYPE); + const char *class = pcmk__xe_get(rsc->priv->xml, PCMK_XA_CLASS); + const char *provider = pcmk__xe_get(rsc->priv->xml, PCMK_XA_PROVIDER); + const char *kind = pcmk__xe_get(rsc->priv->xml, PCMK_XA_TYPE); bool has_provider = pcmk_is_set(pcmk_get_ra_caps(class), pcmk_ra_cap_provider); @@ -2302,7 +2294,7 @@ node_and_op_xml(pcmk__output_t *out, va_list args) { if (pcmk__xe_get_time(xml_op, PCMK_XA_LAST_RC_CHANGE, &last_change) == pcmk_rc_ok) { const char *last_rc_change = pcmk__trim(ctime(&last_change)); - const char *exec_time = crm_element_value(xml_op, PCMK_XA_EXEC_TIME); + const char *exec_time = pcmk__xe_get(xml_op, PCMK_XA_EXEC_TIME); pcmk__xe_set_props(node, PCMK_XA_LAST_RC_CHANGE, last_rc_change, @@ -2463,7 +2455,7 @@ node_history_list(pcmk__output_t *out, va_list args) { rsc_entry != NULL; rsc_entry = pcmk__xe_next(rsc_entry, PCMK__XE_LRM_RESOURCE)) { - const char *rsc_id = crm_element_value(rsc_entry, PCMK_XA_ID); + const char *rsc_id = pcmk__xe_get(rsc_entry, PCMK_XA_ID); pcmk_resource_t *rsc = NULL; const pcmk_resource_t *parent = NULL; @@ -2522,7 +2514,7 @@ node_history_list(pcmk__output_t *out, va_list args) { } rsc = pe_find_resource(scheduler->priv->resources, - crm_element_value(rsc_entry, PCMK_XA_ID)); + pcmk__xe_get(rsc_entry, PCMK_XA_ID)); if (rc == pcmk_rc_no_output) { rc = pcmk_rc_ok; @@ -2820,7 +2812,7 @@ op_history_xml(pcmk__output_t *out, va_list args) { int rc = va_arg(args, int); uint32_t show_opts = va_arg(args, uint32_t); - const char *call_id = crm_element_value(xml_op, PCMK__XA_CALL_ID); + const char *call_id = pcmk__xe_get(xml_op, PCMK__XA_CALL_ID); char *rc_s = pcmk__itoa(rc); const char *rc_text = crm_exit_str(rc); xmlNodePtr node = NULL; @@ -2850,13 +2842,13 @@ op_history_xml(pcmk__output_t *out, va_list args) { free(s); } - value = crm_element_value(xml_op, PCMK_XA_EXEC_TIME); + value = pcmk__xe_get(xml_op, PCMK_XA_EXEC_TIME); if (value) { char *s = crm_strdup_printf("%sms", value); crm_xml_add(node, PCMK_XA_EXEC_TIME, s); free(s); } - value = crm_element_value(xml_op, PCMK_XA_QUEUE_TIME); + value = pcmk__xe_get(xml_op, PCMK_XA_QUEUE_TIME); if (value) { char *s = crm_strdup_printf("%sms", value); crm_xml_add(node, PCMK_XA_QUEUE_TIME, s); @@ -3147,10 +3139,9 @@ resource_operation_list(pcmk__output_t *out, va_list args) /* Print each operation */ for (gIter = op_list; gIter != NULL; gIter = gIter->next) { xmlNode *xml_op = (xmlNode *) gIter->data; - const char *task = crm_element_value(xml_op, PCMK_XA_OPERATION); - const char *interval_ms_s = crm_element_value(xml_op, - PCMK_META_INTERVAL); - const char *op_rc = crm_element_value(xml_op, PCMK__XA_RC_CODE); + const char *task = pcmk__xe_get(xml_op, PCMK_XA_OPERATION); + const char *interval_ms_s = pcmk__xe_get(xml_op, PCMK_META_INTERVAL); + const char *op_rc = pcmk__xe_get(xml_op, PCMK__XA_RC_CODE); int op_rc_i; pcmk__scan_min_int(op_rc, &op_rc_i, 0); diff --git a/lib/pengine/remote.c b/lib/pengine/remote.c index b3820a742d5..ce8d69f117d 100644 --- a/lib/pengine/remote.c +++ b/lib/pengine/remote.c @@ -1,5 +1,5 @@ /* - * Copyright 2013-2024 the Pacemaker project contributors + * Copyright 2013-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -54,17 +54,17 @@ xml_contains_remote_node(xmlNode *xml) return false; } - value = crm_element_value(xml, PCMK_XA_TYPE); + value = pcmk__xe_get(xml, PCMK_XA_TYPE); if (!pcmk__str_eq(value, "remote", pcmk__str_casei)) { return false; } - value = crm_element_value(xml, PCMK_XA_CLASS); + value = pcmk__xe_get(xml, PCMK_XA_CLASS); if (!pcmk__str_eq(value, PCMK_RESOURCE_CLASS_OCF, pcmk__str_casei)) { return false; } - value = crm_element_value(xml, PCMK_XA_PROVIDER); + value = pcmk__xe_get(xml, PCMK_XA_PROVIDER); if (!pcmk__str_eq(value, "pacemaker", pcmk__str_casei)) { return false; } diff --git a/lib/pengine/status.c b/lib/pengine/status.c index f280de26567..2e676319ee9 100644 --- a/lib/pengine/status.c +++ b/lib/pengine/status.c @@ -81,7 +81,7 @@ cluster_status(pcmk_scheduler_t * scheduler) return TRUE; } - new_version = crm_element_value(scheduler->input, PCMK_XA_CRM_FEATURE_SET); + new_version = pcmk__xe_get(scheduler->input, PCMK_XA_CRM_FEATURE_SET); if (pcmk__check_feature_set(new_version) != pcmk_rc_ok) { pcmk__config_err("Can't process CIB with feature set '%s' greater than our own '%s'", diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c index 72a57264412..f028d2028ff 100644 --- a/lib/pengine/unpack.c +++ b/lib/pengine/unpack.c @@ -534,8 +534,8 @@ expand_remote_rsc_meta(xmlNode *xml_obj, xmlNode *parent, pcmk_scheduler_t *data for (attr = pcmk__xe_first_child(attr_set, NULL, NULL, NULL); attr != NULL; attr = pcmk__xe_next(attr, NULL)) { - const char *value = crm_element_value(attr, PCMK_XA_VALUE); - const char *name = crm_element_value(attr, PCMK_XA_NAME); + const char *value = pcmk__xe_get(attr, PCMK_XA_VALUE); + const char *name = pcmk__xe_get(attr, PCMK_XA_NAME); if (name == NULL) { // Sanity continue; @@ -615,9 +615,9 @@ unpack_nodes(xmlNode *xml_nodes, pcmk_scheduler_t *scheduler) new_node = NULL; - id = crm_element_value(xml_obj, PCMK_XA_ID); - uname = crm_element_value(xml_obj, PCMK_XA_UNAME); - type = crm_element_value(xml_obj, PCMK_XA_TYPE); + id = pcmk__xe_get(xml_obj, PCMK_XA_ID); + uname = pcmk__xe_get(xml_obj, PCMK_XA_UNAME); + type = pcmk__xe_get(xml_obj, PCMK_XA_TYPE); crm_trace("Processing node %s/%s", uname, id); if (id == NULL) { @@ -630,7 +630,7 @@ unpack_nodes(xmlNode *xml_nodes, pcmk_scheduler_t *scheduler) pcmk__config_warn("Using 0 as score for node %s " "because '%s' is not a valid score: %s", pcmk__s(uname, "without name"), - crm_element_value(xml_obj, PCMK_XA_SCORE), + pcmk__xe_get(xml_obj, PCMK_XA_SCORE), pcmk_rc_str(rc)); } new_node = pe_create_node(id, uname, type, score, scheduler); @@ -643,8 +643,7 @@ unpack_nodes(xmlNode *xml_nodes, pcmk_scheduler_t *scheduler) add_node_attrs(xml_obj, new_node, FALSE, scheduler); - crm_trace("Done with node %s", - crm_element_value(xml_obj, PCMK_XA_UNAME)); + crm_trace("Done with node %s", pcmk__xe_get(xml_obj, PCMK_XA_UNAME)); } return TRUE; @@ -1066,7 +1065,7 @@ unpack_handle_remote_attrs(pcmk_node_t *this_node, const xmlNode *state, crm_trace("Processing Pacemaker Remote node %s", pcmk__node_name(this_node)); - pcmk__scan_min_int(crm_element_value(state, PCMK__XA_NODE_IN_MAINTENANCE), + pcmk__scan_min_int(pcmk__xe_get(state, PCMK__XA_NODE_IN_MAINTENANCE), &maint, 0); if (maint) { pcmk__set_node_flags(this_node, pcmk__node_remote_maint); @@ -1193,7 +1192,7 @@ unpack_node_state(const xmlNode *state, pcmk_scheduler_t *scheduler) const char *uname = NULL; pcmk_node_t *this_node = NULL; - id = crm_element_value(state, PCMK_XA_ID); + id = pcmk__xe_get(state, PCMK_XA_ID); if (id == NULL) { pcmk__config_err("Ignoring invalid " PCMK__XE_NODE_STATE " entry without " PCMK_XA_ID); @@ -1201,7 +1200,7 @@ unpack_node_state(const xmlNode *state, pcmk_scheduler_t *scheduler) return; } - uname = crm_element_value(state, PCMK_XA_UNAME); + uname = pcmk__xe_get(state, PCMK_XA_UNAME); if (uname == NULL) { /* If a joining peer makes the cluster acquire the quorum from Corosync * but has not joined the controller CPG membership yet, it's possible @@ -1229,7 +1228,7 @@ unpack_node_state(const xmlNode *state, pcmk_scheduler_t *scheduler) * do need to mark whether the node has been fenced, as this plays a * role during unpacking cluster node resource state. */ - pcmk__scan_min_int(crm_element_value(state, PCMK__XA_NODE_FENCED), + pcmk__scan_min_int(pcmk__xe_get(state, PCMK__XA_NODE_FENCED), &remote_fenced, 0); if (remote_fenced) { pcmk__set_node_flags(this_node, pcmk__node_remote_fenced); @@ -1293,7 +1292,7 @@ unpack_node_history(const xmlNode *status, bool fence, state != NULL; state = pcmk__xe_next(state, PCMK__XE_NODE_STATE)) { const char *id = pcmk__xe_id(state); - const char *uname = crm_element_value(state, PCMK_XA_UNAME); + const char *uname = pcmk__xe_get(state, PCMK_XA_UNAME); pcmk_node_t *this_node = NULL; if ((id == NULL) || (uname == NULL)) { @@ -1474,7 +1473,7 @@ unpack_status(xmlNode *status, pcmk_scheduler_t *scheduler) static long long unpack_node_member(const xmlNode *node_state, pcmk_scheduler_t *scheduler) { - const char *member_time = crm_element_value(node_state, PCMK__XA_IN_CCM); + const char *member_time = pcmk__xe_get(node_state, PCMK__XA_IN_CCM); int member = 0; if (member_time == NULL) { @@ -1517,7 +1516,7 @@ unpack_node_member(const xmlNode *node_state, pcmk_scheduler_t *scheduler) static long long unpack_node_online(const xmlNode *node_state) { - const char *peer_time = crm_element_value(node_state, PCMK_XA_CRMD); + const char *peer_time = pcmk__xe_get(node_state, PCMK_XA_CRMD); // @COMPAT Entries recorded for DCs < 2.1.7 have "online" or "offline" if (pcmk__str_eq(peer_time, PCMK_VALUE_OFFLINE, @@ -1578,8 +1577,8 @@ determine_online_status_no_fencing(pcmk_scheduler_t *scheduler, pcmk_node_t *this_node) { gboolean online = FALSE; - const char *join = crm_element_value(node_state, PCMK__XA_JOIN); - const char *exp_state = crm_element_value(node_state, PCMK_XA_EXPECTED); + const char *join = pcmk__xe_get(node_state, PCMK__XA_JOIN); + const char *exp_state = pcmk__xe_get(node_state, PCMK_XA_EXPECTED); long long when_member = unpack_node_member(node_state, scheduler); long long when_online = unpack_node_online(node_state); @@ -1652,8 +1651,8 @@ determine_online_status_fencing(pcmk_scheduler_t *scheduler, pcmk_node_t *this_node) { bool termination_requested = unpack_node_terminate(this_node, node_state); - const char *join = crm_element_value(node_state, PCMK__XA_JOIN); - const char *exp_state = crm_element_value(node_state, PCMK_XA_EXPECTED); + const char *join = pcmk__xe_get(node_state, PCMK__XA_JOIN); + const char *exp_state = pcmk__xe_get(node_state, PCMK_XA_EXPECTED); long long when_member = unpack_node_member(node_state, scheduler); long long when_online = unpack_node_online(node_state); @@ -1835,7 +1834,7 @@ determine_online_status(const xmlNode *node_state, pcmk_node_t *this_node, pcmk_scheduler_t *scheduler) { gboolean online = FALSE; - const char *exp_state = crm_element_value(node_state, PCMK_XA_EXPECTED); + const char *exp_state = pcmk__xe_get(node_state, PCMK_XA_EXPECTED); CRM_CHECK(this_node != NULL, return); @@ -2011,7 +2010,7 @@ create_fake_resource(const char *rsc_id, const xmlNode *rsc_entry, } } - if (crm_element_value(rsc_entry, PCMK__META_CONTAINER)) { + if (pcmk__xe_get(rsc_entry, PCMK__META_CONTAINER)) { // This removed resource needs to be mapped to a launcher crm_trace("Launched resource %s was removed from the configuration", rsc_id); @@ -2266,7 +2265,7 @@ process_orphan_resource(const xmlNode *rsc_entry, const pcmk_node_t *node, pcmk_scheduler_t *scheduler) { pcmk_resource_t *rsc = NULL; - const char *rsc_id = crm_element_value(rsc_entry, PCMK_XA_ID); + const char *rsc_id = pcmk__xe_get(rsc_entry, PCMK_XA_ID); crm_debug("Detected orphan resource %s on %s", rsc_id, pcmk__node_name(node)); @@ -2615,13 +2614,13 @@ process_recurring(pcmk_node_t *node, pcmk_resource_t *rsc, continue; } - status = crm_element_value(rsc_op, PCMK__XA_OP_STATUS); + status = pcmk__xe_get(rsc_op, PCMK__XA_OP_STATUS); if (pcmk__str_eq(status, "-1", pcmk__str_casei)) { pcmk__rsc_trace(rsc, "Skipping %s on %s: status", id, pcmk__node_name(node)); continue; } - task = crm_element_value(rsc_op, PCMK_XA_OPERATION); + task = pcmk__xe_get(rsc_op, PCMK_XA_OPERATION); /* create the action */ key = pcmk__op_key(rsc->id, task, interval_ms); pcmk__rsc_trace(rsc, "Creating %s on %s", key, pcmk__node_name(node)); @@ -2647,8 +2646,8 @@ calculate_active_ops(const GList *sorted_op_list, int *start_index, counter++; - task = crm_element_value(rsc_op, PCMK_XA_OPERATION); - status = crm_element_value(rsc_op, PCMK__XA_OP_STATUS); + task = pcmk__xe_get(rsc_op, PCMK_XA_OPERATION); + status = pcmk__xe_get(rsc_op, PCMK__XA_OP_STATUS); if (pcmk__str_eq(task, PCMK_ACTION_STOP, pcmk__str_casei) && pcmk__str_eq(status, "0", pcmk__str_casei)) { @@ -2661,7 +2660,7 @@ calculate_active_ops(const GList *sorted_op_list, int *start_index, } else if ((implied_monitor_start <= *stop_index) && pcmk__str_eq(task, PCMK_ACTION_MONITOR, pcmk__str_casei)) { - const char *rc = crm_element_value(rsc_op, PCMK__XA_RC_CODE); + const char *rc = pcmk__xe_get(rsc_op, PCMK__XA_RC_CODE); if (pcmk__strcase_any_of(rc, "0", "8", NULL)) { implied_monitor_start = counter; @@ -2841,8 +2840,8 @@ handle_removed_launched_resources(const xmlNode *lrm_rsc_list, const char *rsc_id; const char *launcher_id = NULL; - launcher_id = crm_element_value(rsc_entry, PCMK__META_CONTAINER); - rsc_id = crm_element_value(rsc_entry, PCMK_XA_ID); + launcher_id = pcmk__xe_get(rsc_entry, PCMK__META_CONTAINER); + rsc_id = pcmk__xe_get(rsc_entry, PCMK_XA_ID); if ((launcher_id == NULL) || (rsc_id == NULL)) { continue; } @@ -3097,7 +3096,7 @@ non_monitor_after(const char *rsc_id, const char *node_name, continue; } - task = crm_element_value(op, PCMK_XA_OPERATION); + task = pcmk__xe_get(op, PCMK_XA_OPERATION); if (pcmk__str_any_of(task, PCMK_ACTION_START, PCMK_ACTION_STOP, PCMK_ACTION_MIGRATE_TO, PCMK_ACTION_MIGRATE_FROM, @@ -3130,7 +3129,7 @@ newer_state_after_migrate(const char *rsc_id, const char *node_name, pcmk_scheduler_t *scheduler) { const xmlNode *xml_op = (migrate_from != NULL)? migrate_from : migrate_to; - const char *source = crm_element_value(xml_op, PCMK__META_MIGRATE_SOURCE); + const char *source = pcmk__xe_get(xml_op, PCMK__META_MIGRATE_SOURCE); /* It's preferred to compare to the migrate event on the same node if * existing, since call ids are more reliable. @@ -3166,8 +3165,8 @@ get_migration_node_names(const xmlNode *entry, const pcmk_node_t *source_node, const pcmk_node_t *target_node, const char **source_name, const char **target_name) { - *source_name = crm_element_value(entry, PCMK__META_MIGRATE_SOURCE); - *target_name = crm_element_value(entry, PCMK__META_MIGRATE_TARGET); + *source_name = pcmk__xe_get(entry, PCMK__META_MIGRATE_SOURCE); + *target_name = pcmk__xe_get(entry, PCMK__META_MIGRATE_TARGET); if ((*source_name == NULL) || (*target_name == NULL)) { pcmk__config_err("Ignoring resource history entry %s without " PCMK__META_MIGRATE_SOURCE " and " @@ -3507,7 +3506,7 @@ record_failed_op(struct action_history *history) xIter != NULL; xIter = xIter->next) { const char *key = pcmk__xe_history_key(xIter); - const char *uname = crm_element_value(xIter, PCMK_XA_UNAME); + const char *uname = pcmk__xe_get(xIter, PCMK_XA_UNAME); if (pcmk__str_eq(history->key, key, pcmk__str_none) && pcmk__str_eq(uname, history->node->priv->name, @@ -4289,7 +4288,7 @@ int pe__target_rc_from_xml(const xmlNode *xml_op) { int target_rc = 0; - const char *key = crm_element_value(xml_op, PCMK__XA_TRANSITION_KEY); + const char *key = pcmk__xe_get(xml_op, PCMK__XA_TRANSITION_KEY); if (key == NULL) { return -1; @@ -4450,8 +4449,7 @@ unpack_action_result(struct action_history *history) "with invalid " PCMK__XA_OP_STATUS " '%s'", history->id, history->rsc->id, pcmk__node_name(history->node), - pcmk__s(crm_element_value(history->xml, - PCMK__XA_OP_STATUS), + pcmk__s(pcmk__xe_get(history->xml, PCMK__XA_OP_STATUS), "")); return pcmk_rc_unpack_error; } @@ -4462,12 +4460,11 @@ unpack_action_result(struct action_history *history) "with invalid " PCMK__XA_RC_CODE " '%s'", history->id, history->rsc->id, pcmk__node_name(history->node), - pcmk__s(crm_element_value(history->xml, - PCMK__XA_RC_CODE), + pcmk__s(pcmk__xe_get(history->xml, PCMK__XA_RC_CODE), "")); return pcmk_rc_unpack_error; } - history->exit_reason = crm_element_value(history->xml, PCMK_XA_EXIT_REASON); + history->exit_reason = pcmk__xe_get(history->xml, PCMK_XA_EXIT_REASON); return pcmk_rc_ok; } @@ -4590,7 +4587,7 @@ failure_is_newer(const struct action_history *history, } if (!pcmk__str_eq(history->task, - crm_element_value(last_failure, PCMK_XA_OPERATION), + pcmk__xe_get(last_failure, PCMK_XA_OPERATION), pcmk__str_none)) { return false; // last_failure is for different action } @@ -4601,10 +4598,9 @@ failure_is_newer(const struct action_history *history, return false; // last_failure is for action with different interval } - if ((pcmk__scan_ll(crm_element_value(history->xml, PCMK_XA_LAST_RC_CHANGE), + if ((pcmk__scan_ll(pcmk__xe_get(history->xml, PCMK_XA_LAST_RC_CHANGE), &this_change, 0LL) != pcmk_rc_ok) - || (pcmk__scan_ll(crm_element_value(last_failure, - PCMK_XA_LAST_RC_CHANGE), + || (pcmk__scan_ll(pcmk__xe_get(last_failure, PCMK_XA_LAST_RC_CHANGE), &failure_change, 0LL) != pcmk_rc_ok) || (failure_change < this_change)) { return false; // Failure is not known to be newer @@ -4652,8 +4648,7 @@ process_pending_action(struct action_history *history, const char *migrate_target = NULL; pcmk_node_t *target = NULL; - migrate_target = crm_element_value(history->xml, - PCMK__META_MIGRATE_TARGET); + migrate_target = pcmk__xe_get(history->xml, PCMK__META_MIGRATE_TARGET); target = pcmk_find_node(history->rsc->priv->scheduler, migrate_target); if (target != NULL) { @@ -4711,7 +4706,7 @@ unpack_rsc_op(pcmk_resource_t *rsc, pcmk_node_t *node, xmlNode *xml_op, } // Task and interval - history.task = crm_element_value(xml_op, PCMK_XA_OPERATION); + history.task = pcmk__xe_get(xml_op, PCMK_XA_OPERATION); if (history.task == NULL) { pcmk__config_err("Ignoring resource history entry %s for %s on %s " "without " PCMK_XA_OPERATION, @@ -4913,7 +4908,7 @@ add_node_attrs(const xmlNode *xml_obj, pcmk_node_t *node, bool overwrite, pcmk_scheduler_t *scheduler) { const char *cluster_name = NULL; - const char *dc_id = crm_element_value(scheduler->input, PCMK_XA_DC_UUID); + const char *dc_id = pcmk__xe_get(scheduler->input, PCMK_XA_DC_UUID); const pcmk_rule_input_t rule_input = { .now = scheduler->priv->now, }; @@ -5063,7 +5058,7 @@ find_operations(const char *rsc, const char *node, gboolean active_filter, node_state != NULL; node_state = pcmk__xe_next(node_state, PCMK__XE_NODE_STATE)) { - const char *uname = crm_element_value(node_state, PCMK_XA_UNAME); + const char *uname = pcmk__xe_get(node_state, PCMK_XA_UNAME); if (node != NULL && !pcmk__str_eq(uname, node, pcmk__str_casei)) { continue; @@ -5099,7 +5094,7 @@ find_operations(const char *rsc, const char *node, gboolean active_filter, lrm_rsc != NULL; lrm_rsc = pcmk__xe_next(lrm_rsc, PCMK__XE_LRM_RESOURCE)) { - const char *rsc_id = crm_element_value(lrm_rsc, PCMK_XA_ID); + const char *rsc_id = pcmk__xe_get(lrm_rsc, PCMK_XA_ID); if ((rsc != NULL) && !pcmk__str_eq(rsc_id, rsc, pcmk__str_none)) { diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c index 8a2e946c928..a5283d44f17 100644 --- a/lib/pengine/utils.c +++ b/lib/pengine/utils.c @@ -867,7 +867,7 @@ pe__failed_probe_for_rsc(const pcmk_resource_t *rsc, const char *name) /* This resource operation was not run on the given node. Note that if name is * NULL, this will always succeed. */ - value = crm_element_value(xml_op, PCMK__META_ON_NODE); + value = pcmk__xe_get(xml_op, PCMK__META_ON_NODE); if (value == NULL || !pcmk__str_eq(value, name, pcmk__str_casei|pcmk__str_null_matches)) { continue; } diff --git a/tools/cibadmin.c b/tools/cibadmin.c index a5b5505a99c..a651d1e323d 100644 --- a/tools/cibadmin.c +++ b/tools/cibadmin.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. * @@ -77,7 +77,7 @@ print_xml_output(xmlNode * xml) } if (pcmk_is_set(options.cmd_options, cib_xpath_address)) { - const char *id = crm_element_value(xml, PCMK_XA_ID); + const char *id = pcmk__xe_get(xml, PCMK_XA_ID); if (pcmk__xe_is(xml, PCMK__XE_XPATH_QUERY)) { xmlNode *child = NULL; diff --git a/tools/crm_attribute.c b/tools/crm_attribute.c index 9db4ded4e4e..01deac23acd 100644 --- a/tools/crm_attribute.c +++ b/tools/crm_attribute.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. * @@ -409,7 +409,7 @@ delete_attr_on_node(xmlNode *child, void *userdata) { struct delete_data_s *dd = (struct delete_data_s *) userdata; - const char *attr_name = crm_element_value(child, PCMK_XA_NAME); + const char *attr_name = pcmk__xe_get(child, PCMK_XA_NAME); int rc = pcmk_rc_ok; if (!pcmk__str_eq(attr_name, options.attr_pattern, pcmk__str_regex)) { @@ -497,7 +497,7 @@ update_attr_on_node(xmlNode *child, void *userdata) { struct update_data_s *ud = (struct update_data_s *) userdata; - const char *attr_name = crm_element_value(child, PCMK_XA_NAME); + const char *attr_name = pcmk__xe_get(child, PCMK_XA_NAME); if (!pcmk__str_eq(attr_name, options.attr_pattern, pcmk__str_regex)) { return pcmk_rc_ok; @@ -561,8 +561,8 @@ output_one_attribute(xmlNode *node, void *userdata) { struct output_data_s *od = (struct output_data_s *) userdata; - const char *name = crm_element_value(node, PCMK_XA_NAME); - const char *value = crm_element_value(node, PCMK_XA_VALUE); + const char *name = pcmk__xe_get(node, PCMK_XA_NAME); + const char *value = pcmk__xe_get(node, PCMK_XA_VALUE); const char *type = options.type; const char *attr_id = options.attr_id; diff --git a/tools/crm_diff.c b/tools/crm_diff.c index ea244f48b28..94c70e1c1ab 100644 --- a/tools/crm_diff.c +++ b/tools/crm_diff.c @@ -150,8 +150,7 @@ generate_patch(pcmk__output_t *out, xmlNode *source, xmlNode *target, */ if (no_version) { for (int i = 0; i < PCMK__NELEM(vfields); i++) { - crm_xml_add(target, vfields[i], - crm_element_value(source, vfields[i])); + crm_xml_add(target, vfields[i], pcmk__xe_get(source, vfields[i])); } } diff --git a/tools/crm_mon.c b/tools/crm_mon.c index e93c6d0bbe9..fe7f93056f3 100644 --- a/tools/crm_mon.c +++ b/tools/crm_mon.c @@ -1738,7 +1738,7 @@ handle_rsc_op(xmlNode *xml, void *userdata) id = pcmk__xe_history_key(rsc_op); - magic = crm_element_value(rsc_op, PCMK__XA_TRANSITION_MAGIC); + magic = pcmk__xe_get(rsc_op, PCMK__XA_TRANSITION_MAGIC); if (magic == NULL) { /* non-change */ return pcmk_rc_ok; @@ -1755,14 +1755,14 @@ handle_rsc_op(xmlNode *xml, void *userdata) goto bail; } - node = crm_element_value(rsc_op, PCMK__META_ON_NODE); + node = pcmk__xe_get(rsc_op, PCMK__META_ON_NODE); while ((n != NULL) && !pcmk__xe_is(n, PCMK__XE_NODE_STATE)) { n = n->parent; } if(node == NULL && n) { - node = crm_element_value(n, PCMK_XA_UNAME); + node = pcmk__xe_get(n, PCMK_XA_UNAME); } if (node == NULL && n) { @@ -1819,7 +1819,7 @@ mon_trigger_refresh(gpointer user_data) static int handle_op_for_node(xmlNode *xml, void *userdata) { - const char *node = crm_element_value(xml, PCMK_XA_UNAME); + const char *node = pcmk__xe_get(xml, PCMK_XA_UNAME); if (node == NULL) { node = pcmk__xe_id(xml); @@ -1833,8 +1833,8 @@ static int crm_diff_update_element(xmlNode *change, void *userdata) { const char *name = NULL; - const char *op = crm_element_value(change, PCMK_XA_OPERATION); - const char *xpath = crm_element_value(change, PCMK_XA_PATH); + const char *op = pcmk__xe_get(change, PCMK_XA_OPERATION); + const char *xpath = pcmk__xe_get(change, PCMK_XA_PATH); xmlNode *match = NULL; const char *node = NULL; @@ -1877,7 +1877,7 @@ crm_diff_update_element(xmlNode *change, void *userdata) pcmk__xe_foreach_child(match, NULL, handle_op_for_node, NULL); } else if (strcmp(name, PCMK__XE_NODE_STATE) == 0) { - node = crm_element_value(match, PCMK_XA_UNAME); + node = pcmk__xe_get(match, PCMK_XA_UNAME); if (node == NULL) { node = pcmk__xe_id(match); } diff --git a/tools/crm_resource.c b/tools/crm_resource.c index e4ee98c3978..b6fc25a3552 100644 --- a/tools/crm_resource.c +++ b/tools/crm_resource.c @@ -1444,7 +1444,7 @@ handle_get_param(pcmk_resource_t *rsc, pcmk_node_t *node, cib_t *cib_conn, } else if (pcmk__str_eq(options.attr_set_type, ATTR_SET_ELEMENT, pcmk__str_none)) { - value = crm_element_value(rsc->priv->xml, options.prop_name); + value = pcmk__xe_get(rsc->priv->xml, options.prop_name); free_params = false; } else { diff --git a/tools/crm_resource_ban.c b/tools/crm_resource_ban.c index 8a75b0dfcf5..9de379fbca5 100644 --- a/tools/crm_resource_ban.c +++ b/tools/crm_resource_ban.c @@ -361,7 +361,7 @@ build_clear_xpath_string(GString *buf, const xmlNode *constraint_node, bool promoted_role_only) { const char *cons_id = pcmk__xe_id(constraint_node); - const char *cons_rsc = crm_element_value(constraint_node, PCMK_XA_RSC); + const char *cons_rsc = pcmk__xe_get(constraint_node, PCMK_XA_RSC); GString *rsc_role_substr = NULL; const char *promoted_role_rule = "@" PCMK_XA_ROLE "='" PCMK_ROLE_PROMOTED "' or @" PCMK_XA_ROLE "='" diff --git a/tools/crm_resource_print.c b/tools/crm_resource_print.c index 2519ac293aa..d2998fb8b16 100644 --- a/tools/crm_resource_print.c +++ b/tools/crm_resource_print.c @@ -22,7 +22,7 @@ print_constraint(xmlNode *xml_obj, void *userdata) { pcmk_scheduler_t *scheduler = (pcmk_scheduler_t *) userdata; pcmk__output_t *out = scheduler->priv->out; - const char *id = crm_element_value(xml_obj, PCMK_XA_ID); + const char *id = pcmk__xe_get(xml_obj, PCMK_XA_ID); if (id == NULL) { return pcmk_rc_ok; @@ -34,12 +34,12 @@ print_constraint(xmlNode *xml_obj, void *userdata) out->info(out, "Constraint %s %s %s %s %s %s %s", xml_obj->name, - cons_string(crm_element_value(xml_obj, PCMK_XA_ID)), - cons_string(crm_element_value(xml_obj, PCMK_XA_RSC)), - cons_string(crm_element_value(xml_obj, PCMK_XA_WITH_RSC)), - cons_string(crm_element_value(xml_obj, PCMK_XA_SCORE)), - cons_string(crm_element_value(xml_obj, PCMK_XA_RSC_ROLE)), - cons_string(crm_element_value(xml_obj, PCMK_XA_WITH_RSC_ROLE))); + cons_string(pcmk__xe_get(xml_obj, PCMK_XA_ID)), + cons_string(pcmk__xe_get(xml_obj, PCMK_XA_RSC)), + cons_string(pcmk__xe_get(xml_obj, PCMK_XA_WITH_RSC)), + cons_string(pcmk__xe_get(xml_obj, PCMK_XA_SCORE)), + cons_string(pcmk__xe_get(xml_obj, PCMK_XA_RSC_ROLE)), + cons_string(pcmk__xe_get(xml_obj, PCMK_XA_WITH_RSC_ROLE))); return pcmk_rc_ok; } @@ -57,9 +57,9 @@ cli_resource_print_cts(pcmk_resource_t *rsc, pcmk__output_t *out) { const char *host = NULL; bool needs_quorum = TRUE; - const char *rtype = crm_element_value(rsc->priv->xml, PCMK_XA_TYPE); - const char *rprov = crm_element_value(rsc->priv->xml, PCMK_XA_PROVIDER); - const char *rclass = crm_element_value(rsc->priv->xml, PCMK_XA_CLASS); + const char *rtype = pcmk__xe_get(rsc->priv->xml, PCMK_XA_TYPE); + const char *rprov = pcmk__xe_get(rsc->priv->xml, PCMK_XA_PROVIDER); + const char *rclass = pcmk__xe_get(rsc->priv->xml, PCMK_XA_CLASS); pcmk_node_t *node = pcmk__current_node(rsc); if (pcmk_is_set(rsc->flags, pcmk__rsc_fence_device)) { diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c index c1108f7ee11..5506a95a9ad 100644 --- a/tools/crm_resource_runtime.c +++ b/tools/crm_resource_runtime.c @@ -513,7 +513,7 @@ update_attribute(pcmk_resource_t *rsc, const char *requested_name, } if (rsc_attr_set == NULL) { - rsc_attr_set = crm_element_value(xml_search->parent, PCMK_XA_ID); + rsc_attr_set = pcmk__xe_get(xml_search->parent, PCMK_XA_ID); } ud->attr_set_type = pcmk__str_copy(attr_set_type); @@ -747,9 +747,9 @@ send_lrm_rsc_op(pcmk_ipc_api_t *controld_api, bool do_fail_resource, return EINVAL; } - rsc_class = crm_element_value(rsc->priv->xml, PCMK_XA_CLASS); - rsc_provider = crm_element_value(rsc->priv->xml, PCMK_XA_PROVIDER); - rsc_type = crm_element_value(rsc->priv->xml, PCMK_XA_TYPE); + rsc_class = pcmk__xe_get(rsc->priv->xml, PCMK_XA_CLASS); + rsc_provider = pcmk__xe_get(rsc->priv->xml, PCMK_XA_PROVIDER); + rsc_type = pcmk__xe_get(rsc->priv->xml, PCMK_XA_TYPE); if ((rsc_class == NULL) || (rsc_type == NULL)) { out->err(out, "Resource %s does not have a class and type", rsc_id); return EINVAL; @@ -879,7 +879,7 @@ clear_rsc_failures(pcmk__output_t *out, pcmk_ipc_api_t *controld_api, NULL, NULL); xml_op != NULL; xml_op = pcmk__xe_next(xml_op, NULL)) { - failed_id = crm_element_value(xml_op, PCMK__XA_RSC_ID); + failed_id = pcmk__xe_get(xml_op, PCMK__XA_RSC_ID); if (failed_id == NULL) { // Malformed history entry, should never happen continue; @@ -900,20 +900,20 @@ clear_rsc_failures(pcmk__output_t *out, pcmk_ipc_api_t *controld_api, } // Host name should always have been provided by this point - failed_value = crm_element_value(xml_op, PCMK_XA_UNAME); + failed_value = pcmk__xe_get(xml_op, PCMK_XA_UNAME); if (!pcmk__str_eq(node->priv->name, failed_value, pcmk__str_casei)) { continue; } // No operation specified means all operations match if (operation) { - failed_value = crm_element_value(xml_op, PCMK_XA_OPERATION); + failed_value = pcmk__xe_get(xml_op, PCMK_XA_OPERATION); if (!pcmk__str_eq(operation, failed_value, pcmk__str_casei)) { continue; } // Interval (if operation was specified) defaults to 0 (not all) - failed_value = crm_element_value(xml_op, PCMK_META_INTERVAL); + failed_value = pcmk__xe_get(xml_op, PCMK_META_INTERVAL); if (!pcmk__str_eq(interval_ms_s, failed_value, pcmk__str_casei)) { continue; } @@ -2414,9 +2414,9 @@ cli_resource_execute(pcmk_resource_t *rsc, const char *requested_name, return CRM_EX_UNIMPLEMENT_FEATURE; } - rclass = crm_element_value(rsc->priv->xml, PCMK_XA_CLASS); - rprov = crm_element_value(rsc->priv->xml, PCMK_XA_PROVIDER); - rtype = crm_element_value(rsc->priv->xml, PCMK_XA_TYPE); + rclass = pcmk__xe_get(rsc->priv->xml, PCMK_XA_CLASS); + rprov = pcmk__xe_get(rsc->priv->xml, PCMK_XA_PROVIDER); + rtype = pcmk__xe_get(rsc->priv->xml, PCMK_XA_TYPE); params = generate_resource_params(rsc); // @TODO use local node diff --git a/tools/crm_shadow.c b/tools/crm_shadow.c index 823d3bc4b15..038a4119ac3 100644 --- a/tools/crm_shadow.c +++ b/tools/crm_shadow.c @@ -740,7 +740,7 @@ create_shadow_empty(pcmk__output_t *out, GError **error) output = createEmptyCib(0); crm_xml_add(output, PCMK_XA_VALIDATE_WITH, options.validate_with); out->info(out, "Created new %s configuration", - crm_element_value(output, PCMK_XA_VALIDATE_WITH)); + pcmk__xe_get(output, PCMK_XA_VALIDATE_WITH)); if (write_shadow_file(output, filename, false, error) != pcmk_rc_ok) { goto done; From e69997f3ef417bf564de6f547a979ace88deb936 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 19 Mar 2025 04:44:37 -0700 Subject: [PATCH 080/186] API: libcrmcommon: Deprecate crm_element_value() Signed-off-by: Reid Wahl --- include/crm/common/xml_element.h | 1 - include/crm/common/xml_element_compat.h | 3 ++ lib/common/xml_element.c | 52 +++++++++++-------------- 3 files changed, 25 insertions(+), 31 deletions(-) diff --git a/include/crm/common/xml_element.h b/include/crm/common/xml_element.h index eec7c439b50..e0dde333cfc 100644 --- a/include/crm/common/xml_element.h +++ b/include/crm/common/xml_element.h @@ -33,7 +33,6 @@ const char *crm_xml_add_timeval(xmlNode *xml, const char *name_sec, const char *name_usec, const struct timeval *value); -const char *crm_element_value(const xmlNode *data, const char *name); char *crm_element_value_copy(const xmlNode *data, const char *name); #ifdef __cplusplus diff --git a/include/crm/common/xml_element_compat.h b/include/crm/common/xml_element_compat.h index 08823c3f09f..0e35702ecbe 100644 --- a/include/crm/common/xml_element_compat.h +++ b/include/crm/common/xml_element_compat.h @@ -58,6 +58,9 @@ int crm_element_value_ll(const xmlNode *data, const char *name, //! \deprecated Do not use int crm_element_value_int(const xmlNode *data, const char *name, int *dest); +//! \deprecated Do not use +const char *crm_element_value(const xmlNode *data, const char *name); + #ifdef __cplusplus } #endif diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index 9e850d65834..0d30b8c79fc 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -1156,36 +1156,6 @@ crm_xml_add_timeval(xmlNode *xml, const char *name_sec, const char *name_usec, return added; } -/*! - * \brief Retrieve the value of an XML attribute - * - * \param[in] data XML node to check - * \param[in] name Attribute name to check - * - * \return Value of specified attribute (may be \c NULL) - */ -const char * -crm_element_value(const xmlNode *data, const char *name) -{ - xmlAttr *attr = NULL; - - if (data == NULL) { - crm_err("Couldn't find %s in NULL", name ? name : ""); - CRM_LOG_ASSERT(data != NULL); - return NULL; - - } else if (name == NULL) { - crm_err("Couldn't find NULL in %s", data->name); - return NULL; - } - - attr = xmlHasProp(data, (const xmlChar *) name); - if (!attr || !attr->children) { - return NULL; - } - return (const char *) attr->children->content; -} - /*! * \internal * \brief Retrieve the value of an XML attribute @@ -1626,6 +1596,28 @@ sorted_xml(xmlNode *input, xmlNode *parent, gboolean recursive) return result; } +const char * +crm_element_value(const xmlNode *data, const char *name) +{ + xmlAttr *attr = NULL; + + if (data == NULL) { + crm_err("Couldn't find %s in NULL", name ? name : ""); + CRM_LOG_ASSERT(data != NULL); + return NULL; + + } else if (name == NULL) { + crm_err("Couldn't find NULL in %s", data->name); + return NULL; + } + + attr = xmlHasProp(data, (const xmlChar *) name); + if (!attr || !attr->children) { + return NULL; + } + return (const char *) attr->children->content; +} + const char * crm_copy_xml_element(const xmlNode *obj1, xmlNode *obj2, const char *element) { From c939e9066df42ed7bf084d139964acb0c3490429 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 19 Mar 2025 11:42:41 -0700 Subject: [PATCH 081/186] Refactor: libcrmcommon: New pcmk__xe_get_copy() To replace crm_element_value_copy(). Signed-off-by: Reid Wahl --- daemons/attrd/attrd_attributes.c | 4 +-- daemons/attrd/attrd_corosync.c | 2 +- daemons/attrd/attrd_ipc.c | 2 +- daemons/based/based_remote.c | 2 +- daemons/controld/controld_execd.c | 2 +- daemons/controld/controld_join_dc.c | 2 +- daemons/execd/execd_commands.c | 18 +++++------ daemons/execd/remoted_tls.c | 3 +- daemons/fenced/fenced_commands.c | 38 +++++++++++------------ daemons/fenced/fenced_history.c | 16 +++++----- daemons/fenced/fenced_remote.c | 17 +++++----- daemons/pacemakerd/pcmkd_messages.c | 2 +- daemons/schedulerd/schedulerd_messages.c | 2 +- include/crm/common/xml_element_internal.h | 20 ++++++++++++ lib/cib/cib_attrs.c | 4 +-- lib/cib/cib_native.c | 3 +- lib/cib/cib_ops.c | 2 +- lib/common/alerts.c | 4 +-- lib/common/digest.c | 2 +- lib/common/schemas.c | 2 +- lib/common/xml.c | 2 +- lib/fencing/st_actions.c | 2 +- lib/fencing/st_client.c | 36 ++++++++++----------- lib/lrmd/lrmd_client.c | 12 +++---- lib/pacemaker/pcmk_graph_consumer.c | 4 +-- lib/pacemaker/pcmk_simulate.c | 6 ++-- lib/pengine/bundle.c | 37 +++++++++++----------- tools/crm_resource_runtime.c | 8 ++--- 28 files changed, 132 insertions(+), 122 deletions(-) diff --git a/daemons/attrd/attrd_attributes.c b/daemons/attrd/attrd_attributes.c index 21444112fe7..a808caeb8e7 100644 --- a/daemons/attrd/attrd_attributes.c +++ b/daemons/attrd/attrd_attributes.c @@ -51,8 +51,8 @@ attrd_create_attribute(xmlNode *xml) a->id = pcmk__str_copy(name); a->set_type = pcmk__str_copy(set_type); - a->set_id = crm_element_value_copy(xml, PCMK__XA_ATTR_SET); - a->user = crm_element_value_copy(xml, PCMK__XA_ATTR_USER); + a->set_id = pcmk__xe_get_copy(xml, PCMK__XA_ATTR_SET); + a->user = pcmk__xe_get_copy(xml, PCMK__XA_ATTR_USER); a->values = pcmk__strikey_table(NULL, attrd_free_attribute_value); if (is_private) { diff --git a/daemons/attrd/attrd_corosync.c b/daemons/attrd/attrd_corosync.c index fdfb108cd97..960c736fdde 100644 --- a/daemons/attrd/attrd_corosync.c +++ b/daemons/attrd/attrd_corosync.c @@ -64,7 +64,7 @@ attrd_peer_message(pcmk__node_status_t *peer, xmlNode *xml) .result = PCMK__UNKNOWN_RESULT, }; - request.op = crm_element_value_copy(request.xml, PCMK_XA_TASK); + request.op = pcmk__xe_get_copy(request.xml, PCMK_XA_TASK); CRM_CHECK(request.op != NULL, return); attrd_handle_request(&request); diff --git a/daemons/attrd/attrd_ipc.c b/daemons/attrd/attrd_ipc.c index bb03c6659d7..f88abf90c44 100644 --- a/daemons/attrd/attrd_ipc.c +++ b/daemons/attrd/attrd_ipc.c @@ -586,7 +586,7 @@ attrd_ipc_dispatch(qb_ipcs_connection_t * c, void *data, size_t size) pcmk__assert(client->user != NULL); pcmk__update_acl_user(xml, PCMK__XA_ATTR_USER, client->user); - request.op = crm_element_value_copy(request.xml, PCMK_XA_TASK); + request.op = pcmk__xe_get_copy(request.xml, PCMK_XA_TASK); CRM_CHECK(request.op != NULL, return 0); attrd_handle_request(&request); diff --git a/daemons/based/based_remote.c b/daemons/based/based_remote.c index 386acbf6717..0747fd7b9aa 100644 --- a/daemons/based/based_remote.c +++ b/daemons/based/based_remote.c @@ -480,7 +480,7 @@ cib_remote_msg(gpointer data) pcmk__set_client_flags(client, pcmk__client_authenticated); g_source_remove(client->remote->auth_timeout); client->remote->auth_timeout = 0; - client->name = crm_element_value_copy(command, PCMK_XA_NAME); + client->name = pcmk__xe_get_copy(command, PCMK_XA_NAME); user = pcmk__xe_get(command, PCMK_XA_USER); if (user) { diff --git a/daemons/controld/controld_execd.c b/daemons/controld/controld_execd.c index 99875b0a47f..988a2afa89a 100644 --- a/daemons/controld/controld_execd.c +++ b/daemons/controld/controld_execd.c @@ -982,7 +982,7 @@ delete_resource(lrm_state_t *lrm_state, const char *id, lrmd_rsc_info_t *rsc, crm_info("Deletion of resource '%s' from executor is pending", id); if (request) { struct pending_deletion_op_s *op = NULL; - char *ref = crm_element_value_copy(request->msg, PCMK_XA_REFERENCE); + char *ref = pcmk__xe_get_copy(request->msg, PCMK_XA_REFERENCE); op = pcmk__assert_alloc(1, sizeof(struct pending_deletion_op_s)); op->rsc = pcmk__str_copy(rsc->id); diff --git a/daemons/controld/controld_join_dc.c b/daemons/controld/controld_join_dc.c index cfeb78a8604..c1426321161 100644 --- a/daemons/controld/controld_join_dc.c +++ b/daemons/controld/controld_join_dc.c @@ -767,7 +767,7 @@ do_dc_join_ack(long long action, ha_msg_input_t *join_ack = fsa_typed_data(fsa_dt_ha_msg); const char *op = pcmk__xe_get(join_ack->msg, PCMK__XA_CRM_TASK); - char *join_from = crm_element_value_copy(join_ack->msg, PCMK__XA_SRC); + char *join_from = pcmk__xe_get_copy(join_ack->msg, PCMK__XA_SRC); pcmk__node_status_t *peer = NULL; enum controld_join_phase phase = controld_join_none; diff --git a/daemons/execd/execd_commands.c b/daemons/execd/execd_commands.c index 93bbcb4d6b6..b96ce55ba89 100644 --- a/daemons/execd/execd_commands.c +++ b/daemons/execd/execd_commands.c @@ -289,10 +289,10 @@ build_rsc_from_xml(xmlNode * msg) pcmk__xe_get_int(msg, PCMK__XA_LRMD_CALLOPT, &rsc->call_opts); - rsc->rsc_id = crm_element_value_copy(rsc_xml, PCMK__XA_LRMD_RSC_ID); - rsc->class = crm_element_value_copy(rsc_xml, PCMK__XA_LRMD_CLASS); - rsc->provider = crm_element_value_copy(rsc_xml, PCMK__XA_LRMD_PROVIDER); - rsc->type = crm_element_value_copy(rsc_xml, PCMK__XA_LRMD_TYPE); + rsc->rsc_id = pcmk__xe_get_copy(rsc_xml, PCMK__XA_LRMD_RSC_ID); + rsc->class = pcmk__xe_get_copy(rsc_xml, PCMK__XA_LRMD_CLASS); + rsc->provider = pcmk__xe_get_copy(rsc_xml, PCMK__XA_LRMD_PROVIDER); + rsc->type = pcmk__xe_get_copy(rsc_xml, PCMK__XA_LRMD_TYPE); rsc->work = mainloop_add_trigger(G_PRIORITY_HIGH, execute_resource_action, rsc); @@ -322,11 +322,11 @@ create_lrmd_cmd(xmlNode *msg, pcmk__client_t *client) pcmk__xe_get_int(rsc_xml, PCMK__XA_LRMD_RSC_START_DELAY, &cmd->start_delay); cmd->timeout_orig = cmd->timeout; - cmd->origin = crm_element_value_copy(rsc_xml, PCMK__XA_LRMD_ORIGIN); - cmd->action = crm_element_value_copy(rsc_xml, PCMK__XA_LRMD_RSC_ACTION); - cmd->userdata_str = crm_element_value_copy(rsc_xml, - PCMK__XA_LRMD_RSC_USERDATA_STR); - cmd->rsc_id = crm_element_value_copy(rsc_xml, PCMK__XA_LRMD_RSC_ID); + cmd->origin = pcmk__xe_get_copy(rsc_xml, PCMK__XA_LRMD_ORIGIN); + cmd->action = pcmk__xe_get_copy(rsc_xml, PCMK__XA_LRMD_RSC_ACTION); + cmd->userdata_str = pcmk__xe_get_copy(rsc_xml, + PCMK__XA_LRMD_RSC_USERDATA_STR); + cmd->rsc_id = pcmk__xe_get_copy(rsc_xml, PCMK__XA_LRMD_RSC_ID); cmd->params = xml2list(rsc_xml); diff --git a/daemons/execd/remoted_tls.c b/daemons/execd/remoted_tls.c index 625392887e1..c7c04d283b4 100644 --- a/daemons/execd/remoted_tls.c +++ b/daemons/execd/remoted_tls.c @@ -132,8 +132,7 @@ lrmd_remote_client_msg(gpointer data) pcmk__xe_get_int(request, PCMK__XA_LRMD_REMOTE_MSG_ID, &id); crm_trace("Processing remote client request %d", id); if (!client->name) { - client->name = crm_element_value_copy(request, - PCMK__XA_LRMD_CLIENTNAME); + client->name = pcmk__xe_get_copy(request, PCMK__XA_LRMD_CLIENTNAME); } lrmd_call_id++; diff --git a/daemons/fenced/fenced_commands.c b/daemons/fenced/fenced_commands.c index 12b205e302b..f2f519e8682 100644 --- a/daemons/fenced/fenced_commands.c +++ b/daemons/fenced/fenced_commands.c @@ -359,9 +359,9 @@ create_async_command(xmlNode *msg) cmd = pcmk__assert_alloc(1, sizeof(async_command_t)); // All messages must include these - cmd->action = crm_element_value_copy(op, PCMK__XA_ST_DEVICE_ACTION); - cmd->op = crm_element_value_copy(msg, PCMK__XA_ST_OP); - cmd->client = crm_element_value_copy(msg, PCMK__XA_ST_CLIENTID); + cmd->action = pcmk__xe_get_copy(op, PCMK__XA_ST_DEVICE_ACTION); + cmd->op = pcmk__xe_get_copy(msg, PCMK__XA_ST_OP); + cmd->client = pcmk__xe_get_copy(msg, PCMK__XA_ST_CLIENTID); if ((cmd->action == NULL) || (cmd->op == NULL) || (cmd->client == NULL)) { free_async_command(cmd); return NULL; @@ -378,11 +378,11 @@ create_async_command(xmlNode *msg) crm_warn("Couldn't parse options from request: %s", pcmk_rc_str(rc)); } - cmd->origin = crm_element_value_copy(msg, PCMK__XA_SRC); - cmd->remote_op_id = crm_element_value_copy(msg, PCMK__XA_ST_REMOTE_OP); - cmd->client_name = crm_element_value_copy(msg, PCMK__XA_ST_CLIENTNAME); - cmd->target = crm_element_value_copy(op, PCMK__XA_ST_TARGET); - cmd->device = crm_element_value_copy(op, PCMK__XA_ST_DEVICE_ID); + cmd->origin = pcmk__xe_get_copy(msg, PCMK__XA_SRC); + cmd->remote_op_id = pcmk__xe_get_copy(msg, PCMK__XA_ST_REMOTE_OP); + cmd->client_name = pcmk__xe_get_copy(msg, PCMK__XA_ST_CLIENTNAME); + cmd->target = pcmk__xe_get_copy(op, PCMK__XA_ST_TARGET); + cmd->device = pcmk__xe_get_copy(op, PCMK__XA_ST_DEVICE_ID); cmd->done_cb = st_child_done; @@ -1021,15 +1021,15 @@ build_device_from_xml(xmlNode *dev) { const char *value; stonith_device_t *device = NULL; - char *agent = crm_element_value_copy(dev, PCMK_XA_AGENT); + char *agent = pcmk__xe_get_copy(dev, PCMK_XA_AGENT); CRM_CHECK(agent != NULL, return device); device = pcmk__assert_alloc(1, sizeof(stonith_device_t)); - device->id = crm_element_value_copy(dev, PCMK_XA_ID); + device->id = pcmk__xe_get_copy(dev, PCMK_XA_ID); device->agent = agent; - device->namespace = crm_element_value_copy(dev, PCMK__XA_NAMESPACE); + device->namespace = pcmk__xe_get_copy(dev, PCMK__XA_NAMESPACE); device->params = xml2list(dev); value = g_hash_table_lookup(device->params, PCMK_STONITH_HOST_LIST); @@ -1530,10 +1530,10 @@ stonith_level_key(const xmlNode *level, enum fenced_target_by mode) } switch (mode) { case fenced_target_by_name: - return crm_element_value_copy(level, PCMK_XA_TARGET); + return pcmk__xe_get_copy(level, PCMK_XA_TARGET); case fenced_target_by_pattern: - return crm_element_value_copy(level, PCMK_XA_TARGET_PATTERN); + return pcmk__xe_get_copy(level, PCMK_XA_TARGET_PATTERN); case fenced_target_by_attribute: return crm_strdup_printf("%s=%s", @@ -1732,11 +1732,9 @@ fenced_register_level(xmlNode *msg, char **desc, pcmk__action_result_t *result) tp->kind = mode; tp->target = target; - tp->target_value = crm_element_value_copy(level, PCMK_XA_TARGET_VALUE); - tp->target_pattern = crm_element_value_copy(level, - PCMK_XA_TARGET_PATTERN); - tp->target_attribute = crm_element_value_copy(level, - PCMK_XA_TARGET_ATTRIBUTE); + tp->target_value = pcmk__xe_get_copy(level, PCMK_XA_TARGET_VALUE); + tp->target_pattern = pcmk__xe_get_copy(level, PCMK_XA_TARGET_PATTERN); + tp->target_attribute = pcmk__xe_get_copy(level, PCMK_XA_TARGET_ATTRIBUTE); g_hash_table_replace(topology, tp->target, tp); crm_trace("Added %s (%d) to the topology (%d active entries)", @@ -3576,7 +3574,7 @@ static void handle_reply(pcmk__client_t *client, xmlNode *request, const char *remote_peer) { // Copy, because request might be freed before we want to log this - char *op = crm_element_value_copy(request, PCMK__XA_ST_OP); + char *op = pcmk__xe_get_copy(request, PCMK__XA_ST_OP); if (pcmk__str_eq(op, STONITH_OP_QUERY, pcmk__str_none)) { process_remote_stonith_query(request); @@ -3654,7 +3652,7 @@ stonith_command(pcmk__client_t *client, uint32_t id, uint32_t flags, .result = PCMK__UNKNOWN_RESULT, }; - request.op = crm_element_value_copy(request.xml, PCMK__XA_ST_OP); + request.op = pcmk__xe_get_copy(request.xml, PCMK__XA_ST_OP); CRM_CHECK(request.op != NULL, return); if (pcmk_is_set(request.call_options, st_opt_sync_call)) { diff --git a/daemons/fenced/fenced_history.c b/daemons/fenced/fenced_history.c index 70791c9d57e..9653e193c5c 100644 --- a/daemons/fenced/fenced_history.c +++ b/daemons/fenced/fenced_history.c @@ -247,7 +247,7 @@ stonith_xml_history_to_list(const xmlNode *history) xml_op != NULL; xml_op = pcmk__xe_next(xml_op, NULL)) { remote_fencing_op_t *op = NULL; - char *id = crm_element_value_copy(xml_op, PCMK__XA_ST_REMOTE_OP); + char *id = pcmk__xe_get_copy(xml_op, PCMK__XA_ST_REMOTE_OP); int state; int exit_status = CRM_EX_OK; int execution_status = PCMK_EXEC_DONE; @@ -262,12 +262,11 @@ stonith_xml_history_to_list(const xmlNode *history) op = pcmk__assert_alloc(1, sizeof(remote_fencing_op_t)); op->id = id; - op->target = crm_element_value_copy(xml_op, PCMK__XA_ST_TARGET); - op->action = crm_element_value_copy(xml_op, PCMK__XA_ST_DEVICE_ACTION); - op->originator = crm_element_value_copy(xml_op, PCMK__XA_ST_ORIGIN); - op->delegate = crm_element_value_copy(xml_op, PCMK__XA_ST_DELEGATE); - op->client_name = crm_element_value_copy(xml_op, - PCMK__XA_ST_CLIENTNAME); + op->target = pcmk__xe_get_copy(xml_op, PCMK__XA_ST_TARGET); + op->action = pcmk__xe_get_copy(xml_op, PCMK__XA_ST_DEVICE_ACTION); + op->originator = pcmk__xe_get_copy(xml_op, PCMK__XA_ST_ORIGIN); + op->delegate = pcmk__xe_get_copy(xml_op, PCMK__XA_ST_DELEGATE); + op->client_name = pcmk__xe_get_copy(xml_op, PCMK__XA_ST_CLIENTNAME); pcmk__xe_get_time(xml_op, PCMK__XA_ST_DATE, &op->completed); pcmk__xe_get_ll(xml_op, PCMK__XA_ST_DATE_NSEC, &op->completed_nsec); pcmk__xe_get_int(xml_op, PCMK__XA_ST_STATE, &state); @@ -287,8 +286,7 @@ stonith_xml_history_to_list(const xmlNode *history) pcmk__set_result(&op->result, exit_status, execution_status, pcmk__xe_get(xml_op, PCMK_XA_EXIT_REASON)); pcmk__set_result_output(&op->result, - crm_element_value_copy(xml_op, - PCMK__XA_ST_OUTPUT), + pcmk__xe_get_copy(xml_op, PCMK__XA_ST_OUTPUT), NULL); diff --git a/daemons/fenced/fenced_remote.c b/daemons/fenced/fenced_remote.c index eaab144afa0..336e5e79681 100644 --- a/daemons/fenced/fenced_remote.c +++ b/daemons/fenced/fenced_remote.c @@ -518,9 +518,9 @@ delegate_from_xml(xmlNode *xml) LOG_NEVER); if (match == NULL) { - return crm_element_value_copy(xml, PCMK__XA_SRC); + return pcmk__xe_get_copy(xml, PCMK__XA_SRC); } else { - return crm_element_value_copy(match, PCMK__XA_ST_DELEGATE); + return pcmk__xe_get_copy(match, PCMK__XA_ST_DELEGATE); } } @@ -1185,7 +1185,7 @@ create_remote_stonith_op(const char *client, xmlNode *request, gboolean peer) pcmk__xe_get_int(request, PCMK__XA_ST_DELAY, &(op->client_delay)); if (peer && dev) { - op->id = crm_element_value_copy(dev, PCMK__XA_ST_REMOTE_OP); + op->id = pcmk__xe_get_copy(dev, PCMK__XA_ST_REMOTE_OP); } else { op->id = crm_generate_uuid(); } @@ -1194,7 +1194,7 @@ create_remote_stonith_op(const char *client, xmlNode *request, gboolean peer) op->state = st_query; op->replies_expected = fencing_active_peers(); - op->action = crm_element_value_copy(dev, PCMK__XA_ST_DEVICE_ACTION); + op->action = pcmk__xe_get_copy(dev, PCMK__XA_ST_DEVICE_ACTION); /* The node initiating the stonith operation. If an operation is relayed, * this is the last node the operation lands on. When in standalone mode, @@ -1202,14 +1202,14 @@ create_remote_stonith_op(const char *client, xmlNode *request, gboolean peer) * * Or may be the name of the function that created the operation. */ - op->originator = crm_element_value_copy(dev, PCMK__XA_ST_ORIGIN); + op->originator = pcmk__xe_get_copy(dev, PCMK__XA_ST_ORIGIN); if (op->originator == NULL) { /* Local or relayed request */ op->originator = pcmk__str_copy(fenced_get_local_node()); } // Delegate may not be set - op->delegate = crm_element_value_copy(dev, PCMK__XA_ST_DELEGATE); + op->delegate = pcmk__xe_get_copy(dev, PCMK__XA_ST_DELEGATE); op->created = time(NULL); CRM_LOG_ASSERT(client != NULL); @@ -1222,11 +1222,10 @@ create_remote_stonith_op(const char *client, xmlNode *request, gboolean peer) op->client_name = crm_strdup_printf("%s.%lu", crm_system_name, (unsigned long) getpid()); } else { - op->client_name = crm_element_value_copy(request, - PCMK__XA_ST_CLIENTNAME); + op->client_name = pcmk__xe_get_copy(request, PCMK__XA_ST_CLIENTNAME); } - op->target = crm_element_value_copy(dev, PCMK__XA_ST_TARGET); + op->target = pcmk__xe_get_copy(dev, PCMK__XA_ST_TARGET); // @TODO Figure out how to avoid copying XML here op->request = pcmk__xml_copy(NULL, request); diff --git a/daemons/pacemakerd/pcmkd_messages.c b/daemons/pacemakerd/pcmkd_messages.c index fbf15e4fc64..c9d9169ab67 100644 --- a/daemons/pacemakerd/pcmkd_messages.c +++ b/daemons/pacemakerd/pcmkd_messages.c @@ -238,7 +238,7 @@ pcmk_ipc_dispatch(qb_ipcs_connection_t * qbc, void *data, size_t size) .result = PCMK__UNKNOWN_RESULT, }; - request.op = crm_element_value_copy(request.xml, PCMK__XA_CRM_TASK); + request.op = pcmk__xe_get_copy(request.xml, PCMK__XA_CRM_TASK); CRM_CHECK(request.op != NULL, return 0); reply = pcmk__process_request(&request, pcmkd_handlers); diff --git a/daemons/schedulerd/schedulerd_messages.c b/daemons/schedulerd/schedulerd_messages.c index 366c2996948..24f44a16cd3 100644 --- a/daemons/schedulerd/schedulerd_messages.c +++ b/daemons/schedulerd/schedulerd_messages.c @@ -270,7 +270,7 @@ pe_ipc_dispatch(qb_ipcs_connection_t * qbc, void *data, size_t size) .result = PCMK__UNKNOWN_RESULT, }; - request.op = crm_element_value_copy(request.xml, PCMK__XA_CRM_TASK); + request.op = pcmk__xe_get_copy(request.xml, PCMK__XA_CRM_TASK); CRM_CHECK(request.op != NULL, return 0); reply = pcmk__process_request(&request, schedulerd_handlers); diff --git a/include/crm/common/xml_element_internal.h b/include/crm/common/xml_element_internal.h index 28dfe457a6c..d5a31b1a106 100644 --- a/include/crm/common/xml_element_internal.h +++ b/include/crm/common/xml_element_internal.h @@ -24,6 +24,7 @@ #include // xmlNode, etc. #include // crm_time_t +#include // pcmk__str_copy() #include // PCMK_XA_ID #ifdef __cplusplus @@ -155,6 +156,25 @@ void pcmk__xe_set_bool_attr(xmlNodePtr node, const char *name, bool value); int pcmk__xe_get_bool_attr(const xmlNode *node, const char *name, bool *value); bool pcmk__xe_attr_is_true(const xmlNode *node, const char *name); +/*! + * \internal + * \brief Retrieve a copy of the value of an XML attribute + * + * This is like \c pcmk__xe_get() but allocates new memory for the result. + * + * \param[in] xml XML element whose attribute to get + * \param[in] attr Attribute name + * + * \return Value of specified attribute (or \c NULL if not set) + * + * \note The caller is responsible for freeing the result using \c free(). + */ +static inline char * +pcmk__xe_get_copy(const xmlNode *xml, const char *attr) +{ + return pcmk__str_copy(pcmk__xe_get(xml, attr)); +} + /*! * \internal * \brief Retrieve the value of the \c PCMK_XA_ID XML attribute diff --git a/lib/cib/cib_attrs.c b/lib/cib/cib_attrs.c index 992cf2ea83a..2839317b8ce 100644 --- a/lib/cib/cib_attrs.c +++ b/lib/cib/cib_attrs.c @@ -187,7 +187,7 @@ cib__update_node_attr(pcmk__output_t *out, cib_t *cib, int call_options, const c pcmk__xml_free(xml_search); return ENOTUNIQ; } else { - local_attr_id = crm_element_value_copy(xml_search, PCMK_XA_ID); + local_attr_id = pcmk__xe_get_copy(xml_search, PCMK_XA_ID); attr_id = local_attr_id; pcmk__xml_free(xml_search); goto do_modify; @@ -389,7 +389,7 @@ cib__delete_node_attr(pcmk__output_t *out, cib_t *cib, int options, const char * pcmk__xml_free(xml_search); return rc; } else { - local_attr_id = crm_element_value_copy(xml_search, PCMK_XA_ID); + local_attr_id = pcmk__xe_get_copy(xml_search, PCMK_XA_ID); attr_id = local_attr_id; pcmk__xml_free(xml_search); } diff --git a/lib/cib/cib_native.c b/lib/cib/cib_native.c index 2c5708d0ac8..3df5e726491 100644 --- a/lib/cib/cib_native.c +++ b/lib/cib/cib_native.c @@ -327,8 +327,7 @@ cib_native_signon(cib_t *cib, const char *name, enum cib_conn_type type) rc = -EPROTO; } else { - native->token = crm_element_value_copy(reply, - PCMK__XA_CIB_CLIENTID); + native->token = pcmk__xe_get_copy(reply, PCMK__XA_CIB_CLIENTID); if (native->token == NULL) { rc = -EPROTO; } diff --git a/lib/cib/cib_ops.c b/lib/cib/cib_ops.c index 7b42eaf1c09..705c3e09805 100644 --- a/lib/cib/cib_ops.c +++ b/lib/cib/cib_ops.c @@ -219,7 +219,7 @@ update_counter(xmlNode *xml_obj, const char *field, bool reset) int int_value = -1; if (!reset && pcmk__xe_get(xml_obj, field) != NULL) { - old_value = crm_element_value_copy(xml_obj, field); + old_value = pcmk__xe_get_copy(xml_obj, field); } if (old_value != NULL) { int_value = atoi(old_value); diff --git a/lib/common/alerts.c b/lib/common/alerts.c index 5d6ea20dc09..78c7ce0c55f 100644 --- a/lib/common/alerts.c +++ b/lib/common/alerts.c @@ -395,8 +395,8 @@ pcmk__unpack_alerts(const xmlNode *alerts) pcmk__alert_t *recipient_entry = pcmk__dup_alert(entry); recipients++; - recipient_entry->recipient = crm_element_value_copy(recipient, - PCMK_XA_VALUE); + recipient_entry->recipient = pcmk__xe_get_copy(recipient, + PCMK_XA_VALUE); if (unpack_alert(recipient, recipient_entry, &max_timeout) != pcmk_rc_ok) { diff --git a/lib/common/digest.c b/lib/common/digest.c index 0c5cc8b4a00..ddefc8ac775 100644 --- a/lib/common/digest.c +++ b/lib/common/digest.c @@ -324,7 +324,7 @@ pcmk__filter_op_for_digest(xmlNode *param_set) key = NULL; if (interval_ms != 0) { key = crm_meta_name(PCMK_META_TIMEOUT); - timeout = crm_element_value_copy(param_set, key); + timeout = pcmk__xe_get_copy(param_set, key); } // Remove all CRM_meta_* attributes and certain other attributes diff --git a/lib/common/schemas.c b/lib/common/schemas.c index 0cb33fdae26..4fd933683a2 100644 --- a/lib/common/schemas.c +++ b/lib/common/schemas.c @@ -1412,7 +1412,7 @@ static void append_href(xmlNode *xml, void *user_data) { GList **list = user_data; - char *href = crm_element_value_copy(xml, "href"); + char *href = pcmk__xe_get_copy(xml, "href"); if (href == NULL) { return; diff --git a/lib/common/xml.c b/lib/common/xml.c index 57f71a16a93..6c0ba494796 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -1138,7 +1138,7 @@ mark_attr_changed(xmlNode *new_xml, const char *element, const char *attr_name, const char *old_value) { xml_doc_private_t *docpriv = new_xml->doc->_private; - char *vcopy = crm_element_value_copy(new_xml, attr_name); + char *vcopy = pcmk__xe_get_copy(new_xml, attr_name); crm_trace("XML attribute %s was changed from '%s' to '%s' in %s", attr_name, old_value, vcopy, element); diff --git a/lib/fencing/st_actions.c b/lib/fencing/st_actions.c index 378f94e4a92..b60926fe03b 100644 --- a/lib/fencing/st_actions.c +++ b/lib/fencing/st_actions.c @@ -502,7 +502,7 @@ stonith__xe_get_result(const xmlNode *xml, pcmk__action_result_t *result) CRM_CHECK((xml != NULL) && (result != NULL), return); exit_reason = pcmk__xe_get(xml, PCMK_XA_EXIT_REASON); - action_stdout = crm_element_value_copy(xml, PCMK__XA_ST_OUTPUT); + action_stdout = pcmk__xe_get_copy(xml, PCMK__XA_ST_OUTPUT); // A result must include an exit status and execution status if ((pcmk__xe_get_int(xml, PCMK__XA_RC_CODE, &exit_status) != pcmk_rc_ok) diff --git a/lib/fencing/st_client.c b/lib/fencing/st_client.c index 1700bb93f47..eec165b8ad0 100644 --- a/lib/fencing/st_client.c +++ b/lib/fencing/st_client.c @@ -735,11 +735,11 @@ stonith_api_history(stonith_t * stonith, int call_options, const char *node, pcmk__assert_alloc(1, sizeof(stonith_history_t)); long long completed_nsec = 0LL; - kvp->target = crm_element_value_copy(op, PCMK__XA_ST_TARGET); - kvp->action = crm_element_value_copy(op, PCMK__XA_ST_DEVICE_ACTION); - kvp->origin = crm_element_value_copy(op, PCMK__XA_ST_ORIGIN); - kvp->delegate = crm_element_value_copy(op, PCMK__XA_ST_DELEGATE); - kvp->client = crm_element_value_copy(op, PCMK__XA_ST_CLIENTNAME); + kvp->target = pcmk__xe_get_copy(op, PCMK__XA_ST_TARGET); + kvp->action = pcmk__xe_get_copy(op, PCMK__XA_ST_DEVICE_ACTION); + kvp->origin = pcmk__xe_get_copy(op, PCMK__XA_ST_ORIGIN); + kvp->delegate = pcmk__xe_get_copy(op, PCMK__XA_ST_DELEGATE); + kvp->client = pcmk__xe_get_copy(op, PCMK__XA_ST_CLIENTNAME); pcmk__xe_get_time(op, PCMK__XA_ST_DATE, &kvp->completed); pcmk__xe_get_ll(op, PCMK__XA_ST_DATE_NSEC, &completed_nsec); @@ -748,7 +748,7 @@ stonith_api_history(stonith_t * stonith, int call_options, const char *node, } pcmk__xe_get_int(op, PCMK__XA_ST_STATE, &kvp->state); - kvp->exit_reason = crm_element_value_copy(op, PCMK_XA_EXIT_REASON); + kvp->exit_reason = pcmk__xe_get_copy(op, PCMK_XA_EXIT_REASON); if (last) { last->next = kvp; @@ -1165,7 +1165,7 @@ stonith_api_signon(stonith_t * stonith, const char *name, int *stonith_fd) } else { const char *msg_type = pcmk__xe_get(reply, PCMK__XA_ST_OP); - native->token = crm_element_value_copy(reply, PCMK__XA_ST_CLIENTID); + native->token = pcmk__xe_get_copy(reply, PCMK__XA_ST_CLIENTID); if (!pcmk__str_eq(msg_type, CRM_OP_REGISTER, pcmk__str_none)) { crm_debug("Couldn't register with the fencer: invalid reply type '%s'", (msg_type? msg_type : "(missing)")); @@ -1430,7 +1430,7 @@ xml_to_event(xmlNode *msg) // All notification types have the operation result and notification subtype stonith__xe_get_result(msg, &event_private->result); - event->operation = crm_element_value_copy(msg, PCMK__XA_ST_OP); + event->operation = pcmk__xe_get_copy(msg, PCMK__XA_ST_OP); // @COMPAT The API originally provided the result as a legacy return code event->result = pcmk_rc2legacy(stonith__result2rc(&event_private->result)); @@ -1445,16 +1445,14 @@ xml_to_event(xmlNode *msg) crm_err("No data for %s event", event->operation); crm_log_xml_notice(msg, "BadEvent"); } else { - event->origin = crm_element_value_copy(data, PCMK__XA_ST_ORIGIN); - event->action = crm_element_value_copy(data, - PCMK__XA_ST_DEVICE_ACTION); - event->target = crm_element_value_copy(data, PCMK__XA_ST_TARGET); - event->executioner = crm_element_value_copy(data, - PCMK__XA_ST_DELEGATE); - event->id = crm_element_value_copy(data, PCMK__XA_ST_REMOTE_OP); - event->client_origin = - crm_element_value_copy(data, PCMK__XA_ST_CLIENTNAME); - event->device = crm_element_value_copy(data, PCMK__XA_ST_DEVICE_ID); + event->origin = pcmk__xe_get_copy(data, PCMK__XA_ST_ORIGIN); + event->action = pcmk__xe_get_copy(data, PCMK__XA_ST_DEVICE_ACTION); + event->target = pcmk__xe_get_copy(data, PCMK__XA_ST_TARGET); + event->executioner = pcmk__xe_get_copy(data, PCMK__XA_ST_DELEGATE); + event->id = pcmk__xe_get_copy(data, PCMK__XA_ST_REMOTE_OP); + event->client_origin = pcmk__xe_get_copy(data, + PCMK__XA_ST_CLIENTNAME); + event->device = pcmk__xe_get_copy(data, PCMK__XA_ST_DEVICE_ID); } } else if (pcmk__str_any_of(event->operation, @@ -1467,7 +1465,7 @@ xml_to_event(xmlNode *msg) crm_err("No data for %s event", event->operation); crm_log_xml_notice(msg, "BadEvent"); } else { - event->device = crm_element_value_copy(data, PCMK__XA_ST_DEVICE_ID); + event->device = pcmk__xe_get_copy(data, PCMK__XA_ST_DEVICE_ID); } } diff --git a/lib/lrmd/lrmd_client.c b/lib/lrmd/lrmd_client.c index 2adec7f17a8..71b9fb0e020 100644 --- a/lib/lrmd/lrmd_client.c +++ b/lib/lrmd/lrmd_client.c @@ -322,7 +322,7 @@ lrmd_dispatch_internal(gpointer data, gpointer user_data) event.type = lrmd_event_exec_complete; /* output and exit_reason may be freed by a callback */ - event.output = crm_element_value_copy(msg, PCMK__XA_LRMD_RSC_OUTPUT); + event.output = pcmk__xe_get_copy(msg, PCMK__XA_LRMD_RSC_OUTPUT); lrmd__set_result(&event, event.rc, event.op_status, pcmk__xe_get(msg, PCMK__XA_LRMD_RSC_EXIT_REASON)); @@ -1993,12 +1993,12 @@ lrmd_api_get_recurring_ops(lrmd_t *lrmd, const char *rsc_id, int timeout_ms, break; } op_info->rsc_id = strdup(rsc_id); - op_info->action = crm_element_value_copy(op_xml, - PCMK__XA_LRMD_RSC_ACTION); + op_info->action = pcmk__xe_get_copy(op_xml, + PCMK__XA_LRMD_RSC_ACTION); op_info->interval_ms_s = - crm_element_value_copy(op_xml, PCMK__XA_LRMD_RSC_INTERVAL); - op_info->timeout_ms_s = - crm_element_value_copy(op_xml, PCMK__XA_LRMD_TIMEOUT); + pcmk__xe_get_copy(op_xml, PCMK__XA_LRMD_RSC_INTERVAL); + op_info->timeout_ms_s = pcmk__xe_get_copy(op_xml, + PCMK__XA_LRMD_TIMEOUT); *output = g_list_prepend(*output, op_info); } } diff --git a/lib/pacemaker/pcmk_graph_consumer.c b/lib/pacemaker/pcmk_graph_consumer.c index b8de60985ee..d69dd2ba954 100644 --- a/lib/pacemaker/pcmk_graph_consumer.c +++ b/lib/pacemaker/pcmk_graph_consumer.c @@ -769,9 +769,9 @@ pcmk__unpack_graph(const xmlNode *xml_graph, const char *reference) pcmk__scan_min_int(buf, &(new_graph->migration_limit), -1); new_graph->failed_stop_offset = - crm_element_value_copy(xml_graph, PCMK__XA_FAILED_STOP_OFFSET); + pcmk__xe_get_copy(xml_graph, PCMK__XA_FAILED_STOP_OFFSET); new_graph->failed_start_offset = - crm_element_value_copy(xml_graph, PCMK__XA_FAILED_START_OFFSET); + pcmk__xe_get_copy(xml_graph, PCMK__XA_FAILED_START_OFFSET); pcmk__xe_get_time(xml_graph, "recheck-by", &(new_graph->recheck_by)); } diff --git a/lib/pacemaker/pcmk_simulate.c b/lib/pacemaker/pcmk_simulate.c index 1784c15c680..9f9b3863df3 100644 --- a/lib/pacemaker/pcmk_simulate.c +++ b/lib/pacemaker/pcmk_simulate.c @@ -575,7 +575,7 @@ simulate_resource_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) xmlNode *action_rsc = pcmk__xe_first_child(action->xml, PCMK_XE_PRIMITIVE, NULL, NULL); - char *node = crm_element_value_copy(action->xml, PCMK__META_ON_NODE); + char *node = pcmk__xe_get_copy(action->xml, PCMK__META_ON_NODE); char *uuid = NULL; const char *router_node = pcmk__xe_get(action->xml, PCMK__XA_ROUTER_NODE); @@ -630,7 +630,7 @@ simulate_resource_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) cib_sync_call) == pcmk_ok); // Ensure the action node is in the CIB - uuid = crm_element_value_copy(action->xml, PCMK__META_ON_NODE_UUID); + uuid = pcmk__xe_get_copy(action->xml, PCMK__META_ON_NODE_UUID); cib_node = pcmk__inject_node(fake_cib, node, ((router_node == NULL)? uuid: node)); free(uuid); @@ -763,7 +763,7 @@ static int simulate_fencing_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) { const char *op = crm_meta_value(action->params, PCMK__META_STONITH_ACTION); - char *target = crm_element_value_copy(action->xml, PCMK__META_ON_NODE); + char *target = pcmk__xe_get_copy(action->xml, PCMK__META_ON_NODE); out->message(out, "inject-fencing-action", target, op); diff --git a/lib/pengine/bundle.c b/lib/pengine/bundle.c index 4daa8211267..2fa6d52596f 100644 --- a/lib/pengine/bundle.c +++ b/lib/pengine/bundle.c @@ -1013,25 +1013,24 @@ pe__unpack_bundle(pcmk_resource_t *rsc) pcmk__clear_rsc_flags(rsc, pcmk__rsc_unique); } - bundle_data->container_command = - crm_element_value_copy(xml_obj, PCMK_XA_RUN_COMMAND); - bundle_data->launcher_options = crm_element_value_copy(xml_obj, - PCMK_XA_OPTIONS); - bundle_data->image = crm_element_value_copy(xml_obj, PCMK_XA_IMAGE); - bundle_data->container_network = crm_element_value_copy(xml_obj, - PCMK_XA_NETWORK); + bundle_data->container_command = pcmk__xe_get_copy(xml_obj, + PCMK_XA_RUN_COMMAND); + bundle_data->launcher_options = pcmk__xe_get_copy(xml_obj, PCMK_XA_OPTIONS); + bundle_data->image = pcmk__xe_get_copy(xml_obj, PCMK_XA_IMAGE); + bundle_data->container_network = pcmk__xe_get_copy(xml_obj, + PCMK_XA_NETWORK); xml_obj = pcmk__xe_first_child(rsc->priv->xml, PCMK_XE_NETWORK, NULL, NULL); if(xml_obj) { - bundle_data->ip_range_start = - crm_element_value_copy(xml_obj, PCMK_XA_IP_RANGE_START); - bundle_data->host_netmask = - crm_element_value_copy(xml_obj, PCMK_XA_HOST_NETMASK); - bundle_data->host_network = - crm_element_value_copy(xml_obj, PCMK_XA_HOST_INTERFACE); - bundle_data->control_port = - crm_element_value_copy(xml_obj, PCMK_XA_CONTROL_PORT); + bundle_data->ip_range_start = pcmk__xe_get_copy(xml_obj, + PCMK_XA_IP_RANGE_START); + bundle_data->host_netmask = pcmk__xe_get_copy(xml_obj, + PCMK_XA_HOST_NETMASK); + bundle_data->host_network = pcmk__xe_get_copy(xml_obj, + PCMK_XA_HOST_INTERFACE); + bundle_data->control_port = pcmk__xe_get_copy(xml_obj, + PCMK_XA_CONTROL_PORT); value = pcmk__xe_get(xml_obj, PCMK_XA_ADD_HOST); if (crm_str_to_boolean(value, &bundle_data->add_host) != 1) { bundle_data->add_host = TRUE; @@ -1045,13 +1044,13 @@ pe__unpack_bundle(pcmk_resource_t *rsc) pe__bundle_port_t *port = pcmk__assert_alloc(1, sizeof(pe__bundle_port_t)); - port->source = crm_element_value_copy(xml_child, PCMK_XA_PORT); + port->source = pcmk__xe_get_copy(xml_child, PCMK_XA_PORT); if(port->source == NULL) { - port->source = crm_element_value_copy(xml_child, PCMK_XA_RANGE); + port->source = pcmk__xe_get_copy(xml_child, PCMK_XA_RANGE); } else { - port->target = crm_element_value_copy(xml_child, - PCMK_XA_INTERNAL_PORT); + port->target = pcmk__xe_get_copy(xml_child, + PCMK_XA_INTERNAL_PORT); } if(port->source != NULL && strlen(port->source) > 0) { diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c index 5506a95a9ad..8634399c773 100644 --- a/tools/crm_resource_runtime.c +++ b/tools/crm_resource_runtime.c @@ -341,7 +341,7 @@ resources_with_attr(pcmk__output_t *out, cib_t *cib, pcmk_resource_t *rsc, if (rc == pcmk_rc_ok || rc == ENOTUNIQ) { char *found_attr_id = NULL; - found_attr_id = crm_element_value_copy(xml_search, PCMK_XA_ID); + found_attr_id = pcmk__xe_get_copy(xml_search, PCMK_XA_ID); if (!out->is_quiet(out)) { out->err(out, @@ -448,7 +448,7 @@ update_attribute(pcmk_resource_t *rsc, const char *requested_name, switch (rc) { case pcmk_rc_ok: - found_attr_id = crm_element_value_copy(xml_search, PCMK_XA_ID); + found_attr_id = pcmk__xe_get_copy(xml_search, PCMK_XA_ID); crm_debug("Found a match for " PCMK_XA_NAME "='%s': " PCMK_XA_ID "='%s'", attr_name, found_attr_id); rsc_attr_id = found_attr_id; @@ -678,7 +678,7 @@ cli_resource_delete_attribute(pcmk_resource_t *rsc, const char *requested_name, attr_set, attr_id, attr_name, &xml_search); switch (rc) { case pcmk_rc_ok: - found_attr_id = crm_element_value_copy(xml_search, PCMK_XA_ID); + found_attr_id = pcmk__xe_get_copy(xml_search, PCMK_XA_ID); pcmk__xml_free(xml_search); break; @@ -1813,7 +1813,7 @@ cli_resource_restart(pcmk__output_t *out, pcmk_resource_t *rsc, PCMK_META_TARGET_ROLE, &xml_search); if (rc == pcmk_rc_ok) { - orig_target_role = crm_element_value_copy(xml_search, PCMK_XA_VALUE); + orig_target_role = pcmk__xe_get_copy(xml_search, PCMK_XA_VALUE); } pcmk__xml_free(xml_search); From 222ddbf1cdcd2835d966c9cb499e22c98bbebb5c Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 19 Mar 2025 11:43:57 -0700 Subject: [PATCH 082/186] API: libcrmcommon: Deprecate crm_element_value_copy() Signed-off-by: Reid Wahl --- include/crm/common/xml_element.h | 2 -- include/crm/common/xml_element_compat.h | 3 +++ lib/common/xml_element.c | 25 +++++++------------------ 3 files changed, 10 insertions(+), 20 deletions(-) diff --git a/include/crm/common/xml_element.h b/include/crm/common/xml_element.h index e0dde333cfc..6a15afe6c45 100644 --- a/include/crm/common/xml_element.h +++ b/include/crm/common/xml_element.h @@ -33,8 +33,6 @@ const char *crm_xml_add_timeval(xmlNode *xml, const char *name_sec, const char *name_usec, const struct timeval *value); -char *crm_element_value_copy(const xmlNode *data, const char *name); - #ifdef __cplusplus } #endif diff --git a/include/crm/common/xml_element_compat.h b/include/crm/common/xml_element_compat.h index 0e35702ecbe..f0373c67342 100644 --- a/include/crm/common/xml_element_compat.h +++ b/include/crm/common/xml_element_compat.h @@ -61,6 +61,9 @@ int crm_element_value_int(const xmlNode *data, const char *name, int *dest); //! \deprecated Do not use const char *crm_element_value(const xmlNode *data, const char *name); +//! \deprecated Do not use +char *crm_element_value_copy(const xmlNode *data, const char *name); + #ifdef __cplusplus } #endif diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index 0d30b8c79fc..8e2e5c297d8 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -1441,24 +1441,6 @@ pcmk__xe_get_datetime(const xmlNode *xml, const char *attr, crm_time_t **t) return pcmk_rc_ok; } -/*! - * \brief Retrieve a copy of the value of an XML attribute - * - * This is like \c pcmk__xe_get() but allocating new memory for the result. - * - * \param[in] data XML node to check - * \param[in] name Attribute name to check - * - * \return Value of specified attribute (may be \c NULL) - * \note The caller is responsible for freeing the result. - */ -char * -crm_element_value_copy(const xmlNode *data, const char *name) -{ - CRM_CHECK((data != NULL) && (name != NULL), return NULL); - return pcmk__str_copy(pcmk__xe_get(data, name)); -} - /*! * \internal * \brief Add a boolean attribute to an XML node. @@ -1746,5 +1728,12 @@ crm_element_value_int(const xmlNode *data, const char *name, int *dest) return -1; } +char * +crm_element_value_copy(const xmlNode *data, const char *name) +{ + CRM_CHECK((data != NULL) && (name != NULL), return NULL); + return pcmk__str_copy(pcmk__xe_get(data, name)); +} + // LCOV_EXCL_STOP // End deprecated API From 772cb3d0f75c08034837e65711a1369b72163508 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 19 Mar 2025 15:10:06 -0700 Subject: [PATCH 083/186] Refactor: libcrmcommon: New pcmk__xe_set_timeval() To replace crm_xml_add_timeval(). Currently, we never check the return values of these crm_xml_add_*() functions except internally within other crm_xml_add_*() functions. So while a standard Pacemaker return code makes sense, there's no need to add one to the interface unless the callers want to check it. Signed-off-by: Reid Wahl --- include/crm/common/xml_element_internal.h | 4 ++- lib/cluster/election.c | 4 +-- lib/common/xml_element.c | 39 +++++++++++++++++++++++ 3 files changed, 44 insertions(+), 3 deletions(-) diff --git a/include/crm/common/xml_element_internal.h b/include/crm/common/xml_element_internal.h index d5a31b1a106..91d9e8226fb 100644 --- a/include/crm/common/xml_element_internal.h +++ b/include/crm/common/xml_element_internal.h @@ -148,9 +148,11 @@ int pcmk__xe_get_guint(const xmlNode *xml, const char *attr, guint *dest); int pcmk__xe_get_int(const xmlNode *xml, const char *attr, int *dest); int pcmk__xe_get_ll(const xmlNode *xml, const char *attr, long long *dest); int pcmk__xe_get_time(const xmlNode *xml, const char *attr, time_t *dest); + int pcmk__xe_get_timeval(const xmlNode *xml, const char *sec_attr, const char *usec_attr, struct timeval *dest); - +void pcmk__xe_set_timeval(xmlNode *xml, const char *sec_attr, + const char *usec_attr, const struct timeval *value); void pcmk__xe_set_bool_attr(xmlNodePtr node, const char *name, bool value); int pcmk__xe_get_bool_attr(const xmlNode *node, const char *name, bool *value); diff --git a/lib/cluster/election.c b/lib/cluster/election.c index 3bf13ed999c..70b379335ee 100644 --- a/lib/cluster/election.c +++ b/lib/cluster/election.c @@ -313,8 +313,8 @@ election_vote(pcmk_cluster_t *cluster) // Warning: PCMK__XA_ELECTION_AGE_NANO_SEC value is actually microseconds get_uptime(&age); - crm_xml_add_timeval(vote, PCMK__XA_ELECTION_AGE_SEC, - PCMK__XA_ELECTION_AGE_NANO_SEC, &age); + pcmk__xe_set_timeval(vote, PCMK__XA_ELECTION_AGE_SEC, + PCMK__XA_ELECTION_AGE_NANO_SEC, &age); pcmk__cluster_send_message(NULL, cluster->priv->server, vote); pcmk__xml_free(vote); diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index 8e2e5c297d8..ce71c653fed 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -1410,6 +1410,45 @@ pcmk__xe_get_timeval(const xmlNode *xml, const char *sec_attr, return pcmk_rc_ok; } +/*! + * \internal + * \brief Set XML attribute values for seconds and microseconds + * + * This is like \c crm_xml_add() but takes a struct timeval *. + * + * \param[in,out] xml XML element whose attributes to set + * \param[in] sec_attr Name of XML attribute for seconds + * \param[in] usec_attr Name of XML attribute for microseconds + * \param[in] value Attribute values to set + * + * \note This does nothing if \p value is \c NULL. + */ +void +pcmk__xe_set_timeval(xmlNode *xml, const char *sec_attr, const char *usec_attr, + const struct timeval *value) +{ + CRM_CHECK((xml != NULL) && (sec_attr != NULL) && (usec_attr != NULL), + return); + + if (value == NULL) { + return; + } + if (crm_xml_add_ll(xml, sec_attr, (long long) value->tv_sec) == NULL) { + return; + } + + /* Seconds were added successfully. Ignore any errors adding microseconds. + * + * It would be nice to make this atomic: revert the seconds attribute if + * adding the microseconds attribute fails. That's somewhat complicated due + * to change tracking: the chain of parents is already marked dirty, etc. In + * practice, microseconds should succeed if seconds succeeded, unless it's + * due to memory allocation failure. Nothing checks the return values of + * these setter functions at time of writing, anyway. + */ + crm_xml_add_ll(xml, usec_attr, (long long) value->tv_usec); +} + /*! * \internal * \brief Get a date/time object from an XML attribute value From db4a333470eeebaacfcb99d9ba818f2011379914 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 19 Mar 2025 15:11:54 -0700 Subject: [PATCH 084/186] API: libcrmcommon: Deprecate crm_xml_add_timeval() Signed-off-by: Reid Wahl --- include/crm/common/xml_element.h | 3 -- include/crm/common/xml_element_compat.h | 4 +++ lib/common/xml_element.c | 45 +++++++++---------------- 3 files changed, 20 insertions(+), 32 deletions(-) diff --git a/include/crm/common/xml_element.h b/include/crm/common/xml_element.h index 6a15afe6c45..a7a9b19bf6c 100644 --- a/include/crm/common/xml_element.h +++ b/include/crm/common/xml_element.h @@ -29,9 +29,6 @@ const char *crm_xml_add(xmlNode *node, const char *name, const char *value); const char *crm_xml_add_int(xmlNode *node, const char *name, int value); const char *crm_xml_add_ll(xmlNode *node, const char *name, long long value); const char *crm_xml_add_ms(xmlNode *node, const char *name, guint ms); -const char *crm_xml_add_timeval(xmlNode *xml, const char *name_sec, - const char *name_usec, - const struct timeval *value); #ifdef __cplusplus } diff --git a/include/crm/common/xml_element_compat.h b/include/crm/common/xml_element_compat.h index f0373c67342..dd35fdde3fb 100644 --- a/include/crm/common/xml_element_compat.h +++ b/include/crm/common/xml_element_compat.h @@ -64,6 +64,10 @@ const char *crm_element_value(const xmlNode *data, const char *name); //! \deprecated Do not use char *crm_element_value_copy(const xmlNode *data, const char *name); +//! \deprecated Do not use +const char *crm_xml_add_timeval(xmlNode *xml, const char *name_sec, + const char *name_usec, + const struct timeval *value); #ifdef __cplusplus } #endif diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index ce71c653fed..11307f56f60 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -1127,35 +1127,6 @@ crm_xml_add_ll(xmlNode *xml, const char *name, long long value) return crm_xml_add(xml, name, s); } -/*! - * \brief Create XML attributes for seconds and microseconds - * - * This is like \c crm_xml_add() but taking a struct timeval. - * - * \param[in,out] xml XML node to modify - * \param[in] name_sec Name of XML attribute for seconds - * \param[in] name_usec Name of XML attribute for microseconds (or NULL) - * \param[in] value Time value to set - * - * \return New seconds value as string on success, \c NULL otherwise - * \note This does nothing if xml, name_sec, or value is \c NULL. - */ -const char * -crm_xml_add_timeval(xmlNode *xml, const char *name_sec, const char *name_usec, - const struct timeval *value) -{ - const char *added = NULL; - - if (xml && name_sec && value) { - added = crm_xml_add_ll(xml, name_sec, (long long) value->tv_sec); - if (added && name_usec) { - // Any error is ignored (we successfully added seconds) - crm_xml_add_ll(xml, name_usec, (long long) value->tv_usec); - } - } - return added; -} - /*! * \internal * \brief Retrieve the value of an XML attribute @@ -1774,5 +1745,21 @@ crm_element_value_copy(const xmlNode *data, const char *name) return pcmk__str_copy(pcmk__xe_get(data, name)); } +const char * +crm_xml_add_timeval(xmlNode *xml, const char *name_sec, const char *name_usec, + const struct timeval *value) +{ + const char *added = NULL; + + if (xml && name_sec && value) { + added = crm_xml_add_ll(xml, name_sec, (long long) value->tv_sec); + if (added && name_usec) { + // Any error is ignored (we successfully added seconds) + crm_xml_add_ll(xml, name_usec, (long long) value->tv_usec); + } + } + return added; +} + // LCOV_EXCL_STOP // End deprecated API From e8841abf2b33bfff5a750b0a45a9c9a39ac0c0f6 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 19 Mar 2025 15:35:41 -0700 Subject: [PATCH 085/186] Refactor: libcrmcommon: New pcmk__xe_set_time() Doesn't replace anything in public API. Counterpart to pcmk__xe_get_time(). Replaces some calls to crm_xml_add_ll(). Signed-off-by: Reid Wahl --- daemons/controld/controld_cib.c | 2 +- daemons/execd/execd_commands.c | 8 +++----- daemons/fenced/fenced_history.c | 2 +- daemons/pacemakerd/pcmkd_messages.c | 3 +-- daemons/schedulerd/schedulerd_messages.c | 3 +-- include/crm/common/xml_element_internal.h | 2 ++ lib/common/xml_element.c | 19 +++++++++++++++++++ lib/pacemaker/pcmk_graph_producer.c | 14 +++++--------- lib/pacemaker/pcmk_sched_actions.c | 6 ++---- 9 files changed, 35 insertions(+), 24 deletions(-) diff --git a/daemons/controld/controld_cib.c b/daemons/controld/controld_cib.c index a53c2344700..20b6d61328b 100644 --- a/daemons/controld/controld_cib.c +++ b/daemons/controld/controld_cib.c @@ -918,7 +918,7 @@ controld_update_resource_history(const char *node_name, if (!should_preserve_lock(op)) { lock_time = 0; } - crm_xml_add_ll(xml, PCMK_OPT_SHUTDOWN_LOCK, (long long) lock_time); + pcmk__xe_set_time(xml, PCMK_OPT_SHUTDOWN_LOCK, lock_time); } if (op->params != NULL) { container = g_hash_table_lookup(op->params, diff --git a/daemons/execd/execd_commands.c b/daemons/execd/execd_commands.c index b96ce55ba89..cc9d2afbdcd 100644 --- a/daemons/execd/execd_commands.c +++ b/daemons/execd/execd_commands.c @@ -639,10 +639,8 @@ send_cmd_complete_notify(lrmd_cmd_t * cmd) crm_xml_add_int(notify, PCMK__XA_LRMD_CALLID, cmd->call_id); crm_xml_add_int(notify, PCMK__XA_LRMD_RSC_DELETED, cmd->rsc_deleted); - crm_xml_add_ll(notify, PCMK__XA_LRMD_RUN_TIME, - (long long) cmd->epoch_last_run); - crm_xml_add_ll(notify, PCMK__XA_LRMD_RCCHANGE_TIME, - (long long) cmd->epoch_rcchange); + pcmk__xe_set_time(notify, PCMK__XA_LRMD_RUN_TIME, cmd->epoch_last_run); + pcmk__xe_set_time(notify, PCMK__XA_LRMD_RCCHANGE_TIME, cmd->epoch_rcchange); #ifdef PCMK__TIME_USE_CGT crm_xml_add_int(notify, PCMK__XA_LRMD_EXEC_TIME, exec_time); crm_xml_add_int(notify, PCMK__XA_LRMD_QUEUE_TIME, queue_time); @@ -1558,7 +1556,7 @@ process_lrmd_signon(pcmk__client_t *client, xmlNode *request, int call_id, crm_xml_add(*reply, PCMK__XA_LRMD_OP, CRM_OP_REGISTER); crm_xml_add(*reply, PCMK__XA_LRMD_CLIENTID, client->id); crm_xml_add(*reply, PCMK__XA_LRMD_PROTOCOL_VERSION, LRMD_PROTOCOL_VERSION); - crm_xml_add_ll(*reply, PCMK__XA_UPTIME, now - start_time); + pcmk__xe_set_time(*reply, PCMK__XA_UPTIME, now - start_time); if (start_state) { crm_xml_add(*reply, PCMK__XA_NODE_START_STATE, start_state); diff --git a/daemons/fenced/fenced_history.c b/daemons/fenced/fenced_history.c index 9653e193c5c..a555b753863 100644 --- a/daemons/fenced/fenced_history.c +++ b/daemons/fenced/fenced_history.c @@ -383,7 +383,7 @@ stonith_local_history_diff_and_merge(GHashTable *remote_history, crm_xml_add(entry, PCMK__XA_ST_ORIGIN, op->originator); crm_xml_add(entry, PCMK__XA_ST_DELEGATE, op->delegate); crm_xml_add(entry, PCMK__XA_ST_CLIENTNAME, op->client_name); - crm_xml_add_ll(entry, PCMK__XA_ST_DATE, op->completed); + pcmk__xe_set_time(entry, PCMK__XA_ST_DATE, op->completed); crm_xml_add_ll(entry, PCMK__XA_ST_DATE_NSEC, op->completed_nsec); crm_xml_add_int(entry, PCMK__XA_ST_STATE, op->state); diff --git a/daemons/pacemakerd/pcmkd_messages.c b/daemons/pacemakerd/pcmkd_messages.c index c9d9169ab67..b2cbec3f7f1 100644 --- a/daemons/pacemakerd/pcmkd_messages.c +++ b/daemons/pacemakerd/pcmkd_messages.c @@ -57,8 +57,7 @@ handle_ping_request(pcmk__request_t *request) value = pcmk__xe_get(msg, PCMK__XA_CRM_SYS_TO); crm_xml_add(ping, PCMK__XA_CRM_SUBSYSTEM, value); crm_xml_add(ping, PCMK__XA_PACEMAKERD_STATE, pacemakerd_state); - crm_xml_add_ll(ping, PCMK_XA_CRM_TIMESTAMP, - (long long) subdaemon_check_progress); + pcmk__xe_set_time(ping, PCMK_XA_CRM_TIMESTAMP, subdaemon_check_progress); crm_xml_add(ping, PCMK_XA_RESULT, "ok"); reply = pcmk__new_reply(msg, ping); diff --git a/daemons/schedulerd/schedulerd_messages.c b/daemons/schedulerd/schedulerd_messages.c index 24f44a16cd3..9d63edbff5e 100644 --- a/daemons/schedulerd/schedulerd_messages.c +++ b/daemons/schedulerd/schedulerd_messages.c @@ -158,8 +158,7 @@ handle_pecalc_request(pcmk__request_t *request) } else { unlink(filename); - crm_xml_add_ll(xml_data, PCMK_XA_EXECUTION_DATE, - (long long) execution_date); + pcmk__xe_set_time(xml_data, PCMK_XA_EXECUTION_DATE, execution_date); pcmk__xml_write_file(xml_data, filename, true); pcmk__write_series_sequence(PCMK_SCHEDULER_INPUT_DIR, series[series_id].name, ++seq, series_wrap); diff --git a/include/crm/common/xml_element_internal.h b/include/crm/common/xml_element_internal.h index 91d9e8226fb..2bfa2f64fff 100644 --- a/include/crm/common/xml_element_internal.h +++ b/include/crm/common/xml_element_internal.h @@ -147,7 +147,9 @@ int pcmk__xe_get_flags(const xmlNode *xml, const char *name, uint32_t *dest, int pcmk__xe_get_guint(const xmlNode *xml, const char *attr, guint *dest); int pcmk__xe_get_int(const xmlNode *xml, const char *attr, int *dest); int pcmk__xe_get_ll(const xmlNode *xml, const char *attr, long long *dest); + int pcmk__xe_get_time(const xmlNode *xml, const char *attr, time_t *dest); +void pcmk__xe_set_time(xmlNode *xml, const char *attr, time_t value); int pcmk__xe_get_timeval(const xmlNode *xml, const char *sec_attr, const char *usec_attr, struct timeval *dest); diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index 11307f56f60..843953bb97d 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -1336,6 +1336,25 @@ pcmk__xe_get_time(const xmlNode *xml, const char *attr, time_t *dest) return pcmk_rc_ok; } +/*! + * \internal + * \brief Set an XML attribute using a \c time_t value + * + * This is like \c crm_xml_add() but takes a \c time_t. + * + * \param[in,out] xml XML element whose attribute to set + * \param[in] attr Attribute name + * \param[in] value Attribute value to set (in seconds) + */ +void +pcmk__xe_set_time(xmlNode *xml, const char *attr, time_t value) +{ + // Could be inline, but keep it underneath pcmk__xe_get_time() + CRM_CHECK((xml != NULL) && (attr != NULL), return); + + crm_xml_add_ll(xml, attr, (long long) value); +} + /*! * \internal * \brief Retrieve the values of XML second/microsecond attributes as time diff --git a/lib/pacemaker/pcmk_graph_producer.c b/lib/pacemaker/pcmk_graph_producer.c index e6cff3e26c8..16105172c77 100644 --- a/lib/pacemaker/pcmk_graph_producer.c +++ b/lib/pacemaker/pcmk_graph_producer.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. * @@ -260,8 +260,8 @@ add_resource_details(const pcmk_action_t *action, xmlNode *action_xml) * completes. */ if (pcmk__action_locks_rsc_to_node(action)) { - crm_xml_add_ll(action_xml, PCMK_OPT_SHUTDOWN_LOCK, - (long long) action->rsc->priv->lock_time); + pcmk__xe_set_time(action_xml, PCMK_OPT_SHUTDOWN_LOCK, + action->rsc->priv->lock_time); } // List affected resource @@ -1047,12 +1047,8 @@ pcmk__create_graph(pcmk_scheduler_t *scheduler) } if (scheduler->priv->recheck_by > 0) { - char *recheck_epoch = NULL; - - recheck_epoch = crm_strdup_printf("%llu", (unsigned long long) - scheduler->priv->recheck_by); - crm_xml_add(scheduler->priv->graph, "recheck-by", recheck_epoch); - free(recheck_epoch); + pcmk__xe_set_time(scheduler->priv->graph, "recheck-by", + scheduler->priv->recheck_by); } /* The following code will de-duplicate action inputs, so nothing past this diff --git a/lib/pacemaker/pcmk_sched_actions.c b/lib/pacemaker/pcmk_sched_actions.c index ea97a4e0be3..7216b71067b 100644 --- a/lib/pacemaker/pcmk_sched_actions.c +++ b/lib/pacemaker/pcmk_sched_actions.c @@ -1262,11 +1262,9 @@ pcmk__create_history_xml(xmlNode *parent, lrmd_event_data_t *op, if ((op->interval_ms > 0) && (op->t_rcchange > 0)) { // Recurring ops may have changed rc after initial run - crm_xml_add_ll(xml_op, PCMK_XA_LAST_RC_CHANGE, - (long long) op->t_rcchange); + pcmk__xe_set_time(xml_op, PCMK_XA_LAST_RC_CHANGE, op->t_rcchange); } else { - crm_xml_add_ll(xml_op, PCMK_XA_LAST_RC_CHANGE, - (long long) op->t_run); + pcmk__xe_set_time(xml_op, PCMK_XA_LAST_RC_CHANGE, op->t_run); } crm_xml_add_int(xml_op, PCMK_XA_EXEC_TIME, op->exec_time); From 1399df9238692c42682d616c035c34a5b8d6ba0b Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 19 Mar 2025 15:47:35 -0700 Subject: [PATCH 086/186] Refactor: libcrmcommon: New pcmk__xe_set_guint() To replace crm_xml_add_ms(). Signed-off-by: Reid Wahl --- daemons/execd/execd_commands.c | 5 +++-- include/crm/common/xml_element_internal.h | 7 +++++-- lib/common/xml_element.c | 22 ++++++++++++++++++++++ lib/lrmd/lrmd_client.c | 4 ++-- lib/pacemaker/pcmk_sched_actions.c | 2 +- 5 files changed, 33 insertions(+), 7 deletions(-) diff --git a/daemons/execd/execd_commands.c b/daemons/execd/execd_commands.c index cc9d2afbdcd..3c738289aa1 100644 --- a/daemons/execd/execd_commands.c +++ b/daemons/execd/execd_commands.c @@ -631,7 +631,7 @@ send_cmd_complete_notify(lrmd_cmd_t * cmd) crm_xml_add(notify, PCMK__XA_LRMD_ORIGIN, __func__); crm_xml_add_int(notify, PCMK__XA_LRMD_TIMEOUT, cmd->timeout); - crm_xml_add_ms(notify, PCMK__XA_LRMD_RSC_INTERVAL, cmd->interval_ms); + pcmk__xe_set_guint(notify, PCMK__XA_LRMD_RSC_INTERVAL, cmd->interval_ms); crm_xml_add_int(notify, PCMK__XA_LRMD_RSC_START_DELAY, cmd->start_delay); crm_xml_add_int(notify, PCMK__XA_LRMD_EXEC_RC, cmd->result.exit_status); crm_xml_add_int(notify, PCMK__XA_LRMD_EXEC_OP_STATUS, @@ -1809,7 +1809,8 @@ add_recurring_op_xml(xmlNode *reply, lrmd_rsc_t *rsc) crm_xml_add(op_xml, PCMK__XA_LRMD_RSC_ACTION, pcmk__s(cmd->real_action, cmd->action)); - crm_xml_add_ms(op_xml, PCMK__XA_LRMD_RSC_INTERVAL, cmd->interval_ms); + pcmk__xe_set_guint(op_xml, PCMK__XA_LRMD_RSC_INTERVAL, + cmd->interval_ms); crm_xml_add_int(op_xml, PCMK__XA_LRMD_TIMEOUT, cmd->timeout_orig); } } diff --git a/include/crm/common/xml_element_internal.h b/include/crm/common/xml_element_internal.h index 2bfa2f64fff..dfe66625e21 100644 --- a/include/crm/common/xml_element_internal.h +++ b/include/crm/common/xml_element_internal.h @@ -144,9 +144,12 @@ const char *pcmk__xe_get(const xmlNode *xml, const char *attr_name); int pcmk__xe_get_datetime(const xmlNode *xml, const char *attr, crm_time_t **t); int pcmk__xe_get_flags(const xmlNode *xml, const char *name, uint32_t *dest, uint32_t default_value); + int pcmk__xe_get_guint(const xmlNode *xml, const char *attr, guint *dest); -int pcmk__xe_get_int(const xmlNode *xml, const char *attr, int *dest); -int pcmk__xe_get_ll(const xmlNode *xml, const char *attr, long long *dest); +void pcmk__xe_set_guint(xmlNode *xml, const char *attr, guint value); + +int pcmk__xe_get_int(const xmlNode *xml, const char *name, int *dest); +int pcmk__xe_get_ll(const xmlNode *xml, const char *name, long long *dest); int pcmk__xe_get_time(const xmlNode *xml, const char *attr, time_t *dest); void pcmk__xe_set_time(xmlNode *xml, const char *attr, time_t value); diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index 843953bb97d..9f7c4399910 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -1234,6 +1234,28 @@ pcmk__xe_get_guint(const xmlNode *xml, const char *attr, guint *dest) return pcmk_rc_ok; } +/*! + * \internal + * \brief Set an XML attribute using a \c guint value + * + * This is like \c crm_xml_add() but takes a \c guint. + * + * \param[in,out] xml XML node to modify + * \param[in] attr Attribute name + * \param[in] value Attribute value to set + */ +void +pcmk__xe_set_guint(xmlNode *xml, const char *attr, guint value) +{ + char *value_s = NULL; + + CRM_CHECK((xml != NULL) && (attr != NULL), return); + + value_s = crm_strdup_printf("%u", value); + crm_xml_add(xml, attr, value_s); + free(value_s); +} + /*! * \internal * \brief Retrieve an \c int value from an XML attribute diff --git a/lib/lrmd/lrmd_client.c b/lib/lrmd/lrmd_client.c index 71b9fb0e020..b47e0068ef9 100644 --- a/lib/lrmd/lrmd_client.c +++ b/lib/lrmd/lrmd_client.c @@ -2149,7 +2149,7 @@ lrmd_api_exec(lrmd_t *lrmd, const char *rsc_id, const char *action, crm_xml_add(data, PCMK__XA_LRMD_RSC_ID, rsc_id); crm_xml_add(data, PCMK__XA_LRMD_RSC_ACTION, action); crm_xml_add(data, PCMK__XA_LRMD_RSC_USERDATA_STR, userdata); - crm_xml_add_ms(data, PCMK__XA_LRMD_RSC_INTERVAL, interval_ms); + pcmk__xe_set_guint(data, PCMK__XA_LRMD_RSC_INTERVAL, interval_ms); crm_xml_add_int(data, PCMK__XA_LRMD_TIMEOUT, timeout); crm_xml_add_int(data, PCMK__XA_LRMD_RSC_START_DELAY, start_delay); @@ -2201,7 +2201,7 @@ lrmd_api_cancel(lrmd_t *lrmd, const char *rsc_id, const char *action, crm_xml_add(data, PCMK__XA_LRMD_ORIGIN, __func__); crm_xml_add(data, PCMK__XA_LRMD_RSC_ACTION, action); crm_xml_add(data, PCMK__XA_LRMD_RSC_ID, rsc_id); - crm_xml_add_ms(data, PCMK__XA_LRMD_RSC_INTERVAL, interval_ms); + pcmk__xe_set_guint(data, PCMK__XA_LRMD_RSC_INTERVAL, interval_ms); rc = lrmd_send_command(lrmd, LRMD_OP_RSC_CANCEL, data, NULL, 0, 0, true); pcmk__xml_free(data); return rc; diff --git a/lib/pacemaker/pcmk_sched_actions.c b/lib/pacemaker/pcmk_sched_actions.c index 7216b71067b..01896567e76 100644 --- a/lib/pacemaker/pcmk_sched_actions.c +++ b/lib/pacemaker/pcmk_sched_actions.c @@ -1249,7 +1249,7 @@ pcmk__create_history_xml(xmlNode *parent, lrmd_event_data_t *op, crm_xml_add_int(xml_op, PCMK__XA_CALL_ID, op->call_id); crm_xml_add_int(xml_op, PCMK__XA_RC_CODE, op->rc); crm_xml_add_int(xml_op, PCMK__XA_OP_STATUS, op->op_status); - crm_xml_add_ms(xml_op, PCMK_META_INTERVAL, op->interval_ms); + pcmk__xe_set_guint(xml_op, PCMK_META_INTERVAL, op->interval_ms); if ((op->t_run > 0) || (op->t_rcchange > 0) || (op->exec_time > 0) || (op->queue_time > 0)) { From ce05f1dc8f6f96c212054cc0968b879698fc59d5 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 19 Mar 2025 15:55:03 -0700 Subject: [PATCH 087/186] API: libcrmcommon: Deprecate crm_xml_add_ms() Signed-off-by: Reid Wahl --- include/crm/common/xml_element.h | 1 - include/crm/common/xml_element_compat.h | 4 ++++ lib/common/xml_element.c | 32 ++++++++----------------- 3 files changed, 14 insertions(+), 23 deletions(-) diff --git a/include/crm/common/xml_element.h b/include/crm/common/xml_element.h index a7a9b19bf6c..73ce164505a 100644 --- a/include/crm/common/xml_element.h +++ b/include/crm/common/xml_element.h @@ -28,7 +28,6 @@ extern "C" { const char *crm_xml_add(xmlNode *node, const char *name, const char *value); const char *crm_xml_add_int(xmlNode *node, const char *name, int value); const char *crm_xml_add_ll(xmlNode *node, const char *name, long long value); -const char *crm_xml_add_ms(xmlNode *node, const char *name, guint ms); #ifdef __cplusplus } diff --git a/include/crm/common/xml_element_compat.h b/include/crm/common/xml_element_compat.h index dd35fdde3fb..9fc1fc41099 100644 --- a/include/crm/common/xml_element_compat.h +++ b/include/crm/common/xml_element_compat.h @@ -68,6 +68,10 @@ char *crm_element_value_copy(const xmlNode *data, const char *name); const char *crm_xml_add_timeval(xmlNode *xml, const char *name_sec, const char *name_usec, const struct timeval *value); + +//! \deprecated Do not use +const char *crm_xml_add_ms(xmlNode *node, const char *name, guint ms); + #ifdef __cplusplus } #endif diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index 9f7c4399910..f68c005ba32 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -1076,28 +1076,6 @@ crm_xml_add_int(xmlNode *node, const char *name, int value) return added; } -/*! - * \brief Create an XML attribute with specified name and unsigned value - * - * This is like \c crm_xml_add() but taking a guint value. - * - * \param[in,out] node XML node to modify - * \param[in] name Attribute name to set - * \param[in] ms Attribute value to set - * - * \return New value as string on success, \c NULL otherwise - * \note This does nothing if node or name are \c NULL or empty. - */ -const char * -crm_xml_add_ms(xmlNode *node, const char *name, guint ms) -{ - char *number = crm_strdup_printf("%u", ms); - const char *added = crm_xml_add(node, name, number); - - free(number); - return added; -} - // Maximum size of null-terminated string representation of 64-bit integer // -9223372036854775808 #define LLSTRSIZE 21 @@ -1802,5 +1780,15 @@ crm_xml_add_timeval(xmlNode *xml, const char *name_sec, const char *name_usec, return added; } +const char * +crm_xml_add_ms(xmlNode *node, const char *name, guint ms) +{ + char *number = crm_strdup_printf("%u", ms); + const char *added = crm_xml_add(node, name, number); + + free(number); + return added; +} + // LCOV_EXCL_STOP // End deprecated API From a7d52a7d896492e385fb3ea04a1d5eca95c13055 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 19 Mar 2025 16:09:13 -0700 Subject: [PATCH 088/186] Refactor: libcrmcommon: New pcmk__xe_set_ll() The only reason we return a value here is so that pcmk__xe_set_timeval() can check it. We could have a static helper function that both of them call, so that this will be consistent, but I can't be bothered. The existing crm_xml_add_ll() prints into a static buffer. While that is undeniably more efficient, I don't think it matters. Signed-off-by: Reid Wahl --- daemons/controld/controld_membership.c | 4 +-- daemons/controld/controld_messages.c | 4 +-- daemons/fenced/fenced_history.c | 4 +-- include/crm/common/xml_element_internal.h | 2 ++ lib/cluster/corosync.c | 4 +-- lib/common/ipc_client.c | 2 +- lib/common/ipc_controld.c | 2 +- lib/common/xml_element.c | 39 +++++++++++++++++++++-- tools/crm_node.c | 4 +-- 9 files changed, 50 insertions(+), 15 deletions(-) diff --git a/daemons/controld/controld_membership.c b/daemons/controld/controld_membership.c index 866741d93d8..b17f781660f 100644 --- a/daemons/controld/controld_membership.c +++ b/daemons/controld/controld_membership.c @@ -153,7 +153,7 @@ create_node_state_update(pcmk__node_status_t *node, int flags, if ((flags & node_update_cluster) && node->state) { if (compare_version(controld_globals.dc_version, "3.18.0") >= 0) { // A value 0 means the node is not a cluster member. - crm_xml_add_ll(node_state, PCMK__XA_IN_CCM, node->when_member); + pcmk__xe_set_ll(node_state, PCMK__XA_IN_CCM, node->when_member); } else { pcmk__xe_set_bool_attr(node_state, PCMK__XA_IN_CCM, @@ -166,7 +166,7 @@ create_node_state_update(pcmk__node_status_t *node, int flags, if (flags & node_update_peer) { if (compare_version(controld_globals.dc_version, "3.18.0") >= 0) { // A value 0 means the peer is offline in CPG. - crm_xml_add_ll(node_state, PCMK_XA_CRMD, node->when_online); + pcmk__xe_set_ll(node_state, PCMK_XA_CRMD, node->when_online); } else { // @COMPAT DCs < 2.1.7 use online/offline rather than timestamp diff --git a/daemons/controld/controld_messages.c b/daemons/controld/controld_messages.c index 7398de55b52..c88b95e948a 100644 --- a/daemons/controld/controld_messages.c +++ b/daemons/controld/controld_messages.c @@ -882,8 +882,8 @@ handle_node_list(const xmlNode *request) while (g_hash_table_iter_next(&iter, NULL, (gpointer *) & node)) { xmlNode *xml = pcmk__xe_create(reply_data, PCMK_XE_NODE); - crm_xml_add_ll(xml, PCMK_XA_ID, - (long long) node->cluster_layer_id); // uint32_t + pcmk__xe_set_ll(xml, PCMK_XA_ID, + (long long) node->cluster_layer_id); // uint32_t crm_xml_add(xml, PCMK_XA_UNAME, node->name); crm_xml_add(xml, PCMK__XA_IN_CCM, node->state); } diff --git a/daemons/fenced/fenced_history.c b/daemons/fenced/fenced_history.c index a555b753863..722c9f4407e 100644 --- a/daemons/fenced/fenced_history.c +++ b/daemons/fenced/fenced_history.c @@ -384,8 +384,8 @@ stonith_local_history_diff_and_merge(GHashTable *remote_history, crm_xml_add(entry, PCMK__XA_ST_DELEGATE, op->delegate); crm_xml_add(entry, PCMK__XA_ST_CLIENTNAME, op->client_name); pcmk__xe_set_time(entry, PCMK__XA_ST_DATE, op->completed); - crm_xml_add_ll(entry, PCMK__XA_ST_DATE_NSEC, - op->completed_nsec); + pcmk__xe_set_ll(entry, PCMK__XA_ST_DATE_NSEC, + op->completed_nsec); crm_xml_add_int(entry, PCMK__XA_ST_STATE, op->state); stonith__xe_set_result(entry, &op->result); } diff --git a/include/crm/common/xml_element_internal.h b/include/crm/common/xml_element_internal.h index dfe66625e21..b9ba2b1323c 100644 --- a/include/crm/common/xml_element_internal.h +++ b/include/crm/common/xml_element_internal.h @@ -149,7 +149,9 @@ int pcmk__xe_get_guint(const xmlNode *xml, const char *attr, guint *dest); void pcmk__xe_set_guint(xmlNode *xml, const char *attr, guint value); int pcmk__xe_get_int(const xmlNode *xml, const char *name, int *dest); + int pcmk__xe_get_ll(const xmlNode *xml, const char *name, long long *dest); +int pcmk__xe_set_ll(xmlNode *xml, const char *attr, long long value); int pcmk__xe_get_time(const xmlNode *xml, const char *attr, time_t *dest); void pcmk__xe_set_time(xmlNode *xml, const char *attr, time_t value); diff --git a/lib/cluster/corosync.c b/lib/cluster/corosync.c index 2782b100671..a0e7e6b38da 100644 --- a/lib/cluster/corosync.c +++ b/lib/cluster/corosync.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. * @@ -656,7 +656,7 @@ pcmk__corosync_add_nodes(xmlNode *xml_parent) if (xml_parent) { xmlNode *node = pcmk__xe_create(xml_parent, PCMK_XE_NODE); - crm_xml_add_ll(node, PCMK_XA_ID, (long long) nodeid); + pcmk__xe_set_ll(node, PCMK_XA_ID, (long long) nodeid); crm_xml_add(node, PCMK_XA_UNAME, name); } } diff --git a/lib/common/ipc_client.c b/lib/common/ipc_client.c index 63483e7b2da..6cc04543e11 100644 --- a/lib/common/ipc_client.c +++ b/lib/common/ipc_client.c @@ -767,7 +767,7 @@ create_purge_node_request(const pcmk_ipc_api_t *api, const char *node_name, pcmk_ipc_name(api, false), CRM_OP_RM_NODE_CACHE, NULL); if (nodeid > 0) { - crm_xml_add_ll(request, PCMK_XA_ID, (long long) nodeid); + pcmk__xe_set_ll(request, PCMK_XA_ID, (long long) nodeid); } crm_xml_add(request, PCMK_XA_UNAME, node_name); break; diff --git a/lib/common/ipc_controld.c b/lib/common/ipc_controld.c index 6951c8fc7da..a20b4dfb201 100644 --- a/lib/common/ipc_controld.c +++ b/lib/common/ipc_controld.c @@ -430,7 +430,7 @@ pcmk_controld_api_node_info(pcmk_ipc_api_t *api, uint32_t nodeid) return EINVAL; } if (nodeid > 0) { - crm_xml_add_ll(request, PCMK_XA_ID, nodeid); + pcmk__xe_set_ll(request, PCMK_XA_ID, nodeid); } rc = send_controller_request(api, request, true); diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index f68c005ba32..eca3f5a8599 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -1302,6 +1302,38 @@ pcmk__xe_get_ll(const xmlNode *xml, const char *attr, long long *dest) return pcmk_rc_ok; } +/*! + * \internal + * \brief Set an XML attribute using a long long value + * + * This is like \c crm_xml_add() but takes a long long. + * + * \param[in,out] xml XML node to modify + * \param[in] attr Attribute name + * \param[in] value Attribute value to set + * + * \return Standard Pacemaker return code + */ +int +pcmk__xe_set_ll(xmlNode *xml, const char *attr, long long value) +{ + char *value_s = NULL; + int rc = pcmk_rc_ok; + + CRM_CHECK((xml != NULL) && (attr != NULL), return EINVAL); + + value_s = crm_strdup_printf("%lld", value); + + errno = 0; + if (crm_xml_add(xml, attr, value_s) == NULL) { + // ACL denial + rc = (errno != 0)? errno : EACCES; + } + + free(value_s); + return rc; +} + /*! * \internal * \brief Retrieve a \c time_t value from an XML attribute @@ -1352,7 +1384,7 @@ pcmk__xe_set_time(xmlNode *xml, const char *attr, time_t value) // Could be inline, but keep it underneath pcmk__xe_get_time() CRM_CHECK((xml != NULL) && (attr != NULL), return); - crm_xml_add_ll(xml, attr, (long long) value); + pcmk__xe_set_ll(xml, attr, (long long) value); } /*! @@ -1423,7 +1455,8 @@ pcmk__xe_set_timeval(xmlNode *xml, const char *sec_attr, const char *usec_attr, if (value == NULL) { return; } - if (crm_xml_add_ll(xml, sec_attr, (long long) value->tv_sec) == NULL) { + if (pcmk__xe_set_ll(xml, sec_attr, + (long long) value->tv_sec) != pcmk_rc_ok) { return; } @@ -1436,7 +1469,7 @@ pcmk__xe_set_timeval(xmlNode *xml, const char *sec_attr, const char *usec_attr, * due to memory allocation failure. Nothing checks the return values of * these setter functions at time of writing, anyway. */ - crm_xml_add_ll(xml, usec_attr, (long long) value->tv_usec); + pcmk__xe_set_ll(xml, usec_attr, (long long) value->tv_usec); } /*! diff --git a/tools/crm_node.c b/tools/crm_node.c index 81fc56b808c..f5a2148f874 100644 --- a/tools/crm_node.c +++ b/tools/crm_node.c @@ -549,7 +549,7 @@ remove_from_section(cib_t *cib, const char *element, const char *section, crm_xml_add(xml, PCMK_XA_UNAME, node_name); if (node_id > 0) { - crm_xml_add_ll(xml, PCMK_XA_ID, node_id); + pcmk__xe_set_ll(xml, PCMK_XA_ID, (long long) node_id); } rc = cib->cmds->remove(cib, section, xml, cib_transaction); @@ -689,7 +689,7 @@ purge_node_from_fencer(const char *node_name, long node_id) cmd = pcmk__new_request(pcmk_ipc_fenced, crm_system_name, NULL, PCMK__VALUE_STONITH_NG, CRM_OP_RM_NODE_CACHE, NULL); if (node_id > 0) { - crm_xml_add_ll(cmd, PCMK_XA_ID, node_id); + pcmk__xe_set_ll(cmd, PCMK_XA_ID, (long long) node_id); } crm_xml_add(cmd, PCMK_XA_UNAME, node_name); From 783c8c961826fafb947fed131dba8b757230ad13 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 19 Mar 2025 16:12:15 -0700 Subject: [PATCH 089/186] API: libcrmcommon: Deprecate crm_xml_add_ll() Signed-off-by: Reid Wahl --- include/crm/common/xml_element.h | 1 - include/crm/common/xml_element_compat.h | 3 ++ lib/common/xml_element.c | 44 +++++++++---------------- 3 files changed, 18 insertions(+), 30 deletions(-) diff --git a/include/crm/common/xml_element.h b/include/crm/common/xml_element.h index 73ce164505a..50c502881d6 100644 --- a/include/crm/common/xml_element.h +++ b/include/crm/common/xml_element.h @@ -27,7 +27,6 @@ extern "C" { const char *crm_xml_add(xmlNode *node, const char *name, const char *value); const char *crm_xml_add_int(xmlNode *node, const char *name, int value); -const char *crm_xml_add_ll(xmlNode *node, const char *name, long long value); #ifdef __cplusplus } diff --git a/include/crm/common/xml_element_compat.h b/include/crm/common/xml_element_compat.h index 9fc1fc41099..a94d8f169fc 100644 --- a/include/crm/common/xml_element_compat.h +++ b/include/crm/common/xml_element_compat.h @@ -72,6 +72,9 @@ const char *crm_xml_add_timeval(xmlNode *xml, const char *name_sec, //! \deprecated Do not use const char *crm_xml_add_ms(xmlNode *node, const char *name, guint ms); +//! \deprecated Do not use +const char *crm_xml_add_ll(xmlNode *node, const char *name, long long value); + #ifdef __cplusplus } #endif diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index eca3f5a8599..b4da750266e 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -1076,35 +1076,6 @@ crm_xml_add_int(xmlNode *node, const char *name, int value) return added; } -// Maximum size of null-terminated string representation of 64-bit integer -// -9223372036854775808 -#define LLSTRSIZE 21 - -/*! - * \brief Create an XML attribute with specified name and long long int value - * - * This is like \c crm_xml_add() but taking a long long int value. It is a - * useful equivalent for defined types like time_t, etc. - * - * \param[in,out] xml XML node to modify - * \param[in] name Attribute name to set - * \param[in] value Attribute value to set - * - * \return New value as string on success, \c NULL otherwise - * \note This does nothing if xml or name are \c NULL or empty. - * This does not support greater than 64-bit values. - */ -const char * -crm_xml_add_ll(xmlNode *xml, const char *name, long long value) -{ - char s[LLSTRSIZE] = { '\0', }; - - if (snprintf(s, LLSTRSIZE, "%lld", (long long) value) == LLSTRSIZE) { - return NULL; - } - return crm_xml_add(xml, name, s); -} - /*! * \internal * \brief Retrieve the value of an XML attribute @@ -1797,6 +1768,21 @@ crm_element_value_copy(const xmlNode *data, const char *name) return pcmk__str_copy(pcmk__xe_get(data, name)); } +// Maximum size of null-terminated string representation of 64-bit integer +// -9223372036854775808 +#define LLSTRSIZE 21 + +const char * +crm_xml_add_ll(xmlNode *xml, const char *name, long long value) +{ + char s[LLSTRSIZE] = { '\0', }; + + if (snprintf(s, LLSTRSIZE, "%lld", (long long) value) == LLSTRSIZE) { + return NULL; + } + return crm_xml_add(xml, name, s); +} + const char * crm_xml_add_timeval(xmlNode *xml, const char *name_sec, const char *name_usec, const struct timeval *value) From 4084c9757b13d71d58e1cc4cbec479613ff42f82 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 19 Mar 2025 16:23:53 -0700 Subject: [PATCH 090/186] Refactor: libcrmcommon: New pcmk__xe_set_int() To replace crm_xml_add_int() Signed-off-by: Reid Wahl --- daemons/attrd/attrd_attributes.c | 14 ++++++------ daemons/attrd/attrd_corosync.c | 2 +- daemons/attrd/attrd_elections.c | 2 +- daemons/attrd/attrd_ipc.c | 2 +- daemons/attrd/attrd_messages.c | 2 +- daemons/attrd/attrd_sync.c | 2 +- daemons/based/based_callbacks.c | 4 ++-- daemons/based/based_io.c | 6 ++--- daemons/based/based_messages.c | 2 +- daemons/based/based_notify.c | 2 +- daemons/based/based_remote.c | 2 +- daemons/controld/controld_cib.c | 2 +- daemons/controld/controld_execd_state.c | 2 +- daemons/controld/controld_join_client.c | 2 +- daemons/controld/controld_join_dc.c | 2 +- daemons/controld/controld_membership.c | 2 +- daemons/controld/controld_schedulerd.c | 2 +- daemons/controld/controld_throttle.c | 4 ++-- daemons/execd/execd_commands.c | 28 +++++++++++------------ daemons/execd/pacemaker-execd.c | 2 +- daemons/execd/remoted_proxy.c | 6 +++-- daemons/execd/remoted_tls.c | 2 +- daemons/fenced/fenced_cib.c | 2 +- daemons/fenced/fenced_commands.c | 20 ++++++++-------- daemons/fenced/fenced_history.c | 4 ++-- daemons/fenced/fenced_remote.c | 16 ++++++------- daemons/fenced/pacemaker-fenced.c | 2 +- daemons/pacemakerd/pcmkd_messages.c | 5 ++-- daemons/schedulerd/schedulerd_messages.c | 4 ++-- include/crm/common/xml_element_internal.h | 1 + lib/cib/cib_native.c | 2 +- lib/cib/cib_remote.c | 2 +- lib/cib/cib_utils.c | 14 ++++++------ lib/cluster/election.c | 5 ++-- lib/common/ipc_attrd.c | 12 +++++----- lib/common/ipc_client.c | 2 +- lib/common/ipc_server.c | 4 ++-- lib/common/patchset.c | 14 ++++++------ lib/common/xml_element.c | 24 ++++++++++++++++++- lib/fencing/st_actions.c | 6 ++--- lib/fencing/st_client.c | 18 +++++++-------- lib/lrmd/lrmd_client.c | 12 +++++----- lib/lrmd/proxy_common.c | 6 ++--- lib/pacemaker/pcmk_graph_producer.c | 8 +++---- lib/pacemaker/pcmk_sched_actions.c | 10 ++++---- lib/pacemaker/pcmk_sched_clone.c | 14 ++++++------ 46 files changed, 164 insertions(+), 137 deletions(-) diff --git a/daemons/attrd/attrd_attributes.c b/daemons/attrd/attrd_attributes.c index a808caeb8e7..1ee0397d8b4 100644 --- a/daemons/attrd/attrd_attributes.c +++ b/daemons/attrd/attrd_attributes.c @@ -153,13 +153,13 @@ attrd_add_value_xml(xmlNode *parent, const attribute_t *a, crm_xml_add(xml, PCMK__XA_ATTR_HOST_ID, attrd_get_node_xml_id(v->nodename)); crm_xml_add(xml, PCMK__XA_ATTR_VALUE, v->current); - crm_xml_add_int(xml, PCMK__XA_ATTR_DAMPENING, - pcmk__timeout_ms2s(a->timeout_ms)); - crm_xml_add_int(xml, PCMK__XA_ATTR_IS_PRIVATE, - pcmk_is_set(a->flags, attrd_attr_is_private)); - crm_xml_add_int(xml, PCMK__XA_ATTR_IS_REMOTE, - pcmk_is_set(v->flags, attrd_value_remote)); - crm_xml_add_int(xml, PCMK__XA_ATTRD_IS_FORCE_WRITE, force_write); + pcmk__xe_set_int(xml, PCMK__XA_ATTR_DAMPENING, + pcmk__timeout_ms2s(a->timeout_ms)); + pcmk__xe_set_int(xml, PCMK__XA_ATTR_IS_PRIVATE, + pcmk_is_set(a->flags, attrd_attr_is_private)); + pcmk__xe_set_int(xml, PCMK__XA_ATTR_IS_REMOTE, + pcmk_is_set(v->flags, attrd_value_remote)); + pcmk__xe_set_int(xml, PCMK__XA_ATTRD_IS_FORCE_WRITE, force_write); return xml; } diff --git a/daemons/attrd/attrd_corosync.c b/daemons/attrd/attrd_corosync.c index 960c736fdde..f9102abc8bf 100644 --- a/daemons/attrd/attrd_corosync.c +++ b/daemons/attrd/attrd_corosync.c @@ -31,7 +31,7 @@ attrd_confirmation(int callid) crm_xml_add(node, PCMK__XA_T, PCMK__VALUE_ATTRD); crm_xml_add(node, PCMK__XA_SRC, pcmk__cluster_local_node_name()); crm_xml_add(node, PCMK_XA_TASK, PCMK__ATTRD_CMD_CONFIRM); - crm_xml_add_int(node, PCMK__XA_CALL_ID, callid); + pcmk__xe_set_int(node, PCMK__XA_CALL_ID, callid); return node; } diff --git a/daemons/attrd/attrd_elections.c b/daemons/attrd/attrd_elections.c index 87b79dcf6b1..dc5aea8c8ff 100644 --- a/daemons/attrd/attrd_elections.c +++ b/daemons/attrd/attrd_elections.c @@ -172,5 +172,5 @@ attrd_remove_voter(const pcmk__node_status_t *peer) void attrd_xml_add_writer(xmlNode *xml) { - crm_xml_add_int(xml, PCMK__XA_ATTR_WRITER, election_state(attrd_cluster)); + pcmk__xe_set_int(xml, PCMK__XA_ATTR_WRITER, election_state(attrd_cluster)); } diff --git a/daemons/attrd/attrd_ipc.c b/daemons/attrd/attrd_ipc.c index f88abf90c44..75db2933aea 100644 --- a/daemons/attrd/attrd_ipc.c +++ b/daemons/attrd/attrd_ipc.c @@ -344,7 +344,7 @@ handle_value_expansion(const char **value, xmlNode *xml, const char *op, int_value = attrd_expand_value(*value, (v? v->current : NULL)); crm_info("Expanded %s=%s to %d", attr, *value, int_value); - crm_xml_add_int(xml, PCMK__XA_ATTR_VALUE, int_value); + pcmk__xe_set_int(xml, PCMK__XA_ATTR_VALUE, int_value); /* Replacing the value frees the previous memory, so re-query it */ *value = pcmk__xe_get(xml, PCMK__XA_ATTR_VALUE); diff --git a/daemons/attrd/attrd_messages.c b/daemons/attrd/attrd_messages.c index 602ca6f7a1a..23b8fc31778 100644 --- a/daemons/attrd/attrd_messages.c +++ b/daemons/attrd/attrd_messages.c @@ -314,7 +314,7 @@ attrd_broadcast_protocol(void) crm_xml_add(attrd_op, PCMK_XA_TASK, PCMK__ATTRD_CMD_UPDATE); crm_xml_add(attrd_op, PCMK__XA_ATTR_NAME, CRM_ATTR_PROTOCOL); crm_xml_add(attrd_op, PCMK__XA_ATTR_VALUE, ATTRD_PROTOCOL_VERSION); - crm_xml_add_int(attrd_op, PCMK__XA_ATTR_IS_PRIVATE, 1); + pcmk__xe_set_int(attrd_op, PCMK__XA_ATTR_IS_PRIVATE, 1); crm_xml_add(attrd_op, PCMK__XA_ATTR_HOST, attrd_cluster->priv->node_name); crm_xml_add(attrd_op, PCMK__XA_ATTR_HOST_ID, attrd_cluster->priv->node_xml_id); diff --git a/daemons/attrd/attrd_sync.c b/daemons/attrd/attrd_sync.c index d82c15350d5..cabbb79f5eb 100644 --- a/daemons/attrd/attrd_sync.c +++ b/daemons/attrd/attrd_sync.c @@ -170,7 +170,7 @@ attrd_add_client_to_waitlist(pcmk__request_t *request) /* And then add the key to the request XML so we can uniquely identify * it when it comes time to issue the ACK. */ - crm_xml_add_int(request->xml, PCMK__XA_CALL_ID, waitlist_client); + pcmk__xe_set_int(request->xml, PCMK__XA_CALL_ID, waitlist_client); } /*! diff --git a/daemons/based/based_callbacks.c b/daemons/based/based_callbacks.c index 6e0e1dd916a..e274b6089d1 100644 --- a/daemons/based/based_callbacks.c +++ b/daemons/based/based_callbacks.c @@ -146,8 +146,8 @@ create_cib_reply(const char *op, const char *call_id, const char *client_id, crm_xml_add(reply, PCMK__XA_CIB_OP, op); crm_xml_add(reply, PCMK__XA_CIB_CALLID, call_id); crm_xml_add(reply, PCMK__XA_CIB_CLIENTID, client_id); - crm_xml_add_int(reply, PCMK__XA_CIB_CALLOPT, call_options); - crm_xml_add_int(reply, PCMK__XA_CIB_RC, rc); + pcmk__xe_set_int(reply, PCMK__XA_CIB_CALLOPT, call_options); + pcmk__xe_set_int(reply, PCMK__XA_CIB_RC, rc); if (call_data != NULL) { xmlNode *wrapper = pcmk__xe_create(reply, PCMK__XE_CIB_CALLDATA); diff --git a/daemons/based/based_io.c b/daemons/based/based_io.c index 7f2a959b1da..26decf52eb8 100644 --- a/daemons/based/based_io.c +++ b/daemons/based/based_io.c @@ -246,19 +246,19 @@ readCibXmlFile(const char *dir, const char *file, gboolean discard_status) crm_warn("Defaulting missing " PCMK_XA_ADMIN_EPOCH " to 0, but " "cluster may get confused about which node's configuration " "is most recent"); - crm_xml_add_int(root, PCMK_XA_ADMIN_EPOCH, 0); + pcmk__xe_set_int(root, PCMK_XA_ADMIN_EPOCH, 0); } name = PCMK_XA_EPOCH; value = pcmk__xe_get(root, name); if (value == NULL) { - crm_xml_add_int(root, name, 0); + pcmk__xe_set_int(root, name, 0); } name = PCMK_XA_NUM_UPDATES; value = pcmk__xe_get(root, name); if (value == NULL) { - crm_xml_add_int(root, name, 0); + pcmk__xe_set_int(root, name, 0); } // Unset (DC should set appropriate value) diff --git a/daemons/based/based_messages.c b/daemons/based/based_messages.c index 85957b5ab6d..e6791d0e5b8 100644 --- a/daemons/based/based_messages.c +++ b/daemons/based/based_messages.c @@ -270,7 +270,7 @@ cib_process_upgrade_server(const char *op, int options, const char *section, xml crm_xml_add(up, PCMK__XA_CIB_CLIENTID, client_id); crm_xml_add(up, PCMK__XA_CIB_CALLOPT, call_opts); crm_xml_add(up, PCMK__XA_CIB_CALLID, call_id); - crm_xml_add_int(up, PCMK__XA_CIB_UPGRADE_RC, rc); + pcmk__xe_set_int(up, PCMK__XA_CIB_UPGRADE_RC, rc); if (!pcmk__cluster_send_message(origin, pcmk_ipc_based, up)) { crm_warn("Could not send CIB upgrade result to %s", host); } diff --git a/daemons/based/based_notify.c b/daemons/based/based_notify.c index 93248a08ccc..7a164b0945e 100644 --- a/daemons/based/based_notify.c +++ b/daemons/based/based_notify.c @@ -187,7 +187,7 @@ cib_diff_notify(const char *op, int result, const char *call_id, crm_xml_add(update_msg, PCMK__XA_CIB_CLIENTNAME, client_name); crm_xml_add(update_msg, PCMK__XA_CIB_CALLID, call_id); crm_xml_add(update_msg, PCMK__XA_SRC, origin); - crm_xml_add_int(update_msg, PCMK__XA_CIB_RC, result); + pcmk__xe_set_int(update_msg, PCMK__XA_CIB_RC, result); wrapper = pcmk__xe_create(update_msg, PCMK__XE_CIB_UPDATE_RESULT); pcmk__xml_copy(wrapper, diff); diff --git a/daemons/based/based_remote.c b/daemons/based/based_remote.c index 0747fd7b9aa..620a222ab10 100644 --- a/daemons/based/based_remote.c +++ b/daemons/based/based_remote.c @@ -399,7 +399,7 @@ cib_handle_remote_msg(pcmk__client_t *client, xmlNode *command) } if (pcmk__xe_get(command, PCMK__XA_CIB_CALLOPT) == NULL) { - crm_xml_add_int(command, PCMK__XA_CIB_CALLOPT, 0); + pcmk__xe_set_int(command, PCMK__XA_CIB_CALLOPT, 0); } crm_log_xml_trace(command, "Remote command: "); diff --git a/daemons/controld/controld_cib.c b/daemons/controld/controld_cib.c index 20b6d61328b..def5108ed0d 100644 --- a/daemons/controld/controld_cib.c +++ b/daemons/controld/controld_cib.c @@ -956,7 +956,7 @@ controld_delete_action_history(const lrmd_event_data_t *op) CRM_CHECK(op != NULL, return); xml_top = pcmk__xe_create(NULL, PCMK__XE_LRM_RSC_OP); - crm_xml_add_int(xml_top, PCMK__XA_CALL_ID, op->call_id); + pcmk__xe_set_int(xml_top, PCMK__XA_CALL_ID, op->call_id); crm_xml_add(xml_top, PCMK__XA_TRANSITION_KEY, op->user_data); if (op->interval_ms > 0) { diff --git a/daemons/controld/controld_execd_state.c b/daemons/controld/controld_execd_state.c index 78c0c4b5700..0393f038675 100644 --- a/daemons/controld/controld_execd_state.c +++ b/daemons/controld/controld_execd_state.c @@ -590,7 +590,7 @@ crmd_remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg) xmlNode *op_reply = pcmk__xe_create(NULL, PCMK__XE_ACK); crm_xml_add(op_reply, PCMK_XA_FUNCTION, __func__); - crm_xml_add_int(op_reply, PCMK__XA_LINE, __LINE__); + pcmk__xe_set_int(op_reply, PCMK__XA_LINE, __LINE__); pcmk__xe_get_int(msg, PCMK__XA_LRMD_IPC_MSG_ID, &msg_id); remote_proxy_relay_response(proxy, op_reply, msg_id); diff --git a/daemons/controld/controld_join_client.c b/daemons/controld/controld_join_client.c index 91f9b11113f..f7441442ae3 100644 --- a/daemons/controld/controld_join_client.c +++ b/daemons/controld/controld_join_client.c @@ -318,7 +318,7 @@ do_cl_join_finalize_respond(long long action, pcmk__get_node(0, controld_globals.dc_name, NULL, pcmk__node_search_cluster_member); - crm_xml_add_int(join_confirm, PCMK__XA_JOIN_ID, join_id); + pcmk__xe_set_int(join_confirm, PCMK__XA_JOIN_ID, join_id); crm_debug("Confirming join-%d: sending local operation history to %s", join_id, controld_globals.dc_name); diff --git a/daemons/controld/controld_join_dc.c b/daemons/controld/controld_join_dc.c index c1426321161..07c9b978fd9 100644 --- a/daemons/controld/controld_join_dc.c +++ b/daemons/controld/controld_join_dc.c @@ -234,7 +234,7 @@ create_dc_message(const char *join_op, const char *host_to) CRM_SYSTEM_CRMD, join_op, NULL); /* Identify which election this is a part of */ - crm_xml_add_int(msg, PCMK__XA_JOIN_ID, current_join_id); + pcmk__xe_set_int(msg, PCMK__XA_JOIN_ID, current_join_id); /* Add a field specifying whether the DC is shutting down. This keeps the * joining node from fencing the old DC if it becomes the new DC. diff --git a/daemons/controld/controld_membership.c b/daemons/controld/controld_membership.c index b17f781660f..4faf8497317 100644 --- a/daemons/controld/controld_membership.c +++ b/daemons/controld/controld_membership.c @@ -429,7 +429,7 @@ crm_update_quorum(gboolean quorum, gboolean force_update) xmlNode *update = NULL; update = pcmk__xe_create(NULL, PCMK_XE_CIB); - crm_xml_add_int(update, PCMK_XA_HAVE_QUORUM, quorum); + pcmk__xe_set_int(update, PCMK_XA_HAVE_QUORUM, quorum); crm_xml_add(update, PCMK_XA_DC_UUID, controld_globals.our_uuid); crm_debug("Updating quorum status to %s", pcmk__btoa(quorum)); diff --git a/daemons/controld/controld_schedulerd.c b/daemons/controld/controld_schedulerd.c index 88f7ac14899..b575bf1db3f 100644 --- a/daemons/controld/controld_schedulerd.c +++ b/daemons/controld/controld_schedulerd.c @@ -497,7 +497,7 @@ do_pe_invoke_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, void if (pcmk_is_set(controld_globals.flags, controld_ever_had_quorum) && !pcmk__cluster_has_quorum()) { - crm_xml_add_int(output, PCMK_XA_NO_QUORUM_PANIC, 1); + pcmk__xe_set_int(output, PCMK_XA_NO_QUORUM_PANIC, 1); } rc = pcmk_schedulerd_api_graph(schedulerd_api, output, &ref); diff --git a/daemons/controld/controld_throttle.c b/daemons/controld/controld_throttle.c index 8ef18932f9d..e042f4cf8eb 100644 --- a/daemons/controld/controld_throttle.c +++ b/daemons/controld/controld_throttle.c @@ -190,8 +190,8 @@ throttle_send_command(enum throttle_state_e mode) xml = pcmk__new_request(pcmk_ipc_controld, CRM_SYSTEM_CRMD, NULL, CRM_SYSTEM_CRMD, CRM_OP_THROTTLE, NULL); - crm_xml_add_int(xml, PCMK__XA_CRM_LIMIT_MODE, mode); - crm_xml_add_int(xml, PCMK__XA_CRM_LIMIT_MAX, throttle_job_max); + pcmk__xe_set_int(xml, PCMK__XA_CRM_LIMIT_MODE, mode); + pcmk__xe_set_int(xml, PCMK__XA_CRM_LIMIT_MAX, throttle_job_max); pcmk__cluster_send_message(NULL, pcmk_ipc_controld, xml); pcmk__xml_free(xml); diff --git a/daemons/execd/execd_commands.c b/daemons/execd/execd_commands.c index 3c738289aa1..f5cccbb7f14 100644 --- a/daemons/execd/execd_commands.c +++ b/daemons/execd/execd_commands.c @@ -551,8 +551,8 @@ create_lrmd_reply(const char *origin, int rc, int call_id) xmlNode *reply = pcmk__xe_create(NULL, PCMK__XE_LRMD_REPLY); crm_xml_add(reply, PCMK__XA_LRMD_ORIGIN, origin); - crm_xml_add_int(reply, PCMK__XA_LRMD_RC, rc); - crm_xml_add_int(reply, PCMK__XA_LRMD_CALLID, call_id); + pcmk__xe_set_int(reply, PCMK__XA_LRMD_RC, rc); + pcmk__xe_set_int(reply, PCMK__XA_LRMD_CALLID, call_id); return reply; } @@ -630,20 +630,20 @@ send_cmd_complete_notify(lrmd_cmd_t * cmd) notify = pcmk__xe_create(NULL, PCMK__XE_LRMD_NOTIFY); crm_xml_add(notify, PCMK__XA_LRMD_ORIGIN, __func__); - crm_xml_add_int(notify, PCMK__XA_LRMD_TIMEOUT, cmd->timeout); + pcmk__xe_set_int(notify, PCMK__XA_LRMD_TIMEOUT, cmd->timeout); pcmk__xe_set_guint(notify, PCMK__XA_LRMD_RSC_INTERVAL, cmd->interval_ms); - crm_xml_add_int(notify, PCMK__XA_LRMD_RSC_START_DELAY, cmd->start_delay); - crm_xml_add_int(notify, PCMK__XA_LRMD_EXEC_RC, cmd->result.exit_status); - crm_xml_add_int(notify, PCMK__XA_LRMD_EXEC_OP_STATUS, - cmd->result.execution_status); - crm_xml_add_int(notify, PCMK__XA_LRMD_CALLID, cmd->call_id); - crm_xml_add_int(notify, PCMK__XA_LRMD_RSC_DELETED, cmd->rsc_deleted); + pcmk__xe_set_int(notify, PCMK__XA_LRMD_RSC_START_DELAY, cmd->start_delay); + pcmk__xe_set_int(notify, PCMK__XA_LRMD_EXEC_RC, cmd->result.exit_status); + pcmk__xe_set_int(notify, PCMK__XA_LRMD_EXEC_OP_STATUS, + cmd->result.execution_status); + pcmk__xe_set_int(notify, PCMK__XA_LRMD_CALLID, cmd->call_id); + pcmk__xe_set_int(notify, PCMK__XA_LRMD_RSC_DELETED, cmd->rsc_deleted); pcmk__xe_set_time(notify, PCMK__XA_LRMD_RUN_TIME, cmd->epoch_last_run); pcmk__xe_set_time(notify, PCMK__XA_LRMD_RCCHANGE_TIME, cmd->epoch_rcchange); #ifdef PCMK__TIME_USE_CGT - crm_xml_add_int(notify, PCMK__XA_LRMD_EXEC_TIME, exec_time); - crm_xml_add_int(notify, PCMK__XA_LRMD_QUEUE_TIME, queue_time); + pcmk__xe_set_int(notify, PCMK__XA_LRMD_EXEC_TIME, exec_time); + pcmk__xe_set_int(notify, PCMK__XA_LRMD_QUEUE_TIME, queue_time); #endif crm_xml_add(notify, PCMK__XA_LRMD_OP, LRMD_OP_RSC_EXEC); @@ -708,8 +708,8 @@ send_generic_notify(int rc, xmlNode * request) notify = pcmk__xe_create(NULL, PCMK__XE_LRMD_NOTIFY); crm_xml_add(notify, PCMK__XA_LRMD_ORIGIN, __func__); - crm_xml_add_int(notify, PCMK__XA_LRMD_RC, rc); - crm_xml_add_int(notify, PCMK__XA_LRMD_CALLID, call_id); + pcmk__xe_set_int(notify, PCMK__XA_LRMD_RC, rc); + pcmk__xe_set_int(notify, PCMK__XA_LRMD_CALLID, call_id); crm_xml_add(notify, PCMK__XA_LRMD_OP, op); crm_xml_add(notify, PCMK__XA_LRMD_RSC_ID, rsc_id); @@ -1811,7 +1811,7 @@ add_recurring_op_xml(xmlNode *reply, lrmd_rsc_t *rsc) pcmk__s(cmd->real_action, cmd->action)); pcmk__xe_set_guint(op_xml, PCMK__XA_LRMD_RSC_INTERVAL, cmd->interval_ms); - crm_xml_add_int(op_xml, PCMK__XA_LRMD_TIMEOUT, cmd->timeout_orig); + pcmk__xe_set_int(op_xml, PCMK__XA_LRMD_TIMEOUT, cmd->timeout_orig); } } diff --git a/daemons/execd/pacemaker-execd.c b/daemons/execd/pacemaker-execd.c index 4b05d766c45..26c2d380d2d 100644 --- a/daemons/execd/pacemaker-execd.c +++ b/daemons/execd/pacemaker-execd.c @@ -160,7 +160,7 @@ lrmd_ipc_dispatch(qb_ipcs_connection_t * c, void *data, size_t size) crm_xml_add(request, PCMK__XA_LRMD_CLIENTID, client->id); crm_xml_add(request, PCMK__XA_LRMD_CLIENTNAME, client->name); - crm_xml_add_int(request, PCMK__XA_LRMD_CALLID, lrmd_call_id); + pcmk__xe_set_int(request, PCMK__XA_LRMD_CALLID, lrmd_call_id); process_lrmd_message(client, id, request); diff --git a/daemons/execd/remoted_proxy.c b/daemons/execd/remoted_proxy.c index 1f4aa28531a..0abdf785243 100644 --- a/daemons/execd/remoted_proxy.c +++ b/daemons/execd/remoted_proxy.c @@ -275,8 +275,10 @@ ipc_proxy_dispatch(qb_ipcs_connection_t * c, void *data, size_t size) crm_xml_add(msg, PCMK__XA_LRMD_IPC_SESSION, client->id); crm_xml_add(msg, PCMK__XA_LRMD_IPC_CLIENT, pcmk__client_name(client)); crm_xml_add(msg, PCMK__XA_LRMD_IPC_USER, client->user); - crm_xml_add_int(msg, PCMK__XA_LRMD_IPC_MSG_ID, id); - crm_xml_add_int(msg, PCMK__XA_LRMD_IPC_MSG_FLAGS, flags); + pcmk__xe_set_int(msg, PCMK__XA_LRMD_IPC_MSG_ID, id); + + // @TODO Use different setter for uint32_t + pcmk__xe_set_int(msg, PCMK__XA_LRMD_IPC_MSG_FLAGS, flags); wrapper = pcmk__xe_create(msg, PCMK__XE_LRMD_IPC_MSG); diff --git a/daemons/execd/remoted_tls.c b/daemons/execd/remoted_tls.c index c7c04d283b4..26529e69816 100644 --- a/daemons/execd/remoted_tls.c +++ b/daemons/execd/remoted_tls.c @@ -142,7 +142,7 @@ lrmd_remote_client_msg(gpointer data) crm_xml_add(request, PCMK__XA_LRMD_CLIENTID, client->id); crm_xml_add(request, PCMK__XA_LRMD_CLIENTNAME, client->name); - crm_xml_add_int(request, PCMK__XA_LRMD_CALLID, lrmd_call_id); + pcmk__xe_set_int(request, PCMK__XA_LRMD_CALLID, lrmd_call_id); process_lrmd_message(client, id, request); pcmk__xml_free(request); diff --git a/daemons/fenced/fenced_cib.c b/daemons/fenced/fenced_cib.c index 59e68a722e3..9e7f7cc7ae9 100644 --- a/daemons/fenced/fenced_cib.c +++ b/daemons/fenced/fenced_cib.c @@ -89,7 +89,7 @@ topology_remove_helper(const char *node, int level) xmlNode *data = pcmk__xe_create(NULL, PCMK_XE_FENCING_LEVEL); crm_xml_add(data, PCMK__XA_ST_ORIGIN, __func__); - crm_xml_add_int(data, PCMK_XA_INDEX, level); + pcmk__xe_set_int(data, PCMK_XA_INDEX, level); crm_xml_add(data, PCMK_XA_TARGET, node); fenced_unregister_level(data, &desc, &result); diff --git a/daemons/fenced/fenced_commands.c b/daemons/fenced/fenced_commands.c index f2f519e8682..aee42dee9cb 100644 --- a/daemons/fenced/fenced_commands.c +++ b/daemons/fenced/fenced_commands.c @@ -2275,7 +2275,7 @@ add_action_specific_attributes(xmlNode *xml, const char *action, // PCMK__XA_ST_REQUIRED is currently used only for unfencing if (is_action_required(action, device)) { crm_trace("Action '%s' is required using %s", action, device->id); - crm_xml_add_int(xml, PCMK__XA_ST_REQUIRED, 1); + pcmk__xe_set_int(xml, PCMK__XA_ST_REQUIRED, 1); } // pcmk__timeout if configured @@ -2283,20 +2283,20 @@ add_action_specific_attributes(xmlNode *xml, const char *action, if (action_specific_timeout) { crm_trace("Action '%s' has timeout %ds using %s", action, action_specific_timeout, device->id); - crm_xml_add_int(xml, PCMK__XA_ST_ACTION_TIMEOUT, - action_specific_timeout); + pcmk__xe_set_int(xml, PCMK__XA_ST_ACTION_TIMEOUT, + action_specific_timeout); } delay_max = get_action_delay_max(device, action); if (delay_max > 0) { crm_trace("Action '%s' has maximum random delay %ds using %s", action, delay_max, device->id); - crm_xml_add_int(xml, PCMK__XA_ST_DELAY_MAX, delay_max); + pcmk__xe_set_int(xml, PCMK__XA_ST_DELAY_MAX, delay_max); } delay_base = get_action_delay_base(device, action, target); if (delay_base > 0) { - crm_xml_add_int(xml, PCMK__XA_ST_DELAY_BASE, delay_base); + pcmk__xe_set_int(xml, PCMK__XA_ST_DELAY_BASE, delay_base); } if ((delay_max > 0) && (delay_base == 0)) { @@ -2425,9 +2425,9 @@ stonith_query_capable_device_cb(GList * devices, void *user_data) crm_xml_add(dev, PCMK_XA_AGENT, device->agent); // Has had successful monitor, list, or status on this node - crm_xml_add_int(dev, PCMK__XA_ST_MONITOR_VERIFIED, device->verified); + pcmk__xe_set_int(dev, PCMK__XA_ST_MONITOR_VERIFIED, device->verified); - crm_xml_add_int(dev, PCMK__XA_ST_DEVICE_SUPPORT_FLAGS, device->flags); + pcmk__xe_set_int(dev, PCMK__XA_ST_DEVICE_SUPPORT_FLAGS, device->flags); /* If the originating fencer wants to reboot the node, and we have a * capable device that doesn't support "reboot", remap to "off" instead. @@ -2471,7 +2471,7 @@ stonith_query_capable_device_cb(GList * devices, void *user_data) } } - crm_xml_add_int(list, PCMK__XA_ST_AVAILABLE_DEVICES, available_devices); + pcmk__xe_set_int(list, PCMK__XA_ST_AVAILABLE_DEVICES, available_devices); if (query->target) { crm_debug("Found %d matching device%s for target '%s'", available_devices, pcmk__plural_s(available_devices), @@ -2989,8 +2989,8 @@ construct_async_reply(const async_command_t *cmd, crm_xml_add(reply, PCMK__XA_ST_TARGET, cmd->target); crm_xml_add(reply, PCMK__XA_ST_DEVICE_ACTION, cmd->op); crm_xml_add(reply, PCMK__XA_ST_ORIGIN, cmd->origin); - crm_xml_add_int(reply, PCMK__XA_ST_CALLID, cmd->id); - crm_xml_add_int(reply, PCMK__XA_ST_CALLOPT, cmd->options); + pcmk__xe_set_int(reply, PCMK__XA_ST_CALLID, cmd->id); + pcmk__xe_set_int(reply, PCMK__XA_ST_CALLOPT, cmd->options); stonith__xe_set_result(reply, result); return reply; diff --git a/daemons/fenced/fenced_history.c b/daemons/fenced/fenced_history.c index 722c9f4407e..576e4355104 100644 --- a/daemons/fenced/fenced_history.c +++ b/daemons/fenced/fenced_history.c @@ -50,7 +50,7 @@ stonith_send_broadcast_history(xmlNode *history, crm_xml_add(bcast, PCMK__XA_T, PCMK__VALUE_STONITH_NG); crm_xml_add(bcast, PCMK__XA_SUBT, PCMK__VALUE_BROADCAST); crm_xml_add(bcast, PCMK__XA_ST_OP, STONITH_OP_FENCE_HISTORY); - crm_xml_add_int(bcast, PCMK__XA_ST_CALLOPT, callopts); + pcmk__xe_set_int(bcast, PCMK__XA_ST_CALLOPT, callopts); pcmk__xml_copy(call_data, history); if (target != NULL) { @@ -386,7 +386,7 @@ stonith_local_history_diff_and_merge(GHashTable *remote_history, pcmk__xe_set_time(entry, PCMK__XA_ST_DATE, op->completed); pcmk__xe_set_ll(entry, PCMK__XA_ST_DATE_NSEC, op->completed_nsec); - crm_xml_add_int(entry, PCMK__XA_ST_STATE, op->state); + pcmk__xe_set_int(entry, PCMK__XA_ST_STATE, op->state); stonith__xe_set_result(entry, &op->result); } } diff --git a/daemons/fenced/fenced_remote.c b/daemons/fenced/fenced_remote.c index 336e5e79681..28ea84dc93e 100644 --- a/daemons/fenced/fenced_remote.c +++ b/daemons/fenced/fenced_remote.c @@ -382,7 +382,7 @@ fencing_result2xml(xmlNode *parent, const remote_fencing_op_t *op) { xmlNode *notify_data = pcmk__xe_create(parent, PCMK__XE_ST_NOTIFY_FENCE); - crm_xml_add_int(notify_data, PCMK_XA_STATE, op->state); + pcmk__xe_set_int(notify_data, PCMK_XA_STATE, op->state); crm_xml_add(notify_data, PCMK__XA_ST_TARGET, op->target); crm_xml_add(notify_data, PCMK__XA_ST_DEVICE_ACTION, op->action); crm_xml_add(notify_data, PCMK__XA_ST_DELEGATE, op->delegate); @@ -414,7 +414,7 @@ fenced_broadcast_op_result(const remote_fencing_op_t *op, bool op_merged) crm_xml_add(bcast, PCMK__XA_T, PCMK__VALUE_ST_NOTIFY); crm_xml_add(bcast, PCMK__XA_SUBT, PCMK__VALUE_BROADCAST); crm_xml_add(bcast, PCMK__XA_ST_OP, STONITH_OP_NOTIFY); - crm_xml_add_int(bcast, PCMK_XA_COUNT, count); + pcmk__xe_set_int(bcast, PCMK_XA_COUNT, count); if (op_merged) { pcmk__xe_set_bool_attr(bcast, PCMK__XA_ST_OP_MERGED, true); @@ -450,7 +450,7 @@ handle_local_reply_and_notify(remote_fencing_op_t *op, xmlNode *data) } /* Do notification with a clean data object */ - crm_xml_add_int(data, PCMK_XA_STATE, op->state); + pcmk__xe_set_int(data, PCMK_XA_STATE, op->state); crm_xml_add(data, PCMK__XA_ST_TARGET, op->target); crm_xml_add(data, PCMK__XA_ST_OP, op->action); @@ -1351,7 +1351,7 @@ initiate_remote_stonith_op(const pcmk__client_t *client, xmlNode *request, crm_xml_add(query, PCMK__XA_ST_ORIGIN, op->originator); crm_xml_add(query, PCMK__XA_ST_CLIENTID, op->client_id); crm_xml_add(query, PCMK__XA_ST_CLIENTNAME, op->client_name); - crm_xml_add_int(query, PCMK__XA_ST_TIMEOUT, op->base_timeout); + pcmk__xe_set_int(query, PCMK__XA_ST_TIMEOUT, op->base_timeout); /* In case of RELAY operation, RELAY information is added to the query to delete the original operation of RELAY. */ operation = pcmk__xe_get(request, PCMK__XA_ST_OP); @@ -1747,7 +1747,7 @@ report_timeout_period(remote_fencing_op_t * op, int op_timeout) crm_xml_add(update, PCMK__XA_ST_REMOTE_OP, op->id); crm_xml_add(update, PCMK__XA_ST_CLIENTID, client_id); crm_xml_add(update, PCMK__XA_ST_CALLID, call_id); - crm_xml_add_int(update, PCMK__XA_ST_TIMEOUT, op_timeout); + pcmk__xe_set_int(update, PCMK__XA_ST_TIMEOUT, op_timeout); pcmk__cluster_send_message(pcmk__get_node(0, client_node, NULL, pcmk__node_search_cluster_member), @@ -1952,9 +1952,9 @@ request_peer_fencing(remote_fencing_op_t *op, peer_device_info_t *peer) crm_xml_add(remote_op, PCMK__XA_ST_ORIGIN, op->originator); crm_xml_add(remote_op, PCMK__XA_ST_CLIENTID, op->client_id); crm_xml_add(remote_op, PCMK__XA_ST_CLIENTNAME, op->client_name); - crm_xml_add_int(remote_op, PCMK__XA_ST_TIMEOUT, timeout); - crm_xml_add_int(remote_op, PCMK__XA_ST_CALLOPT, op->call_options); - crm_xml_add_int(remote_op, PCMK__XA_ST_DELAY, op->client_delay); + pcmk__xe_set_int(remote_op, PCMK__XA_ST_TIMEOUT, timeout); + pcmk__xe_set_int(remote_op, PCMK__XA_ST_CALLOPT, op->call_options); + pcmk__xe_set_int(remote_op, PCMK__XA_ST_DELAY, op->client_delay); if (device) { timeout_one += TIMEOUT_MULTIPLY_FACTOR * diff --git a/daemons/fenced/pacemaker-fenced.c b/daemons/fenced/pacemaker-fenced.c index 0aa2439fc81..adb0704f64e 100644 --- a/daemons/fenced/pacemaker-fenced.c +++ b/daemons/fenced/pacemaker-fenced.c @@ -328,7 +328,7 @@ do_stonith_async_timeout_update(const char *client_id, const char *call_id, int notify_data = pcmk__xe_create(NULL, PCMK__XE_ST_ASYNC_TIMEOUT_VALUE); crm_xml_add(notify_data, PCMK__XA_T, PCMK__VALUE_ST_ASYNC_TIMEOUT_VALUE); crm_xml_add(notify_data, PCMK__XA_ST_CALLID, call_id); - crm_xml_add_int(notify_data, PCMK__XA_ST_TIMEOUT, timeout); + pcmk__xe_set_int(notify_data, PCMK__XA_ST_TIMEOUT, timeout); crm_trace("timeout update is %d for client %s and call id %s", timeout, client_id, call_id); diff --git a/daemons/pacemakerd/pcmkd_messages.c b/daemons/pacemakerd/pcmkd_messages.c index b2cbec3f7f1..bc159140450 100644 --- a/daemons/pacemakerd/pcmkd_messages.c +++ b/daemons/pacemakerd/pcmkd_messages.c @@ -115,11 +115,12 @@ handle_shutdown_request(pcmk__request_t *request) crm_notice("Shutting down in response to IPC request %s from %s", pcmk__xe_get(msg, PCMK_XA_REFERENCE), pcmk__xe_get(msg, PCMK_XA_ORIGIN)); - crm_xml_add_int(shutdown, PCMK__XA_OP_STATUS, CRM_EX_OK); + pcmk__xe_set_int(shutdown, PCMK__XA_OP_STATUS, CRM_EX_OK); } else { crm_warn("Ignoring shutdown request from unprivileged client %s", pcmk__client_name(request->ipc_client)); - crm_xml_add_int(shutdown, PCMK__XA_OP_STATUS, CRM_EX_INSUFFICIENT_PRIV); + pcmk__xe_set_int(shutdown, PCMK__XA_OP_STATUS, + CRM_EX_INSUFFICIENT_PRIV); } reply = pcmk__new_reply(msg, shutdown); diff --git a/daemons/schedulerd/schedulerd_messages.c b/daemons/schedulerd/schedulerd_messages.c index 9d63edbff5e..50a2a80c75e 100644 --- a/daemons/schedulerd/schedulerd_messages.c +++ b/daemons/schedulerd/schedulerd_messages.c @@ -76,8 +76,8 @@ handle_pecalc_request(pcmk__request_t *request) if (pcmk__update_configured_schema(&converted, true) != pcmk_rc_ok) { scheduler->priv->graph = pcmk__xe_create(NULL, PCMK__XE_TRANSITION_GRAPH); - crm_xml_add_int(scheduler->priv->graph, "transition_id", 0); - crm_xml_add_int(scheduler->priv->graph, PCMK_OPT_CLUSTER_DELAY, 0); + pcmk__xe_set_int(scheduler->priv->graph, "transition_id", 0); + pcmk__xe_set_int(scheduler->priv->graph, PCMK_OPT_CLUSTER_DELAY, 0); process = false; free(digest); diff --git a/include/crm/common/xml_element_internal.h b/include/crm/common/xml_element_internal.h index b9ba2b1323c..be5517864e4 100644 --- a/include/crm/common/xml_element_internal.h +++ b/include/crm/common/xml_element_internal.h @@ -149,6 +149,7 @@ int pcmk__xe_get_guint(const xmlNode *xml, const char *attr, guint *dest); void pcmk__xe_set_guint(xmlNode *xml, const char *attr, guint value); int pcmk__xe_get_int(const xmlNode *xml, const char *name, int *dest); +void pcmk__xe_set_int(xmlNode *xml, const char *attr, int value); int pcmk__xe_get_ll(const xmlNode *xml, const char *name, long long *dest); int pcmk__xe_set_ll(xmlNode *xml, const char *attr, long long value); diff --git a/lib/cib/cib_native.c b/lib/cib/cib_native.c index 3df5e726491..1b78f11400a 100644 --- a/lib/cib/cib_native.c +++ b/lib/cib/cib_native.c @@ -383,7 +383,7 @@ cib_native_register_notification(cib_t *cib, const char *callback, int enabled) if (cib->state != cib_disconnected) { crm_xml_add(notify_msg, PCMK__XA_CIB_OP, PCMK__VALUE_CIB_NOTIFY); crm_xml_add(notify_msg, PCMK__XA_CIB_NOTIFY_TYPE, callback); - crm_xml_add_int(notify_msg, PCMK__XA_CIB_NOTIFY_ACTIVATE, enabled); + pcmk__xe_set_int(notify_msg, PCMK__XA_CIB_NOTIFY_ACTIVATE, enabled); rc = crm_ipc_send(native->ipc, notify_msg, crm_ipc_client_response, 1000 * cib->call_timeout, NULL); if (rc <= 0) { diff --git a/lib/cib/cib_remote.c b/lib/cib/cib_remote.c index 5d547e962d1..ea838595a08 100644 --- a/lib/cib/cib_remote.c +++ b/lib/cib/cib_remote.c @@ -558,7 +558,7 @@ cib_remote_register_notification(cib_t * cib, const char *callback, int enabled) crm_xml_add(notify_msg, PCMK__XA_CIB_OP, PCMK__VALUE_CIB_NOTIFY); crm_xml_add(notify_msg, PCMK__XA_CIB_NOTIFY_TYPE, callback); - crm_xml_add_int(notify_msg, PCMK__XA_CIB_NOTIFY_ACTIVATE, enabled); + pcmk__xe_set_int(notify_msg, PCMK__XA_CIB_NOTIFY_ACTIVATE, enabled); pcmk__remote_send_xml(&private->callback, notify_msg); pcmk__xml_free(notify_msg); return pcmk_ok; diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c index b3c29eaa9e0..f2ae4c45ca2 100644 --- a/lib/cib/cib_utils.c +++ b/lib/cib/cib_utils.c @@ -121,9 +121,9 @@ createEmptyCib(int cib_epoch) crm_xml_add(cib_root, PCMK_XA_CRM_FEATURE_SET, CRM_FEATURE_SET); crm_xml_add(cib_root, PCMK_XA_VALIDATE_WITH, pcmk__highest_schema_name()); - crm_xml_add_int(cib_root, PCMK_XA_EPOCH, cib_epoch); - crm_xml_add_int(cib_root, PCMK_XA_NUM_UPDATES, 0); - crm_xml_add_int(cib_root, PCMK_XA_ADMIN_EPOCH, 0); + pcmk__xe_set_int(cib_root, PCMK_XA_EPOCH, cib_epoch); + pcmk__xe_set_int(cib_root, PCMK_XA_NUM_UPDATES, 0); + pcmk__xe_set_int(cib_root, PCMK_XA_ADMIN_EPOCH, 0); config = pcmk__xe_create(cib_root, PCMK_XE_CONFIGURATION); pcmk__xe_create(cib_root, PCMK_XE_STATUS); @@ -142,8 +142,8 @@ createEmptyCib(int cib_epoch) crm_xml_add(meta, PCMK_XA_ID, "build-resource-defaults"); crm_xml_add(nvpair, PCMK_XA_ID, "build-" PCMK_META_RESOURCE_STICKINESS); crm_xml_add(nvpair, PCMK_XA_NAME, PCMK_META_RESOURCE_STICKINESS); - crm_xml_add_int(nvpair, PCMK_XA_VALUE, - PCMK__RESOURCE_STICKINESS_DEFAULT); + pcmk__xe_set_int(nvpair, PCMK_XA_VALUE, + PCMK__RESOURCE_STICKINESS_DEFAULT); } #endif return cib_root; @@ -576,10 +576,10 @@ cib__create_op(cib_t *cib, const char *op, const char *host, crm_xml_add(*op_msg, PCMK__XA_CIB_SECTION, section); crm_xml_add(*op_msg, PCMK__XA_CIB_USER, user_name); crm_xml_add(*op_msg, PCMK__XA_CIB_CLIENTNAME, client_name); - crm_xml_add_int(*op_msg, PCMK__XA_CIB_CALLID, cib->call_id); + pcmk__xe_set_int(*op_msg, PCMK__XA_CIB_CALLID, cib->call_id); crm_trace("Sending call options: %.8lx, %d", (long)call_options, call_options); - crm_xml_add_int(*op_msg, PCMK__XA_CIB_CALLOPT, call_options); + pcmk__xe_set_int(*op_msg, PCMK__XA_CIB_CALLOPT, call_options); if (data != NULL) { xmlNode *wrapper = pcmk__xe_create(*op_msg, PCMK__XE_CIB_CALLDATA); diff --git a/lib/cluster/election.c b/lib/cluster/election.c index 70b379335ee..4ec64cb95b3 100644 --- a/lib/cluster/election.c +++ b/lib/cluster/election.c @@ -309,7 +309,8 @@ election_vote(pcmk_cluster_t *cluster) cluster->priv->election->count++; crm_xml_add(vote, PCMK__XA_ELECTION_OWNER, pcmk__cluster_get_xml_id(our_node)); - crm_xml_add_int(vote, PCMK__XA_ELECTION_ID, cluster->priv->election->count); + pcmk__xe_set_int(vote, PCMK__XA_ELECTION_ID, + cluster->priv->election->count); // Warning: PCMK__XA_ELECTION_AGE_NANO_SEC value is actually microseconds get_uptime(&age); @@ -501,7 +502,7 @@ send_no_vote(pcmk_cluster_t *cluster, pcmk__node_status_t *peer, novote = pcmk__new_request(cluster->priv->server, message_type, vote->from, message_type, CRM_OP_NOVOTE, NULL); crm_xml_add(novote, PCMK__XA_ELECTION_OWNER, vote->election_owner); - crm_xml_add_int(novote, PCMK__XA_ELECTION_ID, vote->election_id); + pcmk__xe_set_int(novote, PCMK__XA_ELECTION_ID, vote->election_id); pcmk__cluster_send_message(peer, cluster->priv->server, novote); pcmk__xml_free(novote); diff --git a/lib/common/ipc_attrd.c b/lib/common/ipc_attrd.c index c3d3da0fe65..4fdbae01d5d 100644 --- a/lib/common/ipc_attrd.c +++ b/lib/common/ipc_attrd.c @@ -207,8 +207,8 @@ pcmk__attrd_api_clear_failures(pcmk_ipc_api_t *api, const char *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); - crm_xml_add_int(request, PCMK__XA_ATTR_IS_REMOTE, - pcmk_is_set(options, pcmk__node_attr_remote)); + pcmk__xe_set_int(request, PCMK__XA_ATTR_IS_REMOTE, + pcmk_is_set(options, pcmk__node_attr_remote)); rc = connect_and_send_attrd_request(api, request); @@ -365,10 +365,10 @@ populate_update_op(xmlNode *op, const char *node, const char *name, const char * crm_xml_add(op, PCMK__XA_ATTR_DAMPENING, dampen); 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)); - crm_xml_add_int(op, PCMK__XA_ATTR_IS_PRIVATE, - pcmk_is_set(options, pcmk__node_attr_private)); + pcmk__xe_set_int(op, PCMK__XA_ATTR_IS_REMOTE, + pcmk_is_set(options, pcmk__node_attr_remote)); + pcmk__xe_set_int(op, PCMK__XA_ATTR_IS_PRIVATE, + pcmk_is_set(options, pcmk__node_attr_private)); if (pcmk_is_set(options, pcmk__node_attr_sync_local)) { crm_xml_add(op, PCMK__XA_ATTR_SYNC_POINT, PCMK__VALUE_LOCAL); diff --git a/lib/common/ipc_client.c b/lib/common/ipc_client.c index 6cc04543e11..76dedd44e5c 100644 --- a/lib/common/ipc_client.c +++ b/lib/common/ipc_client.c @@ -756,7 +756,7 @@ create_purge_node_request(const pcmk_ipc_api_t *api, const char *node_name, pcmk__xe_set_bool_attr(request, PCMK__XA_REAP, true); crm_xml_add(request, PCMK__XA_ATTR_HOST, node_name); if (nodeid > 0) { - crm_xml_add_int(request, PCMK__XA_ATTR_HOST_ID, nodeid); + pcmk__xe_set_int(request, PCMK__XA_ATTR_HOST_ID, nodeid); } break; diff --git a/lib/common/ipc_server.c b/lib/common/ipc_server.c index 2a2d7910537..69b8b9cb698 100644 --- a/lib/common/ipc_server.c +++ b/lib/common/ipc_server.c @@ -808,8 +808,8 @@ pcmk__ipc_create_ack_as(const char *function, int line, uint32_t flags, if (pcmk_is_set(flags, crm_ipc_client_response)) { ack = pcmk__xe_create(NULL, tag); crm_xml_add(ack, PCMK_XA_FUNCTION, function); - crm_xml_add_int(ack, PCMK__XA_LINE, line); - crm_xml_add_int(ack, PCMK_XA_STATUS, (int) status); + pcmk__xe_set_int(ack, PCMK__XA_LINE, line); + pcmk__xe_set_int(ack, PCMK_XA_STATUS, (int) status); crm_xml_add(ack, PCMK__XA_IPC_PROTO_VERSION, ver); } return ack; diff --git a/lib/common/patchset.c b/lib/common/patchset.c index 191dbbd257c..e170f4f1661 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -63,7 +63,7 @@ add_xml_changes_to_patchset(xmlNode *xml, xmlNode *patchset) crm_xml_add(change, PCMK_XA_OPERATION, PCMK_VALUE_CREATE); crm_xml_add(change, PCMK_XA_PATH, (const char *) xpath->str); - crm_xml_add_int(change, PCMK_XE_POSITION, position); + pcmk__xe_set_int(change, PCMK_XE_POSITION, position); pcmk__xml_copy(change, xml); g_string_free(xpath, TRUE); } @@ -144,8 +144,8 @@ add_xml_changes_to_patchset(xmlNode *xml, xmlNode *patchset) crm_xml_add(change, PCMK_XA_OPERATION, PCMK_VALUE_MOVE); crm_xml_add(change, PCMK_XA_PATH, (const char *) xpath->str); - crm_xml_add_int(change, PCMK_XE_POSITION, - pcmk__xml_position(xml, pcmk__xf_deleted)); + pcmk__xe_set_int(change, PCMK_XE_POSITION, + pcmk__xml_position(xml, pcmk__xf_deleted)); g_string_free(xpath, TRUE); } } @@ -202,7 +202,7 @@ xml_create_patchset_v2(xmlNode *source, xmlNode *target) docpriv = target->doc->_private; patchset = pcmk__xe_create(NULL, PCMK_XE_DIFF); - crm_xml_add_int(patchset, PCMK_XA_FORMAT, 2); + pcmk__xe_set_int(patchset, PCMK_XA_FORMAT, 2); version = pcmk__xe_create(patchset, PCMK_XE_VERSION); @@ -233,7 +233,7 @@ xml_create_patchset_v2(xmlNode *source, xmlNode *target) crm_xml_add(change, PCMK_XA_OPERATION, PCMK_VALUE_DELETE); crm_xml_add(change, PCMK_XA_PATH, deleted_obj->path); if (deleted_obj->position >= 0) { - crm_xml_add_int(change, PCMK_XE_POSITION, deleted_obj->position); + pcmk__xe_set_int(change, PCMK_XE_POSITION, deleted_obj->position); } } @@ -275,11 +275,11 @@ xml_create_patchset(int format, xmlNode *source, xmlNode *target, crm_xml_add(target, PCMK_XA_NUM_UPDATES, "0"); pcmk__xe_get_int(target, PCMK_XA_EPOCH, &counter); - crm_xml_add_int(target, PCMK_XA_EPOCH, counter + 1); + pcmk__xe_set_int(target, PCMK_XA_EPOCH, counter + 1); } else { pcmk__xe_get_int(target, PCMK_XA_NUM_UPDATES, &counter); - crm_xml_add_int(target, PCMK_XA_NUM_UPDATES, counter + 1); + pcmk__xe_set_int(target, PCMK_XA_NUM_UPDATES, counter + 1); } } diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index b4da750266e..e6e4ae532be 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -221,7 +221,7 @@ pcmk__xe_set_score(xmlNode *target, const char *name, const char *value) } } - crm_xml_add_int(target, name, pcmk__add_scores(old_value_i, add)); + pcmk__xe_set_int(target, name, pcmk__add_scores(old_value_i, add)); return pcmk_rc_ok; } } @@ -1238,6 +1238,28 @@ pcmk__xe_get_int(const xmlNode *xml, const char *attr, int *dest) return pcmk_rc_ok; } +/*! + * \internal + * \brief Set an XML attribute using an \c int value. + * + * This is like \c crm_xml_add() but takes an \c int. + * + * \param[in,out] xml XML node to modify + * \param[in] attr Attribute name + * \param[in] value Attribute value to set + */ +void +pcmk__xe_set_int(xmlNode *xml, const char *attr, int value) +{ + char *value_s = NULL; + + CRM_CHECK((xml != NULL) && (attr != NULL), return); + + value_s = pcmk__itoa(value); + crm_xml_add(xml, attr, value_s); + free(value_s); +} + /*! * \internal * \brief Retrieve a long long value from an XML attribute diff --git a/lib/fencing/st_actions.c b/lib/fencing/st_actions.c index b60926fe03b..a3f98b7d97b 100644 --- a/lib/fencing/st_actions.c +++ b/lib/fencing/st_actions.c @@ -447,8 +447,8 @@ stonith__xe_set_result(xmlNode *xml, const pcmk__action_result_t *result) rc = pcmk_rc2legacy(stonith__result2rc(result)); } - crm_xml_add_int(xml, PCMK__XA_OP_STATUS, (int) execution_status); - crm_xml_add_int(xml, PCMK__XA_RC_CODE, exit_status); + pcmk__xe_set_int(xml, PCMK__XA_OP_STATUS, (int) execution_status); + pcmk__xe_set_int(xml, PCMK__XA_RC_CODE, exit_status); crm_xml_add(xml, PCMK_XA_EXIT_REASON, exit_reason); crm_xml_add(xml, PCMK__XA_ST_OUTPUT, action_stdout); @@ -456,7 +456,7 @@ stonith__xe_set_result(xmlNode *xml, const pcmk__action_result_t *result) * code that use libstonithd <=2.1.2 don't check for the full result, and * need a legacy return code instead. */ - crm_xml_add_int(xml, PCMK__XA_ST_RC, rc); + pcmk__xe_set_int(xml, PCMK__XA_ST_RC, rc); } /*! diff --git a/lib/fencing/st_client.c b/lib/fencing/st_client.c index eec165b8ad0..af581f650e5 100644 --- a/lib/fencing/st_client.c +++ b/lib/fencing/st_client.c @@ -386,7 +386,7 @@ stonith_api_remove_level_full(stonith_t *st, int options, crm_xml_add(data, PCMK_XA_TARGET_VALUE, value); } - crm_xml_add_int(data, PCMK_XA_INDEX, level); + pcmk__xe_set_int(data, PCMK_XA_INDEX, level); rc = stonith_send_command(st, STONITH_OP_LEVEL_DEL, data, NULL, options, 0); pcmk__xml_free(data); @@ -428,8 +428,8 @@ create_level_registration_xml(const char *node, const char *pattern, data = pcmk__xe_create(NULL, PCMK_XE_FENCING_LEVEL); crm_xml_add(data, PCMK__XA_ST_ORIGIN, __func__); - crm_xml_add_int(data, PCMK_XA_ID, level); - crm_xml_add_int(data, PCMK_XA_INDEX, level); + pcmk__xe_set_int(data, PCMK_XA_ID, level); + pcmk__xe_set_int(data, PCMK_XA_INDEX, level); if (node) { crm_xml_add(data, PCMK_XA_TARGET, node); @@ -676,9 +676,9 @@ stonith_api_fence_with_delay(stonith_t * stonith, int call_options, const char * data = pcmk__xe_create(NULL, __func__); crm_xml_add(data, PCMK__XA_ST_TARGET, node); crm_xml_add(data, PCMK__XA_ST_DEVICE_ACTION, action); - crm_xml_add_int(data, PCMK__XA_ST_TIMEOUT, timeout); - crm_xml_add_int(data, PCMK__XA_ST_TOLERANCE, tolerance); - crm_xml_add_int(data, PCMK__XA_ST_DELAY, delay); + pcmk__xe_set_int(data, PCMK__XA_ST_TIMEOUT, timeout); + pcmk__xe_set_int(data, PCMK__XA_ST_TOLERANCE, tolerance); + pcmk__xe_set_int(data, PCMK__XA_ST_DELAY, delay); rc = stonith_send_command(stonith, STONITH_OP_FENCE, data, NULL, call_options, timeout); pcmk__xml_free(data); @@ -820,9 +820,9 @@ stonith_create_op(int call_id, const char *token, const char *op, xmlNode * data op_msg = pcmk__xe_create(NULL, PCMK__XE_STONITH_COMMAND); crm_xml_add(op_msg, PCMK__XA_T, PCMK__VALUE_STONITH_NG); crm_xml_add(op_msg, PCMK__XA_ST_OP, op); - crm_xml_add_int(op_msg, PCMK__XA_ST_CALLID, call_id); + pcmk__xe_set_int(op_msg, PCMK__XA_ST_CALLID, call_id); crm_trace("Sending call options: %.8lx, %d", (long)call_options, call_options); - crm_xml_add_int(op_msg, PCMK__XA_ST_CALLOPT, call_options); + pcmk__xe_set_int(op_msg, PCMK__XA_ST_CALLOPT, call_options); if (data != NULL) { xmlNode *wrapper = pcmk__xe_create(op_msg, PCMK__XE_ST_CALLDATA); @@ -1582,7 +1582,7 @@ stonith_send_command(stonith_t * stonith, const char *op, xmlNode * data, xmlNod return -EINVAL; } - crm_xml_add_int(op_msg, PCMK__XA_ST_TIMEOUT, timeout); + pcmk__xe_set_int(op_msg, PCMK__XA_ST_TIMEOUT, timeout); crm_trace("Sending %s message to fencer with timeout %ds", op, timeout); if (data) { diff --git a/lib/lrmd/lrmd_client.c b/lib/lrmd/lrmd_client.c index b47e0068ef9..45f490d6fef 100644 --- a/lib/lrmd/lrmd_client.c +++ b/lib/lrmd/lrmd_client.c @@ -560,8 +560,8 @@ lrmd_create_op(const char *token, const char *op, xmlNode *data, int timeout, op_msg = pcmk__xe_create(NULL, PCMK__XE_LRMD_COMMAND); crm_xml_add(op_msg, PCMK__XA_T, PCMK__VALUE_LRMD); crm_xml_add(op_msg, PCMK__XA_LRMD_OP, op); - crm_xml_add_int(op_msg, PCMK__XA_LRMD_TIMEOUT, timeout); - crm_xml_add_int(op_msg, PCMK__XA_LRMD_CALLOPT, options); + pcmk__xe_set_int(op_msg, PCMK__XA_LRMD_TIMEOUT, timeout); + pcmk__xe_set_int(op_msg, PCMK__XA_LRMD_CALLOPT, options); if (data != NULL) { xmlNode *wrapper = pcmk__xe_create(op_msg, PCMK__XE_LRMD_CALLDATA); @@ -659,7 +659,7 @@ int lrmd__remote_send_xml(pcmk__remote_t *session, xmlNode *msg, uint32_t id, const char *msg_type) { - crm_xml_add_int(msg, PCMK__XA_LRMD_REMOTE_MSG_ID, id); + pcmk__xe_set_int(msg, PCMK__XA_LRMD_REMOTE_MSG_ID, id); crm_xml_add(msg, PCMK__XA_LRMD_REMOTE_MSG_TYPE, msg_type); return pcmk__remote_send_xml(session, msg); } @@ -2150,8 +2150,8 @@ lrmd_api_exec(lrmd_t *lrmd, const char *rsc_id, const char *action, crm_xml_add(data, PCMK__XA_LRMD_RSC_ACTION, action); crm_xml_add(data, PCMK__XA_LRMD_RSC_USERDATA_STR, userdata); pcmk__xe_set_guint(data, PCMK__XA_LRMD_RSC_INTERVAL, interval_ms); - crm_xml_add_int(data, PCMK__XA_LRMD_TIMEOUT, timeout); - crm_xml_add_int(data, PCMK__XA_LRMD_RSC_START_DELAY, start_delay); + pcmk__xe_set_int(data, PCMK__XA_LRMD_TIMEOUT, timeout); + pcmk__xe_set_int(data, PCMK__XA_LRMD_RSC_START_DELAY, start_delay); for (tmp = params; tmp; tmp = tmp->next) { hash2smartfield((gpointer) tmp->key, (gpointer) tmp->value, args); @@ -2177,7 +2177,7 @@ lrmd_api_exec_alert(lrmd_t *lrmd, const char *alert_id, const char *alert_path, crm_xml_add(data, PCMK__XA_LRMD_ORIGIN, __func__); crm_xml_add(data, PCMK__XA_LRMD_ALERT_ID, alert_id); crm_xml_add(data, PCMK__XA_LRMD_ALERT_PATH, alert_path); - crm_xml_add_int(data, PCMK__XA_LRMD_TIMEOUT, timeout); + pcmk__xe_set_int(data, PCMK__XA_LRMD_TIMEOUT, timeout); for (tmp = params; tmp; tmp = tmp->next) { hash2smartfield((gpointer) tmp->key, (gpointer) tmp->value, args); diff --git a/lib/lrmd/proxy_common.c b/lib/lrmd/proxy_common.c index b73e19a12ad..660be40795f 100644 --- a/lib/lrmd/proxy_common.c +++ b/lib/lrmd/proxy_common.c @@ -93,7 +93,7 @@ remote_proxy_relay_response(remote_proxy_t *proxy, xmlNode *msg, int msg_id) crm_xml_add(response, PCMK__XA_LRMD_IPC_OP, LRMD_IPC_OP_RESPONSE); crm_xml_add(response, PCMK__XA_LRMD_IPC_SESSION, proxy->session_id); - crm_xml_add_int(response, PCMK__XA_LRMD_IPC_MSG_ID, msg_id); + pcmk__xe_set_int(response, PCMK__XA_LRMD_IPC_MSG_ID, msg_id); wrapper = pcmk__xe_create(response, PCMK__XE_LRMD_IPC_MSG); pcmk__xml_copy(wrapper, msg); @@ -295,8 +295,8 @@ remote_proxy_cb(lrmd_t *lrmd, const char *node_name, xmlNode *msg) /* Send a n'ack so the caller doesn't block */ crm_xml_add(op_reply, PCMK_XA_FUNCTION, __func__); - crm_xml_add_int(op_reply, PCMK__XA_LINE, __LINE__); - crm_xml_add_int(op_reply, PCMK_XA_RC, rc); + pcmk__xe_set_int(op_reply, PCMK__XA_LINE, __LINE__); + pcmk__xe_set_int(op_reply, PCMK_XA_RC, rc); remote_proxy_relay_response(proxy, op_reply, msg_id); pcmk__xml_free(op_reply); diff --git a/lib/pacemaker/pcmk_graph_producer.c b/lib/pacemaker/pcmk_graph_producer.c index 16105172c77..2d4fffee08e 100644 --- a/lib/pacemaker/pcmk_graph_producer.c +++ b/lib/pacemaker/pcmk_graph_producer.c @@ -432,7 +432,7 @@ create_graph_action(xmlNode *parent, pcmk_action_t *action, bool skip_details, action_xml = pcmk__xe_create(parent, PCMK__XE_RSC_OP); } - crm_xml_add_int(action_xml, PCMK_XA_ID, action->id); + pcmk__xe_set_int(action_xml, PCMK_XA_ID, action->id); crm_xml_add(action_xml, PCMK_XA_OPERATION, action->task); if ((action->rsc != NULL) && (action->rsc->priv->history_id != NULL)) { @@ -852,7 +852,7 @@ create_graph_synapse(const pcmk_action_t *action, pcmk_scheduler_t *scheduler) int synapse_priority = 0; xmlNode *syn = pcmk__xe_create(scheduler->priv->graph, PCMK__XE_SYNAPSE); - crm_xml_add_int(syn, PCMK_XA_ID, scheduler->priv->synapse_count++); + pcmk__xe_set_int(syn, PCMK_XA_ID, scheduler->priv->synapse_count++); if (action->rsc != NULL) { synapse_priority = action->rsc->priv->priority; @@ -861,7 +861,7 @@ create_graph_synapse(const pcmk_action_t *action, pcmk_scheduler_t *scheduler) synapse_priority = action->priority; } if (synapse_priority > 0) { - crm_xml_add_int(syn, PCMK__XA_PRIORITY, synapse_priority); + pcmk__xe_set_int(syn, PCMK__XA_PRIORITY, synapse_priority); } return syn; } @@ -1035,7 +1035,7 @@ pcmk__create_graph(pcmk_scheduler_t *scheduler) value = pcmk__cluster_option(config_hash, PCMK_OPT_BATCH_LIMIT); crm_xml_add(scheduler->priv->graph, PCMK_OPT_BATCH_LIMIT, value); - crm_xml_add_int(scheduler->priv->graph, "transition_id", transition_id); + pcmk__xe_set_int(scheduler->priv->graph, "transition_id", transition_id); value = pcmk__cluster_option(config_hash, PCMK_OPT_MIGRATION_LIMIT); rc = pcmk__scan_ll(value, &limit, 0LL); diff --git a/lib/pacemaker/pcmk_sched_actions.c b/lib/pacemaker/pcmk_sched_actions.c index 01896567e76..419ff759c9b 100644 --- a/lib/pacemaker/pcmk_sched_actions.c +++ b/lib/pacemaker/pcmk_sched_actions.c @@ -1246,9 +1246,9 @@ pcmk__create_history_xml(xmlNode *parent, lrmd_event_data_t *op, crm_xml_add(xml_op, PCMK_XA_EXIT_REASON, pcmk__s(exit_reason, "")); crm_xml_add(xml_op, PCMK__META_ON_NODE, node); // For context during triage - crm_xml_add_int(xml_op, PCMK__XA_CALL_ID, op->call_id); - crm_xml_add_int(xml_op, PCMK__XA_RC_CODE, op->rc); - crm_xml_add_int(xml_op, PCMK__XA_OP_STATUS, op->op_status); + pcmk__xe_set_int(xml_op, PCMK__XA_CALL_ID, op->call_id); + pcmk__xe_set_int(xml_op, PCMK__XA_RC_CODE, op->rc); + pcmk__xe_set_int(xml_op, PCMK__XA_OP_STATUS, op->op_status); pcmk__xe_set_guint(xml_op, PCMK_META_INTERVAL, op->interval_ms); if ((op->t_run > 0) || (op->t_rcchange > 0) || (op->exec_time > 0) @@ -1267,8 +1267,8 @@ pcmk__create_history_xml(xmlNode *parent, lrmd_event_data_t *op, pcmk__xe_set_time(xml_op, PCMK_XA_LAST_RC_CHANGE, op->t_run); } - crm_xml_add_int(xml_op, PCMK_XA_EXEC_TIME, op->exec_time); - crm_xml_add_int(xml_op, PCMK_XA_QUEUE_TIME, op->queue_time); + pcmk__xe_set_int(xml_op, PCMK_XA_EXEC_TIME, op->exec_time); + pcmk__xe_set_int(xml_op, PCMK_XA_QUEUE_TIME, op->queue_time); } if (pcmk__str_any_of(op->op_type, PCMK_ACTION_MIGRATE_TO, diff --git a/lib/pacemaker/pcmk_sched_clone.c b/lib/pacemaker/pcmk_sched_clone.c index 4f86621cbd0..551c82c239e 100644 --- a/lib/pacemaker/pcmk_sched_clone.c +++ b/lib/pacemaker/pcmk_sched_clone.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. * @@ -655,11 +655,11 @@ pcmk__clone_add_graph_meta(const pcmk_resource_t *rsc, xmlNode *xml) free(name); name = crm_meta_name(PCMK_META_CLONE_MAX); - crm_xml_add_int(xml, name, pe__clone_max(rsc)); + pcmk__xe_set_int(xml, name, pe__clone_max(rsc)); free(name); name = crm_meta_name(PCMK_META_CLONE_NODE_MAX); - crm_xml_add_int(xml, name, pe__clone_node_max(rsc)); + pcmk__xe_set_int(xml, name, pe__clone_node_max(rsc)); free(name); if (pcmk_is_set(rsc->flags, pcmk__rsc_promotable)) { @@ -667,22 +667,22 @@ pcmk__clone_add_graph_meta(const pcmk_resource_t *rsc, xmlNode *xml) int promoted_node_max = pe__clone_promoted_node_max(rsc); name = crm_meta_name(PCMK_META_PROMOTED_MAX); - crm_xml_add_int(xml, name, promoted_max); + pcmk__xe_set_int(xml, name, promoted_max); free(name); name = crm_meta_name(PCMK_META_PROMOTED_NODE_MAX); - crm_xml_add_int(xml, name, promoted_node_max); + pcmk__xe_set_int(xml, name, promoted_node_max); free(name); /* @COMPAT Maintain backward compatibility with resource agents that * expect the old names (deprecated since 2.0.0). */ name = crm_meta_name(PCMK__META_PROMOTED_MAX_LEGACY); - crm_xml_add_int(xml, name, promoted_max); + pcmk__xe_set_int(xml, name, promoted_max); free(name); name = crm_meta_name(PCMK__META_PROMOTED_NODE_MAX_LEGACY); - crm_xml_add_int(xml, name, promoted_node_max); + pcmk__xe_set_int(xml, name, promoted_node_max); free(name); } } From df84f932e95a6799c7f6d3600da9523f353c1255 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 19 Mar 2025 16:24:35 -0700 Subject: [PATCH 091/186] API: libcrmcommon: Deprecate crm_xml_add_int() Signed-off-by: Reid Wahl --- include/crm/common/xml_element.h | 1 - include/crm/common/xml_element_compat.h | 3 +++ lib/common/xml_element.c | 33 ++++++++----------------- 3 files changed, 13 insertions(+), 24 deletions(-) diff --git a/include/crm/common/xml_element.h b/include/crm/common/xml_element.h index 50c502881d6..db11f2e4f00 100644 --- a/include/crm/common/xml_element.h +++ b/include/crm/common/xml_element.h @@ -26,7 +26,6 @@ extern "C" { */ const char *crm_xml_add(xmlNode *node, const char *name, const char *value); -const char *crm_xml_add_int(xmlNode *node, const char *name, int value); #ifdef __cplusplus } diff --git a/include/crm/common/xml_element_compat.h b/include/crm/common/xml_element_compat.h index a94d8f169fc..8ab28622b95 100644 --- a/include/crm/common/xml_element_compat.h +++ b/include/crm/common/xml_element_compat.h @@ -75,6 +75,9 @@ const char *crm_xml_add_ms(xmlNode *node, const char *name, guint ms); //! \deprecated Do not use const char *crm_xml_add_ll(xmlNode *node, const char *name, long long value); +//! \deprecated Do not use +const char *crm_xml_add_int(xmlNode *node, const char *name, int value); + #ifdef __cplusplus } #endif diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index e6e4ae532be..cae8a4e748d 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -1053,29 +1053,6 @@ crm_xml_add(xmlNode *node, const char *name, const char *value) return (char *)attr->children->content; } - -/*! - * \brief Create an XML attribute with specified name and integer value - * - * This is like \c crm_xml_add() but taking an integer value. - * - * \param[in,out] node XML node to modify - * \param[in] name Attribute name to set - * \param[in] value Attribute value to set - * - * \return New value as string on success, \c NULL otherwise - * \note This does nothing if node or name are \c NULL or empty. - */ -const char * -crm_xml_add_int(xmlNode *node, const char *name, int value) -{ - char *number = pcmk__itoa(value); - const char *added = crm_xml_add(node, name, number); - - free(number); - return added; -} - /*! * \internal * \brief Retrieve the value of an XML attribute @@ -1831,5 +1808,15 @@ crm_xml_add_ms(xmlNode *node, const char *name, guint ms) return added; } +const char * +crm_xml_add_int(xmlNode *node, const char *name, int value) +{ + char *number = pcmk__itoa(value); + const char *added = crm_xml_add(node, name, number); + + free(number); + return added; +} + // LCOV_EXCL_STOP // End deprecated API From 9fecbc2bb2b38136aa03e30489323733bfaf63bc Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 19 Mar 2025 17:15:18 -0700 Subject: [PATCH 092/186] Refactor: libcrmcommon: New pcmk__xe_set() To replace crm_xml_add(). Also add an include of results.h to ipc.h. For some strange reason, this commit causes test-headers.sh to break due to missing symbol crm_exit_t in that header. Similar with some other include changes. Signed-off-by: Reid Wahl --- daemons/attrd/attrd_attributes.c | 15 +-- daemons/attrd/attrd_cib.c | 12 +- daemons/attrd/attrd_corosync.c | 17 +-- daemons/attrd/attrd_elections.c | 2 +- daemons/attrd/attrd_ipc.c | 34 +++--- daemons/attrd/attrd_messages.c | 20 ++-- daemons/based/based_callbacks.c | 38 +++---- daemons/based/based_messages.c | 54 +++++---- daemons/based/based_notify.c | 14 +-- daemons/based/based_remote.c | 14 +-- daemons/based/pacemaker-based.c | 2 +- daemons/controld/controld_cib.c | 36 +++--- daemons/controld/controld_control.c | 4 +- daemons/controld/controld_corosync.c | 4 +- daemons/controld/controld_election.c | 4 +- daemons/controld/controld_execd.c | 16 +-- daemons/controld/controld_execd_state.c | 8 +- daemons/controld/controld_fencing.c | 4 +- daemons/controld/controld_join_client.c | 4 +- daemons/controld/controld_join_dc.c | 6 +- daemons/controld/controld_membership.c | 27 +++-- daemons/controld/controld_messages.c | 30 ++--- daemons/controld/controld_remote_ra.c | 4 +- daemons/controld/controld_schedulerd.c | 18 +-- daemons/controld/controld_te_actions.c | 20 ++-- daemons/execd/execd_commands.c | 56 ++++----- daemons/execd/pacemaker-execd.c | 4 +- daemons/execd/remoted_proxy.c | 26 ++--- daemons/execd/remoted_tls.c | 4 +- daemons/fenced/fenced_cib.c | 4 +- daemons/fenced/fenced_commands.c | 52 ++++----- daemons/fenced/fenced_history.c | 20 ++-- daemons/fenced/fenced_remote.c | 60 +++++----- daemons/fenced/pacemaker-fenced.c | 34 +++--- daemons/pacemakerd/pcmkd_messages.c | 6 +- daemons/schedulerd/schedulerd_messages.c | 2 +- include/crm/common/ipc.h | 3 + include/crm/common/xml_compat.h | 5 +- include/crm/common/xml_element_internal.h | 2 + include/pcmki/pcmki_ticket.h | 7 +- lib/cib/cib_attrs.c | 12 +- lib/cib/cib_client.c | 4 +- lib/cib/cib_file.c | 6 +- lib/cib/cib_native.c | 4 +- lib/cib/cib_ops.c | 13 ++- lib/cib/cib_remote.c | 12 +- lib/cib/cib_utils.c | 29 ++--- lib/cluster/corosync.c | 2 +- lib/cluster/election.c | 6 +- lib/common/acl.c | 4 +- lib/common/actions.c | 8 +- lib/common/digest.c | 2 +- lib/common/ipc_attrd.c | 56 ++++----- lib/common/ipc_client.c | 10 +- lib/common/ipc_controld.c | 34 +++--- lib/common/ipc_server.c | 4 +- lib/common/nvpair.c | 16 +-- lib/common/options_display.c | 6 +- lib/common/output_html.c | 14 +-- lib/common/output_xml.c | 14 +-- lib/common/patchset.c | 38 +++---- lib/common/schemas.c | 6 +- .../tests/nvpair/pcmk__xe_get_flags_test.c | 4 +- .../tests/rules/pcmk_evaluate_rule_test.c | 6 +- .../xml_element/pcmk__xe_copy_attrs_test.c | 28 ++--- .../xml_element/pcmk__xe_get_score_test.c | 8 +- .../xml_element/pcmk__xe_set_score_test.c | 4 +- .../xml_element/pcmk__xe_sort_attrs_test.c | 14 +-- lib/common/xml.c | 6 +- lib/common/xml_element.c | 106 +++++++++++++----- lib/fencing/st_actions.c | 4 +- lib/fencing/st_client.c | 80 ++++++------- lib/fencing/st_output.c | 10 +- lib/fencing/st_rhcs.c | 10 +- lib/lrmd/lrmd_client.c | 64 +++++------ lib/lrmd/lrmd_output.c | 6 +- lib/lrmd/proxy_common.c | 22 ++-- lib/pacemaker/pcmk_graph_producer.c | 68 +++++------ lib/pacemaker/pcmk_injections.c | 34 +++--- lib/pacemaker/pcmk_output.c | 28 ++--- lib/pacemaker/pcmk_resource.c | 2 +- lib/pacemaker/pcmk_sched_actions.c | 24 ++-- lib/pacemaker/pcmk_sched_clone.c | 4 +- lib/pacemaker/pcmk_sched_colocation.c | 4 +- lib/pacemaker/pcmk_sched_constraints.c | 10 +- lib/pacemaker/pcmk_sched_location.c | 2 +- lib/pacemaker/pcmk_sched_ordering.c | 4 +- lib/pacemaker/pcmk_sched_primitive.c | 8 +- lib/pacemaker/pcmk_sched_tickets.c | 2 +- lib/pacemaker/pcmk_simulate.c | 2 +- lib/pacemaker/pcmk_ticket.c | 8 +- lib/pengine/bundle.c | 12 +- lib/pengine/clone.c | 2 +- lib/pengine/complex.c | 6 +- lib/pengine/group.c | 2 +- lib/pengine/pe_output.c | 34 +++--- lib/pengine/remote.c | 8 +- lib/pengine/unpack.c | 18 +-- tools/cibadmin.c | 2 +- tools/crm_diff.c | 2 +- tools/crm_node.c | 6 +- tools/crm_resource_ban.c | 54 ++++----- tools/crm_resource_print.c | 14 +-- tools/crm_resource_runtime.c | 6 +- tools/crm_shadow.c | 2 +- 105 files changed, 900 insertions(+), 832 deletions(-) diff --git a/daemons/attrd/attrd_attributes.c b/daemons/attrd/attrd_attributes.c index 1ee0397d8b4..e14a607133c 100644 --- a/daemons/attrd/attrd_attributes.c +++ b/daemons/attrd/attrd_attributes.c @@ -138,11 +138,11 @@ attrd_add_value_xml(xmlNode *parent, const attribute_t *a, { xmlNode *xml = pcmk__xe_create(parent, __func__); - crm_xml_add(xml, PCMK__XA_ATTR_NAME, a->id); - crm_xml_add(xml, PCMK__XA_ATTR_SET_TYPE, a->set_type); - crm_xml_add(xml, PCMK__XA_ATTR_SET, a->set_id); - crm_xml_add(xml, PCMK__XA_ATTR_USER, a->user); - crm_xml_add(xml, PCMK__XA_ATTR_HOST, v->nodename); + pcmk__xe_set(xml, PCMK__XA_ATTR_NAME, a->id); + pcmk__xe_set(xml, PCMK__XA_ATTR_SET_TYPE, a->set_type); + pcmk__xe_set(xml, PCMK__XA_ATTR_SET, a->set_id); + pcmk__xe_set(xml, PCMK__XA_ATTR_USER, a->user); + pcmk__xe_set(xml, PCMK__XA_ATTR_HOST, v->nodename); /* @COMPAT Prior to 2.1.10 and 3.0.1, the node's cluster ID was added * instead of its XML ID. For Corosync and Pacemaker Remote nodes, those are @@ -150,9 +150,10 @@ attrd_add_value_xml(xmlNode *parent, const attribute_t *a, * cluster IDs, we will have to drop support for rolling upgrades from * versions before those. */ - crm_xml_add(xml, PCMK__XA_ATTR_HOST_ID, attrd_get_node_xml_id(v->nodename)); + pcmk__xe_set(xml, PCMK__XA_ATTR_HOST_ID, + attrd_get_node_xml_id(v->nodename)); - crm_xml_add(xml, PCMK__XA_ATTR_VALUE, v->current); + pcmk__xe_set(xml, PCMK__XA_ATTR_VALUE, v->current); pcmk__xe_set_int(xml, PCMK__XA_ATTR_DAMPENING, pcmk__timeout_ms2s(a->timeout_ms)); pcmk__xe_set_int(xml, PCMK__XA_ATTR_IS_PRIVATE, diff --git a/daemons/attrd/attrd_cib.c b/daemons/attrd/attrd_cib.c index fc5ac5e19bd..a3925962483 100644 --- a/daemons/attrd/attrd_cib.c +++ b/daemons/attrd/attrd_cib.c @@ -356,18 +356,18 @@ add_set_attr_update(const attribute_t *attr, const char *attr_id, xmlNode *child = update; int rc = ENOMEM; - crm_xml_add(child, PCMK_XA_ID, node_id); + pcmk__xe_set(child, PCMK_XA_ID, node_id); child = pcmk__xe_create(child, PCMK__XE_TRANSIENT_ATTRIBUTES); - crm_xml_add(child, PCMK_XA_ID, node_id); + pcmk__xe_set(child, PCMK_XA_ID, node_id); child = pcmk__xe_create(child, attr->set_type); - crm_xml_add(child, PCMK_XA_ID, set_id); + pcmk__xe_set(child, PCMK_XA_ID, set_id); child = pcmk__xe_create(child, PCMK_XE_NVPAIR); - crm_xml_add(child, PCMK_XA_ID, attr_id); - crm_xml_add(child, PCMK_XA_NAME, attr->id); - crm_xml_add(child, PCMK_XA_VALUE, value); + pcmk__xe_set(child, PCMK_XA_ID, attr_id); + pcmk__xe_set(child, PCMK_XA_NAME, attr->id); + pcmk__xe_set(child, PCMK_XA_VALUE, value); rc = the_cib->cmds->modify(the_cib, PCMK_XE_STATUS, update, cib_can_create|cib_transaction); diff --git a/daemons/attrd/attrd_corosync.c b/daemons/attrd/attrd_corosync.c index f9102abc8bf..05f70e39452 100644 --- a/daemons/attrd/attrd_corosync.c +++ b/daemons/attrd/attrd_corosync.c @@ -28,9 +28,9 @@ attrd_confirmation(int callid) { xmlNode *node = pcmk__xe_create(NULL, __func__); - crm_xml_add(node, PCMK__XA_T, PCMK__VALUE_ATTRD); - crm_xml_add(node, PCMK__XA_SRC, pcmk__cluster_local_node_name()); - crm_xml_add(node, PCMK_XA_TASK, PCMK__ATTRD_CMD_CONFIRM); + pcmk__xe_set(node, PCMK__XA_T, PCMK__VALUE_ATTRD); + pcmk__xe_set(node, PCMK__XA_SRC, pcmk__cluster_local_node_name()); + pcmk__xe_set(node, PCMK_XA_TASK, PCMK__ATTRD_CMD_CONFIRM); pcmk__xe_set_int(node, PCMK__XA_CALL_ID, callid); return node; @@ -151,7 +151,7 @@ attrd_broadcast_value(const attribute_t *a, const attribute_value_t *v) { xmlNode *op = pcmk__xe_create(NULL, PCMK_XE_OP); - crm_xml_add(op, PCMK_XA_TASK, PCMK__ATTRD_CMD_UPDATE); + pcmk__xe_set(op, PCMK_XA_TASK, PCMK__ATTRD_CMD_UPDATE); attrd_add_value_xml(op, a, v, false); attrd_send_message(NULL, op, false); pcmk__xml_free(op); @@ -396,7 +396,8 @@ broadcast_unseen_local_values(void) a->id, v->nodename, readable_value(v)); if (sync == NULL) { sync = pcmk__xe_create(NULL, __func__); - crm_xml_add(sync, PCMK_XA_TASK, PCMK__ATTRD_CMD_SYNC_RESPONSE); + pcmk__xe_set(sync, PCMK_XA_TASK, + PCMK__ATTRD_CMD_SYNC_RESPONSE); } attrd_add_value_xml(sync, a, v, a->timeout_ms && a->timer); } @@ -457,7 +458,7 @@ attrd_peer_clear_failure(pcmk__request_t *request) return; } - crm_xml_add(xml, PCMK_XA_TASK, PCMK__ATTRD_CMD_UPDATE); + pcmk__xe_set(xml, PCMK_XA_TASK, PCMK__ATTRD_CMD_UPDATE); /* Make sure value is not set, so we delete */ pcmk__xe_remove_attr(xml, PCMK__XA_ATTR_VALUE); @@ -467,7 +468,7 @@ attrd_peer_clear_failure(pcmk__request_t *request) if (regexec(®ex, attr, 0, NULL, 0) == 0) { crm_trace("Matched %s when clearing %s", attr, pcmk__s(rsc, "all resources")); - crm_xml_add(xml, PCMK__XA_ATTR_NAME, attr); + pcmk__xe_set(xml, PCMK__XA_ATTR_NAME, attr); attrd_peer_update(peer, xml, host, false); } } @@ -560,7 +561,7 @@ attrd_peer_sync(pcmk__node_status_t *peer) attribute_value_t *v = NULL; xmlNode *sync = pcmk__xe_create(NULL, __func__); - crm_xml_add(sync, PCMK_XA_TASK, PCMK__ATTRD_CMD_SYNC_RESPONSE); + pcmk__xe_set(sync, PCMK_XA_TASK, PCMK__ATTRD_CMD_SYNC_RESPONSE); g_hash_table_iter_init(&aIter, attributes); while (g_hash_table_iter_next(&aIter, NULL, (gpointer *) & a)) { diff --git a/daemons/attrd/attrd_elections.c b/daemons/attrd/attrd_elections.c index dc5aea8c8ff..74e57ed377f 100644 --- a/daemons/attrd/attrd_elections.c +++ b/daemons/attrd/attrd_elections.c @@ -60,7 +60,7 @@ attrd_handle_election_op(const pcmk__node_status_t *peer, xmlNode *xml) enum election_result rc = 0; enum election_result previous = election_state(attrd_cluster); - crm_xml_add(xml, PCMK__XA_SRC, peer->name); + pcmk__xe_set(xml, PCMK__XA_SRC, peer->name); // Don't become writer if we're shutting down rc = election_count_vote(attrd_cluster, xml, !attrd_shutting_down(false)); diff --git a/daemons/attrd/attrd_ipc.c b/daemons/attrd/attrd_ipc.c index 75db2933aea..506f3a653b5 100644 --- a/daemons/attrd/attrd_ipc.c +++ b/daemons/attrd/attrd_ipc.c @@ -44,9 +44,9 @@ static xmlNode *build_query_reply(const char *attr, const char *host) xmlNode *reply = pcmk__xe_create(NULL, __func__); attribute_t *a; - crm_xml_add(reply, PCMK__XA_T, PCMK__VALUE_ATTRD); - crm_xml_add(reply, PCMK__XA_SUBT, PCMK__ATTRD_CMD_QUERY); - crm_xml_add(reply, PCMK__XA_ATTR_VERSION, ATTRD_PROTOCOL_VERSION); + pcmk__xe_set(reply, PCMK__XA_T, PCMK__VALUE_ATTRD); + pcmk__xe_set(reply, PCMK__XA_SUBT, PCMK__ATTRD_CMD_QUERY); + pcmk__xe_set(reply, PCMK__XA_ATTR_VERSION, ATTRD_PROTOCOL_VERSION); /* If desired attribute exists, add its value(s) to the reply */ a = g_hash_table_lookup(attributes, attr); @@ -54,7 +54,7 @@ static xmlNode *build_query_reply(const char *attr, const char *host) attribute_value_t *v; xmlNode *host_value; - crm_xml_add(reply, PCMK__XA_ATTR_NAME, attr); + pcmk__xe_set(reply, PCMK__XA_ATTR_NAME, attr); /* Allow caller to use "localhost" to refer to local node */ if (pcmk__str_eq(host, "localhost", pcmk__str_casei)) { @@ -66,9 +66,9 @@ 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); - crm_xml_add(host_value, PCMK__XA_ATTR_HOST, host); - crm_xml_add(host_value, PCMK__XA_ATTR_VALUE, - (v? v->current : NULL)); + pcmk__xe_set(host_value, PCMK__XA_ATTR_HOST, host); + pcmk__xe_set(host_value, PCMK__XA_ATTR_VALUE, + ((v != NULL)? v->current : NULL)); /* Otherwise, add all nodes' values */ } else { @@ -77,8 +77,8 @@ 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); - crm_xml_add(host_value, PCMK__XA_ATTR_HOST, v->nodename); - crm_xml_add(host_value, PCMK__XA_ATTR_VALUE, v->current); + pcmk__xe_set(host_value, PCMK__XA_ATTR_HOST, v->nodename); + pcmk__xe_set(host_value, PCMK__XA_ATTR_VALUE, v->current); } } } @@ -105,7 +105,7 @@ attrd_client_clear_failure(pcmk__request_t *request) interval_spec = pcmk__xe_get(xml, PCMK__XA_ATTR_CLEAR_INTERVAL); /* Map this to an update */ - crm_xml_add(xml, PCMK_XA_TASK, PCMK__ATTRD_CMD_UPDATE); + pcmk__xe_set(xml, PCMK_XA_TASK, PCMK__ATTRD_CMD_UPDATE); /* Add regular expression matching desired attributes */ @@ -123,11 +123,11 @@ attrd_client_clear_failure(pcmk__request_t *request) rsc, op, interval_ms); } - crm_xml_add(xml, PCMK__XA_ATTR_REGEX, pattern); + pcmk__xe_set(xml, PCMK__XA_ATTR_REGEX, pattern); free(pattern); } else { - crm_xml_add(xml, PCMK__XA_ATTR_REGEX, ATTRD_RE_CLEAR_ALL); + pcmk__xe_set(xml, PCMK__XA_ATTR_REGEX, ATTRD_RE_CLEAR_ALL); } /* Make sure attribute and value are not set, so we delete via regex */ @@ -166,7 +166,7 @@ attrd_client_peer_remove(pcmk__request_t *request) host_alloc = pcmk__cluster_node_name(nodeid); host = host_alloc; } - crm_xml_add(xml, PCMK__XA_ATTR_HOST, host); + pcmk__xe_set(xml, PCMK__XA_ATTR_HOST, host); } } @@ -236,9 +236,9 @@ handle_missing_host(xmlNode *xml) crm_trace("Inferring local node %s with XML ID %s", attrd_cluster->priv->node_name, attrd_cluster->priv->node_xml_id); - crm_xml_add(xml, PCMK__XA_ATTR_HOST, attrd_cluster->priv->node_name); - crm_xml_add(xml, PCMK__XA_ATTR_HOST_ID, - attrd_cluster->priv->node_xml_id); + pcmk__xe_set(xml, PCMK__XA_ATTR_HOST, attrd_cluster->priv->node_name); + pcmk__xe_set(xml, PCMK__XA_ATTR_HOST_ID, + attrd_cluster->priv->node_xml_id); } } @@ -273,7 +273,7 @@ expand_regexes(xmlNode *xml, const char *attr, const char *value, const char *re */ pcmk__xe_copy_attrs(child, xml, pcmk__xaf_no_overwrite); pcmk__xe_remove_attr(child, PCMK__XA_ATTR_REGEX); - crm_xml_add(child, PCMK__XA_ATTR_NAME, attr); + pcmk__xe_set(child, PCMK__XA_ATTR_NAME, attr); } } diff --git a/daemons/attrd/attrd_messages.c b/daemons/attrd/attrd_messages.c index 23b8fc31778..abcad2d5492 100644 --- a/daemons/attrd/attrd_messages.c +++ b/daemons/attrd/attrd_messages.c @@ -309,15 +309,15 @@ attrd_broadcast_protocol(void) { xmlNode *attrd_op = pcmk__xe_create(NULL, __func__); - crm_xml_add(attrd_op, PCMK__XA_T, PCMK__VALUE_ATTRD); - crm_xml_add(attrd_op, PCMK__XA_SRC, crm_system_name); - crm_xml_add(attrd_op, PCMK_XA_TASK, PCMK__ATTRD_CMD_UPDATE); - crm_xml_add(attrd_op, PCMK__XA_ATTR_NAME, CRM_ATTR_PROTOCOL); - crm_xml_add(attrd_op, PCMK__XA_ATTR_VALUE, ATTRD_PROTOCOL_VERSION); + pcmk__xe_set(attrd_op, PCMK__XA_T, PCMK__VALUE_ATTRD); + pcmk__xe_set(attrd_op, PCMK__XA_SRC, crm_system_name); + pcmk__xe_set(attrd_op, PCMK_XA_TASK, PCMK__ATTRD_CMD_UPDATE); + pcmk__xe_set(attrd_op, PCMK__XA_ATTR_NAME, CRM_ATTR_PROTOCOL); + pcmk__xe_set(attrd_op, PCMK__XA_ATTR_VALUE, ATTRD_PROTOCOL_VERSION); pcmk__xe_set_int(attrd_op, PCMK__XA_ATTR_IS_PRIVATE, 1); - crm_xml_add(attrd_op, PCMK__XA_ATTR_HOST, attrd_cluster->priv->node_name); - crm_xml_add(attrd_op, PCMK__XA_ATTR_HOST_ID, - attrd_cluster->priv->node_xml_id); + pcmk__xe_set(attrd_op, PCMK__XA_ATTR_HOST, attrd_cluster->priv->node_name); + pcmk__xe_set(attrd_op, PCMK__XA_ATTR_HOST_ID, + attrd_cluster->priv->node_xml_id); crm_debug("Broadcasting attrd protocol version %s for node %s", ATTRD_PROTOCOL_VERSION, attrd_cluster->priv->node_name); @@ -332,8 +332,8 @@ attrd_send_message(pcmk__node_status_t *node, xmlNode *data, bool confirm) { const char *op = pcmk__xe_get(data, PCMK_XA_TASK); - crm_xml_add(data, PCMK__XA_T, PCMK__VALUE_ATTRD); - crm_xml_add(data, PCMK__XA_ATTR_VERSION, ATTRD_PROTOCOL_VERSION); + pcmk__xe_set(data, PCMK__XA_T, PCMK__VALUE_ATTRD); + pcmk__xe_set(data, PCMK__XA_ATTR_VERSION, ATTRD_PROTOCOL_VERSION); /* Request a confirmation from the destination peer node (which could * be all if node is NULL) that the message has been received and diff --git a/daemons/based/based_callbacks.c b/daemons/based/based_callbacks.c index e274b6089d1..5fd02ab299f 100644 --- a/daemons/based/based_callbacks.c +++ b/daemons/based/based_callbacks.c @@ -142,10 +142,10 @@ create_cib_reply(const char *op, const char *call_id, const char *client_id, { xmlNode *reply = pcmk__xe_create(NULL, PCMK__XE_CIB_REPLY); - crm_xml_add(reply, PCMK__XA_T, PCMK__VALUE_CIB); - crm_xml_add(reply, PCMK__XA_CIB_OP, op); - crm_xml_add(reply, PCMK__XA_CIB_CALLID, call_id); - crm_xml_add(reply, PCMK__XA_CIB_CLIENTID, client_id); + pcmk__xe_set(reply, PCMK__XA_T, PCMK__VALUE_CIB); + pcmk__xe_set(reply, PCMK__XA_CIB_OP, op); + pcmk__xe_set(reply, PCMK__XA_CIB_CALLID, call_id); + pcmk__xe_set(reply, PCMK__XA_CIB_CLIENTID, client_id); pcmk__xe_set_int(reply, PCMK__XA_CIB_CALLOPT, call_options); pcmk__xe_set_int(reply, PCMK__XA_CIB_RC, rc); @@ -243,8 +243,8 @@ cib_common_callback_worker(uint32_t id, uint32_t flags, xmlNode * op_request, if (flags & crm_ipc_client_response) { xmlNode *ack = pcmk__xe_create(NULL, __func__); - crm_xml_add(ack, PCMK__XA_CIB_OP, CRM_OP_REGISTER); - crm_xml_add(ack, PCMK__XA_CIB_CLIENTID, cib_client->id); + pcmk__xe_set(ack, PCMK__XA_CIB_OP, CRM_OP_REGISTER); + pcmk__xe_set(ack, PCMK__XA_CIB_CLIENTID, cib_client->id); pcmk__ipc_send_xml(cib_client, id, ack, flags); cib_client->request_id = 0; pcmk__xml_free(ack); @@ -354,8 +354,8 @@ cib_common_callback(qb_ipcs_connection_t * c, void *data, size_t size, gboolean pcmk__set_client_queue_max(cib_client, qmax); } - crm_xml_add(op_request, PCMK__XA_CIB_CLIENTID, cib_client->id); - crm_xml_add(op_request, PCMK__XA_CIB_CLIENTNAME, cib_client->name); + pcmk__xe_set(op_request, PCMK__XA_CIB_CLIENTID, cib_client->id); + pcmk__xe_set(op_request, PCMK__XA_CIB_CLIENTNAME, cib_client->name); CRM_LOG_ASSERT(cib_client->user != NULL); pcmk__update_acl_user(op_request, PCMK__XA_CIB_USER, cib_client->user); @@ -384,11 +384,11 @@ cib_digester_cb(gpointer data) snprintf(buffer, 32, "%" PRIu64, ping_seq); crm_trace("Requesting peer digests (%s)", buffer); - crm_xml_add(ping, PCMK__XA_T, PCMK__VALUE_CIB); - crm_xml_add(ping, PCMK__XA_CIB_OP, CRM_OP_PING); - crm_xml_add(ping, PCMK__XA_CIB_PING_ID, buffer); + pcmk__xe_set(ping, PCMK__XA_T, PCMK__VALUE_CIB); + pcmk__xe_set(ping, PCMK__XA_CIB_OP, CRM_OP_PING); + pcmk__xe_set(ping, PCMK__XA_CIB_PING_ID, buffer); - crm_xml_add(ping, PCMK_XA_CRM_FEATURE_SET, CRM_FEATURE_SET); + pcmk__xe_set(ping, PCMK_XA_CRM_FEATURE_SET, CRM_FEATURE_SET); pcmk__cluster_send_message(NULL, pcmk_ipc_based, ping); pcmk__xml_free(ping); @@ -599,7 +599,7 @@ parse_peer_options(const cib__operation_t *operation, xmlNode *request, if (upgrade_rc != NULL) { // Our upgrade request was rejected by DC, notify clients of result - crm_xml_add(request, PCMK__XA_CIB_RC, upgrade_rc); + pcmk__xe_set(request, PCMK__XA_CIB_RC, upgrade_rc); } else if ((max == NULL) && based_is_primary) { /* We are the DC, check if this upgrade is allowed */ @@ -705,7 +705,7 @@ forward_request(xmlNode *request) pcmk__s(client_name, "unspecified"), pcmk__s(call_id, "unspecified")); - crm_xml_add(request, PCMK__XA_CIB_DELEGATED_FROM, OUR_NODENAME); + pcmk__xe_set(request, PCMK__XA_CIB_DELEGATED_FROM, OUR_NODENAME); if (host != NULL) { peer = pcmk__get_node(0, host, NULL, pcmk__node_search_cluster_member); @@ -730,7 +730,7 @@ send_peer_reply(xmlNode *msg, const char *originator) pcmk__node_search_cluster_member); crm_trace("Sending request result to %s only", originator); - crm_xml_add(msg, PCMK__XA_CIB_ISREPLYTO, originator); + pcmk__xe_set(msg, PCMK__XA_CIB_ISREPLYTO, originator); pcmk__cluster_send_message(node, pcmk_ipc_based, msg); } @@ -788,7 +788,7 @@ cib_process_request(xmlNode *request, gboolean privileged, op, pcmk__s(client_name, "client"), call_id, originator, pcmk__s(host, "all"), reply_to); } else { - crm_xml_add(request, PCMK__XA_SRC, OUR_NODENAME); + pcmk__xe_set(request, PCMK__XA_SRC, OUR_NODENAME); crm_trace("Processing local %s operation from %s/%s intended for %s", op, pcmk__s(client_name, "client"), call_id, pcmk__s(host, "all")); @@ -1212,7 +1212,7 @@ cib_peer_callback(xmlNode * msg, void *private_data) } if (pcmk__xe_get(msg, PCMK__XA_CIB_CLIENTNAME) == NULL) { - crm_xml_add(msg, PCMK__XA_CIB_CLIENTNAME, originator); + pcmk__xe_set(msg, PCMK__XA_CIB_CLIENTNAME, originator); } /* crm_log_xml_trace(msg, "Peer[inbound]"); */ @@ -1261,8 +1261,8 @@ initiate_exit(void) crm_info("Sending shutdown request to %d peers", active); leaving = pcmk__xe_create(NULL, PCMK__XE_EXIT_NOTIFICATION); - crm_xml_add(leaving, PCMK__XA_T, PCMK__VALUE_CIB); - crm_xml_add(leaving, PCMK__XA_CIB_OP, PCMK__CIB_REQUEST_SHUTDOWN); + pcmk__xe_set(leaving, PCMK__XA_T, PCMK__VALUE_CIB); + pcmk__xe_set(leaving, PCMK__XA_CIB_OP, PCMK__CIB_REQUEST_SHUTDOWN); pcmk__cluster_send_message(NULL, pcmk_ipc_based, leaving); pcmk__xml_free(leaving); diff --git a/daemons/based/based_messages.c b/daemons/based/based_messages.c index e6791d0e5b8..b8f836b3337 100644 --- a/daemons/based/based_messages.c +++ b/daemons/based/based_messages.c @@ -123,9 +123,9 @@ send_sync_request(const char *host) crm_info("Requesting re-sync from %s", (host? host : "all peers")); sync_in_progress = 1; - crm_xml_add(sync_me, PCMK__XA_T, PCMK__VALUE_CIB); - crm_xml_add(sync_me, PCMK__XA_CIB_OP, PCMK__CIB_REQUEST_SYNC_TO_ONE); - crm_xml_add(sync_me, PCMK__XA_CIB_DELEGATED_FROM, OUR_NODENAME); + pcmk__xe_set(sync_me, PCMK__XA_T, PCMK__VALUE_CIB); + pcmk__xe_set(sync_me, PCMK__XA_CIB_OP, PCMK__CIB_REQUEST_SYNC_TO_ONE); + pcmk__xe_set(sync_me, PCMK__XA_CIB_DELEGATED_FROM, OUR_NODENAME); if (host != NULL) { peer = pcmk__get_node(0, host, NULL, pcmk__node_search_cluster_member); @@ -147,9 +147,9 @@ cib_process_ping(const char *op, int options, const char *section, xmlNode * req crm_trace("Processing \"%s\" event %s from %s", op, seq, host); *answer = pcmk__xe_create(NULL, PCMK__XE_PING_RESPONSE); - crm_xml_add(*answer, PCMK_XA_CRM_FEATURE_SET, CRM_FEATURE_SET); - crm_xml_add(*answer, PCMK__XA_DIGEST, digest); - crm_xml_add(*answer, PCMK__XA_CIB_PING_ID, seq); + pcmk__xe_set(*answer, PCMK_XA_CRM_FEATURE_SET, CRM_FEATURE_SET); + pcmk__xe_set(*answer, PCMK__XA_DIGEST, digest); + pcmk__xe_set(*answer, PCMK__XA_CIB_PING_ID, seq); wrapper = pcmk__xe_create(*answer, PCMK__XE_CIB_CALLDATA); @@ -233,13 +233,13 @@ cib_process_upgrade_server(const char *op, int options, const char *section, xml rc = pcmk_ok; crm_notice("Upgrade request from %s verified", host); - crm_xml_add(up, PCMK__XA_T, PCMK__VALUE_CIB); - crm_xml_add(up, PCMK__XA_CIB_OP, PCMK__CIB_REQUEST_UPGRADE); - crm_xml_add(up, PCMK__XA_CIB_SCHEMA_MAX, new_schema); - crm_xml_add(up, PCMK__XA_CIB_DELEGATED_FROM, host); - crm_xml_add(up, PCMK__XA_CIB_CLIENTID, client_id); - crm_xml_add(up, PCMK__XA_CIB_CALLOPT, call_opts); - crm_xml_add(up, PCMK__XA_CIB_CALLID, call_id); + pcmk__xe_set(up, PCMK__XA_T, PCMK__VALUE_CIB); + pcmk__xe_set(up, PCMK__XA_CIB_OP, PCMK__CIB_REQUEST_UPGRADE); + pcmk__xe_set(up, PCMK__XA_CIB_SCHEMA_MAX, new_schema); + pcmk__xe_set(up, PCMK__XA_CIB_DELEGATED_FROM, host); + pcmk__xe_set(up, PCMK__XA_CIB_CLIENTID, client_id); + pcmk__xe_set(up, PCMK__XA_CIB_CALLOPT, call_opts); + pcmk__xe_set(up, PCMK__XA_CIB_CALLID, call_id); pcmk__cluster_send_message(NULL, pcmk_ipc_based, up); @@ -263,13 +263,13 @@ cib_process_upgrade_server(const char *op, int options, const char *section, xml if (origin) { xmlNode *up = pcmk__xe_create(NULL, __func__); - crm_xml_add(up, PCMK__XA_T, PCMK__VALUE_CIB); - crm_xml_add(up, PCMK__XA_CIB_OP, PCMK__CIB_REQUEST_UPGRADE); - crm_xml_add(up, PCMK__XA_CIB_DELEGATED_FROM, host); - crm_xml_add(up, PCMK__XA_CIB_ISREPLYTO, host); - crm_xml_add(up, PCMK__XA_CIB_CLIENTID, client_id); - crm_xml_add(up, PCMK__XA_CIB_CALLOPT, call_opts); - crm_xml_add(up, PCMK__XA_CIB_CALLID, call_id); + pcmk__xe_set(up, PCMK__XA_T, PCMK__VALUE_CIB); + pcmk__xe_set(up, PCMK__XA_CIB_OP, PCMK__CIB_REQUEST_UPGRADE); + pcmk__xe_set(up, PCMK__XA_CIB_DELEGATED_FROM, host); + pcmk__xe_set(up, PCMK__XA_CIB_ISREPLYTO, host); + pcmk__xe_set(up, PCMK__XA_CIB_CLIENTID, client_id); + pcmk__xe_set(up, PCMK__XA_CIB_CALLOPT, call_opts); + pcmk__xe_set(up, PCMK__XA_CIB_CALLID, call_id); pcmk__xe_set_int(up, PCMK__XA_CIB_UPGRADE_RC, rc); if (!pcmk__cluster_send_message(origin, pcmk_ipc_based, up)) { crm_warn("Could not send CIB upgrade result to %s", host); @@ -396,9 +396,7 @@ cib_msg_copy(xmlNode *msg) const char *field = field_list[lpc]; const char *value = pcmk__xe_get(msg, field); - if (value != NULL) { - crm_xml_add(copy, field, value); - } + pcmk__xe_set(copy, field, value); } return copy; @@ -423,22 +421,22 @@ sync_our_cib(xmlNode * request, gboolean all) replace_request = cib_msg_copy(request); if (host != NULL) { - crm_xml_add(replace_request, PCMK__XA_CIB_ISREPLYTO, host); + pcmk__xe_set(replace_request, PCMK__XA_CIB_ISREPLYTO, host); } if (all) { pcmk__xe_remove_attr(replace_request, PCMK__XA_CIB_HOST); } - crm_xml_add(replace_request, PCMK__XA_CIB_OP, PCMK__CIB_REQUEST_REPLACE); + pcmk__xe_set(replace_request, PCMK__XA_CIB_OP, PCMK__CIB_REQUEST_REPLACE); // @TODO Keep for tracing, or drop? - crm_xml_add(replace_request, PCMK__XA_ORIGINAL_CIB_OP, op); + pcmk__xe_set(replace_request, PCMK__XA_ORIGINAL_CIB_OP, op); pcmk__xe_set_bool_attr(replace_request, PCMK__XA_CIB_UPDATE, true); - crm_xml_add(replace_request, PCMK_XA_CRM_FEATURE_SET, CRM_FEATURE_SET); + pcmk__xe_set(replace_request, PCMK_XA_CRM_FEATURE_SET, CRM_FEATURE_SET); digest = pcmk__digest_xml(the_cib, true); - crm_xml_add(replace_request, PCMK__XA_DIGEST, digest); + pcmk__xe_set(replace_request, PCMK__XA_DIGEST, digest); wrapper = pcmk__xe_create(replace_request, PCMK__XE_CIB_CALLDATA); pcmk__xml_copy(wrapper, the_cib); diff --git a/daemons/based/based_notify.c b/daemons/based/based_notify.c index 7a164b0945e..d71bd0ac561 100644 --- a/daemons/based/based_notify.c +++ b/daemons/based/based_notify.c @@ -180,13 +180,13 @@ cib_diff_notify(const char *op, int result, const char *call_id, update_msg = pcmk__xe_create(NULL, PCMK__XE_NOTIFY); - crm_xml_add(update_msg, PCMK__XA_T, PCMK__VALUE_CIB_NOTIFY); - crm_xml_add(update_msg, PCMK__XA_SUBT, PCMK__VALUE_CIB_DIFF_NOTIFY); - crm_xml_add(update_msg, PCMK__XA_CIB_OP, op); - crm_xml_add(update_msg, PCMK__XA_CIB_CLIENTID, client_id); - crm_xml_add(update_msg, PCMK__XA_CIB_CLIENTNAME, client_name); - crm_xml_add(update_msg, PCMK__XA_CIB_CALLID, call_id); - crm_xml_add(update_msg, PCMK__XA_SRC, origin); + pcmk__xe_set(update_msg, PCMK__XA_T, PCMK__VALUE_CIB_NOTIFY); + pcmk__xe_set(update_msg, PCMK__XA_SUBT, PCMK__VALUE_CIB_DIFF_NOTIFY); + pcmk__xe_set(update_msg, PCMK__XA_CIB_OP, op); + pcmk__xe_set(update_msg, PCMK__XA_CIB_CLIENTID, client_id); + pcmk__xe_set(update_msg, PCMK__XA_CIB_CLIENTNAME, client_name); + pcmk__xe_set(update_msg, PCMK__XA_CIB_CALLID, call_id); + pcmk__xe_set(update_msg, PCMK__XA_SRC, origin); pcmk__xe_set_int(update_msg, PCMK__XA_CIB_RC, result); wrapper = pcmk__xe_create(update_msg, PCMK__XE_CIB_UPDATE_RESULT); diff --git a/daemons/based/based_remote.c b/daemons/based/based_remote.c index 620a222ab10..21f60b12304 100644 --- a/daemons/based/based_remote.c +++ b/daemons/based/based_remote.c @@ -385,16 +385,16 @@ cib_handle_remote_msg(pcmk__client_t *client, xmlNode *command) pcmk__xe_remove_attr(command, PCMK__XA_CIB_HOST); pcmk__xe_remove_attr(command, PCMK__XA_CIB_UPDATE); - crm_xml_add(command, PCMK__XA_T, PCMK__VALUE_CIB); - crm_xml_add(command, PCMK__XA_CIB_CLIENTID, client->id); - crm_xml_add(command, PCMK__XA_CIB_CLIENTNAME, client->name); - crm_xml_add(command, PCMK__XA_CIB_USER, client->user); + pcmk__xe_set(command, PCMK__XA_T, PCMK__VALUE_CIB); + pcmk__xe_set(command, PCMK__XA_CIB_CLIENTID, client->id); + pcmk__xe_set(command, PCMK__XA_CIB_CLIENTNAME, client->name); + pcmk__xe_set(command, PCMK__XA_CIB_USER, client->user); if (pcmk__xe_get(command, PCMK__XA_CIB_CALLID) == NULL) { char *call_uuid = crm_generate_uuid(); /* fix the command */ - crm_xml_add(command, PCMK__XA_CIB_CALLID, call_uuid); + pcmk__xe_set(command, PCMK__XA_CIB_CALLID, call_uuid); free(call_uuid); } @@ -493,8 +493,8 @@ cib_remote_msg(gpointer data) /* send ACK */ reg = pcmk__xe_create(NULL, PCMK__XE_CIB_RESULT); - crm_xml_add(reg, PCMK__XA_CIB_OP, CRM_OP_REGISTER); - crm_xml_add(reg, PCMK__XA_CIB_CLIENTID, client->id); + pcmk__xe_set(reg, PCMK__XA_CIB_OP, CRM_OP_REGISTER); + pcmk__xe_set(reg, PCMK__XA_CIB_CLIENTID, client->id); pcmk__remote_send_xml(client->remote, reg); pcmk__xml_free(reg); pcmk__xml_free(command); diff --git a/daemons/based/pacemaker-based.c b/daemons/based/pacemaker-based.c index 5abe62f84b1..009d2bc5413 100644 --- a/daemons/based/pacemaker-based.c +++ b/daemons/based/pacemaker-based.c @@ -332,7 +332,7 @@ cib_cs_dispatch(cpg_handle_t handle, free(data); return; } - crm_xml_add(xml, PCMK__XA_SRC, from); + pcmk__xe_set(xml, PCMK__XA_SRC, from); cib_peer_callback(xml, NULL); pcmk__xml_free(xml); diff --git a/daemons/controld/controld_cib.c b/daemons/controld/controld_cib.c index def5108ed0d..92803606dc0 100644 --- a/daemons/controld/controld_cib.c +++ b/daemons/controld/controld_cib.c @@ -527,7 +527,7 @@ build_parameter_list(const lrmd_event_data_t *op, if (v != NULL) { crm_trace("Adding attr %s=%s to the xml result", param->rap_name, v); - crm_xml_add(*result, param->rap_name, v); + pcmk__xe_set(*result, param->rap_name, v); } } else { @@ -584,9 +584,9 @@ append_restart_list(lrmd_event_data_t *op, struct ra_metadata_s *metadata, * the resource supports reload, no matter if it actually supports any * reloadable parameters */ - crm_xml_add(update, PCMK__XA_OP_FORCE_RESTART, - (list == NULL)? "" : (const char *) list->str); - crm_xml_add(update, PCMK__XA_OP_RESTART_DIGEST, digest); + pcmk__xe_set(update, PCMK__XA_OP_FORCE_RESTART, + (list == NULL)? "" : (const char *) list->str); + pcmk__xe_set(update, PCMK__XA_OP_RESTART_DIGEST, digest); if ((list != NULL) && (list->len > 0)) { crm_trace("%s: %s, %s", op->rsc_id, digest, (const char *) list->str); @@ -618,9 +618,9 @@ append_secure_list(lrmd_event_data_t *op, struct ra_metadata_s *metadata, if (list != NULL) { digest = pcmk__digest_operation(secure); - crm_xml_add(update, PCMK__XA_OP_SECURE_PARAMS, - (const char *) list->str); - crm_xml_add(update, PCMK__XA_OP_SECURE_DIGEST, digest); + pcmk__xe_set(update, PCMK__XA_OP_SECURE_PARAMS, + (const char *) list->str); + pcmk__xe_set(update, PCMK__XA_OP_SECURE_DIGEST, digest); crm_trace("%s: %s, %s", op->rsc_id, digest, (const char *) list->str); g_string_free(list, TRUE); @@ -894,23 +894,23 @@ controld_update_resource_history(const char *node_name, node_id = node_name; pcmk__xe_set_bool_attr(xml, PCMK_XA_REMOTE_NODE, true); } - crm_xml_add(xml, PCMK_XA_ID, node_id); - crm_xml_add(xml, PCMK_XA_UNAME, node_name); - crm_xml_add(xml, PCMK_XA_CRM_DEBUG_ORIGIN, __func__); + pcmk__xe_set(xml, PCMK_XA_ID, node_id); + pcmk__xe_set(xml, PCMK_XA_UNAME, node_name); + pcmk__xe_set(xml, PCMK_XA_CRM_DEBUG_ORIGIN, __func__); // xml = pcmk__xe_create(xml, PCMK__XE_LRM); - crm_xml_add(xml, PCMK_XA_ID, node_id); + pcmk__xe_set(xml, PCMK_XA_ID, node_id); // xml = pcmk__xe_create(xml, PCMK__XE_LRM_RESOURCES); // xml = pcmk__xe_create(xml, PCMK__XE_LRM_RESOURCE); - crm_xml_add(xml, PCMK_XA_ID, op->rsc_id); - crm_xml_add(xml, PCMK_XA_CLASS, rsc->standard); - crm_xml_add(xml, PCMK_XA_PROVIDER, rsc->provider); - crm_xml_add(xml, PCMK_XA_TYPE, rsc->type); + pcmk__xe_set(xml, PCMK_XA_ID, op->rsc_id); + pcmk__xe_set(xml, PCMK_XA_CLASS, rsc->standard); + pcmk__xe_set(xml, PCMK_XA_PROVIDER, rsc->provider); + pcmk__xe_set(xml, PCMK_XA_TYPE, rsc->type); if (lock_time != 0) { /* Actions on a locked resource should either preserve the lock by * recording it with the action result, or clear it. @@ -926,7 +926,7 @@ controld_update_resource_history(const char *node_name, if (container != NULL) { crm_trace("Resource %s is a part of container resource %s", op->rsc_id, container); - crm_xml_add(xml, PCMK__META_CONTAINER, container); + pcmk__xe_set(xml, PCMK__META_CONTAINER, container); } } @@ -957,13 +957,13 @@ controld_delete_action_history(const lrmd_event_data_t *op) xml_top = pcmk__xe_create(NULL, PCMK__XE_LRM_RSC_OP); pcmk__xe_set_int(xml_top, PCMK__XA_CALL_ID, op->call_id); - crm_xml_add(xml_top, PCMK__XA_TRANSITION_KEY, op->user_data); + pcmk__xe_set(xml_top, PCMK__XA_TRANSITION_KEY, op->user_data); if (op->interval_ms > 0) { char *op_id = pcmk__op_key(op->rsc_id, op->op_type, op->interval_ms); /* Avoid deleting last_failure too (if it was a result of this recurring op failing) */ - crm_xml_add(xml_top, PCMK_XA_ID, op_id); + pcmk__xe_set(xml_top, PCMK_XA_ID, op_id); free(op_id); } diff --git a/daemons/controld/controld_control.c b/daemons/controld/controld_control.c index ed4751b8d76..abc76b8b457 100644 --- a/daemons/controld/controld_control.c +++ b/daemons/controld/controld_control.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. * @@ -395,7 +395,7 @@ dispatch_controller_ipc(qb_ipcs_connection_t * c, void *data, size_t size) pcmk__assert(client->user != NULL); pcmk__update_acl_user(msg, PCMK__XA_CRM_USER, client->user); - crm_xml_add(msg, PCMK__XA_CRM_SYS_FROM, client->id); + pcmk__xe_set(msg, PCMK__XA_CRM_SYS_FROM, client->id); if (controld_authorize_ipc_message(msg, client, NULL)) { crm_trace("Processing IPC message from client %s", pcmk__client_name(client)); diff --git a/daemons/controld/controld_corosync.c b/daemons/controld/controld_corosync.c index 61cf6293cc5..3556cde29d0 100644 --- a/daemons/controld/controld_corosync.c +++ b/daemons/controld/controld_corosync.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. * @@ -49,7 +49,7 @@ crmd_cs_dispatch(cpg_handle_t handle, const struct cpg_name *groupName, return; } - crm_xml_add(xml, PCMK__XA_SRC, from); + pcmk__xe_set(xml, PCMK__XA_SRC, from); peer = pcmk__get_node(0, from, NULL, pcmk__node_search_cluster_member); if (!pcmk_is_set(peer->processes, crm_proc_cpg)) { diff --git a/daemons/controld/controld_election.c b/daemons/controld/controld_election.c index e8651b78c1d..29f5087a215 100644 --- a/daemons/controld/controld_election.c +++ b/daemons/controld/controld_election.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. * @@ -219,7 +219,7 @@ do_dc_takeover(long long action, cib_none); cib = pcmk__xe_create(NULL, PCMK_XE_CIB); - crm_xml_add(cib, PCMK_XA_CRM_FEATURE_SET, CRM_FEATURE_SET); + pcmk__xe_set(cib, PCMK_XA_CRM_FEATURE_SET, CRM_FEATURE_SET); controld_update_cib(PCMK_XE_CIB, cib, cib_none, feature_update_callback); dc_takeover_update_attr(PCMK_OPT_HAVE_WATCHDOG, pcmk__btoa(watchdog)); diff --git a/daemons/controld/controld_execd.c b/daemons/controld/controld_execd.c index 988a2afa89a..24a7db34979 100644 --- a/daemons/controld/controld_execd.c +++ b/daemons/controld/controld_execd.c @@ -541,10 +541,10 @@ build_active_RAs(lrm_state_t * lrm_state, xmlNode * rsc_list) GList *gIter = NULL; xmlNode *xml_rsc = pcmk__xe_create(rsc_list, PCMK__XE_LRM_RESOURCE); - crm_xml_add(xml_rsc, PCMK_XA_ID, entry->id); - crm_xml_add(xml_rsc, PCMK_XA_TYPE, entry->rsc.type); - crm_xml_add(xml_rsc, PCMK_XA_CLASS, entry->rsc.standard); - crm_xml_add(xml_rsc, PCMK_XA_PROVIDER, entry->rsc.provider); + pcmk__xe_set(xml_rsc, PCMK_XA_ID, entry->id); + pcmk__xe_set(xml_rsc, PCMK_XA_TYPE, entry->rsc.type); + pcmk__xe_set(xml_rsc, PCMK_XA_CLASS, entry->rsc.standard); + pcmk__xe_set(xml_rsc, PCMK_XA_PROVIDER, entry->rsc.provider); if (entry->last && entry->last->params) { static const char *name = CRM_META "_" PCMK__META_CONTAINER; @@ -553,7 +553,7 @@ build_active_RAs(lrm_state_t * lrm_state, xmlNode * rsc_list) if (container) { crm_trace("Resource %s is a part of container resource %s", entry->id, container); - crm_xml_add(xml_rsc, PCMK__META_CONTAINER, container); + pcmk__xe_set(xml_rsc, PCMK__META_CONTAINER, container); } } controld_add_resource_history_xml(xml_rsc, &(entry->rsc), entry->failed, @@ -595,7 +595,7 @@ controld_query_executor_state(void) } xml_data = pcmk__xe_create(xml_state, PCMK__XE_LRM); - crm_xml_add(xml_data, PCMK_XA_ID, peer->xml_id); + pcmk__xe_set(xml_data, PCMK_XA_ID, peer->xml_id); rsc_list = pcmk__xe_create(xml_data, PCMK__XE_LRM_RESOURCES); // Build a list of active (not necessarily running) resources @@ -1732,11 +1732,11 @@ controld_ack_event_directly(const char *to_host, const char *to_sys, __func__); iter = pcmk__xe_create(update, PCMK__XE_LRM); - crm_xml_add(iter, PCMK_XA_ID, controld_globals.our_uuid); + pcmk__xe_set(iter, PCMK_XA_ID, controld_globals.our_uuid); iter = pcmk__xe_create(iter, PCMK__XE_LRM_RESOURCES); iter = pcmk__xe_create(iter, PCMK__XE_LRM_RESOURCE); - crm_xml_add(iter, PCMK_XA_ID, op->rsc_id); + pcmk__xe_set(iter, PCMK_XA_ID, op->rsc_id); controld_add_resource_history_xml(iter, rsc, op, controld_globals.cluster->priv->node_name); diff --git a/daemons/controld/controld_execd_state.c b/daemons/controld/controld_execd_state.c index 0393f038675..7686fecdd4c 100644 --- a/daemons/controld/controld_execd_state.c +++ b/daemons/controld/controld_execd_state.c @@ -453,7 +453,7 @@ crmd_proxy_dispatch(const char *session, xmlNode *msg) { crm_trace("Processing proxied IPC message from session %s", session); crm_log_xml_trace(msg, "controller[inbound]"); - crm_xml_add(msg, PCMK__XA_CRM_SYS_FROM, session); + pcmk__xe_set(msg, PCMK__XA_CRM_SYS_FROM, session); if (controld_authorize_ipc_message(msg, NULL, session)) { route_message(C_IPC_MESSAGE, msg); } @@ -558,7 +558,7 @@ crmd_remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg) CRM_CHECK(request != NULL, return); CRM_CHECK(lrm_state->node_name, return); - crm_xml_add(request, PCMK_XE_ACL_ROLE, "pacemaker-remote"); + pcmk__xe_set(request, PCMK_XE_ACL_ROLE, "pacemaker-remote"); pcmk__update_acl_user(request, PCMK__XA_LRMD_IPC_USER, lrm_state->node_name); @@ -574,7 +574,7 @@ crmd_remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg) pcmk__xe_get_int(request, PCMK_XA_ID, &node_id); if ((node_id <= 0) && (pcmk__xe_get(request, PCMK_XA_UNAME) == NULL)) { - crm_xml_add(request, PCMK_XA_UNAME, lrm_state->node_name); + pcmk__xe_set(request, PCMK_XA_UNAME, lrm_state->node_name); } } @@ -589,7 +589,7 @@ crmd_remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg) int msg_id = 0; xmlNode *op_reply = pcmk__xe_create(NULL, PCMK__XE_ACK); - crm_xml_add(op_reply, PCMK_XA_FUNCTION, __func__); + pcmk__xe_set(op_reply, PCMK_XA_FUNCTION, __func__); pcmk__xe_set_int(op_reply, PCMK__XA_LINE, __LINE__); pcmk__xe_get_int(msg, PCMK__XA_LRMD_IPC_MSG_ID, &msg_id); diff --git a/daemons/controld/controld_fencing.c b/daemons/controld/controld_fencing.c index 33a02267f3b..68d5c5fd244 100644 --- a/daemons/controld/controld_fencing.c +++ b/daemons/controld/controld_fencing.c @@ -249,12 +249,12 @@ update_node_state_after_fencing(const char *target, const char *target_xml_id) crmd_peer_down(peer, TRUE); node_state = create_node_state_update(peer, flags, NULL, __func__); - crm_xml_add(node_state, PCMK_XA_ID, target_xml_id); + pcmk__xe_set(node_state, PCMK_XA_ID, target_xml_id); if (pcmk_is_set(peer->flags, pcmk__node_status_remote)) { char *now_s = pcmk__ttoa(time(NULL)); - crm_xml_add(node_state, PCMK__XA_NODE_FENCED, now_s); + pcmk__xe_set(node_state, PCMK__XA_NODE_FENCED, now_s); free(now_s); } diff --git a/daemons/controld/controld_join_client.c b/daemons/controld/controld_join_client.c index f7441442ae3..e831ceee873 100644 --- a/daemons/controld/controld_join_client.c +++ b/daemons/controld/controld_join_client.c @@ -181,8 +181,8 @@ join_query_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, void * CRM_SYSTEM_DC, CRM_OP_JOIN_REQUEST, generation); - crm_xml_add(join_request, PCMK__XA_JOIN_ID, join_id); - crm_xml_add(join_request, PCMK_XA_CRM_FEATURE_SET, CRM_FEATURE_SET); + pcmk__xe_set(join_request, PCMK__XA_JOIN_ID, join_id); + pcmk__xe_set(join_request, PCMK_XA_CRM_FEATURE_SET, CRM_FEATURE_SET); pcmk__cluster_send_message(dc_node, pcmk_ipc_controld, join_request); pcmk__xml_free(join_request); } diff --git a/daemons/controld/controld_join_dc.c b/daemons/controld/controld_join_dc.c index 07c9b978fd9..8b8a7bf0a4f 100644 --- a/daemons/controld/controld_join_dc.c +++ b/daemons/controld/controld_join_dc.c @@ -302,7 +302,7 @@ join_make_offer(gpointer key, gpointer value, gpointer user_data) offer = create_dc_message(CRM_OP_JOIN_OFFER, member->name); // Advertise our feature set so the joining node can bail if not compatible - crm_xml_add(offer, PCMK_XA_CRM_FEATURE_SET, CRM_FEATURE_SET); + pcmk__xe_set(offer, PCMK_XA_CRM_FEATURE_SET, CRM_FEATURE_SET); crm_info("Sending join-%d offer to %s", current_join_id, member->name); pcmk__cluster_send_message(member, pcmk_ipc_controld, offer); @@ -922,8 +922,8 @@ finalize_join_for(gpointer key, gpointer value, gpointer user_data) */ crm_trace("Updating node name and UUID in CIB for %s", join_to); tmp1 = pcmk__xe_create(NULL, PCMK_XE_NODE); - crm_xml_add(tmp1, PCMK_XA_ID, pcmk__cluster_get_xml_id(join_node)); - crm_xml_add(tmp1, PCMK_XA_UNAME, join_to); + pcmk__xe_set(tmp1, PCMK_XA_ID, pcmk__cluster_get_xml_id(join_node)); + pcmk__xe_set(tmp1, PCMK_XA_UNAME, join_to); fsa_cib_anon_update(PCMK_XE_NODES, tmp1); pcmk__xml_free(tmp1); diff --git a/daemons/controld/controld_membership.c b/daemons/controld/controld_membership.c index 4faf8497317..72913341815 100644 --- a/daemons/controld/controld_membership.c +++ b/daemons/controld/controld_membership.c @@ -126,6 +126,7 @@ create_node_state_update(pcmk__node_status_t *node, int flags, xmlNode *parent, const char *source) { // @TODO Ensure all callers handle NULL returns + const char *id = NULL; const char *value = NULL; xmlNode *node_state; @@ -141,14 +142,16 @@ create_node_state_update(pcmk__node_status_t *node, int flags, pcmk__xe_set_bool_attr(node_state, PCMK_XA_REMOTE_NODE, true); } - if (crm_xml_add(node_state, PCMK_XA_ID, - pcmk__cluster_get_xml_id(node)) == NULL) { + id = pcmk__cluster_get_xml_id(node); + if ((id == NULL) + || (pcmk__xe_set(node_state, PCMK_XA_ID, id) != pcmk_rc_ok)) { + crm_info("Node update for %s cancelled: no ID", node->name); pcmk__xml_free(node_state); return NULL; } - crm_xml_add(node_state, PCMK_XA_UNAME, node->name); + pcmk__xe_set(node_state, PCMK_XA_UNAME, node->name); if ((flags & node_update_cluster) && node->state) { if (compare_version(controld_globals.dc_version, "3.18.0") >= 0) { @@ -174,7 +177,7 @@ create_node_state_update(pcmk__node_status_t *node, int flags, if (pcmk_is_set(node->processes, crm_get_cluster_proc())) { value = PCMK_VALUE_ONLINE; } - crm_xml_add(node_state, PCMK_XA_CRMD, value); + pcmk__xe_set(node_state, PCMK_XA_CRMD, value); } } @@ -184,15 +187,15 @@ create_node_state_update(pcmk__node_status_t *node, int flags, } else { value = CRMD_JOINSTATE_MEMBER; } - crm_xml_add(node_state, PCMK__XA_JOIN, value); + pcmk__xe_set(node_state, PCMK__XA_JOIN, value); } if (flags & node_update_expected) { - crm_xml_add(node_state, PCMK_XA_EXPECTED, node->expected); + pcmk__xe_set(node_state, PCMK_XA_EXPECTED, node->expected); } } - crm_xml_add(node_state, PCMK_XA_CRM_DEBUG_ORIGIN, source); + pcmk__xe_set(node_state, PCMK_XA_CRM_DEBUG_ORIGIN, source); return node_state; } @@ -272,8 +275,8 @@ search_conflicting_node_callback(xmlNode * msg, int call_id, int rc, remove_conflicting_node_callback); node_state_xml = pcmk__xe_create(NULL, PCMK__XE_NODE_STATE); - crm_xml_add(node_state_xml, PCMK_XA_ID, node_uuid); - crm_xml_add(node_state_xml, PCMK_XA_UNAME, node_uname); + pcmk__xe_set(node_state_xml, PCMK_XA_ID, node_uuid); + pcmk__xe_set(node_state_xml, PCMK_XA_UNAME, node_uname); delete_call_id = cib_conn->cmds->remove(cib_conn, PCMK_XE_STATUS, node_state_xml, cib_none); @@ -338,8 +341,8 @@ populate_cib_nodes(enum node_update_flags flags, const char *source) /* We need both to be valid */ new_node = pcmk__xe_create(node_list, PCMK_XE_NODE); - crm_xml_add(new_node, PCMK_XA_ID, node->xml_id); - crm_xml_add(new_node, PCMK_XA_UNAME, node->name); + pcmk__xe_set(new_node, PCMK_XA_ID, node->xml_id); + pcmk__xe_set(new_node, PCMK_XA_UNAME, node->name); /* Search and remove unknown nodes with the conflicting uname from CIB */ pcmk__g_strcat(xpath, @@ -430,7 +433,7 @@ crm_update_quorum(gboolean quorum, gboolean force_update) update = pcmk__xe_create(NULL, PCMK_XE_CIB); pcmk__xe_set_int(update, PCMK_XA_HAVE_QUORUM, quorum); - crm_xml_add(update, PCMK_XA_DC_UUID, controld_globals.our_uuid); + pcmk__xe_set(update, PCMK_XA_DC_UUID, controld_globals.our_uuid); crm_debug("Updating quorum status to %s", pcmk__btoa(quorum)); controld_update_cib(PCMK_XE_CIB, update, cib_none, diff --git a/daemons/controld/controld_messages.c b/daemons/controld/controld_messages.c index c88b95e948a..f987a07a5f5 100644 --- a/daemons/controld/controld_messages.c +++ b/daemons/controld/controld_messages.c @@ -715,7 +715,7 @@ handle_lrm_delete(xmlNode *stored_msg) mode = pcmk__xe_get(msg_data, PCMK__XA_MODE); if (!pcmk__str_eq(mode, PCMK__VALUE_CIB, pcmk__str_none)) { // Relay to affected node - crm_xml_add(stored_msg, PCMK__XA_CRM_SYS_TO, CRM_SYSTEM_LRMD); + pcmk__xe_set(stored_msg, PCMK__XA_CRM_SYS_TO, CRM_SYSTEM_LRMD); return I_ROUTER; } else { @@ -832,16 +832,16 @@ create_ping_reply(const xmlNode *msg) ping = pcmk__xe_create(NULL, PCMK__XE_PING_RESPONSE); value = pcmk__xe_get(msg, PCMK__XA_CRM_SYS_TO); - crm_xml_add(ping, PCMK__XA_CRM_SUBSYSTEM, value); + pcmk__xe_set(ping, PCMK__XA_CRM_SUBSYSTEM, value); // Add controller state value = fsa_state2string(controld_globals.fsa_state); - crm_xml_add(ping, PCMK__XA_CRMD_STATE, value); + pcmk__xe_set(ping, PCMK__XA_CRMD_STATE, value); crm_notice("Current ping state: %s", value); // CTS needs this // Add controller health // @TODO maybe do some checks to determine meaningful status - crm_xml_add(ping, PCMK_XA_RESULT, "ok"); + pcmk__xe_set(ping, PCMK_XA_RESULT, "ok"); reply = pcmk__new_reply(msg, ping); pcmk__xml_free(ping); @@ -884,8 +884,8 @@ handle_node_list(const xmlNode *request) pcmk__xe_set_ll(xml, PCMK_XA_ID, (long long) node->cluster_layer_id); // uint32_t - crm_xml_add(xml, PCMK_XA_UNAME, node->name); - crm_xml_add(xml, PCMK__XA_IN_CCM, node->state); + pcmk__xe_set(xml, PCMK_XA_UNAME, node->name); + pcmk__xe_set(xml, PCMK__XA_IN_CCM, node->state); } // Create and send reply @@ -919,7 +919,7 @@ handle_node_info_request(const xmlNode *msg) // Build reply reply_data = pcmk__xe_create(NULL, PCMK_XE_NODE); - crm_xml_add(reply_data, PCMK__XA_CRM_SUBSYSTEM, CRM_SYSTEM_CRMD); + pcmk__xe_set(reply_data, PCMK__XA_CRM_SUBSYSTEM, CRM_SYSTEM_CRMD); // Add whether current partition has quorum pcmk__xe_set_bool_attr(reply_data, PCMK_XA_HAVE_QUORUM, @@ -945,9 +945,9 @@ handle_node_info_request(const xmlNode *msg) node = pcmk__search_node_caches(node_id, value, NULL, pcmk__node_search_any); if (node) { - crm_xml_add(reply_data, PCMK_XA_ID, node->xml_id); - crm_xml_add(reply_data, PCMK_XA_UNAME, node->name); - crm_xml_add(reply_data, PCMK_XA_CRMD, node->state); + pcmk__xe_set(reply_data, PCMK_XA_ID, node->xml_id); + pcmk__xe_set(reply_data, PCMK_XA_UNAME, node->name); + pcmk__xe_set(reply_data, PCMK_XA_CRMD, node->state); pcmk__xe_set_bool_attr(reply_data, PCMK_XA_REMOTE_NODE, pcmk_is_set(node->flags, pcmk__node_status_remote)); @@ -1157,7 +1157,7 @@ handle_request(xmlNode *stored_msg, enum crmd_fsa_cause cause) } else if ((strcmp(op, CRM_OP_LRM_FAIL) == 0) || (strcmp(op, CRM_OP_REPROBE) == 0)) { - crm_xml_add(stored_msg, PCMK__XA_CRM_SYS_TO, CRM_SYSTEM_LRMD); + pcmk__xe_set(stored_msg, PCMK__XA_CRM_SYS_TO, CRM_SYSTEM_LRMD); return I_ROUTER; } else if (strcmp(op, CRM_OP_NOOP) == 0) { @@ -1301,7 +1301,7 @@ send_msg_via_ipc(xmlNode * msg, const char *sys, const char *src) client_channel = pcmk__find_client_by_id(sys); if (pcmk__xe_get(msg, PCMK__XA_SRC) == NULL) { - crm_xml_add(msg, PCMK__XA_SRC, src); + pcmk__xe_set(msg, PCMK__XA_SRC, src); } if (client_channel != NULL) { @@ -1371,12 +1371,12 @@ broadcast_remote_state_message(const char *node_name, bool node_up) crm_info("Notifying cluster of Pacemaker Remote node %s %s", node_name, node_up? "coming up" : "going down"); - crm_xml_add(msg, PCMK_XA_ID, node_name); + pcmk__xe_set(msg, PCMK_XA_ID, node_name); pcmk__xe_set_bool_attr(msg, PCMK__XA_IN_CCM, node_up); if (node_up) { - crm_xml_add(msg, PCMK__XA_CONNECTION_HOST, - controld_globals.cluster->priv->node_name); + pcmk__xe_set(msg, PCMK__XA_CONNECTION_HOST, + controld_globals.cluster->priv->node_name); } pcmk__cluster_send_message(NULL, pcmk_ipc_controld, msg); diff --git a/daemons/controld/controld_remote_ra.c b/daemons/controld/controld_remote_ra.c index 58694a8ad20..6b071337ba5 100644 --- a/daemons/controld/controld_remote_ra.c +++ b/daemons/controld/controld_remote_ra.c @@ -335,7 +335,7 @@ remote_node_up(const char *node_name) * needs to be fenced, this flag will allow various actions to determine * whether the fencing has happened yet. */ - crm_xml_add(state, PCMK__XA_NODE_FENCED, "0"); + pcmk__xe_set(state, PCMK__XA_NODE_FENCED, "0"); /* TODO: If the remote connection drops, and this (async) CIB update either * failed or has not yet completed, later actions could mistakenly think the @@ -1410,7 +1410,7 @@ remote_ra_maintenance(lrm_state_t * lrm_state, gboolean maintenance) update = pcmk__xe_create(NULL, PCMK_XE_STATUS); state = create_node_state_update(node, node_update_none, update, __func__); - crm_xml_add(state, PCMK__XA_NODE_IN_MAINTENANCE, (maintenance? "1" : "0")); + pcmk__xe_set(state, PCMK__XA_NODE_IN_MAINTENANCE, (maintenance? "1" : "0")); if (controld_update_cib(PCMK_XE_STATUS, update, call_opt, NULL) == pcmk_rc_ok) { /* TODO: still not 100% sure that async update will succeed ... */ diff --git a/daemons/controld/controld_schedulerd.c b/daemons/controld/controld_schedulerd.c index b575bf1db3f..f0fe42fa568 100644 --- a/daemons/controld/controld_schedulerd.c +++ b/daemons/controld/controld_schedulerd.c @@ -145,9 +145,9 @@ handle_reply(pcmk_schedulerd_api_reply_t *reply) * The name of the top level element here is irrelevant. Nothing checks it. */ fsa_input.msg = pcmk__xe_create(NULL, "dummy-reply"); - crm_xml_add(fsa_input.msg, PCMK_XA_REFERENCE, msg_ref); - crm_xml_add(fsa_input.msg, PCMK__XA_CRM_TGRAPH_IN, - reply->data.graph.input); + pcmk__xe_set(fsa_input.msg, PCMK_XA_REFERENCE, msg_ref); + pcmk__xe_set(fsa_input.msg, PCMK__XA_CRM_TGRAPH_IN, + reply->data.graph.input); crm_data_node = pcmk__xe_create(fsa_input.msg, PCMK__XE_CRM_XML); pcmk__xml_copy(crm_data_node, reply->data.graph.tgraph); @@ -400,7 +400,7 @@ force_local_option(xmlNode *xml, const char *attr_name, const char *attr_value) } crm_trace("Forcing %s/%s = %s", pcmk__xe_id(match), attr_name, attr_value); - crm_xml_add(match, PCMK_XA_VALUE, attr_value); + pcmk__xe_set(match, PCMK_XA_VALUE, attr_value); } if(max == 0) { @@ -430,16 +430,16 @@ force_local_option(xmlNode *xml, const char *attr_name, const char *attr_value) if (cluster_property_set == NULL) { cluster_property_set = pcmk__xe_create(crm_config, PCMK_XE_CLUSTER_PROPERTY_SET); - crm_xml_add(cluster_property_set, PCMK_XA_ID, - PCMK_VALUE_CIB_BOOTSTRAP_OPTIONS); + pcmk__xe_set(cluster_property_set, PCMK_XA_ID, + PCMK_VALUE_CIB_BOOTSTRAP_OPTIONS); } xml = pcmk__xe_create(cluster_property_set, PCMK_XE_NVPAIR); pcmk__xe_set_id(xml, "%s-%s", PCMK_VALUE_CIB_BOOTSTRAP_OPTIONS, attr_name); - crm_xml_add(xml, PCMK_XA_NAME, attr_name); - crm_xml_add(xml, PCMK_XA_VALUE, attr_value); + pcmk__xe_set(xml, PCMK_XA_NAME, attr_name); + pcmk__xe_set(xml, PCMK_XA_VALUE, attr_value); } xmlXPathFreeObject(xpathObj); } @@ -487,7 +487,7 @@ do_pe_invoke_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, void * scheduler is invoked */ pcmk__refresh_node_caches_from_cib(output); - crm_xml_add(output, PCMK_XA_DC_UUID, controld_globals.our_uuid); + pcmk__xe_set(output, PCMK_XA_DC_UUID, controld_globals.our_uuid); pcmk__xe_set_bool_attr(output, PCMK_XA_HAVE_QUORUM, pcmk_is_set(controld_globals.flags, controld_has_quorum)); diff --git a/daemons/controld/controld_te_actions.c b/daemons/controld/controld_te_actions.c index 0da4757ac68..5d63464b470 100644 --- a/daemons/controld/controld_te_actions.c +++ b/daemons/controld/controld_te_actions.c @@ -171,7 +171,7 @@ execute_cluster_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) counter = pcmk__transition_key(controld_globals.transition_graph->id, action->id, get_target_rc(action), controld_globals.te_uuid); - crm_xml_add(cmd, PCMK__XA_TRANSITION_KEY, counter); + pcmk__xe_set(cmd, PCMK__XA_TRANSITION_KEY, counter); node = pcmk__get_node(0, router_node, NULL, pcmk__node_search_cluster_member); @@ -288,20 +288,20 @@ controld_record_action_event(pcmk__graph_action_t *action, state = pcmk__xe_create(NULL, PCMK__XE_NODE_STATE); - crm_xml_add(state, PCMK_XA_ID, target_uuid); - crm_xml_add(state, PCMK_XA_UNAME, target); + pcmk__xe_set(state, PCMK_XA_ID, target_uuid); + pcmk__xe_set(state, PCMK_XA_UNAME, target); rsc = pcmk__xe_create(state, PCMK__XE_LRM); - crm_xml_add(rsc, PCMK_XA_ID, target_uuid); + pcmk__xe_set(rsc, PCMK_XA_ID, target_uuid); rsc = pcmk__xe_create(rsc, PCMK__XE_LRM_RESOURCES); rsc = pcmk__xe_create(rsc, PCMK__XE_LRM_RESOURCE); - crm_xml_add(rsc, PCMK_XA_ID, rsc_id); + pcmk__xe_set(rsc, PCMK_XA_ID, rsc_id); - crm_xml_add(rsc, PCMK_XA_TYPE, pcmk__xe_get(action_rsc, PCMK_XA_TYPE)); - crm_xml_add(rsc, PCMK_XA_CLASS, pcmk__xe_get(action_rsc, PCMK_XA_CLASS)); - crm_xml_add(rsc, PCMK_XA_PROVIDER, - pcmk__xe_get(action_rsc, PCMK_XA_PROVIDER)); + pcmk__xe_set(rsc, PCMK_XA_TYPE, pcmk__xe_get(action_rsc, PCMK_XA_TYPE)); + pcmk__xe_set(rsc, PCMK_XA_CLASS, pcmk__xe_get(action_rsc, PCMK_XA_CLASS)); + pcmk__xe_set(rsc, PCMK_XA_PROVIDER, + pcmk__xe_get(action_rsc, PCMK_XA_PROVIDER)); pcmk__create_history_xml(rsc, op, CRM_FEATURE_SET, target_rc, target, __func__); @@ -384,7 +384,7 @@ execute_rsc_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) counter = pcmk__transition_key(controld_globals.transition_graph->id, action->id, get_target_rc(action), controld_globals.te_uuid); - crm_xml_add(rsc_op, PCMK__XA_TRANSITION_KEY, counter); + pcmk__xe_set(rsc_op, PCMK__XA_TRANSITION_KEY, counter); if (controld_is_local_node(router_node)) { is_local = TRUE; diff --git a/daemons/execd/execd_commands.c b/daemons/execd/execd_commands.c index f5cccbb7f14..7d2c5854f2a 100644 --- a/daemons/execd/execd_commands.c +++ b/daemons/execd/execd_commands.c @@ -550,7 +550,7 @@ create_lrmd_reply(const char *origin, int rc, int call_id) { xmlNode *reply = pcmk__xe_create(NULL, PCMK__XE_LRMD_REPLY); - crm_xml_add(reply, PCMK__XA_LRMD_ORIGIN, origin); + pcmk__xe_set(reply, PCMK__XA_LRMD_ORIGIN, origin); pcmk__xe_set_int(reply, PCMK__XA_LRMD_RC, rc); pcmk__xe_set_int(reply, PCMK__XA_LRMD_CALLID, call_id); return reply; @@ -629,7 +629,7 @@ send_cmd_complete_notify(lrmd_cmd_t * cmd) notify = pcmk__xe_create(NULL, PCMK__XE_LRMD_NOTIFY); - crm_xml_add(notify, PCMK__XA_LRMD_ORIGIN, __func__); + pcmk__xe_set(notify, PCMK__XA_LRMD_ORIGIN, __func__); pcmk__xe_set_int(notify, PCMK__XA_LRMD_TIMEOUT, cmd->timeout); pcmk__xe_set_guint(notify, PCMK__XA_LRMD_RSC_INTERVAL, cmd->interval_ms); pcmk__xe_set_int(notify, PCMK__XA_LRMD_RSC_START_DELAY, cmd->start_delay); @@ -646,23 +646,23 @@ send_cmd_complete_notify(lrmd_cmd_t * cmd) pcmk__xe_set_int(notify, PCMK__XA_LRMD_QUEUE_TIME, queue_time); #endif - crm_xml_add(notify, PCMK__XA_LRMD_OP, LRMD_OP_RSC_EXEC); - crm_xml_add(notify, PCMK__XA_LRMD_RSC_ID, cmd->rsc_id); + pcmk__xe_set(notify, PCMK__XA_LRMD_OP, LRMD_OP_RSC_EXEC); + pcmk__xe_set(notify, PCMK__XA_LRMD_RSC_ID, cmd->rsc_id); if(cmd->real_action) { - crm_xml_add(notify, PCMK__XA_LRMD_RSC_ACTION, cmd->real_action); + pcmk__xe_set(notify, PCMK__XA_LRMD_RSC_ACTION, cmd->real_action); } else { - crm_xml_add(notify, PCMK__XA_LRMD_RSC_ACTION, cmd->action); + pcmk__xe_set(notify, PCMK__XA_LRMD_RSC_ACTION, cmd->action); } - crm_xml_add(notify, PCMK__XA_LRMD_RSC_USERDATA_STR, cmd->userdata_str); - crm_xml_add(notify, PCMK__XA_LRMD_RSC_EXIT_REASON, cmd->result.exit_reason); + pcmk__xe_set(notify, PCMK__XA_LRMD_RSC_USERDATA_STR, cmd->userdata_str); + pcmk__xe_set(notify, PCMK__XA_LRMD_RSC_EXIT_REASON, cmd->result.exit_reason); if (cmd->result.action_stderr != NULL) { - crm_xml_add(notify, PCMK__XA_LRMD_RSC_OUTPUT, - cmd->result.action_stderr); + pcmk__xe_set(notify, PCMK__XA_LRMD_RSC_OUTPUT, + cmd->result.action_stderr); } else if (cmd->result.action_stdout != NULL) { - crm_xml_add(notify, PCMK__XA_LRMD_RSC_OUTPUT, - cmd->result.action_stdout); + pcmk__xe_set(notify, PCMK__XA_LRMD_RSC_OUTPUT, + cmd->result.action_stdout); } if (cmd->params) { @@ -707,11 +707,11 @@ send_generic_notify(int rc, xmlNode * request) pcmk__xe_get_int(request, PCMK__XA_LRMD_CALLID, &call_id); notify = pcmk__xe_create(NULL, PCMK__XE_LRMD_NOTIFY); - crm_xml_add(notify, PCMK__XA_LRMD_ORIGIN, __func__); + pcmk__xe_set(notify, PCMK__XA_LRMD_ORIGIN, __func__); pcmk__xe_set_int(notify, PCMK__XA_LRMD_RC, rc); pcmk__xe_set_int(notify, PCMK__XA_LRMD_CALLID, call_id); - crm_xml_add(notify, PCMK__XA_LRMD_OP, op); - crm_xml_add(notify, PCMK__XA_LRMD_RSC_ID, rsc_id); + pcmk__xe_set(notify, PCMK__XA_LRMD_OP, op); + pcmk__xe_set(notify, PCMK__XA_LRMD_RSC_ID, rsc_id); pcmk__foreach_ipc_client(send_client_notify, notify); @@ -795,8 +795,8 @@ notify_of_new_client(pcmk__client_t *new_client) data.new_client = new_client; data.notify = pcmk__xe_create(NULL, PCMK__XE_LRMD_NOTIFY); - crm_xml_add(data.notify, PCMK__XA_LRMD_ORIGIN, __func__); - crm_xml_add(data.notify, PCMK__XA_LRMD_OP, LRMD_OP_NEW_CLIENT); + pcmk__xe_set(data.notify, PCMK__XA_LRMD_ORIGIN, __func__); + pcmk__xe_set(data.notify, PCMK__XA_LRMD_OP, LRMD_OP_NEW_CLIENT); pcmk__foreach_ipc_client(notify_one_client, &data); pcmk__xml_free(data.notify); } @@ -1553,13 +1553,13 @@ process_lrmd_signon(pcmk__client_t *client, xmlNode *request, int call_id, } *reply = create_lrmd_reply(__func__, rc, call_id); - crm_xml_add(*reply, PCMK__XA_LRMD_OP, CRM_OP_REGISTER); - crm_xml_add(*reply, PCMK__XA_LRMD_CLIENTID, client->id); - crm_xml_add(*reply, PCMK__XA_LRMD_PROTOCOL_VERSION, LRMD_PROTOCOL_VERSION); + pcmk__xe_set(*reply, PCMK__XA_LRMD_OP, CRM_OP_REGISTER); + pcmk__xe_set(*reply, PCMK__XA_LRMD_CLIENTID, client->id); + pcmk__xe_set(*reply, PCMK__XA_LRMD_PROTOCOL_VERSION, LRMD_PROTOCOL_VERSION); pcmk__xe_set_time(*reply, PCMK__XA_UPTIME, now - start_time); if (start_state) { - crm_xml_add(*reply, PCMK__XA_NODE_START_STATE, start_state); + pcmk__xe_set(*reply, PCMK__XA_NODE_START_STATE, start_state); } return rc; @@ -1609,10 +1609,10 @@ process_lrmd_get_rsc_info(xmlNode *request, int call_id) reply = create_lrmd_reply(__func__, rc, call_id); if (rsc) { - crm_xml_add(reply, PCMK__XA_LRMD_RSC_ID, rsc->rsc_id); - crm_xml_add(reply, PCMK__XA_LRMD_CLASS, rsc->class); - crm_xml_add(reply, PCMK__XA_LRMD_PROVIDER, rsc->provider); - crm_xml_add(reply, PCMK__XA_LRMD_TYPE, rsc->type); + pcmk__xe_set(reply, PCMK__XA_LRMD_RSC_ID, rsc->rsc_id); + pcmk__xe_set(reply, PCMK__XA_LRMD_CLASS, rsc->class); + pcmk__xe_set(reply, PCMK__XA_LRMD_PROVIDER, rsc->provider); + pcmk__xe_set(reply, PCMK__XA_LRMD_TYPE, rsc->type); } return reply; } @@ -1802,13 +1802,13 @@ add_recurring_op_xml(xmlNode *reply, lrmd_rsc_t *rsc) { xmlNode *rsc_xml = pcmk__xe_create(reply, PCMK__XE_LRMD_RSC); - crm_xml_add(rsc_xml, PCMK__XA_LRMD_RSC_ID, rsc->rsc_id); + pcmk__xe_set(rsc_xml, PCMK__XA_LRMD_RSC_ID, rsc->rsc_id); for (GList *item = rsc->recurring_ops; item != NULL; item = item->next) { lrmd_cmd_t *cmd = item->data; xmlNode *op_xml = pcmk__xe_create(rsc_xml, PCMK__XE_LRMD_RSC_OP); - crm_xml_add(op_xml, PCMK__XA_LRMD_RSC_ACTION, - pcmk__s(cmd->real_action, cmd->action)); + pcmk__xe_set(op_xml, PCMK__XA_LRMD_RSC_ACTION, + pcmk__s(cmd->real_action, cmd->action)); pcmk__xe_set_guint(op_xml, PCMK__XA_LRMD_RSC_INTERVAL, cmd->interval_ms); pcmk__xe_set_int(op_xml, PCMK__XA_LRMD_TIMEOUT, cmd->timeout_orig); diff --git a/daemons/execd/pacemaker-execd.c b/daemons/execd/pacemaker-execd.c index 26c2d380d2d..b355cd805d1 100644 --- a/daemons/execd/pacemaker-execd.c +++ b/daemons/execd/pacemaker-execd.c @@ -158,8 +158,8 @@ lrmd_ipc_dispatch(qb_ipcs_connection_t * c, void *data, size_t size) lrmd_call_id = 1; } - crm_xml_add(request, PCMK__XA_LRMD_CLIENTID, client->id); - crm_xml_add(request, PCMK__XA_LRMD_CLIENTNAME, client->name); + pcmk__xe_set(request, PCMK__XA_LRMD_CLIENTID, client->id); + pcmk__xe_set(request, PCMK__XA_LRMD_CLIENTNAME, client->name); pcmk__xe_set_int(request, PCMK__XA_LRMD_CALLID, lrmd_call_id); process_lrmd_message(client, id, request); diff --git a/daemons/execd/remoted_proxy.c b/daemons/execd/remoted_proxy.c index 0abdf785243..91e204a6368 100644 --- a/daemons/execd/remoted_proxy.c +++ b/daemons/execd/remoted_proxy.c @@ -103,9 +103,9 @@ ipc_proxy_accept(qb_ipcs_connection_t * c, uid_t uid, gid_t gid, const char *ipc g_hash_table_insert(ipc_clients, client->id, client); msg = pcmk__xe_create(NULL, PCMK__XE_LRMD_IPC_PROXY); - crm_xml_add(msg, PCMK__XA_LRMD_IPC_OP, LRMD_IPC_OP_NEW); - crm_xml_add(msg, PCMK__XA_LRMD_IPC_SERVER, ipc_channel); - crm_xml_add(msg, PCMK__XA_LRMD_IPC_SESSION, client->id); + pcmk__xe_set(msg, PCMK__XA_LRMD_IPC_OP, LRMD_IPC_OP_NEW); + pcmk__xe_set(msg, PCMK__XA_LRMD_IPC_SERVER, ipc_channel); + pcmk__xe_set(msg, PCMK__XA_LRMD_IPC_SESSION, client->id); lrmd_server_send_notify(ipc_proxy, msg); pcmk__xml_free(msg); crm_debug("Accepted IPC proxy connection (session ID %s) " @@ -176,8 +176,8 @@ ipc_proxy_forward_client(pcmk__client_t *ipc_proxy, xmlNode *xml) ipc_client = pcmk__find_client_by_id(session); if (ipc_client == NULL) { xmlNode *msg = pcmk__xe_create(NULL, PCMK__XE_LRMD_IPC_PROXY); - crm_xml_add(msg, PCMK__XA_LRMD_IPC_OP, LRMD_IPC_OP_DESTROY); - crm_xml_add(msg, PCMK__XA_LRMD_IPC_SESSION, session); + pcmk__xe_set(msg, PCMK__XA_LRMD_IPC_OP, LRMD_IPC_OP_DESTROY); + pcmk__xe_set(msg, PCMK__XA_LRMD_IPC_SESSION, session); lrmd_server_send_notify(ipc_proxy, msg); pcmk__xml_free(msg); return; @@ -271,10 +271,10 @@ ipc_proxy_dispatch(qb_ipcs_connection_t * c, void *data, size_t size) client->request_id = id; msg = pcmk__xe_create(NULL, PCMK__XE_LRMD_IPC_PROXY); - crm_xml_add(msg, PCMK__XA_LRMD_IPC_OP, LRMD_IPC_OP_REQUEST); - crm_xml_add(msg, PCMK__XA_LRMD_IPC_SESSION, client->id); - crm_xml_add(msg, PCMK__XA_LRMD_IPC_CLIENT, pcmk__client_name(client)); - crm_xml_add(msg, PCMK__XA_LRMD_IPC_USER, client->user); + pcmk__xe_set(msg, PCMK__XA_LRMD_IPC_OP, LRMD_IPC_OP_REQUEST); + pcmk__xe_set(msg, PCMK__XA_LRMD_IPC_SESSION, client->id); + pcmk__xe_set(msg, PCMK__XA_LRMD_IPC_CLIENT, pcmk__client_name(client)); + pcmk__xe_set(msg, PCMK__XA_LRMD_IPC_USER, client->user); pcmk__xe_set_int(msg, PCMK__XA_LRMD_IPC_MSG_ID, id); // @TODO Use different setter for uint32_t @@ -305,12 +305,12 @@ ipc_proxy_shutdown_req(pcmk__client_t *ipc_proxy) xmlNode *msg = pcmk__xe_create(NULL, PCMK__XE_LRMD_IPC_PROXY); int rc; - crm_xml_add(msg, PCMK__XA_LRMD_IPC_OP, LRMD_IPC_OP_SHUTDOWN_REQ); + pcmk__xe_set(msg, PCMK__XA_LRMD_IPC_OP, LRMD_IPC_OP_SHUTDOWN_REQ); /* We don't really have a session, but the controller needs this attribute * to recognize this as proxy communication. */ - crm_xml_add(msg, PCMK__XA_LRMD_IPC_SESSION, "0"); + pcmk__xe_set(msg, PCMK__XA_LRMD_IPC_SESSION, "0"); rc = (lrmd_server_send_notify(ipc_proxy, msg) != pcmk_rc_ok)? -1 : 0; pcmk__xml_free(msg); @@ -333,8 +333,8 @@ ipc_proxy_closed(qb_ipcs_connection_t * c) if (ipc_proxy) { xmlNode *msg = pcmk__xe_create(NULL, PCMK__XE_LRMD_IPC_PROXY); - crm_xml_add(msg, PCMK__XA_LRMD_IPC_OP, LRMD_IPC_OP_DESTROY); - crm_xml_add(msg, PCMK__XA_LRMD_IPC_SESSION, client->id); + pcmk__xe_set(msg, PCMK__XA_LRMD_IPC_OP, LRMD_IPC_OP_DESTROY); + pcmk__xe_set(msg, PCMK__XA_LRMD_IPC_SESSION, client->id); lrmd_server_send_notify(ipc_proxy, msg); pcmk__xml_free(msg); } diff --git a/daemons/execd/remoted_tls.c b/daemons/execd/remoted_tls.c index 26529e69816..65dd9e270a7 100644 --- a/daemons/execd/remoted_tls.c +++ b/daemons/execd/remoted_tls.c @@ -140,8 +140,8 @@ lrmd_remote_client_msg(gpointer data) lrmd_call_id = 1; } - crm_xml_add(request, PCMK__XA_LRMD_CLIENTID, client->id); - crm_xml_add(request, PCMK__XA_LRMD_CLIENTNAME, client->name); + pcmk__xe_set(request, PCMK__XA_LRMD_CLIENTID, client->id); + pcmk__xe_set(request, PCMK__XA_LRMD_CLIENTNAME, client->name); pcmk__xe_set_int(request, PCMK__XA_LRMD_CALLID, lrmd_call_id); process_lrmd_message(client, id, request); diff --git a/daemons/fenced/fenced_cib.c b/daemons/fenced/fenced_cib.c index 9e7f7cc7ae9..2953509712b 100644 --- a/daemons/fenced/fenced_cib.c +++ b/daemons/fenced/fenced_cib.c @@ -88,9 +88,9 @@ topology_remove_helper(const char *node, int level) pcmk__action_result_t result = PCMK__UNKNOWN_RESULT; xmlNode *data = pcmk__xe_create(NULL, PCMK_XE_FENCING_LEVEL); - crm_xml_add(data, PCMK__XA_ST_ORIGIN, __func__); + pcmk__xe_set(data, PCMK__XA_ST_ORIGIN, __func__); pcmk__xe_set_int(data, PCMK_XA_INDEX, level); - crm_xml_add(data, PCMK_XA_TARGET, node); + pcmk__xe_set(data, PCMK_XA_TARGET, node); fenced_unregister_level(data, &desc, &result); fenced_send_config_notification(STONITH_OP_LEVEL_DEL, &result, desc); diff --git a/daemons/fenced/fenced_commands.c b/daemons/fenced/fenced_commands.c index aee42dee9cb..fe6c4fdf5c0 100644 --- a/daemons/fenced/fenced_commands.c +++ b/daemons/fenced/fenced_commands.c @@ -2350,7 +2350,7 @@ add_action_reply(xmlNode *xml, const char *action, { xmlNode *child = pcmk__xe_create(xml, PCMK__XE_ST_DEVICE_ACTION); - crm_xml_add(child, PCMK_XA_ID, action); + pcmk__xe_set(child, PCMK_XA_ID, action); add_action_specific_attributes(child, action, device, target); add_disallowed(child, action, device, target, allow_self); } @@ -2404,7 +2404,7 @@ stonith_query_capable_device_cb(GList * devices, void *user_data) // Pack the results into XML wrapper = pcmk__xe_create(query->reply, PCMK__XE_ST_CALLDATA); list = pcmk__xe_create(wrapper, __func__); - crm_xml_add(list, PCMK__XA_ST_TARGET, query->target); + pcmk__xe_set(list, PCMK__XA_ST_TARGET, query->target); for (lpc = devices; lpc != NULL; lpc = lpc->next) { stonith_device_t *device = g_hash_table_lookup(device_list, lpc->data); @@ -2420,9 +2420,9 @@ stonith_query_capable_device_cb(GList * devices, void *user_data) available_devices++; dev = pcmk__xe_create(list, PCMK__XE_ST_DEVICE_ID); - crm_xml_add(dev, PCMK_XA_ID, device->id); - crm_xml_add(dev, PCMK__XA_NAMESPACE, device->namespace); - crm_xml_add(dev, PCMK_XA_AGENT, device->agent); + pcmk__xe_set(dev, PCMK_XA_ID, device->id); + pcmk__xe_set(dev, PCMK__XA_NAMESPACE, device->namespace); + pcmk__xe_set(dev, PCMK_XA_AGENT, device->agent); // Has had successful monitor, list, or status on this node pcmk__xe_set_int(dev, PCMK__XA_ST_MONITOR_VERIFIED, device->verified); @@ -2624,8 +2624,8 @@ send_async_reply(const async_command_t *cmd, const pcmk__action_result_t *result */ crm_trace("Broadcast '%s' result for %s (target was also originator)", cmd->action, cmd->target); - crm_xml_add(reply, PCMK__XA_SUBT, PCMK__VALUE_BROADCAST); - crm_xml_add(reply, PCMK__XA_ST_OP, STONITH_OP_NOTIFY); + pcmk__xe_set(reply, PCMK__XA_SUBT, PCMK__VALUE_BROADCAST); + pcmk__xe_set(reply, PCMK__XA_ST_OP, STONITH_OP_NOTIFY); pcmk__cluster_send_message(NULL, pcmk_ipc_fenced, reply); } else { // Reply only to the originator @@ -2923,8 +2923,8 @@ fenced_construct_reply(const xmlNode *request, xmlNode *data, reply = pcmk__xe_create(NULL, PCMK__XE_ST_REPLY); - crm_xml_add(reply, PCMK__XA_ST_ORIGIN, __func__); - crm_xml_add(reply, PCMK__XA_T, PCMK__VALUE_STONITH_NG); + pcmk__xe_set(reply, PCMK__XA_ST_ORIGIN, __func__); + pcmk__xe_set(reply, PCMK__XA_T, PCMK__VALUE_STONITH_NG); stonith__xe_set_result(reply, result); if (request == NULL) { @@ -2955,7 +2955,7 @@ fenced_construct_reply(const xmlNode *request, xmlNode *data, for (int lpc = 0; lpc < PCMK__NELEM(names); lpc++) { name = names[lpc]; value = pcmk__xe_get(request, name); - crm_xml_add(reply, name, value); + pcmk__xe_set(reply, name, value); } if (data != NULL) { xmlNode *wrapper = pcmk__xe_create(reply, PCMK__XE_ST_CALLDATA); @@ -2979,16 +2979,16 @@ construct_async_reply(const async_command_t *cmd, { xmlNode *reply = pcmk__xe_create(NULL, PCMK__XE_ST_REPLY); - crm_xml_add(reply, PCMK__XA_ST_ORIGIN, __func__); - crm_xml_add(reply, PCMK__XA_T, PCMK__VALUE_STONITH_NG); - crm_xml_add(reply, PCMK__XA_ST_OP, cmd->op); - crm_xml_add(reply, PCMK__XA_ST_DEVICE_ID, cmd->device); - crm_xml_add(reply, PCMK__XA_ST_REMOTE_OP, cmd->remote_op_id); - crm_xml_add(reply, PCMK__XA_ST_CLIENTID, cmd->client); - crm_xml_add(reply, PCMK__XA_ST_CLIENTNAME, cmd->client_name); - crm_xml_add(reply, PCMK__XA_ST_TARGET, cmd->target); - crm_xml_add(reply, PCMK__XA_ST_DEVICE_ACTION, cmd->op); - crm_xml_add(reply, PCMK__XA_ST_ORIGIN, cmd->origin); + pcmk__xe_set(reply, PCMK__XA_ST_ORIGIN, __func__); + pcmk__xe_set(reply, PCMK__XA_T, PCMK__VALUE_STONITH_NG); + pcmk__xe_set(reply, PCMK__XA_ST_OP, cmd->op); + pcmk__xe_set(reply, PCMK__XA_ST_DEVICE_ID, cmd->device); + pcmk__xe_set(reply, PCMK__XA_ST_REMOTE_OP, cmd->remote_op_id); + pcmk__xe_set(reply, PCMK__XA_ST_CLIENTID, cmd->client); + pcmk__xe_set(reply, PCMK__XA_ST_CLIENTNAME, cmd->client_name); + pcmk__xe_set(reply, PCMK__XA_ST_TARGET, cmd->target); + pcmk__xe_set(reply, PCMK__XA_ST_DEVICE_ACTION, cmd->op); + pcmk__xe_set(reply, PCMK__XA_ST_ORIGIN, cmd->origin); pcmk__xe_set_int(reply, PCMK__XA_ST_CALLID, cmd->id); pcmk__xe_set_int(reply, PCMK__XA_ST_CALLOPT, cmd->options); @@ -3133,8 +3133,8 @@ handle_register_request(pcmk__request_t *request) xmlNode *reply = pcmk__xe_create(NULL, "reply"); pcmk__assert(request->ipc_client != NULL); - crm_xml_add(reply, PCMK__XA_ST_OP, CRM_OP_REGISTER); - crm_xml_add(reply, PCMK__XA_ST_CLIENTID, request->ipc_client->id); + pcmk__xe_set(reply, PCMK__XA_ST_OP, CRM_OP_REGISTER); + pcmk__xe_set(reply, PCMK__XA_ST_CLIENTID, request->ipc_client->id); pcmk__set_result(&request->result, CRM_EX_OK, PCMK_EXEC_DONE, NULL); pcmk__set_request_flags(request, pcmk__request_reuse_options); return reply; @@ -3343,10 +3343,10 @@ handle_fence_request(pcmk__request_t *request) */ op = create_remote_stonith_op(client_id, request->xml, FALSE); - crm_xml_add(request->xml, PCMK__XA_ST_OP, STONITH_OP_RELAY); - crm_xml_add(request->xml, PCMK__XA_ST_CLIENTID, - request->ipc_client->id); - crm_xml_add(request->xml, PCMK__XA_ST_REMOTE_OP, op->id); + pcmk__xe_set(request->xml, PCMK__XA_ST_OP, STONITH_OP_RELAY); + pcmk__xe_set(request->xml, PCMK__XA_ST_CLIENTID, + request->ipc_client->id); + pcmk__xe_set(request->xml, PCMK__XA_ST_REMOTE_OP, op->id); // @TODO On failure, fail request immediately, or maybe panic pcmk__cluster_send_message(node, pcmk_ipc_fenced, request->xml); diff --git a/daemons/fenced/fenced_history.c b/daemons/fenced/fenced_history.c index 576e4355104..4a82ca0d27d 100644 --- a/daemons/fenced/fenced_history.c +++ b/daemons/fenced/fenced_history.c @@ -47,14 +47,14 @@ stonith_send_broadcast_history(xmlNode *history, xmlNode *wrapper = pcmk__xe_create(bcast, PCMK__XE_ST_CALLDATA); xmlNode *call_data = pcmk__xe_create(wrapper, __func__); - crm_xml_add(bcast, PCMK__XA_T, PCMK__VALUE_STONITH_NG); - crm_xml_add(bcast, PCMK__XA_SUBT, PCMK__VALUE_BROADCAST); - crm_xml_add(bcast, PCMK__XA_ST_OP, STONITH_OP_FENCE_HISTORY); + pcmk__xe_set(bcast, PCMK__XA_T, PCMK__VALUE_STONITH_NG); + pcmk__xe_set(bcast, PCMK__XA_SUBT, PCMK__VALUE_BROADCAST); + pcmk__xe_set(bcast, PCMK__XA_ST_OP, STONITH_OP_FENCE_HISTORY); pcmk__xe_set_int(bcast, PCMK__XA_ST_CALLOPT, callopts); pcmk__xml_copy(call_data, history); if (target != NULL) { - crm_xml_add(call_data, PCMK__XA_ST_TARGET, target); + pcmk__xe_set(call_data, PCMK__XA_ST_TARGET, target); } pcmk__cluster_send_message(NULL, pcmk_ipc_fenced, bcast); @@ -376,13 +376,13 @@ stonith_local_history_diff_and_merge(GHashTable *remote_history, crm_trace("Attaching op %s", op->id); entry = pcmk__xe_create(history, STONITH_OP_EXEC); if (add_id) { - crm_xml_add(entry, PCMK__XA_ST_REMOTE_OP, op->id); + pcmk__xe_set(entry, PCMK__XA_ST_REMOTE_OP, op->id); } - crm_xml_add(entry, PCMK__XA_ST_TARGET, op->target); - crm_xml_add(entry, PCMK__XA_ST_DEVICE_ACTION, op->action); - crm_xml_add(entry, PCMK__XA_ST_ORIGIN, op->originator); - crm_xml_add(entry, PCMK__XA_ST_DELEGATE, op->delegate); - crm_xml_add(entry, PCMK__XA_ST_CLIENTNAME, op->client_name); + pcmk__xe_set(entry, PCMK__XA_ST_TARGET, op->target); + pcmk__xe_set(entry, PCMK__XA_ST_DEVICE_ACTION, op->action); + pcmk__xe_set(entry, PCMK__XA_ST_ORIGIN, op->originator); + pcmk__xe_set(entry, PCMK__XA_ST_DELEGATE, op->delegate); + pcmk__xe_set(entry, PCMK__XA_ST_CLIENTNAME, op->client_name); pcmk__xe_set_time(entry, PCMK__XA_ST_DATE, op->completed); pcmk__xe_set_ll(entry, PCMK__XA_ST_DATE_NSEC, op->completed_nsec); diff --git a/daemons/fenced/fenced_remote.c b/daemons/fenced/fenced_remote.c index 28ea84dc93e..8cf7d2064e5 100644 --- a/daemons/fenced/fenced_remote.c +++ b/daemons/fenced/fenced_remote.c @@ -383,13 +383,13 @@ fencing_result2xml(xmlNode *parent, const remote_fencing_op_t *op) xmlNode *notify_data = pcmk__xe_create(parent, PCMK__XE_ST_NOTIFY_FENCE); pcmk__xe_set_int(notify_data, PCMK_XA_STATE, op->state); - crm_xml_add(notify_data, PCMK__XA_ST_TARGET, op->target); - crm_xml_add(notify_data, PCMK__XA_ST_DEVICE_ACTION, op->action); - crm_xml_add(notify_data, PCMK__XA_ST_DELEGATE, op->delegate); - crm_xml_add(notify_data, PCMK__XA_ST_REMOTE_OP, op->id); - crm_xml_add(notify_data, PCMK__XA_ST_ORIGIN, op->originator); - crm_xml_add(notify_data, PCMK__XA_ST_CLIENTID, op->client_id); - crm_xml_add(notify_data, PCMK__XA_ST_CLIENTNAME, op->client_name); + pcmk__xe_set(notify_data, PCMK__XA_ST_TARGET, op->target); + pcmk__xe_set(notify_data, PCMK__XA_ST_DEVICE_ACTION, op->action); + pcmk__xe_set(notify_data, PCMK__XA_ST_DELEGATE, op->delegate); + pcmk__xe_set(notify_data, PCMK__XA_ST_REMOTE_OP, op->id); + pcmk__xe_set(notify_data, PCMK__XA_ST_ORIGIN, op->originator); + pcmk__xe_set(notify_data, PCMK__XA_ST_CLIENTID, op->client_id); + pcmk__xe_set(notify_data, PCMK__XA_ST_CLIENTNAME, op->client_name); return notify_data; } @@ -411,9 +411,9 @@ fenced_broadcast_op_result(const remote_fencing_op_t *op, bool op_merged) count++; crm_trace("Broadcasting result to peers"); - crm_xml_add(bcast, PCMK__XA_T, PCMK__VALUE_ST_NOTIFY); - crm_xml_add(bcast, PCMK__XA_SUBT, PCMK__VALUE_BROADCAST); - crm_xml_add(bcast, PCMK__XA_ST_OP, STONITH_OP_NOTIFY); + pcmk__xe_set(bcast, PCMK__XA_T, PCMK__VALUE_ST_NOTIFY); + pcmk__xe_set(bcast, PCMK__XA_SUBT, PCMK__VALUE_BROADCAST); + pcmk__xe_set(bcast, PCMK__XA_ST_OP, STONITH_OP_NOTIFY); pcmk__xe_set_int(bcast, PCMK_XA_COUNT, count); if (op_merged) { @@ -451,11 +451,11 @@ handle_local_reply_and_notify(remote_fencing_op_t *op, xmlNode *data) /* Do notification with a clean data object */ pcmk__xe_set_int(data, PCMK_XA_STATE, op->state); - crm_xml_add(data, PCMK__XA_ST_TARGET, op->target); - crm_xml_add(data, PCMK__XA_ST_OP, op->action); + pcmk__xe_set(data, PCMK__XA_ST_TARGET, op->target); + pcmk__xe_set(data, PCMK__XA_ST_OP, op->action); reply = fenced_construct_reply(op->request, data, &op->result); - crm_xml_add(reply, PCMK__XA_ST_DELEGATE, op->delegate); + pcmk__xe_set(reply, PCMK__XA_ST_DELEGATE, op->delegate); /* Send fencing OP reply to local client that initiated fencing */ client = pcmk__find_client_by_id(op->client_id); @@ -1345,12 +1345,12 @@ initiate_remote_stonith_op(const pcmk__client_t *client, xmlNode *request, query = stonith_create_op(op->client_callid, op->id, STONITH_OP_QUERY, NULL, op->call_options); - crm_xml_add(query, PCMK__XA_ST_REMOTE_OP, op->id); - crm_xml_add(query, PCMK__XA_ST_TARGET, op->target); - crm_xml_add(query, PCMK__XA_ST_DEVICE_ACTION, op_requested_action(op)); - crm_xml_add(query, PCMK__XA_ST_ORIGIN, op->originator); - crm_xml_add(query, PCMK__XA_ST_CLIENTID, op->client_id); - crm_xml_add(query, PCMK__XA_ST_CLIENTNAME, op->client_name); + pcmk__xe_set(query, PCMK__XA_ST_REMOTE_OP, op->id); + pcmk__xe_set(query, PCMK__XA_ST_TARGET, op->target); + pcmk__xe_set(query, PCMK__XA_ST_DEVICE_ACTION, op_requested_action(op)); + pcmk__xe_set(query, PCMK__XA_ST_ORIGIN, op->originator); + pcmk__xe_set(query, PCMK__XA_ST_CLIENTID, op->client_id); + pcmk__xe_set(query, PCMK__XA_ST_CLIENTNAME, op->client_name); pcmk__xe_set_int(query, PCMK__XA_ST_TIMEOUT, op->base_timeout); /* In case of RELAY operation, RELAY information is added to the query to delete the original operation of RELAY. */ @@ -1358,7 +1358,7 @@ initiate_remote_stonith_op(const pcmk__client_t *client, xmlNode *request, if (pcmk__str_eq(operation, STONITH_OP_RELAY, pcmk__str_none)) { relay_op_id = pcmk__xe_get(request, PCMK__XA_ST_REMOTE_OP); if (relay_op_id) { - crm_xml_add(query, PCMK__XA_ST_REMOTE_OP_RELAY, relay_op_id); + pcmk__xe_set(query, PCMK__XA_ST_REMOTE_OP_RELAY, relay_op_id); } } @@ -1744,9 +1744,9 @@ report_timeout_period(remote_fencing_op_t * op, int op_timeout) /* The client is connected to another node, relay this update to them */ update = stonith_create_op(op->client_callid, op->id, STONITH_OP_TIMEOUT_UPDATE, NULL, 0); - crm_xml_add(update, PCMK__XA_ST_REMOTE_OP, op->id); - crm_xml_add(update, PCMK__XA_ST_CLIENTID, client_id); - crm_xml_add(update, PCMK__XA_ST_CALLID, call_id); + pcmk__xe_set(update, PCMK__XA_ST_REMOTE_OP, op->id); + pcmk__xe_set(update, PCMK__XA_ST_CLIENTID, client_id); + pcmk__xe_set(update, PCMK__XA_ST_CALLID, call_id); pcmk__xe_set_int(update, PCMK__XA_ST_TIMEOUT, op_timeout); pcmk__cluster_send_message(pcmk__get_node(0, client_node, NULL, @@ -1946,12 +1946,12 @@ request_peer_fencing(remote_fencing_op_t *op, peer_device_info_t *peer) timeout_one = TIMEOUT_MULTIPLY_FACTOR * op->client_delay; } - crm_xml_add(remote_op, PCMK__XA_ST_REMOTE_OP, op->id); - crm_xml_add(remote_op, PCMK__XA_ST_TARGET, op->target); - crm_xml_add(remote_op, PCMK__XA_ST_DEVICE_ACTION, op->action); - crm_xml_add(remote_op, PCMK__XA_ST_ORIGIN, op->originator); - crm_xml_add(remote_op, PCMK__XA_ST_CLIENTID, op->client_id); - crm_xml_add(remote_op, PCMK__XA_ST_CLIENTNAME, op->client_name); + pcmk__xe_set(remote_op, PCMK__XA_ST_REMOTE_OP, op->id); + pcmk__xe_set(remote_op, PCMK__XA_ST_TARGET, op->target); + pcmk__xe_set(remote_op, PCMK__XA_ST_DEVICE_ACTION, op->action); + pcmk__xe_set(remote_op, PCMK__XA_ST_ORIGIN, op->originator); + pcmk__xe_set(remote_op, PCMK__XA_ST_CLIENTID, op->client_id); + pcmk__xe_set(remote_op, PCMK__XA_ST_CLIENTNAME, op->client_name); pcmk__xe_set_int(remote_op, PCMK__XA_ST_TIMEOUT, timeout); pcmk__xe_set_int(remote_op, PCMK__XA_ST_CALLOPT, op->call_options); pcmk__xe_set_int(remote_op, PCMK__XA_ST_DELAY, op->client_delay); @@ -1963,7 +1963,7 @@ request_peer_fencing(remote_fencing_op_t *op, peer_device_info_t *peer) "using %s " QB_XS " for client %s (%ds)", peer->host, op->action, op->target, device, op->client_name, timeout_one); - crm_xml_add(remote_op, PCMK__XA_ST_DEVICE_ID, device); + pcmk__xe_set(remote_op, PCMK__XA_ST_DEVICE_ID, device); } else { timeout_one += TIMEOUT_MULTIPLY_FACTOR * get_peer_timeout(op, peer); diff --git a/daemons/fenced/pacemaker-fenced.c b/daemons/fenced/pacemaker-fenced.c index adb0704f64e..cff0f399abe 100644 --- a/daemons/fenced/pacemaker-fenced.c +++ b/daemons/fenced/pacemaker-fenced.c @@ -109,11 +109,11 @@ st_ipc_dispatch(qb_ipcs_connection_t * qbc, void *data, size_t size) op = pcmk__xe_get(request, PCMK__XA_CRM_TASK); if(pcmk__str_eq(op, CRM_OP_RM_NODE_CACHE, pcmk__str_casei)) { - crm_xml_add(request, PCMK__XA_T, PCMK__VALUE_STONITH_NG); - crm_xml_add(request, PCMK__XA_ST_OP, op); - crm_xml_add(request, PCMK__XA_ST_CLIENTID, c->id); - crm_xml_add(request, PCMK__XA_ST_CLIENTNAME, pcmk__client_name(c)); - crm_xml_add(request, PCMK__XA_ST_CLIENTNODE, fenced_get_local_node()); + pcmk__xe_set(request, PCMK__XA_T, PCMK__VALUE_STONITH_NG); + pcmk__xe_set(request, PCMK__XA_ST_OP, op); + pcmk__xe_set(request, PCMK__XA_ST_CLIENTID, c->id); + pcmk__xe_set(request, PCMK__XA_ST_CLIENTNAME, pcmk__client_name(c)); + pcmk__xe_set(request, PCMK__XA_ST_CLIENTNODE, fenced_get_local_node()); pcmk__cluster_send_message(NULL, pcmk_ipc_fenced, request); pcmk__xml_free(request); @@ -142,9 +142,9 @@ st_ipc_dispatch(qb_ipcs_connection_t * qbc, void *data, size_t size) c->request_id = id; /* Reply only to the last one */ } - crm_xml_add(request, PCMK__XA_ST_CLIENTID, c->id); - crm_xml_add(request, PCMK__XA_ST_CLIENTNAME, pcmk__client_name(c)); - crm_xml_add(request, PCMK__XA_ST_CLIENTNODE, fenced_get_local_node()); + pcmk__xe_set(request, PCMK__XA_ST_CLIENTID, c->id); + pcmk__xe_set(request, PCMK__XA_ST_CLIENTNAME, pcmk__client_name(c)); + pcmk__xe_set(request, PCMK__XA_ST_CLIENTNODE, fenced_get_local_node()); crm_log_xml_trace(request, "ipc-received"); stonith_command(c, id, flags, request, NULL); @@ -210,7 +210,7 @@ handle_cpg_message(cpg_handle_t handle, const struct cpg_name *groupName, free(data); return; } - crm_xml_add(xml, PCMK__XA_SRC, from); + pcmk__xe_set(xml, PCMK__XA_SRC, from); stonith_peer_callback(xml, NULL); pcmk__xml_free(xml); @@ -326,8 +326,8 @@ do_stonith_async_timeout_update(const char *client_id, const char *call_id, int } notify_data = pcmk__xe_create(NULL, PCMK__XE_ST_ASYNC_TIMEOUT_VALUE); - crm_xml_add(notify_data, PCMK__XA_T, PCMK__VALUE_ST_ASYNC_TIMEOUT_VALUE); - crm_xml_add(notify_data, PCMK__XA_ST_CALLID, call_id); + pcmk__xe_set(notify_data, PCMK__XA_T, PCMK__VALUE_ST_ASYNC_TIMEOUT_VALUE); + pcmk__xe_set(notify_data, PCMK__XA_ST_CALLID, call_id); pcmk__xe_set_int(notify_data, PCMK__XA_ST_TIMEOUT, timeout); crm_trace("timeout update is %d for client %s and call id %s", timeout, client_id, call_id); @@ -356,9 +356,9 @@ fenced_send_notification(const char *type, const pcmk__action_result_t *result, CRM_LOG_ASSERT(type != NULL); - crm_xml_add(update_msg, PCMK__XA_T, PCMK__VALUE_ST_NOTIFY); - crm_xml_add(update_msg, PCMK__XA_SUBT, type); - crm_xml_add(update_msg, PCMK__XA_ST_OP, type); + pcmk__xe_set(update_msg, PCMK__XA_T, PCMK__VALUE_ST_NOTIFY); + pcmk__xe_set(update_msg, PCMK__XA_SUBT, type); + pcmk__xe_set(update_msg, PCMK__XA_ST_OP, type); stonith__xe_set_result(update_msg, result); if (data != NULL) { @@ -392,7 +392,7 @@ fenced_send_config_notification(const char *op, { xmlNode *notify_data = pcmk__xe_create(NULL, op); - crm_xml_add(notify_data, PCMK__XA_ST_DEVICE_ID, desc); + pcmk__xe_set(notify_data, PCMK__XA_ST_DEVICE_ID, desc); fenced_send_notification(op, result, notify_data); pcmk__xml_free(notify_data); @@ -470,8 +470,8 @@ st_peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, */ xmlNode *query = pcmk__xe_create(NULL, PCMK__XE_STONITH_COMMAND); - crm_xml_add(query, PCMK__XA_T, PCMK__VALUE_STONITH_NG); - crm_xml_add(query, PCMK__XA_ST_OP, STONITH_OP_POKE); + pcmk__xe_set(query, PCMK__XA_T, PCMK__VALUE_STONITH_NG); + pcmk__xe_set(query, PCMK__XA_ST_OP, STONITH_OP_POKE); crm_debug("Broadcasting our uname because of node %" PRIu32, node->cluster_layer_id); diff --git a/daemons/pacemakerd/pcmkd_messages.c b/daemons/pacemakerd/pcmkd_messages.c index bc159140450..c02fc8e0de6 100644 --- a/daemons/pacemakerd/pcmkd_messages.c +++ b/daemons/pacemakerd/pcmkd_messages.c @@ -55,10 +55,10 @@ handle_ping_request(pcmk__request_t *request) ping = pcmk__xe_create(NULL, PCMK__XE_PING_RESPONSE); value = pcmk__xe_get(msg, PCMK__XA_CRM_SYS_TO); - crm_xml_add(ping, PCMK__XA_CRM_SUBSYSTEM, value); - crm_xml_add(ping, PCMK__XA_PACEMAKERD_STATE, pacemakerd_state); + pcmk__xe_set(ping, PCMK__XA_CRM_SUBSYSTEM, value); + pcmk__xe_set(ping, PCMK__XA_PACEMAKERD_STATE, pacemakerd_state); pcmk__xe_set_time(ping, PCMK_XA_CRM_TIMESTAMP, subdaemon_check_progress); - crm_xml_add(ping, PCMK_XA_RESULT, "ok"); + pcmk__xe_set(ping, PCMK_XA_RESULT, "ok"); reply = pcmk__new_reply(msg, ping); pcmk__xml_free(ping); diff --git a/daemons/schedulerd/schedulerd_messages.c b/daemons/schedulerd/schedulerd_messages.c index 50a2a80c75e..36252c5ed64 100644 --- a/daemons/schedulerd/schedulerd_messages.c +++ b/daemons/schedulerd/schedulerd_messages.c @@ -146,7 +146,7 @@ handle_pecalc_request(pcmk__request_t *request) series[series_id].name, seq, true); } - crm_xml_add(reply, PCMK__XA_CRM_TGRAPH_IN, filename); + pcmk__xe_set(reply, PCMK__XA_CRM_TGRAPH_IN, filename); pcmk__log_transition_summary(scheduler, filename); diff --git a/include/crm/common/ipc.h b/include/crm/common/ipc.h index 27be73c900a..5ab0766dc91 100644 --- a/include/crm/common/ipc.h +++ b/include/crm/common/ipc.h @@ -12,7 +12,10 @@ #include #include + #include + +#include // crm_exit_t #include #ifdef __cplusplus diff --git a/include/crm/common/xml_compat.h b/include/crm/common/xml_compat.h index 76323d1230d..95b2461a06b 100644 --- a/include/crm/common/xml_compat.h +++ b/include/crm/common/xml_compat.h @@ -10,13 +10,12 @@ #ifndef PCMK__CRM_COMMON_XML_COMPAT__H #define PCMK__CRM_COMMON_XML_COMPAT__H +#include // bool + #include // gboolean #include // xmlNode #include // xmlXPathObject -#include // crm_xml_add() -#include // PCMK_XE_CLONE - #ifdef __cplusplus extern "C" { #endif diff --git a/include/crm/common/xml_element_internal.h b/include/crm/common/xml_element_internal.h index be5517864e4..674f2a069b4 100644 --- a/include/crm/common/xml_element_internal.h +++ b/include/crm/common/xml_element_internal.h @@ -141,6 +141,8 @@ pcmk__xe_foreach_child(xmlNode *xml, const char *child_element_name, void *userdata); const char *pcmk__xe_get(const xmlNode *xml, const char *attr_name); +int pcmk__xe_set(xmlNode *xml, const char *attr_name, const char *value); + int pcmk__xe_get_datetime(const xmlNode *xml, const char *attr, crm_time_t **t); int pcmk__xe_get_flags(const xmlNode *xml, const char *name, uint32_t *dest, uint32_t default_value); diff --git a/include/pcmki/pcmki_ticket.h b/include/pcmki/pcmki_ticket.h index 34d779a2d7b..474378cc2df 100644 --- a/include/pcmki/pcmki_ticket.h +++ b/include/pcmki/pcmki_ticket.h @@ -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. * @@ -10,7 +10,10 @@ #ifndef PCMK__PCMKI_PCMKI_TICKET__H #define PCMK__PCMKI_PCMKI_TICKET__H -#include +#include // bool + +#include // pcmk__output_t +#include // pcmk_scheduler_t #include diff --git a/lib/cib/cib_attrs.c b/lib/cib/cib_attrs.c index 2839317b8ce..a7a7b22a227 100644 --- a/lib/cib/cib_attrs.c +++ b/lib/cib/cib_attrs.c @@ -220,9 +220,9 @@ cib__update_node_attr(pcmk__output_t *out, cib_t *cib, int call_options, const c if (pcmk__str_eq(node_type, PCMK_VALUE_REMOTE, pcmk__str_casei)) { xml_top = pcmk__xe_create(xml_obj, PCMK_XE_NODES); xml_obj = pcmk__xe_create(xml_top, PCMK_XE_NODE); - crm_xml_add(xml_obj, PCMK_XA_TYPE, PCMK_VALUE_REMOTE); - crm_xml_add(xml_obj, PCMK_XA_ID, node_uuid); - crm_xml_add(xml_obj, PCMK_XA_UNAME, node_uuid); + pcmk__xe_set(xml_obj, PCMK_XA_TYPE, PCMK_VALUE_REMOTE); + pcmk__xe_set(xml_obj, PCMK_XA_ID, node_uuid); + pcmk__xe_set(xml_obj, PCMK_XA_UNAME, node_uuid); } else { tag = PCMK_XE_NODE; } @@ -234,7 +234,7 @@ cib__update_node_attr(pcmk__output_t *out, cib_t *cib, int call_options, const c } xml_top = pcmk__xe_create(xml_obj, PCMK__XE_NODE_STATE); - crm_xml_add(xml_top, PCMK_XA_ID, node_uuid); + pcmk__xe_set(xml_top, PCMK_XA_ID, node_uuid); xml_obj = xml_top; } else { @@ -280,7 +280,7 @@ cib__update_node_attr(pcmk__output_t *out, cib_t *cib, int call_options, const c crm_trace("Creating %s/%s", section, tag); if (tag != NULL) { xml_obj = pcmk__xe_create(xml_obj, tag); - crm_xml_add(xml_obj, PCMK_XA_ID, node_uuid); + pcmk__xe_set(xml_obj, PCMK_XA_ID, node_uuid); if (xml_top == NULL) { xml_top = xml_obj; } @@ -302,7 +302,7 @@ cib__update_node_attr(pcmk__output_t *out, cib_t *cib, int call_options, const c } else { xml_obj = pcmk__xe_create(xml_obj, PCMK_XE_INSTANCE_ATTRIBUTES); } - crm_xml_add(xml_obj, PCMK_XA_ID, set_name); + pcmk__xe_set(xml_obj, PCMK_XA_ID, set_name); if (xml_top == NULL) { xml_top = xml_obj; diff --git a/lib/cib/cib_client.c b/lib/cib/cib_client.c index 5cbbb141c04..74722310bad 100644 --- a/lib/cib/cib_client.c +++ b/lib/cib/cib_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. * @@ -400,7 +400,7 @@ cib_client_fetch_schemas(cib_t *cib, xmlNode **output_data, const char *after_ve xmlNode *data = pcmk__xe_create(NULL, PCMK__XA_SCHEMA); int rc = pcmk_ok; - crm_xml_add(data, PCMK_XA_VERSION, after_ver); + pcmk__xe_set(data, PCMK_XA_VERSION, after_ver); rc = cib_internal_op(cib, PCMK__CIB_REQUEST_SCHEMAS, NULL, NULL, data, output_data, call_options, NULL); diff --git a/lib/cib/cib_file.c b/lib/cib/cib_file.c index c0a9505b3d4..8ea9bd130d3 100644 --- a/lib/cib/cib_file.c +++ b/lib/cib/cib_file.c @@ -328,8 +328,8 @@ cib_file_perform_op_delegate(cib_t *cib, const char *op, const char *host, if (rc != pcmk_ok) { return rc; } - crm_xml_add(request, PCMK__XA_ACL_TARGET, user_name); - crm_xml_add(request, PCMK__XA_CIB_CLIENTID, private->id); + pcmk__xe_set(request, PCMK__XA_ACL_TARGET, user_name); + pcmk__xe_set(request, PCMK__XA_CIB_CLIENTID, private->id); if (pcmk_is_set(call_options, cib_transaction)) { rc = cib__extend_transaction(cib, request); @@ -892,7 +892,7 @@ cib_file_prepare_xml(xmlNode *root) xmlNode *cib_status_root = NULL; /* Always write out with num_updates=0 and current last-written timestamp */ - crm_xml_add(root, PCMK_XA_NUM_UPDATES, "0"); + pcmk__xe_set(root, PCMK_XA_NUM_UPDATES, "0"); pcmk__xe_add_last_written(root); /* Delete status section before writing to file, because diff --git a/lib/cib/cib_native.c b/lib/cib/cib_native.c index 1b78f11400a..96345ceef8d 100644 --- a/lib/cib/cib_native.c +++ b/lib/cib/cib_native.c @@ -381,8 +381,8 @@ cib_native_register_notification(cib_t *cib, const char *callback, int enabled) cib_native_opaque_t *native = cib->variant_opaque; if (cib->state != cib_disconnected) { - crm_xml_add(notify_msg, PCMK__XA_CIB_OP, PCMK__VALUE_CIB_NOTIFY); - crm_xml_add(notify_msg, PCMK__XA_CIB_NOTIFY_TYPE, callback); + pcmk__xe_set(notify_msg, PCMK__XA_CIB_OP, PCMK__VALUE_CIB_NOTIFY); + pcmk__xe_set(notify_msg, PCMK__XA_CIB_NOTIFY_TYPE, callback); pcmk__xe_set_int(notify_msg, PCMK__XA_CIB_NOTIFY_ACTIVATE, enabled); rc = crm_ipc_send(native->ipc, notify_msg, crm_ipc_client_response, 1000 * cib->call_timeout, NULL); diff --git a/lib/cib/cib_ops.c b/lib/cib/cib_ops.c index 705c3e09805..6ebd8925252 100644 --- a/lib/cib/cib_ops.c +++ b/lib/cib/cib_ops.c @@ -230,7 +230,7 @@ update_counter(xmlNode *xml_obj, const char *field, bool reset) crm_trace("Update %s from %s to %s", field, pcmk__s(old_value, "unset"), new_value); - crm_xml_add(xml_obj, field, new_value); + pcmk__xe_set(xml_obj, field, new_value); free(new_value); free(old_value); @@ -562,10 +562,11 @@ update_results(xmlNode *failed, xmlNode *target, const char *operation, xml_node = pcmk__xe_create(failed, PCMK__XE_FAILED_UPDATE); pcmk__xml_copy(xml_node, target); - crm_xml_add(xml_node, PCMK_XA_ID, pcmk__xe_id(target)); - crm_xml_add(xml_node, PCMK_XA_OBJECT_TYPE, (const char *) target->name); - crm_xml_add(xml_node, PCMK_XA_OPERATION, operation); - crm_xml_add(xml_node, PCMK_XA_REASON, error_msg); + pcmk__xe_set(xml_node, PCMK_XA_ID, pcmk__xe_id(target)); + pcmk__xe_set(xml_node, PCMK_XA_OBJECT_TYPE, + (const char *) target->name); + pcmk__xe_set(xml_node, PCMK_XA_OPERATION, operation); + pcmk__xe_set(xml_node, PCMK_XA_REASON, error_msg); crm_warn("Action %s failed: %s (cde=%d)", operation, error_msg, return_code); @@ -803,7 +804,7 @@ cib_process_xpath(const char *op, int options, const char *section, *answer = pcmk__xe_create(NULL, PCMK__XE_XPATH_QUERY); } parent = pcmk__xe_create(*answer, PCMK__XE_XPATH_QUERY_PATH); - crm_xml_add(parent, PCMK_XA_ID, path); + pcmk__xe_set(parent, PCMK_XA_ID, path); free(path); } else if (*answer) { diff --git a/lib/cib/cib_remote.c b/lib/cib/cib_remote.c index ea838595a08..7d7413988f3 100644 --- a/lib/cib/cib_remote.c +++ b/lib/cib/cib_remote.c @@ -412,10 +412,10 @@ cib_tls_signon(cib_t *cib, pcmk__remote_t *connection, gboolean event_channel) /* login to server */ login = pcmk__xe_create(NULL, PCMK__XE_CIB_COMMAND); - crm_xml_add(login, PCMK_XA_OP, "authenticate"); - crm_xml_add(login, PCMK_XA_USER, private->user); - crm_xml_add(login, PCMK__XA_PASSWORD, private->passwd); - crm_xml_add(login, PCMK__XA_HIDDEN, PCMK__VALUE_PASSWORD); + pcmk__xe_set(login, PCMK_XA_OP, "authenticate"); + pcmk__xe_set(login, PCMK_XA_USER, private->user); + pcmk__xe_set(login, PCMK__XA_PASSWORD, private->passwd); + pcmk__xe_set(login, PCMK__XA_HIDDEN, PCMK__VALUE_PASSWORD); pcmk__remote_send_xml(connection, login); pcmk__xml_free(login); @@ -556,8 +556,8 @@ cib_remote_register_notification(cib_t * cib, const char *callback, int enabled) xmlNode *notify_msg = pcmk__xe_create(NULL, PCMK__XE_CIB_COMMAND); cib_remote_opaque_t *private = cib->variant_opaque; - crm_xml_add(notify_msg, PCMK__XA_CIB_OP, PCMK__VALUE_CIB_NOTIFY); - crm_xml_add(notify_msg, PCMK__XA_CIB_NOTIFY_TYPE, callback); + pcmk__xe_set(notify_msg, PCMK__XA_CIB_OP, PCMK__VALUE_CIB_NOTIFY); + pcmk__xe_set(notify_msg, PCMK__XA_CIB_NOTIFY_TYPE, callback); pcmk__xe_set_int(notify_msg, PCMK__XA_CIB_NOTIFY_ACTIVATE, enabled); pcmk__remote_send_xml(&private->callback, notify_msg); pcmk__xml_free(notify_msg); diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c index f2ae4c45ca2..8405d0c9c0f 100644 --- a/lib/cib/cib_utils.c +++ b/lib/cib/cib_utils.c @@ -118,8 +118,8 @@ createEmptyCib(int cib_epoch) xmlNode *cib_root = NULL, *config = NULL; cib_root = pcmk__xe_create(NULL, PCMK_XE_CIB); - crm_xml_add(cib_root, PCMK_XA_CRM_FEATURE_SET, CRM_FEATURE_SET); - crm_xml_add(cib_root, PCMK_XA_VALIDATE_WITH, pcmk__highest_schema_name()); + pcmk__xe_set(cib_root, PCMK_XA_CRM_FEATURE_SET, CRM_FEATURE_SET); + pcmk__xe_set(cib_root, PCMK_XA_VALIDATE_WITH, pcmk__highest_schema_name()); pcmk__xe_set_int(cib_root, PCMK_XA_EPOCH, cib_epoch); pcmk__xe_set_int(cib_root, PCMK_XA_NUM_UPDATES, 0); @@ -139,9 +139,10 @@ createEmptyCib(int cib_epoch) xmlNode *meta = pcmk__xe_create(rsc_defaults, PCMK_XE_META_ATTRIBUTES); xmlNode *nvpair = pcmk__xe_create(meta, PCMK_XE_NVPAIR); - crm_xml_add(meta, PCMK_XA_ID, "build-resource-defaults"); - crm_xml_add(nvpair, PCMK_XA_ID, "build-" PCMK_META_RESOURCE_STICKINESS); - crm_xml_add(nvpair, PCMK_XA_NAME, PCMK_META_RESOURCE_STICKINESS); + pcmk__xe_set(meta, PCMK_XA_ID, "build-resource-defaults"); + pcmk__xe_set(nvpair, PCMK_XA_ID, + "build-" PCMK_META_RESOURCE_STICKINESS); + pcmk__xe_set(nvpair, PCMK_XA_NAME, PCMK_META_RESOURCE_STICKINESS); pcmk__xe_set_int(nvpair, PCMK_XA_VALUE, PCMK__RESOURCE_STICKINESS_DEFAULT); } @@ -503,19 +504,19 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, const char *client = pcmk__xe_get(req, PCMK__XA_CIB_CLIENTNAME); if (origin != NULL) { - crm_xml_add(scratch, PCMK_XA_UPDATE_ORIGIN, origin); + pcmk__xe_set(scratch, PCMK_XA_UPDATE_ORIGIN, origin); } else { pcmk__xe_remove_attr(scratch, PCMK_XA_UPDATE_ORIGIN); } if (client != NULL) { - crm_xml_add(scratch, PCMK_XA_UPDATE_CLIENT, user); + pcmk__xe_set(scratch, PCMK_XA_UPDATE_CLIENT, user); } else { pcmk__xe_remove_attr(scratch, PCMK_XA_UPDATE_CLIENT); } if (user != NULL) { - crm_xml_add(scratch, PCMK_XA_UPDATE_USER, user); + pcmk__xe_set(scratch, PCMK_XA_UPDATE_USER, user); } else { pcmk__xe_remove_attr(scratch, PCMK_XA_UPDATE_USER); } @@ -570,12 +571,12 @@ cib__create_op(cib_t *cib, const char *op, const char *host, cib->call_id = 1; } - crm_xml_add(*op_msg, PCMK__XA_T, PCMK__VALUE_CIB); - crm_xml_add(*op_msg, PCMK__XA_CIB_OP, op); - crm_xml_add(*op_msg, PCMK__XA_CIB_HOST, host); - crm_xml_add(*op_msg, PCMK__XA_CIB_SECTION, section); - crm_xml_add(*op_msg, PCMK__XA_CIB_USER, user_name); - crm_xml_add(*op_msg, PCMK__XA_CIB_CLIENTNAME, client_name); + pcmk__xe_set(*op_msg, PCMK__XA_T, PCMK__VALUE_CIB); + pcmk__xe_set(*op_msg, PCMK__XA_CIB_OP, op); + pcmk__xe_set(*op_msg, PCMK__XA_CIB_HOST, host); + pcmk__xe_set(*op_msg, PCMK__XA_CIB_SECTION, section); + pcmk__xe_set(*op_msg, PCMK__XA_CIB_USER, user_name); + pcmk__xe_set(*op_msg, PCMK__XA_CIB_CLIENTNAME, client_name); pcmk__xe_set_int(*op_msg, PCMK__XA_CIB_CALLID, cib->call_id); crm_trace("Sending call options: %.8lx, %d", (long)call_options, call_options); diff --git a/lib/cluster/corosync.c b/lib/cluster/corosync.c index a0e7e6b38da..c7737bdcfac 100644 --- a/lib/cluster/corosync.c +++ b/lib/cluster/corosync.c @@ -657,7 +657,7 @@ pcmk__corosync_add_nodes(xmlNode *xml_parent) xmlNode *node = pcmk__xe_create(xml_parent, PCMK_XE_NODE); pcmk__xe_set_ll(node, PCMK_XA_ID, (long long) nodeid); - crm_xml_add(node, PCMK_XA_UNAME, name); + pcmk__xe_set(node, PCMK_XA_UNAME, name); } } diff --git a/lib/cluster/election.c b/lib/cluster/election.c index 4ec64cb95b3..66df5792361 100644 --- a/lib/cluster/election.c +++ b/lib/cluster/election.c @@ -307,8 +307,8 @@ election_vote(pcmk_cluster_t *cluster) NULL, message_type, CRM_OP_VOTE, NULL); cluster->priv->election->count++; - crm_xml_add(vote, PCMK__XA_ELECTION_OWNER, - pcmk__cluster_get_xml_id(our_node)); + pcmk__xe_set(vote, PCMK__XA_ELECTION_OWNER, + pcmk__cluster_get_xml_id(our_node)); pcmk__xe_set_int(vote, PCMK__XA_ELECTION_ID, cluster->priv->election->count); @@ -501,7 +501,7 @@ send_no_vote(pcmk_cluster_t *cluster, pcmk__node_status_t *peer, message_type = pcmk__server_message_type(cluster->priv->server); novote = pcmk__new_request(cluster->priv->server, message_type, vote->from, message_type, CRM_OP_NOVOTE, NULL); - crm_xml_add(novote, PCMK__XA_ELECTION_OWNER, vote->election_owner); + pcmk__xe_set(novote, PCMK__XA_ELECTION_OWNER, vote->election_owner); pcmk__xe_set_int(novote, PCMK__XA_ELECTION_ID, vote->election_id); pcmk__cluster_send_message(peer, cluster->priv->server, novote); diff --git a/lib/common/acl.c b/lib/common/acl.c index c064b4c8c02..7a2011fc117 100644 --- a/lib/common/acl.c +++ b/lib/common/acl.c @@ -899,11 +899,11 @@ pcmk__update_acl_user(xmlNode *request, const char *field, // This requires pointer comparison, not string comparison if (user != pcmk__xe_get(request, PCMK__XA_ACL_TARGET)) { - crm_xml_add(request, PCMK__XA_ACL_TARGET, user); + pcmk__xe_set(request, PCMK__XA_ACL_TARGET, user); } if ((field != NULL) && (user != pcmk__xe_get(request, field))) { - crm_xml_add(request, field, user); + pcmk__xe_set(request, field, user); } return requested_user; diff --git a/lib/common/actions.c b/lib/common/actions.c index 61076f50b13..d8a2325a998 100644 --- a/lib/common/actions.c +++ b/lib/common/actions.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. * @@ -555,10 +555,10 @@ crm_create_op_xml(xmlNode *parent, const char *prefix, const char *task, xml_op = pcmk__xe_create(parent, PCMK_XE_OP); pcmk__xe_set_id(xml_op, "%s-%s-%s", prefix, task, interval_spec); - crm_xml_add(xml_op, PCMK_META_INTERVAL, interval_spec); - crm_xml_add(xml_op, PCMK_XA_NAME, task); + pcmk__xe_set(xml_op, PCMK_META_INTERVAL, interval_spec); + pcmk__xe_set(xml_op, PCMK_XA_NAME, task); if (timeout) { - crm_xml_add(xml_op, PCMK_META_TIMEOUT, timeout); + pcmk__xe_set(xml_op, PCMK_META_TIMEOUT, timeout); } return xml_op; } diff --git a/lib/common/digest.c b/lib/common/digest.c index ddefc8ac775..06302954c7f 100644 --- a/lib/common/digest.c +++ b/lib/common/digest.c @@ -333,7 +333,7 @@ pcmk__filter_op_for_digest(xmlNode *param_set) // Add timeout back for recurring operation digests if (timeout != NULL) { - crm_xml_add(param_set, key, timeout); + pcmk__xe_set(param_set, key, timeout); } free(timeout); free(key); diff --git a/lib/common/ipc_attrd.c b/lib/common/ipc_attrd.c index 4fdbae01d5d..4016afc4380 100644 --- a/lib/common/ipc_attrd.c +++ b/lib/common/ipc_attrd.c @@ -140,9 +140,9 @@ create_attrd_op(const char *user_name) { xmlNode *attrd_op = pcmk__xe_create(NULL, __func__); - crm_xml_add(attrd_op, PCMK__XA_T, PCMK__VALUE_ATTRD); - crm_xml_add(attrd_op, PCMK__XA_SRC, pcmk__s(crm_system_name, "unknown")); - crm_xml_add(attrd_op, PCMK__XA_ATTR_USER, user_name); + pcmk__xe_set(attrd_op, PCMK__XA_T, PCMK__VALUE_ATTRD); + pcmk__xe_set(attrd_op, PCMK__XA_SRC, pcmk__s(crm_system_name, "unknown")); + pcmk__xe_set(attrd_op, PCMK__XA_ATTR_USER, user_name); return attrd_op; } @@ -202,11 +202,11 @@ pcmk__attrd_api_clear_failures(pcmk_ipc_api_t *api, const char *node, pcmk_ipc_name(api, true), interval_desc, op_desc, pcmk__s(resource, "all resources"), pcmk__s(node, "all nodes")); - crm_xml_add(request, PCMK_XA_TASK, PCMK__ATTRD_CMD_CLEAR_FAILURE); - 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); + pcmk__xe_set(request, PCMK_XA_TASK, PCMK__ATTRD_CMD_CLEAR_FAILURE); + pcmk__xe_set(request, PCMK__XA_ATTR_HOST, node); + pcmk__xe_set(request, PCMK__XA_ATTR_RESOURCE, resource); + pcmk__xe_set(request, PCMK__XA_ATTR_CLEAR_OPERATION, operation); + pcmk__xe_set(request, PCMK__XA_ATTR_CLEAR_INTERVAL, interval_spec); pcmk__xe_set_int(request, PCMK__XA_ATTR_IS_REMOTE, pcmk_is_set(options, pcmk__node_attr_remote)); @@ -257,9 +257,9 @@ pcmk__attrd_api_purge(pcmk_ipc_api_t *api, const char *node, bool reap) request = create_attrd_op(NULL); - crm_xml_add(request, PCMK_XA_TASK, PCMK__ATTRD_CMD_PEER_REMOVE); + pcmk__xe_set(request, PCMK_XA_TASK, PCMK__ATTRD_CMD_PEER_REMOVE); pcmk__xe_set_bool_attr(request, PCMK__XA_REAP, reap); - crm_xml_add(request, PCMK__XA_ATTR_HOST, node); + pcmk__xe_set(request, PCMK__XA_ATTR_HOST, node); rc = connect_and_send_attrd_request(api, request); @@ -297,9 +297,9 @@ pcmk__attrd_api_query(pcmk_ipc_api_t *api, const char *node, const char *name, request = create_attrd_op(NULL); - crm_xml_add(request, PCMK__XA_ATTR_NAME, name); - crm_xml_add(request, PCMK_XA_TASK, PCMK__ATTRD_CMD_QUERY); - crm_xml_add(request, PCMK__XA_ATTR_HOST, node); + pcmk__xe_set(request, PCMK__XA_ATTR_NAME, name); + pcmk__xe_set(request, PCMK_XA_TASK, PCMK__ATTRD_CMD_QUERY); + pcmk__xe_set(request, PCMK__XA_ATTR_HOST, node); rc = connect_and_send_attrd_request(api, request); pcmk__xml_free(request); @@ -322,8 +322,8 @@ 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); - crm_xml_add(request, PCMK__XA_ATTR_HOST, node); + pcmk__xe_set(request, PCMK_XA_TASK, PCMK__ATTRD_CMD_REFRESH); + pcmk__xe_set(request, PCMK__XA_ATTR_HOST, node); rc = connect_and_send_attrd_request(api, request); @@ -335,11 +335,11 @@ static void add_op_attr(xmlNode *op, uint32_t options) { if (pcmk_all_flags_set(options, pcmk__node_attr_value | pcmk__node_attr_delay)) { - crm_xml_add(op, PCMK_XA_TASK, PCMK__ATTRD_CMD_UPDATE_BOTH); + pcmk__xe_set(op, PCMK_XA_TASK, PCMK__ATTRD_CMD_UPDATE_BOTH); } else if (pcmk_is_set(options, pcmk__node_attr_value)) { - crm_xml_add(op, PCMK_XA_TASK, PCMK__ATTRD_CMD_UPDATE); + pcmk__xe_set(op, PCMK_XA_TASK, PCMK__ATTRD_CMD_UPDATE); } else if (pcmk_is_set(options, pcmk__node_attr_delay)) { - crm_xml_add(op, PCMK_XA_TASK, PCMK__ATTRD_CMD_UPDATE_DELAY); + pcmk__xe_set(op, PCMK_XA_TASK, PCMK__ATTRD_CMD_UPDATE_DELAY); } } @@ -348,32 +348,32 @@ populate_update_op(xmlNode *op, const char *node, const char *name, const char * const char *dampen, const char *set, uint32_t options) { if (pcmk_is_set(options, pcmk__node_attr_pattern)) { - crm_xml_add(op, PCMK__XA_ATTR_REGEX, name); + pcmk__xe_set(op, PCMK__XA_ATTR_REGEX, name); } else { - crm_xml_add(op, PCMK__XA_ATTR_NAME, name); + pcmk__xe_set(op, PCMK__XA_ATTR_NAME, name); } if (pcmk_is_set(options, pcmk__node_attr_utilization)) { - crm_xml_add(op, PCMK__XA_ATTR_SET_TYPE, PCMK_XE_UTILIZATION); + pcmk__xe_set(op, PCMK__XA_ATTR_SET_TYPE, PCMK_XE_UTILIZATION); } else { - crm_xml_add(op, PCMK__XA_ATTR_SET_TYPE, PCMK_XE_INSTANCE_ATTRIBUTES); + pcmk__xe_set(op, PCMK__XA_ATTR_SET_TYPE, PCMK_XE_INSTANCE_ATTRIBUTES); } add_op_attr(op, options); - crm_xml_add(op, PCMK__XA_ATTR_VALUE, value); - crm_xml_add(op, PCMK__XA_ATTR_DAMPENING, dampen); - crm_xml_add(op, PCMK__XA_ATTR_HOST, node); - crm_xml_add(op, PCMK__XA_ATTR_SET, set); + pcmk__xe_set(op, PCMK__XA_ATTR_VALUE, value); + pcmk__xe_set(op, PCMK__XA_ATTR_DAMPENING, dampen); + pcmk__xe_set(op, PCMK__XA_ATTR_HOST, node); + pcmk__xe_set(op, PCMK__XA_ATTR_SET, set); pcmk__xe_set_int(op, PCMK__XA_ATTR_IS_REMOTE, pcmk_is_set(options, pcmk__node_attr_remote)); pcmk__xe_set_int(op, PCMK__XA_ATTR_IS_PRIVATE, pcmk_is_set(options, pcmk__node_attr_private)); if (pcmk_is_set(options, pcmk__node_attr_sync_local)) { - crm_xml_add(op, PCMK__XA_ATTR_SYNC_POINT, PCMK__VALUE_LOCAL); + pcmk__xe_set(op, PCMK__XA_ATTR_SYNC_POINT, PCMK__VALUE_LOCAL); } else if (pcmk_is_set(options, pcmk__node_attr_sync_cluster)) { - crm_xml_add(op, PCMK__XA_ATTR_SYNC_POINT, PCMK__VALUE_CLUSTER); + pcmk__xe_set(op, PCMK__XA_ATTR_SYNC_POINT, PCMK__VALUE_CLUSTER); } } diff --git a/lib/common/ipc_client.c b/lib/common/ipc_client.c index 76dedd44e5c..b3a417a5f06 100644 --- a/lib/common/ipc_client.c +++ b/lib/common/ipc_client.c @@ -750,11 +750,11 @@ create_purge_node_request(const pcmk_ipc_api_t *api, const char *node_name, switch (api->server) { case pcmk_ipc_attrd: request = pcmk__xe_create(NULL, __func__); - crm_xml_add(request, PCMK__XA_T, PCMK__VALUE_ATTRD); - 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(request, PCMK__XA_T, PCMK__VALUE_ATTRD); + pcmk__xe_set(request, PCMK__XA_SRC, crm_system_name); + pcmk__xe_set(request, PCMK_XA_TASK, PCMK__ATTRD_CMD_PEER_REMOVE); pcmk__xe_set_bool_attr(request, PCMK__XA_REAP, true); - crm_xml_add(request, PCMK__XA_ATTR_HOST, node_name); + pcmk__xe_set(request, PCMK__XA_ATTR_HOST, node_name); if (nodeid > 0) { pcmk__xe_set_int(request, PCMK__XA_ATTR_HOST_ID, nodeid); } @@ -769,7 +769,7 @@ create_purge_node_request(const pcmk_ipc_api_t *api, const char *node_name, if (nodeid > 0) { pcmk__xe_set_ll(request, PCMK_XA_ID, (long long) nodeid); } - crm_xml_add(request, PCMK_XA_UNAME, node_name); + pcmk__xe_set(request, PCMK_XA_UNAME, node_name); break; case pcmk_ipc_based: diff --git a/lib/common/ipc_controld.c b/lib/common/ipc_controld.c index a20b4dfb201..03a60aceb90 100644 --- a/lib/common/ipc_controld.c +++ b/lib/common/ipc_controld.c @@ -367,9 +367,9 @@ create_reprobe_message_data(const char *target_node, const char *router_node) xmlNode *msg_data; msg_data = pcmk__xe_create(NULL, "data_for_" CRM_OP_REPROBE); - crm_xml_add(msg_data, PCMK__META_ON_NODE, target_node); + pcmk__xe_set(msg_data, PCMK__META_ON_NODE, target_node); if ((router_node != NULL) && !pcmk__str_eq(router_node, target_node, pcmk__str_casei)) { - crm_xml_add(msg_data, PCMK__XA_ROUTER_NODE, router_node); + pcmk__xe_set(msg_data, PCMK__XA_ROUTER_NODE, router_node); } return msg_data; } @@ -512,32 +512,32 @@ controller_resource_op(pcmk_ipc_api_t *api, const char *op, */ key = pcmk__transition_key(0, getpid(), 0, "xxxxxxxx-xrsc-opxx-xcrm-resourcexxxx"); - crm_xml_add(msg_data, PCMK__XA_TRANSITION_KEY, key); + pcmk__xe_set(msg_data, PCMK__XA_TRANSITION_KEY, key); free(key); - crm_xml_add(msg_data, PCMK__META_ON_NODE, target_node); + pcmk__xe_set(msg_data, PCMK__META_ON_NODE, target_node); if (!pcmk__str_eq(router_node, target_node, pcmk__str_casei)) { - crm_xml_add(msg_data, PCMK__XA_ROUTER_NODE, router_node); + pcmk__xe_set(msg_data, PCMK__XA_ROUTER_NODE, router_node); } if (cib_only) { // Indicate that only the CIB needs to be cleaned - crm_xml_add(msg_data, PCMK__XA_MODE, PCMK__VALUE_CIB); + pcmk__xe_set(msg_data, PCMK__XA_MODE, PCMK__VALUE_CIB); } xml_rsc = pcmk__xe_create(msg_data, PCMK_XE_PRIMITIVE); - crm_xml_add(xml_rsc, PCMK_XA_ID, rsc_id); - crm_xml_add(xml_rsc, PCMK__XA_LONG_ID, rsc_long_id); - crm_xml_add(xml_rsc, PCMK_XA_CLASS, standard); - crm_xml_add(xml_rsc, PCMK_XA_PROVIDER, provider); - crm_xml_add(xml_rsc, PCMK_XA_TYPE, type); + pcmk__xe_set(xml_rsc, PCMK_XA_ID, rsc_id); + pcmk__xe_set(xml_rsc, PCMK__XA_LONG_ID, rsc_long_id); + pcmk__xe_set(xml_rsc, PCMK_XA_CLASS, standard); + pcmk__xe_set(xml_rsc, PCMK_XA_PROVIDER, provider); + pcmk__xe_set(xml_rsc, PCMK_XA_TYPE, type); params = pcmk__xe_create(msg_data, PCMK__XE_ATTRIBUTES); - crm_xml_add(params, PCMK_XA_CRM_FEATURE_SET, CRM_FEATURE_SET); + pcmk__xe_set(params, PCMK_XA_CRM_FEATURE_SET, CRM_FEATURE_SET); // The controller parses the timeout from the request key = crm_meta_name(PCMK_META_TIMEOUT); - crm_xml_add(params, key, "60000"); /* 1 minute */ //@TODO pass as arg + pcmk__xe_set(params, key, "60000"); /* 1 minute */ //@TODO pass as arg free(key); request = create_controller_request(api, op, router_node, msg_data); @@ -649,12 +649,12 @@ create_hello_message(const char *uuid, const char *client_name, } hello_node = pcmk__xe_create(NULL, PCMK__XE_OPTIONS); - crm_xml_add(hello_node, PCMK__XA_MAJOR_VERSION, major_version); - crm_xml_add(hello_node, PCMK__XA_MINOR_VERSION, minor_version); - crm_xml_add(hello_node, PCMK__XA_CLIENT_NAME, client_name); + pcmk__xe_set(hello_node, PCMK__XA_MAJOR_VERSION, major_version); + pcmk__xe_set(hello_node, PCMK__XA_MINOR_VERSION, minor_version); + pcmk__xe_set(hello_node, PCMK__XA_CLIENT_NAME, client_name); // @TODO Nothing uses this. Drop, or keep for debugging? - crm_xml_add(hello_node, PCMK__XA_CLIENT_UUID, uuid); + pcmk__xe_set(hello_node, PCMK__XA_CLIENT_UUID, uuid); sender_system = crm_strdup_printf("%s_%s", uuid, client_name); hello = pcmk__new_request(pcmk_ipc_controld, sender_system, NULL, NULL, diff --git a/lib/common/ipc_server.c b/lib/common/ipc_server.c index 69b8b9cb698..3d0d8593fea 100644 --- a/lib/common/ipc_server.c +++ b/lib/common/ipc_server.c @@ -807,10 +807,10 @@ pcmk__ipc_create_ack_as(const char *function, int line, uint32_t flags, if (pcmk_is_set(flags, crm_ipc_client_response)) { ack = pcmk__xe_create(NULL, tag); - crm_xml_add(ack, PCMK_XA_FUNCTION, function); + pcmk__xe_set(ack, PCMK_XA_FUNCTION, function); pcmk__xe_set_int(ack, PCMK__XA_LINE, line); pcmk__xe_set_int(ack, PCMK_XA_STATUS, (int) status); - crm_xml_add(ack, PCMK__XA_IPC_PROTO_VERSION, ver); + pcmk__xe_set(ack, PCMK__XA_IPC_PROTO_VERSION, ver); } return ack; } diff --git a/lib/common/nvpair.c b/lib/common/nvpair.c index 1bb0b16ef72..82c61ffdfd3 100644 --- a/lib/common/nvpair.c +++ b/lib/common/nvpair.c @@ -211,11 +211,11 @@ hash2smartfield(gpointer key, gpointer value, gpointer user_data) if (isdigit(name[0])) { xmlNode *tmp = pcmk__xe_create(xml_node, PCMK__XE_PARAM); - crm_xml_add(tmp, PCMK_XA_NAME, name); - crm_xml_add(tmp, PCMK_XA_VALUE, s_value); + pcmk__xe_set(tmp, PCMK_XA_NAME, name); + pcmk__xe_set(tmp, PCMK_XA_VALUE, s_value); } else if (pcmk__xe_get(xml_node, name) == NULL) { - crm_xml_add(xml_node, name, s_value); + pcmk__xe_set(xml_node, name, s_value); crm_trace("dumped: %s=%s", name, s_value); } else { @@ -243,7 +243,7 @@ hash2field(gpointer key, gpointer value, gpointer user_data) xmlNode *xml_node = user_data; if (pcmk__xe_get(xml_node, name) == NULL) { - crm_xml_add(xml_node, name, s_value); + pcmk__xe_set(xml_node, name, s_value); } else { crm_trace("duplicate: %s=%s", name, s_value); @@ -311,13 +311,13 @@ crm_create_nvpair_xml(xmlNode *parent, const char *id, const char *name, nvp = pcmk__xe_create(parent, PCMK_XE_NVPAIR); if (id) { - crm_xml_add(nvp, PCMK_XA_ID, id); + pcmk__xe_set(nvp, PCMK_XA_ID, id); } else { pcmk__xe_set_id(nvp, "%s-%s", pcmk__s(pcmk__xe_id(parent), PCMK_XE_NVPAIR), name); } - crm_xml_add(nvp, PCMK_XA_NAME, name); - crm_xml_add(nvp, PCMK_XA_VALUE, value); + pcmk__xe_set(nvp, PCMK_XA_NAME, name); + pcmk__xe_set(nvp, PCMK_XA_VALUE, value); return nvp; } @@ -702,7 +702,7 @@ pcmk__nvpair_add_xml_attr(gpointer data, gpointer user_data) pcmk_nvpair_t *pair = data; xmlNode *parent = user_data; - crm_xml_add(parent, pair->name, pair->value); + pcmk__xe_set(parent, pair->name, pair->value); } void diff --git a/lib/common/options_display.c b/lib/common/options_display.c index 344405c3d8d..872165f7e41 100644 --- a/lib/common/options_display.c +++ b/lib/common/options_display.c @@ -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. * @@ -229,7 +229,7 @@ add_desc_xml(pcmk__output_t *out, bool for_long, const char *desc) const char *tag = (for_long? PCMK_XE_LONGDESC : PCMK_XE_SHORTDESC); xmlNode *node = pcmk__output_create_xml_text_node(out, tag, desc); - crm_xml_add(node, PCMK_XA_LANG, PCMK__VALUE_EN); + pcmk__xe_set(node, PCMK_XA_LANG, PCMK__VALUE_EN); #ifdef ENABLE_NLS { @@ -243,7 +243,7 @@ add_desc_xml(pcmk__output_t *out, bool for_long, const char *desc) locale = strtok(setlocale(LC_ALL, NULL), "_"); } node = pcmk__output_create_xml_text_node(out, tag, _(desc)); - crm_xml_add(node, PCMK_XA_LANG, locale); + pcmk__xe_set(node, PCMK_XA_LANG, locale); } #endif } diff --git a/lib/common/output_html.c b/lib/common/output_html.c index 8b63cf326b0..97f1059a7a3 100644 --- a/lib/common/output_html.c +++ b/lib/common/output_html.c @@ -118,7 +118,7 @@ html_init(pcmk__output_t *out) { priv->root = pcmk__xe_create(NULL, "html"); xmlCreateIntSubset(priv->root->doc, (const xmlChar *) "html", NULL, NULL); - crm_xml_add(priv->root, PCMK_XA_LANG, PCMK__VALUE_EN); + pcmk__xe_set(priv->root, PCMK_XA_LANG, PCMK__VALUE_EN); g_queue_push_tail(priv->parent_q, priv->root); priv->errors = NULL; @@ -172,7 +172,7 @@ html_finish(pcmk__output_t *out, crm_exit_t exit_status, bool print, void **copy } charset_node = pcmk__xe_create(head_node, PCMK__XE_META); - crm_xml_add(charset_node, "charset", "utf-8"); + pcmk__xe_set(charset_node, "charset", "utf-8"); /* Add any extra header nodes the caller might have created. */ for (GSList *iter = extra_headers; iter != NULL; iter = iter->next) { @@ -300,7 +300,7 @@ html_output_xml(pcmk__output_t *out, const char *name, const char *buf) { pcmk__assert(out != NULL); node = pcmk__output_create_html_node(out, "pre", NULL, NULL, buf); - crm_xml_add(node, PCMK_XA_LANG, "xml"); + pcmk__xe_set(node, PCMK_XA_LANG, "xml"); } G_GNUC_PRINTF(4, 5) @@ -365,7 +365,7 @@ html_list_item(pcmk__output_t *out, const char *name, const char *format, ...) { free(buf); if (name != NULL) { - crm_xml_add(item_node, PCMK_XA_CLASS, name); + pcmk__xe_set(item_node, PCMK_XA_CLASS, name); } } @@ -459,11 +459,11 @@ pcmk__output_create_html_node(pcmk__output_t *out, const char *element_name, con node = pcmk__output_create_xml_text_node(out, element_name, text); if (class_name != NULL) { - crm_xml_add(node, PCMK_XA_CLASS, class_name); + pcmk__xe_set(node, PCMK_XA_CLASS, class_name); } if (id != NULL) { - crm_xml_add(node, PCMK_XA_ID, id); + pcmk__xe_set(node, PCMK_XA_ID, id); } return node; @@ -512,7 +512,7 @@ pcmk__html_add_header(const char *name, ...) { } value = va_arg(ap, char *); - crm_xml_add(header_node, key, value); + pcmk__xe_set(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 3eaf6b57985..0784793b54e 100644 --- a/lib/common/output_xml.c +++ b/lib/common/output_xml.c @@ -115,11 +115,11 @@ add_root_node(pcmk__output_t *out) if (priv->legacy_xml) { priv->root = pcmk__xe_create(NULL, PCMK_XE_CRM_MON); - crm_xml_add(priv->root, PCMK_XA_VERSION, PACEMAKER_VERSION); + pcmk__xe_set(priv->root, PCMK_XA_VERSION, PACEMAKER_VERSION); } else { priv->root = pcmk__xe_create(NULL, PCMK_XE_PACEMAKER_RESULT); - crm_xml_add(priv->root, PCMK_XA_API_VERSION, PCMK__API_VERSION); - crm_xml_add(priv->root, PCMK_XA_REQUEST, + pcmk__xe_set(priv->root, PCMK_XA_API_VERSION, PCMK__API_VERSION); + pcmk__xe_set(priv->root, PCMK_XA_REQUEST, pcmk__s(out->request, "libpacemaker")); } @@ -262,13 +262,13 @@ xml_subprocess_output(pcmk__output_t *out, int exit_status, if (proc_stdout != NULL) { child_node = pcmk__xe_create(node, PCMK_XE_OUTPUT); pcmk__xe_set_content(child_node, "%s", proc_stdout); - crm_xml_add(child_node, PCMK_XA_SOURCE, "stdout"); + pcmk__xe_set(child_node, PCMK_XA_SOURCE, "stdout"); } if (proc_stderr != NULL) { child_node = pcmk__xe_create(node, PCMK_XE_OUTPUT); pcmk__xe_set_content(child_node, "%s", proc_stderr); - crm_xml_add(child_node, PCMK_XA_SOURCE, "stderr"); + pcmk__xe_set(child_node, PCMK_XA_SOURCE, "stderr"); } free(rc_as_str); @@ -391,7 +391,7 @@ xml_list_item(pcmk__output_t *out, const char *name, const char *format, ...) { item_node = pcmk__output_create_xml_text_node(out, PCMK_XE_ITEM, buf); if (name != NULL) { - crm_xml_add(item_node, PCMK_XA_NAME, name); + pcmk__xe_set(item_node, PCMK_XA_NAME, name); } free(buf); @@ -416,7 +416,7 @@ xml_end_list(pcmk__output_t *out) { /* Do not free node here - it's still part of the document */ node = g_queue_pop_tail(priv->parent_q); buf = crm_strdup_printf("%lu", xmlChildElementCount(node)); - crm_xml_add(node, PCMK_XA_COUNT, buf); + pcmk__xe_set(node, PCMK_XA_COUNT, buf); free(buf); } else { /* Do not free this result - it's still part of the document */ diff --git a/lib/common/patchset.c b/lib/common/patchset.c index e170f4f1661..96bbf6db09d 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -61,8 +61,8 @@ add_xml_changes_to_patchset(xmlNode *xml, xmlNode *patchset) change = pcmk__xe_create(patchset, PCMK_XE_CHANGE); - crm_xml_add(change, PCMK_XA_OPERATION, PCMK_VALUE_CREATE); - crm_xml_add(change, PCMK_XA_PATH, (const char *) xpath->str); + pcmk__xe_set(change, PCMK_XA_OPERATION, PCMK_VALUE_CREATE); + pcmk__xe_set(change, PCMK_XA_PATH, (const char *) xpath->str); pcmk__xe_set_int(change, PCMK_XE_POSITION, position); pcmk__xml_copy(change, xml); g_string_free(xpath, TRUE); @@ -87,8 +87,8 @@ add_xml_changes_to_patchset(xmlNode *xml, xmlNode *patchset) if (xpath != NULL) { change = pcmk__xe_create(patchset, PCMK_XE_CHANGE); - crm_xml_add(change, PCMK_XA_OPERATION, PCMK_VALUE_MODIFY); - crm_xml_add(change, PCMK_XA_PATH, (const char *) xpath->str); + pcmk__xe_set(change, PCMK_XA_OPERATION, PCMK_VALUE_MODIFY); + pcmk__xe_set(change, PCMK_XA_PATH, (const char *) xpath->str); change = pcmk__xe_create(change, PCMK_XE_CHANGE_LIST); g_string_free(xpath, TRUE); @@ -97,15 +97,15 @@ add_xml_changes_to_patchset(xmlNode *xml, xmlNode *patchset) attr = pcmk__xe_create(change, PCMK_XE_CHANGE_ATTR); - crm_xml_add(attr, PCMK_XA_NAME, (const char *) pIter->name); + pcmk__xe_set(attr, PCMK_XA_NAME, (const char *) pIter->name); if (nodepriv->flags & pcmk__xf_deleted) { - crm_xml_add(attr, PCMK_XA_OPERATION, "unset"); + pcmk__xe_set(attr, PCMK_XA_OPERATION, "unset"); } else { - crm_xml_add(attr, PCMK_XA_OPERATION, "set"); + pcmk__xe_set(attr, PCMK_XA_OPERATION, "set"); value = pcmk__xml_attr_value(pIter); - crm_xml_add(attr, PCMK_XA_VALUE, value); + pcmk__xe_set(attr, PCMK_XA_VALUE, value); } } @@ -120,7 +120,7 @@ add_xml_changes_to_patchset(xmlNode *xml, xmlNode *patchset) nodepriv = pIter->_private; if (!pcmk_is_set(nodepriv->flags, pcmk__xf_deleted)) { value = pcmk__xe_get(xml, (const char *) pIter->name); - crm_xml_add(result, (const char *)pIter->name, value); + pcmk__xe_set(result, (const char *)pIter->name, value); } } } @@ -142,8 +142,8 @@ add_xml_changes_to_patchset(xmlNode *xml, xmlNode *patchset) if (xpath != NULL) { change = pcmk__xe_create(patchset, PCMK_XE_CHANGE); - crm_xml_add(change, PCMK_XA_OPERATION, PCMK_VALUE_MOVE); - crm_xml_add(change, PCMK_XA_PATH, (const char *) xpath->str); + pcmk__xe_set(change, PCMK_XA_OPERATION, PCMK_VALUE_MOVE); + pcmk__xe_set(change, PCMK_XA_PATH, (const char *) xpath->str); pcmk__xe_set_int(change, PCMK_XE_POSITION, pcmk__xml_position(xml, pcmk__xf_deleted)); g_string_free(xpath, TRUE); @@ -213,7 +213,7 @@ xml_create_patchset_v2(xmlNode *source, xmlNode *target) if (value == NULL) { value = "1"; } - crm_xml_add(v, vfields[lpc], value); + pcmk__xe_set(v, vfields[lpc], value); } v = pcmk__xe_create(version, PCMK_XE_TARGET); @@ -223,15 +223,15 @@ xml_create_patchset_v2(xmlNode *source, xmlNode *target) if (value == NULL) { value = "1"; } - crm_xml_add(v, vfields[lpc], value); + pcmk__xe_set(v, vfields[lpc], value); } for (gIter = docpriv->deleted_objs; gIter; gIter = gIter->next) { pcmk__deleted_xml_t *deleted_obj = gIter->data; xmlNode *change = pcmk__xe_create(patchset, PCMK_XE_CHANGE); - crm_xml_add(change, PCMK_XA_OPERATION, PCMK_VALUE_DELETE); - crm_xml_add(change, PCMK_XA_PATH, deleted_obj->path); + pcmk__xe_set(change, PCMK_XA_OPERATION, PCMK_VALUE_DELETE); + pcmk__xe_set(change, PCMK_XA_PATH, deleted_obj->path); if (deleted_obj->position >= 0) { pcmk__xe_set_int(change, PCMK_XE_POSITION, deleted_obj->position); } @@ -272,7 +272,7 @@ xml_create_patchset(int format, xmlNode *source, xmlNode *target, int counter = 0; if (*config_changed) { - crm_xml_add(target, PCMK_XA_NUM_UPDATES, "0"); + pcmk__xe_set(target, PCMK_XA_NUM_UPDATES, "0"); pcmk__xe_get_int(target, PCMK_XA_EPOCH, &counter); pcmk__xe_set_int(target, PCMK_XA_EPOCH, counter + 1); @@ -308,7 +308,7 @@ pcmk__xml_patchset_add_digest(xmlNode *patchset, const xmlNode *target) digest = pcmk__digest_xml(target, true); - crm_xml_add(patchset, PCMK__XA_DIGEST, digest); + pcmk__xe_set(patchset, PCMK__XA_DIGEST, digest); free(digest); } @@ -698,7 +698,7 @@ apply_v2_patchset(xmlNode *xml, const xmlNode *patchset) const char *name = (const char *) pIter->name; const char *value = pcmk__xml_attr_value(pIter); - crm_xml_add(match, name, value); + pcmk__xe_set(match, name, value); } } else { @@ -993,7 +993,7 @@ patchset_process_digest(xmlNode *patch, const xmlNode *source, digest = pcmk__digest_xml(target, true); - crm_xml_add(patch, PCMK__XA_DIGEST, digest); + pcmk__xe_set(patch, PCMK__XA_DIGEST, digest); free(digest); return; diff --git a/lib/common/schemas.c b/lib/common/schemas.c index 4fd933683a2..b282eb4543f 100644 --- a/lib/common/schemas.c +++ b/lib/common/schemas.c @@ -1232,7 +1232,7 @@ pcmk__update_schema(xmlNode **xml, const char *max_schema_name, bool transform, crm_info("%s the configuration schema to %s", (transform? "Transformed" : "Upgraded"), best_schema->name); - crm_xml_add(*xml, PCMK_XA_VALIDATE_WITH, best_schema->name); + pcmk__xe_set(*xml, PCMK_XA_VALIDATE_WITH, best_schema->name); } return rc; } @@ -1485,7 +1485,7 @@ add_schema_file_to_xml(xmlNode *parent, const char *file, GList **already_includ * as a CDATA block underneath it. */ file_node = pcmk__xe_create(parent, PCMK__XE_FILE); - crm_xml_add(file_node, PCMK_XA_PATH, path); + pcmk__xe_set(file_node, PCMK_XA_PATH, path); *already_included = g_list_prepend(*already_included, path); xmlAddChild(file_node, @@ -1527,7 +1527,7 @@ pcmk__build_schema_xml_node(xmlNode *parent, const char *name, GList **already_i { xmlNode *schema_node = pcmk__xe_create(parent, PCMK__XA_SCHEMA); - crm_xml_add(schema_node, PCMK_XA_VERSION, name); + pcmk__xe_set(schema_node, PCMK_XA_VERSION, name); add_schema_file_to_xml(schema_node, name, already_included); if (schema_node->children == NULL) { diff --git a/lib/common/tests/nvpair/pcmk__xe_get_flags_test.c b/lib/common/tests/nvpair/pcmk__xe_get_flags_test.c index 3462405ba56..93f049bca64 100644 --- a/lib/common/tests/nvpair/pcmk__xe_get_flags_test.c +++ b/lib/common/tests/nvpair/pcmk__xe_get_flags_test.c @@ -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. * @@ -28,7 +28,7 @@ assert_flags(const char *value, int expected_rc, unsigned int expected_flags) xmlNode *xml = pcmk__xe_create(NULL, "element"); assert_non_null(xml); - crm_xml_add(xml, "attribute", value); + pcmk__xe_set(xml, "attribute", value); // Without output argument assert_int_equal(pcmk__xe_get_flags(xml, "attribute", NULL, DEFAULT_VALUE), diff --git a/lib/common/tests/rules/pcmk_evaluate_rule_test.c b/lib/common/tests/rules/pcmk_evaluate_rule_test.c index e2dd9e3d506..ac31f7efd68 100644 --- a/lib/common/tests/rules/pcmk_evaluate_rule_test.c +++ b/lib/common/tests/rules/pcmk_evaluate_rule_test.c @@ -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. * @@ -88,7 +88,7 @@ good_idref(void **state) xmlNode *rule_xml = pcmk__xe_create(parent_xml, PCMK_XE_RULE); crm_time_t *next_change = crm_time_new_undefined(); - crm_xml_add(rule_xml, PCMK_XA_ID_REF, "r"); + pcmk__xe_set(rule_xml, PCMK_XA_ID_REF, "r"); assert_int_equal(pcmk_evaluate_rule(rule_xml, &rule_input, next_change), pcmk_rc_ok); @@ -103,7 +103,7 @@ bad_idref(void **state) xmlNode *rule_xml = pcmk__xe_create(parent_xml, PCMK_XE_RULE); crm_time_t *next_change = crm_time_new_undefined(); - crm_xml_add(rule_xml, PCMK_XA_ID_REF, "x"); + pcmk__xe_set(rule_xml, PCMK_XA_ID_REF, "x"); assert_int_equal(pcmk_evaluate_rule(rule_xml, &rule_input, next_change), pcmk_rc_unpack_error); diff --git a/lib/common/tests/xml_element/pcmk__xe_copy_attrs_test.c b/lib/common/tests/xml_element/pcmk__xe_copy_attrs_test.c index 7745ff45833..c8583fbe7af 100644 --- a/lib/common/tests/xml_element/pcmk__xe_copy_attrs_test.c +++ b/lib/common/tests/xml_element/pcmk__xe_copy_attrs_test.c @@ -39,7 +39,7 @@ no_source_attrs(void **state) assert_ptr_equal(target->properties, NULL); // Ensure copying from empty source doesn't delete target attributes - crm_xml_add(target, "attr", "value"); + pcmk__xe_set(target, "attr", "value"); assert_int_equal(pcmk__xe_copy_attrs(target, src, pcmk__xaf_none), pcmk_rc_ok); assert_string_equal(pcmk__xe_get(target, "attr"), "value"); @@ -54,7 +54,7 @@ copy_one(void **state) xmlNode *src = pcmk__xe_create(NULL, "test"); xmlNode *target = pcmk__xe_create(NULL, "test"); - crm_xml_add(src, "attr", "value"); + pcmk__xe_set(src, "attr", "value"); assert_int_equal(pcmk__xe_copy_attrs(target, src, pcmk__xaf_none), pcmk_rc_ok); @@ -96,8 +96,8 @@ overwrite(void **state) xmlNode *src = pcmk__xe_create(NULL, "test"); xmlNode *target = pcmk__xe_create(NULL, "test"); - crm_xml_add(src, "attr", "src_value"); - crm_xml_add(target, "attr", "target_value"); + pcmk__xe_set(src, "attr", "src_value"); + pcmk__xe_set(target, "attr", "target_value"); // Overwrite enabled by default assert_int_equal(pcmk__xe_copy_attrs(target, src, pcmk__xaf_none), @@ -114,8 +114,8 @@ no_overwrite(void **state) xmlNode *src = pcmk__xe_create(NULL, "test"); xmlNode *target = pcmk__xe_create(NULL, "test"); - crm_xml_add(src, "attr", "src_value"); - crm_xml_add(target, "attr", "target_value"); + pcmk__xe_set(src, "attr", "src_value"); + pcmk__xe_set(target, "attr", "target_value"); assert_int_equal(pcmk__xe_copy_attrs(target, src, pcmk__xaf_no_overwrite), pcmk_rc_ok); @@ -140,10 +140,10 @@ score_update(void **state) xmlNode *src = pcmk__xe_create(NULL, "test"); xmlNode *target = pcmk__xe_create(NULL, "test"); - crm_xml_add(src, "plus_plus_attr", "plus_plus_attr++"); - crm_xml_add(src, "plus_two_attr", "plus_two_attr+=2"); - crm_xml_add(target, "plus_plus_attr", "1"); - crm_xml_add(target, "plus_two_attr", "1"); + pcmk__xe_set(src, "plus_plus_attr", "plus_plus_attr++"); + pcmk__xe_set(src, "plus_two_attr", "plus_two_attr+=2"); + pcmk__xe_set(target, "plus_plus_attr", "1"); + pcmk__xe_set(target, "plus_two_attr", "1"); assert_int_equal(pcmk__xe_copy_attrs(target, src, pcmk__xaf_score_update), pcmk_rc_ok); @@ -160,10 +160,10 @@ no_score_update(void **state) xmlNode *src = pcmk__xe_create(NULL, "test"); xmlNode *target = pcmk__xe_create(NULL, "test"); - crm_xml_add(src, "plus_plus_attr", "plus_plus_attr++"); - crm_xml_add(src, "plus_two_attr", "plus_two_attr+=2"); - crm_xml_add(target, "plus_plus_attr", "1"); - crm_xml_add(target, "plus_two_attr", "1"); + pcmk__xe_set(src, "plus_plus_attr", "plus_plus_attr++"); + pcmk__xe_set(src, "plus_two_attr", "plus_two_attr+=2"); + pcmk__xe_set(target, "plus_plus_attr", "1"); + pcmk__xe_set(target, "plus_two_attr", "1"); // Score update disabled by default assert_int_equal(pcmk__xe_copy_attrs(target, src, pcmk__xaf_none), diff --git a/lib/common/tests/xml_element/pcmk__xe_get_score_test.c b/lib/common/tests/xml_element/pcmk__xe_get_score_test.c index 9fcd47fd42a..13cd15df836 100644 --- a/lib/common/tests/xml_element/pcmk__xe_get_score_test.c +++ b/lib/common/tests/xml_element/pcmk__xe_get_score_test.c @@ -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. * @@ -27,7 +27,7 @@ assert_score(const char *score_s, int expected_rc, int expected_score) int rc = pcmk_rc_ok; xmlNode *xml = pcmk__xe_create(NULL, __func__); - crm_xml_add(xml, "test_attr", score_s); + pcmk__xe_set(xml, "test_attr", score_s); rc = pcmk__xe_get_score(xml, "test_attr", &score, default_score); assert_int_equal(rc, expected_rc); assert_int_equal(score, expected_score); @@ -73,11 +73,11 @@ null_score(void **state) assert_int_equal(pcmk__xe_get_score(xml, "test_attr", NULL, default_score), pcmk_rc_ok); - crm_xml_add(xml, "test_attr", "0"); + pcmk__xe_set(xml, "test_attr", "0"); assert_int_equal(pcmk__xe_get_score(xml, "test_attr", NULL, default_score), pcmk_rc_ok); - crm_xml_add(xml, "test_attr", "foo"); + pcmk__xe_set(xml, "test_attr", "foo"); assert_int_equal(pcmk__xe_get_score(xml, "test_attr", NULL, default_score), pcmk_rc_bad_input); diff --git a/lib/common/tests/xml_element/pcmk__xe_set_score_test.c b/lib/common/tests/xml_element/pcmk__xe_set_score_test.c index 0f000463238..08b1a8d3c88 100644 --- a/lib/common/tests/xml_element/pcmk__xe_set_score_test.c +++ b/lib/common/tests/xml_element/pcmk__xe_set_score_test.c @@ -33,7 +33,7 @@ assert_set_score(const char *initial, const char *new, const char *name = "X"; xmlNode *test_xml = pcmk__xe_create(NULL, "test_xml"); - crm_xml_add(test_xml, name, initial); + pcmk__xe_set(test_xml, name, initial); assert_int_equal(pcmk__xe_set_score(test_xml, name, new), reference_rc); assert_string_equal(pcmk__xe_get(test_xml, name), reference_val); @@ -66,7 +66,7 @@ name_is_NULL(void **state) { xmlNode *test_xml = pcmk__xe_create(NULL, "test_xml"); - crm_xml_add(test_xml, "X", "5"); + pcmk__xe_set(test_xml, "X", "5"); // Dumps core via CRM_CHECK() assert_int_equal(pcmk__xe_set_score(test_xml, NULL, "X++"), EINVAL); diff --git a/lib/common/tests/xml_element/pcmk__xe_sort_attrs_test.c b/lib/common/tests/xml_element/pcmk__xe_sort_attrs_test.c index 106d5bc34a4..e7aad245639 100644 --- a/lib/common/tests/xml_element/pcmk__xe_sort_attrs_test.c +++ b/lib/common/tests/xml_element/pcmk__xe_sort_attrs_test.c @@ -102,7 +102,7 @@ nothing_to_sort(void **state) pcmk__xml_free(reference_xml); // Only one attribute - crm_xml_add(test_xml, "name", "value"); + pcmk__xe_set(test_xml, "name", "value"); reference_xml = pcmk__xml_copy(NULL, test_xml); assert_order(test_xml, reference_xml); pcmk__xml_free(reference_xml); @@ -118,9 +118,9 @@ already_sorted(void **state) xmlAttr *attr = NULL; - crm_xml_add(test_xml, "admin", "john"); - crm_xml_add(test_xml, "dummy", "value"); - crm_xml_add(test_xml, "location", "usa"); + pcmk__xe_set(test_xml, "admin", "john"); + pcmk__xe_set(test_xml, "dummy", "value"); + pcmk__xe_set(test_xml, "location", "usa"); // Set flags in test_xml's attributes for testing flag preservation attr = xmlHasProp(test_xml, (const xmlChar *) "admin"); @@ -161,9 +161,9 @@ need_sort(void **state) xmlAttr *attr = NULL; - crm_xml_add(test_xml, "location", "usa"); - crm_xml_add(test_xml, "admin", "john"); - crm_xml_add(test_xml, "dummy", "value"); + pcmk__xe_set(test_xml, "location", "usa"); + pcmk__xe_set(test_xml, "admin", "john"); + pcmk__xe_set(test_xml, "dummy", "value"); // Set flags in test_xml's attributes for testing flag preservation attr = xmlHasProp(test_xml, (const xmlChar *) "location"); diff --git a/lib/common/xml.c b/lib/common/xml.c index 6c0ba494796..1e675d8efed 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -1114,7 +1114,7 @@ mark_attr_deleted(xmlNode *new_xml, const char *element, const char *attr_name, * checking ACLs) */ pcmk__clear_xml_flags(docpriv, pcmk__xf_tracking); - crm_xml_add(new_xml, attr_name, old_value); + pcmk__xe_set(new_xml, attr_name, old_value); pcmk__set_xml_flags(docpriv, pcmk__xf_tracking); // Reset flags (so the attribute doesn't appear as newly created) @@ -1145,11 +1145,11 @@ mark_attr_changed(xmlNode *new_xml, const char *element, const char *attr_name, // Restore the original value (without checking ACLs) pcmk__clear_xml_flags(docpriv, pcmk__xf_tracking); - crm_xml_add(new_xml, attr_name, old_value); + pcmk__xe_set(new_xml, attr_name, old_value); pcmk__set_xml_flags(docpriv, pcmk__xf_tracking); // Change it back to the new value, to check ACLs - crm_xml_add(new_xml, attr_name, vcopy); + pcmk__xe_set(new_xml, attr_name, vcopy); free(vcopy); } diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index cae8a4e748d..34273378dcc 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -21,7 +21,6 @@ #include // xmlChar #include -#include // crm_xml_add(), etc. #include // pcmk_rc_ok, etc. #include #include "crmcommon_private.h" @@ -228,7 +227,7 @@ pcmk__xe_set_score(xmlNode *target, const char *name, const char *value) // Default case: set the attribute unexpanded (with value treated literally) if (old_value != value) { - crm_xml_add(target, name, value); + pcmk__xe_set(target, name, value); } return pcmk_rc_ok; } @@ -265,7 +264,7 @@ pcmk__xe_copy_attrs(xmlNode *target, const xmlNode *src, uint32_t flags) if (pcmk_is_set(flags, pcmk__xaf_score_update)) { pcmk__xe_set_score(target, name, value); } else { - crm_xml_add(target, name, value); + pcmk__xe_set(target, name, value); } } @@ -510,7 +509,7 @@ pcmk__xe_set_id(xmlNode *node, const char *format, ...) if (!xmlValidateNameValue((const xmlChar *) id)) { pcmk__xml_sanitize_id(id); } - crm_xml_add(node, PCMK_XA_ID, id); + pcmk__xe_set(node, PCMK_XA_ID, id); free(id); } @@ -526,12 +525,11 @@ const char * pcmk__xe_add_last_written(xmlNode *xe) { char *now_s = pcmk__epoch2str(NULL, 0); - const char *result = NULL; - result = crm_xml_add(xe, PCMK_XA_CIB_LAST_WRITTEN, - pcmk__s(now_s, "Could not determine current time")); + pcmk__xe_set(xe, PCMK_XA_CIB_LAST_WRITTEN, + pcmk__s(now_s, "Could not determine current time")); free(now_s); - return result; + return pcmk__xe_get(xe, PCMK_XA_CIB_LAST_WRITTEN); } /*! @@ -960,9 +958,7 @@ pcmk__xe_set_propv(xmlNodePtr node, va_list pairs) } value = va_arg(pairs, const char *); - if (value != NULL) { - crm_xml_add(node, name, value); - } + pcmk__xe_set(node, name, value); } } @@ -1077,6 +1073,71 @@ pcmk__xe_get(const xmlNode *xml, const char *attr_name) return (const char *) attr->children->content; } +/*! + * \internal + * \brief Set an XML attribute value + * + * This also performs change tracking if enabled and checks ACLs if enabled. + * Upon ACL denial, the attribute is not updated. + * + * \param[in,out] xml XML element whose attribute to set + * \param[in] attr_name Attribute name + * \param[in] value Attribute value to set + * + * \return Standard Pacemaker return code + * + * \note This does nothing and returns \c pcmk_rc_ok if \p value is \c NULL. + */ +int +pcmk__xe_set(xmlNode *xml, const char *attr_name, const char *value) +{ + bool dirty = false; + xmlAttr *attr = NULL; + + CRM_CHECK((xml != NULL) && (attr_name != NULL), return EINVAL); + + if (value == NULL) { + return pcmk_rc_ok; + } + + /* @TODO Can we return early if dirty is false? Or does anything rely on + * "cleanly" resetting the value? If so, try to preserve existing behavior + * for public API functions that depend on this. + */ + if (pcmk__xml_doc_all_flags_set(xml->doc, pcmk__xf_tracking)) { + const char *old_value = pcmk__xe_get(xml, attr_name); + + if (!pcmk__str_eq(old_value, value, pcmk__str_none)) { + dirty = true; + } + } + + if (dirty && !pcmk__check_acl(xml, attr_name, pcmk__xf_acl_create)) { + crm_trace("Cannot add %s=%s to %s", + attr_name, value, (const char *) xml->name); + return EACCES; + } + + attr = xmlSetProp(xml, (const xmlChar *) attr_name, + (const xmlChar *) value); + + // These should never be NULL -- out of memory? + CRM_CHECK((attr != NULL) && (attr->children != NULL) + && (attr->children->content != NULL), + xmlRemoveProp(attr); return ENXIO); + + /* If the attribute already exists, this does nothing. Attribute values + * don't get private data. + */ + pcmk__xml_new_private_data((xmlNode *) attr); + + if (dirty) { + pcmk__mark_xml_attr_dirty(attr); + } + + return pcmk_rc_ok; +} + /*! * \internal * \brief Retrieve a flag group from an XML attribute value @@ -1164,7 +1225,7 @@ pcmk__xe_get_guint(const xmlNode *xml, const char *attr, guint *dest) * \internal * \brief Set an XML attribute using a \c guint value * - * This is like \c crm_xml_add() but takes a \c guint. + * This is like \c pcmk__xe_set() but takes a \c guint. * * \param[in,out] xml XML node to modify * \param[in] attr Attribute name @@ -1178,7 +1239,7 @@ pcmk__xe_set_guint(xmlNode *xml, const char *attr, guint value) CRM_CHECK((xml != NULL) && (attr != NULL), return); value_s = crm_strdup_printf("%u", value); - crm_xml_add(xml, attr, value_s); + pcmk__xe_set(xml, attr, value_s); free(value_s); } @@ -1219,7 +1280,7 @@ pcmk__xe_get_int(const xmlNode *xml, const char *attr, int *dest) * \internal * \brief Set an XML attribute using an \c int value. * - * This is like \c crm_xml_add() but takes an \c int. + * This is like \c pcmk__xe_set() but takes an \c int. * * \param[in,out] xml XML node to modify * \param[in] attr Attribute name @@ -1233,7 +1294,7 @@ pcmk__xe_set_int(xmlNode *xml, const char *attr, int value) CRM_CHECK((xml != NULL) && (attr != NULL), return); value_s = pcmk__itoa(value); - crm_xml_add(xml, attr, value_s); + pcmk__xe_set(xml, attr, value_s); free(value_s); } @@ -1276,7 +1337,7 @@ pcmk__xe_get_ll(const xmlNode *xml, const char *attr, long long *dest) * \internal * \brief Set an XML attribute using a long long value * - * This is like \c crm_xml_add() but takes a long long. + * This is like \c pcmk__xe_set() but takes a long long. * * \param[in,out] xml XML node to modify * \param[in] attr Attribute name @@ -1294,12 +1355,7 @@ pcmk__xe_set_ll(xmlNode *xml, const char *attr, long long value) value_s = crm_strdup_printf("%lld", value); - errno = 0; - if (crm_xml_add(xml, attr, value_s) == NULL) { - // ACL denial - rc = (errno != 0)? errno : EACCES; - } - + rc = pcmk__xe_set(xml, attr, value_s); free(value_s); return rc; } @@ -1342,7 +1398,7 @@ pcmk__xe_get_time(const xmlNode *xml, const char *attr, time_t *dest) * \internal * \brief Set an XML attribute using a \c time_t value * - * This is like \c crm_xml_add() but takes a \c time_t. + * This is like \c pcmk__xe_set() but takes a \c time_t. * * \param[in,out] xml XML element whose attribute to set * \param[in] attr Attribute name @@ -1406,7 +1462,7 @@ pcmk__xe_get_timeval(const xmlNode *xml, const char *sec_attr, * \internal * \brief Set XML attribute values for seconds and microseconds * - * This is like \c crm_xml_add() but takes a struct timeval *. + * This is like \c pcmk__xe_set() but takes a struct timeval *. * * \param[in,out] xml XML element whose attributes to set * \param[in] sec_attr Name of XML attribute for seconds @@ -1484,7 +1540,7 @@ pcmk__xe_get_datetime(const xmlNode *xml, const char *attr, crm_time_t **t) void pcmk__xe_set_bool_attr(xmlNodePtr node, const char *name, bool value) { - crm_xml_add(node, name, pcmk__btoa(value)); + pcmk__xe_set(node, name, pcmk__btoa(value)); } /*! diff --git a/lib/fencing/st_actions.c b/lib/fencing/st_actions.c index a3f98b7d97b..86c31702e30 100644 --- a/lib/fencing/st_actions.c +++ b/lib/fencing/st_actions.c @@ -449,8 +449,8 @@ stonith__xe_set_result(xmlNode *xml, const pcmk__action_result_t *result) pcmk__xe_set_int(xml, PCMK__XA_OP_STATUS, (int) execution_status); pcmk__xe_set_int(xml, PCMK__XA_RC_CODE, exit_status); - crm_xml_add(xml, PCMK_XA_EXIT_REASON, exit_reason); - crm_xml_add(xml, PCMK__XA_ST_OUTPUT, action_stdout); + pcmk__xe_set(xml, PCMK_XA_EXIT_REASON, exit_reason); + pcmk__xe_set(xml, PCMK__XA_ST_OUTPUT, action_stdout); /* @COMPAT Peers in rolling upgrades, Pacemaker Remote nodes, and external * code that use libstonithd <=2.1.2 don't check for the full result, and diff --git a/lib/fencing/st_client.c b/lib/fencing/st_client.c index af581f650e5..e2796ddd900 100644 --- a/lib/fencing/st_client.c +++ b/lib/fencing/st_client.c @@ -284,8 +284,8 @@ stonith_connection_destroy(gpointer user_data) free(native->token); native->token = NULL; stonith->state = stonith_disconnected; - crm_xml_add(blob.xml, PCMK__XA_T, PCMK__VALUE_ST_NOTIFY); - crm_xml_add(blob.xml, PCMK__XA_SUBT, PCMK__VALUE_ST_NOTIFY_DISCONNECT); + pcmk__xe_set(blob.xml, PCMK__XA_T, PCMK__VALUE_ST_NOTIFY); + pcmk__xe_set(blob.xml, PCMK__XA_SUBT, PCMK__VALUE_ST_NOTIFY_DISCONNECT); foreach_notify_entry(native, stonith_send_notification, &blob); pcmk__xml_free(blob.xml); @@ -310,15 +310,15 @@ create_device_registration_xml(const char *id, enum stonith_namespace standard, } #endif - crm_xml_add(data, PCMK_XA_ID, id); - crm_xml_add(data, PCMK__XA_ST_ORIGIN, __func__); - crm_xml_add(data, PCMK_XA_AGENT, agent); + pcmk__xe_set(data, PCMK_XA_ID, id); + pcmk__xe_set(data, PCMK__XA_ST_ORIGIN, __func__); + pcmk__xe_set(data, PCMK_XA_AGENT, agent); if ((standard != st_namespace_any) && (standard != st_namespace_invalid)) { - crm_xml_add(data, PCMK__XA_NAMESPACE, - stonith_namespace2text(standard)); + pcmk__xe_set(data, PCMK__XA_NAMESPACE, + stonith_namespace2text(standard)); } if (rsc_provides) { - crm_xml_add(data, PCMK__XA_RSC_PROVIDES, rsc_provides); + pcmk__xe_set(data, PCMK__XA_RSC_PROVIDES, rsc_provides); } for (; params; params = params->next) { @@ -354,8 +354,8 @@ stonith_api_remove_device(stonith_t * st, int call_options, const char *name) xmlNode *data = NULL; data = pcmk__xe_create(NULL, PCMK__XE_ST_DEVICE_ID); - crm_xml_add(data, PCMK__XA_ST_ORIGIN, __func__); - crm_xml_add(data, PCMK_XA_ID, name); + pcmk__xe_set(data, PCMK__XA_ST_ORIGIN, __func__); + pcmk__xe_set(data, PCMK_XA_ID, name); rc = stonith_send_command(st, STONITH_OP_DEVICE_DEL, data, NULL, call_options, 0); pcmk__xml_free(data); @@ -373,17 +373,17 @@ stonith_api_remove_level_full(stonith_t *st, int options, CRM_CHECK(node || pattern || (attr && value), return -EINVAL); data = pcmk__xe_create(NULL, PCMK_XE_FENCING_LEVEL); - crm_xml_add(data, PCMK__XA_ST_ORIGIN, __func__); + pcmk__xe_set(data, PCMK__XA_ST_ORIGIN, __func__); if (node) { - crm_xml_add(data, PCMK_XA_TARGET, node); + pcmk__xe_set(data, PCMK_XA_TARGET, node); } else if (pattern) { - crm_xml_add(data, PCMK_XA_TARGET_PATTERN, pattern); + pcmk__xe_set(data, PCMK_XA_TARGET_PATTERN, pattern); } else { - crm_xml_add(data, PCMK_XA_TARGET_ATTRIBUTE, attr); - crm_xml_add(data, PCMK_XA_TARGET_VALUE, value); + pcmk__xe_set(data, PCMK_XA_TARGET_ATTRIBUTE, attr); + pcmk__xe_set(data, PCMK_XA_TARGET_VALUE, value); } pcmk__xe_set_int(data, PCMK_XA_INDEX, level); @@ -427,19 +427,19 @@ create_level_registration_xml(const char *node, const char *pattern, data = pcmk__xe_create(NULL, PCMK_XE_FENCING_LEVEL); - crm_xml_add(data, PCMK__XA_ST_ORIGIN, __func__); + pcmk__xe_set(data, PCMK__XA_ST_ORIGIN, __func__); pcmk__xe_set_int(data, PCMK_XA_ID, level); pcmk__xe_set_int(data, PCMK_XA_INDEX, level); if (node) { - crm_xml_add(data, PCMK_XA_TARGET, node); + pcmk__xe_set(data, PCMK_XA_TARGET, node); } else if (pattern) { - crm_xml_add(data, PCMK_XA_TARGET_PATTERN, pattern); + pcmk__xe_set(data, PCMK_XA_TARGET_PATTERN, pattern); } else { - crm_xml_add(data, PCMK_XA_TARGET_ATTRIBUTE, attr); - crm_xml_add(data, PCMK_XA_TARGET_VALUE, value); + pcmk__xe_set(data, PCMK_XA_TARGET_ATTRIBUTE, attr); + pcmk__xe_set(data, PCMK_XA_TARGET_VALUE, value); } for (; device_list; device_list = device_list->next) { @@ -447,7 +447,7 @@ create_level_registration_xml(const char *node, const char *pattern, } if (list != NULL) { - crm_xml_add(data, PCMK_XA_DEVICES, (const char *) list->str); + pcmk__xe_set(data, PCMK_XA_DEVICES, (const char *) list->str); g_string_free(list, TRUE); } return data; @@ -555,9 +555,9 @@ stonith_api_query(stonith_t * stonith, int call_options, const char *target, CRM_CHECK(devices != NULL, return -EINVAL); data = pcmk__xe_create(NULL, PCMK__XE_ST_DEVICE_ID); - crm_xml_add(data, PCMK__XA_ST_ORIGIN, __func__); - crm_xml_add(data, PCMK__XA_ST_TARGET, target); - crm_xml_add(data, PCMK__XA_ST_DEVICE_ACTION, PCMK_ACTION_OFF); + pcmk__xe_set(data, PCMK__XA_ST_ORIGIN, __func__); + pcmk__xe_set(data, PCMK__XA_ST_TARGET, target); + pcmk__xe_set(data, PCMK__XA_ST_DEVICE_ACTION, PCMK_ACTION_OFF); rc = stonith_send_command(stonith, STONITH_OP_QUERY, data, &output, call_options, timeout); if (rc < 0) { @@ -612,10 +612,10 @@ stonith_api_call(stonith_t *stonith, int call_options, const char *id, xmlNode *data = NULL; data = pcmk__xe_create(NULL, PCMK__XE_ST_DEVICE_ID); - crm_xml_add(data, PCMK__XA_ST_ORIGIN, __func__); - crm_xml_add(data, PCMK__XA_ST_DEVICE_ID, id); - crm_xml_add(data, PCMK__XA_ST_DEVICE_ACTION, action); - crm_xml_add(data, PCMK__XA_ST_TARGET, target); + pcmk__xe_set(data, PCMK__XA_ST_ORIGIN, __func__); + pcmk__xe_set(data, PCMK__XA_ST_DEVICE_ID, id); + pcmk__xe_set(data, PCMK__XA_ST_DEVICE_ACTION, action); + pcmk__xe_set(data, PCMK__XA_ST_TARGET, target); rc = stonith_send_command(stonith, STONITH_OP_EXEC, data, output, call_options, timeout_sec); @@ -674,8 +674,8 @@ stonith_api_fence_with_delay(stonith_t * stonith, int call_options, const char * xmlNode *data = NULL; data = pcmk__xe_create(NULL, __func__); - crm_xml_add(data, PCMK__XA_ST_TARGET, node); - crm_xml_add(data, PCMK__XA_ST_DEVICE_ACTION, action); + pcmk__xe_set(data, PCMK__XA_ST_TARGET, node); + pcmk__xe_set(data, PCMK__XA_ST_DEVICE_ACTION, action); pcmk__xe_set_int(data, PCMK__XA_ST_TIMEOUT, timeout); pcmk__xe_set_int(data, PCMK__XA_ST_TOLERANCE, tolerance); pcmk__xe_set_int(data, PCMK__XA_ST_DELAY, delay); @@ -715,7 +715,7 @@ stonith_api_history(stonith_t * stonith, int call_options, const char *node, if (node) { data = pcmk__xe_create(NULL, __func__); - crm_xml_add(data, PCMK__XA_ST_TARGET, node); + pcmk__xe_set(data, PCMK__XA_ST_TARGET, node); } stonith__set_call_options(call_options, node, st_opt_sync_call); @@ -818,8 +818,8 @@ stonith_create_op(int call_id, const char *token, const char *op, xmlNode * data CRM_CHECK(token != NULL, return NULL); op_msg = pcmk__xe_create(NULL, PCMK__XE_STONITH_COMMAND); - crm_xml_add(op_msg, PCMK__XA_T, PCMK__VALUE_STONITH_NG); - crm_xml_add(op_msg, PCMK__XA_ST_OP, op); + pcmk__xe_set(op_msg, PCMK__XA_T, PCMK__VALUE_STONITH_NG); + pcmk__xe_set(op_msg, PCMK__XA_ST_OP, op); pcmk__xe_set_int(op_msg, PCMK__XA_ST_CALLID, call_id); crm_trace("Sending call options: %.8lx, %d", (long)call_options, call_options); pcmk__xe_set_int(op_msg, PCMK__XA_ST_CALLOPT, call_options); @@ -1148,9 +1148,9 @@ stonith_api_signon(stonith_t * stonith, const char *name, int *stonith_fd) xmlNode *reply = NULL; xmlNode *hello = pcmk__xe_create(NULL, PCMK__XE_STONITH_COMMAND); - crm_xml_add(hello, PCMK__XA_T, PCMK__VALUE_STONITH_NG); - crm_xml_add(hello, PCMK__XA_ST_OP, CRM_OP_REGISTER); - crm_xml_add(hello, PCMK__XA_ST_CLIENTNAME, name); + pcmk__xe_set(hello, PCMK__XA_T, PCMK__VALUE_STONITH_NG); + pcmk__xe_set(hello, PCMK__XA_ST_OP, CRM_OP_REGISTER); + pcmk__xe_set(hello, PCMK__XA_ST_CLIENTNAME, name); rc = crm_ipc_send(native->ipc, hello, crm_ipc_client_response, -1, &reply); if (rc < 0) { @@ -1205,11 +1205,11 @@ stonith_set_notification(stonith_t * stonith, const char *callback, int enabled) if (stonith->state != stonith_disconnected) { - crm_xml_add(notify_msg, PCMK__XA_ST_OP, STONITH_OP_NOTIFY); + pcmk__xe_set(notify_msg, PCMK__XA_ST_OP, STONITH_OP_NOTIFY); if (enabled) { - crm_xml_add(notify_msg, PCMK__XA_ST_NOTIFY_ACTIVATE, callback); + pcmk__xe_set(notify_msg, PCMK__XA_ST_NOTIFY_ACTIVATE, callback); } else { - crm_xml_add(notify_msg, PCMK__XA_ST_NOTIFY_DEACTIVATE, callback); + pcmk__xe_set(notify_msg, PCMK__XA_ST_NOTIFY_DEACTIVATE, callback); } rc = crm_ipc_send(native->ipc, notify_msg, crm_ipc_client_response, -1, NULL); @@ -1589,7 +1589,7 @@ stonith_send_command(stonith_t * stonith, const char *op, xmlNode * data, xmlNod const char *delay_s = pcmk__xe_get(data, PCMK__XA_ST_DELAY); if (delay_s) { - crm_xml_add(op_msg, PCMK__XA_ST_DELAY, delay_s); + pcmk__xe_set(op_msg, PCMK__XA_ST_DELAY, delay_s); } } diff --git a/lib/fencing/st_output.c b/lib/fencing/st_output.c index 786f9d5a2dd..8df742a4449 100644 --- a/lib/fencing/st_output.c +++ b/lib/fencing/st_output.c @@ -1,5 +1,5 @@ /* - * Copyright 2019-2024 the Pacemaker project contributors + * Copyright 2019-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -474,7 +474,7 @@ stonith_event_xml(pcmk__output_t *out, va_list args) break; case st_done: - crm_xml_add(node, PCMK_XA_STATUS, PCMK_VALUE_SUCCESS); + pcmk__xe_set(node, PCMK_XA_STATUS, PCMK_VALUE_SUCCESS); break; default: { @@ -489,14 +489,14 @@ stonith_event_xml(pcmk__output_t *out, va_list args) } if (event->delegate != NULL) { - crm_xml_add(node, PCMK_XA_DELEGATE, event->delegate); + pcmk__xe_set(node, PCMK_XA_DELEGATE, event->delegate); } if ((event->state == st_failed) || (event->state == st_done)) { char *time_s = timespec_string(event->completed, event->completed_nsec, true); - crm_xml_add(node, PCMK_XA_COMPLETED, time_s); + pcmk__xe_set(node, PCMK_XA_COMPLETED, time_s); free(time_s); } @@ -568,7 +568,7 @@ validate_agent_xml(pcmk__output_t *out, va_list args) { NULL); if (device != NULL) { - crm_xml_add(node, PCMK_XA_DEVICE, device); + pcmk__xe_set(node, PCMK_XA_DEVICE, device); } pcmk__output_xml_push_parent(out, node); diff --git a/lib/fencing/st_rhcs.c b/lib/fencing/st_rhcs.c index 6d0c6f94476..b41395cf889 100644 --- a/lib/fencing/st_rhcs.c +++ b/lib/fencing/st_rhcs.c @@ -106,7 +106,7 @@ stonith_rhcs_parameter_not_required(xmlNode *metadata, const char *parameter) xmlNode *tmp = pcmk__xpath_result(xpathObj, 0); if (tmp != NULL) { - crm_xml_add(tmp, "required", "0"); + pcmk__xe_set(tmp, "required", "0"); } } xmlXPathFreeObject(xpathObj); @@ -190,12 +190,12 @@ stonith__rhcs_get_metadata(const char *agent, int timeout_sec, timeout_str = pcmk__readable_interval(PCMK_DEFAULT_ACTION_TIMEOUT_MS); tmp = pcmk__xe_create(actions, PCMK_XE_ACTION); - crm_xml_add(tmp, PCMK_XA_NAME, PCMK_ACTION_STOP); - crm_xml_add(tmp, PCMK_META_TIMEOUT, timeout_str); + pcmk__xe_set(tmp, PCMK_XA_NAME, PCMK_ACTION_STOP); + pcmk__xe_set(tmp, PCMK_META_TIMEOUT, timeout_str); tmp = pcmk__xe_create(actions, PCMK_XE_ACTION); - crm_xml_add(tmp, PCMK_XA_NAME, PCMK_ACTION_START); - crm_xml_add(tmp, PCMK_META_TIMEOUT, timeout_str); + pcmk__xe_set(tmp, PCMK_XA_NAME, PCMK_ACTION_START); + pcmk__xe_set(tmp, PCMK_META_TIMEOUT, timeout_str); } xmlXPathFreeObject(xpathObj); diff --git a/lib/lrmd/lrmd_client.c b/lib/lrmd/lrmd_client.c index 45f490d6fef..798b64ccadd 100644 --- a/lib/lrmd/lrmd_client.c +++ b/lib/lrmd/lrmd_client.c @@ -558,8 +558,8 @@ lrmd_create_op(const char *token, const char *op, xmlNode *data, int timeout, CRM_CHECK(token != NULL, return NULL); op_msg = pcmk__xe_create(NULL, PCMK__XE_LRMD_COMMAND); - crm_xml_add(op_msg, PCMK__XA_T, PCMK__VALUE_LRMD); - crm_xml_add(op_msg, PCMK__XA_LRMD_OP, op); + pcmk__xe_set(op_msg, PCMK__XA_T, PCMK__VALUE_LRMD); + pcmk__xe_set(op_msg, PCMK__XA_LRMD_OP, op); pcmk__xe_set_int(op_msg, PCMK__XA_LRMD_TIMEOUT, timeout); pcmk__xe_set_int(op_msg, PCMK__XA_LRMD_CALLOPT, options); @@ -660,7 +660,7 @@ lrmd__remote_send_xml(pcmk__remote_t *session, xmlNode *msg, uint32_t id, const char *msg_type) { pcmk__xe_set_int(msg, PCMK__XA_LRMD_REMOTE_MSG_ID, id); - crm_xml_add(msg, PCMK__XA_LRMD_REMOTE_MSG_TYPE, msg_type); + pcmk__xe_set(msg, PCMK__XA_LRMD_REMOTE_MSG_TYPE, msg_type); return pcmk__remote_send_xml(session, msg); } @@ -961,7 +961,7 @@ lrmd_api_poke_connection(lrmd_t * lrmd) lrmd_private_t *native = lrmd->lrmd_private; xmlNode *data = pcmk__xe_create(NULL, PCMK__XE_LRMD_RSC); - crm_xml_add(data, PCMK__XA_LRMD_ORIGIN, __func__); + pcmk__xe_set(data, PCMK__XA_LRMD_ORIGIN, __func__); rc = lrmd_send_command(lrmd, LRMD_OP_POKE, data, NULL, 0, 0, (native->type == pcmk__client_ipc)); pcmk__xml_free(data); @@ -978,12 +978,12 @@ lrmd__validate_remote_settings(lrmd_t *lrmd, GHashTable *hash) lrmd_private_t *native = lrmd->lrmd_private; xmlNode *data = pcmk__xe_create(NULL, PCMK__XA_LRMD_OP); - crm_xml_add(data, PCMK__XA_LRMD_ORIGIN, __func__); + pcmk__xe_set(data, PCMK__XA_LRMD_ORIGIN, __func__); value = g_hash_table_lookup(hash, PCMK_OPT_STONITH_WATCHDOG_TIMEOUT); if ((value) && (stonith__watchdog_fencing_enabled_for_node(native->remote_nodename))) { - crm_xml_add(data, PCMK__XA_LRMD_WATCHDOG, value); + pcmk__xe_set(data, PCMK__XA_LRMD_WATCHDOG, value); } rc = lrmd_send_command(lrmd, LRMD_OP_CHECK, data, NULL, 0, 0, @@ -997,10 +997,10 @@ lrmd_handshake_hello_msg(const char *name, bool is_proxy) { xmlNode *hello = pcmk__xe_create(NULL, PCMK__XE_LRMD_COMMAND); - crm_xml_add(hello, PCMK__XA_T, PCMK__VALUE_LRMD); - crm_xml_add(hello, PCMK__XA_LRMD_OP, CRM_OP_REGISTER); - crm_xml_add(hello, PCMK__XA_LRMD_CLIENTNAME, name); - crm_xml_add(hello, PCMK__XA_LRMD_PROTOCOL_VERSION, LRMD_PROTOCOL_VERSION); + pcmk__xe_set(hello, PCMK__XA_T, PCMK__VALUE_LRMD); + pcmk__xe_set(hello, PCMK__XA_LRMD_OP, CRM_OP_REGISTER); + pcmk__xe_set(hello, PCMK__XA_LRMD_CLIENTNAME, name); + pcmk__xe_set(hello, PCMK__XA_LRMD_PROTOCOL_VERSION, LRMD_PROTOCOL_VERSION); /* advertise that we are a proxy provider */ if (is_proxy) { @@ -1833,11 +1833,11 @@ lrmd_api_register_rsc(lrmd_t * lrmd, data = pcmk__xe_create(NULL, PCMK__XE_LRMD_RSC); - crm_xml_add(data, PCMK__XA_LRMD_ORIGIN, __func__); - crm_xml_add(data, PCMK__XA_LRMD_RSC_ID, rsc_id); - crm_xml_add(data, PCMK__XA_LRMD_CLASS, class); - crm_xml_add(data, PCMK__XA_LRMD_PROVIDER, provider); - crm_xml_add(data, PCMK__XA_LRMD_TYPE, type); + pcmk__xe_set(data, PCMK__XA_LRMD_ORIGIN, __func__); + pcmk__xe_set(data, PCMK__XA_LRMD_RSC_ID, rsc_id); + pcmk__xe_set(data, PCMK__XA_LRMD_CLASS, class); + pcmk__xe_set(data, PCMK__XA_LRMD_PROVIDER, provider); + pcmk__xe_set(data, PCMK__XA_LRMD_TYPE, type); rc = lrmd_send_command(lrmd, LRMD_OP_RSC_REG, data, NULL, 0, options, true); pcmk__xml_free(data); @@ -1850,8 +1850,8 @@ lrmd_api_unregister_rsc(lrmd_t * lrmd, const char *rsc_id, enum lrmd_call_option int rc = pcmk_ok; xmlNode *data = pcmk__xe_create(NULL, PCMK__XE_LRMD_RSC); - crm_xml_add(data, PCMK__XA_LRMD_ORIGIN, __func__); - crm_xml_add(data, PCMK__XA_LRMD_RSC_ID, rsc_id); + pcmk__xe_set(data, PCMK__XA_LRMD_ORIGIN, __func__); + pcmk__xe_set(data, PCMK__XA_LRMD_RSC_ID, rsc_id); rc = lrmd_send_command(lrmd, LRMD_OP_RSC_UNREG, data, NULL, 0, options, true); pcmk__xml_free(data); @@ -1901,8 +1901,8 @@ lrmd_api_get_rsc_info(lrmd_t * lrmd, const char *rsc_id, enum lrmd_call_options const char *provider = NULL; const char *type = NULL; - crm_xml_add(data, PCMK__XA_LRMD_ORIGIN, __func__); - crm_xml_add(data, PCMK__XA_LRMD_RSC_ID, rsc_id); + pcmk__xe_set(data, PCMK__XA_LRMD_ORIGIN, __func__); + pcmk__xe_set(data, PCMK__XA_LRMD_RSC_ID, rsc_id); lrmd_send_command(lrmd, LRMD_OP_RSC_INFO, data, &output, 0, options, true); pcmk__xml_free(data); @@ -1956,8 +1956,8 @@ lrmd_api_get_recurring_ops(lrmd_t *lrmd, const char *rsc_id, int timeout_ms, // Send request if (rsc_id) { data = pcmk__xe_create(NULL, PCMK__XE_LRMD_RSC); - crm_xml_add(data, PCMK__XA_LRMD_ORIGIN, __func__); - crm_xml_add(data, PCMK__XA_LRMD_RSC_ID, rsc_id); + pcmk__xe_set(data, PCMK__XA_LRMD_ORIGIN, __func__); + pcmk__xe_set(data, PCMK__XA_LRMD_RSC_ID, rsc_id); } rc = lrmd_send_command(lrmd, LRMD_OP_GET_RECURRING, data, &output_xml, timeout_ms, options, true); @@ -2041,7 +2041,7 @@ lrmd_internal_proxy_send(lrmd_t * lrmd, xmlNode *msg) if (lrmd == NULL) { return -ENOTCONN; } - crm_xml_add(msg, PCMK__XA_LRMD_OP, CRM_OP_IPC_FWD); + pcmk__xe_set(msg, PCMK__XA_LRMD_OP, CRM_OP_IPC_FWD); crm_log_xml_trace(msg, "PROXY_OUTBOUND"); return lrmd_send_xml_no_reply(lrmd, msg); @@ -2145,10 +2145,10 @@ lrmd_api_exec(lrmd_t *lrmd, const char *rsc_id, const char *action, xmlNode *args = pcmk__xe_create(data, PCMK__XE_ATTRIBUTES); lrmd_key_value_t *tmp = NULL; - crm_xml_add(data, PCMK__XA_LRMD_ORIGIN, __func__); - crm_xml_add(data, PCMK__XA_LRMD_RSC_ID, rsc_id); - crm_xml_add(data, PCMK__XA_LRMD_RSC_ACTION, action); - crm_xml_add(data, PCMK__XA_LRMD_RSC_USERDATA_STR, userdata); + pcmk__xe_set(data, PCMK__XA_LRMD_ORIGIN, __func__); + pcmk__xe_set(data, PCMK__XA_LRMD_RSC_ID, rsc_id); + pcmk__xe_set(data, PCMK__XA_LRMD_RSC_ACTION, action); + pcmk__xe_set(data, PCMK__XA_LRMD_RSC_USERDATA_STR, userdata); pcmk__xe_set_guint(data, PCMK__XA_LRMD_RSC_INTERVAL, interval_ms); pcmk__xe_set_int(data, PCMK__XA_LRMD_TIMEOUT, timeout); pcmk__xe_set_int(data, PCMK__XA_LRMD_RSC_START_DELAY, start_delay); @@ -2174,9 +2174,9 @@ lrmd_api_exec_alert(lrmd_t *lrmd, const char *alert_id, const char *alert_path, xmlNode *args = pcmk__xe_create(data, PCMK__XE_ATTRIBUTES); lrmd_key_value_t *tmp = NULL; - crm_xml_add(data, PCMK__XA_LRMD_ORIGIN, __func__); - crm_xml_add(data, PCMK__XA_LRMD_ALERT_ID, alert_id); - crm_xml_add(data, PCMK__XA_LRMD_ALERT_PATH, alert_path); + pcmk__xe_set(data, PCMK__XA_LRMD_ORIGIN, __func__); + pcmk__xe_set(data, PCMK__XA_LRMD_ALERT_ID, alert_id); + pcmk__xe_set(data, PCMK__XA_LRMD_ALERT_PATH, alert_path); pcmk__xe_set_int(data, PCMK__XA_LRMD_TIMEOUT, timeout); for (tmp = params; tmp; tmp = tmp->next) { @@ -2198,9 +2198,9 @@ lrmd_api_cancel(lrmd_t *lrmd, const char *rsc_id, const char *action, int rc = pcmk_ok; xmlNode *data = pcmk__xe_create(NULL, PCMK__XE_LRMD_RSC); - crm_xml_add(data, PCMK__XA_LRMD_ORIGIN, __func__); - crm_xml_add(data, PCMK__XA_LRMD_RSC_ACTION, action); - crm_xml_add(data, PCMK__XA_LRMD_RSC_ID, rsc_id); + pcmk__xe_set(data, PCMK__XA_LRMD_ORIGIN, __func__); + pcmk__xe_set(data, PCMK__XA_LRMD_RSC_ACTION, action); + pcmk__xe_set(data, PCMK__XA_LRMD_RSC_ID, rsc_id); pcmk__xe_set_guint(data, PCMK__XA_LRMD_RSC_INTERVAL, interval_ms); rc = lrmd_send_command(lrmd, LRMD_OP_RSC_CANCEL, data, NULL, 0, 0, true); pcmk__xml_free(data); diff --git a/lib/lrmd/lrmd_output.c b/lib/lrmd/lrmd_output.c index 49900e55f83..e5729696649 100644 --- a/lib/lrmd/lrmd_output.c +++ b/lib/lrmd/lrmd_output.c @@ -1,5 +1,5 @@ /* - * Copyright 2020-2024 the Pacemaker project contributors + * Copyright 2020-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -81,7 +81,7 @@ lrmd__agents_list_xml(pcmk__output_t *out, va_list args) { NULL); if (!pcmk__str_empty(provider)) { - crm_xml_add(node, PCMK_XA_PROVIDER, provider); + pcmk__xe_set(node, PCMK_XA_PROVIDER, provider); } rc = xml_list(out, list, PCMK_XE_AGENT); @@ -116,7 +116,7 @@ lrmd__providers_list_xml(pcmk__output_t *out, va_list args) { NULL); if (agent_spec != NULL) { - crm_xml_add(node, PCMK_XA_AGENT, agent_spec); + pcmk__xe_set(node, PCMK_XA_AGENT, agent_spec); } rc = xml_list(out, list, PCMK_XE_PROVIDER); diff --git a/lib/lrmd/proxy_common.c b/lib/lrmd/proxy_common.c index 660be40795f..fde7de8c493 100644 --- a/lib/lrmd/proxy_common.c +++ b/lib/lrmd/proxy_common.c @@ -30,8 +30,8 @@ remote_proxy_notify_destroy(lrmd_t *lrmd, const char *session_id) { /* sending to the remote node that an ipc connection has been destroyed */ xmlNode *msg = pcmk__xe_create(NULL, PCMK__XE_LRMD_IPC_PROXY); - crm_xml_add(msg, PCMK__XA_LRMD_IPC_OP, LRMD_IPC_OP_DESTROY); - crm_xml_add(msg, PCMK__XA_LRMD_IPC_SESSION, session_id); + pcmk__xe_set(msg, PCMK__XA_LRMD_IPC_OP, LRMD_IPC_OP_DESTROY); + pcmk__xe_set(msg, PCMK__XA_LRMD_IPC_SESSION, session_id); lrmd_internal_proxy_send(lrmd, msg); pcmk__xml_free(msg); } @@ -46,7 +46,7 @@ void remote_proxy_ack_shutdown(lrmd_t *lrmd) { xmlNode *msg = pcmk__xe_create(NULL, PCMK__XE_LRMD_IPC_PROXY); - crm_xml_add(msg, PCMK__XA_LRMD_IPC_OP, LRMD_IPC_OP_SHUTDOWN_ACK); + pcmk__xe_set(msg, PCMK__XA_LRMD_IPC_OP, LRMD_IPC_OP_SHUTDOWN_ACK); lrmd_internal_proxy_send(lrmd, msg); pcmk__xml_free(msg); } @@ -61,7 +61,7 @@ void remote_proxy_nack_shutdown(lrmd_t *lrmd) { xmlNode *msg = pcmk__xe_create(NULL, PCMK__XE_LRMD_IPC_PROXY); - crm_xml_add(msg, PCMK__XA_LRMD_IPC_OP, LRMD_IPC_OP_SHUTDOWN_NACK); + pcmk__xe_set(msg, PCMK__XA_LRMD_IPC_OP, LRMD_IPC_OP_SHUTDOWN_NACK); lrmd_internal_proxy_send(lrmd, msg); pcmk__xml_free(msg); } @@ -73,8 +73,8 @@ remote_proxy_relay_event(remote_proxy_t *proxy, xmlNode *msg) xmlNode *event = pcmk__xe_create(NULL, PCMK__XE_LRMD_IPC_PROXY); xmlNode *wrapper = NULL; - crm_xml_add(event, PCMK__XA_LRMD_IPC_OP, LRMD_IPC_OP_EVENT); - crm_xml_add(event, PCMK__XA_LRMD_IPC_SESSION, proxy->session_id); + pcmk__xe_set(event, PCMK__XA_LRMD_IPC_OP, LRMD_IPC_OP_EVENT); + pcmk__xe_set(event, PCMK__XA_LRMD_IPC_SESSION, proxy->session_id); wrapper = pcmk__xe_create(event, PCMK__XE_LRMD_IPC_MSG); pcmk__xml_copy(wrapper, msg); @@ -91,8 +91,8 @@ remote_proxy_relay_response(remote_proxy_t *proxy, xmlNode *msg, int msg_id) xmlNode *response = pcmk__xe_create(NULL, PCMK__XE_LRMD_IPC_PROXY); xmlNode *wrapper = NULL; - crm_xml_add(response, PCMK__XA_LRMD_IPC_OP, LRMD_IPC_OP_RESPONSE); - crm_xml_add(response, PCMK__XA_LRMD_IPC_SESSION, proxy->session_id); + pcmk__xe_set(response, PCMK__XA_LRMD_IPC_OP, LRMD_IPC_OP_RESPONSE); + pcmk__xe_set(response, PCMK__XA_LRMD_IPC_SESSION, proxy->session_id); pcmk__xe_set_int(response, PCMK__XA_LRMD_IPC_MSG_ID, msg_id); wrapper = pcmk__xe_create(response, PCMK__XE_LRMD_IPC_MSG); @@ -260,7 +260,7 @@ remote_proxy_cb(lrmd_t *lrmd, const char *node_name, xmlNode *msg) return; } proxy->last_request_id = 0; - crm_xml_add(request, PCMK_XE_ACL_ROLE, "pacemaker-remote"); + pcmk__xe_set(request, PCMK_XE_ACL_ROLE, "pacemaker-remote"); rc = pcmk__xe_get_flags(msg, PCMK__XA_LRMD_IPC_MSG_FLAGS, &flags, 0U); if (rc != pcmk_rc_ok) { @@ -282,7 +282,7 @@ remote_proxy_cb(lrmd_t *lrmd, const char *node_name, xmlNode *msg) PCMK__ATTRD_CMD_UPDATE_BOTH, PCMK__ATTRD_CMD_UPDATE_DELAY, NULL)) { - crm_xml_add(request, PCMK__XA_ATTR_HOST, proxy->node_name); + pcmk__xe_set(request, PCMK__XA_ATTR_HOST, proxy->node_name); } rc = crm_ipc_send(proxy->ipc, request, flags, 5000, NULL); @@ -294,7 +294,7 @@ remote_proxy_cb(lrmd_t *lrmd, const char *node_name, xmlNode *msg) op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name, pcmk_strerror(rc), rc); /* Send a n'ack so the caller doesn't block */ - crm_xml_add(op_reply, PCMK_XA_FUNCTION, __func__); + pcmk__xe_set(op_reply, PCMK_XA_FUNCTION, __func__); pcmk__xe_set_int(op_reply, PCMK__XA_LINE, __LINE__); pcmk__xe_set_int(op_reply, PCMK_XA_RC, rc); remote_proxy_relay_response(proxy, op_reply, msg_id); diff --git a/lib/pacemaker/pcmk_graph_producer.c b/lib/pacemaker/pcmk_graph_producer.c index 2d4fffee08e..7075ed9bc80 100644 --- a/lib/pacemaker/pcmk_graph_producer.c +++ b/lib/pacemaker/pcmk_graph_producer.c @@ -47,7 +47,7 @@ add_node_to_xml_by_id(const char *id, xmlNode *xml) xmlNode *node_xml; node_xml = pcmk__xe_create(xml, PCMK_XE_NODE); - crm_xml_add(node_xml, PCMK_XA_ID, id); + pcmk__xe_set(node_xml, PCMK_XA_ID, id); return node_xml; } @@ -97,10 +97,10 @@ add_maintenance_nodes(xmlNode *xml, const pcmk_scheduler_t *scheduler) && pcmk_is_set(node->priv->flags, pcmk__node_remote_maint))) { if (maintenance != NULL) { - crm_xml_add(add_node_to_xml_by_id(node->priv->id, - maintenance), - PCMK__XA_NODE_IN_MAINTENANCE, - (node->details->maintenance? "1" : "0")); + pcmk__xe_set(add_node_to_xml_by_id(node->priv->id, + maintenance), + PCMK__XA_NODE_IN_MAINTENANCE, + (node->details->maintenance? "1" : "0")); } count++; } @@ -231,10 +231,10 @@ add_node_details(const pcmk_action_t *action, xmlNode *xml) { pcmk_node_t *router_node = pcmk__connection_host_for_action(action); - crm_xml_add(xml, PCMK__META_ON_NODE, action->node->priv->name); - crm_xml_add(xml, PCMK__META_ON_NODE_UUID, action->node->priv->id); + pcmk__xe_set(xml, PCMK__META_ON_NODE, action->node->priv->name); + pcmk__xe_set(xml, PCMK__META_ON_NODE_UUID, action->node->priv->id); if (router_node != NULL) { - crm_xml_add(xml, PCMK__XA_ROUTER_NODE, router_node->priv->name); + pcmk__xe_set(xml, PCMK__XA_ROUTER_NODE, router_node->priv->name); } } @@ -280,8 +280,8 @@ add_resource_details(const pcmk_action_t *action, xmlNode *action_xml) */ crm_debug("Using orphan clone name %s instead of history ID %s", action->rsc->id, action->rsc->priv->history_id); - crm_xml_add(rsc_xml, PCMK_XA_ID, action->rsc->priv->history_id); - crm_xml_add(rsc_xml, PCMK__XA_LONG_ID, action->rsc->id); + pcmk__xe_set(rsc_xml, PCMK_XA_ID, action->rsc->priv->history_id); + pcmk__xe_set(rsc_xml, PCMK__XA_LONG_ID, action->rsc->id); } else if (!pcmk_is_set(action->rsc->flags, pcmk__rsc_unique)) { const char *xml_id = pcmk__xe_id(action->rsc->priv->xml); @@ -303,25 +303,25 @@ add_resource_details(const pcmk_action_t *action, xmlNode *action_xml) * 'instance free' name will correspond to an orphan * and fall into the clause above instead */ - crm_xml_add(rsc_xml, PCMK_XA_ID, xml_id); + pcmk__xe_set(rsc_xml, PCMK_XA_ID, xml_id); if ((action->rsc->priv->history_id != NULL) && !pcmk__str_eq(xml_id, action->rsc->priv->history_id, pcmk__str_none)) { - crm_xml_add(rsc_xml, PCMK__XA_LONG_ID, - action->rsc->priv->history_id); + pcmk__xe_set(rsc_xml, PCMK__XA_LONG_ID, + action->rsc->priv->history_id); } else { - crm_xml_add(rsc_xml, PCMK__XA_LONG_ID, action->rsc->id); + pcmk__xe_set(rsc_xml, PCMK__XA_LONG_ID, action->rsc->id); } } else { pcmk__assert(action->rsc->priv->history_id == NULL); - crm_xml_add(rsc_xml, PCMK_XA_ID, action->rsc->id); + pcmk__xe_set(rsc_xml, PCMK_XA_ID, action->rsc->id); } for (int lpc = 0; lpc < PCMK__NELEM(attr_list); lpc++) { - crm_xml_add(rsc_xml, attr_list[lpc], - g_hash_table_lookup(action->rsc->priv->meta, - attr_list[lpc])); + pcmk__xe_set(rsc_xml, attr_list[lpc], + g_hash_table_lookup(action->rsc->priv->meta, + attr_list[lpc])); } } @@ -344,7 +344,7 @@ add_action_attributes(pcmk_action_t *action, xmlNode *action_xml) */ args_xml = pcmk__xe_create(action_xml, PCMK__XE_ATTRIBUTES); - crm_xml_add(args_xml, PCMK_XA_CRM_FEATURE_SET, CRM_FEATURE_SET); + pcmk__xe_set(args_xml, PCMK_XA_CRM_FEATURE_SET, CRM_FEATURE_SET); g_hash_table_foreach(action->extra, hash2field, args_xml); if ((rsc != NULL) && (action->node != NULL)) { @@ -418,7 +418,7 @@ create_graph_action(xmlNode *parent, pcmk_action_t *action, bool skip_details, pcmk__str_none)) { // CIB-only clean-up for shutdown locks action_xml = pcmk__xe_create(parent, PCMK__XE_CRM_EVENT); - crm_xml_add(action_xml, PCMK__XA_MODE, PCMK__VALUE_CIB); + pcmk__xe_set(action_xml, PCMK__XA_MODE, PCMK__VALUE_CIB); } else if (pcmk_is_set(action->flags, pcmk__action_pseudo)) { if (pcmk__str_eq(action->task, PCMK_ACTION_MAINTENANCE_NODES, @@ -433,7 +433,7 @@ create_graph_action(xmlNode *parent, pcmk_action_t *action, bool skip_details, } pcmk__xe_set_int(action_xml, PCMK_XA_ID, action->id); - crm_xml_add(action_xml, PCMK_XA_OPERATION, action->task); + pcmk__xe_set(action_xml, PCMK_XA_OPERATION, action->task); if ((action->rsc != NULL) && (action->rsc->priv->history_id != NULL)) { char *clone_key = NULL; @@ -444,12 +444,12 @@ create_graph_action(xmlNode *parent, pcmk_action_t *action, bool skip_details, interval_ms = 0; } clone_key = clone_op_key(action, interval_ms); - crm_xml_add(action_xml, PCMK__XA_OPERATION_KEY, clone_key); - crm_xml_add(action_xml, "internal_" PCMK__XA_OPERATION_KEY, - action->uuid); + pcmk__xe_set(action_xml, PCMK__XA_OPERATION_KEY, clone_key); + pcmk__xe_set(action_xml, "internal_" PCMK__XA_OPERATION_KEY, + action->uuid); free(clone_key); } else { - crm_xml_add(action_xml, PCMK__XA_OPERATION_KEY, action->uuid); + pcmk__xe_set(action_xml, PCMK__XA_OPERATION_KEY, action->uuid); } if (needs_node_info && (action->node != NULL)) { @@ -1017,23 +1017,23 @@ pcmk__create_graph(pcmk_scheduler_t *scheduler) scheduler->priv->graph = pcmk__xe_create(NULL, PCMK__XE_TRANSITION_GRAPH); value = pcmk__cluster_option(config_hash, PCMK_OPT_CLUSTER_DELAY); - crm_xml_add(scheduler->priv->graph, PCMK_OPT_CLUSTER_DELAY, value); + pcmk__xe_set(scheduler->priv->graph, PCMK_OPT_CLUSTER_DELAY, value); value = pcmk__cluster_option(config_hash, PCMK_OPT_STONITH_TIMEOUT); - crm_xml_add(scheduler->priv->graph, PCMK_OPT_STONITH_TIMEOUT, value); + pcmk__xe_set(scheduler->priv->graph, PCMK_OPT_STONITH_TIMEOUT, value); - crm_xml_add(scheduler->priv->graph, PCMK__XA_FAILED_STOP_OFFSET, - PCMK_VALUE_INFINITY); + pcmk__xe_set(scheduler->priv->graph, PCMK__XA_FAILED_STOP_OFFSET, + PCMK_VALUE_INFINITY); if (pcmk_is_set(scheduler->flags, pcmk__sched_start_failure_fatal)) { - crm_xml_add(scheduler->priv->graph, PCMK__XA_FAILED_START_OFFSET, - PCMK_VALUE_INFINITY); + pcmk__xe_set(scheduler->priv->graph, PCMK__XA_FAILED_START_OFFSET, + PCMK_VALUE_INFINITY); } else { - crm_xml_add(scheduler->priv->graph, PCMK__XA_FAILED_START_OFFSET, "1"); + pcmk__xe_set(scheduler->priv->graph, PCMK__XA_FAILED_START_OFFSET, "1"); } value = pcmk__cluster_option(config_hash, PCMK_OPT_BATCH_LIMIT); - crm_xml_add(scheduler->priv->graph, PCMK_OPT_BATCH_LIMIT, value); + pcmk__xe_set(scheduler->priv->graph, PCMK_OPT_BATCH_LIMIT, value); pcmk__xe_set_int(scheduler->priv->graph, "transition_id", transition_id); @@ -1043,7 +1043,7 @@ pcmk__create_graph(pcmk_scheduler_t *scheduler) crm_warn("Ignoring invalid value '%s' for " PCMK_OPT_MIGRATION_LIMIT ": %s", value, pcmk_rc_str(rc)); } else if (limit > 0) { - crm_xml_add(scheduler->priv->graph, PCMK_OPT_MIGRATION_LIMIT, value); + pcmk__xe_set(scheduler->priv->graph, PCMK_OPT_MIGRATION_LIMIT, value); } if (scheduler->priv->recheck_by > 0) { diff --git a/lib/pacemaker/pcmk_injections.c b/lib/pacemaker/pcmk_injections.c index 9d1f2af695b..4aebe77336f 100644 --- a/lib/pacemaker/pcmk_injections.c +++ b/lib/pacemaker/pcmk_injections.c @@ -66,14 +66,14 @@ inject_transient_attr(pcmk__output_t *out, xmlNode *cib_node, NULL); if (attrs == NULL) { attrs = pcmk__xe_create(cib_node, PCMK__XE_TRANSIENT_ATTRIBUTES); - crm_xml_add(attrs, PCMK_XA_ID, node_uuid); + pcmk__xe_set(attrs, PCMK_XA_ID, node_uuid); } instance_attrs = pcmk__xe_first_child(attrs, PCMK_XE_INSTANCE_ATTRIBUTES, NULL, NULL); if (instance_attrs == NULL) { instance_attrs = pcmk__xe_create(attrs, PCMK_XE_INSTANCE_ATTRIBUTES); - crm_xml_add(instance_attrs, PCMK_XA_ID, node_uuid); + pcmk__xe_set(instance_attrs, PCMK_XA_ID, node_uuid); } crm_create_nvpair_xml(instance_attrs, NULL, name, value); @@ -165,8 +165,8 @@ create_node_entry(cib_t *cib_conn, const char *node) if (rc == -ENXIO) { // Only add if not already existing xmlNode *cib_object = pcmk__xe_create(NULL, PCMK_XE_NODE); - crm_xml_add(cib_object, PCMK_XA_ID, node); // Use node name as ID - crm_xml_add(cib_object, PCMK_XA_UNAME, node); + pcmk__xe_set(cib_object, PCMK_XA_ID, node); // Use node name as ID + pcmk__xe_set(cib_object, PCMK_XA_UNAME, node); cib_conn->cmds->create(cib_conn, PCMK_XE_NODES, cib_object, cib_sync_call); /* Not bothering with subsequent query to see if it exists, @@ -302,7 +302,7 @@ pcmk__inject_node(cib_t *cib_conn, const char *node, const char *uuid) goto done; } else if (cib_object != NULL) { - crm_xml_add(cib_object, PCMK_XA_UNAME, node); + pcmk__xe_set(cib_object, PCMK_XA_UNAME, node); rc = cib_conn->cmds->modify(cib_conn, PCMK_XE_STATUS, cib_object, cib_sync_call); @@ -314,8 +314,8 @@ pcmk__inject_node(cib_t *cib_conn, const char *node, const char *uuid) if (rc == -ENXIO) { cib_object = pcmk__xe_create(NULL, PCMK__XE_NODE_STATE); - crm_xml_add(cib_object, PCMK_XA_ID, found_uuid); - crm_xml_add(cib_object, PCMK_XA_UNAME, node); + pcmk__xe_set(cib_object, PCMK_XA_ID, found_uuid); + pcmk__xe_set(cib_object, PCMK_XA_UNAME, node); cib_conn->cmds->create(cib_conn, PCMK_XE_STATUS, cib_object, cib_sync_call); pcmk__xml_free(cib_object); @@ -369,7 +369,7 @@ pcmk__inject_node_state_change(cib_t *cib_conn, const char *node, bool up) PCMK_XA_EXPECTED, CRMD_JOINSTATE_DOWN, NULL); } - crm_xml_add(cib_node, PCMK_XA_CRM_DEBUG_ORIGIN, crm_system_name); + pcmk__xe_set(cib_node, PCMK_XA_CRM_DEBUG_ORIGIN, crm_system_name); return cib_node; } @@ -468,7 +468,7 @@ pcmk__inject_resource_history(pcmk__output_t *out, xmlNode *cib_node, const char *node_uuid = pcmk__xe_id(cib_node); lrm = pcmk__xe_create(cib_node, PCMK__XE_LRM); - crm_xml_add(lrm, PCMK_XA_ID, node_uuid); + pcmk__xe_set(lrm, PCMK_XA_ID, node_uuid); } container = pcmk__xe_first_child(lrm, PCMK__XE_LRM_RESOURCES, NULL, NULL); @@ -479,11 +479,11 @@ pcmk__inject_resource_history(pcmk__output_t *out, xmlNode *cib_node, cib_resource = pcmk__xe_create(container, PCMK__XE_LRM_RESOURCE); // If we're creating a new entry, use the preferred name - crm_xml_add(cib_resource, PCMK_XA_ID, lrm_name); + pcmk__xe_set(cib_resource, PCMK_XA_ID, lrm_name); - crm_xml_add(cib_resource, PCMK_XA_CLASS, rclass); - crm_xml_add(cib_resource, PCMK_XA_PROVIDER, rprovider); - crm_xml_add(cib_resource, PCMK_XA_TYPE, rtype); + pcmk__xe_set(cib_resource, PCMK_XA_CLASS, rclass); + pcmk__xe_set(cib_resource, PCMK_XA_PROVIDER, rprovider); + pcmk__xe_set(cib_resource, PCMK_XA_TYPE, rtype); return cib_resource; } @@ -528,7 +528,7 @@ set_ticket_state_attr(pcmk__output_t *out, const char *ticket_id, xml_top = pcmk__xe_create(NULL, PCMK_XE_STATUS); xml_obj = pcmk__xe_create(xml_top, PCMK_XE_TICKETS); ticket_state_xml = pcmk__xe_create(xml_obj, PCMK__XE_TICKET_STATE); - crm_xml_add(ticket_state_xml, PCMK_XA_ID, ticket_id); + pcmk__xe_set(ticket_state_xml, PCMK_XA_ID, ticket_id); } else { // Error return rc; @@ -660,8 +660,8 @@ pcmk__inject_scheduler_input(pcmk_scheduler_t *scheduler, cib_t *cib, if (injections->quorum != NULL) { xmlNode *top = pcmk__xe_create(NULL, PCMK_XE_CIB); - /* crm_xml_add(top, PCMK_XA_DC_UUID, dc_uuid); */ - crm_xml_add(top, PCMK_XA_HAVE_QUORUM, injections->quorum); + /* pcmk__xe_set(top, PCMK_XA_DC_UUID, dc_uuid); */ + pcmk__xe_set(top, PCMK_XA_HAVE_QUORUM, injections->quorum); rc = cib->cmds->modify(cib, NULL, top, cib_sync_call); pcmk__assert(rc == pcmk_ok); @@ -722,7 +722,7 @@ pcmk__inject_scheduler_input(pcmk_scheduler_t *scheduler, cib_t *cib, out->message(out, "inject-modify-node", "Failing", node); cib_node = pcmk__inject_node_state_change(cib, node, true); - crm_xml_add(cib_node, PCMK__XA_IN_CCM, PCMK_VALUE_FALSE); + pcmk__xe_set(cib_node, PCMK__XA_IN_CCM, PCMK_VALUE_FALSE); pcmk__assert(cib_node != NULL); rc = cib->cmds->modify(cib, PCMK_XE_STATUS, cib_node, cib_sync_call); diff --git a/lib/pacemaker/pcmk_output.c b/lib/pacemaker/pcmk_output.c index 1d5a3eba845..accf1d6c656 100644 --- a/lib/pacemaker/pcmk_output.c +++ b/lib/pacemaker/pcmk_output.c @@ -292,7 +292,7 @@ rsc_action_item_xml(pcmk__output_t *out, va_list args) } else if (origin == NULL) { /* Starting a resource */ - crm_xml_add(xml, PCMK_XA_NODE, destination->priv->name); + pcmk__xe_set(xml, PCMK_XA_NODE, destination->priv->name); } else if (need_role && (destination == NULL)) { /* Stopping a promotable clone instance */ @@ -304,7 +304,7 @@ rsc_action_item_xml(pcmk__output_t *out, va_list args) } else if (destination == NULL) { /* Stopping a resource */ - crm_xml_add(xml, PCMK_XA_NODE, origin->priv->name); + pcmk__xe_set(xml, PCMK_XA_NODE, origin->priv->name); } else if (need_role && same_role && same_host) { /* Recovering, restarting or re-promoting a promotable clone instance */ @@ -316,7 +316,7 @@ rsc_action_item_xml(pcmk__output_t *out, va_list args) } else if (same_role && same_host) { /* Recovering or Restarting a normal resource */ - crm_xml_add(xml, PCMK_XA_SOURCE, origin->priv->name); + pcmk__xe_set(xml, PCMK_XA_SOURCE, origin->priv->name); } else if (need_role && same_role) { /* Moving a promotable clone instance */ @@ -364,7 +364,7 @@ rsc_action_item_xml(pcmk__output_t *out, va_list args) NULL); } else if (source->reason != NULL) { - crm_xml_add(xml, PCMK_XA_REASON, source->reason); + pcmk__xe_set(xml, PCMK_XA_REASON, source->reason); } else if (!pcmk_is_set(action->flags, pcmk__action_runnable)) { pcmk__xe_set_bool_attr(xml, PCMK_XA_BLOCKED, true); @@ -1038,8 +1038,8 @@ add_digest_xml(xmlNode *parent, const char *type, const char *digest, if (digest != NULL) { xmlNodePtr digest_xml = pcmk__xe_create(parent, PCMK_XE_DIGEST); - crm_xml_add(digest_xml, PCMK_XA_TYPE, pcmk__s(type, "unspecified")); - crm_xml_add(digest_xml, PCMK_XA_HASH, digest); + pcmk__xe_set(digest_xml, PCMK_XA_TYPE, pcmk__s(type, "unspecified")); + pcmk__xe_set(digest_xml, PCMK_XA_HASH, digest); pcmk__xml_copy(digest_xml, digest_source); } } @@ -1452,7 +1452,7 @@ inject_cluster_action_xml(pcmk__output_t *out, va_list args) NULL); if (rsc) { - crm_xml_add(xml_node, PCMK_XA_ID, pcmk__xe_id(rsc)); + pcmk__xe_set(xml_node, PCMK_XA_ID, pcmk__xe_id(rsc)); } return pcmk_rc_ok; @@ -1610,11 +1610,11 @@ inject_modify_config_xml(pcmk__output_t *out, va_list args) node = pcmk__output_xml_create_parent(out, PCMK_XE_MODIFICATIONS, NULL); if (quorum) { - crm_xml_add(node, PCMK_XA_QUORUM, quorum); + pcmk__xe_set(node, PCMK_XA_QUORUM, quorum); } if (watchdog) { - crm_xml_add(node, PCMK_XA_WATCHDOG, watchdog); + pcmk__xe_set(node, PCMK_XA_WATCHDOG, watchdog); } pcmk__output_xml_pop_parent(out); @@ -1735,7 +1735,7 @@ inject_pseudo_action_xml(pcmk__output_t *out, va_list args) PCMK_XA_TASK, task, NULL); if (node) { - crm_xml_add(xml_node, PCMK_XA_NODE, node); + pcmk__xe_set(xml_node, PCMK_XA_NODE, node); } return pcmk_rc_ok; @@ -1791,7 +1791,7 @@ inject_rsc_action_xml(pcmk__output_t *out, va_list args) if (interval_ms) { char *interval_s = pcmk__itoa(interval_ms); - crm_xml_add(xml_node, PCMK_XA_INTERVAL, interval_s); + pcmk__xe_set(xml_node, PCMK_XA_INTERVAL, interval_s); free(interval_s); } @@ -2249,15 +2249,15 @@ attribute_xml(pcmk__output_t *out, va_list args) NULL); if (!pcmk__str_empty(scope)) { - crm_xml_add(node, PCMK_XA_SCOPE, scope); + pcmk__xe_set(node, PCMK_XA_SCOPE, scope); } if (!pcmk__str_empty(instance)) { - crm_xml_add(node, PCMK_XA_ID, instance); + pcmk__xe_set(node, PCMK_XA_ID, instance); } if (!pcmk__str_empty(host)) { - crm_xml_add(node, PCMK_XA_HOST, host); + pcmk__xe_set(node, PCMK_XA_HOST, host); } return pcmk_rc_ok; diff --git a/lib/pacemaker/pcmk_resource.c b/lib/pacemaker/pcmk_resource.c index 6a3e50ae579..d23d49abb1c 100644 --- a/lib/pacemaker/pcmk_resource.c +++ b/lib/pacemaker/pcmk_resource.c @@ -137,7 +137,7 @@ pcmk__resource_delete(cib_t *cib, uint32_t cib_opts, const char *rsc_id, } msg_data = pcmk__xe_create(NULL, rsc_type); - crm_xml_add(msg_data, PCMK_XA_ID, rsc_id); + pcmk__xe_set(msg_data, PCMK_XA_ID, rsc_id); rc = cib->cmds->remove(cib, PCMK_XE_RESOURCES, msg_data, cib_opts); rc = pcmk_legacy2rc(rc); diff --git a/lib/pacemaker/pcmk_sched_actions.c b/lib/pacemaker/pcmk_sched_actions.c index 419ff759c9b..2435ef78885 100644 --- a/lib/pacemaker/pcmk_sched_actions.c +++ b/lib/pacemaker/pcmk_sched_actions.c @@ -1107,7 +1107,7 @@ add_op_digest_to_xml(const lrmd_event_data_t *op, xmlNode *update) g_hash_table_foreach(op->params, hash2field, args_xml); pcmk__filter_op_for_digest(args_xml); digest = pcmk__digest_operation(args_xml); - crm_xml_add(update, PCMK__XA_OP_DIGEST, digest); + pcmk__xe_set(update, PCMK__XA_OP_DIGEST, digest); pcmk__xml_free(args_xml); free(digest); } @@ -1236,15 +1236,15 @@ pcmk__create_history_xml(xmlNode *parent, lrmd_event_data_t *op, (const char *) op->user_data); } - crm_xml_add(xml_op, PCMK_XA_ID, op_id); - crm_xml_add(xml_op, PCMK__XA_OPERATION_KEY, key); - crm_xml_add(xml_op, PCMK_XA_OPERATION, task); - crm_xml_add(xml_op, PCMK_XA_CRM_DEBUG_ORIGIN, origin); - crm_xml_add(xml_op, PCMK_XA_CRM_FEATURE_SET, caller_version); - crm_xml_add(xml_op, PCMK__XA_TRANSITION_KEY, op->user_data); - crm_xml_add(xml_op, PCMK__XA_TRANSITION_MAGIC, magic); - crm_xml_add(xml_op, PCMK_XA_EXIT_REASON, pcmk__s(exit_reason, "")); - crm_xml_add(xml_op, PCMK__META_ON_NODE, node); // For context during triage + pcmk__xe_set(xml_op, PCMK_XA_ID, op_id); + pcmk__xe_set(xml_op, PCMK__XA_OPERATION_KEY, key); + pcmk__xe_set(xml_op, PCMK_XA_OPERATION, task); + pcmk__xe_set(xml_op, PCMK_XA_CRM_DEBUG_ORIGIN, origin); + pcmk__xe_set(xml_op, PCMK_XA_CRM_FEATURE_SET, caller_version); + pcmk__xe_set(xml_op, PCMK__XA_TRANSITION_KEY, op->user_data); + pcmk__xe_set(xml_op, PCMK__XA_TRANSITION_MAGIC, magic); + pcmk__xe_set(xml_op, PCMK_XA_EXIT_REASON, pcmk__s(exit_reason, "")); + pcmk__xe_set(xml_op, PCMK__META_ON_NODE, node); // For context during triage pcmk__xe_set_int(xml_op, PCMK__XA_CALL_ID, op->call_id); pcmk__xe_set_int(xml_op, PCMK__XA_RC_CODE, op->rc); @@ -1278,10 +1278,10 @@ pcmk__create_history_xml(xmlNode *parent, lrmd_event_data_t *op, */ const char *name = PCMK__META_MIGRATE_SOURCE; - crm_xml_add(xml_op, name, crm_meta_value(op->params, name)); + pcmk__xe_set(xml_op, name, crm_meta_value(op->params, name)); name = PCMK__META_MIGRATE_TARGET; - crm_xml_add(xml_op, name, crm_meta_value(op->params, name)); + pcmk__xe_set(xml_op, name, crm_meta_value(op->params, name)); } add_op_digest_to_xml(op, xml_op); diff --git a/lib/pacemaker/pcmk_sched_clone.c b/lib/pacemaker/pcmk_sched_clone.c index 551c82c239e..a7a24db9258 100644 --- a/lib/pacemaker/pcmk_sched_clone.c +++ b/lib/pacemaker/pcmk_sched_clone.c @@ -647,11 +647,11 @@ pcmk__clone_add_graph_meta(const pcmk_resource_t *rsc, xmlNode *xml) pcmk__assert(pcmk__is_clone(rsc) && (xml != NULL)); name = crm_meta_name(PCMK_META_GLOBALLY_UNIQUE); - crm_xml_add(xml, name, pcmk__flag_text(rsc->flags, pcmk__rsc_unique)); + pcmk__xe_set(xml, name, pcmk__flag_text(rsc->flags, pcmk__rsc_unique)); free(name); name = crm_meta_name(PCMK_META_NOTIFY); - crm_xml_add(xml, name, pcmk__flag_text(rsc->flags, pcmk__rsc_notify)); + pcmk__xe_set(xml, name, pcmk__flag_text(rsc->flags, pcmk__rsc_notify)); free(name); name = crm_meta_name(PCMK_META_CLONE_MAX); diff --git a/lib/pacemaker/pcmk_sched_colocation.c b/lib/pacemaker/pcmk_sched_colocation.c index 1e47cf787a0..7f41514cebb 100644 --- a/lib/pacemaker/pcmk_sched_colocation.c +++ b/lib/pacemaker/pcmk_sched_colocation.c @@ -923,7 +923,7 @@ unpack_colocation_tags(xmlNode *xml_obj, xmlNode **expanded_xml, /* Move PCMK_XA_RSC_ROLE into converted PCMK_XE_RESOURCE_SET as * PCMK_XA_ROLE */ - crm_xml_add(dependent_set, PCMK_XA_ROLE, dependent_role); + pcmk__xe_set(dependent_set, PCMK_XA_ROLE, dependent_role); pcmk__xe_remove_attr(*expanded_xml, PCMK_XA_RSC_ROLE); } any_sets = true; @@ -944,7 +944,7 @@ unpack_colocation_tags(xmlNode *xml_obj, xmlNode **expanded_xml, /* Move PCMK_XA_WITH_RSC_ROLE into converted PCMK_XE_RESOURCE_SET as * PCMK_XA_ROLE */ - crm_xml_add(primary_set, PCMK_XA_ROLE, primary_role); + pcmk__xe_set(primary_set, PCMK_XA_ROLE, primary_role); pcmk__xe_remove_attr(*expanded_xml, PCMK_XA_WITH_RSC_ROLE); } any_sets = true; diff --git a/lib/pacemaker/pcmk_sched_constraints.c b/lib/pacemaker/pcmk_sched_constraints.c index bafe7d7f434..ac29dd444c4 100644 --- a/lib/pacemaker/pcmk_sched_constraints.c +++ b/lib/pacemaker/pcmk_sched_constraints.c @@ -296,7 +296,7 @@ pcmk__expand_tags_in_sets(xmlNode *xml_obj, const pcmk_scheduler_t *scheduler) xmlNode *new_ref = pcmk__xe_create(set, PCMK_XE_RESOURCE_REF); - crm_xml_add(new_ref, PCMK_XA_ID, ref_id); + pcmk__xe_set(new_ref, PCMK_XA_ID, ref_id); xmlAddNextSibling(last_ref, new_ref); last_ref = new_ref; @@ -384,14 +384,14 @@ pcmk__tag_to_set(xmlNode *xml_obj, xmlNode **rsc_set, const char *attr, * containing the resources derived from or tagged with it. */ *rsc_set = pcmk__xe_create(xml_obj, PCMK_XE_RESOURCE_SET); - crm_xml_add(*rsc_set, PCMK_XA_ID, id); + pcmk__xe_set(*rsc_set, PCMK_XA_ID, id); for (GList *iter = tag->refs; iter != NULL; iter = iter->next) { const char *obj_ref = iter->data; xmlNode *rsc_ref = NULL; rsc_ref = pcmk__xe_create(*rsc_set, PCMK_XE_RESOURCE_REF); - crm_xml_add(rsc_ref, PCMK_XA_ID, obj_ref); + pcmk__xe_set(rsc_ref, PCMK_XA_ID, obj_ref); } // Set PCMK_XA_SEQUENTIAL=PCMK_VALUE_FALSE for the PCMK_XE_RESOURCE_SET @@ -405,10 +405,10 @@ pcmk__tag_to_set(xmlNode *xml_obj, xmlNode **rsc_set, const char *attr, xmlNode *rsc_ref = NULL; *rsc_set = pcmk__xe_create(xml_obj, PCMK_XE_RESOURCE_SET); - crm_xml_add(*rsc_set, PCMK_XA_ID, id); + pcmk__xe_set(*rsc_set, PCMK_XA_ID, id); rsc_ref = pcmk__xe_create(*rsc_set, PCMK_XE_RESOURCE_REF); - crm_xml_add(rsc_ref, PCMK_XA_ID, id); + pcmk__xe_set(rsc_ref, PCMK_XA_ID, id); } else { return true; diff --git a/lib/pacemaker/pcmk_sched_location.c b/lib/pacemaker/pcmk_sched_location.c index e806437e7d6..f66c9a5b8ee 100644 --- a/lib/pacemaker/pcmk_sched_location.c +++ b/lib/pacemaker/pcmk_sched_location.c @@ -523,7 +523,7 @@ unpack_location_tags(xmlNode *xml_obj, xmlNode **expanded_xml, /* Move PCMK_XA_RSC_ROLE into converted PCMK_XE_RESOURCE_SET as * PCMK_XA_ROLE attribute */ - crm_xml_add(rsc_set, PCMK_XA_ROLE, state); + pcmk__xe_set(rsc_set, PCMK_XA_ROLE, state); pcmk__xe_remove_attr(*expanded_xml, PCMK_XA_ROLE); } crm_log_xml_trace(*expanded_xml, "Expanded " PCMK_XE_RSC_LOCATION); diff --git a/lib/pacemaker/pcmk_sched_ordering.c b/lib/pacemaker/pcmk_sched_ordering.c index 836040dd9e7..fb7fdfbcea1 100644 --- a/lib/pacemaker/pcmk_sched_ordering.c +++ b/lib/pacemaker/pcmk_sched_ordering.c @@ -946,7 +946,7 @@ unpack_order_tags(xmlNode *xml_obj, xmlNode **expanded_xml, /* Move PCMK_XA_FIRST_ACTION into converted PCMK_XE_RESOURCE_SET as * PCMK_XA_ACTION */ - crm_xml_add(rsc_set_first, PCMK_XA_ACTION, action_first); + pcmk__xe_set(rsc_set_first, PCMK_XA_ACTION, action_first); pcmk__xe_remove_attr(*expanded_xml, PCMK_XA_FIRST_ACTION); } any_sets = true; @@ -967,7 +967,7 @@ unpack_order_tags(xmlNode *xml_obj, xmlNode **expanded_xml, /* Move PCMK_XA_THEN_ACTION into converted PCMK_XE_RESOURCE_SET as * PCMK_XA_ACTION */ - crm_xml_add(rsc_set_then, PCMK_XA_ACTION, action_then); + pcmk__xe_set(rsc_set_then, PCMK_XA_ACTION, action_then); pcmk__xe_remove_attr(*expanded_xml, PCMK_XA_THEN_ACTION); } any_sets = true; diff --git a/lib/pacemaker/pcmk_sched_primitive.c b/lib/pacemaker/pcmk_sched_primitive.c index 962a592518d..0c5fbafe76e 100644 --- a/lib/pacemaker/pcmk_sched_primitive.c +++ b/lib/pacemaker/pcmk_sched_primitive.c @@ -1546,7 +1546,7 @@ pcmk__primitive_add_graph_meta(const pcmk_resource_t *rsc, xmlNode *xml) value = g_hash_table_lookup(rsc->priv->meta, PCMK__META_CLONE); if (value != NULL) { name = crm_meta_name(PCMK__META_CLONE); - crm_xml_add(xml, name, value); + pcmk__xe_set(xml, name, value); free(name); } @@ -1554,7 +1554,7 @@ pcmk__primitive_add_graph_meta(const pcmk_resource_t *rsc, xmlNode *xml) value = g_hash_table_lookup(rsc->priv->meta, PCMK_META_REMOTE_NODE); if (value != NULL) { name = crm_meta_name(PCMK_META_REMOTE_NODE); - crm_xml_add(xml, name, value); + pcmk__xe_set(xml, name, value); free(name); } @@ -1563,7 +1563,7 @@ pcmk__primitive_add_graph_meta(const pcmk_resource_t *rsc, xmlNode *xml) */ for (parent = rsc; parent != NULL; parent = parent->priv->parent) { if (parent->priv->launcher != NULL) { - crm_xml_add(xml, CRM_META "_" PCMK__META_CONTAINER, + pcmk__xe_set(xml, CRM_META "_" PCMK__META_CONTAINER, parent->priv->launcher->id); } } @@ -1574,7 +1574,7 @@ pcmk__primitive_add_graph_meta(const pcmk_resource_t *rsc, xmlNode *xml) */ value = g_hash_table_lookup(rsc->priv->meta, "external-ip"); if (value != NULL) { - crm_xml_add(xml, "pcmk_external_ip", value); + pcmk__xe_set(xml, "pcmk_external_ip", value); } } diff --git a/lib/pacemaker/pcmk_sched_tickets.c b/lib/pacemaker/pcmk_sched_tickets.c index 154bb514ede..871758657af 100644 --- a/lib/pacemaker/pcmk_sched_tickets.c +++ b/lib/pacemaker/pcmk_sched_tickets.c @@ -400,7 +400,7 @@ unpack_rsc_ticket_tags(xmlNode *xml_obj, xmlNode **expanded_xml, /* Move PCMK_XA_RSC_ROLE into converted PCMK_XE_RESOURCE_SET as a * PCMK_XA_ROLE attribute */ - crm_xml_add(rsc_set, PCMK_XA_ROLE, state); + pcmk__xe_set(rsc_set, PCMK_XA_ROLE, state); pcmk__xe_remove_attr(*expanded_xml, PCMK_XA_RSC_ROLE); } diff --git a/lib/pacemaker/pcmk_simulate.c b/lib/pacemaker/pcmk_simulate.c index 9f9b3863df3..cbc1a185994 100644 --- a/lib/pacemaker/pcmk_simulate.c +++ b/lib/pacemaker/pcmk_simulate.c @@ -776,7 +776,7 @@ simulate_fencing_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) false); pcmk__assert(cib_node != NULL); - crm_xml_add(cib_node, PCMK_XA_CRM_DEBUG_ORIGIN, __func__); + pcmk__xe_set(cib_node, PCMK_XA_CRM_DEBUG_ORIGIN, __func__); rc = fake_cib->cmds->replace(fake_cib, PCMK_XE_STATUS, cib_node, cib_sync_call); pcmk__assert(rc == pcmk_ok); diff --git a/lib/pacemaker/pcmk_ticket.c b/lib/pacemaker/pcmk_ticket.c index 6705cb5bbcd..4477e5192d3 100644 --- a/lib/pacemaker/pcmk_ticket.c +++ b/lib/pacemaker/pcmk_ticket.c @@ -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. * @@ -34,7 +34,7 @@ build_ticket_modify_xml(cib_t *cib, const char *ticket_id, xmlNode **ticket_stat *xml_top = pcmk__xe_create(NULL, PCMK_XE_STATUS); xml_obj = pcmk__xe_create(*xml_top, PCMK_XE_TICKETS); *ticket_state_xml = pcmk__xe_create(xml_obj, PCMK__XE_TICKET_STATE); - crm_xml_add(*ticket_state_xml, PCMK_XA_ID, ticket_id); + pcmk__xe_set(*ticket_state_xml, PCMK_XA_ID, ticket_id); rc = pcmk_rc_ok; @@ -59,7 +59,7 @@ add_attribute_xml(pcmk_scheduler_t *scheduler, const char *ticket_id, ticket_id); g_hash_table_iter_init(&hash_iter, attr_set); while (g_hash_table_iter_next(&hash_iter, (gpointer *) & key, (gpointer *) & value)) { - crm_xml_add(*ticket_state_xml, key, value); + pcmk__xe_set(*ticket_state_xml, key, value); if (pcmk__str_eq(key, PCMK__XA_GRANTED, pcmk__str_none) && ((ticket == NULL) @@ -68,7 +68,7 @@ add_attribute_xml(pcmk_scheduler_t *scheduler, const char *ticket_id, char *now = pcmk__ttoa(time(NULL)); - crm_xml_add(*ticket_state_xml, PCMK_XA_LAST_GRANTED, now); + pcmk__xe_set(*ticket_state_xml, PCMK_XA_LAST_GRANTED, now); free(now); } } diff --git a/lib/pengine/bundle.c b/lib/pengine/bundle.c index 2fa6d52596f..cee0390763d 100644 --- a/lib/pengine/bundle.c +++ b/lib/pengine/bundle.c @@ -314,10 +314,10 @@ create_resource(const char *name, const char *provider, const char *kind) { xmlNode *rsc = pcmk__xe_create(NULL, PCMK_XE_PRIMITIVE); - crm_xml_add(rsc, PCMK_XA_ID, name); - crm_xml_add(rsc, PCMK_XA_CLASS, PCMK_RESOURCE_CLASS_OCF); - crm_xml_add(rsc, PCMK_XA_PROVIDER, provider); - crm_xml_add(rsc, PCMK_XA_TYPE, kind); + pcmk__xe_set(rsc, PCMK_XA_ID, name); + pcmk__xe_set(rsc, PCMK_XA_CLASS, PCMK_RESOURCE_CLASS_OCF); + pcmk__xe_set(rsc, PCMK_XA_PROVIDER, provider); + pcmk__xe_set(rsc, PCMK_XA_TYPE, kind); return rsc; } @@ -941,7 +941,7 @@ pe__add_bundle_remote_name(pcmk_resource_t *rsc, xmlNode *xml, crm_trace("Setting address for bundle connection %s to bundle host %s", rsc->id, pcmk__node_name(node)); if(xml != NULL && field != NULL) { - crm_xml_add(xml, field, node->priv->name); + pcmk__xe_set(xml, field, node->priv->name); } return node->priv->name; @@ -1143,7 +1143,7 @@ pe__unpack_bundle(pcmk_resource_t *rsc) free(value); } - //crm_xml_add(xml_obj, PCMK_XA_ID, bundle_data->prefix); + //pcmk__xe_set(xml_obj, PCMK_XA_ID, bundle_data->prefix); pcmk__xml_copy(xml_resource, xml_obj); } else if(xml_obj) { diff --git a/lib/pengine/clone.c b/lib/pengine/clone.c index d321f0163cf..bcfaf7fd5b8 100644 --- a/lib/pengine/clone.c +++ b/lib/pengine/clone.c @@ -243,7 +243,7 @@ pe__create_clone_child(pcmk_resource_t *rsc, pcmk_scheduler_t *scheduler) child_copy = pcmk__xml_copy(NULL, clone_data->xml_obj_child); - crm_xml_add(child_copy, PCMK__META_CLONE, inc_num); + pcmk__xe_set(child_copy, PCMK__META_CLONE, inc_num); if (pe__unpack_resource(child_copy, &child_rsc, rsc, scheduler) != pcmk_rc_ok) { diff --git a/lib/pengine/complex.c b/lib/pengine/complex.c index 838d3fc1d3c..f79c8582f78 100644 --- a/lib/pengine/complex.c +++ b/lib/pengine/complex.c @@ -314,9 +314,9 @@ unpack_template(xmlNode *xml_obj, xmlNode **expanded_xml, new_xml = pcmk__xml_copy(NULL, template); xmlNodeSetName(new_xml, xml_obj->name); - crm_xml_add(new_xml, PCMK_XA_ID, id); - crm_xml_add(new_xml, PCMK__META_CLONE, - pcmk__xe_get(xml_obj, PCMK__META_CLONE)); + pcmk__xe_set(new_xml, PCMK_XA_ID, id); + pcmk__xe_set(new_xml, PCMK__META_CLONE, + pcmk__xe_get(xml_obj, PCMK__META_CLONE)); template_ops = pcmk__xe_first_child(new_xml, PCMK_XE_OPERATIONS, NULL, NULL); diff --git a/lib/pengine/group.c b/lib/pengine/group.c index 78375499936..731e8cf1a09 100644 --- a/lib/pengine/group.c +++ b/lib/pengine/group.c @@ -209,7 +209,7 @@ group_unpack(pcmk_resource_t *rsc) pcmk_resource_t *new_rsc = NULL; - crm_xml_add(xml_native_rsc, PCMK__META_CLONE, clone_id); + pcmk__xe_set(xml_native_rsc, PCMK__META_CLONE, clone_id); if (pe__unpack_resource(xml_native_rsc, &new_rsc, rsc, rsc->priv->scheduler) != pcmk_rc_ok) { continue; diff --git a/lib/pengine/pe_output.c b/lib/pengine/pe_output.c index 83d0205361f..5e24a231007 100644 --- a/lib/pengine/pe_output.c +++ b/lib/pengine/pe_output.c @@ -877,19 +877,19 @@ cluster_counts_xml(pcmk__output_t *out, va_list args) { NULL); s = pcmk__itoa(nnodes); - crm_xml_add(nodes_node, PCMK_XA_NUMBER, s); + pcmk__xe_set(nodes_node, PCMK_XA_NUMBER, s); free(s); s = pcmk__itoa(nresources); - crm_xml_add(resources_node, PCMK_XA_NUMBER, s); + pcmk__xe_set(resources_node, PCMK_XA_NUMBER, s); free(s); s = pcmk__itoa(ndisabled); - crm_xml_add(resources_node, PCMK_XA_DISABLED, s); + pcmk__xe_set(resources_node, PCMK_XA_DISABLED, s); free(s); s = pcmk__itoa(nblocked); - crm_xml_add(resources_node, PCMK_XA_BLOCKED, s); + pcmk__xe_set(resources_node, PCMK_XA_BLOCKED, s); free(s); return pcmk_rc_ok; @@ -2089,8 +2089,8 @@ node_xml(pcmk__output_t *out, va_list args) { if (pcmk__is_guest_or_bundle_node(node)) { xmlNodePtr xml_node = pcmk__output_xml_peek_parent(out); - crm_xml_add(xml_node, PCMK_XA_ID_AS_RESOURCE, - node->priv->remote->priv->launcher->id); + pcmk__xe_set(xml_node, PCMK_XA_ID_AS_RESOURCE, + node->priv->remote->priv->launcher->id); } if (pcmk_is_set(show_opts, pcmk_show_rscs_by_node)) { @@ -2320,7 +2320,7 @@ node_attribute_xml(pcmk__output_t *out, va_list args) { if (add_extra) { char *buf = pcmk__itoa(expected_score); - crm_xml_add(node, PCMK_XA_EXPECTED, buf); + pcmk__xe_set(node, PCMK_XA_EXPECTED, buf); free(buf); } @@ -2779,7 +2779,7 @@ node_weight_xml(pcmk__output_t *out, va_list args) NULL); if (rsc) { - crm_xml_add(node, PCMK_XA_ID, rsc->id); + pcmk__xe_set(node, PCMK_XA_ID, rsc->id); } return pcmk_rc_ok; @@ -2827,7 +2827,7 @@ 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); - crm_xml_add(node, PCMK_XA_INTERVAL, s); + pcmk__xe_set(node, PCMK_XA_INTERVAL, s); free(s); } @@ -2838,20 +2838,20 @@ op_history_xml(pcmk__output_t *out, va_list args) { pcmk__xe_get_time(xml_op, PCMK_XA_LAST_RC_CHANGE, &epoch); if (epoch > 0) { char *s = pcmk__epoch2str(&epoch, 0); - crm_xml_add(node, PCMK_XA_LAST_RC_CHANGE, s); + pcmk__xe_set(node, PCMK_XA_LAST_RC_CHANGE, s); free(s); } value = pcmk__xe_get(xml_op, PCMK_XA_EXEC_TIME); if (value) { char *s = crm_strdup_printf("%sms", value); - crm_xml_add(node, PCMK_XA_EXEC_TIME, s); + pcmk__xe_set(node, PCMK_XA_EXEC_TIME, s); free(s); } value = pcmk__xe_get(xml_op, PCMK_XA_QUEUE_TIME); if (value) { char *s = crm_strdup_printf("%sms", value); - crm_xml_add(node, PCMK_XA_QUEUE_TIME, s); + pcmk__xe_set(node, PCMK_XA_QUEUE_TIME, s); free(s); } } @@ -2893,7 +2893,7 @@ promotion_score_xml(pcmk__output_t *out, va_list args) NULL); if (chosen) { - crm_xml_add(node, PCMK_XA_NODE, chosen->priv->name); + pcmk__xe_set(node, PCMK_XA_NODE, chosen->priv->name); } return pcmk_rc_ok; @@ -2974,14 +2974,14 @@ resource_history_xml(pcmk__output_t *out, va_list args) { if (failcount > 0) { char *s = pcmk__itoa(failcount); - crm_xml_add(node, PCMK_XA_FAIL_COUNT, s); + pcmk__xe_set(node, PCMK_XA_FAIL_COUNT, s); free(s); } if (last_failure > 0) { char *s = pcmk__epoch2str(&last_failure, 0); - crm_xml_add(node, PCMK_XA_LAST_FAILURE, s); + pcmk__xe_set(node, PCMK_XA_LAST_FAILURE, s); free(s); } } @@ -3341,7 +3341,7 @@ ticket_xml(pcmk__output_t *out, va_list args) { if (ticket->last_granted > -1) { char *buf = pcmk__epoch2str(&ticket->last_granted, 0); - crm_xml_add(node, PCMK_XA_LAST_GRANTED, buf); + pcmk__xe_set(node, PCMK_XA_LAST_GRANTED, buf); free(buf); } @@ -3355,7 +3355,7 @@ ticket_xml(pcmk__output_t *out, va_list args) { continue; } - crm_xml_add(node, name, value); + pcmk__xe_set(node, name, value); } return pcmk_rc_ok; diff --git a/lib/pengine/remote.c b/lib/pengine/remote.c index ce8d69f117d..96948f07e09 100644 --- a/lib/pengine/remote.c +++ b/lib/pengine/remote.c @@ -136,10 +136,10 @@ pe_create_remote_xml(xmlNode *parent, const char *uname, remote = pcmk__xe_create(parent, PCMK_XE_PRIMITIVE); // Add identity - crm_xml_add(remote, PCMK_XA_ID, uname); - crm_xml_add(remote, PCMK_XA_CLASS, PCMK_RESOURCE_CLASS_OCF); - crm_xml_add(remote, PCMK_XA_PROVIDER, "pacemaker"); - crm_xml_add(remote, PCMK_XA_TYPE, "remote"); + pcmk__xe_set(remote, PCMK_XA_ID, uname); + pcmk__xe_set(remote, PCMK_XA_CLASS, PCMK_RESOURCE_CLASS_OCF); + pcmk__xe_set(remote, PCMK_XA_PROVIDER, "pacemaker"); + pcmk__xe_set(remote, PCMK_XA_TYPE, "remote"); // Add meta-attributes xml_sub = pcmk__xe_create(remote, PCMK_XE_META_ATTRIBUTES); diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c index f028d2028ff..36dd2c0a836 100644 --- a/lib/pengine/unpack.c +++ b/lib/pengine/unpack.c @@ -1986,7 +1986,7 @@ create_fake_resource(const char *rsc_id, const xmlNode *rsc_entry, xmlNode *xml_rsc = pcmk__xe_create(NULL, PCMK_XE_PRIMITIVE); pcmk__xe_copy_attrs(xml_rsc, rsc_entry, pcmk__xaf_none); - crm_xml_add(xml_rsc, PCMK_XA_ID, rsc_id); + pcmk__xe_set(xml_rsc, PCMK_XA_ID, rsc_id); crm_log_xml_debug(xml_rsc, "Orphan resource"); if (pe__unpack_resource(xml_rsc, &rsc, NULL, scheduler) != pcmk_rc_ok) { @@ -3519,8 +3519,8 @@ record_failed_op(struct action_history *history) crm_trace("Adding entry for %s on %s to failed action list", history->key, pcmk__node_name(history->node)); - crm_xml_add(history->xml, PCMK_XA_UNAME, history->node->priv->name); - crm_xml_add(history->xml, PCMK__XA_RSC_ID, history->rsc->id); + pcmk__xe_set(history->xml, PCMK_XA_UNAME, history->node->priv->name); + pcmk__xe_set(history->xml, PCMK__XA_RSC_ID, history->rsc->id); pcmk__xml_copy(scheduler->priv->failed, history->xml); } @@ -4522,8 +4522,8 @@ process_expired_result(struct action_history *history, int orig_exit_status) "after failure expired", pcmk__readable_interval(history->interval_ms), history->task, history->rsc->id, pcmk__node_name(history->node)); - crm_xml_add(history->xml, PCMK__XA_OP_RESTART_DIGEST, - "calculated-failure-timeout"); + pcmk__xe_set(history->xml, PCMK__XA_OP_RESTART_DIGEST, + "calculated-failure-timeout"); return pcmk_rc_ok; } @@ -4555,7 +4555,7 @@ mask_probe_failure(struct action_history *history, int orig_exit_status, pcmk__node_name(history->node)); update_resource_state(history, history->expected_exit_status, last_failure, on_fail); - crm_xml_add(history->xml, PCMK_XA_UNAME, history->node->priv->name); + pcmk__xe_set(history->xml, PCMK_XA_UNAME, history->node->priv->name); record_failed_op(history); resource_location(ban_rsc, history->node, -PCMK_SCORE_INFINITY, @@ -4836,7 +4836,7 @@ unpack_rsc_op(pcmk_resource_t *rsc, pcmk_node_t *node, xmlNode *xml_op, update_resource_state(&history, history.expected_exit_status, *last_failure, on_fail); - crm_xml_add(xml_op, PCMK_XA_UNAME, node->priv->name); + pcmk__xe_set(xml_op, PCMK_XA_UNAME, node->priv->name); pcmk__set_rsc_flags(rsc, pcmk__rsc_ignore_failure); record_failed_op(&history); @@ -4995,8 +4995,8 @@ extract_operations(const char *node, const char *rsc, xmlNode * rsc_entry, gbool NULL); rsc_op != NULL; rsc_op = pcmk__xe_next(rsc_op, PCMK__XE_LRM_RSC_OP)) { - crm_xml_add(rsc_op, PCMK_XA_RESOURCE, rsc); - crm_xml_add(rsc_op, PCMK_XA_UNAME, node); + pcmk__xe_set(rsc_op, PCMK_XA_RESOURCE, rsc); + pcmk__xe_set(rsc_op, PCMK_XA_UNAME, node); op_list = g_list_prepend(op_list, rsc_op); } diff --git a/tools/cibadmin.c b/tools/cibadmin.c index a651d1e323d..9ebd9d0bc8d 100644 --- a/tools/cibadmin.c +++ b/tools/cibadmin.c @@ -592,7 +592,7 @@ main(int argc, char **argv) GString *buf = g_string_sized_new(1024); output = createEmptyCib(1); - crm_xml_add(output, PCMK_XA_VALIDATE_WITH, options.validate_with); + pcmk__xe_set(output, PCMK_XA_VALIDATE_WITH, options.validate_with); pcmk__xml_string(output, pcmk__xml_fmt_pretty, buf, 0); fprintf(stdout, "%s", buf->str); diff --git a/tools/crm_diff.c b/tools/crm_diff.c index 94c70e1c1ab..9c2ec9d6797 100644 --- a/tools/crm_diff.c +++ b/tools/crm_diff.c @@ -150,7 +150,7 @@ generate_patch(pcmk__output_t *out, xmlNode *source, xmlNode *target, */ if (no_version) { for (int i = 0; i < PCMK__NELEM(vfields); i++) { - crm_xml_add(target, vfields[i], pcmk__xe_get(source, vfields[i])); + pcmk__xe_set(target, vfields[i], pcmk__xe_get(source, vfields[i])); } } diff --git a/tools/crm_node.c b/tools/crm_node.c index f5a2148f874..ab46990c214 100644 --- a/tools/crm_node.c +++ b/tools/crm_node.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. * @@ -547,7 +547,7 @@ remove_from_section(cib_t *cib, const char *element, const char *section, int rc = pcmk_rc_ok; xmlNode *xml = pcmk__xe_create(NULL, element); - crm_xml_add(xml, PCMK_XA_UNAME, node_name); + pcmk__xe_set(xml, PCMK_XA_UNAME, node_name); if (node_id > 0) { pcmk__xe_set_ll(xml, PCMK_XA_ID, (long long) node_id); } @@ -691,7 +691,7 @@ purge_node_from_fencer(const char *node_name, long node_id) if (node_id > 0) { pcmk__xe_set_ll(cmd, PCMK_XA_ID, (long long) node_id); } - crm_xml_add(cmd, PCMK_XA_UNAME, node_name); + pcmk__xe_set(cmd, PCMK_XA_UNAME, node_name); rc = crm_ipc_send(conn, cmd, 0, 0, NULL); if (rc >= 0) { diff --git a/tools/crm_resource_ban.c b/tools/crm_resource_ban.c index 9de379fbca5..33e77c8ca48 100644 --- a/tools/crm_resource_ban.c +++ b/tools/crm_resource_ban.c @@ -91,36 +91,36 @@ cli_resource_ban(pcmk__output_t *out, const char *rsc_id, const char *host, pcmk__xe_id(location), rsc_id, host, rsc_id, (promoted_role_only? "being promoted" : "running"), host, host); - crm_xml_add(location, PCMK_XA_RSC, rsc_id); + pcmk__xe_set(location, PCMK_XA_RSC, rsc_id); if(promoted_role_only) { - crm_xml_add(location, PCMK_XA_ROLE, promoted_role); + pcmk__xe_set(location, PCMK_XA_ROLE, promoted_role); } else { - crm_xml_add(location, PCMK_XA_ROLE, PCMK_ROLE_STARTED); + pcmk__xe_set(location, PCMK_XA_ROLE, PCMK_ROLE_STARTED); } if (later_s == NULL) { /* Short form */ - crm_xml_add(location, PCMK_XE_NODE, host); - crm_xml_add(location, PCMK_XA_SCORE, PCMK_VALUE_MINUS_INFINITY); + pcmk__xe_set(location, PCMK_XE_NODE, host); + pcmk__xe_set(location, PCMK_XA_SCORE, PCMK_VALUE_MINUS_INFINITY); } else { xmlNode *rule = pcmk__xe_create(location, PCMK_XE_RULE); xmlNode *expr = pcmk__xe_create(rule, PCMK_XE_EXPRESSION); pcmk__xe_set_id(rule, "cli-ban-%s-on-%s-rule", rsc_id, host); - crm_xml_add(rule, PCMK_XA_SCORE, PCMK_VALUE_MINUS_INFINITY); - crm_xml_add(rule, PCMK_XA_BOOLEAN_OP, PCMK_VALUE_AND); + pcmk__xe_set(rule, PCMK_XA_SCORE, PCMK_VALUE_MINUS_INFINITY); + pcmk__xe_set(rule, PCMK_XA_BOOLEAN_OP, PCMK_VALUE_AND); pcmk__xe_set_id(expr, "cli-ban-%s-on-%s-expr", rsc_id, host); - crm_xml_add(expr, PCMK_XA_ATTRIBUTE, CRM_ATTR_UNAME); - crm_xml_add(expr, PCMK_XA_OPERATION, PCMK_VALUE_EQ); - crm_xml_add(expr, PCMK_XA_VALUE, host); - crm_xml_add(expr, PCMK_XA_TYPE, PCMK_VALUE_STRING); + pcmk__xe_set(expr, PCMK_XA_ATTRIBUTE, CRM_ATTR_UNAME); + pcmk__xe_set(expr, PCMK_XA_OPERATION, PCMK_VALUE_EQ); + pcmk__xe_set(expr, PCMK_XA_VALUE, host); + pcmk__xe_set(expr, PCMK_XA_TYPE, PCMK_VALUE_STRING); expr = pcmk__xe_create(rule, PCMK_XE_DATE_EXPRESSION); pcmk__xe_set_id(expr, "cli-ban-%s-on-%s-lifetime", rsc_id, host); - crm_xml_add(expr, PCMK_XA_OPERATION, PCMK_VALUE_LT); - crm_xml_add(expr, PCMK_XA_END, later_s); + pcmk__xe_set(expr, PCMK_XA_OPERATION, PCMK_VALUE_LT); + pcmk__xe_set(expr, PCMK_XA_END, later_s); } crm_log_xml_notice(fragment, "Modify"); @@ -171,36 +171,36 @@ cli_resource_prefer(pcmk__output_t *out,const char *rsc_id, const char *host, location = pcmk__xe_create(fragment, PCMK_XE_RSC_LOCATION); pcmk__xe_set_id(location, "cli-prefer-%s", rsc_id); - crm_xml_add(location, PCMK_XA_RSC, rsc_id); + pcmk__xe_set(location, PCMK_XA_RSC, rsc_id); if(promoted_role_only) { - crm_xml_add(location, PCMK_XA_ROLE, promoted_role); + pcmk__xe_set(location, PCMK_XA_ROLE, promoted_role); } else { - crm_xml_add(location, PCMK_XA_ROLE, PCMK_ROLE_STARTED); + pcmk__xe_set(location, PCMK_XA_ROLE, PCMK_ROLE_STARTED); } if (later_s == NULL) { /* Short form */ - crm_xml_add(location, PCMK_XE_NODE, host); - crm_xml_add(location, PCMK_XA_SCORE, PCMK_VALUE_INFINITY); + pcmk__xe_set(location, PCMK_XE_NODE, host); + pcmk__xe_set(location, PCMK_XA_SCORE, PCMK_VALUE_INFINITY); } else { xmlNode *rule = pcmk__xe_create(location, PCMK_XE_RULE); xmlNode *expr = pcmk__xe_create(rule, PCMK_XE_EXPRESSION); pcmk__xe_set_id(rule, "cli-prefer-rule-%s", rsc_id); - crm_xml_add(rule, PCMK_XA_SCORE, PCMK_VALUE_INFINITY); - crm_xml_add(rule, PCMK_XA_BOOLEAN_OP, PCMK_VALUE_AND); + pcmk__xe_set(rule, PCMK_XA_SCORE, PCMK_VALUE_INFINITY); + pcmk__xe_set(rule, PCMK_XA_BOOLEAN_OP, PCMK_VALUE_AND); pcmk__xe_set_id(expr, "cli-prefer-expr-%s", rsc_id); - crm_xml_add(expr, PCMK_XA_ATTRIBUTE, CRM_ATTR_UNAME); - crm_xml_add(expr, PCMK_XA_OPERATION, PCMK_VALUE_EQ); - crm_xml_add(expr, PCMK_XA_VALUE, host); - crm_xml_add(expr, PCMK_XA_TYPE, PCMK_VALUE_STRING); + pcmk__xe_set(expr, PCMK_XA_ATTRIBUTE, CRM_ATTR_UNAME); + pcmk__xe_set(expr, PCMK_XA_OPERATION, PCMK_VALUE_EQ); + pcmk__xe_set(expr, PCMK_XA_VALUE, host); + pcmk__xe_set(expr, PCMK_XA_TYPE, PCMK_VALUE_STRING); expr = pcmk__xe_create(rule, PCMK_XE_DATE_EXPRESSION); pcmk__xe_set_id(expr, "cli-prefer-lifetime-end-%s", rsc_id); - crm_xml_add(expr, PCMK_XA_OPERATION, PCMK_VALUE_LT); - crm_xml_add(expr, PCMK_XA_END, later_s); + pcmk__xe_set(expr, PCMK_XA_OPERATION, PCMK_VALUE_LT); + pcmk__xe_set(expr, PCMK_XA_END, later_s); } crm_log_xml_info(fragment, "Modify"); @@ -296,7 +296,7 @@ resource_clear_node_in_location(const char *rsc_id, const char *host, cib_t * ci location = pcmk__xe_create(fragment, PCMK_XE_RSC_LOCATION); pcmk__xe_set_id(location, "cli-prefer-%s", rsc_id); if (force == FALSE) { - crm_xml_add(location, PCMK_XE_NODE, host); + pcmk__xe_set(location, PCMK_XE_NODE, host); } crm_log_xml_info(fragment, "Delete"); diff --git a/tools/crm_resource_print.c b/tools/crm_resource_print.c index d2998fb8b16..55a6ee23c53 100644 --- a/tools/crm_resource_print.c +++ b/tools/crm_resource_print.c @@ -357,7 +357,7 @@ override_xml(pcmk__output_t *out, va_list args) { NULL); if (rsc_name != NULL) { - crm_xml_add(node, PCMK_XA_RSC, rsc_name); + pcmk__xe_set(node, PCMK_XA_RSC, rsc_name); } return pcmk_rc_ok; @@ -453,10 +453,10 @@ resource_agent_action_xml(pcmk__output_t *out, va_list args) { NULL); if (rsc_name) { - crm_xml_add(node, PCMK_XA_RSC, rsc_name); + pcmk__xe_set(node, PCMK_XA_RSC, rsc_name); } - crm_xml_add(node, PCMK_XA_PROVIDER, provider); + pcmk__xe_set(node, PCMK_XA_PROVIDER, provider); if (overrides) { GHashTableIter iter; @@ -565,7 +565,7 @@ resource_check_list_xml(pcmk__output_t *out, va_list args) { } if (pcmk_is_set(checks->flags, rsc_locked)) { - crm_xml_add(node, PCMK_XA_LOCKED_TO_HYPHEN, checks->lock_node); + pcmk__xe_set(node, PCMK_XA_LOCKED_TO_HYPHEN, checks->lock_node); } if (pcmk_is_set(checks->flags, rsc_node_health)) { @@ -637,7 +637,7 @@ resource_search_list_xml(pcmk__output_t *out, va_list args) ni->node_name); if (ni->promoted) { - crm_xml_add(sub_node, PCMK_XA_STATE, "promoted"); + pcmk__xe_set(sub_node, PCMK_XA_STATE, "promoted"); } } @@ -770,7 +770,7 @@ resource_reasons_list_xml(pcmk__output_t *out, va_list args) } else if ((rsc != NULL) && (host_uname != NULL)) { if (resource_is_running_on(rsc, host_uname)) { - crm_xml_add(xml_node, PCMK_XA_RUNNING_ON, host_uname); + pcmk__xe_set(xml_node, PCMK_XA_RUNNING_ON, host_uname); } cli_resource_check(out, rsc, node); @@ -819,7 +819,7 @@ resource_reasons_list_xml(pcmk__output_t *out, va_list args) GList *hosts = NULL; rsc->priv->fns->location(rsc, &hosts, pcmk__rsc_node_current); - crm_xml_add(xml_node, PCMK_XA_RUNNING, pcmk__btoa(hosts != NULL)); + pcmk__xe_set(xml_node, PCMK_XA_RUNNING, pcmk__btoa(hosts != NULL)); cli_resource_check(out, rsc, NULL); g_list_free(hosts); } diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c index 8634399c773..92dd8a97235 100644 --- a/tools/crm_resource_runtime.c +++ b/tools/crm_resource_runtime.c @@ -309,7 +309,7 @@ update_element_attribute(pcmk__output_t *out, pcmk_resource_t *rsc, return ENXIO; } - crm_xml_add(rsc_xml, attr_name, attr_value); + pcmk__xe_set(rsc_xml, attr_name, attr_value); rc = cib->cmds->replace(cib, PCMK_XE_RESOURCES, rsc_xml, cib_sync_call); rc = pcmk_legacy2rc(rc); @@ -481,10 +481,10 @@ update_attribute(pcmk_resource_t *rsc, const char *requested_name, } xml_top = pcmk__xe_create(NULL, (const char *) rsc_xml->name); - crm_xml_add(xml_top, PCMK_XA_ID, lookup_id); + pcmk__xe_set(xml_top, PCMK_XA_ID, lookup_id); xml_obj = pcmk__xe_create(xml_top, attr_set_type); - crm_xml_add(xml_obj, PCMK_XA_ID, rsc_attr_set); + pcmk__xe_set(xml_obj, PCMK_XA_ID, rsc_attr_set); break; default: diff --git a/tools/crm_shadow.c b/tools/crm_shadow.c index 038a4119ac3..0040685846d 100644 --- a/tools/crm_shadow.c +++ b/tools/crm_shadow.c @@ -738,7 +738,7 @@ create_shadow_empty(pcmk__output_t *out, GError **error) } output = createEmptyCib(0); - crm_xml_add(output, PCMK_XA_VALIDATE_WITH, options.validate_with); + pcmk__xe_set(output, PCMK_XA_VALIDATE_WITH, options.validate_with); out->info(out, "Created new %s configuration", pcmk__xe_get(output, PCMK_XA_VALIDATE_WITH)); From 3f5bb52a48e20c0fdcbdbd498016f909c9db84d4 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 19 Mar 2025 17:18:21 -0700 Subject: [PATCH 093/186] API: libcrmcommon: Deprecate crm_xml_add() Signed-off-by: Reid Wahl --- include/crm/common/xml_element.h | 7 -- include/crm/common/xml_element_compat.h | 3 + lib/common/xml_element.c | 93 +++++++++++-------------- 3 files changed, 44 insertions(+), 59 deletions(-) diff --git a/include/crm/common/xml_element.h b/include/crm/common/xml_element.h index db11f2e4f00..4ec740b46bf 100644 --- a/include/crm/common/xml_element.h +++ b/include/crm/common/xml_element.h @@ -10,11 +10,6 @@ #ifndef PCMK__CRM_COMMON_XML_ELEMENT__H #define PCMK__CRM_COMMON_XML_ELEMENT__H -#include // struct timeval - -#include // guint -#include // xmlNode - #ifdef __cplusplus extern "C" { #endif @@ -25,8 +20,6 @@ extern "C" { * \ingroup core */ -const char *crm_xml_add(xmlNode *node, const char *name, const char *value); - #ifdef __cplusplus } #endif diff --git a/include/crm/common/xml_element_compat.h b/include/crm/common/xml_element_compat.h index 8ab28622b95..ce44d49a11f 100644 --- a/include/crm/common/xml_element_compat.h +++ b/include/crm/common/xml_element_compat.h @@ -78,6 +78,9 @@ const char *crm_xml_add_ll(xmlNode *node, const char *name, long long value); //! \deprecated Do not use const char *crm_xml_add_int(xmlNode *node, const char *name, int value); +//! \deprecated Do not use +const char *crm_xml_add(xmlNode *node, const char *name, const char *value); + #ifdef __cplusplus } #endif diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index 34273378dcc..9dd6637a282 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -997,58 +997,6 @@ pcmk__xe_foreach_child(xmlNode *xml, const char *child_element_name, // XML attribute handling -/*! - * \brief Create an XML attribute with specified name and value - * - * \param[in,out] node XML node to modify - * \param[in] name Attribute name to set - * \param[in] value Attribute value to set - * - * \return New value on success, \c NULL otherwise - * \note This does nothing if node, name, or value are \c NULL or empty. - */ -const char * -crm_xml_add(xmlNode *node, const char *name, const char *value) -{ - // @TODO Replace with internal function that returns the new attribute - bool dirty = FALSE; - xmlAttr *attr = NULL; - - CRM_CHECK(node != NULL, return NULL); - CRM_CHECK(name != NULL, return NULL); - - if (value == NULL) { - return NULL; - } - - if (pcmk__xml_doc_all_flags_set(node->doc, pcmk__xf_tracking)) { - const char *old = pcmk__xe_get(node, name); - - if (old == NULL || value == NULL || strcmp(old, value) != 0) { - dirty = TRUE; - } - } - - if (dirty && (pcmk__check_acl(node, name, pcmk__xf_acl_create) == FALSE)) { - crm_trace("Cannot add %s=%s to %s", name, value, node->name); - return NULL; - } - - attr = xmlSetProp(node, (const xmlChar *) name, (const xmlChar *) value); - - /* If the attribute already exists, this does nothing. Attribute values - * don't get private data. - */ - pcmk__xml_new_private_data((xmlNode *) attr); - - if (dirty) { - pcmk__mark_xml_attr_dirty(attr); - } - - CRM_CHECK(attr && attr->children && attr->children->content, return NULL); - return (char *)attr->children->content; -} - /*! * \internal * \brief Retrieve the value of an XML attribute @@ -1620,6 +1568,47 @@ expand_idref(xmlNode *input, xmlNode *top) return pcmk__xe_resolve_idref(input, top); } +const char * +crm_xml_add(xmlNode *node, const char *name, const char *value) +{ + bool dirty = FALSE; + xmlAttr *attr = NULL; + + CRM_CHECK(node != NULL, return NULL); + CRM_CHECK(name != NULL, return NULL); + + if (value == NULL) { + return NULL; + } + + if (pcmk__xml_doc_all_flags_set(node->doc, pcmk__xf_tracking)) { + const char *old = pcmk__xe_get(node, name); + + if (old == NULL || value == NULL || strcmp(old, value) != 0) { + dirty = TRUE; + } + } + + if (dirty && (pcmk__check_acl(node, name, pcmk__xf_acl_create) == FALSE)) { + crm_trace("Cannot add %s=%s to %s", name, value, node->name); + return NULL; + } + + attr = xmlSetProp(node, (const xmlChar *) name, (const xmlChar *) value); + + /* If the attribute already exists, this does nothing. Attribute values + * don't get private data. + */ + pcmk__xml_new_private_data((xmlNode *) attr); + + if (dirty) { + pcmk__mark_xml_attr_dirty(attr); + } + + CRM_CHECK(attr && attr->children && attr->children->content, return NULL); + return (char *)attr->children->content; +} + void crm_xml_set_id(xmlNode *xml, const char *format, ...) { From 8361d137d8ab4c413cf10e1efe8c348549c48aa5 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 20 Mar 2025 17:54:45 -0700 Subject: [PATCH 094/186] Refactor: libcrmcommon: New pcmk__xml_write_temp_file() To replace save_xml_to_file(). Signed-off-by: Reid Wahl --- include/crm/common/xml_io_internal.h | 4 +++- lib/cib/cib_utils.c | 12 +++++++---- lib/common/digest.c | 5 ++--- lib/common/patchset.c | 7 ++++--- lib/common/xml_io.c | 31 ++++++++++++++++++++++++++++ 5 files changed, 48 insertions(+), 11 deletions(-) diff --git a/include/crm/common/xml_io_internal.h b/include/crm/common/xml_io_internal.h index ddce11463cd..2e1feab1277 100644 --- a/include/crm/common/xml_io_internal.h +++ b/include/crm/common/xml_io_internal.h @@ -1,5 +1,5 @@ /* - * Copyright 2017-2024 the Pacemaker project contributors + * Copyright 2017-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -34,6 +34,8 @@ int pcmk__xml2fd(int fd, xmlNode *cur); int pcmk__xml_write_fd(const xmlNode *xml, const char *filename, int fd); int pcmk__xml_write_file(const xmlNode *xml, const char *filename, bool compress); +void pcmk__xml_write_temp_file(const xmlNode *xml, const char *desc, + const char *filename); #ifdef __cplusplus } diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c index 8405d0c9c0f..b02746fe827 100644 --- a/lib/cib/cib_utils.c +++ b/lib/cib/cib_utils.c @@ -451,10 +451,14 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, manage_counters); if (test_rc != pcmk_ok) { - save_xml_to_file(cib_copy, "PatchApply:calculated", NULL); - save_xml_to_file(patchset_cib, "PatchApply:input", NULL); - save_xml_to_file(scratch, "PatchApply:actual", NULL); - save_xml_to_file(local_diff, "PatchApply:diff", NULL); + pcmk__xml_write_temp_file(cib_copy, "PatchApply:calculated", + NULL); + pcmk__xml_write_temp_file(patchset_cib, "PatchApply:input", + NULL); + pcmk__xml_write_temp_file(scratch, "PatchApply:actual", + NULL); + pcmk__xml_write_temp_file(local_diff, "PatchApply:diff", + NULL); crm_err("v%d patchset error, patch failed to apply: %s " "(%d)", format, pcmk_rc_str(pcmk_legacy2rc(test_rc)), diff --git a/lib/common/digest.c b/lib/common/digest.c index 06302954c7f..7ca9c6e6fef 100644 --- a/lib/common/digest.c +++ b/lib/common/digest.c @@ -177,15 +177,14 @@ pcmk__digest_xml(const xmlNode *xml, bool filter) pcmk__if_tracing( { - char *trace_file = crm_strdup_printf("%s/digest-%s", - pcmk__get_tmpdir(), digest); + char *trace_file = crm_strdup_printf("digest-%s", digest); crm_trace("Saving %s.%s.%s to %s", pcmk__xe_get(xml, PCMK_XA_ADMIN_EPOCH), pcmk__xe_get(xml, PCMK_XA_EPOCH), pcmk__xe_get(xml, PCMK_XA_NUM_UPDATES), trace_file); - save_xml_to_file(xml, "digest input", trace_file); + pcmk__xml_write_temp_file(xml, "digest input", trace_file); free(trace_file); }, {} diff --git a/lib/common/patchset.c b/lib/common/patchset.c index 96bbf6db09d..947bf9dfac2 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -851,9 +851,10 @@ xml_apply_patchset(xmlNode *xml, const xmlNode *patchset, bool check_version) rc = -pcmk_err_diff_failed; pcmk__if_tracing( { - save_xml_to_file(old, "PatchDigest:input", NULL); - save_xml_to_file(xml, "PatchDigest:result", NULL); - save_xml_to_file(patchset, "PatchDigest:diff", NULL); + pcmk__xml_write_temp_file(old, "PatchDigest:input", NULL); + pcmk__xml_write_temp_file(xml, "PatchDigest:result", NULL); + pcmk__xml_write_temp_file(patchset, "PatchDigest:diff", + NULL); }, {} ); diff --git a/lib/common/xml_io.c b/lib/common/xml_io.c index 559bb06f226..d539b5cde5a 100644 --- a/lib/common/xml_io.c +++ b/lib/common/xml_io.c @@ -600,6 +600,37 @@ pcmk__xml2fd(int fd, xmlNode *cur) return pcmk_rc_ok; } +/*! + * \internal + * \brief Write XML to a file in a temporary directory + * + * \param[in] xml XML to write + * \param[in] desc Description of \p xml + * \param[in] filename Base name of file to write (\c NULL to create a name + * based on a generated UUID) + */ +void +pcmk__xml_write_temp_file(const xmlNode *xml, const char *desc, + const char *filename) +{ + char *path = NULL; + char *uuid = NULL; + + CRM_CHECK((xml != NULL) && (desc != NULL), return); + + if (filename == NULL) { + uuid = crm_generate_uuid(); + filename = uuid; + } + path = crm_strdup_printf("%s/%s", pcmk__get_tmpdir(), filename); + + crm_info("Saving %s to %s", desc, path); + pcmk__xml_write_file(xml, filename, false); + + free(path); + free(uuid); +} + void save_xml_to_file(const xmlNode *xml, const char *desc, const char *filename) { From a8f5ffcad3c6bbf1d7afff03d56bba97a64a9777 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 20 Mar 2025 17:58:11 -0700 Subject: [PATCH 095/186] API: libcrmcommon: Deprecate save_xml_to_file() Signed-off-by: Reid Wahl --- include/crm/common/Makefile.am | 1 + include/crm/common/xml_io.h | 9 ++++---- include/crm/common/xml_io_compat.h | 35 ++++++++++++++++++++++++++++++ lib/common/xml_io.c | 8 +++++++ 4 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 include/crm/common/xml_io_compat.h diff --git a/include/crm/common/Makefile.am b/include/crm/common/Makefile.am index a9282737812..e0a2c40ac3c 100644 --- a/include/crm/common/Makefile.am +++ b/include/crm/common/Makefile.am @@ -49,6 +49,7 @@ header_HEADERS = acl.h \ xml_element.h \ xml_element_compat.h \ xml_io.h \ + xml_io_compat.h \ xml_names.h noinst_HEADERS = $(wildcard *internal.h) diff --git a/include/crm/common/xml_io.h b/include/crm/common/xml_io.h index b90ba88f826..940d0fdf12d 100644 --- a/include/crm/common/xml_io.h +++ b/include/crm/common/xml_io.h @@ -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. * @@ -10,8 +10,6 @@ #ifndef PCMK__CRM_COMMON_XML_IO__H #define PCMK__CRM_COMMON_XML_IO__H -#include // xmlNode - #ifdef __cplusplus extern "C" { #endif @@ -34,8 +32,9 @@ extern "C" { #define CRM_BZ2_WORK 20 #define CRM_BZ2_THRESHOLD (128 * 1024) -void save_xml_to_file(const xmlNode *xml, const char *desc, - const char *filename); +#if !defined(PCMK_ALLOW_DEPRECATED) || (PCMK_ALLOW_DEPRECATED == 1) +#include +#endif #ifdef __cplusplus } diff --git a/include/crm/common/xml_io_compat.h b/include/crm/common/xml_io_compat.h new file mode 100644 index 00000000000..5b3b40841c4 --- /dev/null +++ b/include/crm/common/xml_io_compat.h @@ -0,0 +1,35 @@ +/* + * Copyright 2004-2025 the Pacemaker project contributors + * + * The version control history for this file may have further details. + * + * This source code is licensed under the GNU Lesser General Public License + * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY. + */ + +#ifndef PCMK__CRM_COMMON_XML_IO_COMPAT__H +#define PCMK__CRM_COMMON_XML_IO_COMPAT__H + +#include // xmlNode + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file + * \brief Deprecated Pacemaker XML I/O API + * \ingroup core + * \deprecated Do not include this header directly. The XML APIs in this header, + * and the header itself, will be removed in a future release. + */ + +//! \deprecated Do not use +void save_xml_to_file(const xmlNode *xml, const char *desc, + const char *filename); + +#ifdef __cplusplus +} +#endif + +#endif // PCMK__CRM_COMMON_XML_IO_COMPAT__H diff --git a/lib/common/xml_io.c b/lib/common/xml_io.c index d539b5cde5a..fd13949cdff 100644 --- a/lib/common/xml_io.c +++ b/lib/common/xml_io.c @@ -631,6 +631,11 @@ pcmk__xml_write_temp_file(const xmlNode *xml, const char *desc, free(uuid); } +// Deprecated functions kept only for backward API compatibility +// LCOV_EXCL_START + +#include + void save_xml_to_file(const xmlNode *xml, const char *desc, const char *filename) { @@ -648,3 +653,6 @@ save_xml_to_file(const xmlNode *xml, const char *desc, const char *filename) pcmk__xml_write_file(xml, filename, false); free(f); } + +// LCOV_EXCL_STOP +// End deprecated API From c2a9fa93b53e5afe9b304f26e02fac5ce0be1252 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 20 Mar 2025 18:02:18 -0700 Subject: [PATCH 096/186] Refactor: libcrmcommon: New PCMK__BZ2_ string constants To replace the CRM_BZ2_ string constants Signed-off-by: Reid Wahl --- include/crm/common/io_internal.h | 14 +++++++++++++- lib/cluster/cpg.c | 2 +- lib/common/strings.c | 4 ++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/include/crm/common/io_internal.h b/include/crm/common/io_internal.h index e9c68f6eb89..23e966ca725 100644 --- a/include/crm/common/io_internal.h +++ b/include/crm/common/io_internal.h @@ -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. * @@ -18,6 +18,18 @@ extern "C" { #endif +/* Define compression parameters for IPC messages + * + * Compression costs a LOT, so we don't want to do it unless we're hitting + * message limits. Currently, we use 128KB as the threshold, because higher + * values don't play well with the heartbeat stack. With an earlier limit of + * 10KB, compressing 184 of 1071 messages accounted for 23% of the total CPU + * used by the cib. + */ +#define PCMK__BZ2_BLOCKS 4 +#define PCMK__BZ2_WORK 20 +#define PCMK__BZ2_THRESHOLD (128 * 1024) + int pcmk__real_path(const char *path, char **resolved_path); char *pcmk__series_filename(const char *directory, const char *series, diff --git a/lib/cluster/cpg.c b/lib/cluster/cpg.c index 457454ed559..e2fdfc2fdd2 100644 --- a/lib/cluster/cpg.c +++ b/lib/cluster/cpg.c @@ -977,7 +977,7 @@ send_cpg_text(const char *data, const pcmk__node_status_t *node, msg->size = 1 + strlen(data); msg->header.size = sizeof(pcmk__cpg_msg_t) + msg->size; - if (msg->size < CRM_BZ2_THRESHOLD) { + if (msg->size < PCMK__BZ2_THRESHOLD) { msg = pcmk__realloc(msg, msg->header.size); memcpy(msg->data, data, msg->size); diff --git a/lib/common/strings.c b/lib/common/strings.c index 55eacf72be4..eef42907439 100644 --- a/lib/common/strings.c +++ b/lib/common/strings.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. * @@ -859,7 +859,7 @@ pcmk__compress(const char *data, unsigned int length, unsigned int max, *result_len = max; rc = BZ2_bzBuffToBuffCompress(compressed, result_len, uncompressed, length, - CRM_BZ2_BLOCKS, 0, CRM_BZ2_WORK); + PCMK__BZ2_BLOCKS, 0, PCMK__BZ2_WORK); rc = pcmk__bzlib2rc(rc); free(uncompressed); From d1dd9cb3b9ac6f2632e173cc4297d6e22ef6a4bf Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 20 Mar 2025 18:03:27 -0700 Subject: [PATCH 097/186] API: libcrmcommon: Deprecate CRM_BZ2_BLOCKS Signed-off-by: Reid Wahl --- include/crm/common/xml_io.h | 1 - include/crm/common/xml_io_compat.h | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/include/crm/common/xml_io.h b/include/crm/common/xml_io.h index 940d0fdf12d..e6a2c85a615 100644 --- a/include/crm/common/xml_io.h +++ b/include/crm/common/xml_io.h @@ -28,7 +28,6 @@ extern "C" { * 10KB, compressing 184 of 1071 messages accounted for 23% of the total CPU * used by the cib. */ -#define CRM_BZ2_BLOCKS 4 #define CRM_BZ2_WORK 20 #define CRM_BZ2_THRESHOLD (128 * 1024) diff --git a/include/crm/common/xml_io_compat.h b/include/crm/common/xml_io_compat.h index 5b3b40841c4..00ec4769db7 100644 --- a/include/crm/common/xml_io_compat.h +++ b/include/crm/common/xml_io_compat.h @@ -24,6 +24,9 @@ extern "C" { * and the header itself, will be removed in a future release. */ +//! \deprecated Do not use +#define CRM_BZ2_BLOCKS 4 + //! \deprecated Do not use void save_xml_to_file(const xmlNode *xml, const char *desc, const char *filename); From 5e812c45d6dac2eb8e15418ca731aa5f0c1dd7a0 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 20 Mar 2025 18:04:34 -0700 Subject: [PATCH 098/186] API: libcrmcommon: Deprecate CRM_BZ2_WORK Signed-off-by: Reid Wahl --- include/crm/common/xml_io.h | 1 - include/crm/common/xml_io_compat.h | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/include/crm/common/xml_io.h b/include/crm/common/xml_io.h index e6a2c85a615..aba43da89a5 100644 --- a/include/crm/common/xml_io.h +++ b/include/crm/common/xml_io.h @@ -28,7 +28,6 @@ extern "C" { * 10KB, compressing 184 of 1071 messages accounted for 23% of the total CPU * used by the cib. */ -#define CRM_BZ2_WORK 20 #define CRM_BZ2_THRESHOLD (128 * 1024) #if !defined(PCMK_ALLOW_DEPRECATED) || (PCMK_ALLOW_DEPRECATED == 1) diff --git a/include/crm/common/xml_io_compat.h b/include/crm/common/xml_io_compat.h index 00ec4769db7..5b1d8e02aed 100644 --- a/include/crm/common/xml_io_compat.h +++ b/include/crm/common/xml_io_compat.h @@ -27,6 +27,9 @@ extern "C" { //! \deprecated Do not use #define CRM_BZ2_BLOCKS 4 +//! \deprecated Do not use +#define CRM_BZ2_WORK 20 + //! \deprecated Do not use void save_xml_to_file(const xmlNode *xml, const char *desc, const char *filename); From 81f6f1b158100ff107f7c0368ee5da0857377e30 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 20 Mar 2025 18:05:04 -0700 Subject: [PATCH 099/186] API: libcrmcommon: Deprecate CRM_BZ2_THRESHOLD Signed-off-by: Reid Wahl --- include/crm/common/xml_io.h | 10 ---------- include/crm/common/xml_io_compat.h | 3 +++ 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/include/crm/common/xml_io.h b/include/crm/common/xml_io.h index aba43da89a5..c8dbfd06086 100644 --- a/include/crm/common/xml_io.h +++ b/include/crm/common/xml_io.h @@ -20,16 +20,6 @@ extern "C" { * \ingroup core */ -/* Define compression parameters for IPC messages - * - * Compression costs a LOT, so we don't want to do it unless we're hitting - * message limits. Currently, we use 128KB as the threshold, because higher - * values don't play well with the heartbeat stack. With an earlier limit of - * 10KB, compressing 184 of 1071 messages accounted for 23% of the total CPU - * used by the cib. - */ -#define CRM_BZ2_THRESHOLD (128 * 1024) - #if !defined(PCMK_ALLOW_DEPRECATED) || (PCMK_ALLOW_DEPRECATED == 1) #include #endif diff --git a/include/crm/common/xml_io_compat.h b/include/crm/common/xml_io_compat.h index 5b1d8e02aed..b4154697341 100644 --- a/include/crm/common/xml_io_compat.h +++ b/include/crm/common/xml_io_compat.h @@ -30,6 +30,9 @@ extern "C" { //! \deprecated Do not use #define CRM_BZ2_WORK 20 +//! \deprecated Do not use +#define CRM_BZ2_THRESHOLD (128 * 1024) + //! \deprecated Do not use void save_xml_to_file(const xmlNode *xml, const char *desc, const char *filename); From 905b295e6a5c0d0c16d4c6f4485e1d5b42f62025 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 20 Mar 2025 18:39:02 -0700 Subject: [PATCH 100/186] Refactor: controller: Clean up controld_verify_stonith_watchdog_timeout pcmk__valid_stonith_watchdog_timeout() already calls crm_get_msec(value) if value is not NULL. The only thing we lose by skipping the pcmk__valid_stonith_watchdog_timeout() call for the "st_timeout == 0" case is a debug message. Signed-off-by: Reid Wahl --- daemons/controld/controld_fencing.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/daemons/controld/controld_fencing.c b/daemons/controld/controld_fencing.c index 68d5c5fd244..58a9ac62918 100644 --- a/daemons/controld/controld_fencing.c +++ b/daemons/controld/controld_fencing.c @@ -1002,16 +1002,16 @@ controld_execute_fence_action(pcmk__graph_t *graph, bool controld_verify_stonith_watchdog_timeout(const char *value) { - long long st_timeout = (value != NULL)? crm_get_msec(value) : 0; const char *our_nodename = controld_globals.cluster->priv->node_name; - if (st_timeout == 0 - || (stonith_api && (stonith_api->state != stonith_disconnected) && - stonith__watchdog_fencing_enabled_for_node_api(stonith_api, - our_nodename))) { - return pcmk__valid_stonith_watchdog_timeout(value); + if ((stonith_api == NULL) || (stonith_api->state == stonith_disconnected) + || !stonith__watchdog_fencing_enabled_for_node_api(stonith_api, + our_nodename)) { + // Anything is valid since it won't be used + return true; } - return true; + + return pcmk__valid_stonith_watchdog_timeout(value); } /* end stonith API client functions */ From e823f4879f1f65064e397f17422ce0a1660d26b4 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 20 Mar 2025 18:42:13 -0700 Subject: [PATCH 101/186] Low: controller, fencer: Ignore negative/unparsable pcmk_monitor_timeout Signed-off-by: Reid Wahl --- daemons/controld/controld_execd.c | 4 +++- daemons/fenced/fenced_commands.c | 5 ++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/daemons/controld/controld_execd.c b/daemons/controld/controld_execd.c index 24a7db34979..0238712bbfc 100644 --- a/daemons/controld/controld_execd.c +++ b/daemons/controld/controld_execd.c @@ -1637,7 +1637,9 @@ construct_op(const lrm_state_t *lrm_state, const xmlNode *rsc_op, if (op_timeout != NULL) { long long timeout_ms = crm_get_msec(op_timeout); - op->timeout = (int) QB_MIN(timeout_ms, INT_MAX); + if (timeout_ms >= 0) { + op->timeout = (int) QB_MIN(timeout_ms, INT_MAX); + } } } diff --git a/daemons/fenced/fenced_commands.c b/daemons/fenced/fenced_commands.c index fe6c4fdf5c0..6017bf9f2ce 100644 --- a/daemons/fenced/fenced_commands.c +++ b/daemons/fenced/fenced_commands.c @@ -236,7 +236,10 @@ get_action_timeout(const stonith_device_t *device, const char *action, value = g_hash_table_lookup(device->params, buffer); if (value) { long long timeout_ms = crm_get_msec(value); - return (int) QB_MIN(pcmk__timeout_ms2s(timeout_ms), INT_MAX); + + if (timeout_ms >= 0) { + return (int) QB_MIN(pcmk__timeout_ms2s(timeout_ms), INT_MAX); + } } } return default_timeout; From fcff6eb468accd3f2b68e787d4185f8b7ce0562b Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 20 Mar 2025 19:39:04 -0700 Subject: [PATCH 102/186] Refactor: libcrmcommon: Improve pcmk__get_sbd_watchdog_timeout() rc pcmk__accept_remote_connection() and pcmk__auto_stonith_watchdog_timeout() already ignore negative and zero values. The only other caller is pcmk__valid_stonith_watchdog_timeout(), in the else block. At that point, st_timeout must be positive. * If it had been negative, then it was set to a positive value in the earlier "if (st_timeout < 0)" block, via assignment from pcmk__auto_stonith_watchdog_timeout() * If it had been zero, it would have hit the "if (st_timeout == 0)" block in this if-else chain and would not have entered the else block. So if sbd_timeout had been negative there prior to this commit, then "st_timeout < sbd_timeout" still would not have been true, and we wouldn't have exited. Signed-off-by: Reid Wahl --- lib/common/watchdog.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/lib/common/watchdog.c b/lib/common/watchdog.c index 6fc28ba98f2..663daa846b7 100644 --- a/lib/common/watchdog.c +++ b/lib/common/watchdog.c @@ -1,5 +1,5 @@ /* - * Copyright 2013-2024 the Pacemaker project contributors + * Copyright 2013-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -20,6 +20,8 @@ #include #include +#include // QB_MIN(), QB_MAX() + static pid_t sbd_pid = 0; /*! @@ -193,13 +195,17 @@ pcmk__locate_sbd(void) return sbd_pid; } +// 0 <= return value <= LONG_MAX long pcmk__get_sbd_watchdog_timeout(void) { static long sbd_timeout = -2; if (sbd_timeout == -2) { - sbd_timeout = crm_get_msec(getenv("SBD_WATCHDOG_TIMEOUT")); + long long timeout = crm_get_msec(getenv("SBD_WATCHDOG_TIMEOUT")); + + timeout = QB_MAX(timeout, 0); + sbd_timeout = (long) QB_MIN(timeout, LONG_MAX); } return sbd_timeout; } @@ -227,12 +233,14 @@ pcmk__get_sbd_sync_resource_startup(void) return sync_resource_startup != 0; } +// 0 <= return value <= min(LONG_MAX, (2 * SBD timeout)) long pcmk__auto_stonith_watchdog_timeout(void) { long sbd_timeout = pcmk__get_sbd_watchdog_timeout(); + long long st_timeout = 2 * (long long) sbd_timeout; - return (sbd_timeout <= 0)? 0 : (2 * sbd_timeout); + return (long) QB_MIN(st_timeout, LONG_MAX); } bool @@ -246,6 +254,8 @@ pcmk__valid_stonith_watchdog_timeout(const char *value) if (st_timeout < 0) { st_timeout = pcmk__auto_stonith_watchdog_timeout(); + + // At this point, 0 <= sbd_timeout <= st_timeout crm_debug("Using calculated value %ld for " PCMK_OPT_STONITH_WATCHDOG_TIMEOUT " (%s)", st_timeout, value); @@ -267,6 +277,9 @@ pcmk__valid_stonith_watchdog_timeout(const char *value) long sbd_timeout = pcmk__get_sbd_watchdog_timeout(); if (st_timeout < sbd_timeout) { + /* Passed-in value for PCMK_OPT_STONITH_WATCHDOG_TIMEOUT was + * parsable, positive, and less than the SBD_WATCHDOG_TIMEOUT + */ crm_emerg("Shutting down: " PCMK_OPT_STONITH_WATCHDOG_TIMEOUT " (%s) too short (must be >%ldms)", value, sbd_timeout); From cacff6337d3a8de3d6de71639f47a22d20336164 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 20 Mar 2025 20:52:11 -0700 Subject: [PATCH 103/186] Low: libcrmcommon: Ensure stonith watchdog timeout is in long range Signed-off-by: Reid Wahl --- lib/common/watchdog.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/common/watchdog.c b/lib/common/watchdog.c index 663daa846b7..357c410f648 100644 --- a/lib/common/watchdog.c +++ b/lib/common/watchdog.c @@ -250,13 +250,18 @@ pcmk__valid_stonith_watchdog_timeout(const char *value) * specific string like "auto" (but not both) to mean "auto-calculate the * timeout." Reject other values that aren't parsable as timeouts. */ - long st_timeout = value? crm_get_msec(value) : 0; + long long st_timeout = 0; + + if (value != NULL) { + st_timeout = crm_get_msec(value); + st_timeout = QB_MIN(st_timeout, LONG_MAX); + } if (st_timeout < 0) { st_timeout = pcmk__auto_stonith_watchdog_timeout(); // At this point, 0 <= sbd_timeout <= st_timeout - crm_debug("Using calculated value %ld for " + crm_debug("Using calculated value %lld for " PCMK_OPT_STONITH_WATCHDOG_TIMEOUT " (%s)", st_timeout, value); } From caeb028e3d427ed8cac9c49cecb031161c93ec33 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 20 Mar 2025 20:02:07 -0700 Subject: [PATCH 104/186] Low: libcrmcommon: Fix integer overflow of alert timeouts The existing code casts the timeout to int before making sure it's greater than INT_MIN. Signed-off-by: Reid Wahl --- lib/common/alerts.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/common/alerts.c b/lib/common/alerts.c index 78c7ce0c55f..2e640a7bc7b 100644 --- a/lib/common/alerts.c +++ b/lib/common/alerts.c @@ -169,9 +169,10 @@ unpack_alert_options(xmlNode *xml, pcmk__alert_t *entry, guint *max_timeout) if (value != NULL) { long long timeout_ms = crm_get_msec(value); - entry->timeout = (int) QB_MIN(timeout_ms, INT_MAX); - if (entry->timeout <= 0) { - if (entry->timeout == 0) { + if (timeout_ms <= 0) { + entry->timeout = PCMK__ALERT_DEFAULT_TIMEOUT_MS; + + if (timeout_ms == 0) { crm_trace("Alert %s uses default timeout (%s)", entry->id, READABLE_DEFAULT); } else { @@ -179,8 +180,9 @@ unpack_alert_options(xmlNode *xml, pcmk__alert_t *entry, guint *max_timeout) "because '%s' is not a valid timeout", entry->id, value, READABLE_DEFAULT); } - entry->timeout = PCMK__ALERT_DEFAULT_TIMEOUT_MS; + } else { + entry->timeout = (int) QB_MIN(timeout_ms, INT_MAX); crm_trace("Alert %s uses timeout of %s", entry->id, pcmk__readable_interval(entry->timeout)); } From 6ec785045cc450693a61559d1238c54ff775829b Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 20 Mar 2025 21:02:08 -0700 Subject: [PATCH 105/186] Low: fencer: Prevent unsigned int overflow in get_action_timeout() Signed-off-by: Reid Wahl --- daemons/fenced/fenced_commands.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/daemons/fenced/fenced_commands.c b/daemons/fenced/fenced_commands.c index 6017bf9f2ce..c6af1781abf 100644 --- a/daemons/fenced/fenced_commands.c +++ b/daemons/fenced/fenced_commands.c @@ -238,7 +238,12 @@ get_action_timeout(const stonith_device_t *device, const char *action, long long timeout_ms = crm_get_msec(value); if (timeout_ms >= 0) { - return (int) QB_MIN(pcmk__timeout_ms2s(timeout_ms), INT_MAX); + int timeout_sec = 0; + + timeout_ms = QB_MIN(timeout_ms, UINT_MAX); + timeout_sec = pcmk__timeout_ms2s((guint) timeout_ms); + + return QB_MIN(timeout_sec, INT_MAX); } } } From 31fb20c811be5dec479979902905c0753022fee8 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 20 Mar 2025 22:21:21 -0700 Subject: [PATCH 106/186] Refactor: tools: Use unsigned int for tolerance in stonith_admin.c Signed-off-by: Reid Wahl --- tools/stonith_admin.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/stonith_admin.c b/tools/stonith_admin.c index b52e7deeb9e..4b8747daa29 100644 --- a/tools/stonith_admin.c +++ b/tools/stonith_admin.c @@ -54,7 +54,7 @@ struct { GHashTable *params; int fence_level; int timeout ; - long long tolerance_ms; + unsigned int tolerance_ms; int delay; char *agent; char *confirm_host; @@ -272,13 +272,13 @@ add_stonith_device(const gchar *option_name, const gchar *optarg, gpointer data, gboolean add_tolerance(const gchar *option_name, const gchar *optarg, gpointer data, GError **error) { // pcmk__request_fencing() expects an unsigned int - options.tolerance_ms = crm_get_msec(optarg); + long long tolerance_ms = crm_get_msec(optarg); - if (options.tolerance_ms < 0) { + if (tolerance_ms < 0) { crm_warn("Ignoring invalid tolerance '%s'", optarg); options.tolerance_ms = 0; } else { - options.tolerance_ms = QB_MIN(options.tolerance_ms, UINT_MAX); + options.tolerance_ms = (unsigned int) QB_MIN(tolerance_ms, UINT_MAX); } return TRUE; } From 4fc679137510989589e9d1c6fd2b200dc78ba228 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Fri, 21 Mar 2025 02:09:38 -0700 Subject: [PATCH 107/186] Test: libcrmcommon: Trigger overflow properly for crm_get_msec() This was an off-by-one. The number in the overflow input was LLONG_MAX. That's not an overflow and doesn't cause ERANGE. Signed-off-by: Reid Wahl --- lib/common/tests/strings/crm_get_msec_test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/common/tests/strings/crm_get_msec_test.c b/lib/common/tests/strings/crm_get_msec_test.c index 14b87cfaeca..33a375ddb90 100644 --- a/lib/common/tests/strings/crm_get_msec_test.c +++ b/lib/common/tests/strings/crm_get_msec_test.c @@ -69,7 +69,7 @@ good_input(void **state) { static void overflow(void **state) { - assert_int_equal(crm_get_msec("9223372036854775807s"), LLONG_MAX); + assert_int_equal(crm_get_msec("9223372036854775808s"), LLONG_MAX); } PCMK__UNIT_TEST(NULL, NULL, From fac495fafc62afe482cce525f18a46e83356fcff Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 20 Mar 2025 20:49:40 -0700 Subject: [PATCH 108/186] Refactor: libcrmcommon: New pcmk__parse_ms() To replace crm_get_msec(). There are a lot of parsing improvements that would be welcome (see T841), but we'll have to be careful about making them. We're parsing user inputs with this function. So changing how we respond to invalid values, values that contain some garbage at the end, etc., affects user- facing behavior, even though the function is internal. This function basically preserves existing behavior for now, including that it doesn't yet allow negative values. One key difference is that we no longer use PCMK__PARSE_INT_DEFAULT inside it in any way. The output argument (dest) remains unchanged if there is any error besides ERANGE. Also improve unit tests for overflow, and add a test for negative input that doesn't overflow. Ref T841 Signed-off-by: Reid Wahl --- daemons/attrd/attrd_attributes.c | 17 ++- daemons/controld/controld_execd.c | 6 +- daemons/fenced/fenced_cib.c | 13 +- daemons/fenced/fenced_commands.c | 6 +- include/crm/common/strings_internal.h | 3 +- lib/common/alerts.c | 6 +- lib/common/fuzzers/strings_fuzzer.c | 5 +- lib/common/strings.c | 122 +++++++++++++++++- lib/common/tests/strings/Makefile.am | 6 +- lib/common/tests/strings/crm_get_msec_test.c | 78 ----------- .../tests/strings/pcmk__parse_ms_test.c | 105 +++++++++++++++ lib/common/watchdog.c | 21 ++- lib/fencing/st_lha.c | 4 +- lib/pengine/pe_actions.c | 15 ++- tools/crm_mon.c | 20 ++- tools/crm_resource.c | 5 +- tools/stonith_admin.c | 8 +- 17 files changed, 296 insertions(+), 144 deletions(-) delete mode 100644 lib/common/tests/strings/crm_get_msec_test.c create mode 100644 lib/common/tests/strings/pcmk__parse_ms_test.c diff --git a/daemons/attrd/attrd_attributes.c b/daemons/attrd/attrd_attributes.c index e14a607133c..d915d64de99 100644 --- a/daemons/attrd/attrd_attributes.c +++ b/daemons/attrd/attrd_attributes.c @@ -60,14 +60,14 @@ attrd_create_attribute(xmlNode *xml) } if (dampen_s != NULL) { - dampen = crm_get_msec(dampen_s); - } + if ((pcmk__parse_ms(dampen_s, &dampen) != pcmk_rc_ok) || (dampen < 0)) { + crm_warn("Ignoring invalid delay %s for attribute %s", dampen_s, + a->id); - if (dampen > 0) { - a->timeout_ms = (int) QB_MIN(dampen, INT_MAX); - a->timer = attrd_add_timer(a->id, a->timeout_ms, a); - } else if (dampen < 0) { - crm_warn("Ignoring invalid delay %s for attribute %s", dampen_s, a->id); + } else if (dampen > 0) { + a->timeout_ms = (int) QB_MIN(dampen, INT_MAX); + a->timer = attrd_add_timer(a->id, a->timeout_ms, a); + } } crm_trace("Created attribute %s with %s write delay and %s CIB user", @@ -91,8 +91,7 @@ attrd_update_dampening(attribute_t *a, xmlNode *xml, const char *attr) return EINVAL; } - dampen = crm_get_msec(dvalue); - if (dampen < 0) { + if ((pcmk__parse_ms(dvalue, &dampen) != pcmk_rc_ok) || (dampen < 0)) { crm_warn("Could not update %s: invalid delay value %dms (%s)", attr, dampen, dvalue); return EINVAL; diff --git a/daemons/controld/controld_execd.c b/daemons/controld/controld_execd.c index 0238712bbfc..8a6a483440f 100644 --- a/daemons/controld/controld_execd.c +++ b/daemons/controld/controld_execd.c @@ -1635,9 +1635,11 @@ construct_op(const lrm_state_t *lrm_state, const xmlNode *rsc_op, op_timeout = g_hash_table_lookup(params, "pcmk_monitor_timeout"); if (op_timeout != NULL) { - long long timeout_ms = crm_get_msec(op_timeout); + long long timeout_ms = 0; + + if ((pcmk__parse_ms(op_timeout, &timeout_ms) == pcmk_rc_ok) + && (timeout_ms >= 0)) { - if (timeout_ms >= 0) { op->timeout = (int) QB_MIN(timeout_ms, INT_MAX); } } diff --git a/daemons/fenced/fenced_cib.c b/daemons/fenced/fenced_cib.c index 2953509712b..a183ad8d799 100644 --- a/daemons/fenced/fenced_cib.c +++ b/daemons/fenced/fenced_cib.c @@ -172,7 +172,6 @@ fencing_topology_init(void) static void update_stonith_watchdog_timeout_ms(xmlNode *cib) { - long long timeout_ms = 0; xmlNode *stonith_watchdog_xml = NULL; const char *value = NULL; @@ -183,15 +182,13 @@ update_stonith_watchdog_timeout_ms(xmlNode *cib) if (stonith_watchdog_xml) { value = pcmk__xe_get(stonith_watchdog_xml, PCMK_XA_VALUE); } - if (value) { - timeout_ms = crm_get_msec(value); - } - if (timeout_ms < 0) { - timeout_ms = pcmk__auto_stonith_watchdog_timeout(); - } + if ((value != NULL) + && ((pcmk__parse_ms(value, &stonith_watchdog_timeout_ms) != pcmk_rc_ok) + || (stonith_watchdog_timeout_ms < 0))) { - stonith_watchdog_timeout_ms = timeout_ms; + stonith_watchdog_timeout_ms = pcmk__auto_stonith_watchdog_timeout(); + } } /*! diff --git a/daemons/fenced/fenced_commands.c b/daemons/fenced/fenced_commands.c index c6af1781abf..a3c12a13de7 100644 --- a/daemons/fenced/fenced_commands.c +++ b/daemons/fenced/fenced_commands.c @@ -235,9 +235,11 @@ get_action_timeout(const stonith_device_t *device, const char *action, snprintf(buffer, sizeof(buffer), "pcmk_%s_timeout", action); value = g_hash_table_lookup(device->params, buffer); if (value) { - long long timeout_ms = crm_get_msec(value); + long long timeout_ms = 0; + + if ((pcmk__parse_ms(value, &timeout_ms) == pcmk_rc_ok) + && (timeout_ms >= 0)) { - if (timeout_ms >= 0) { int timeout_sec = 0; timeout_ms = QB_MIN(timeout_ms, UINT_MAX); diff --git a/include/crm/common/strings_internal.h b/include/crm/common/strings_internal.h index 5d4c0de6050..d62606645a3 100644 --- a/include/crm/common/strings_internal.h +++ b/include/crm/common/strings_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. * @@ -54,6 +54,7 @@ int pcmk__scan_ll(const char *text, long long *result, long long default_value); int pcmk__scan_min_int(const char *text, int *result, int minimum); int pcmk__scan_port(const char *text, int *port); int pcmk__parse_ll_range(const char *srcstring, long long *start, long long *end); +int pcmk__parse_ms(const char *input, long long *result); GHashTable *pcmk__strkey_table(GDestroyNotify key_destroy_func, GDestroyNotify value_destroy_func); diff --git a/lib/common/alerts.c b/lib/common/alerts.c index 2e640a7bc7b..bca3325086e 100644 --- a/lib/common/alerts.c +++ b/lib/common/alerts.c @@ -167,9 +167,11 @@ unpack_alert_options(xmlNode *xml, pcmk__alert_t *entry, guint *max_timeout) value = g_hash_table_lookup(config_hash, PCMK_META_TIMEOUT); if (value != NULL) { - long long timeout_ms = crm_get_msec(value); + long long timeout_ms = 0; + + if ((pcmk__parse_ms(value, &timeout_ms) != pcmk_rc_ok) + || (timeout_ms <= 0)) { - if (timeout_ms <= 0) { entry->timeout = PCMK__ALERT_DEFAULT_TIMEOUT_MS; if (timeout_ms == 0) { diff --git a/lib/common/fuzzers/strings_fuzzer.c b/lib/common/fuzzers/strings_fuzzer.c index f8dfc8e39fa..d652df60b59 100644 --- a/lib/common/fuzzers/strings_fuzzer.c +++ b/lib/common/fuzzers/strings_fuzzer.c @@ -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. * @@ -22,6 +22,7 @@ LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { char *ns = NULL; guint res = 0U; + long long msec = 0LL; if (size < 10) { return -1; // Do not add input to testing corpus @@ -33,7 +34,7 @@ LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) pcmk__numeric_strcasecmp(ns, ns); pcmk__trim(ns); pcmk_parse_interval_spec(ns, &res); - crm_get_msec(ns); + pcmk__parse_ms(ns, &msec); free(ns); return 0; diff --git a/lib/common/strings.c b/lib/common/strings.c index eef42907439..c19c7bd3feb 100644 --- a/lib/common/strings.c +++ b/lib/common/strings.c @@ -440,13 +440,12 @@ crm_get_msec(const char *input) * \param[in] input Pacemaker time interval specification (a bare number * of seconds; a number with a unit, optionally with * whitespace before and/or after the number; or an ISO - * 8601 duration) + * 8601 duration) (can be \c NULL) * \param[out] result_ms Where to store milliseconds equivalent of \p input on * success (limited to the range of an unsigned integer), * or 0 if \p input is \c NULL or invalid * - * \return Standard Pacemaker return code (specifically, \c pcmk_rc_ok if - * \p input is valid or \c NULL, and \c EINVAL otherwise) + * \return Standard Pacemaker return code */ int pcmk_parse_interval_spec(const char *input, guint *result_ms) @@ -469,14 +468,18 @@ pcmk_parse_interval_spec(const char *input, guint *result_ms) } } else { - msec = crm_get_msec(input); + rc = pcmk__parse_ms(input, &msec); } if (msec < 0) { crm_warn("Using 0 instead of invalid interval specification '%s'", input); msec = 0; - rc = EINVAL; + + if (rc == pcmk_rc_ok) { + // Preserve any error from pcmk__parse_ms() + rc = EINVAL; + } } done: @@ -964,6 +967,115 @@ pcmk__parse_ll_range(const char *srcstring, long long *start, long long *end) return pcmk_rc_ok; } +/*! + * \internal + * \brief Parse a time and units string into a milliseconds value + * + * \param[in] input String with a nonnegative number and optional unit + * (optionally with whitespace before and/or after the + * number). If absent, the unit defaults to seconds. + * \param[out] result Where to store result in milliseconds (unchanged on error + * except \c ERANGE) + * + * \return Standard Pacemaker return code + */ +int +pcmk__parse_ms(const char *input, long long *result) +{ + long long local_result = 0; + char *units = NULL; // Do not free; will point to part of input + long long multiplier = 1000; + long long divisor = 1; + int rc = pcmk_rc_ok; + + CRM_CHECK(input != NULL, return EINVAL); + + // Skip initial whitespace + for (; isspace(*input); input++); + + rc = scan_ll(input, &local_result, 0, &units); + + if (local_result < 0) { + crm_warn("'%s' is not a valid time duration: Negative", input); + return pcmk_rc_bad_input; + } + + if (rc == ERANGE) { + crm_warn("'%s' will be clipped to %lld", input, local_result); + + /* Continue through rest of body before returning ERANGE + * + * @COMPAT Improve handling of overflow. Units won't necessarily be + * respected right now, for one thing. + */ + + } else if (rc != pcmk_rc_ok) { + crm_warn("'%s' is not a valid time duration: %s", input, + pcmk_rc_str(rc)); + return rc; + } + + /* If the number is a decimal, scan_ll() reads only the integer part. Skip + * any remaining digits or decimal characters. + * + * @COMPAT Well-formed and malformed decimals are both accepted inputs. For + * example, "3.14 ms" and "3.1.4 ms" are treated the same as "3ms" and + * parsed successfully. At a compatibility break, decide if this is still + * desired. + */ + for (; isdigit(*units) || (*units == '.'); units++); + + // Skip any additional whitespace after the number + for (; isspace(*units); units++); + + /* @COMPAT Use exact comparisons. Currently, we match too liberally, and the + * second strncasecmp() in each case is redundant. + */ + if ((*units == '\0') + || (strncasecmp(units, "s", 1) == 0) + || (strncasecmp(units, "sec", 3) == 0)) { + multiplier = 1000; + divisor = 1; + + } else if ((strncasecmp(units, "ms", 2) == 0) + || (strncasecmp(units, "msec", 4) == 0)) { + multiplier = 1; + divisor = 1; + + } else if ((strncasecmp(units, "us", 2) == 0) + || (strncasecmp(units, "usec", 4) == 0)) { + multiplier = 1; + divisor = 1000; + + } else if ((strncasecmp(units, "m", 1) == 0) + || (strncasecmp(units, "min", 3) == 0)) { + multiplier = 60 * 1000; + divisor = 1; + + } else if ((strncasecmp(units, "h", 1) == 0) + || (strncasecmp(units, "hr", 2) == 0)) { + multiplier = 60 * 60 * 1000; + divisor = 1; + + } else { + // Invalid units + return pcmk_rc_bad_input; + } + + if (result == NULL) { + return rc; + } + + // Apply units, capping at LLONG_MAX + if (local_result > (LLONG_MAX / multiplier)) { + *result = LLONG_MAX; + } else { + *result = (local_result * multiplier) / divisor; + } + + return rc; +} + /*! * \internal * \brief Find a string in a list of strings diff --git a/lib/common/tests/strings/Makefile.am b/lib/common/tests/strings/Makefile.am index e61f41f51d2..a6f32682081 100644 --- a/lib/common/tests/strings/Makefile.am +++ b/lib/common/tests/strings/Makefile.am @@ -1,5 +1,5 @@ # -# Copyright 2020-2024 the Pacemaker project contributors +# Copyright 2020-2025 the Pacemaker project contributors # # The version control history for this file may have further details. # @@ -12,8 +12,7 @@ include $(top_srcdir)/mk/tap.mk include $(top_srcdir)/mk/unittest.mk # Add "_test" to the end of all test program names to simplify .gitignore. -check_PROGRAMS = crm_get_msec_test \ - crm_is_true_test \ +check_PROGRAMS = crm_is_true_test \ crm_str_to_boolean_test \ pcmk__add_word_test \ pcmk__btoa_test \ @@ -23,6 +22,7 @@ check_PROGRAMS = crm_get_msec_test \ pcmk__guint_from_hash_test \ pcmk__numeric_strcasecmp_test \ pcmk__parse_ll_range_test \ + pcmk__parse_ms_test \ pcmk__s_test \ pcmk__scan_double_test \ pcmk__scan_ll_test \ diff --git a/lib/common/tests/strings/crm_get_msec_test.c b/lib/common/tests/strings/crm_get_msec_test.c deleted file mode 100644 index 33a375ddb90..00000000000 --- a/lib/common/tests/strings/crm_get_msec_test.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2021-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 - -static void -bad_input(void **state) { - assert_int_equal(crm_get_msec(NULL), PCMK__PARSE_INT_DEFAULT); - assert_int_equal(crm_get_msec(" "), PCMK__PARSE_INT_DEFAULT); - assert_int_equal(crm_get_msec("abcxyz"), PCMK__PARSE_INT_DEFAULT); - assert_int_equal(crm_get_msec("100xs"), PCMK__PARSE_INT_DEFAULT); - assert_int_equal(crm_get_msec(" 100 xs "), PCMK__PARSE_INT_DEFAULT); - assert_int_equal(crm_get_msec("-100ms"), PCMK__PARSE_INT_DEFAULT); - - assert_int_equal(crm_get_msec("3.xs"), PCMK__PARSE_INT_DEFAULT); - assert_int_equal(crm_get_msec(" 3. xs "), PCMK__PARSE_INT_DEFAULT); - assert_int_equal(crm_get_msec("3.14xs"), PCMK__PARSE_INT_DEFAULT); - assert_int_equal(crm_get_msec(" 3.14 xs "), PCMK__PARSE_INT_DEFAULT); -} - -static void -good_input(void **state) { - assert_int_equal(crm_get_msec("100"), 100000); - assert_int_equal(crm_get_msec(" 100 "), 100000); - assert_int_equal(crm_get_msec("\t100\n"), 100000); - - assert_int_equal(crm_get_msec("100ms"), 100); - assert_int_equal(crm_get_msec(" 100 ms "), 100); - assert_int_equal(crm_get_msec("100 MSEC"), 100); - assert_int_equal(crm_get_msec("1000US"), 1); - assert_int_equal(crm_get_msec("1000usec"), 1); - assert_int_equal(crm_get_msec("12s"), 12000); - assert_int_equal(crm_get_msec("12 sec"), 12000); - assert_int_equal(crm_get_msec("1m"), 60000); - assert_int_equal(crm_get_msec("13 min"), 780000); - assert_int_equal(crm_get_msec("2\th"), 7200000); - assert_int_equal(crm_get_msec("1 hr"), 3600000); - - assert_int_equal(crm_get_msec("3."), 3000); - assert_int_equal(crm_get_msec(" 3. ms "), 3); - assert_int_equal(crm_get_msec("3.14"), 3000); - assert_int_equal(crm_get_msec(" 3.14 ms "), 3); - - // Questionable - assert_int_equal(crm_get_msec("3.14."), 3000); - assert_int_equal(crm_get_msec(" 3.14. ms "), 3); - assert_int_equal(crm_get_msec("3.14.159"), 3000); - assert_int_equal(crm_get_msec(" 3.14.159 "), 3000); - assert_int_equal(crm_get_msec("3.14.159ms"), 3); - assert_int_equal(crm_get_msec(" 3.14.159 ms "), 3); - - // Questionable - assert_int_equal(crm_get_msec(" 100 mshr "), 100); - assert_int_equal(crm_get_msec(" 100 ms hr "), 100); - assert_int_equal(crm_get_msec(" 100 sasdf "), 100000); - assert_int_equal(crm_get_msec(" 100 s asdf "), 100000); - assert_int_equal(crm_get_msec(" 3.14 shour "), 3000); - assert_int_equal(crm_get_msec(" 3.14 s hour "), 3000); - assert_int_equal(crm_get_msec(" 3.14 ms!@#$ "), 3); -} - -static void -overflow(void **state) { - assert_int_equal(crm_get_msec("9223372036854775808s"), LLONG_MAX); -} - -PCMK__UNIT_TEST(NULL, NULL, - cmocka_unit_test(bad_input), - cmocka_unit_test(good_input), - cmocka_unit_test(overflow)) diff --git a/lib/common/tests/strings/pcmk__parse_ms_test.c b/lib/common/tests/strings/pcmk__parse_ms_test.c new file mode 100644 index 00000000000..3f03bd049df --- /dev/null +++ b/lib/common/tests/strings/pcmk__parse_ms_test.c @@ -0,0 +1,105 @@ +/* + * Copyright 2021-2025 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 + +//! Magic initial value to test whether a "result" output variable has changed +static const long long magic = -12345678; + +static void +assert_parse_ms(const char *input, int expected_rc, long long expected_result) +{ + long long result = magic; + + assert_int_equal(pcmk__parse_ms(input, &result), expected_rc); + assert_in_range(result, expected_result, expected_result); +} + +static void +bad_input(void **state) +{ + assert_parse_ms(NULL, EINVAL, magic); + assert_parse_ms(" ", pcmk_rc_bad_input, magic); + assert_parse_ms("abcxyz", pcmk_rc_bad_input, magic); + assert_parse_ms("100xs", pcmk_rc_bad_input, magic); + assert_parse_ms(" 100 xs ", pcmk_rc_bad_input, magic); + + // @FIXME Should parse successfully as negative value + assert_parse_ms("-100ms", pcmk_rc_bad_input, magic); + + assert_parse_ms("3.xs", pcmk_rc_bad_input, magic); + assert_parse_ms(" 3. xs ", pcmk_rc_bad_input, magic); + assert_parse_ms("3.14xs", pcmk_rc_bad_input, magic); + assert_parse_ms(" 3.14 xs ", pcmk_rc_bad_input, magic); +} + +static void +good_input(void **state) +{ + assert_parse_ms("100", pcmk_rc_ok, 100000); + assert_parse_ms(" 100 ", pcmk_rc_ok, 100000); + assert_parse_ms("\t100\n", pcmk_rc_ok, 100000); + + assert_parse_ms("100ms", pcmk_rc_ok, 100); + assert_parse_ms(" 100 ms ", pcmk_rc_ok, 100); + assert_parse_ms("100 MSEC", pcmk_rc_ok, 100); + assert_parse_ms("1000US", pcmk_rc_ok, 1); + assert_parse_ms("1000usec", pcmk_rc_ok, 1); + assert_parse_ms("12s", pcmk_rc_ok, 12000); + assert_parse_ms("12 sec", pcmk_rc_ok, 12000); + assert_parse_ms("1m", pcmk_rc_ok, 60000); + assert_parse_ms("13 min", pcmk_rc_ok, 780000); + assert_parse_ms("2\th", pcmk_rc_ok, 7200000); + assert_parse_ms("1 hr", pcmk_rc_ok, 3600000); + + assert_parse_ms("3.", pcmk_rc_ok, 3000); + assert_parse_ms(" 3. ms ", pcmk_rc_ok, 3); + assert_parse_ms("3.14", pcmk_rc_ok, 3000); + assert_parse_ms(" 3.14 ms ", pcmk_rc_ok, 3); + + // Questionable + assert_parse_ms("3.14.", pcmk_rc_ok, 3000); + assert_parse_ms(" 3.14. ms ", pcmk_rc_ok, 3); + assert_parse_ms("3.14.159", pcmk_rc_ok, 3000); + assert_parse_ms(" 3.14.159 ", pcmk_rc_ok, 3000); + assert_parse_ms("3.14.159ms", pcmk_rc_ok, 3); + assert_parse_ms(" 3.14.159 ms ", pcmk_rc_ok, 3); + + // Questionable + assert_parse_ms(" 100 mshr ", pcmk_rc_ok, 100); + assert_parse_ms(" 100 ms hr ", pcmk_rc_ok, 100); + assert_parse_ms(" 100 sasdf ", pcmk_rc_ok, 100000); + assert_parse_ms(" 100 s asdf ", pcmk_rc_ok, 100000); + assert_parse_ms(" 3.14 shour ", pcmk_rc_ok, 3000); + assert_parse_ms(" 3.14 s hour ", pcmk_rc_ok, 3000); + assert_parse_ms(" 3.14 ms!@#$ ", pcmk_rc_ok, 3); +} + +static void +overflow(void **state) +{ + char *input = NULL; + + input = crm_strdup_printf("%llu", (unsigned long long) LLONG_MAX + 1); + assert_parse_ms(input, ERANGE, LLONG_MAX); + free(input); + + // @FIXME Should parse successfully with ERANGE + // Hopefully we can rely on two's complement integers + input = crm_strdup_printf("-%llu", (unsigned long long) LLONG_MIN + 1); + assert_parse_ms(input, pcmk_rc_bad_input, magic); + free(input); +} + +PCMK__UNIT_TEST(NULL, NULL, + cmocka_unit_test(bad_input), + cmocka_unit_test(good_input), + cmocka_unit_test(overflow)) diff --git a/lib/common/watchdog.c b/lib/common/watchdog.c index 357c410f648..64605d34b2c 100644 --- a/lib/common/watchdog.c +++ b/lib/common/watchdog.c @@ -199,13 +199,21 @@ pcmk__locate_sbd(void) long pcmk__get_sbd_watchdog_timeout(void) { - static long sbd_timeout = -2; + static long sbd_timeout = -1; - if (sbd_timeout == -2) { - long long timeout = crm_get_msec(getenv("SBD_WATCHDOG_TIMEOUT")); + if (sbd_timeout == -1) { + const char *timeout = getenv("SBD_WATCHDOG_TIMEOUT"); + long long timeout_ms = 0; - timeout = QB_MAX(timeout, 0); - sbd_timeout = (long) QB_MIN(timeout, LONG_MAX); + if ((timeout != NULL) + && (pcmk__parse_ms(timeout, &timeout_ms) == pcmk_rc_ok) + && (timeout_ms >= 0)) { + + sbd_timeout = (long) QB_MIN(timeout_ms, LONG_MAX); + + } else { + sbd_timeout = 0; + } } return sbd_timeout; } @@ -252,8 +260,7 @@ pcmk__valid_stonith_watchdog_timeout(const char *value) */ long long st_timeout = 0; - if (value != NULL) { - st_timeout = crm_get_msec(value); + if ((value != NULL) && (pcmk__parse_ms(value, &st_timeout) == pcmk_rc_ok)) { st_timeout = QB_MIN(st_timeout, LONG_MAX); } diff --git a/lib/fencing/st_lha.c b/lib/fencing/st_lha.c index 7c42c69270a..25189e41c9d 100644 --- a/lib/fencing/st_lha.c +++ b/lib/fencing/st_lha.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. * @@ -256,7 +256,7 @@ stonith__lha_metadata(const char *agent, int timeout, char **output) pcmk__xml_escape_text); } - /* @TODO This needs a string that's parsable by crm_get_msec(). In + /* @TODO This needs a string that's parsable by pcmk__parse_ms(). In * general, pcmk__readable_interval() doesn't provide that. It works * here because PCMK_DEFAULT_ACTION_TIMEOUT_MS is 20000 -> "20s". */ diff --git a/lib/pengine/pe_actions.c b/lib/pengine/pe_actions.c index 7720b777804..ea3703037a6 100644 --- a/lib/pengine/pe_actions.c +++ b/lib/pengine/pe_actions.c @@ -537,9 +537,11 @@ validate_on_fail(const pcmk_resource_t *rsc, const char *action_name, static int unpack_timeout(const char *value) { - long long timeout_ms = crm_get_msec(value); + long long timeout_ms = 0; + + if ((value == NULL) || (pcmk__parse_ms(value, &timeout_ms) != pcmk_rc_ok) + || (timeout_ms <= 0)) { - if (timeout_ms <= 0) { timeout_ms = PCMK_DEFAULT_ACTION_TIMEOUT_MS; } return (int) QB_MIN(timeout_ms, INT_MAX); @@ -596,15 +598,14 @@ unpack_start_delay(const char *value, GHashTable *meta) return 0; } - start_delay_ms = crm_get_msec(value); - start_delay_ms = QB_MIN(start_delay_ms, INT_MAX); - if (start_delay_ms < 0) { - start_delay_ms = 0; + if (pcmk__parse_ms(value, &start_delay_ms) == pcmk_rc_ok) { + start_delay_ms = QB_MAX(start_delay_ms, 0); + start_delay_ms = QB_MIN(start_delay_ms, INT_MAX); } if (meta != NULL) { g_hash_table_replace(meta, strdup(PCMK_META_START_DELAY), - pcmk__itoa(start_delay_ms)); + pcmk__itoa((int) start_delay_ms)); } return (int) start_delay_ms; diff --git a/tools/crm_mon.c b/tools/crm_mon.c index fe7f93056f3..0c07c6b8a89 100644 --- a/tools/crm_mon.c +++ b/tools/crm_mon.c @@ -506,20 +506,18 @@ print_timing_cb(const gchar *option_name, const gchar *optarg, gpointer data, GE static gboolean reconnect_cb(const gchar *option_name, const gchar *optarg, gpointer data, GError **err) { - int rc = crm_get_msec(optarg); - - if (rc == -1) { - g_set_error(err, PCMK__EXITC_ERROR, CRM_EX_INVALID_PARAM, "Invalid value for -i: %s", optarg); + if (pcmk__parse_ms(optarg, NULL) != pcmk_rc_ok) { + g_set_error(err, PCMK__EXITC_ERROR, CRM_EX_INVALID_PARAM, + "Invalid value for -i: %s", optarg); return FALSE; - } else { - pcmk_parse_interval_spec(optarg, &options.reconnect_ms); - - if (options.exec_mode != mon_exec_daemonized) { - // Reconnect interval applies to daemonized too, so don't override - options.exec_mode = mon_exec_update; - } } + pcmk_parse_interval_spec(optarg, &options.reconnect_ms); + + if (options.exec_mode != mon_exec_daemonized) { + // Reconnect interval applies to daemonized too, so don't override + options.exec_mode = mon_exec_update; + } return TRUE; } diff --git a/tools/crm_resource.c b/tools/crm_resource.c index b6fc25a3552..f5c6edee706 100644 --- a/tools/crm_resource.c +++ b/tools/crm_resource.c @@ -521,9 +521,10 @@ static gboolean timeout_cb(const gchar *option_name, const gchar *optarg, gpointer data, GError **error) { - long long timeout_ms = crm_get_msec(optarg); + long long timeout_ms = 0; - if (timeout_ms < 0) { + if ((pcmk__parse_ms(optarg, &timeout_ms) != pcmk_rc_ok) + || (timeout_ms < 0)) { return FALSE; } options.timeout_ms = (guint) QB_MIN(timeout_ms, UINT_MAX); diff --git a/tools/stonith_admin.c b/tools/stonith_admin.c index 4b8747daa29..ba9180f632e 100644 --- a/tools/stonith_admin.c +++ b/tools/stonith_admin.c @@ -272,11 +272,13 @@ add_stonith_device(const gchar *option_name, const gchar *optarg, gpointer data, gboolean add_tolerance(const gchar *option_name, const gchar *optarg, gpointer data, GError **error) { // pcmk__request_fencing() expects an unsigned int - long long tolerance_ms = crm_get_msec(optarg); + long long tolerance_ms = 0; - if (tolerance_ms < 0) { + if ((pcmk__parse_ms(optarg, &tolerance_ms) != pcmk_rc_ok) + || (tolerance_ms < 0)) { + + // @COMPAT Treat as an error and return FALSE? crm_warn("Ignoring invalid tolerance '%s'", optarg); - options.tolerance_ms = 0; } else { options.tolerance_ms = (unsigned int) QB_MIN(tolerance_ms, UINT_MAX); } From 129d1b8519be1edc7608a2129fbdbddc811bb37e Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Fri, 21 Mar 2025 02:23:34 -0700 Subject: [PATCH 109/186] API: libcrmcommon: Deprecate crm_get_msec() Signed-off-by: Reid Wahl --- include/crm/common/Makefile.am | 1 + include/crm/common/strings.h | 9 +- include/crm/common/strings_compat.h | 33 +++++ lib/common/strings.c | 192 ++++++++++++++-------------- 4 files changed, 134 insertions(+), 101 deletions(-) create mode 100644 include/crm/common/strings_compat.h diff --git a/include/crm/common/Makefile.am b/include/crm/common/Makefile.am index e0a2c40ac3c..6b5829c211a 100644 --- a/include/crm/common/Makefile.am +++ b/include/crm/common/Makefile.am @@ -42,6 +42,7 @@ header_HEADERS = acl.h \ scores.h \ scores_compat.h \ strings.h \ + strings_compat.h \ util.h \ util_compat.h \ xml.h \ diff --git a/include/crm/common/strings.h b/include/crm/common/strings.h index a82ce033f46..6ab93991082 100644 --- a/include/crm/common/strings.h +++ b/include/crm/common/strings.h @@ -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. * @@ -22,9 +22,6 @@ extern "C" { * \ingroup core */ -// NOTE: sbd (as of at least 1.5.2) uses this -long long crm_get_msec(const char *input); - int pcmk_parse_interval_spec(const char *input, guint *result_ms); // NOTE: sbd (as of at least 1.5.2) uses this @@ -35,6 +32,10 @@ int crm_str_to_boolean(const char *s, int *ret); // NOTE: sbd (as of at least 1.5.2) uses this char *crm_strdup_printf(char const *format, ...) G_GNUC_PRINTF(1, 2); +#if !defined(PCMK_ALLOW_DEPRECATED) || (PCMK_ALLOW_DEPRECATED == 1) +#include +#endif + #ifdef __cplusplus } #endif diff --git a/include/crm/common/strings_compat.h b/include/crm/common/strings_compat.h new file mode 100644 index 00000000000..377ff30b43d --- /dev/null +++ b/include/crm/common/strings_compat.h @@ -0,0 +1,33 @@ +/* + * Copyright 2004-2025 the Pacemaker project contributors + * + * The version control history for this file may have further details. + * + * This source code is licensed under the GNU Lesser General Public License + * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY. + */ + +#ifndef PCMK__CRM_COMMON_STRINGS_COMPAT__H +#define PCMK__CRM_COMMON_STRINGS_COMPAT__H + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file + * \brief Deprecated Pacemaker strings API + * \ingroup core + * \deprecated Do not include this header directly. The XML APIs in this header, + * and the header itself, will be removed in a future release. + */ + +// NOTE: sbd (as of at least 1.5.2) uses this +//! \deprecated Do not use +long long crm_get_msec(const char *input); + +#ifdef __cplusplus +} +#endif + +#endif // PCMK__CRM_COMMON_STRINGS_COMPAT__H diff --git a/lib/common/strings.c b/lib/common/strings.c index c19c7bd3feb..e8669b6c16c 100644 --- a/lib/common/strings.c +++ b/lib/common/strings.c @@ -337,103 +337,6 @@ pcmk__guint_from_hash(GHashTable *table, const char *key, guint default_val, return pcmk_rc_ok; } -/*! - * \brief Parse a time+units string and return milliseconds equivalent - * - * \param[in] input String with a nonnegative number and optional unit - * (optionally with whitespace before and/or after the - * number). If missing, the unit defaults to seconds. - * - * \return Milliseconds corresponding to string expression, or - * \c PCMK__PARSE_INT_DEFAULT on error - */ -long long -crm_get_msec(const char *input) -{ - char *units = NULL; // Do not free; will point to part of input - long long multiplier = 1000; - long long divisor = 1; - long long msec = PCMK__PARSE_INT_DEFAULT; - int rc = pcmk_rc_ok; - - if (input == NULL) { - return PCMK__PARSE_INT_DEFAULT; - } - - // Skip initial whitespace - while (isspace(*input)) { - input++; - } - - rc = scan_ll(input, &msec, PCMK__PARSE_INT_DEFAULT, &units); - - if ((rc == ERANGE) && (msec > 0)) { - crm_warn("'%s' will be clipped to %lld", input, msec); - - } else if ((rc != pcmk_rc_ok) || (msec < 0)) { - crm_warn("'%s' is not a valid time duration: %s", - input, ((rc == pcmk_rc_ok)? "Negative" : pcmk_rc_str(rc))); - return PCMK__PARSE_INT_DEFAULT; - } - - /* If the number is a decimal, scan_ll() reads only the integer part. Skip - * any remaining digits or decimal characters. - * - * @COMPAT Well-formed and malformed decimals are both accepted inputs. For - * example, "3.14 ms" and "3.1.4 ms" are treated the same as "3ms" and - * parsed successfully. At a compatibility break, decide if this is still - * desired. - */ - while (isdigit(*units) || (*units == '.')) { - units++; - } - - // Skip any additional whitespace after the number - while (isspace(*units)) { - units++; - } - - /* @COMPAT Use exact comparisons. Currently, we match too liberally, and the - * second strncasecmp() in each case is redundant. - */ - if ((*units == '\0') - || (strncasecmp(units, "s", 1) == 0) - || (strncasecmp(units, "sec", 3) == 0)) { - multiplier = 1000; - divisor = 1; - - } else if ((strncasecmp(units, "ms", 2) == 0) - || (strncasecmp(units, "msec", 4) == 0)) { - multiplier = 1; - divisor = 1; - - } else if ((strncasecmp(units, "us", 2) == 0) - || (strncasecmp(units, "usec", 4) == 0)) { - multiplier = 1; - divisor = 1000; - - } else if ((strncasecmp(units, "m", 1) == 0) - || (strncasecmp(units, "min", 3) == 0)) { - multiplier = 60 * 1000; - divisor = 1; - - } else if ((strncasecmp(units, "h", 1) == 0) - || (strncasecmp(units, "hr", 2) == 0)) { - multiplier = 60 * 60 * 1000; - divisor = 1; - - } else { - // Invalid units - return PCMK__PARSE_INT_DEFAULT; - } - - // Apply units, capping at LLONG_MAX - if (msec > (LLONG_MAX / multiplier)) { - return LLONG_MAX; - } - return (msec * multiplier) / divisor; -} - /*! * \brief Parse milliseconds from a Pacemaker interval specification * @@ -1425,3 +1328,98 @@ pcmk__g_strcat(GString *buffer, ...) } va_end(ap); } + +// Deprecated functions kept only for backward API compatibility +// LCOV_EXCL_START + +#include + +long long +crm_get_msec(const char *input) +{ + char *units = NULL; // Do not free; will point to part of input + long long multiplier = 1000; + long long divisor = 1; + long long msec = PCMK__PARSE_INT_DEFAULT; + int rc = pcmk_rc_ok; + + if (input == NULL) { + return PCMK__PARSE_INT_DEFAULT; + } + + // Skip initial whitespace + while (isspace(*input)) { + input++; + } + + rc = scan_ll(input, &msec, PCMK__PARSE_INT_DEFAULT, &units); + + if ((rc == ERANGE) && (msec > 0)) { + crm_warn("'%s' will be clipped to %lld", input, msec); + + } else if ((rc != pcmk_rc_ok) || (msec < 0)) { + crm_warn("'%s' is not a valid time duration: %s", + input, ((rc == pcmk_rc_ok)? "Negative" : pcmk_rc_str(rc))); + return PCMK__PARSE_INT_DEFAULT; + } + + /* If the number is a decimal, scan_ll() reads only the integer part. Skip + * any remaining digits or decimal characters. + * + * @COMPAT Well-formed and malformed decimals are both accepted inputs. For + * example, "3.14 ms" and "3.1.4 ms" are treated the same as "3ms" and + * parsed successfully. At a compatibility break, decide if this is still + * desired. + */ + while (isdigit(*units) || (*units == '.')) { + units++; + } + + // Skip any additional whitespace after the number + while (isspace(*units)) { + units++; + } + + /* @COMPAT Use exact comparisons. Currently, we match too liberally, and the + * second strncasecmp() in each case is redundant. + */ + if ((*units == '\0') + || (strncasecmp(units, "s", 1) == 0) + || (strncasecmp(units, "sec", 3) == 0)) { + multiplier = 1000; + divisor = 1; + + } else if ((strncasecmp(units, "ms", 2) == 0) + || (strncasecmp(units, "msec", 4) == 0)) { + multiplier = 1; + divisor = 1; + + } else if ((strncasecmp(units, "us", 2) == 0) + || (strncasecmp(units, "usec", 4) == 0)) { + multiplier = 1; + divisor = 1000; + + } else if ((strncasecmp(units, "m", 1) == 0) + || (strncasecmp(units, "min", 3) == 0)) { + multiplier = 60 * 1000; + divisor = 1; + + } else if ((strncasecmp(units, "h", 1) == 0) + || (strncasecmp(units, "hr", 2) == 0)) { + multiplier = 60 * 60 * 1000; + divisor = 1; + + } else { + // Invalid units + return PCMK__PARSE_INT_DEFAULT; + } + + // Apply units, capping at LLONG_MAX + if (msec > (LLONG_MAX / multiplier)) { + return LLONG_MAX; + } + return (msec * multiplier) / divisor; +} + +// LCOV_EXCL_STOP +// End deprecated API From 6728a2f4399a6ab8fdad6cd8fed23c39dedf5edc Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Fri, 21 Mar 2025 02:33:52 -0700 Subject: [PATCH 110/186] Refactor: libcrmcommon: Allow negative values in pcmk__parse_ms() All callers except crm_mon already handled this. Also, crm_mon was the only caller that passed NULL for the result argument. So we now CRM_CHECK() that it's not NULL. It's easty add "NULL result" as a feature again in the future, if there's a frequent need to validate that a time+units string is parsable without actually needing its value. Signed-off-by: Reid Wahl --- lib/common/strings.c | 13 +++---------- lib/common/tests/strings/pcmk__parse_ms_test.c | 16 +++++++++++----- tools/crm_mon.c | 5 ++++- 3 files changed, 18 insertions(+), 16 deletions(-) diff --git a/lib/common/strings.c b/lib/common/strings.c index e8669b6c16c..a1583c08fa1 100644 --- a/lib/common/strings.c +++ b/lib/common/strings.c @@ -891,18 +891,13 @@ pcmk__parse_ms(const char *input, long long *result) long long divisor = 1; int rc = pcmk_rc_ok; - CRM_CHECK(input != NULL, return EINVAL); + CRM_CHECK((input != NULL) && (result != NULL), return EINVAL); // Skip initial whitespace for (; isspace(*input); input++); rc = scan_ll(input, &local_result, 0, &units); - if (local_result < 0) { - crm_warn("'%s' is not a valid time duration: Negative", input); - return pcmk_rc_bad_input; - } - if (rc == ERANGE) { crm_warn("'%s' will be clipped to %lld", input, local_result); @@ -965,13 +960,11 @@ pcmk__parse_ms(const char *input, long long *result) return pcmk_rc_bad_input; } - if (result == NULL) { - return rc; - } - // Apply units, capping at LLONG_MAX if (local_result > (LLONG_MAX / multiplier)) { *result = LLONG_MAX; + } else if (local_result < (LLONG_MIN / multiplier)) { + *result = LLONG_MIN; } else { *result = (local_result * multiplier) / divisor; } diff --git a/lib/common/tests/strings/pcmk__parse_ms_test.c b/lib/common/tests/strings/pcmk__parse_ms_test.c index 3f03bd049df..6d98799b681 100644 --- a/lib/common/tests/strings/pcmk__parse_ms_test.c +++ b/lib/common/tests/strings/pcmk__parse_ms_test.c @@ -23,6 +23,14 @@ assert_parse_ms(const char *input, int expected_rc, long long expected_result) assert_in_range(result, expected_result, expected_result); } +static void +null_output(void **state) +{ + // These dump core with CRM_CHECK() + assert_int_equal(pcmk__parse_ms(NULL, NULL), EINVAL); + assert_int_equal(pcmk__parse_ms("1", NULL), EINVAL); +} + static void bad_input(void **state) { @@ -32,9 +40,6 @@ bad_input(void **state) assert_parse_ms("100xs", pcmk_rc_bad_input, magic); assert_parse_ms(" 100 xs ", pcmk_rc_bad_input, magic); - // @FIXME Should parse successfully as negative value - assert_parse_ms("-100ms", pcmk_rc_bad_input, magic); - assert_parse_ms("3.xs", pcmk_rc_bad_input, magic); assert_parse_ms(" 3. xs ", pcmk_rc_bad_input, magic); assert_parse_ms("3.14xs", pcmk_rc_bad_input, magic); @@ -51,6 +56,7 @@ good_input(void **state) assert_parse_ms("100ms", pcmk_rc_ok, 100); assert_parse_ms(" 100 ms ", pcmk_rc_ok, 100); assert_parse_ms("100 MSEC", pcmk_rc_ok, 100); + assert_parse_ms("-100ms", pcmk_rc_ok, -100); assert_parse_ms("1000US", pcmk_rc_ok, 1); assert_parse_ms("1000usec", pcmk_rc_ok, 1); assert_parse_ms("12s", pcmk_rc_ok, 12000); @@ -92,14 +98,14 @@ overflow(void **state) assert_parse_ms(input, ERANGE, LLONG_MAX); free(input); - // @FIXME Should parse successfully with ERANGE // Hopefully we can rely on two's complement integers input = crm_strdup_printf("-%llu", (unsigned long long) LLONG_MIN + 1); - assert_parse_ms(input, pcmk_rc_bad_input, magic); + assert_parse_ms(input, ERANGE, LLONG_MIN); free(input); } PCMK__UNIT_TEST(NULL, NULL, + cmocka_unit_test(null_output), cmocka_unit_test(bad_input), cmocka_unit_test(good_input), cmocka_unit_test(overflow)) diff --git a/tools/crm_mon.c b/tools/crm_mon.c index 0c07c6b8a89..5ce17538a7a 100644 --- a/tools/crm_mon.c +++ b/tools/crm_mon.c @@ -506,7 +506,10 @@ print_timing_cb(const gchar *option_name, const gchar *optarg, gpointer data, GE static gboolean reconnect_cb(const gchar *option_name, const gchar *optarg, gpointer data, GError **err) { - if (pcmk__parse_ms(optarg, NULL) != pcmk_rc_ok) { + long long reconnect_ms = 0; + + if ((pcmk__parse_ms(optarg, &reconnect_ms) != pcmk_rc_ok) + || (reconnect_ms < 0)) { g_set_error(err, PCMK__EXITC_ERROR, CRM_EX_INVALID_PARAM, "Invalid value for -i: %s", optarg); return FALSE; From 3f430fb0e71c874372ff7f9c0b76cd4dd6415463 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Sat, 22 Mar 2025 19:44:15 -0700 Subject: [PATCH 111/186] Refactor: libcrmcommon: Don't skip initial whitespace in pcmk__parse_ms strtoll() does this automatically. We might as well keep the original input string for logging. Signed-off-by: Reid Wahl --- lib/common/strings.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/lib/common/strings.c b/lib/common/strings.c index a1583c08fa1..4c90c30824c 100644 --- a/lib/common/strings.c +++ b/lib/common/strings.c @@ -893,9 +893,6 @@ pcmk__parse_ms(const char *input, long long *result) CRM_CHECK((input != NULL) && (result != NULL), return EINVAL); - // Skip initial whitespace - for (; isspace(*input); input++); - rc = scan_ll(input, &local_result, 0, &units); if (rc == ERANGE) { From 08beba4f979c068182708fc36360bdf785cc64d7 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Sat, 22 Mar 2025 20:50:21 -0700 Subject: [PATCH 112/186] Refactor: libcrmcommon: Functionize parsing units in pcmk__parse_ms() This also avoids logging that the value will be clipped if we were going to end up returning pcmk_rc_bad_input later due to invalid units. Signed-off-by: Reid Wahl --- lib/common/strings.c | 127 +++++++++++++++++++++++++++---------------- 1 file changed, 80 insertions(+), 47 deletions(-) diff --git a/lib/common/strings.c b/lib/common/strings.c index 4c90c30824c..93d8afb5790 100644 --- a/lib/common/strings.c +++ b/lib/common/strings.c @@ -870,6 +870,64 @@ pcmk__parse_ll_range(const char *srcstring, long long *start, long long *end) return pcmk_rc_ok; } +/*! + * \internal + * \brief Get multiplier and divisor corresponding to given units string + * + * Multiplier and divisor convert from a number of seconds to an equivalent + * number of the unit described by the units string. + * + * \param[in] units String describing a unit of time (may be empty, + * \c "s", \c "sec", \c "ms", \c "msec", \c "us", + * \c "usec", \c "m", \c "min", \c "h", or \c "hr") + * \param[out] multiplier Number of units in one second, if unit is smaller + * than one second, or 1 otherwise (unchanged on error) + * \param[out] divisor Number of seconds in one unit, if unit is larger + * than one second, or 1 otherwise (unchanged on error) + * + * \return Standard Pacemaker return code + */ +static int +get_multiplier_divisor(const char *units, long long *multiplier, + long long *divisor) +{ + /* @COMPAT Use exact comparisons. Currently, we match too liberally, and the + * second strncasecmp() in each case is redundant. + */ + if ((*units == '\0') + || (strncasecmp(units, "s", 1) == 0) + || (strncasecmp(units, "sec", 3) == 0)) { + *multiplier = 1000; + *divisor = 1; + + } else if ((strncasecmp(units, "ms", 2) == 0) + || (strncasecmp(units, "msec", 4) == 0)) { + *multiplier = 1; + *divisor = 1; + + } else if ((strncasecmp(units, "us", 2) == 0) + || (strncasecmp(units, "usec", 4) == 0)) { + *multiplier = 1; + *divisor = 1000; + + } else if ((strncasecmp(units, "m", 1) == 0) + || (strncasecmp(units, "min", 3) == 0)) { + *multiplier = 60 * 1000; + *divisor = 1; + + } else if ((strncasecmp(units, "h", 1) == 0) + || (strncasecmp(units, "hr", 2) == 0)) { + *multiplier = 60 * 60 * 1000; + *divisor = 1; + + } else { + // Invalid units + return pcmk_rc_bad_input; + } + + return pcmk_rc_ok; +} + /*! * \internal * \brief Parse a time and units string into a milliseconds value @@ -894,6 +952,28 @@ pcmk__parse_ms(const char *input, long long *result) CRM_CHECK((input != NULL) && (result != NULL), return EINVAL); rc = scan_ll(input, &local_result, 0, &units); + if ((rc == pcmk_rc_ok) || (rc == ERANGE)) { + int units_rc = pcmk_rc_ok; + + /* If the number is a decimal, scan_ll() reads only the integer part. + * Skip any remaining digits or decimal characters. + * + * @COMPAT Well-formed and malformed decimals are both accepted inputs. + * For example, "3.14 ms" and "3.1.4 ms" are treated the same as "3ms" + * and parsed successfully. At a compatibility break, decide if this is + * still desired. + */ + for (; isdigit(*units) || (*units == '.'); units++); + + // Skip any additional whitespace after the number + for (; isspace(*units); units++); + + // Validate units and get conversion constants + units_rc = get_multiplier_divisor(units, &multiplier, &divisor); + if (units_rc != pcmk_rc_ok) { + rc = units_rc; + } + } if (rc == ERANGE) { crm_warn("'%s' will be clipped to %lld", input, local_result); @@ -910,53 +990,6 @@ pcmk__parse_ms(const char *input, long long *result) return rc; } - /* If the number is a decimal, scan_ll() reads only the integer part. Skip - * any remaining digits or decimal characters. - * - * @COMPAT Well-formed and malformed decimals are both accepted inputs. For - * example, "3.14 ms" and "3.1.4 ms" are treated the same as "3ms" and - * parsed successfully. At a compatibility break, decide if this is still - * desired. - */ - for (; isdigit(*units) || (*units == '.'); units++); - - // Skip any additional whitespace after the number - for (; isspace(*units); units++); - - /* @COMPAT Use exact comparisons. Currently, we match too liberally, and the - * second strncasecmp() in each case is redundant. - */ - if ((*units == '\0') - || (strncasecmp(units, "s", 1) == 0) - || (strncasecmp(units, "sec", 3) == 0)) { - multiplier = 1000; - divisor = 1; - - } else if ((strncasecmp(units, "ms", 2) == 0) - || (strncasecmp(units, "msec", 4) == 0)) { - multiplier = 1; - divisor = 1; - - } else if ((strncasecmp(units, "us", 2) == 0) - || (strncasecmp(units, "usec", 4) == 0)) { - multiplier = 1; - divisor = 1000; - - } else if ((strncasecmp(units, "m", 1) == 0) - || (strncasecmp(units, "min", 3) == 0)) { - multiplier = 60 * 1000; - divisor = 1; - - } else if ((strncasecmp(units, "h", 1) == 0) - || (strncasecmp(units, "hr", 2) == 0)) { - multiplier = 60 * 60 * 1000; - divisor = 1; - - } else { - // Invalid units - return pcmk_rc_bad_input; - } - // Apply units, capping at LLONG_MAX if (local_result > (LLONG_MAX / multiplier)) { *result = LLONG_MAX; From f1f918d144e1a3bea89dc6f5539d995c9bb0b569 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Sat, 22 Mar 2025 21:43:23 -0700 Subject: [PATCH 113/186] Refactor: libcrmcommon: New pcmk__parse_bool() To replace crm_str_to_boolean() Signed-off-by: Reid Wahl --- include/crm/common/strings_internal.h | 1 + lib/common/options.c | 4 +- lib/common/strings.c | 40 +++++++ lib/common/tests/strings/Makefile.am | 2 +- .../tests/strings/crm_str_to_boolean_test.c | 106 ----------------- .../tests/strings/pcmk__parse_bool_test.c | 108 ++++++++++++++++++ lib/common/watchdog.c | 7 +- lib/common/xml_element.c | 9 +- lib/pacemaker/pcmk_sched_colocation.c | 13 +-- lib/pengine/bundle.c | 11 +- lib/pengine/group.c | 12 +- lib/pengine/unpack.c | 42 +++---- 12 files changed, 198 insertions(+), 157 deletions(-) delete mode 100644 lib/common/tests/strings/crm_str_to_boolean_test.c create mode 100644 lib/common/tests/strings/pcmk__parse_bool_test.c diff --git a/include/crm/common/strings_internal.h b/include/crm/common/strings_internal.h index d62606645a3..b01f15af062 100644 --- a/include/crm/common/strings_internal.h +++ b/include/crm/common/strings_internal.h @@ -53,6 +53,7 @@ int pcmk__compress(const char *data, unsigned int length, unsigned int max, int pcmk__scan_ll(const char *text, long long *result, long long default_value); int pcmk__scan_min_int(const char *text, int *result, int minimum); int pcmk__scan_port(const char *text, int *port); +int pcmk__parse_bool(const char *input, bool *result); int pcmk__parse_ll_range(const char *srcstring, long long *start, long long *end); int pcmk__parse_ms(const char *input, long long *result); diff --git a/lib/common/options.c b/lib/common/options.c index 7ed6bd99907..5abea87b93c 100644 --- a/lib/common/options.c +++ b/lib/common/options.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. * @@ -1219,7 +1219,7 @@ pcmk__valid_interval_spec(const char *value) bool pcmk__valid_boolean(const char *value) { - return crm_str_to_boolean(value, NULL) == 1; + return pcmk__parse_bool(value, NULL) == pcmk_rc_ok; } /*! diff --git a/lib/common/strings.c b/lib/common/strings.c index 93d8afb5790..5a44b0098ff 100644 --- a/lib/common/strings.c +++ b/lib/common/strings.c @@ -807,6 +807,46 @@ crm_strdup_printf(char const *format, ...) return string; } +/*! + * \internal + * \brief Parse a boolean value from a string + * + * Valid input strings (case-insensitive) are as follows: + * * \c PCMK_VALUE_TRUE, \c "on", \c "yes", \c "y", or \c "1" for \c true + * * \c PCMK_VALUE_FALSE, \c PCMK_VALUE_OFF, \c "no", \c "n", or \c "0" for + * \c false + * + * \param[in] input Input string + * \param[out] result Where to store parsed boolean value (can be \c NULL) + * + * \retval \c true if \p input was successfully parsed to a boolean value + * \retval \c false otherwise + */ +int +pcmk__parse_bool(const char *input, bool *result) +{ + bool local_result = false; + + CRM_CHECK(input != NULL, return EINVAL); + + if (pcmk__strcase_any_of(input, PCMK_VALUE_TRUE, "on", "yes", "y", "1", + NULL)) { + local_result = true; + + } else if (pcmk__strcase_any_of(input, PCMK_VALUE_FALSE, PCMK_VALUE_OFF, + "no", "n", "0", NULL)) { + local_result = false; + + } else { + return pcmk_rc_bad_input; + } + + if (result != NULL) { + *result = local_result; + } + return pcmk_rc_ok; +} + int pcmk__parse_ll_range(const char *srcstring, long long *start, long long *end) { diff --git a/lib/common/tests/strings/Makefile.am b/lib/common/tests/strings/Makefile.am index a6f32682081..1b22d9fa36f 100644 --- a/lib/common/tests/strings/Makefile.am +++ b/lib/common/tests/strings/Makefile.am @@ -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 = crm_is_true_test \ - crm_str_to_boolean_test \ pcmk__add_word_test \ pcmk__btoa_test \ pcmk__compress_test \ @@ -21,6 +20,7 @@ check_PROGRAMS = crm_is_true_test \ pcmk__g_strcat_test \ pcmk__guint_from_hash_test \ pcmk__numeric_strcasecmp_test \ + pcmk__parse_bool_test \ pcmk__parse_ll_range_test \ pcmk__parse_ms_test \ pcmk__s_test \ diff --git a/lib/common/tests/strings/crm_str_to_boolean_test.c b/lib/common/tests/strings/crm_str_to_boolean_test.c deleted file mode 100644 index c0e31769968..00000000000 --- a/lib/common/tests/strings/crm_str_to_boolean_test.c +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright 2021-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 - -static void -bad_input(void **state) { - assert_int_equal(crm_str_to_boolean(NULL, NULL), -1); - assert_int_equal(crm_str_to_boolean("", NULL), -1); - assert_int_equal(crm_str_to_boolean("blahblah", NULL), -1); -} - -static void -is_true(void **state) { - int ret; - - assert_int_equal(crm_str_to_boolean("true", &ret), 1); - assert_true(ret); - assert_int_equal(crm_str_to_boolean("TrUe", &ret), 1); - assert_true(ret); - assert_int_equal(crm_str_to_boolean("on", &ret), 1); - assert_true(ret); - assert_int_equal(crm_str_to_boolean("ON", &ret), 1); - assert_true(ret); - assert_int_equal(crm_str_to_boolean("yes", &ret), 1); - assert_true(ret); - assert_int_equal(crm_str_to_boolean("yES", &ret), 1); - assert_true(ret); - assert_int_equal(crm_str_to_boolean("y", &ret), 1); - assert_true(ret); - assert_int_equal(crm_str_to_boolean("Y", &ret), 1); - assert_true(ret); - assert_int_equal(crm_str_to_boolean("1", &ret), 1); - assert_true(ret); - - // Ensure it still validates the string with a NULL result argument - assert_int_equal(crm_str_to_boolean("true", NULL), 1); - assert_int_equal(crm_str_to_boolean("on", NULL), 1); - assert_int_equal(crm_str_to_boolean("yes", NULL), 1); - assert_int_equal(crm_str_to_boolean("y", NULL), 1); - assert_int_equal(crm_str_to_boolean("1", NULL), 1); -} - -static void -is_not_true(void **state) { - assert_int_equal(crm_str_to_boolean("truedat", NULL), -1); - assert_int_equal(crm_str_to_boolean("onnn", NULL), -1); - assert_int_equal(crm_str_to_boolean("yep", NULL), -1); - assert_int_equal(crm_str_to_boolean("Y!", NULL), -1); - assert_int_equal(crm_str_to_boolean("100", NULL), -1); -} - -static void -is_false(void **state) { - int ret; - - assert_int_equal(crm_str_to_boolean("false", &ret), 1); - assert_false(ret); - assert_int_equal(crm_str_to_boolean("fAlSe", &ret), 1); - assert_false(ret); - assert_int_equal(crm_str_to_boolean(PCMK_VALUE_OFF, &ret), 1); - assert_false(ret); - assert_int_equal(crm_str_to_boolean("OFF", &ret), 1); - assert_false(ret); - assert_int_equal(crm_str_to_boolean("no", &ret), 1); - assert_false(ret); - assert_int_equal(crm_str_to_boolean("No", &ret), 1); - assert_false(ret); - assert_int_equal(crm_str_to_boolean("n", &ret), 1); - assert_false(ret); - assert_int_equal(crm_str_to_boolean("N", &ret), 1); - assert_false(ret); - assert_int_equal(crm_str_to_boolean("0", &ret), 1); - assert_false(ret); - - // Ensure it still validates the string with a NULL result argument - assert_int_equal(crm_str_to_boolean("false", NULL), 1); - assert_int_equal(crm_str_to_boolean(PCMK_VALUE_OFF, NULL), 1); - assert_int_equal(crm_str_to_boolean("no", NULL), 1); - assert_int_equal(crm_str_to_boolean("n", NULL), 1); - assert_int_equal(crm_str_to_boolean("0", NULL), 1); -} - -static void -is_not_false(void **state) { - assert_int_equal(crm_str_to_boolean("falseee", NULL), -1); - assert_int_equal(crm_str_to_boolean("of", NULL), -1); - assert_int_equal(crm_str_to_boolean("nope", NULL), -1); - assert_int_equal(crm_str_to_boolean("N!", NULL), -1); - assert_int_equal(crm_str_to_boolean("000", NULL), -1); -} - -PCMK__UNIT_TEST(NULL, NULL, - cmocka_unit_test(bad_input), - cmocka_unit_test(is_true), - cmocka_unit_test(is_not_true), - cmocka_unit_test(is_false), - cmocka_unit_test(is_not_false)) diff --git a/lib/common/tests/strings/pcmk__parse_bool_test.c b/lib/common/tests/strings/pcmk__parse_bool_test.c new file mode 100644 index 00000000000..f44a5fcd970 --- /dev/null +++ b/lib/common/tests/strings/pcmk__parse_bool_test.c @@ -0,0 +1,108 @@ +/* + * Copyright 2021-2025 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 + +static void +bad_input(void **state) { + // Dumps core via CRM_CHECK() + assert_int_equal(pcmk__parse_bool(NULL, NULL), EINVAL); + + assert_int_equal(pcmk__parse_bool("", NULL), pcmk_rc_bad_input); + assert_int_equal(pcmk__parse_bool("blahblah", NULL), pcmk_rc_bad_input); +} + +static void +is_true(void **state) { + bool result; + + assert_int_equal(pcmk__parse_bool("true", &result), pcmk_rc_ok); + assert_true(result); + assert_int_equal(pcmk__parse_bool("TrUe", &result), pcmk_rc_ok); + assert_true(result); + assert_int_equal(pcmk__parse_bool("on", &result), pcmk_rc_ok); + assert_true(result); + assert_int_equal(pcmk__parse_bool("ON", &result), pcmk_rc_ok); + assert_true(result); + assert_int_equal(pcmk__parse_bool("yes", &result), pcmk_rc_ok); + assert_true(result); + assert_int_equal(pcmk__parse_bool("yES", &result), pcmk_rc_ok); + assert_true(result); + assert_int_equal(pcmk__parse_bool("y", &result), pcmk_rc_ok); + assert_true(result); + assert_int_equal(pcmk__parse_bool("Y", &result), pcmk_rc_ok); + assert_true(result); + assert_int_equal(pcmk__parse_bool("1", &result), pcmk_rc_ok); + assert_true(result); + + // Ensure it still validates the string with a NULL result argument + assert_int_equal(pcmk__parse_bool("true", NULL), pcmk_rc_ok); + assert_int_equal(pcmk__parse_bool("on", NULL), pcmk_rc_ok); + assert_int_equal(pcmk__parse_bool("yes", NULL), pcmk_rc_ok); + assert_int_equal(pcmk__parse_bool("y", NULL), pcmk_rc_ok); + assert_int_equal(pcmk__parse_bool("1", NULL), pcmk_rc_ok); +} + +static void +is_not_true(void **state) { + assert_int_equal(pcmk__parse_bool("truedat", NULL), pcmk_rc_bad_input); + assert_int_equal(pcmk__parse_bool("onnn", NULL), pcmk_rc_bad_input); + assert_int_equal(pcmk__parse_bool("yep", NULL), pcmk_rc_bad_input); + assert_int_equal(pcmk__parse_bool("Y!", NULL), pcmk_rc_bad_input); + assert_int_equal(pcmk__parse_bool("100", NULL), pcmk_rc_bad_input); +} + +static void +is_false(void **state) { + bool result; + + assert_int_equal(pcmk__parse_bool("false", &result), pcmk_rc_ok); + assert_false(result); + assert_int_equal(pcmk__parse_bool("fAlSe", &result), pcmk_rc_ok); + assert_false(result); + assert_int_equal(pcmk__parse_bool(PCMK_VALUE_OFF, &result), pcmk_rc_ok); + assert_false(result); + assert_int_equal(pcmk__parse_bool("OFF", &result), pcmk_rc_ok); + assert_false(result); + assert_int_equal(pcmk__parse_bool("no", &result), pcmk_rc_ok); + assert_false(result); + assert_int_equal(pcmk__parse_bool("No", &result), pcmk_rc_ok); + assert_false(result); + assert_int_equal(pcmk__parse_bool("n", &result), pcmk_rc_ok); + assert_false(result); + assert_int_equal(pcmk__parse_bool("N", &result), pcmk_rc_ok); + assert_false(result); + assert_int_equal(pcmk__parse_bool("0", &result), pcmk_rc_ok); + assert_false(result); + + // Ensure it still validates the string with a NULL result argument + assert_int_equal(pcmk__parse_bool("false", NULL), pcmk_rc_ok); + assert_int_equal(pcmk__parse_bool(PCMK_VALUE_OFF, NULL), pcmk_rc_ok); + assert_int_equal(pcmk__parse_bool("no", NULL), pcmk_rc_ok); + assert_int_equal(pcmk__parse_bool("n", NULL), pcmk_rc_ok); + assert_int_equal(pcmk__parse_bool("0", NULL), pcmk_rc_ok); +} + +static void +is_not_false(void **state) { + assert_int_equal(pcmk__parse_bool("falseee", NULL), pcmk_rc_bad_input); + assert_int_equal(pcmk__parse_bool("of", NULL), pcmk_rc_bad_input); + assert_int_equal(pcmk__parse_bool("nope", NULL), pcmk_rc_bad_input); + assert_int_equal(pcmk__parse_bool("N!", NULL), pcmk_rc_bad_input); + assert_int_equal(pcmk__parse_bool("000", NULL), pcmk_rc_bad_input); +} + +PCMK__UNIT_TEST(NULL, NULL, + cmocka_unit_test(bad_input), + cmocka_unit_test(is_true), + cmocka_unit_test(is_not_true), + cmocka_unit_test(is_false), + cmocka_unit_test(is_not_false)) diff --git a/lib/common/watchdog.c b/lib/common/watchdog.c index 64605d34b2c..5c46cc770b3 100644 --- a/lib/common/watchdog.c +++ b/lib/common/watchdog.c @@ -221,7 +221,7 @@ pcmk__get_sbd_watchdog_timeout(void) bool pcmk__get_sbd_sync_resource_startup(void) { - static int sync_resource_startup = PCMK__SBD_SYNC_DEFAULT; + static bool sync_resource_startup = PCMK__SBD_SYNC_DEFAULT; static bool checked_sync_resource_startup = false; if (!checked_sync_resource_startup) { @@ -231,14 +231,15 @@ pcmk__get_sbd_sync_resource_startup(void) crm_trace("Defaulting to %sstart-up synchronization with sbd", (PCMK__SBD_SYNC_DEFAULT? "" : "no ")); - } else if (crm_str_to_boolean(sync_env, &sync_resource_startup) < 0) { + } else if (pcmk__parse_bool(sync_env, + &sync_resource_startup) != pcmk_rc_ok) { crm_warn("Defaulting to %sstart-up synchronization with sbd " "because environment value '%s' is invalid", (PCMK__SBD_SYNC_DEFAULT? "" : "no "), sync_env); } checked_sync_resource_startup = true; } - return sync_resource_startup != 0; + return sync_resource_startup; } // 0 <= return value <= min(LONG_MAX, (2 * SBD timeout)) diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index 9dd6637a282..87e4964d840 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -1510,7 +1510,6 @@ int pcmk__xe_get_bool_attr(const xmlNode *node, const char *name, bool *value) { const char *xml_value = NULL; - int ret, rc; if (node == NULL) { return ENODATA; @@ -1524,13 +1523,7 @@ pcmk__xe_get_bool_attr(const xmlNode *node, const char *name, bool *value) return ENODATA; } - rc = crm_str_to_boolean(xml_value, &ret); - if (rc == 1) { - *value = ret; - return pcmk_rc_ok; - } else { - return pcmk_rc_bad_input; - } + return pcmk__parse_bool(xml_value, value); } /*! diff --git a/lib/pacemaker/pcmk_sched_colocation.c b/lib/pacemaker/pcmk_sched_colocation.c index 7f41514cebb..0837f842319 100644 --- a/lib/pacemaker/pcmk_sched_colocation.c +++ b/lib/pacemaker/pcmk_sched_colocation.c @@ -457,15 +457,14 @@ unpack_influence(const char *coloc_id, const pcmk_resource_t *rsc, const char *influence_s) { if (influence_s != NULL) { - int influence_i = 0; + bool influence = false; - if (crm_str_to_boolean(influence_s, &influence_i) < 0) { - pcmk__config_err("Constraint '%s' has invalid value for " - PCMK_XA_INFLUENCE " (using default)", - coloc_id); - } else { - return (influence_i == 0)? pcmk__coloc_none : pcmk__coloc_influence; + if (pcmk__parse_bool(influence_s, &influence) == pcmk_rc_ok) { + return (influence? pcmk__coloc_influence : pcmk__coloc_none); } + pcmk__config_err("Constraint '%s' has invalid value for " + PCMK_XA_INFLUENCE " (using default)", + coloc_id); } if (pcmk_is_set(rsc->flags, pcmk__rsc_critical)) { return pcmk__coloc_influence; diff --git a/lib/pengine/bundle.c b/lib/pengine/bundle.c index cee0390763d..d463f90ab81 100644 --- a/lib/pengine/bundle.c +++ b/lib/pengine/bundle.c @@ -61,7 +61,7 @@ typedef struct pe__bundle_variant_data_s { char *control_port; char *container_network; char *ip_range_start; - gboolean add_host; + bool add_host; gchar *container_host_options; char *container_command; char *launcher_options; @@ -1031,9 +1031,14 @@ pe__unpack_bundle(pcmk_resource_t *rsc) PCMK_XA_HOST_INTERFACE); bundle_data->control_port = pcmk__xe_get_copy(xml_obj, PCMK_XA_CONTROL_PORT); + value = pcmk__xe_get(xml_obj, PCMK_XA_ADD_HOST); - if (crm_str_to_boolean(value, &bundle_data->add_host) != 1) { - bundle_data->add_host = TRUE; + if ((value == NULL) + || (pcmk__parse_bool(value, + &bundle_data->add_host) != pcmk_rc_ok)) { + + // Default to true if unset or invaid + bundle_data->add_host = true; } for (xml_child = pcmk__xe_first_child(xml_obj, PCMK_XE_PORT_MAPPING, diff --git a/lib/pengine/group.c b/lib/pengine/group.c index 731e8cf1a09..58d9a8cb09f 100644 --- a/lib/pengine/group.c +++ b/lib/pengine/group.c @@ -78,14 +78,12 @@ static void set_group_flag(pcmk_resource_t *group, const char *option, uint32_t flag, uint32_t wo_bit) { - const char *value_s = NULL; - int value = 0; + const char *value_s = g_hash_table_lookup(group->priv->meta, option); + bool value = false; - value_s = g_hash_table_lookup(group->priv->meta, option); - - // We don't actually need the null check but it speeds up the common case - if ((value_s == NULL) || (crm_str_to_boolean(value_s, &value) < 0) - || (value != 0)) { + if ((value_s == NULL) || (pcmk__parse_bool(value_s, &value) != pcmk_rc_ok) + || value) { + // Set flag if value is unset, invalid, or true group_variant_data_t *group_data = group->priv->variant_opaque; group_data->flags |= flag; diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c index 36dd2c0a836..c1de49bae58 100644 --- a/lib/pengine/unpack.c +++ b/lib/pengine/unpack.c @@ -1474,24 +1474,13 @@ static long long unpack_node_member(const xmlNode *node_state, pcmk_scheduler_t *scheduler) { const char *member_time = pcmk__xe_get(node_state, PCMK__XA_IN_CCM); - int member = 0; + bool is_member = false; if (member_time == NULL) { return -1LL; + } - } else if (crm_str_to_boolean(member_time, &member) == 1) { - /* If in_ccm=0, we'll return 0 here. If in_ccm=1, either the entry was - * recorded as a boolean for a DC < 2.1.7, or the node is pending - * shutdown and has left the CPG, in which case it was set to 1 to avoid - * fencing for PCMK_OPT_NODE_PENDING_TIMEOUT. - * - * We return the effective time for in_ccm=1 because what's important to - * avoid fencing is that effective time minus this value is less than - * the pending node timeout. - */ - return member? (long long) pcmk__scheduler_epoch_time(scheduler) : 0LL; - - } else { + if (pcmk__parse_bool(member_time, &is_member) != pcmk_rc_ok) { long long when_member = 0LL; if ((pcmk__scan_ll(member_time, &when_member, @@ -1502,6 +1491,17 @@ unpack_node_member(const xmlNode *node_state, pcmk_scheduler_t *scheduler) } return when_member; } + + /* If in_ccm=0, we'll return 0 here. If in_ccm=1, either the entry was + * recorded as a boolean for a DC < 2.1.7, or the node is pending shutdown + * and has left the CPG, in which case it was set to 1 to avoid fencing for + * PCMK_OPT_NODE_PENDING_TIMEOUT. + * + * We return the effective time for in_ccm=1 because what's important to + * avoid fencing is that effective time minus this value is less than the + * pending node timeout. + */ + return is_member? (long long) pcmk__scheduler_epoch_time(scheduler) : 0LL; } /*! @@ -1551,19 +1551,21 @@ unpack_node_online(const xmlNode *node_state) static bool unpack_node_terminate(const pcmk_node_t *node, const xmlNode *node_state) { - long long value = 0LL; - int value_i = 0; + bool value_b = false; + long long value_ll = 0LL; int rc = pcmk_rc_ok; const char *value_s = pcmk__node_attr(node, PCMK_NODE_ATTR_TERMINATE, NULL, pcmk__rsc_node_current); // Value may be boolean or an epoch time - if (crm_str_to_boolean(value_s, &value_i) == 1) { - return (value_i != 0); + if ((value_s != NULL) + && (pcmk__parse_bool(value_s, &value_b) == pcmk_rc_ok)) { + return value_b; } - rc = pcmk__scan_ll(value_s, &value, 0LL); + + rc = pcmk__scan_ll(value_s, &value_ll, 0LL); if (rc == pcmk_rc_ok) { - return (value > 0); + return (value_ll > 0); } crm_warn("Ignoring unrecognized value '%s' for " PCMK_NODE_ATTR_TERMINATE "node attribute for %s: %s", From 3051eb210f2db9e9bea97c97df612dd28a201b41 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Sat, 22 Mar 2025 22:22:51 -0700 Subject: [PATCH 114/186] Test: libcrmcommon: Test pcmk__parse_bool() more thoroughly Functionize the repeated code, test everything with both true and false as the initial value of result, test everything with NULL result argument, and ensure result is not changed upon error. Signed-off-by: Reid Wahl --- .../tests/strings/pcmk__parse_bool_test.c | 154 ++++++++++-------- 1 file changed, 83 insertions(+), 71 deletions(-) diff --git a/lib/common/tests/strings/pcmk__parse_bool_test.c b/lib/common/tests/strings/pcmk__parse_bool_test.c index f44a5fcd970..ad431701b03 100644 --- a/lib/common/tests/strings/pcmk__parse_bool_test.c +++ b/lib/common/tests/strings/pcmk__parse_bool_test.c @@ -11,93 +11,105 @@ #include +/*! + * \internal + * \brief Check a call with given input against expected return value and result + * + * \param[in] input Input string + * \param[in] expected_rc Expected return code + * \param[in] expected_result Expected parsed value (ignored unless + * \p expected_rc is \c pcmk_rc_ok) + */ static void -bad_input(void **state) { - // Dumps core via CRM_CHECK() - assert_int_equal(pcmk__parse_bool(NULL, NULL), EINVAL); +assert_parse_bool(const char *input, int expected_rc, bool expected_result) +{ + bool result = false; - assert_int_equal(pcmk__parse_bool("", NULL), pcmk_rc_bad_input); - assert_int_equal(pcmk__parse_bool("blahblah", NULL), pcmk_rc_bad_input); -} + // Ensure we still validate the string with a NULL result argument + assert_int_equal(pcmk__parse_bool(input, NULL), expected_rc); -static void -is_true(void **state) { - bool result; + if (expected_rc != pcmk_rc_ok) { + // Make sure the value of result does not change on failure + expected_result = result; + } + + assert_int_equal(pcmk__parse_bool(input, &result), expected_rc); + if (expected_result) { + assert_true(result); + } else { + assert_false(result); + } - assert_int_equal(pcmk__parse_bool("true", &result), pcmk_rc_ok); - assert_true(result); - assert_int_equal(pcmk__parse_bool("TrUe", &result), pcmk_rc_ok); - assert_true(result); - assert_int_equal(pcmk__parse_bool("on", &result), pcmk_rc_ok); - assert_true(result); - assert_int_equal(pcmk__parse_bool("ON", &result), pcmk_rc_ok); - assert_true(result); - assert_int_equal(pcmk__parse_bool("yes", &result), pcmk_rc_ok); - assert_true(result); - assert_int_equal(pcmk__parse_bool("yES", &result), pcmk_rc_ok); - assert_true(result); - assert_int_equal(pcmk__parse_bool("y", &result), pcmk_rc_ok); - assert_true(result); - assert_int_equal(pcmk__parse_bool("Y", &result), pcmk_rc_ok); - assert_true(result); - assert_int_equal(pcmk__parse_bool("1", &result), pcmk_rc_ok); - assert_true(result); + // Repeat with result initially set to true + result = true; + if (expected_rc != pcmk_rc_ok) { + expected_result = result; + } - // Ensure it still validates the string with a NULL result argument - assert_int_equal(pcmk__parse_bool("true", NULL), pcmk_rc_ok); - assert_int_equal(pcmk__parse_bool("on", NULL), pcmk_rc_ok); - assert_int_equal(pcmk__parse_bool("yes", NULL), pcmk_rc_ok); - assert_int_equal(pcmk__parse_bool("y", NULL), pcmk_rc_ok); - assert_int_equal(pcmk__parse_bool("1", NULL), pcmk_rc_ok); + assert_int_equal(pcmk__parse_bool(input, &result), expected_rc); + if (expected_result) { + assert_true(result); + } else { + assert_false(result); + } } static void -is_not_true(void **state) { - assert_int_equal(pcmk__parse_bool("truedat", NULL), pcmk_rc_bad_input); - assert_int_equal(pcmk__parse_bool("onnn", NULL), pcmk_rc_bad_input); - assert_int_equal(pcmk__parse_bool("yep", NULL), pcmk_rc_bad_input); - assert_int_equal(pcmk__parse_bool("Y!", NULL), pcmk_rc_bad_input); - assert_int_equal(pcmk__parse_bool("100", NULL), pcmk_rc_bad_input); +bad_input(void **state) +{ + // Dumps core via CRM_CHECK() + assert_parse_bool(NULL, EINVAL, false); + + assert_parse_bool("", pcmk_rc_bad_input, false); + assert_parse_bool("blahblah", pcmk_rc_bad_input, false); } static void -is_false(void **state) { - bool result; +is_true(void **state) +{ + assert_parse_bool("true", pcmk_rc_ok, true); + assert_parse_bool("TrUe", pcmk_rc_ok, true); + assert_parse_bool("on", pcmk_rc_ok, true); + assert_parse_bool("ON", pcmk_rc_ok, true); + assert_parse_bool("yes", pcmk_rc_ok, true); + assert_parse_bool("yES", pcmk_rc_ok, true); + assert_parse_bool("y", pcmk_rc_ok, true); + assert_parse_bool("Y", pcmk_rc_ok, true); + assert_parse_bool("1", pcmk_rc_ok, true); +} - assert_int_equal(pcmk__parse_bool("false", &result), pcmk_rc_ok); - assert_false(result); - assert_int_equal(pcmk__parse_bool("fAlSe", &result), pcmk_rc_ok); - assert_false(result); - assert_int_equal(pcmk__parse_bool(PCMK_VALUE_OFF, &result), pcmk_rc_ok); - assert_false(result); - assert_int_equal(pcmk__parse_bool("OFF", &result), pcmk_rc_ok); - assert_false(result); - assert_int_equal(pcmk__parse_bool("no", &result), pcmk_rc_ok); - assert_false(result); - assert_int_equal(pcmk__parse_bool("No", &result), pcmk_rc_ok); - assert_false(result); - assert_int_equal(pcmk__parse_bool("n", &result), pcmk_rc_ok); - assert_false(result); - assert_int_equal(pcmk__parse_bool("N", &result), pcmk_rc_ok); - assert_false(result); - assert_int_equal(pcmk__parse_bool("0", &result), pcmk_rc_ok); - assert_false(result); +static void +is_not_true(void **state) +{ + assert_parse_bool("truedat", pcmk_rc_bad_input, false); + assert_parse_bool("onnn", pcmk_rc_bad_input, false); + assert_parse_bool("yep", pcmk_rc_bad_input, false); + assert_parse_bool("Y!", pcmk_rc_bad_input, false); + assert_parse_bool("100", pcmk_rc_bad_input, false); +} - // Ensure it still validates the string with a NULL result argument - assert_int_equal(pcmk__parse_bool("false", NULL), pcmk_rc_ok); - assert_int_equal(pcmk__parse_bool(PCMK_VALUE_OFF, NULL), pcmk_rc_ok); - assert_int_equal(pcmk__parse_bool("no", NULL), pcmk_rc_ok); - assert_int_equal(pcmk__parse_bool("n", NULL), pcmk_rc_ok); - assert_int_equal(pcmk__parse_bool("0", NULL), pcmk_rc_ok); +static void +is_false(void **state) +{ + assert_parse_bool("false", pcmk_rc_ok, false); + assert_parse_bool("fAlSe", pcmk_rc_ok, false); + assert_parse_bool("off", pcmk_rc_ok, false); + assert_parse_bool("OFF", pcmk_rc_ok, false); + assert_parse_bool("no", pcmk_rc_ok, false); + assert_parse_bool("No", pcmk_rc_ok, false); + assert_parse_bool("n", pcmk_rc_ok, false); + assert_parse_bool("N", pcmk_rc_ok, false); + assert_parse_bool("0", pcmk_rc_ok, false); } static void -is_not_false(void **state) { - assert_int_equal(pcmk__parse_bool("falseee", NULL), pcmk_rc_bad_input); - assert_int_equal(pcmk__parse_bool("of", NULL), pcmk_rc_bad_input); - assert_int_equal(pcmk__parse_bool("nope", NULL), pcmk_rc_bad_input); - assert_int_equal(pcmk__parse_bool("N!", NULL), pcmk_rc_bad_input); - assert_int_equal(pcmk__parse_bool("000", NULL), pcmk_rc_bad_input); +is_not_false(void **state) +{ + assert_parse_bool("falseee", pcmk_rc_bad_input, false); + assert_parse_bool("of", pcmk_rc_bad_input, false); + assert_parse_bool("nope", pcmk_rc_bad_input, false); + assert_parse_bool("N!", pcmk_rc_bad_input, false); + assert_parse_bool("000", pcmk_rc_bad_input, false); } PCMK__UNIT_TEST(NULL, NULL, From 05469b57faab3a1bb612902e8abd5465ee196859 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Sat, 22 Mar 2025 22:48:22 -0700 Subject: [PATCH 115/186] Refactor: libcrmcommon: New pcmk__is_true() function Make it inline. There's no real benefit from unit-testing this, since it's a direct pass-through to pcmk__parse_bool() that allows treats NULL and invalid as false. Although I guess we COULD, just to make sure an invalid value that produces pcmk_rc_bad_input returns false here. Signed-off-by: Reid Wahl --- daemons/based/based_io.c | 2 +- daemons/controld/controld_cib.c | 2 +- daemons/controld/controld_control.c | 2 +- daemons/controld/controld_te_actions.c | 4 ++-- daemons/pacemakerd/pcmkd_corosync.c | 4 ++-- daemons/pacemakerd/pcmkd_subdaemons.c | 13 +++++++----- include/crm/common/strings_internal.h | 20 ++++++++++++++++++ lib/cib/cib_client.c | 2 +- lib/cib/cib_utils.c | 4 ++-- lib/common/alerts.c | 2 +- lib/common/options.c | 4 ++-- lib/pacemaker/pcmk_sched_clone.c | 4 ++-- lib/pacemaker/pcmk_sched_group.c | 6 +++--- lib/pacemaker/pcmk_sched_instances.c | 6 +++--- lib/pacemaker/pcmk_sched_nodes.c | 9 ++++++--- lib/pacemaker/pcmk_sched_ordering.c | 4 ++-- lib/pacemaker/pcmk_sched_probes.c | 6 +++--- lib/pacemaker/pcmk_ticket.c | 2 +- lib/pengine/clone.c | 4 ++-- lib/pengine/complex.c | 16 +++++++-------- lib/pengine/native.c | 8 ++++---- lib/pengine/pe_output.c | 6 +++--- lib/pengine/unpack.c | 28 +++++++++++++------------- tools/crm_resource_runtime.c | 2 +- tools/crm_ticket.c | 4 ++-- 25 files changed, 95 insertions(+), 69 deletions(-) diff --git a/daemons/based/based_io.c b/daemons/based/based_io.c index 26decf52eb8..58dcd77f32d 100644 --- a/daemons/based/based_io.c +++ b/daemons/based/based_io.c @@ -221,7 +221,7 @@ readCibXmlFile(const char *dir, const char *file, gboolean discard_status) } if (cib_writes_enabled && (use_valgrind != NULL) - && (crm_is_true(use_valgrind) + && (pcmk__is_true(use_valgrind) || (strstr(use_valgrind, PCMK__SERVER_BASED) != NULL))) { cib_writes_enabled = FALSE; diff --git a/daemons/controld/controld_cib.c b/daemons/controld/controld_cib.c index 92803606dc0..2cab05861b5 100644 --- a/daemons/controld/controld_cib.c +++ b/daemons/controld/controld_cib.c @@ -733,7 +733,7 @@ controld_record_pending_op(const char *node_name, const lrmd_rsc_info_t *rsc, // Check action's PCMK_META_RECORD_PENDING meta-attribute (defaults to true) record_pending = crm_meta_value(op->params, PCMK_META_RECORD_PENDING); - if ((record_pending != NULL) && !crm_is_true(record_pending)) { + if ((record_pending != NULL) && !pcmk__is_true(record_pending)) { pcmk__warn_once(pcmk__wo_record_pending, "The " PCMK_META_RECORD_PENDING " option (for example, " "for the %s resource's %s operation) is deprecated and " diff --git a/daemons/controld/controld_control.c b/daemons/controld/controld_control.c index abc76b8b457..14937d1add1 100644 --- a/daemons/controld/controld_control.c +++ b/daemons/controld/controld_control.c @@ -589,7 +589,7 @@ config_query_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, void } value = g_hash_table_lookup(config_hash, PCMK_OPT_SHUTDOWN_LOCK); - if (crm_is_true(value)) { + if (pcmk__is_true(value)) { controld_set_global_flags(controld_shutdown_lock_enabled); } else { controld_clear_global_flags(controld_shutdown_lock_enabled); diff --git a/daemons/controld/controld_te_actions.c b/daemons/controld/controld_te_actions.c index 5d63464b470..a5317a4a66a 100644 --- a/daemons/controld/controld_te_actions.c +++ b/daemons/controld/controld_te_actions.c @@ -140,7 +140,7 @@ execute_cluster_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) } value = crm_meta_value(action->params, PCMK__META_OP_NO_WAIT); - if (crm_is_true(value)) { + if (pcmk__is_true(value)) { no_wait = TRUE; } @@ -391,7 +391,7 @@ execute_rsc_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) } value = crm_meta_value(action->params, PCMK__META_OP_NO_WAIT); - if (crm_is_true(value)) { + if (pcmk__is_true(value)) { no_wait = TRUE; } diff --git a/daemons/pacemakerd/pcmkd_corosync.c b/daemons/pacemakerd/pcmkd_corosync.c index 7e54c42c4a8..b12a8be7ab8 100644 --- a/daemons/pacemakerd/pcmkd_corosync.c +++ b/daemons/pacemakerd/pcmkd_corosync.c @@ -1,5 +1,5 @@ /* - * Copyright 2010-2024 the Pacemaker project contributors + * Copyright 2010-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -340,7 +340,7 @@ pacemakerd_read_config(void) get_config_opt(config, local_handle, "logging.debug", &debug_enabled, PCMK_VALUE_OFF); - if (crm_is_true(debug_enabled)) { + if (pcmk__is_true(debug_enabled)) { pcmk__set_env_option(PCMK__ENV_DEBUG, "1", true); if (get_crm_log_level() < LOG_DEBUG) { set_crm_log_level(LOG_DEBUG); diff --git a/daemons/pacemakerd/pcmkd_subdaemons.c b/daemons/pacemakerd/pcmkd_subdaemons.c index 715cd754dc4..13d0caa79d6 100644 --- a/daemons/pacemakerd/pcmkd_subdaemons.c +++ b/daemons/pacemakerd/pcmkd_subdaemons.c @@ -1,5 +1,5 @@ /* - * Copyright 2010-2024 the Pacemaker project contributors + * Copyright 2010-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -323,7 +323,7 @@ pcmk_process_exit(pcmk_child_t * child) } else if (!pcmk_is_set(child->flags, child_respawn)) { /* nothing to do */ - } else if (crm_is_true(pcmk__env_option(PCMK__ENV_FAIL_FAST))) { + } else if (pcmk__is_true(pcmk__env_option(PCMK__ENV_FAIL_FAST))) { pcmk__panic("Subdaemon failed"); } else if (child_liveness(child) == pcmk_rc_ok) { @@ -431,7 +431,7 @@ start_child(pcmk_child_t * child) child->flags &= ~child_active_before_startup; child->check_count = 0; - if (env_callgrind != NULL && crm_is_true(env_callgrind)) { + if (pcmk__is_true(env_callgrind)) { use_callgrind = TRUE; use_valgrind = TRUE; @@ -440,7 +440,7 @@ start_child(pcmk_child_t * child) use_callgrind = TRUE; use_valgrind = TRUE; - } else if (env_valgrind != NULL && crm_is_true(env_valgrind)) { + } else if (pcmk__is_true(env_valgrind)) { use_valgrind = TRUE; } else if ((env_valgrind != NULL) @@ -727,7 +727,10 @@ find_and_track_existing_processes(void) switch (rc) { case pcmk_rc_ok: if (pcmk_children[i].pid == PCMK__SPECIAL_PID) { - if (crm_is_true(pcmk__env_option(PCMK__ENV_FAIL_FAST))) { + const char *fail_fast = + pcmk__env_option(PCMK__ENV_FAIL_FAST); + + if (pcmk__is_true(fail_fast)) { crm_crit("Cannot reliably track pre-existing" " authentic process behind %s IPC on this" " platform and PCMK_" PCMK__ENV_FAIL_FAST diff --git a/include/crm/common/strings_internal.h b/include/crm/common/strings_internal.h index b01f15af062..25c2b887da9 100644 --- a/include/crm/common/strings_internal.h +++ b/include/crm/common/strings_internal.h @@ -16,6 +16,7 @@ #include // guint, GList, GHashTable #include // PCMK_VALUE_TRUE, PCMK_VALUE_FALSE +#include // pcmk_rc_ok #include // crm_strdup_printf() #ifdef __cplusplus @@ -57,6 +58,25 @@ int pcmk__parse_bool(const char *input, bool *result); int pcmk__parse_ll_range(const char *srcstring, long long *start, long long *end); int pcmk__parse_ms(const char *input, long long *result); +/*! + * \internal + * \brief Check whether a string parses to \c true + * + * \param[in] input Input string + * + * \retval \c true if \p input is not \c NULL and \c pcmk__parse_bool() parses + * it to \c true + * \retval \c false otherwise + */ +static inline bool +pcmk__is_true(const char *input) +{ + bool result = false; + + return (input != NULL) && (pcmk__parse_bool(input, &result) == pcmk_rc_ok) + && result; +} + GHashTable *pcmk__strkey_table(GDestroyNotify key_destroy_func, GDestroyNotify value_destroy_func); GHashTable *pcmk__strikey_table(GDestroyNotify key_destroy_func, diff --git a/lib/cib/cib_client.c b/lib/cib/cib_client.c index 74722310bad..c906136c2cd 100644 --- a/lib/cib/cib_client.c +++ b/lib/cib/cib_client.c @@ -588,7 +588,7 @@ cib_new(void) */ pcmk__scan_port(value, &port); - if (!crm_is_true(getenv("CIB_encrypted"))) { + if (!pcmk__is_true(getenv("CIB_encrypted"))) { encrypted = FALSE; } diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c index b02746fe827..7351b71486c 100644 --- a/lib/cib/cib_utils.c +++ b/lib/cib/cib_utils.c @@ -153,7 +153,7 @@ createEmptyCib(int cib_epoch) static bool cib_acl_enabled(xmlNode *xml, const char *user) { - bool rc = FALSE; + bool rc = false; if(pcmk_acl_required(user)) { const char *value = NULL; @@ -161,7 +161,7 @@ cib_acl_enabled(xmlNode *xml, const char *user) cib_read_config(options, xml); value = pcmk__cluster_option(options, PCMK_OPT_ENABLE_ACL); - rc = crm_is_true(value); + rc = pcmk__is_true(value); g_hash_table_destroy(options); } diff --git a/lib/common/alerts.c b/lib/common/alerts.c index bca3325086e..d25521e4a37 100644 --- a/lib/common/alerts.c +++ b/lib/common/alerts.c @@ -159,7 +159,7 @@ unpack_alert_options(xmlNode *xml, pcmk__alert_t *entry, guint *max_timeout) crm_time_free(now); value = g_hash_table_lookup(config_hash, PCMK_META_ENABLED); - if ((value != NULL) && !crm_is_true(value)) { + if ((value != NULL) && !pcmk__is_true(value)) { // No need to continue unpacking rc = pcmk_rc_disabled; goto done; diff --git a/lib/common/options.c b/lib/common/options.c index 5abea87b93c..4e43976491c 100644 --- a/lib/common/options.c +++ b/lib/common/options.c @@ -1184,8 +1184,8 @@ pcmk__env_option_enabled(const char *daemon, const char *option) const char *value = pcmk__env_option(option); return (value != NULL) - && (crm_is_true(value) - || ((daemon != NULL) && (strstr(value, daemon) != NULL))); + && (pcmk__is_true(value) + || ((daemon != NULL) && (strstr(value, daemon) != NULL))); } diff --git a/lib/pacemaker/pcmk_sched_clone.c b/lib/pacemaker/pcmk_sched_clone.c index a7a24db9258..edf54ea007a 100644 --- a/lib/pacemaker/pcmk_sched_clone.c +++ b/lib/pacemaker/pcmk_sched_clone.c @@ -214,8 +214,8 @@ can_interleave(const pcmk__colocation_t *colocation) } // Only the dependent needs to be marked for interleaving - if (!crm_is_true(g_hash_table_lookup(dependent->priv->meta, - PCMK_META_INTERLEAVE))) { + if (!pcmk__is_true(g_hash_table_lookup(dependent->priv->meta, + PCMK_META_INTERLEAVE))) { return false; } diff --git a/lib/pacemaker/pcmk_sched_group.c b/lib/pacemaker/pcmk_sched_group.c index f0353b479c9..665b5ffcb6d 100644 --- a/lib/pacemaker/pcmk_sched_group.c +++ b/lib/pacemaker/pcmk_sched_group.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. * @@ -140,8 +140,8 @@ pcmk__group_create_actions(pcmk_resource_t *rsc) create_group_pseudo_op(rsc, PCMK_ACTION_RUNNING); create_group_pseudo_op(rsc, PCMK_ACTION_STOP); create_group_pseudo_op(rsc, PCMK_ACTION_STOPPED); - if (crm_is_true(g_hash_table_lookup(rsc->priv->meta, - PCMK_META_PROMOTABLE))) { + if (pcmk__is_true(g_hash_table_lookup(rsc->priv->meta, + PCMK_META_PROMOTABLE))) { create_group_pseudo_op(rsc, PCMK_ACTION_DEMOTE); create_group_pseudo_op(rsc, PCMK_ACTION_DEMOTED); create_group_pseudo_op(rsc, PCMK_ACTION_PROMOTE); diff --git a/lib/pacemaker/pcmk_sched_instances.c b/lib/pacemaker/pcmk_sched_instances.c index f2bc1a432cd..0792abf2607 100644 --- a/lib/pacemaker/pcmk_sched_instances.c +++ b/lib/pacemaker/pcmk_sched_instances.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. * @@ -1500,8 +1500,8 @@ can_interleave_actions(const pcmk_action_t *first, const pcmk_action_t *then) rsc = then->rsc; } - interleave = crm_is_true(g_hash_table_lookup(rsc->priv->meta, - PCMK_META_INTERLEAVE)); + interleave = pcmk__is_true(g_hash_table_lookup(rsc->priv->meta, + PCMK_META_INTERLEAVE)); pcmk__rsc_trace(rsc, "'%s then %s' will %sbe interleaved (based on %s)", first->uuid, then->uuid, (interleave? "" : "not "), rsc->id); diff --git a/lib/pacemaker/pcmk_sched_nodes.c b/lib/pacemaker/pcmk_sched_nodes.c index 544a8ced6be..8f5f94d3469 100644 --- a/lib/pacemaker/pcmk_sched_nodes.c +++ b/lib/pacemaker/pcmk_sched_nodes.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. * @@ -405,8 +405,11 @@ pcmk__apply_node_health(pcmk_scheduler_t *scheduler) /* Negative health scores do not apply to resources with * PCMK_META_ALLOW_UNHEALTHY_NODES=true. */ - constrain = !crm_is_true(g_hash_table_lookup(rsc->priv->meta, - PCMK_META_ALLOW_UNHEALTHY_NODES)); + const char *allow = + g_hash_table_lookup(rsc->priv->meta, + PCMK_META_ALLOW_UNHEALTHY_NODES); + + constrain = !pcmk__is_true(allow); } if (constrain) { pcmk__new_location(strategy_str, rsc, health, NULL, node); diff --git a/lib/pacemaker/pcmk_sched_ordering.c b/lib/pacemaker/pcmk_sched_ordering.c index fb7fdfbcea1..3aa81fa159f 100644 --- a/lib/pacemaker/pcmk_sched_ordering.c +++ b/lib/pacemaker/pcmk_sched_ordering.c @@ -144,7 +144,7 @@ get_ordering_symmetry(const xmlNode *xml_obj, enum pe_order_kind parent_kind, rc = pcmk__xe_get_bool_attr(xml_obj, PCMK_XA_SYMMETRICAL, &symmetric); if (rc != pcmk_rc_ok && parent_symmetrical_s != NULL) { - symmetric = crm_is_true(parent_symmetrical_s); + symmetric = pcmk__is_true(parent_symmetrical_s); rc = pcmk_rc_ok; } @@ -583,7 +583,7 @@ unpack_order_set(const xmlNode *set, enum pe_order_kind parent_kind, sequential_s = "1"; } - sequential = crm_is_true(sequential_s); + sequential = pcmk__is_true(sequential_s); symmetry = get_ordering_symmetry(set, parent_kind, parent_symmetrical_s); flags = ordering_flags_for_kind(local_kind, action, symmetry); diff --git a/lib/pacemaker/pcmk_sched_probes.c b/lib/pacemaker/pcmk_sched_probes.c index bda90cee199..6223d246d08 100644 --- a/lib/pacemaker/pcmk_sched_probes.c +++ b/lib/pacemaker/pcmk_sched_probes.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. * @@ -608,8 +608,8 @@ add_restart_orderings_for_probe(pcmk_action_t *probe, pcmk_action_t *after) if ((after->rsc != NULL) && (after->rsc->priv->variant > pcmk__rsc_variant_group)) { - interleave = crm_is_true(g_hash_table_lookup(after->rsc->priv->meta, - PCMK_META_INTERLEAVE)); + interleave = pcmk__is_true(g_hash_table_lookup(after->rsc->priv->meta, + PCMK_META_INTERLEAVE)); if (interleave) { compatible_rsc = pcmk__find_compatible_instance(probe->rsc, after->rsc, diff --git a/lib/pacemaker/pcmk_ticket.c b/lib/pacemaker/pcmk_ticket.c index 4477e5192d3..14ab65ecd99 100644 --- a/lib/pacemaker/pcmk_ticket.c +++ b/lib/pacemaker/pcmk_ticket.c @@ -64,7 +64,7 @@ add_attribute_xml(pcmk_scheduler_t *scheduler, const char *ticket_id, if (pcmk__str_eq(key, PCMK__XA_GRANTED, pcmk__str_none) && ((ticket == NULL) || !pcmk_is_set(ticket->flags, pcmk__ticket_granted)) - && crm_is_true(value)) { + && pcmk__is_true(value)) { char *now = pcmk__ttoa(time(NULL)); diff --git a/lib/pengine/clone.c b/lib/pengine/clone.c index bcfaf7fd5b8..d6c081567fd 100644 --- a/lib/pengine/clone.c +++ b/lib/pengine/clone.c @@ -359,8 +359,8 @@ clone_unpack(pcmk_resource_t *rsc) clone_data->clone_max = unpack_meta_int(rsc, PCMK_META_CLONE_MAX, NULL, QB_MAX(1, num_nodes)); - if (crm_is_true(g_hash_table_lookup(rsc->priv->meta, - PCMK_META_ORDERED))) { + if (pcmk__is_true(g_hash_table_lookup(rsc->priv->meta, + PCMK_META_ORDERED))) { clone_data->flags = pcmk__set_flags_as(__func__, __LINE__, LOG_TRACE, "Clone", rsc->id, clone_data->flags, diff --git a/lib/pengine/complex.c b/lib/pengine/complex.c index f79c8582f78..4dd1eeea344 100644 --- a/lib/pengine/complex.c +++ b/lib/pengine/complex.c @@ -437,7 +437,7 @@ detect_unique(const pcmk_resource_t *rsc) } return false; } - return crm_is_true(value); + return pcmk__is_true(value); } static void @@ -795,12 +795,12 @@ pe__unpack_resource(xmlNode *xml_obj, pcmk_resource_t **rsc, unpack_priority(*rsc); value = g_hash_table_lookup(rsc_private->meta, PCMK_META_CRITICAL); - if ((value == NULL) || crm_is_true(value)) { + if ((value == NULL) || pcmk__is_true(value)) { pcmk__set_rsc_flags(*rsc, pcmk__rsc_critical); } value = g_hash_table_lookup(rsc_private->meta, PCMK_META_NOTIFY); - if (crm_is_true(value)) { + if (pcmk__is_true(value)) { pcmk__set_rsc_flags(*rsc, pcmk__rsc_notify); } @@ -814,7 +814,7 @@ pe__unpack_resource(xmlNode *xml_obj, pcmk_resource_t **rsc, } value = g_hash_table_lookup(rsc_private->meta, PCMK_META_ALLOW_MIGRATE); - if (crm_is_true(value)) { + if (pcmk__is_true(value)) { pcmk__set_rsc_flags(*rsc, pcmk__rsc_migratable); } else if ((value == NULL) && remote_node) { /* By default, we want remote nodes to be able @@ -835,7 +835,7 @@ pe__unpack_resource(xmlNode *xml_obj, pcmk_resource_t **rsc, " to the explicit value '" PCMK_VALUE_DEFAULT "' is deprecated and will be removed in a " "future release (just leave it unset)"); - } else if (crm_is_true(value)) { + } else if (pcmk__is_true(value)) { pcmk__set_rsc_flags(*rsc, pcmk__rsc_managed); } else { pcmk__clear_rsc_flags(*rsc, pcmk__rsc_managed); @@ -843,7 +843,7 @@ pe__unpack_resource(xmlNode *xml_obj, pcmk_resource_t **rsc, } value = g_hash_table_lookup(rsc_private->meta, PCMK_META_MAINTENANCE); - if (crm_is_true(value)) { + if (pcmk__is_true(value)) { pcmk__clear_rsc_flags(*rsc, pcmk__rsc_managed); pcmk__set_rsc_flags(*rsc, pcmk__rsc_maintenance); } @@ -856,8 +856,8 @@ pe__unpack_resource(xmlNode *xml_obj, pcmk_resource_t **rsc, if (detect_unique(*rsc)) { pcmk__set_rsc_flags(*rsc, pcmk__rsc_unique); } - if (crm_is_true(g_hash_table_lookup((*rsc)->priv->meta, - PCMK_META_PROMOTABLE))) { + if (pcmk__is_true(g_hash_table_lookup((*rsc)->priv->meta, + PCMK_META_PROMOTABLE))) { pcmk__set_rsc_flags(*rsc, pcmk__rsc_promotable); } } else { diff --git a/lib/pengine/native.c b/lib/pengine/native.c index ddc91b7ae11..665420f5f29 100644 --- a/lib/pengine/native.c +++ b/lib/pengine/native.c @@ -652,8 +652,8 @@ pe__common_output_html(pcmk__output_t *out, const pcmk_resource_t *rsc, pcmk__assert((kind != NULL) && pcmk__is_primitive(rsc)); - if (crm_is_true(g_hash_table_lookup(rsc->priv->meta, - PCMK__META_INTERNAL_RSC)) + if (pcmk__is_true(g_hash_table_lookup(rsc->priv->meta, + PCMK__META_INTERNAL_RSC)) && !pcmk_is_set(show_opts, pcmk_show_implicit_rscs)) { crm_trace("skipping print of internal resource %s", rsc->id); @@ -701,8 +701,8 @@ pe__common_output_text(pcmk__output_t *out, const pcmk_resource_t *rsc, pcmk__assert(pcmk__is_primitive(rsc)); - if (crm_is_true(g_hash_table_lookup(rsc->priv->meta, - PCMK__META_INTERNAL_RSC)) + if (pcmk__is_true(g_hash_table_lookup(rsc->priv->meta, + PCMK__META_INTERNAL_RSC)) && !pcmk_is_set(show_opts, pcmk_show_implicit_rscs)) { crm_trace("skipping print of internal resource %s", rsc->id); diff --git a/lib/pengine/pe_output.c b/lib/pengine/pe_output.c index 5e24a231007..140cf51c2b2 100644 --- a/lib/pengine/pe_output.c +++ b/lib/pengine/pe_output.c @@ -925,7 +925,7 @@ cluster_dc_html(pcmk__output_t *out, va_list args) { child = pcmk__html_create(node, PCMK__XE_SPAN, NULL, NULL); pcmk__xe_set_content(child, " partition"); - if (crm_is_true(quorum)) { + if (pcmk__is_true(quorum)) { child = pcmk__html_create(node, PCMK__XE_SPAN, NULL, NULL); pcmk__xe_set_content(child, " with"); @@ -962,7 +962,7 @@ cluster_dc_text(pcmk__output_t *out, va_list args) { "%s (version %s) - %spartition %s quorum", dc_name, dc_version_s ? dc_version_s : "unknown", mixed_version ? "MIXED-VERSION " : "", - crm_is_true(quorum) ? "with" : "WITHOUT"); + pcmk__is_true(quorum) ? "with" : "WITHOUT"); } else { out->list_item(out, "Current DC", "NONE"); } @@ -981,7 +981,7 @@ cluster_dc_xml(pcmk__output_t *out, va_list args) { bool mixed_version = va_arg(args, int); if (dc) { - const char *with_quorum = pcmk__btoa(crm_is_true(quorum)); + const char *with_quorum = pcmk__btoa(pcmk__is_true(quorum)); const char *mixed_version_s = pcmk__btoa(mixed_version); pcmk__output_create_xml_node(out, PCMK_XE_CURRENT_DC, diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c index c1de49bae58..7213beed1cd 100644 --- a/lib/pengine/unpack.c +++ b/lib/pengine/unpack.c @@ -55,7 +55,7 @@ struct action_history { const char *scf_value = pcmk__cluster_option(config_hash, (option)); \ \ if (scf_value != NULL) { \ - if (crm_is_true(scf_value)) { \ + if (pcmk__is_true(scf_value)) { \ (scheduler)->flags = pcmk__set_flags_as(__func__, __LINE__, \ LOG_TRACE, "Scheduler", \ crm_system_name, (scheduler)->flags, \ @@ -240,7 +240,7 @@ unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler) } value = pcmk__cluster_option(config_hash, PCMK_OPT_HAVE_WATCHDOG); - if (value && crm_is_true(value)) { + if (pcmk__is_true(value)) { crm_info("Watchdog-based self-fencing will be performed via SBD if " "fencing is required and " PCMK_OPT_STONITH_WATCHDOG_TIMEOUT " is nonzero"); @@ -1009,7 +1009,7 @@ unpack_ticket_state(xmlNode *xml_ticket, void *userdata) } granted = g_hash_table_lookup(ticket->state, PCMK__XA_GRANTED); - if (granted && crm_is_true(granted)) { + if (pcmk__is_true(granted)) { pcmk__set_ticket_flags(ticket, pcmk__ticket_granted); crm_info("We have ticket '%s'", ticket->id); } else { @@ -1032,7 +1032,7 @@ unpack_ticket_state(xmlNode *xml_ticket, void *userdata) } standby = g_hash_table_lookup(ticket->state, PCMK_XA_STANDBY); - if (standby && crm_is_true(standby)) { + if (pcmk__is_true(standby)) { pcmk__set_ticket_flags(ticket, pcmk__ticket_standby); if (pcmk_is_set(ticket->flags, pcmk__ticket_granted)) { crm_info("Granted ticket '%s' is in standby-mode", ticket->id); @@ -1087,14 +1087,14 @@ unpack_handle_remote_attrs(pcmk_node_t *this_node, const xmlNode *state, this_node->details->shutdown = TRUE; } - if (crm_is_true(pcmk__node_attr(this_node, PCMK_NODE_ATTR_STANDBY, NULL, - pcmk__rsc_node_current))) { + if (pcmk__is_true(pcmk__node_attr(this_node, PCMK_NODE_ATTR_STANDBY, NULL, + pcmk__rsc_node_current))) { crm_info("%s is in standby mode", pcmk__node_name(this_node)); pcmk__set_node_flags(this_node, pcmk__node_standby); } - if (crm_is_true(pcmk__node_attr(this_node, PCMK_NODE_ATTR_MAINTENANCE, NULL, - pcmk__rsc_node_current)) + if (pcmk__is_true(pcmk__node_attr(this_node, PCMK_NODE_ATTR_MAINTENANCE, + NULL, pcmk__rsc_node_current)) || ((rsc != NULL) && !pcmk_is_set(rsc->flags, pcmk__rsc_managed))) { crm_info("%s is in maintenance mode", pcmk__node_name(this_node)); this_node->details->maintenance = TRUE; @@ -1103,7 +1103,7 @@ unpack_handle_remote_attrs(pcmk_node_t *this_node, const xmlNode *state, discovery = pcmk__node_attr(this_node, PCMK__NODE_ATTR_RESOURCE_DISCOVERY_ENABLED, NULL, pcmk__rsc_node_current); - if ((discovery != NULL) && !crm_is_true(discovery)) { + if ((discovery != NULL) && !pcmk__is_true(discovery)) { pcmk__warn_once(pcmk__wo_rdisc_enabled, "Support for the " PCMK__NODE_ATTR_RESOURCE_DISCOVERY_ENABLED @@ -1149,14 +1149,14 @@ unpack_transient_attributes(const xmlNode *state, pcmk_node_t *node, add_node_attrs(attrs, node, TRUE, scheduler); - if (crm_is_true(pcmk__node_attr(node, PCMK_NODE_ATTR_STANDBY, NULL, - pcmk__rsc_node_current))) { + if (pcmk__is_true(pcmk__node_attr(node, PCMK_NODE_ATTR_STANDBY, NULL, + pcmk__rsc_node_current))) { crm_info("%s is in standby mode", pcmk__node_name(node)); pcmk__set_node_flags(node, pcmk__node_standby); } - if (crm_is_true(pcmk__node_attr(node, PCMK_NODE_ATTR_MAINTENANCE, NULL, - pcmk__rsc_node_current))) { + if (pcmk__is_true(pcmk__node_attr(node, PCMK_NODE_ATTR_MAINTENANCE, NULL, + pcmk__rsc_node_current))) { crm_info("%s is in maintenance mode", pcmk__node_name(node)); node->details->maintenance = TRUE; } @@ -1164,7 +1164,7 @@ unpack_transient_attributes(const xmlNode *state, pcmk_node_t *node, discovery = pcmk__node_attr(node, PCMK__NODE_ATTR_RESOURCE_DISCOVERY_ENABLED, NULL, pcmk__rsc_node_current); - if ((discovery != NULL) && !crm_is_true(discovery)) { + if ((discovery != NULL) && !pcmk__is_true(discovery)) { pcmk__config_warn("Ignoring " PCMK__NODE_ATTR_RESOURCE_DISCOVERY_ENABLED " attribute for %s because disabling resource" diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c index 92dd8a97235..33159929d6d 100644 --- a/tools/crm_resource_runtime.c +++ b/tools/crm_resource_runtime.c @@ -1174,7 +1174,7 @@ check_managed(resource_checks_t *checks) const char *managed_s = g_hash_table_lookup(checks->rsc->priv->meta, PCMK_META_IS_MANAGED); - if ((managed_s != NULL) && !crm_is_true(managed_s)) { + if ((managed_s != NULL) && !pcmk__is_true(managed_s)) { checks->flags |= rsc_unmanaged; } } diff --git a/tools/crm_ticket.c b/tools/crm_ticket.c index 251ed8449fc..9c7f2c0ce1d 100644 --- a/tools/crm_ticket.c +++ b/tools/crm_ticket.c @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the Pacemaker project contributors + * Copyright 2012-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -575,7 +575,7 @@ main(int argc, char **argv) const char *value = NULL; value = g_hash_table_lookup(attr_set, PCMK__XA_GRANTED); - if (crm_is_true(value)) { + if (pcmk__is_true(value)) { ticket_grant_warning(options.ticket_id); } else { ticket_revoke_warning(options.ticket_id); From 67359c5e49afcb7311d2dd61dc54d7ed78a59f3f Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Sat, 22 Mar 2025 22:57:39 -0700 Subject: [PATCH 116/186] API: libcrmcommon: Deprecate crm_is_true() We can always expose this again if there is a good reason why an external program would need to check whether Pacemaker would evaluate a given string to true. Signed-off-by: Reid Wahl --- include/crm/common/strings.h | 3 -- include/crm/common/strings_compat.h | 6 +++ lib/common/strings.c | 16 +++--- lib/common/tests/strings/Makefile.am | 3 +- lib/common/tests/strings/crm_is_true_test.c | 57 --------------------- 5 files changed, 15 insertions(+), 70 deletions(-) delete mode 100644 lib/common/tests/strings/crm_is_true_test.c diff --git a/include/crm/common/strings.h b/include/crm/common/strings.h index 6ab93991082..c6950b95250 100644 --- a/include/crm/common/strings.h +++ b/include/crm/common/strings.h @@ -24,9 +24,6 @@ extern "C" { int pcmk_parse_interval_spec(const char *input, guint *result_ms); -// NOTE: sbd (as of at least 1.5.2) uses this -gboolean crm_is_true(const char *s); - int crm_str_to_boolean(const char *s, int *ret); // NOTE: sbd (as of at least 1.5.2) uses this diff --git a/include/crm/common/strings_compat.h b/include/crm/common/strings_compat.h index 377ff30b43d..c4f9dd16b29 100644 --- a/include/crm/common/strings_compat.h +++ b/include/crm/common/strings_compat.h @@ -7,6 +7,8 @@ * version 2.1 or later (LGPLv2.1+) WITHOUT ANY WARRANTY. */ +#include // gboolean + #ifndef PCMK__CRM_COMMON_STRINGS_COMPAT__H #define PCMK__CRM_COMMON_STRINGS_COMPAT__H @@ -26,6 +28,10 @@ extern "C" { //! \deprecated Do not use long long crm_get_msec(const char *input); +// NOTE: sbd (as of at least 1.5.2) uses this +//! \deprecated Do not use +gboolean crm_is_true(const char *s); + #ifdef __cplusplus } #endif diff --git a/lib/common/strings.c b/lib/common/strings.c index 5a44b0098ff..e91a12d67fb 100644 --- a/lib/common/strings.c +++ b/lib/common/strings.c @@ -392,14 +392,6 @@ pcmk_parse_interval_spec(const char *input, guint *result_ms) return rc; } -gboolean -crm_is_true(const char *s) -{ - gboolean ret = FALSE; - - return (crm_str_to_boolean(s, &ret) < 0)? FALSE : ret; -} - int crm_str_to_boolean(const char *s, int *ret) { @@ -1484,5 +1476,13 @@ crm_get_msec(const char *input) return (msec * multiplier) / divisor; } +gboolean +crm_is_true(const char *s) +{ + gboolean ret = FALSE; + + return (crm_str_to_boolean(s, &ret) < 0)? FALSE : ret; +} + // LCOV_EXCL_STOP // End deprecated API diff --git a/lib/common/tests/strings/Makefile.am b/lib/common/tests/strings/Makefile.am index 1b22d9fa36f..6e945010748 100644 --- a/lib/common/tests/strings/Makefile.am +++ b/lib/common/tests/strings/Makefile.am @@ -12,8 +12,7 @@ include $(top_srcdir)/mk/tap.mk include $(top_srcdir)/mk/unittest.mk # Add "_test" to the end of all test program names to simplify .gitignore. -check_PROGRAMS = crm_is_true_test \ - pcmk__add_word_test \ +check_PROGRAMS = pcmk__add_word_test \ pcmk__btoa_test \ pcmk__compress_test \ pcmk__ends_with_test \ diff --git a/lib/common/tests/strings/crm_is_true_test.c b/lib/common/tests/strings/crm_is_true_test.c deleted file mode 100644 index 74baa7f0e8b..00000000000 --- a/lib/common/tests/strings/crm_is_true_test.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2021-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 - -static void -bad_input(void **state) { - assert_false(crm_is_true(NULL)); -} - -static void -is_true(void **state) { - assert_true(crm_is_true("true")); - assert_true(crm_is_true("TrUe")); - assert_true(crm_is_true("on")); - assert_true(crm_is_true("ON")); - assert_true(crm_is_true("yes")); - assert_true(crm_is_true("yES")); - assert_true(crm_is_true("y")); - assert_true(crm_is_true("Y")); - assert_true(crm_is_true("1")); -} - -static void -is_false(void **state) { - assert_false(crm_is_true("false")); - assert_false(crm_is_true("fAlSe")); - assert_false(crm_is_true(PCMK_VALUE_OFF)); - assert_false(crm_is_true("OFF")); - assert_false(crm_is_true("no")); - assert_false(crm_is_true("No")); - assert_false(crm_is_true("n")); - assert_false(crm_is_true("N")); - assert_false(crm_is_true("0")); - - assert_false(crm_is_true("")); - assert_false(crm_is_true("blahblah")); - - assert_false(crm_is_true("truedat")); - assert_false(crm_is_true("onnn")); - assert_false(crm_is_true("yep")); - assert_false(crm_is_true("Y!")); - assert_false(crm_is_true("100")); -} - -PCMK__UNIT_TEST(NULL, NULL, - cmocka_unit_test(bad_input), - cmocka_unit_test(is_true), - cmocka_unit_test(is_false)) From 27af7c4b588e065742e0dbce63e9ff516bf5de28 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Sat, 22 Mar 2025 23:00:00 -0700 Subject: [PATCH 117/186] API: libcrmcommon: Deprecate crm_str_to_boolean() We can always expose this again if there is a good reason why an external program would need to check how Pacemaker would parse a string to a boolean. Signed-off-by: Reid Wahl --- include/crm/common/strings.h | 2 -- include/crm/common/strings_compat.h | 3 ++ lib/common/strings.c | 48 ++++++++++++++--------------- 3 files changed, 27 insertions(+), 26 deletions(-) diff --git a/include/crm/common/strings.h b/include/crm/common/strings.h index c6950b95250..6368c42bef5 100644 --- a/include/crm/common/strings.h +++ b/include/crm/common/strings.h @@ -24,8 +24,6 @@ extern "C" { int pcmk_parse_interval_spec(const char *input, guint *result_ms); -int crm_str_to_boolean(const char *s, int *ret); - // NOTE: sbd (as of at least 1.5.2) uses this char *crm_strdup_printf(char const *format, ...) G_GNUC_PRINTF(1, 2); diff --git a/include/crm/common/strings_compat.h b/include/crm/common/strings_compat.h index c4f9dd16b29..a5b5cfb83c6 100644 --- a/include/crm/common/strings_compat.h +++ b/include/crm/common/strings_compat.h @@ -32,6 +32,9 @@ long long crm_get_msec(const char *input); //! \deprecated Do not use gboolean crm_is_true(const char *s); +//! \deprecated Do not use +int crm_str_to_boolean(const char *s, int *ret); + #ifdef __cplusplus } #endif diff --git a/lib/common/strings.c b/lib/common/strings.c index e91a12d67fb..52621fb18fe 100644 --- a/lib/common/strings.c +++ b/lib/common/strings.c @@ -392,30 +392,6 @@ pcmk_parse_interval_spec(const char *input, guint *result_ms) return rc; } -int -crm_str_to_boolean(const char *s, int *ret) -{ - if (s == NULL) { - return -1; - } - - if (pcmk__strcase_any_of(s, PCMK_VALUE_TRUE, "on", "yes", "y", "1", NULL)) { - if (ret != NULL) { - *ret = TRUE; - } - return 1; - } - - if (pcmk__strcase_any_of(s, PCMK_VALUE_FALSE, PCMK_VALUE_OFF, "no", "n", - "0", NULL)) { - if (ret != NULL) { - *ret = FALSE; - } - return 1; - } - return -1; -} - /*! * \internal * \brief Replace any trailing newlines in a string with \0's @@ -1484,5 +1460,29 @@ crm_is_true(const char *s) return (crm_str_to_boolean(s, &ret) < 0)? FALSE : ret; } +int +crm_str_to_boolean(const char *s, int *ret) +{ + if (s == NULL) { + return -1; + } + + if (pcmk__strcase_any_of(s, PCMK_VALUE_TRUE, "on", "yes", "y", "1", NULL)) { + if (ret != NULL) { + *ret = TRUE; + } + return 1; + } + + if (pcmk__strcase_any_of(s, PCMK_VALUE_FALSE, PCMK_VALUE_OFF, "no", "n", + "0", NULL)) { + if (ret != NULL) { + *ret = FALSE; + } + return 1; + } + return -1; +} + // LCOV_EXCL_STOP // End deprecated API From 2c3dbcaaf5f7e514497d3414161af263f7cdf7b7 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Sun, 23 Mar 2025 01:42:45 -0700 Subject: [PATCH 118/186] Refactor: libcrmcommon: New pcmk__assert_asprintf() To replace crm_strdup_sprintf() Signed-off-by: Reid Wahl --- daemons/attrd/attrd_attributes.c | 8 +- daemons/attrd/attrd_cib.c | 26 ++-- daemons/attrd/attrd_ipc.c | 6 +- daemons/attrd/attrd_messages.c | 17 +-- daemons/attrd/attrd_utils.c | 7 +- daemons/based/based_io.c | 19 +-- daemons/based/based_transaction.c | 10 +- daemons/controld/controld_cib.c | 34 +++--- daemons/controld/controld_execd.c | 10 +- daemons/controld/controld_fencing.c | 4 +- daemons/controld/controld_messages.c | 2 +- daemons/controld/controld_schedulerd.c | 11 +- daemons/controld/controld_te_actions.c | 5 +- daemons/controld/controld_te_events.c | 2 +- daemons/execd/remoted_proxy.c | 3 +- daemons/execd/remoted_schemas.c | 2 +- daemons/fenced/fenced_cib.c | 2 +- daemons/fenced/fenced_commands.c | 18 +-- daemons/fenced/fenced_remote.c | 4 +- daemons/fenced/pacemaker-fenced.c | 3 +- daemons/pacemakerd/pcmkd_messages.c | 18 +-- daemons/pacemakerd/pcmkd_subdaemons.c | 9 +- daemons/schedulerd/schedulerd_messages.c | 18 +-- include/crm/common/internal.h | 8 +- include/crm/common/strings_internal.h | 9 +- lib/cib/cib_attrs.c | 20 +-- lib/cib/cib_client.c | 6 +- lib/cib/cib_file.c | 16 +-- lib/cib/cib_ops.c | 12 +- lib/cluster/corosync.c | 10 +- lib/cluster/cpg.c | 2 +- lib/cluster/membership.c | 6 +- lib/common/actions.c | 10 +- lib/common/agents.c | 11 +- lib/common/attrs.c | 4 +- lib/common/cmdline.c | 5 +- lib/common/digest.c | 2 +- lib/common/io.c | 16 +-- lib/common/ipc_controld.c | 6 +- lib/common/ipc_pacemakerd.c | 5 +- lib/common/ipc_schedulerd.c | 4 +- lib/common/logging.c | 12 +- lib/common/mainloop.c | 6 +- lib/common/messages.c | 6 +- lib/common/nodes.c | 2 +- lib/common/nvpair.c | 5 +- lib/common/options_display.c | 4 +- lib/common/output_html.c | 2 +- lib/common/output_xml.c | 2 +- lib/common/patchset.c | 2 +- lib/common/patchset_display.c | 5 +- lib/common/procfs.c | 7 +- lib/common/schemas.c | 15 +-- lib/common/strings.c | 29 +++++ .../tests/iso8601/crm_time_add_days_test.c | 7 +- .../tests/iso8601/crm_time_add_years_test.c | 5 +- .../nodes/pcmk_foreach_active_resource_test.c | 4 +- .../tests/nvpair/pcmk__xe_get_flags_test.c | 2 +- .../probes/pcmk_xe_mask_probe_failure_test.c | 100 +++++++-------- .../tests/rules/pcmk__cmp_by_type_test.c | 7 +- .../tests/schemas/pcmk__schema_init_test.c | 8 +- .../tests/scores/pcmk_parse_score_test.c | 4 +- .../tests/strings/pcmk__parse_ms_test.c | 4 +- lib/common/tests/strings/pcmk__scan_ll_test.c | 4 +- .../xml_element/pcmk__xe_get_score_test.c | 2 +- lib/common/tls.c | 4 +- lib/common/unittest.c | 15 +-- lib/common/xml.c | 10 +- lib/common/xml_element.c | 16 +-- lib/common/xml_idref.c | 2 +- lib/common/xml_io.c | 4 +- lib/common/xpath.c | 2 +- lib/fencing/st_actions.c | 13 +- lib/fencing/st_client.c | 44 ++++--- lib/fencing/st_lha.c | 14 +-- lib/fencing/st_output.c | 13 +- lib/fencing/st_rhcs.c | 9 +- lib/lrmd/lrmd_alerts.c | 4 +- lib/lrmd/lrmd_client.c | 4 +- lib/lrmd/lrmd_output.c | 7 +- lib/pacemaker/pcmk_acl.c | 4 +- lib/pacemaker/pcmk_graph_logging.c | 6 +- lib/pacemaker/pcmk_injections.c | 26 ++-- lib/pacemaker/pcmk_output.c | 95 ++++++++------- lib/pacemaker/pcmk_resource.c | 2 +- lib/pacemaker/pcmk_rule.c | 30 ++--- lib/pacemaker/pcmk_sched_actions.c | 21 ++-- lib/pacemaker/pcmk_sched_colocation.c | 2 +- lib/pacemaker/pcmk_sched_fencing.c | 6 +- lib/pacemaker/pcmk_sched_ordering.c | 6 +- lib/pacemaker/pcmk_sched_recurring.c | 2 +- lib/pacemaker/pcmk_sched_utilization.c | 9 +- lib/pacemaker/pcmk_simulate.c | 37 +++--- lib/pacemaker/pcmk_ticket.c | 18 +-- lib/pengine/bundle.c | 19 +-- lib/pengine/clone.c | 11 +- lib/pengine/complex.c | 4 +- lib/pengine/failcounts.c | 24 ++-- lib/pengine/pe_actions.c | 16 +-- lib/pengine/pe_digest.c | 6 +- lib/pengine/pe_output.c | 115 +++++++++--------- .../tests/native/native_find_rsc_test.c | 8 +- .../tests/native/pe_base_name_eq_test.c | 4 +- lib/pengine/unpack.c | 26 ++-- lib/services/services_linux.c | 6 +- lib/services/services_lsb.c | 22 ++-- lib/services/services_ocf.c | 7 +- lib/services/systemd.c | 14 +-- tools/crm_mon.c | 6 +- tools/crm_node.c | 8 +- tools/crm_resource.c | 6 +- tools/crm_resource_ban.c | 2 +- tools/crm_resource_runtime.c | 35 +++--- tools/crm_shadow.c | 21 ++-- tools/stonith_admin.c | 4 +- 115 files changed, 766 insertions(+), 657 deletions(-) diff --git a/daemons/attrd/attrd_attributes.c b/daemons/attrd/attrd_attributes.c index d915d64de99..bbb05e9cc76 100644 --- a/daemons/attrd/attrd_attributes.c +++ b/daemons/attrd/attrd_attributes.c @@ -243,7 +243,7 @@ attrd_set_id(const attribute_t *attr, const char *node_state_id) * not limited by the schema in any way, but it's still unfortunate. * For backward compatibility reasons, we can't change this. */ - set_id = crm_strdup_printf("%s-%s", PCMK_XE_STATUS, node_state_id); + set_id = pcmk__assert_asprintf("%s-%s", PCMK_XE_STATUS, node_state_id); } else { /* @COMPAT When the user specifies a set ID for an attribute, it is the * same for every node. That is less than ideal, but again, the schema @@ -273,11 +273,11 @@ attrd_nvpair_id(const attribute_t *attr, const char *node_state_id) char *nvpair_id = NULL; if (attr->set_id != NULL) { - nvpair_id = crm_strdup_printf("%s-%s", attr->set_id, attr->id); + nvpair_id = pcmk__assert_asprintf("%s-%s", attr->set_id, attr->id); } else { - nvpair_id = crm_strdup_printf(PCMK_XE_STATUS "-%s-%s", - node_state_id, attr->id); + nvpair_id = pcmk__assert_asprintf(PCMK_XE_STATUS "-%s-%s", + node_state_id, attr->id); } pcmk__xml_sanitize_id(nvpair_id); return nvpair_id; diff --git a/daemons/attrd/attrd_cib.c b/daemons/attrd/attrd_cib.c index a3925962483..1abaa270e03 100644 --- a/daemons/attrd/attrd_cib.c +++ b/daemons/attrd/attrd_cib.c @@ -194,7 +194,7 @@ attrd_cib_erase_transient_attrs(const char *node) CRM_CHECK(node != NULL, return); - xpath = crm_strdup_printf(XPATH_TRANSIENT, node); + xpath = pcmk__assert_asprintf(XPATH_TRANSIENT, node); crm_debug("Clearing transient node attributes for %s from CIB using %s", node, xpath); @@ -392,18 +392,18 @@ static int add_unset_attr_update(const attribute_t *attr, const char *attr_id, const char *node_id, const char *set_id) { - char *xpath = crm_strdup_printf("/" PCMK_XE_CIB - "/" PCMK_XE_STATUS - "/" PCMK__XE_NODE_STATE - "[@" PCMK_XA_ID "='%s']" - "/" PCMK__XE_TRANSIENT_ATTRIBUTES - "[@" PCMK_XA_ID "='%s']" - "/%s[@" PCMK_XA_ID "='%s']" - "/" PCMK_XE_NVPAIR - "[@" PCMK_XA_ID "='%s' " - "and @" PCMK_XA_NAME "='%s']", - node_id, node_id, attr->set_type, set_id, - attr_id, attr->id); + char *xpath = pcmk__assert_asprintf("/" PCMK_XE_CIB + "/" PCMK_XE_STATUS + "/" PCMK__XE_NODE_STATE + "[@" PCMK_XA_ID "='%s']" + "/" PCMK__XE_TRANSIENT_ATTRIBUTES + "[@" PCMK_XA_ID "='%s']" + "/%s[@" PCMK_XA_ID "='%s']" + "/" PCMK_XE_NVPAIR + "[@" PCMK_XA_ID "='%s' " + "and @" PCMK_XA_NAME "='%s']", + node_id, node_id, attr->set_type, + set_id, attr_id, attr->id); int rc = the_cib->cmds->remove(the_cib, xpath, NULL, cib_xpath|cib_transaction); diff --git a/daemons/attrd/attrd_ipc.c b/daemons/attrd/attrd_ipc.c index 506f3a653b5..0f07d81e013 100644 --- a/daemons/attrd/attrd_ipc.c +++ b/daemons/attrd/attrd_ipc.c @@ -113,14 +113,14 @@ attrd_client_clear_failure(pcmk__request_t *request) char *pattern; if (op == NULL) { - pattern = crm_strdup_printf(ATTRD_RE_CLEAR_ONE, rsc); + pattern = pcmk__assert_asprintf(ATTRD_RE_CLEAR_ONE, rsc); } else { guint interval_ms = 0U; pcmk_parse_interval_spec(interval_spec, &interval_ms); - pattern = crm_strdup_printf(ATTRD_RE_CLEAR_OP, - rsc, op, interval_ms); + pattern = pcmk__assert_asprintf(ATTRD_RE_CLEAR_OP, rsc, op, + interval_ms); } pcmk__xe_set(xml, PCMK__XA_ATTR_REGEX, pattern); diff --git a/daemons/attrd/attrd_messages.c b/daemons/attrd/attrd_messages.c index abcad2d5492..12497f2e240 100644 --- a/daemons/attrd/attrd_messages.c +++ b/daemons/attrd/attrd_messages.c @@ -260,6 +260,7 @@ attrd_handle_request(pcmk__request_t *request) { xmlNode *reply = NULL; char *log_msg = NULL; + const char *exec_status_s = NULL; const char *reason = NULL; if (attrd_handlers == NULL) { @@ -281,14 +282,16 @@ attrd_handle_request(pcmk__request_t *request) pcmk__xml_free(reply); } + exec_status_s = pcmk_exec_status_str(request->result.execution_status); reason = request->result.exit_reason; - log_msg = crm_strdup_printf("Processed %s request from %s %s: %s%s%s%s", - request->op, pcmk__request_origin_type(request), - pcmk__request_origin(request), - pcmk_exec_status_str(request->result.execution_status), - (reason == NULL)? "" : " (", - pcmk__s(reason, ""), - (reason == NULL)? "" : ")"); + log_msg = pcmk__assert_asprintf("Processed %s request from %s %s: %s%s%s%s", + request->op, + pcmk__request_origin_type(request), + pcmk__request_origin(request), + exec_status_s, + (reason == NULL)? "" : " (", + pcmk__s(reason, ""), + (reason == NULL)? "" : ")"); if (!pcmk__result_ok(&request->result)) { crm_warn("%s", log_msg); diff --git a/daemons/attrd/attrd_utils.c b/daemons/attrd/attrd_utils.c index f219b8862d3..8500e974a35 100644 --- a/daemons/attrd/attrd_utils.c +++ b/daemons/attrd/attrd_utils.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. * @@ -211,9 +211,10 @@ attrd_failure_regex(regex_t *regex, const char *rsc, const char *op, if (rsc == NULL) { pattern = pcmk__str_copy(ATTRD_RE_CLEAR_ALL); } else if (op == NULL) { - pattern = crm_strdup_printf(ATTRD_RE_CLEAR_ONE, rsc); + pattern = pcmk__assert_asprintf(ATTRD_RE_CLEAR_ONE, rsc); } else { - pattern = crm_strdup_printf(ATTRD_RE_CLEAR_OP, rsc, op, interval_ms); + pattern = pcmk__assert_asprintf(ATTRD_RE_CLEAR_OP, rsc, op, + interval_ms); } /* Compile pattern into regular expression */ diff --git a/daemons/based/based_io.c b/daemons/based/based_io.c index 58dcd77f32d..e00b14c727e 100644 --- a/daemons/based/based_io.c +++ b/daemons/based/based_io.c @@ -43,7 +43,7 @@ static void cib_rename(const char *old) { int new_fd; - char *new = crm_strdup_printf("%s/cib.auto.XXXXXX", cib_root); + char *new = pcmk__assert_asprintf("%s/cib.auto.XXXXXX", cib_root); umask(S_IWGRP | S_IWOTH | S_IROTH); new_fd = mkstemp(new); @@ -91,7 +91,7 @@ static int cib_archive_filter(const struct dirent * a) int rc = 0; // Looking for regular files starting with "cib-" and not ending in .sig struct stat s; - char *a_path = crm_strdup_printf("%s/%s", cib_root, a->d_name); + char *a_path = pcmk__assert_asprintf("%s/%s", cib_root, a->d_name); if(stat(a_path, &s) != 0) { rc = errno; @@ -126,8 +126,8 @@ static int cib_archive_sort(const struct dirent ** a, const struct dirent **b) time_t a_age = 0; time_t b_age = 0; - char *a_path = crm_strdup_printf("%s/%s", cib_root, a[0]->d_name); - char *b_path = crm_strdup_printf("%s/%s", cib_root, b[0]->d_name); + char *a_path = pcmk__assert_asprintf("%s/%s", cib_root, a[0]->d_name); + char *b_path = pcmk__assert_asprintf("%s/%s", cib_root, b[0]->d_name); if(stat(a_path, &buf) == 0) { a_age = buf.st_ctime; @@ -167,15 +167,15 @@ readCibXmlFile(const char *dir, const char *file, gboolean discard_status) xmlNode *root = NULL; xmlNode *status = NULL; - sigfile = crm_strdup_printf("%s.sig", file); + sigfile = pcmk__assert_asprintf("%s.sig", file); if (pcmk__daemon_can_write(dir, file) == FALSE || pcmk__daemon_can_write(dir, sigfile) == FALSE) { cib_status = -EACCES; return NULL; } - filename = crm_strdup_printf("%s/%s", dir, file); - sigfilepath = crm_strdup_printf("%s/%s", dir, sigfile); + filename = pcmk__assert_asprintf("%s/%s", dir, file); + sigfilepath = pcmk__assert_asprintf("%s/%s", dir, sigfile); free(sigfile); cib_status = pcmk_ok; @@ -196,8 +196,9 @@ readCibXmlFile(const char *dir, const char *file, gboolean discard_status) lpc--; - filename = crm_strdup_printf("%s/%s", cib_root, namelist[lpc]->d_name); - sigfile = crm_strdup_printf("%s.sig", filename); + filename = pcmk__assert_asprintf("%s/%s", cib_root, + namelist[lpc]->d_name); + sigfile = pcmk__assert_asprintf("%s.sig", filename); rc = cib_file_read_and_verify(filename, sigfile, &root); if (rc == pcmk_ok) { diff --git a/daemons/based/based_transaction.c b/daemons/based/based_transaction.c index 7809ea3f181..6fdbb704f73 100644 --- a/daemons/based/based_transaction.c +++ b/daemons/based/based_transaction.c @@ -29,11 +29,11 @@ char * based_transaction_source_str(const pcmk__client_t *client, const char *origin) { if (client != NULL) { - return crm_strdup_printf("client %s (%s)%s%s", - pcmk__client_name(client), - pcmk__s(client->id, "unidentified"), - ((origin != NULL)? " on " : ""), - pcmk__s(origin, "")); + return pcmk__assert_asprintf("client %s (%s)%s%s", + pcmk__client_name(client), + pcmk__s(client->id, "unidentified"), + ((origin != NULL)? " on " : ""), + pcmk__s(origin, "")); } else { return pcmk__str_copy(pcmk__s(origin, "unknown source")); } diff --git a/daemons/controld/controld_cib.c b/daemons/controld/controld_cib.c index 2cab05861b5..f59d50178ad 100644 --- a/daemons/controld/controld_cib.c +++ b/daemons/controld/controld_cib.c @@ -311,25 +311,25 @@ controld_node_state_deletion_strings(const char *uname, switch (section) { case controld_section_lrm: - *xpath = crm_strdup_printf(XPATH_NODE_LRM, uname); + *xpath = pcmk__assert_asprintf(XPATH_NODE_LRM, uname); desc_pre = "resource history"; break; case controld_section_lrm_unlocked: - *xpath = crm_strdup_printf(XPATH_NODE_LRM_UNLOCKED, - uname, uname, expire); + *xpath = pcmk__assert_asprintf(XPATH_NODE_LRM_UNLOCKED, uname, + uname, expire); desc_pre = "resource history (other than shutdown locks)"; break; case controld_section_attrs: - *xpath = crm_strdup_printf(XPATH_NODE_ATTRS, uname); + *xpath = pcmk__assert_asprintf(XPATH_NODE_ATTRS, uname); desc_pre = "transient attributes"; break; case controld_section_all: - *xpath = crm_strdup_printf(XPATH_NODE_ALL, uname); + *xpath = pcmk__assert_asprintf(XPATH_NODE_ALL, uname); desc_pre = "all state"; break; case controld_section_all_unlocked: - *xpath = crm_strdup_printf(XPATH_NODE_ALL_UNLOCKED, - uname, uname, expire, uname); + *xpath = pcmk__assert_asprintf(XPATH_NODE_ALL_UNLOCKED, uname, + uname, expire, uname); desc_pre = "all state (other than shutdown locks)"; break; default: @@ -339,7 +339,7 @@ controld_node_state_deletion_strings(const char *uname, } if (desc != NULL) { - *desc = crm_strdup_printf("%s for node %s", desc_pre, uname); + *desc = pcmk__assert_asprintf("%s for node %s", desc_pre, uname); } } @@ -405,7 +405,7 @@ controld_delete_resource_history(const char *rsc_id, const char *node, CRM_CHECK((rsc_id != NULL) && (node != NULL), return EINVAL); - desc = crm_strdup_printf("resource history for %s on %s", rsc_id, node); + desc = pcmk__assert_asprintf("resource history for %s on %s", rsc_id, node); if (cib == NULL) { crm_err("Unable to clear %s: no CIB connection", desc); free(desc); @@ -413,7 +413,7 @@ controld_delete_resource_history(const char *rsc_id, const char *node, } // Ask CIB to delete the entry - xpath = crm_strdup_printf(XPATH_RESOURCE_HISTORY, node, rsc_id); + xpath = pcmk__assert_asprintf(XPATH_RESOURCE_HISTORY, node, rsc_id); cib->cmds->set_user(cib, user_name); rc = cib->cmds->remove(cib, xpath, NULL, call_options|cib_xpath); @@ -1015,13 +1015,13 @@ controld_cib_delete_last_failure(const char *rsc_id, const char *node, // Generate XPath to match desired entry last_failure_key = pcmk__op_key(rsc_id, "last_failure", 0); if (action == NULL) { - xpath = crm_strdup_printf(XPATH_HISTORY_ID, node, rsc_id, - last_failure_key); + xpath = pcmk__assert_asprintf(XPATH_HISTORY_ID, node, rsc_id, + last_failure_key); } else { char *action_key = pcmk__op_key(rsc_id, action, interval_ms); - xpath = crm_strdup_printf(XPATH_HISTORY_ORIG, node, rsc_id, - last_failure_key, action_key); + xpath = pcmk__assert_asprintf(XPATH_HISTORY_ORIG, node, rsc_id, + last_failure_key, action_key); free(action_key); } free(last_failure_key); @@ -1049,10 +1049,10 @@ controld_delete_action_history_by_key(const char *rsc_id, const char *node, CRM_CHECK((rsc_id != NULL) && (node != NULL) && (key != NULL), return); if (call_id > 0) { - xpath = crm_strdup_printf(XPATH_HISTORY_CALL, node, rsc_id, key, - call_id); + xpath = pcmk__assert_asprintf(XPATH_HISTORY_CALL, node, rsc_id, key, + call_id); } else { - xpath = crm_strdup_printf(XPATH_HISTORY_ID, node, rsc_id, key); + xpath = pcmk__assert_asprintf(XPATH_HISTORY_ID, node, rsc_id, key); } controld_globals.cib_conn->cmds->remove(controld_globals.cib_conn, xpath, NULL, cib_xpath); diff --git a/daemons/controld/controld_execd.c b/daemons/controld/controld_execd.c index 8a6a483440f..2bb49655109 100644 --- a/daemons/controld/controld_execd.c +++ b/daemons/controld/controld_execd.c @@ -59,7 +59,7 @@ lrm_connection_destroy(void) static char * make_stop_id(const char *rsc, int call_id) { - return crm_strdup_printf("%s:%d", rsc, call_id); + return pcmk__assert_asprintf("%s:%d", rsc, call_id); } static void @@ -649,7 +649,7 @@ void controld_trigger_delete_refresh(const char *from_sys, const char *rsc_id) { if (!pcmk__str_eq(from_sys, CRM_SYSTEM_TENGINE, pcmk__str_casei)) { - char *now_s = crm_strdup_printf("%lld", (long long) time(NULL)); + char *now_s = pcmk__assert_asprintf("%lld", (long long) time(NULL)); crm_debug("Triggering a refresh after %s cleaned %s", from_sys, rsc_id); cib__update_node_attr(controld_globals.logger_out, @@ -2163,9 +2163,9 @@ log_executor_event(const lrmd_event_data_t *op, const char *op_key, * level, so just raise to notice if it looks like a failure. */ if ((op->output != NULL) && (op->rc != PCMK_OCF_OK)) { - char *prefix = crm_strdup_printf(PCMK__OP_FMT "@%s output", - op->rsc_id, op->op_type, - op->interval_ms, node_name); + char *prefix = pcmk__assert_asprintf(PCMK__OP_FMT "@%s output", + op->rsc_id, op->op_type, + op->interval_ms, node_name); crm_log_output(LOG_NOTICE, prefix, op->output); free(prefix); diff --git a/daemons/controld/controld_fencing.c b/daemons/controld/controld_fencing.c index 58a9ac62918..54386fa4939 100644 --- a/daemons/controld/controld_fencing.c +++ b/daemons/controld/controld_fencing.c @@ -488,8 +488,8 @@ handle_fence_notification(stonith_t *st, stonith_event_t *event) int exec_status; if (te_client_id == NULL) { - te_client_id = crm_strdup_printf("%s.%lu", crm_system_name, - (unsigned long) getpid()); + te_client_id = pcmk__assert_asprintf("%s.%lu", crm_system_name, + (unsigned long) getpid()); } if (event == NULL) { diff --git a/daemons/controld/controld_messages.c b/daemons/controld/controld_messages.c index f987a07a5f5..876a07bcf0a 100644 --- a/daemons/controld/controld_messages.c +++ b/daemons/controld/controld_messages.c @@ -680,7 +680,7 @@ handle_failcount_op(xmlNode * stored_msg) pcmk__readable_interval(interval_ms), rsc, uname); if (interval_ms) { - interval_spec = crm_strdup_printf("%ums", interval_ms); + interval_spec = pcmk__assert_asprintf("%ums", interval_ms); } update_attrd_clear_failures(uname, rsc, op, interval_spec, is_remote_node); free(interval_spec); diff --git a/daemons/controld/controld_schedulerd.c b/daemons/controld/controld_schedulerd.c index f0fe42fa568..685d35160bf 100644 --- a/daemons/controld/controld_schedulerd.c +++ b/daemons/controld/controld_schedulerd.c @@ -64,7 +64,9 @@ save_cib_contents(xmlNode *msg, int call_id, int rc, xmlNode *output, CRM_CHECK(id != NULL, return); if (rc == pcmk_ok) { - char *filename = crm_strdup_printf(PCMK_SCHEDULER_INPUT_DIR "/pe-core-%s.bz2", id); + char *filename = pcmk__assert_asprintf(PCMK_SCHEDULER_INPUT_DIR + "/pe-core-%s.bz2", + id); if (pcmk__xml_write_file(output, filename, true) != pcmk_rc_ok) { crm_err("Could not save Cluster Information Base to %s after scheduler crash", @@ -385,9 +387,10 @@ force_local_option(xmlNode *xml, const char *attr_name, const char *attr_value) return; } - xpath_string = crm_strdup_printf("%s//%s//nvpair[@name='%s']", - xpath_base, PCMK_XE_CLUSTER_PROPERTY_SET, - attr_name); + xpath_string = pcmk__assert_asprintf("%s//%s//nvpair[@name='%s']", + xpath_base, + PCMK_XE_CLUSTER_PROPERTY_SET, + attr_name); xpathObj = pcmk__xpath_search(xml->doc, xpath_string); max = pcmk__xpath_num_results(xpathObj); free(xpath_string); diff --git a/daemons/controld/controld_te_actions.c b/daemons/controld/controld_te_actions.c index a5317a4a66a..642d60d55bd 100644 --- a/daemons/controld/controld_te_actions.c +++ b/daemons/controld/controld_te_actions.c @@ -232,8 +232,9 @@ synthesize_timeout_event(const pcmk__graph_action_t *action, int target_rc) if (router_node == NULL) { router_node = target; } - dynamic_reason = crm_strdup_printf("Controller on %s did not return " - "result in time", router_node); + dynamic_reason = pcmk__assert_asprintf("Controller on %s did not " + "return result in time", + router_node); reason = dynamic_reason; } diff --git a/daemons/controld/controld_te_events.c b/daemons/controld/controld_te_events.c index 129f945c505..1b00e8acc65 100644 --- a/daemons/controld/controld_te_events.c +++ b/daemons/controld/controld_te_events.c @@ -384,7 +384,7 @@ match_down_event(const char *target) xmlXPathObject *xpath_ret = NULL; GList *gIter, *gIter2; - char *xpath = crm_strdup_printf(XPATH_DOWNED, target); + char *xpath = pcmk__assert_asprintf(XPATH_DOWNED, target); for (gIter = controld_globals.transition_graph->synapses; gIter != NULL && match == NULL; diff --git a/daemons/execd/remoted_proxy.c b/daemons/execd/remoted_proxy.c index 91e204a6368..b65130ecc2d 100644 --- a/daemons/execd/remoted_proxy.c +++ b/daemons/execd/remoted_proxy.c @@ -93,7 +93,8 @@ ipc_proxy_accept(qb_ipcs_connection_t * c, uid_t uid, gid_t gid, const char *ipc /* This ipc client is bound to a single ipc provider. If the * provider goes away, this client is disconnected */ client->userdata = pcmk__str_copy(ipc_proxy->id); - client->name = crm_strdup_printf("proxy-%s-%d-%.8s", ipc_channel, client->pid, client->id); + client->name = pcmk__assert_asprintf("proxy-%s-%d-%.8s", ipc_channel, + client->pid, client->id); /* Allow remote executor to distinguish between proxied local clients and * actual executor API clients diff --git a/daemons/execd/remoted_schemas.c b/daemons/execd/remoted_schemas.c index 7e84d286b6e..eb551fe4316 100644 --- a/daemons/execd/remoted_schemas.c +++ b/daemons/execd/remoted_schemas.c @@ -97,7 +97,7 @@ write_extra_schema_file(xmlNode *xml, void *user_data) return; } - path = crm_strdup_printf("%s/%s", remote_schema_dir, file); + path = pcmk__assert_asprintf("%s/%s", remote_schema_dir, file); /* The schema is a CDATA node, which is a child of the node. Traverse * all children and look for the first CDATA child. There can't be more than diff --git a/daemons/fenced/fenced_cib.c b/daemons/fenced/fenced_cib.c index a183ad8d799..20ea4a5f4d7 100644 --- a/daemons/fenced/fenced_cib.c +++ b/daemons/fenced/fenced_cib.c @@ -292,7 +292,7 @@ update_cib_stonith_devices(const char *event, xmlNode * msg) || strstr(xpath, "/" PCMK_XE_RSC_DEFAULTS)) { shortpath = strrchr(xpath, '/'); pcmk__assert(shortpath != NULL); - reason = crm_strdup_printf("%s %s", op, shortpath+1); + reason = pcmk__assert_asprintf("%s %s", op, shortpath + 1); break; } } diff --git a/daemons/fenced/fenced_commands.c b/daemons/fenced/fenced_commands.c index a3c12a13de7..fd826e26482 100644 --- a/daemons/fenced/fenced_commands.c +++ b/daemons/fenced/fenced_commands.c @@ -1546,14 +1546,14 @@ stonith_level_key(const xmlNode *level, enum fenced_target_by mode) return pcmk__xe_get_copy(level, PCMK_XA_TARGET_PATTERN); case fenced_target_by_attribute: - return crm_strdup_printf("%s=%s", - pcmk__xe_get(level, - PCMK_XA_TARGET_ATTRIBUTE), - pcmk__xe_get(level, - PCMK_XA_TARGET_VALUE)); + return pcmk__assert_asprintf("%s=%s", + pcmk__xe_get(level, + PCMK_XA_TARGET_ATTRIBUTE), + pcmk__xe_get(level, + PCMK_XA_TARGET_VALUE)); default: - return crm_strdup_printf("unknown-%s", pcmk__xe_id(level)); + return pcmk__assert_asprintf("unknown-%s", pcmk__xe_id(level)); } } @@ -1640,14 +1640,14 @@ unpack_level_request(xmlNode *xml, enum fenced_target_by *mode, char **target, if (xml == NULL) { if (desc != NULL) { - *desc = crm_strdup_printf("missing"); + *desc = pcmk__assert_asprintf("missing"); } } else { local_mode = unpack_level_kind(xml); local_target = stonith_level_key(xml, local_mode); pcmk__xe_get_int(xml, PCMK_XA_INDEX, &local_id); if (desc != NULL) { - *desc = crm_strdup_printf("%s[%d]", local_target, local_id); + *desc = pcmk__assert_asprintf("%s[%d]", local_target, local_id); } } @@ -2587,7 +2587,7 @@ log_async_result(const async_command_t *cmd, // Log the output (which may have multiple lines), if appropriate if (output_log_level != LOG_NEVER) { - char *prefix = crm_strdup_printf("%s[%d]", cmd->device, pid); + char *prefix = pcmk__assert_asprintf("%s[%d]", cmd->device, pid); crm_log_output(output_log_level, prefix, result->action_stdout); free(prefix); diff --git a/daemons/fenced/fenced_remote.c b/daemons/fenced/fenced_remote.c index 8cf7d2064e5..654e43f0848 100644 --- a/daemons/fenced/fenced_remote.c +++ b/daemons/fenced/fenced_remote.c @@ -1219,8 +1219,8 @@ create_remote_stonith_op(const char *client, xmlNode *request, gboolean peer) operation = pcmk__xe_get(request, PCMK__XA_ST_OP); if (pcmk__str_eq(operation, STONITH_OP_RELAY, pcmk__str_none)) { - op->client_name = crm_strdup_printf("%s.%lu", crm_system_name, - (unsigned long) getpid()); + op->client_name = pcmk__assert_asprintf("%s.%lu", crm_system_name, + (unsigned long) getpid()); } else { op->client_name = pcmk__xe_get_copy(request, PCMK__XA_ST_CLIENTNAME); } diff --git a/daemons/fenced/pacemaker-fenced.c b/daemons/fenced/pacemaker-fenced.c index cff0f399abe..3caa07bf4fa 100644 --- a/daemons/fenced/pacemaker-fenced.c +++ b/daemons/fenced/pacemaker-fenced.c @@ -123,7 +123,8 @@ st_ipc_dispatch(qb_ipcs_connection_t * qbc, void *data, size_t size) if (c->name == NULL) { const char *value = pcmk__xe_get(request, PCMK__XA_ST_CLIENTNAME); - c->name = crm_strdup_printf("%s.%u", pcmk__s(value, "unknown"), c->pid); + c->name = pcmk__assert_asprintf("%s.%u", pcmk__s(value, "unknown"), + c->pid); } rc = pcmk__xe_get_flags(request, PCMK__XA_ST_CALLOPT, &call_options, diff --git a/daemons/pacemakerd/pcmkd_messages.c b/daemons/pacemakerd/pcmkd_messages.c index c02fc8e0de6..9ec174c37d3 100644 --- a/daemons/pacemakerd/pcmkd_messages.c +++ b/daemons/pacemakerd/pcmkd_messages.c @@ -225,6 +225,7 @@ pcmk_ipc_dispatch(qb_ipcs_connection_t * qbc, void *data, size_t size) } else { char *log_msg = NULL; + const char *exec_status_s = NULL; const char *reason = NULL; xmlNode *reply = NULL; @@ -248,15 +249,18 @@ pcmk_ipc_dispatch(qb_ipcs_connection_t * qbc, void *data, size_t size) pcmk__xml_free(reply); } + exec_status_s = pcmk_exec_status_str(request.result.execution_status); reason = request.result.exit_reason; - log_msg = crm_strdup_printf("Processed %s request from %s %s: %s%s%s%s", - request.op, pcmk__request_origin_type(&request), - pcmk__request_origin(&request), - pcmk_exec_status_str(request.result.execution_status), - (reason == NULL)? "" : " (", - (reason == NULL)? "" : reason, - (reason == NULL)? "" : ")"); + log_msg = pcmk__assert_asprintf("Processed %s request from %s %s: " + "%s%s%s%s", + request.op, + pcmk__request_origin_type(&request), + pcmk__request_origin(&request), + exec_status_s, + (reason == NULL)? "" : " (", + pcmk__s(reason, ""), + (reason == NULL)? "" : ")"); if (!pcmk__result_ok(&request.result)) { crm_warn("%s", log_msg); diff --git a/daemons/pacemakerd/pcmkd_subdaemons.c b/daemons/pacemakerd/pcmkd_subdaemons.c index 13d0caa79d6..aa65ca9cc20 100644 --- a/daemons/pacemakerd/pcmkd_subdaemons.c +++ b/daemons/pacemakerd/pcmkd_subdaemons.c @@ -130,8 +130,8 @@ static gboolean stop_child(pcmk_child_t * child, int signal); static inline char * subdaemon_path(pcmk_child_t *subdaemon) { - return crm_strdup_printf(CRM_DAEMON_DIR "/%s", - pcmk__server_name(subdaemon->server)); + return pcmk__assert_asprintf(CRM_DAEMON_DIR "/%s", + pcmk__server_name(subdaemon->server)); } static bool @@ -281,8 +281,9 @@ pcmk_child_exit(mainloop_child_t * p, pid_t pid, int core, int signo, int exitco child->flags &= ~child_respawn; fatal_error = TRUE; - msg = crm_strdup_printf("Subdaemon %s[%d] requested panic", - name, pid); + msg = pcmk__assert_asprintf("Subdaemon %s[%d] requested " + "panic", + name, pid); pcmk__panic(msg); // Should never get here diff --git a/daemons/schedulerd/schedulerd_messages.c b/daemons/schedulerd/schedulerd_messages.c index 36252c5ed64..04a9501e859 100644 --- a/daemons/schedulerd/schedulerd_messages.c +++ b/daemons/schedulerd/schedulerd_messages.c @@ -256,6 +256,7 @@ pe_ipc_dispatch(qb_ipcs_connection_t * qbc, void *data, size_t size) } else { char *log_msg = NULL; + const char *exec_status_s = NULL; const char *reason = NULL; xmlNode *reply = NULL; @@ -279,15 +280,18 @@ pe_ipc_dispatch(qb_ipcs_connection_t * qbc, void *data, size_t size) pcmk__xml_free(reply); } + exec_status_s = pcmk_exec_status_str(request.result.execution_status); reason = request.result.exit_reason; - log_msg = crm_strdup_printf("Processed %s request from %s %s: %s%s%s%s", - request.op, pcmk__request_origin_type(&request), - pcmk__request_origin(&request), - pcmk_exec_status_str(request.result.execution_status), - (reason == NULL)? "" : " (", - (reason == NULL)? "" : reason, - (reason == NULL)? "" : ")"); + log_msg = pcmk__assert_asprintf("Processed %s request from %s %s: " + "%s%s%s%s", + request.op, + pcmk__request_origin_type(&request), + pcmk__request_origin(&request), + exec_status_s, + (reason == NULL)? "" : " (", + pcmk__s(reason, ""), + (reason == NULL)? "" : ")"); if (!pcmk__result_ok(&request.result)) { crm_warn("%s", log_msg); diff --git a/include/crm/common/internal.h b/include/crm/common/internal.h index ceb831c41d2..76b0077e6ab 100644 --- a/include/crm/common/internal.h +++ b/include/crm/common/internal.h @@ -20,7 +20,6 @@ #include // do_crm_log_unlikely(), etc. #include // mainloop_io_t, struct ipc_client_callbacks -#include // crm_strdup_printf() #include #include #include @@ -30,7 +29,7 @@ #include #include #include -#include +#include // pcmk__assert_asprintf() #include #ifdef __cplusplus @@ -277,7 +276,7 @@ pcmk__realloc(void *ptr, size_t size) static inline char * pcmk__getpid_s(void) { - return crm_strdup_printf("%lu", (unsigned long) getpid()); + return pcmk__assert_asprintf("%lu", (unsigned long) getpid()); } // More efficient than g_list_length(list) == 1 @@ -321,7 +320,8 @@ pcmk__fail_attr_name(const char *prefix, const char *rsc_id, const char *op, guint interval_ms) { CRM_CHECK(prefix && rsc_id && op, return NULL); - return crm_strdup_printf("%s-%s#%s_%u", prefix, rsc_id, op, interval_ms); + return pcmk__assert_asprintf("%s-%s#%s_%u", prefix, rsc_id, op, + interval_ms); } static inline char * diff --git a/include/crm/common/strings_internal.h b/include/crm/common/strings_internal.h index 25c2b887da9..96928b0778b 100644 --- a/include/crm/common/strings_internal.h +++ b/include/crm/common/strings_internal.h @@ -17,7 +17,6 @@ #include // PCMK_VALUE_TRUE, PCMK_VALUE_FALSE #include // pcmk_rc_ok -#include // crm_strdup_printf() #ifdef __cplusplus extern "C" { @@ -190,6 +189,8 @@ char *pcmk__str_copy_as(const char *file, const char *function, uint32_t line, void pcmk__str_update(char **str, const char *value); +char *pcmk__assert_asprintf(const char *format, ...) G_GNUC_PRINTF(1, 2); + void pcmk__g_strcat(GString *buffer, ...) G_GNUC_NULL_TERMINATED; static inline bool @@ -237,19 +238,19 @@ pcmk__str_empty(const char *s) static inline char * pcmk__itoa(int an_int) { - return crm_strdup_printf("%d", an_int); + return pcmk__assert_asprintf("%d", an_int); } static inline char * pcmk__ftoa(double a_float) { - return crm_strdup_printf("%f", a_float); + return pcmk__assert_asprintf("%f", a_float); } static inline char * pcmk__ttoa(time_t epoch_time) { - return crm_strdup_printf("%lld", (long long) epoch_time); + return pcmk__assert_asprintf("%lld", (long long) epoch_time); } // note this returns const not allocated diff --git a/lib/cib/cib_attrs.c b/lib/cib/cib_attrs.c index a7a7b22a227..590bd73b64c 100644 --- a/lib/cib/cib_attrs.c +++ b/lib/cib/cib_attrs.c @@ -249,27 +249,29 @@ cib__update_node_attr(pcmk__output_t *out, cib_t *cib, int call_options, const c } else if (pcmk__str_eq(node_type, PCMK_XE_TICKETS, pcmk__str_casei)) { - local_set_name = crm_strdup_printf("%s-%s", section, - PCMK_XE_TICKETS); + local_set_name = pcmk__assert_asprintf("%s-%s", section, + PCMK_XE_TICKETS); } else if (node_uuid) { - local_set_name = crm_strdup_printf("%s-%s", section, node_uuid); + local_set_name = pcmk__assert_asprintf("%s-%s", section, + node_uuid); if (set_type) { char *tmp_set_name = local_set_name; - local_set_name = crm_strdup_printf("%s-%s", tmp_set_name, - set_type); + local_set_name = pcmk__assert_asprintf("%s-%s", + tmp_set_name, + set_type); free(tmp_set_name); } } else { - local_set_name = crm_strdup_printf("%s-options", section); + local_set_name = pcmk__assert_asprintf("%s-options", section); } set_name = local_set_name; } if (attr_id == NULL) { - local_attr_id = crm_strdup_printf("%s-%s", set_name, attr_name); + local_attr_id = pcmk__assert_asprintf("%s-%s", set_name, attr_name); pcmk__xml_sanitize_id(local_attr_id); attr_id = local_attr_id; @@ -642,7 +644,9 @@ query_node_uuid(cib_t * the_cib, const char *uname, char **uuid, int *is_remote_ *is_remote_node = FALSE; } - xpath_string = crm_strdup_printf(XPATH_NODE, host_lowercase, host_lowercase, host_lowercase, host_lowercase); + xpath_string = pcmk__assert_asprintf(XPATH_NODE, host_lowercase, + host_lowercase, host_lowercase, + host_lowercase); if (cib_internal_op(the_cib, PCMK__CIB_REQUEST_QUERY, NULL, xpath_string, NULL, &xml_search, cib_sync_call|cib_xpath, NULL) == pcmk_ok) { diff --git a/lib/cib/cib_client.c b/lib/cib/cib_client.c index c906136c2cd..b133fd487e2 100644 --- a/lib/cib/cib_client.c +++ b/lib/cib/cib_client.c @@ -445,7 +445,7 @@ get_shadow_file(const char *suffix) { char *cib_home = NULL; char *fullname = NULL; - char *name = crm_strdup_printf("shadow.%s", suffix); + char *name = pcmk__assert_asprintf("shadow.%s", suffix); const char *dir = getenv("CIB_shadow_dir"); if (dir == NULL) { @@ -478,7 +478,7 @@ get_shadow_file(const char *suffix) if (home && home[0] == '/') { int rc = 0; - cib_home = crm_strdup_printf("%s/.cib", home); + cib_home = pcmk__assert_asprintf("%s/.cib", home); rc = mkdir(cib_home, 0700); if (rc < 0 && errno != EEXIST) { @@ -493,7 +493,7 @@ get_shadow_file(const char *suffix) } } - fullname = crm_strdup_printf("%s/%s", dir, name); + fullname = pcmk__assert_asprintf("%s/%s", dir, name); free(cib_home); free(name); diff --git a/lib/cib/cib_file.c b/lib/cib/cib_file.c index 8ea9bd130d3..e25147c99f7 100644 --- a/lib/cib/cib_file.c +++ b/lib/cib/cib_file.c @@ -775,7 +775,7 @@ cib_file_read_and_verify(const char *filename, const char *sigfile, xmlNode **ro /* If sigfile is not specified, use original file name plus .sig */ if (sigfile == NULL) { - sigfile = local_sigfile = crm_strdup_printf("%s.sig", filename); + sigfile = local_sigfile = pcmk__assert_asprintf("%s.sig", filename); } /* Verify that digests match */ @@ -808,8 +808,8 @@ cib_file_backup(const char *cib_dirname, const char *cib_filename) { int rc = 0; unsigned int seq = 0U; - char *cib_path = crm_strdup_printf("%s/%s", cib_dirname, cib_filename); - char *cib_digest = crm_strdup_printf("%s.sig", cib_path); + char *cib_path = pcmk__assert_asprintf("%s/%s", cib_dirname, cib_filename); + char *cib_digest = pcmk__assert_asprintf("%s.sig", cib_path); char *backup_path; char *backup_digest; @@ -821,7 +821,7 @@ cib_file_backup(const char *cib_dirname, const char *cib_filename) } backup_path = pcmk__series_filename(cib_dirname, CIB_SERIES, seq, CIB_SERIES_BZIP); - backup_digest = crm_strdup_printf("%s.sig", backup_path); + backup_digest = pcmk__assert_asprintf("%s.sig", backup_path); /* Remove the old backups if they exist */ unlink(backup_path); @@ -928,12 +928,12 @@ cib_file_write_with_digest(xmlNode *cib_root, const char *cib_dirname, const char *admin_epoch = pcmk__xe_get(cib_root, PCMK_XA_ADMIN_EPOCH); /* Determine full CIB and signature pathnames */ - char *cib_path = crm_strdup_printf("%s/%s", cib_dirname, cib_filename); - char *digest_path = crm_strdup_printf("%s.sig", cib_path); + char *cib_path = pcmk__assert_asprintf("%s/%s", cib_dirname, cib_filename); + char *digest_path = pcmk__assert_asprintf("%s.sig", cib_path); /* Create temporary file name patterns for writing out CIB and signature */ - char *tmp_cib = crm_strdup_printf("%s/cib.XXXXXX", cib_dirname); - char *tmp_digest = crm_strdup_printf("%s/cib.XXXXXX", cib_dirname); + char *tmp_cib = pcmk__assert_asprintf("%s/cib.XXXXXX", cib_dirname); + char *tmp_digest = pcmk__assert_asprintf("%s/cib.XXXXXX", cib_dirname); /* Ensure the admin didn't modify the existing CIB underneath us */ crm_trace("Reading cluster configuration file %s", cib_path); diff --git a/lib/cib/cib_ops.c b/lib/cib/cib_ops.c index 6ebd8925252..1faa55d98cd 100644 --- a/lib/cib/cib_ops.c +++ b/lib/cib/cib_ops.c @@ -786,13 +786,13 @@ cib_process_xpath(const char *op, int options, const char *section, char *new_path = NULL; if (id) { - new_path = crm_strdup_printf("/%s[@" PCMK_XA_ID "='%s']" - "%s", - parent->name, id, - pcmk__s(path, "")); + new_path = + pcmk__assert_asprintf("/%s[@" PCMK_XA_ID "='%s']%s", + parent->name, id, + pcmk__s(path, "")); } else { - new_path = crm_strdup_printf("/%s%s", parent->name, - pcmk__s(path, "")); + new_path = pcmk__assert_asprintf("/%s%s", parent->name, + pcmk__s(path, "")); } free(path); path = new_path; diff --git a/lib/cluster/corosync.c b/lib/cluster/corosync.c index c7737bdcfac..89a98aa699c 100644 --- a/lib/cluster/corosync.c +++ b/lib/cluster/corosync.c @@ -56,7 +56,7 @@ pcmk__corosync_uuid(const pcmk__node_status_t *node) if (node != NULL) { if (node->cluster_layer_id > 0) { - return crm_strdup_printf("%" PRIu32, node->cluster_layer_id); + return pcmk__assert_asprintf("%" PRIu32, node->cluster_layer_id); } else { crm_info("Node %s is not yet known by Corosync", node->name); } @@ -167,7 +167,7 @@ pcmk__corosync_name(uint64_t /*cmap_handle_t */ cmap_handle, uint32_t nodeid) uint32_t id = 0; char *key = NULL; - key = crm_strdup_printf("nodelist.node.%d.nodeid", lpc); + key = pcmk__assert_asprintf("nodelist.node.%d.nodeid", lpc); rc = cmap_get_uint32(cmap_handle, key, &id); crm_trace("Checking %u vs %u from %s", nodeid, id, key); free(key); @@ -180,13 +180,13 @@ pcmk__corosync_name(uint64_t /*cmap_handle_t */ cmap_handle, uint32_t nodeid) crm_trace("Searching for node name for %u in nodelist.node.%d %s", nodeid, lpc, pcmk__s(name, "")); if (name == NULL) { - key = crm_strdup_printf("nodelist.node.%d.name", lpc); + key = pcmk__assert_asprintf("nodelist.node.%d.name", lpc); cmap_get_string(cmap_handle, key, &name); crm_trace("%s = %s", key, pcmk__s(name, "")); free(key); } if (name == NULL) { - key = crm_strdup_printf("nodelist.node.%d.ring0_addr", lpc); + key = pcmk__assert_asprintf("nodelist.node.%d.ring0_addr", lpc); cmap_get_string(cmap_handle, key, &name); crm_trace("%s = %s", key, pcmk__s(name, "")); @@ -617,7 +617,7 @@ pcmk__corosync_add_nodes(xmlNode *xml_parent) char *name = NULL; char *key = NULL; - key = crm_strdup_printf("nodelist.node.%d.nodeid", lpc); + key = pcmk__assert_asprintf("nodelist.node.%d.nodeid", lpc); rc = cmap_get_uint32(cmap_handle, key, &nodeid); free(key); diff --git a/lib/cluster/cpg.c b/lib/cluster/cpg.c index e2fdfc2fdd2..d1208b9b6ba 100644 --- a/lib/cluster/cpg.c +++ b/lib/cluster/cpg.c @@ -956,7 +956,7 @@ send_cpg_text(const char *data, const pcmk__node_status_t *node, memcpy(msg->host.uname, node->name, msg->host.size); } else { - target = crm_strdup_printf("%" PRIu32, node->cluster_layer_id); + target = pcmk__assert_asprintf("%" PRIu32, node->cluster_layer_id); } msg->host.id = node->cluster_layer_id; diff --git a/lib/cluster/membership.c b/lib/cluster/membership.c index d6f7fb72b3c..5219bd45b4f 100644 --- a/lib/cluster/membership.c +++ b/lib/cluster/membership.c @@ -483,10 +483,10 @@ pcmk__cluster_forget_cluster_node(uint32_t id, const char *node_name) search.name = pcmk__str_copy(node_name); // May log after original freed if (id > 0) { - criterion = crm_strdup_printf("cluster layer ID %" PRIu32, id); + criterion = pcmk__assert_asprintf("cluster layer ID %" PRIu32, id); } else if (node_name != NULL) { - criterion = crm_strdup_printf("name %s", node_name); + criterion = pcmk__assert_asprintf("name %s", node_name); } matches = g_hash_table_foreach_remove(pcmk__peer_cache, @@ -836,7 +836,7 @@ pcmk__search_node_caches(unsigned int id, const char *uname, node = find_cib_cluster_node(xml_id, uname); } else { // Assumes XML ID is node ID as string (as with Corosync) - char *id_str = (id == 0)? NULL : crm_strdup_printf("%u", id); + char *id_str = (id == 0)? NULL : pcmk__assert_asprintf("%u", id); node = find_cib_cluster_node(id_str, uname); free(id_str); diff --git a/lib/common/actions.c b/lib/common/actions.c index d8a2325a998..6fc5a4a4f87 100644 --- a/lib/common/actions.c +++ b/lib/common/actions.c @@ -225,7 +225,7 @@ char * pcmk__op_key(const char *rsc_id, const char *op_type, guint interval_ms) { pcmk__assert((rsc_id != NULL) && (op_type != NULL)); - return crm_strdup_printf(PCMK__OP_FMT, rsc_id, op_type, interval_ms); + return pcmk__assert_asprintf(PCMK__OP_FMT, rsc_id, op_type, interval_ms); } static inline gboolean @@ -368,8 +368,8 @@ pcmk__notify_key(const char *rsc_id, const char *notify_type, CRM_CHECK(rsc_id != NULL, return NULL); CRM_CHECK(op_type != NULL, return NULL); CRM_CHECK(notify_type != NULL, return NULL); - return crm_strdup_printf("%s_%s_notify_%s_0", - rsc_id, notify_type, op_type); + return pcmk__assert_asprintf("%s_%s_notify_%s_0", + rsc_id, notify_type, op_type); } /*! @@ -433,8 +433,8 @@ pcmk__transition_key(int transition_id, int action_id, int target_rc, const char *node) { CRM_CHECK(node != NULL, return NULL); - return crm_strdup_printf("%d:%d:%d:%-*s", - action_id, transition_id, target_rc, 36, node); + return pcmk__assert_asprintf("%d:%d:%d:%-*s", + action_id, transition_id, target_rc, 36, node); } /*! diff --git a/lib/common/agents.c b/lib/common/agents.c index 34acbb0b45e..2d0494ac65e 100644 --- a/lib/common/agents.c +++ b/lib/common/agents.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. * @@ -92,10 +92,11 @@ crm_generate_ra_key(const char *standard, const char *provider, return NULL; } - return crm_strdup_printf("%s%s%s:%s", - standard, - (prov_empty ? "" : ":"), (prov_empty ? "" : provider), - type); + return pcmk__assert_asprintf("%s%s%s:%s", + standard, + (prov_empty ? "" : ":"), + (prov_empty ? "" : provider), + type); } /*! diff --git a/lib/common/attrs.c b/lib/common/attrs.c index aa50831c8b8..e02b9bc33ef 100644 --- a/lib/common/attrs.c +++ b/lib/common/attrs.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. * @@ -93,7 +93,7 @@ pcmk_promotion_score_name(const char *rsc_id) return NULL; } } - return crm_strdup_printf("master-%s", rsc_id); + return pcmk__assert_asprintf("master-%s", rsc_id); } /*! diff --git a/lib/common/cmdline.c b/lib/common/cmdline.c index 820bab39b60..849d7ee226a 100644 --- a/lib/common/cmdline.c +++ b/lib/common/cmdline.c @@ -1,5 +1,5 @@ /* - * Copyright 2019-2024 the Pacemaker project contributors + * Copyright 2019-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -100,7 +100,8 @@ pcmk__build_arg_context(pcmk__common_args_t *common_args, const char *fmts, *output_group = g_option_group_new("output", N_("Output Options:"), N_("Show output help"), NULL, NULL); } - common_args->output_as_descr = crm_strdup_printf("Specify output format as one of: %s", fmts); + common_args->output_as_descr = + pcmk__assert_asprintf("Specify output format as one of: %s", fmts); output_entries[0].description = common_args->output_as_descr; g_option_group_add_entries(*output_group, output_entries); g_option_context_add_group(context, *output_group); diff --git a/lib/common/digest.c b/lib/common/digest.c index 7ca9c6e6fef..56d1ad1a5d3 100644 --- a/lib/common/digest.c +++ b/lib/common/digest.c @@ -177,7 +177,7 @@ pcmk__digest_xml(const xmlNode *xml, bool filter) pcmk__if_tracing( { - char *trace_file = crm_strdup_printf("digest-%s", digest); + char *trace_file = pcmk__assert_asprintf("digest-%s", digest); crm_trace("Saving %s.%s.%s to %s", pcmk__xe_get(xml, PCMK_XA_ADMIN_EPOCH), diff --git a/lib/common/io.c b/lib/common/io.c index 2d8e0a8cfeb..dae89c38069 100644 --- a/lib/common/io.c +++ b/lib/common/io.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. * @@ -116,8 +116,8 @@ pcmk__series_filename(const char *directory, const char *series, unsigned int sequence, bool bzip) { pcmk__assert((directory != NULL) && (series != NULL)); - return crm_strdup_printf("%s/%s-%u.%s", directory, series, sequence, - (bzip? "bz2" : "raw")); + return pcmk__assert_asprintf("%s/%s-%u.%s", directory, series, sequence, + (bzip? "bz2" : "raw")); } /*! @@ -142,7 +142,7 @@ pcmk__read_series_sequence(const char *directory, const char *series, return EINVAL; } - series_file = crm_strdup_printf("%s/%s.last", directory, series); + series_file = pcmk__assert_asprintf("%s/%s.last", directory, series); fp = fopen(series_file, "r"); if (fp == NULL) { rc = errno; @@ -195,7 +195,7 @@ pcmk__write_series_sequence(const char *directory, const char *series, sequence = 0; } - series_file = crm_strdup_printf("%s/%s.last", directory, series); + series_file = pcmk__assert_asprintf("%s/%s.last", directory, series); file_strm = fopen(series_file, "w"); if (file_strm != NULL) { rc = fprintf(file_strm, "%u", sequence); @@ -238,7 +238,7 @@ pcmk__chown_series_sequence(const char *directory, const char *series, if ((directory == NULL) || (series == NULL)) { return EINVAL; } - series_file = crm_strdup_printf("%s/%s.last", directory, series); + series_file = pcmk__assert_asprintf("%s/%s.last", directory, series); if (chown(series_file, uid, gid) < 0) { rc = errno; } @@ -331,7 +331,7 @@ pcmk__daemon_can_write(const char *dir, const char *file) // If file is given, check whether it exists as a regular file if (file != NULL) { - full_file = crm_strdup_printf("%s/%s", dir, file); + full_file = pcmk__assert_asprintf("%s/%s", dir, file); target = full_file; s_res = stat(full_file, &buf); @@ -629,5 +629,5 @@ pcmk__full_path(const char *filename, const char *dirname) return pcmk__str_copy(filename); } pcmk__assert(dirname != NULL); - return crm_strdup_printf("%s/%s", dirname, filename); + return pcmk__assert_asprintf("%s/%s", dirname, filename); } diff --git a/lib/common/ipc_controld.c b/lib/common/ipc_controld.c index 03a60aceb90..77f6e04164d 100644 --- a/lib/common/ipc_controld.c +++ b/lib/common/ipc_controld.c @@ -337,8 +337,8 @@ create_controller_request(const pcmk_ipc_api_t *api, const char *op, } else { sys_to = CRM_SYSTEM_CRMD; } - sender_system = crm_strdup_printf("%s_%s", private->client_uuid, - pcmk__s(crm_system_name, "client")); + sender_system = pcmk__assert_asprintf("%s_%s", private->client_uuid, + pcmk__s(crm_system_name, "client")); request = pcmk__new_request(pcmk_ipc_controld, sender_system, node, sys_to, op, msg_data); free(sender_system); @@ -656,7 +656,7 @@ create_hello_message(const char *uuid, const char *client_name, // @TODO Nothing uses this. Drop, or keep for debugging? pcmk__xe_set(hello_node, PCMK__XA_CLIENT_UUID, uuid); - sender_system = crm_strdup_printf("%s_%s", uuid, client_name); + sender_system = pcmk__assert_asprintf("%s_%s", uuid, client_name); hello = pcmk__new_request(pcmk_ipc_controld, sender_system, NULL, NULL, CRM_OP_HELLO, hello_node); free(sender_system); diff --git a/lib/common/ipc_pacemakerd.c b/lib/common/ipc_pacemakerd.c index ed56f2b5d78..a78451c9fa1 100644 --- a/lib/common/ipc_pacemakerd.c +++ b/lib/common/ipc_pacemakerd.c @@ -312,8 +312,9 @@ do_pacemakerd_api_call(pcmk_ipc_api_t *api, const char *ipc_name, const char *ta private = api->api_data; pcmk__assert(private != NULL); - sender_system = crm_strdup_printf("%s_%s", private->client_uuid, - pcmk__ipc_sys_name(ipc_name, "client")); + sender_system = pcmk__assert_asprintf("%s_%s", private->client_uuid, + pcmk__ipc_sys_name(ipc_name, + "client")); cmd = pcmk__new_request(pcmk_ipc_pacemakerd, sender_system, NULL, CRM_SYSTEM_MCP, task, NULL); free(sender_system); diff --git a/lib/common/ipc_schedulerd.c b/lib/common/ipc_schedulerd.c index f68566af85b..761997957ad 100644 --- a/lib/common/ipc_schedulerd.c +++ b/lib/common/ipc_schedulerd.c @@ -167,8 +167,8 @@ do_schedulerd_api_call(pcmk_ipc_api_t *api, const char *task, xmlNode *cib, char private = api->api_data; pcmk__assert(private != NULL); - sender_system = crm_strdup_printf("%s_%s", private->client_uuid, - pcmk__s(crm_system_name, "client")); + sender_system = pcmk__assert_asprintf("%s_%s", private->client_uuid, + pcmk__s(crm_system_name, "client")); cmd = pcmk__new_request(pcmk_ipc_schedulerd, sender_system, NULL, CRM_SYSTEM_PENGINE, task, cib); free(sender_system); diff --git a/lib/common/logging.c b/lib/common/logging.c index 022a4770be2..3a75b459004 100644 --- a/lib/common/logging.c +++ b/lib/common/logging.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. * @@ -450,10 +450,9 @@ crm_control_blackbox(int nsig, bool enable) if (blackbox_file_prefix == NULL) { pid_t pid = getpid(); - blackbox_file_prefix = crm_strdup_printf("%s/%s-%lu", - CRM_BLACKBOX_DIR, - crm_system_name, - (unsigned long) pid); + blackbox_file_prefix = pcmk__assert_asprintf(CRM_BLACKBOX_DIR "/%s-%lu", + crm_system_name, + (unsigned long) pid); } if (enable && qb_log_ctl(QB_LOG_BLACKBOX, QB_LOG_CONF_STATE_GET, 0) != QB_LOG_STATE_ENABLED) { @@ -600,7 +599,8 @@ crm_log_filter_source(int source, const char *trace_files, const char *trace_fns qb_bit_set(cs->targets, source); } else if (trace_blackbox) { - char *key = crm_strdup_printf("%s:%d", cs->function, cs->lineno); + char *key = pcmk__assert_asprintf("%s:%d", cs->function, + cs->lineno); if (strstr(trace_blackbox, key) != NULL) { qb_bit_set(cs->targets, source); diff --git a/lib/common/mainloop.c b/lib/common/mainloop.c index 9529d523afa..76ecbbb6fb7 100644 --- a/lib/common/mainloop.c +++ b/lib/common/mainloop.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. * @@ -1368,9 +1368,9 @@ mainloop_timer_add(const char *name, guint period_ms, bool repeat, GSourceFunc c mainloop_timer_t *t = pcmk__assert_alloc(1, sizeof(mainloop_timer_t)); if (name != NULL) { - t->name = crm_strdup_printf("%s-%u-%d", name, period_ms, repeat); + t->name = pcmk__assert_asprintf("%s-%u-%d", name, period_ms, repeat); } else { - t->name = crm_strdup_printf("%p-%u-%d", t, period_ms, repeat); + t->name = pcmk__assert_asprintf("%p-%u-%d", t, period_ms, repeat); } t->id = 0; t->period_ms = period_ms; diff --git a/lib/common/messages.c b/lib/common/messages.c index bd7ebf146b4..68717c44ea7 100644 --- a/lib/common/messages.c +++ b/lib/common/messages.c @@ -73,9 +73,9 @@ pcmk__new_message_as(const char *origin, enum pcmk_ipc_server server, if (reply_to == NULL) { subtype = PCMK__VALUE_REQUEST; - message_id = crm_strdup_printf("%s-%s-%llu-%u", task, sender_system, - (unsigned long long) time(NULL), - message_counter++); + message_id = pcmk__assert_asprintf("%s-%s-%llu-%u", task, sender_system, + (unsigned long long) time(NULL), + message_counter++); reply_to = message_id; } diff --git a/lib/common/nodes.c b/lib/common/nodes.c index 5d972690a0c..1cfcd28b61d 100644 --- a/lib/common/nodes.c +++ b/lib/common/nodes.c @@ -228,7 +228,7 @@ const char * pcmk_cib_node_shutdown(xmlNode *cib, const char *node) { if ((cib != NULL) && (node != NULL)) { - char *xpath = crm_strdup_printf(XP_SHUTDOWN, node); + char *xpath = pcmk__assert_asprintf(XP_SHUTDOWN, node); xmlNode *match = pcmk__xpath_find_one(cib->doc, xpath, LOG_TRACE); free(xpath); diff --git a/lib/common/nvpair.c b/lib/common/nvpair.c index 82c61ffdfd3..b8596b21122 100644 --- a/lib/common/nvpair.c +++ b/lib/common/nvpair.c @@ -175,7 +175,8 @@ pcmk__scan_nvpair(const gchar *input, gchar **name, gchar **value) char * pcmk__format_nvpair(const char *name, const char *value, const char *units) { - return crm_strdup_printf("%s=\"%s%s\"", name, value, units ? units : ""); + return pcmk__assert_asprintf("%s=\"%s%s\"", name, value, + pcmk__s(units, "")); } /*! @@ -528,7 +529,7 @@ crm_meta_name(const char *attr_name) pcmk__assert(!pcmk__str_empty(attr_name)); - env_name = crm_strdup_printf(CRM_META "_%s", attr_name); + env_name = pcmk__assert_asprintf(CRM_META "_%s", attr_name); for (char *c = env_name; *c != '\0'; ++c) { if (*c == '-') { *c = '_'; diff --git a/lib/common/options_display.c b/lib/common/options_display.c index 872165f7e41..5fd93e08711 100644 --- a/lib/common/options_display.c +++ b/lib/common/options_display.c @@ -349,8 +349,8 @@ add_option_metadata_xml(pcmk__output_t *out, type = map_legacy_option_type(type); if (option->values != NULL) { - desc_long_legacy = crm_strdup_printf("%s Allowed values: %s", - desc_long, option->values); + desc_long_legacy = pcmk__assert_asprintf("%s Allowed values: %s", + desc_long, option->values); desc_long = desc_long_legacy; } diff --git a/lib/common/output_html.c b/lib/common/output_html.c index 97f1059a7a3..e43359a3f9a 100644 --- a/lib/common/output_html.c +++ b/lib/common/output_html.c @@ -231,7 +231,7 @@ html_subprocess_output(pcmk__output_t *out, int exit_status, pcmk__assert(out != NULL); - rc_buf = crm_strdup_printf("Return code: %d", exit_status); + rc_buf = pcmk__assert_asprintf("Return code: %d", exit_status); pcmk__output_create_xml_text_node(out, "h2", "Command Output"); pcmk__output_create_html_node(out, PCMK__XE_DIV, NULL, NULL, rc_buf); diff --git a/lib/common/output_xml.c b/lib/common/output_xml.c index 0784793b54e..5c54d00a752 100644 --- a/lib/common/output_xml.c +++ b/lib/common/output_xml.c @@ -415,7 +415,7 @@ xml_end_list(pcmk__output_t *out) { /* Do not free node here - it's still part of the document */ node = g_queue_pop_tail(priv->parent_q); - buf = crm_strdup_printf("%lu", xmlChildElementCount(node)); + buf = pcmk__assert_asprintf("%lu", xmlChildElementCount(node)); pcmk__xe_set(node, PCMK_XA_COUNT, buf); free(buf); } else { diff --git a/lib/common/patchset.c b/lib/common/patchset.c index 947bf9dfac2..c2851ea904a 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -907,7 +907,7 @@ pcmk__cib_element_in_patchset(const xmlNode *patchset, const char *element) * @TODO Use POSIX word boundary instead of (/|$), if it works: * https://www.regular-expressions.info/wordboundaries.html. */ - element_regex = crm_strdup_printf("^%s(/|$)", element_xpath); + element_regex = pcmk__assert_asprintf("^%s(/|$)", element_xpath); for (const xmlNode *change = pcmk__xe_first_child(patchset, PCMK_XE_CHANGE, NULL, NULL); diff --git a/lib/common/patchset_display.c b/lib/common/patchset_display.c index 4a2883f4a0a..a8194b2dc54 100644 --- a/lib/common/patchset_display.c +++ b/lib/common/patchset_display.c @@ -94,8 +94,9 @@ xml_show_patchset(pcmk__output_t *out, const xmlNode *patchset) } if (strcmp(op, PCMK_VALUE_CREATE) == 0) { - char *prefix = crm_strdup_printf(PCMK__XML_PREFIX_CREATED " %s: ", - xpath); + char *prefix = pcmk__assert_asprintf(PCMK__XML_PREFIX_CREATED + " %s: ", + xpath); temp_rc = pcmk__xml_show(out, prefix, change->children, 0, pcmk__xml_fmt_pretty|pcmk__xml_fmt_open); diff --git a/lib/common/procfs.c b/lib/common/procfs.c index a6b0d8e7ac8..2cc1bc0de75 100644 --- a/lib/common/procfs.c +++ b/lib/common/procfs.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. * @@ -33,7 +33,10 @@ find_cib_loadfile(const char *server) { pid_t pid = pcmk__procfs_pid_of(server); - return pid? crm_strdup_printf("/proc/%lld/stat", (long long) pid) : NULL; + if (pid == 0) { + return NULL; + } + return pcmk__assert_asprintf("/proc/%lld/stat", (long long) pid); } /*! diff --git a/lib/common/schemas.c b/lib/common/schemas.c index b282eb4543f..ba205b4b0f1 100644 --- a/lib/common/schemas.c +++ b/lib/common/schemas.c @@ -34,7 +34,7 @@ #define SCHEMA_ZERO { .v = { 0, 0 } } #define schema_strdup_printf(prefix, version, suffix) \ - crm_strdup_printf(prefix "%u.%u" suffix, (version).v[0], (version).v[1]) + pcmk__assert_asprintf(prefix "%u.%u" suffix, (version).v[0], (version).v[1]) typedef struct { xmlRelaxNGPtr rng; @@ -418,8 +418,8 @@ load_transforms_from_dir(const char *dir) if (sscanf(namelist[i]->d_name, "upgrade-%hhu.%hhu-%hhu.xsl", &(version.v[0]), &(version.v[1]), &order) == 3) { - char *version_s = crm_strdup_printf("%hhu.%hhu", - version.v[0], version.v[1]); + char *version_s = pcmk__assert_asprintf("%hhu.%hhu", + version.v[0], version.v[1]); GList *list = g_hash_table_lookup(transforms, version_s); if (list == NULL) { @@ -471,8 +471,8 @@ pcmk__load_schemas_from_dir(const char *dir) pcmk__schema_version_t version = SCHEMA_ZERO; if (version_from_filename(namelist[lpc]->d_name, &version)) { - char *version_s = crm_strdup_printf("%hhu.%hhu", - version.v[0], version.v[1]); + char *version_s = pcmk__assert_asprintf("%hhu.%hhu", + version.v[0], version.v[1]); char *orig_key = NULL; GList *transform_list = NULL; @@ -1402,7 +1402,8 @@ pcmk__schema_files_later_than(const char *name) lst = g_list_prepend(lst, pcmk__str_copy(entry->d_name)); } - lst = g_list_prepend(lst, crm_strdup_printf("%s.rng", schema->name)); + lst = g_list_prepend(lst, + pcmk__assert_asprintf("%s.rng", schema->name)); } return lst; @@ -1469,7 +1470,7 @@ add_schema_file_to_xml(xmlNode *parent, const char *file, GList **already_includ * just assume it's an RNG file. */ if (!pcmk__ends_with(file, ".rng") && !pcmk__ends_with(file, ".xsl")) { - path = crm_strdup_printf("%s.rng", file); + path = pcmk__assert_asprintf("%s.rng", file); } else { path = pcmk__str_copy(file); } diff --git a/lib/common/strings.c b/lib/common/strings.c index 52621fb18fe..71379f0bf1a 100644 --- a/lib/common/strings.c +++ b/lib/common/strings.c @@ -10,6 +10,7 @@ #include #include +#include // va_list, etc. #include #include #include @@ -1331,6 +1332,34 @@ pcmk__str_update(char **str, const char *value) } } +/*! + * \internal + * \brief Print to an allocated string using \c printf()-style formatting + * + * This is like \c asprintf() but asserts on any error. The return value cannot + * be \c NULL, but it may be an empty string, depending on the format string and + * variadic arguments. + * + * \param[in] format \c printf() format string + * \param[in] ... \c printf() format arguments + * + * \return Newly allocated string (guaranteed not to be \c NULL). + * + * \note The caller is responsible for freeing the return value using \c free(). + */ +char * +pcmk__assert_asprintf(const char *format, ...) +{ + char *result = NULL; + va_list ap; + + va_start(ap, format); + pcmk__assert(vasprintf(&result, format, ap) >= 0); + va_end(ap); + + return result; +} + /*! * \internal * \brief Append a list of strings to a destination \p GString diff --git a/lib/common/tests/iso8601/crm_time_add_days_test.c b/lib/common/tests/iso8601/crm_time_add_days_test.c index a41a0085b86..c9ad3616d78 100644 --- a/lib/common/tests/iso8601/crm_time_add_days_test.c +++ b/lib/common/tests/iso8601/crm_time_add_days_test.c @@ -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. * @@ -174,8 +174,9 @@ year_out_of_range(void **state) char *expected_datetime = NULL; // Year too large - orig_datetime = crm_strdup_printf("%d-01-01 00:00:00 +00:00", INT_MAX); - expected_datetime = crm_strdup_printf("%d-12-31 00:00:00 +00:00", INT_MAX); + orig_datetime = pcmk__assert_asprintf("%d-01-01 00:00:00 +00:00", INT_MAX); + expected_datetime = pcmk__assert_asprintf("%d-12-31 00:00:00 +00:00", + INT_MAX); assert_add_days(orig_datetime, 400, expected_datetime); free(orig_datetime); free(expected_datetime); diff --git a/lib/common/tests/iso8601/crm_time_add_years_test.c b/lib/common/tests/iso8601/crm_time_add_years_test.c index 3b269bb1bfa..8ea6b4d1c46 100644 --- a/lib/common/tests/iso8601/crm_time_add_years_test.c +++ b/lib/common/tests/iso8601/crm_time_add_years_test.c @@ -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. * @@ -64,7 +64,8 @@ out_of_range(void **state) { char *expected_datetime = NULL; - expected_datetime = crm_strdup_printf("%d-01-01 00:00:00 +00:00", INT_MAX); + expected_datetime = pcmk__assert_asprintf("%d-01-01 00:00:00 +00:00", + INT_MAX); assert_add_years("2024-01-01 00:00:00 +00:00", INT_MAX, expected_datetime); free(expected_datetime); diff --git a/lib/common/tests/nodes/pcmk_foreach_active_resource_test.c b/lib/common/tests/nodes/pcmk_foreach_active_resource_test.c index c453316e47a..39a3b6157eb 100644 --- a/lib/common/tests/nodes/pcmk_foreach_active_resource_test.c +++ b/lib/common/tests/nodes/pcmk_foreach_active_resource_test.c @@ -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. * @@ -36,7 +36,7 @@ static pcmk_resource_t rsc3 = { static bool fn(pcmk_resource_t *rsc, void *user_data) { - char *expected_id = crm_strdup_printf("rsc%d", counter); + char *expected_id = pcmk__assert_asprintf("rsc%d", counter); assert_string_equal(rsc->id, expected_id); free(expected_id); diff --git a/lib/common/tests/nvpair/pcmk__xe_get_flags_test.c b/lib/common/tests/nvpair/pcmk__xe_get_flags_test.c index 93f049bca64..b91b1fa85d0 100644 --- a/lib/common/tests/nvpair/pcmk__xe_get_flags_test.c +++ b/lib/common/tests/nvpair/pcmk__xe_get_flags_test.c @@ -92,7 +92,7 @@ no_attr_default(void **state) static void invalid_attr_default(void **state) { - char *too_big = crm_strdup_printf("%lld", UINT32_MAX + 1LL); + char *too_big = pcmk__assert_asprintf("%lld", UINT32_MAX + 1LL); assert_flags("x", pcmk_rc_bad_input, DEFAULT_VALUE); assert_flags("-1", pcmk_rc_bad_input, DEFAULT_VALUE); diff --git a/lib/common/tests/probes/pcmk_xe_mask_probe_failure_test.c b/lib/common/tests/probes/pcmk_xe_mask_probe_failure_test.c index 2e12eb4c4bf..8a6cb880a35 100644 --- a/lib/common/tests/probes/pcmk_xe_mask_probe_failure_test.c +++ b/lib/common/tests/probes/pcmk_xe_mask_probe_failure_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2021-2024 the Pacemaker project contributors + * Copyright 2021-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -40,12 +40,12 @@ op_does_not_have_right_values_test(void **state) { assert_false(pcmk_xe_mask_probe_failure(node)); pcmk__xml_free(node); - s = crm_strdup_printf("<" PCMK__XE_LRM_RSC_OP " " + s = pcmk__assert_asprintf("<" PCMK__XE_LRM_RSC_OP " " PCMK_XA_OPERATION "=\"" PCMK_ACTION_MONITOR "\" " PCMK_META_INTERVAL "=\"0\" " PCMK__XA_RC_CODE "=\"%d\" " PCMK__XA_OP_STATUS "=\"\"/>", - PCMK_OCF_OK); + PCMK_OCF_OK); node = pcmk__xml_parse(s); assert_false(pcmk_xe_mask_probe_failure(node)); free(s); @@ -58,142 +58,142 @@ check_values_test(void **state) { char *s = NULL; /* PCMK_EXEC_NOT_SUPPORTED */ - s = crm_strdup_printf("<" PCMK__XE_LRM_RSC_OP " " + s = pcmk__assert_asprintf("<" PCMK__XE_LRM_RSC_OP " " PCMK_XA_OPERATION "=\"" PCMK_ACTION_MONITOR "\" " PCMK_META_INTERVAL "=\"0\" " PCMK__XA_RC_CODE "=\"%d\" " PCMK__XA_OP_STATUS "=\"%d\"/>", - PCMK_OCF_OK, PCMK_EXEC_NOT_SUPPORTED); + PCMK_OCF_OK, PCMK_EXEC_NOT_SUPPORTED); node = pcmk__xml_parse(s); assert_false(pcmk_xe_mask_probe_failure(node)); free(s); pcmk__xml_free(node); - s = crm_strdup_printf("<" PCMK__XE_LRM_RSC_OP " " + s = pcmk__assert_asprintf("<" PCMK__XE_LRM_RSC_OP " " PCMK_XA_OPERATION "=\"" PCMK_ACTION_MONITOR "\" " PCMK_META_INTERVAL "=\"0\" " PCMK__XA_RC_CODE "=\"%d\" " PCMK__XA_OP_STATUS "=\"%d\"/>", - PCMK_OCF_NOT_INSTALLED, PCMK_EXEC_NOT_SUPPORTED); + PCMK_OCF_NOT_INSTALLED, PCMK_EXEC_NOT_SUPPORTED); node = pcmk__xml_parse(s); assert_true(pcmk_xe_mask_probe_failure(node)); free(s); pcmk__xml_free(node); /* PCMK_EXEC_DONE */ - s = crm_strdup_printf("<" PCMK__XE_LRM_RSC_OP " " + s = pcmk__assert_asprintf("<" PCMK__XE_LRM_RSC_OP " " PCMK_XA_OPERATION "=\"" PCMK_ACTION_MONITOR "\" " PCMK_META_INTERVAL "=\"0\" " PCMK__XA_RC_CODE "=\"%d\" " PCMK__XA_OP_STATUS "=\"%d\"/>", - PCMK_OCF_OK, PCMK_EXEC_DONE); + PCMK_OCF_OK, PCMK_EXEC_DONE); node = pcmk__xml_parse(s); assert_false(pcmk_xe_mask_probe_failure(node)); free(s); pcmk__xml_free(node); - s = crm_strdup_printf("<" PCMK__XE_LRM_RSC_OP " " + s = pcmk__assert_asprintf("<" PCMK__XE_LRM_RSC_OP " " PCMK_XA_OPERATION "=\"" PCMK_ACTION_MONITOR "\" " PCMK_META_INTERVAL "=\"0\" " PCMK__XA_RC_CODE "=\"%d\" " PCMK__XA_OP_STATUS "=\"%d\"/>", - PCMK_OCF_INVALID_PARAM, PCMK_EXEC_DONE); + PCMK_OCF_INVALID_PARAM, PCMK_EXEC_DONE); node = pcmk__xml_parse(s); assert_true(pcmk_xe_mask_probe_failure(node)); free(s); pcmk__xml_free(node); - s = crm_strdup_printf("<" PCMK__XE_LRM_RSC_OP " " + s = pcmk__assert_asprintf("<" PCMK__XE_LRM_RSC_OP " " PCMK_XA_OPERATION "=\"" PCMK_ACTION_MONITOR "\" " PCMK_META_INTERVAL "=\"0\" " PCMK__XA_RC_CODE "=\"%d\" " PCMK__XA_OP_STATUS "=\"%d\"/>", - PCMK_OCF_NOT_INSTALLED, PCMK_EXEC_DONE); + PCMK_OCF_NOT_INSTALLED, PCMK_EXEC_DONE); node = pcmk__xml_parse(s); assert_true(pcmk_xe_mask_probe_failure(node)); free(s); pcmk__xml_free(node); - s = crm_strdup_printf("<" PCMK__XE_LRM_RSC_OP " " + s = pcmk__assert_asprintf("<" PCMK__XE_LRM_RSC_OP " " PCMK_XA_OPERATION "=\"" PCMK_ACTION_MONITOR "\" " PCMK_META_INTERVAL "=\"0\" " PCMK__XA_RC_CODE "=\"%d\" " PCMK__XA_OP_STATUS "=\"%d\"/>", - PCMK_OCF_NOT_CONFIGURED, PCMK_EXEC_DONE); + PCMK_OCF_NOT_CONFIGURED, PCMK_EXEC_DONE); node = pcmk__xml_parse(s); assert_false(pcmk_xe_mask_probe_failure(node)); free(s); pcmk__xml_free(node); - s = crm_strdup_printf("<" PCMK__XE_LRM_RSC_OP " " + s = pcmk__assert_asprintf("<" PCMK__XE_LRM_RSC_OP " " PCMK_XA_OPERATION "=\"" PCMK_ACTION_MONITOR "\" " PCMK_META_INTERVAL "=\"0\" " PCMK__XA_RC_CODE "=\"%d\" " PCMK__XA_OP_STATUS "=\"%d\"/>", - PCMK_OCF_NOT_RUNNING, PCMK_EXEC_DONE); + PCMK_OCF_NOT_RUNNING, PCMK_EXEC_DONE); node = pcmk__xml_parse(s); assert_false(pcmk_xe_mask_probe_failure(node)); free(s); pcmk__xml_free(node); /* PCMK_EXEC_NOT_INSTALLED */ - s = crm_strdup_printf("<" PCMK__XE_LRM_RSC_OP " " + s = pcmk__assert_asprintf("<" PCMK__XE_LRM_RSC_OP " " PCMK_XA_OPERATION "=\"" PCMK_ACTION_MONITOR "\" " PCMK_META_INTERVAL "=\"0\" " PCMK__XA_RC_CODE "=\"%d\" " PCMK__XA_OP_STATUS "=\"%d\"/>", - PCMK_OCF_OK, PCMK_EXEC_NOT_INSTALLED); + PCMK_OCF_OK, PCMK_EXEC_NOT_INSTALLED); node = pcmk__xml_parse(s); assert_true(pcmk_xe_mask_probe_failure(node)); free(s); pcmk__xml_free(node); - s = crm_strdup_printf("<" PCMK__XE_LRM_RSC_OP " " + s = pcmk__assert_asprintf("<" PCMK__XE_LRM_RSC_OP " " PCMK_XA_OPERATION "=\"" PCMK_ACTION_MONITOR "\" " PCMK_META_INTERVAL "=\"0\" " PCMK__XA_RC_CODE "=\"%d\" " PCMK__XA_OP_STATUS "=\"%d\"/>", - PCMK_OCF_NOT_INSTALLED, PCMK_EXEC_NOT_INSTALLED); + PCMK_OCF_NOT_INSTALLED, PCMK_EXEC_NOT_INSTALLED); node = pcmk__xml_parse(s); assert_true(pcmk_xe_mask_probe_failure(node)); free(s); pcmk__xml_free(node); /* PCMK_EXEC_ERROR */ - s = crm_strdup_printf("<" PCMK__XE_LRM_RSC_OP " " + s = pcmk__assert_asprintf("<" PCMK__XE_LRM_RSC_OP " " PCMK_XA_OPERATION "=\"" PCMK_ACTION_MONITOR "\" " PCMK_META_INTERVAL "=\"0\" " PCMK__XA_RC_CODE "=\"%d\" " PCMK__XA_OP_STATUS "=\"%d\"/>", - PCMK_OCF_OK, PCMK_EXEC_ERROR); + PCMK_OCF_OK, PCMK_EXEC_ERROR); node = pcmk__xml_parse(s); assert_false(pcmk_xe_mask_probe_failure(node)); free(s); pcmk__xml_free(node); - s = crm_strdup_printf("<" PCMK__XE_LRM_RSC_OP " " + s = pcmk__assert_asprintf("<" PCMK__XE_LRM_RSC_OP " " PCMK_XA_OPERATION "=\"" PCMK_ACTION_MONITOR "\" " PCMK_META_INTERVAL "=\"0\" " PCMK__XA_RC_CODE "=\"%d\" " PCMK__XA_OP_STATUS "=\"%d\"/>", - PCMK_OCF_INVALID_PARAM, PCMK_EXEC_ERROR); + PCMK_OCF_INVALID_PARAM, PCMK_EXEC_ERROR); node = pcmk__xml_parse(s); assert_true(pcmk_xe_mask_probe_failure(node)); free(s); pcmk__xml_free(node); - s = crm_strdup_printf("<" PCMK__XE_LRM_RSC_OP " " + s = pcmk__assert_asprintf("<" PCMK__XE_LRM_RSC_OP " " PCMK_XA_OPERATION "=\"" PCMK_ACTION_MONITOR "\" " PCMK_META_INTERVAL "=\"0\" " PCMK__XA_RC_CODE "=\"%d\" " PCMK__XA_OP_STATUS "=\"%d\"/>", - PCMK_OCF_NOT_INSTALLED, PCMK_EXEC_ERROR); + PCMK_OCF_NOT_INSTALLED, PCMK_EXEC_ERROR); node = pcmk__xml_parse(s); assert_true(pcmk_xe_mask_probe_failure(node)); free(s); pcmk__xml_free(node); - s = crm_strdup_printf("<" PCMK__XE_LRM_RSC_OP " " + s = pcmk__assert_asprintf("<" PCMK__XE_LRM_RSC_OP " " PCMK_XA_OPERATION "=\"" PCMK_ACTION_MONITOR "\" " PCMK_META_INTERVAL "=\"0\" " PCMK__XA_RC_CODE "=\"%d\" " @@ -204,124 +204,124 @@ check_values_test(void **state) { free(s); pcmk__xml_free(node); - s = crm_strdup_printf("<" PCMK__XE_LRM_RSC_OP " " + s = pcmk__assert_asprintf("<" PCMK__XE_LRM_RSC_OP " " PCMK_XA_OPERATION "=\"" PCMK_ACTION_MONITOR "\" " PCMK_META_INTERVAL "=\"0\" " PCMK__XA_RC_CODE "=\"%d\" " PCMK__XA_OP_STATUS "=\"%d\"/>", - PCMK_OCF_NOT_RUNNING, PCMK_EXEC_ERROR); + PCMK_OCF_NOT_RUNNING, PCMK_EXEC_ERROR); node = pcmk__xml_parse(s); assert_false(pcmk_xe_mask_probe_failure(node)); free(s); pcmk__xml_free(node); /* PCMK_EXEC_ERROR_HARD */ - s = crm_strdup_printf("<" PCMK__XE_LRM_RSC_OP " " + s = pcmk__assert_asprintf("<" PCMK__XE_LRM_RSC_OP " " PCMK_XA_OPERATION "=\"" PCMK_ACTION_MONITOR "\" " PCMK_META_INTERVAL "=\"0\" " PCMK__XA_RC_CODE "=\"%d\" " PCMK__XA_OP_STATUS "=\"%d\"/>", - PCMK_OCF_OK, PCMK_EXEC_ERROR_HARD); + PCMK_OCF_OK, PCMK_EXEC_ERROR_HARD); node = pcmk__xml_parse(s); assert_false(pcmk_xe_mask_probe_failure(node)); free(s); pcmk__xml_free(node); - s = crm_strdup_printf("<" PCMK__XE_LRM_RSC_OP " " + s = pcmk__assert_asprintf("<" PCMK__XE_LRM_RSC_OP " " PCMK_XA_OPERATION "=\"" PCMK_ACTION_MONITOR "\" " PCMK_META_INTERVAL "=\"0\" " PCMK__XA_RC_CODE "=\"%d\" " PCMK__XA_OP_STATUS "=\"%d\"/>", - PCMK_OCF_INVALID_PARAM, PCMK_EXEC_ERROR_HARD); + PCMK_OCF_INVALID_PARAM, PCMK_EXEC_ERROR_HARD); node = pcmk__xml_parse(s); assert_true(pcmk_xe_mask_probe_failure(node)); free(s); pcmk__xml_free(node); - s = crm_strdup_printf("<" PCMK__XE_LRM_RSC_OP " " + s = pcmk__assert_asprintf("<" PCMK__XE_LRM_RSC_OP " " PCMK_XA_OPERATION "=\"" PCMK_ACTION_MONITOR "\" " PCMK_META_INTERVAL "=\"0\" " PCMK__XA_RC_CODE "=\"%d\" " PCMK__XA_OP_STATUS "=\"%d\"/>", - PCMK_OCF_NOT_INSTALLED, PCMK_EXEC_ERROR_HARD); + PCMK_OCF_NOT_INSTALLED, PCMK_EXEC_ERROR_HARD); node = pcmk__xml_parse(s); assert_true(pcmk_xe_mask_probe_failure(node)); free(s); pcmk__xml_free(node); - s = crm_strdup_printf("<" PCMK__XE_LRM_RSC_OP " " + s = pcmk__assert_asprintf("<" PCMK__XE_LRM_RSC_OP " " PCMK_XA_OPERATION "=\"" PCMK_ACTION_MONITOR "\" " PCMK_META_INTERVAL "=\"0\" " PCMK__XA_RC_CODE "=\"%d\" " PCMK__XA_OP_STATUS "=\"%d\"/>", - PCMK_OCF_NOT_CONFIGURED, PCMK_EXEC_ERROR_HARD); + PCMK_OCF_NOT_CONFIGURED, PCMK_EXEC_ERROR_HARD); node = pcmk__xml_parse(s); assert_false(pcmk_xe_mask_probe_failure(node)); free(s); pcmk__xml_free(node); - s = crm_strdup_printf("<" PCMK__XE_LRM_RSC_OP " " + s = pcmk__assert_asprintf("<" PCMK__XE_LRM_RSC_OP " " PCMK_XA_OPERATION "=\"" PCMK_ACTION_MONITOR "\" " PCMK_META_INTERVAL "=\"0\" " PCMK__XA_RC_CODE "=\"%d\" " PCMK__XA_OP_STATUS "=\"%d\"/>", - PCMK_OCF_NOT_RUNNING, PCMK_EXEC_ERROR_HARD); + PCMK_OCF_NOT_RUNNING, PCMK_EXEC_ERROR_HARD); node = pcmk__xml_parse(s); assert_false(pcmk_xe_mask_probe_failure(node)); free(s); pcmk__xml_free(node); /* PCMK_EXEC_ERROR_FATAL */ - s = crm_strdup_printf("<" PCMK__XE_LRM_RSC_OP " " + s = pcmk__assert_asprintf("<" PCMK__XE_LRM_RSC_OP " " PCMK_XA_OPERATION "=\"" PCMK_ACTION_MONITOR "\" " PCMK_META_INTERVAL "=\"0\" " PCMK__XA_RC_CODE "=\"%d\" " PCMK__XA_OP_STATUS "=\"%d\"/>", - PCMK_OCF_OK, PCMK_EXEC_ERROR_FATAL); + PCMK_OCF_OK, PCMK_EXEC_ERROR_FATAL); node = pcmk__xml_parse(s); assert_false(pcmk_xe_mask_probe_failure(node)); free(s); pcmk__xml_free(node); - s = crm_strdup_printf("<" PCMK__XE_LRM_RSC_OP " " + s = pcmk__assert_asprintf("<" PCMK__XE_LRM_RSC_OP " " PCMK_XA_OPERATION "=\"" PCMK_ACTION_MONITOR "\" " PCMK_META_INTERVAL "=\"0\" " PCMK__XA_RC_CODE "=\"%d\" " PCMK__XA_OP_STATUS "=\"%d\"/>", - PCMK_OCF_INVALID_PARAM, PCMK_EXEC_ERROR_FATAL); + PCMK_OCF_INVALID_PARAM, PCMK_EXEC_ERROR_FATAL); node = pcmk__xml_parse(s); assert_true(pcmk_xe_mask_probe_failure(node)); free(s); pcmk__xml_free(node); - s = crm_strdup_printf("<" PCMK__XE_LRM_RSC_OP " " + s = pcmk__assert_asprintf("<" PCMK__XE_LRM_RSC_OP " " PCMK_XA_OPERATION "=\"" PCMK_ACTION_MONITOR "\" " PCMK_META_INTERVAL "=\"0\" " PCMK__XA_RC_CODE "=\"%d\" " PCMK__XA_OP_STATUS "=\"%d\"/>", - PCMK_OCF_NOT_INSTALLED, PCMK_EXEC_ERROR_FATAL); + PCMK_OCF_NOT_INSTALLED, PCMK_EXEC_ERROR_FATAL); node = pcmk__xml_parse(s); assert_true(pcmk_xe_mask_probe_failure(node)); free(s); pcmk__xml_free(node); - s = crm_strdup_printf("<" PCMK__XE_LRM_RSC_OP " " + s = pcmk__assert_asprintf("<" PCMK__XE_LRM_RSC_OP " " PCMK_XA_OPERATION "=\"" PCMK_ACTION_MONITOR "\" " PCMK_META_INTERVAL "=\"0\" " PCMK__XA_RC_CODE "=\"%d\" " PCMK__XA_OP_STATUS "=\"%d\"/>", - PCMK_OCF_NOT_CONFIGURED, PCMK_EXEC_ERROR_FATAL); + PCMK_OCF_NOT_CONFIGURED, PCMK_EXEC_ERROR_FATAL); node = pcmk__xml_parse(s); assert_false(pcmk_xe_mask_probe_failure(node)); free(s); pcmk__xml_free(node); - s = crm_strdup_printf("<" PCMK__XE_LRM_RSC_OP " " + s = pcmk__assert_asprintf("<" PCMK__XE_LRM_RSC_OP " " PCMK_XA_OPERATION "=\"" PCMK_ACTION_MONITOR "\" " PCMK_META_INTERVAL "=\"0\" " PCMK__XA_RC_CODE "=\"%d\" " PCMK__XA_OP_STATUS "=\"%d\"/>", - PCMK_OCF_NOT_RUNNING, PCMK_EXEC_ERROR_FATAL); + PCMK_OCF_NOT_RUNNING, PCMK_EXEC_ERROR_FATAL); node = pcmk__xml_parse(s); assert_false(pcmk_xe_mask_probe_failure(node)); free(s); diff --git a/lib/common/tests/rules/pcmk__cmp_by_type_test.c b/lib/common/tests/rules/pcmk__cmp_by_type_test.c index cf468f1fa52..fe041545eb1 100644 --- a/lib/common/tests/rules/pcmk__cmp_by_type_test.c +++ b/lib/common/tests/rules/pcmk__cmp_by_type_test.c @@ -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. * @@ -11,7 +11,6 @@ #include // INT_MIN, INT_MAX -#include // crm_strdup_printf() #include #include #include "crmcommon_private.h" @@ -46,8 +45,8 @@ compare_string_type(void **state) static void compare_integer_type(void **state) { - char *int_min = crm_strdup_printf("%d", INT_MIN); - char *int_max = crm_strdup_printf("%d", INT_MAX); + char *int_min = pcmk__assert_asprintf("%d", INT_MIN); + char *int_max = pcmk__assert_asprintf("%d", INT_MAX); assert_int_equal(pcmk__cmp_by_type("0", "0", pcmk__type_integer), 0); assert_true(pcmk__cmp_by_type("0", "1", pcmk__type_integer) < 0); diff --git a/lib/common/tests/schemas/pcmk__schema_init_test.c b/lib/common/tests/schemas/pcmk__schema_init_test.c index 19c20cc7dab..9750292cd63 100644 --- a/lib/common/tests/schemas/pcmk__schema_init_test.c +++ b/lib/common/tests/schemas/pcmk__schema_init_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2023-2024 the Pacemaker project contributors + * Copyright 2023-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -26,8 +26,8 @@ symlink_schema(const char *tmpdir, const char *target_file, const char *link_fil char *oldpath = NULL; char *newpath = NULL; - oldpath = crm_strdup_printf("%s/%s", PCMK__TEST_SCHEMA_DIR, target_file); - newpath = crm_strdup_printf("%s/%s", tmpdir, link_file); + oldpath = pcmk__assert_asprintf(PCMK__TEST_SCHEMA_DIR "/%s", target_file); + newpath = pcmk__assert_asprintf("%s/%s", tmpdir, link_file); rc = symlink(oldpath, newpath); @@ -57,7 +57,7 @@ setup(void **state) * to be anything special - we can just copy existing schemas but give * them new names. */ - dir = crm_strdup_printf("%s/test-schemas.XXXXXX", pcmk__get_tmpdir()); + dir = pcmk__assert_asprintf("%s/test-schemas.XXXXXX", pcmk__get_tmpdir()); remote_schema_dir = mkdtemp(dir); if (remote_schema_dir == NULL) { diff --git a/lib/common/tests/scores/pcmk_parse_score_test.c b/lib/common/tests/scores/pcmk_parse_score_test.c index 3861ef45992..a79a1f74450 100644 --- a/lib/common/tests/scores/pcmk_parse_score_test.c +++ b/lib/common/tests/scores/pcmk_parse_score_test.c @@ -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. * @@ -90,7 +90,7 @@ special_values(void **state) static void outside_limits(void **state) { - char *very_long = crm_strdup_printf(" %lld0", LLONG_MAX); + char *very_long = pcmk__assert_asprintf(" %lld0", LLONG_MAX); // Still within int range assert_score(B(PCMK_SCORE_INFINITY) "00", pcmk_rc_ok, PCMK_SCORE_INFINITY); diff --git a/lib/common/tests/strings/pcmk__parse_ms_test.c b/lib/common/tests/strings/pcmk__parse_ms_test.c index 6d98799b681..00cc67b6907 100644 --- a/lib/common/tests/strings/pcmk__parse_ms_test.c +++ b/lib/common/tests/strings/pcmk__parse_ms_test.c @@ -94,12 +94,12 @@ overflow(void **state) { char *input = NULL; - input = crm_strdup_printf("%llu", (unsigned long long) LLONG_MAX + 1); + input = pcmk__assert_asprintf("%llu", (unsigned long long) LLONG_MAX + 1); assert_parse_ms(input, ERANGE, LLONG_MAX); free(input); // Hopefully we can rely on two's complement integers - input = crm_strdup_printf("-%llu", (unsigned long long) LLONG_MIN + 1); + input = pcmk__assert_asprintf("-%llu", (unsigned long long) LLONG_MIN + 1); assert_parse_ms(input, ERANGE, LLONG_MIN); free(input); } diff --git a/lib/common/tests/strings/pcmk__scan_ll_test.c b/lib/common/tests/strings/pcmk__scan_ll_test.c index e5f284d6768..b70a92427e1 100644 --- a/lib/common/tests/strings/pcmk__scan_ll_test.c +++ b/lib/common/tests/strings/pcmk__scan_ll_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2023-2024 the Pacemaker project contributors + * Copyright 2023-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -53,7 +53,7 @@ static void out_of_range(void **state) { long long result = 0LL; - char *very_long = crm_strdup_printf(" %lld0", LLONG_MAX); + char *very_long = pcmk__assert_asprintf(" %lld0", LLONG_MAX); assert_int_equal(pcmk__scan_ll(very_long, &result, 47), ERANGE); assert_true(result == LLONG_MAX); diff --git a/lib/common/tests/xml_element/pcmk__xe_get_score_test.c b/lib/common/tests/xml_element/pcmk__xe_get_score_test.c index 13cd15df836..ef2acce9ae5 100644 --- a/lib/common/tests/xml_element/pcmk__xe_get_score_test.c +++ b/lib/common/tests/xml_element/pcmk__xe_get_score_test.c @@ -119,7 +119,7 @@ special_values(void **state) static void outside_limits(void **state) { - char *very_long = crm_strdup_printf(" %lld0", LLONG_MAX); + char *very_long = pcmk__assert_asprintf(" %lld0", LLONG_MAX); // Still within int range assert_score(B(PCMK_SCORE_INFINITY) "00", pcmk_rc_ok, PCMK_SCORE_INFINITY); diff --git a/lib/common/tls.c b/lib/common/tls.c index 9d9652643c4..1229adbf383 100644 --- a/lib/common/tls.c +++ b/lib/common/tls.c @@ -28,9 +28,9 @@ get_gnutls_priorities(gnutls_credentials_type_t cred_type) } if (cred_type == GNUTLS_CRD_ANON) { - return crm_strdup_printf("%s:+ANON-DH", prio_base); + return pcmk__assert_asprintf("%s:+ANON-DH", prio_base); } else if (cred_type == GNUTLS_CRD_PSK) { - return crm_strdup_printf("%s:+DHE-PSK:+PSK", prio_base); + return pcmk__assert_asprintf("%s:+DHE-PSK:+PSK", prio_base); } else { return strdup(prio_base); } diff --git a/lib/common/unittest.c b/lib/common/unittest.c index 6bf4d94e973..c05fc80e580 100644 --- a/lib/common/unittest.c +++ b/lib/common/unittest.c @@ -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. * @@ -25,8 +25,8 @@ pcmk__assert_validates(xmlNode *xml) gchar *err = NULL; gint status; GError *gerr = NULL; - char *xmllint_input = crm_strdup_printf("%s/test-xmllint.XXXXXX", - pcmk__get_tmpdir()); + char *xmllint_input = pcmk__assert_asprintf("%s/test-xmllint.XXXXXX", + pcmk__get_tmpdir()); int fd; int rc; @@ -50,8 +50,8 @@ pcmk__assert_validates(xmlNode *xml) fail_msg("PCMK_schema_directory is not set in test environment"); } - cmd = crm_strdup_printf("xmllint --relaxng %s/api/api-result.rng %s", - schema_dir, xmllint_input); + cmd = pcmk__assert_asprintf("xmllint --relaxng %s/api/api-result.rng %s", + schema_dir, xmllint_input); if (!g_spawn_command_line_sync(cmd, &out, &err, &status, &gerr)) { unlink(xmllint_input); @@ -111,13 +111,14 @@ pcmk__xml_test_teardown_group(void **state) char * pcmk__cib_test_copy_cib(const char *in_file) { - char *in_path = crm_strdup_printf("%s/%s", getenv("PCMK_CTS_CLI_DIR"), in_file); + char *in_path = pcmk__assert_asprintf("%s/%s", getenv("PCMK_CTS_CLI_DIR"), + in_file); char *out_path = NULL; char *contents = NULL; int fd; /* Copy the CIB over to a temp location so we can modify it. */ - out_path = crm_strdup_printf("%s/test-cib.XXXXXX", pcmk__get_tmpdir()); + out_path = pcmk__assert_asprintf("%s/test-cib.XXXXXX", pcmk__get_tmpdir()); fd = mkstemp(out_path); if (fd < 0) { diff --git a/lib/common/xml.c b/lib/common/xml.c index 1e675d8efed..61099a40311 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -1700,7 +1700,7 @@ pcmk__xml_artefact_root(enum pcmk__xml_artefact_ns ns) break; case pcmk__xml_artefact_ns_base_rng: case pcmk__xml_artefact_ns_base_xslt: - ret = crm_strdup_printf("%s/base", base); + ret = pcmk__assert_asprintf("%s/base", base); break; default: crm_err("XML artefact family specified as %u not recognized", ns); @@ -1717,17 +1717,17 @@ find_artefact(enum pcmk__xml_artefact_ns ns, const char *path, const char *files case pcmk__xml_artefact_ns_legacy_rng: case pcmk__xml_artefact_ns_base_rng: if (pcmk__ends_with(filespec, ".rng")) { - ret = crm_strdup_printf("%s/%s", path, filespec); + ret = pcmk__assert_asprintf("%s/%s", path, filespec); } else { - ret = crm_strdup_printf("%s/%s.rng", path, filespec); + ret = pcmk__assert_asprintf("%s/%s.rng", path, filespec); } break; case pcmk__xml_artefact_ns_legacy_xslt: case pcmk__xml_artefact_ns_base_xslt: if (pcmk__ends_with(filespec, ".xsl")) { - ret = crm_strdup_printf("%s/%s", path, filespec); + ret = pcmk__assert_asprintf("%s/%s", path, filespec); } else { - ret = crm_strdup_printf("%s/%s.xsl", path, filespec); + ret = pcmk__assert_asprintf("%s/%s.xsl", path, filespec); } break; default: diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index 87e4964d840..432790cedf5 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -602,11 +602,11 @@ update_xe(xmlNode *parent, xmlNode *target, xmlNode *update, uint32_t flags) pcmk__if_tracing( { if (update_id_attr != NULL) { - trace_s = crm_strdup_printf("<%s %s=%s/>", - update_name, update_id_attr, - update_id_val); + trace_s = pcmk__assert_asprintf("<%s %s=%s/>", + update_name, update_id_attr, + update_id_val); } else { - trace_s = crm_strdup_printf("<%s/>", update_name); + trace_s = pcmk__assert_asprintf("<%s/>", update_name); } }, {} @@ -1186,7 +1186,7 @@ pcmk__xe_set_guint(xmlNode *xml, const char *attr, guint value) CRM_CHECK((xml != NULL) && (attr != NULL), return); - value_s = crm_strdup_printf("%u", value); + value_s = pcmk__assert_asprintf("%u", value); pcmk__xe_set(xml, attr, value_s); free(value_s); } @@ -1301,7 +1301,7 @@ pcmk__xe_set_ll(xmlNode *xml, const char *attr, long long value) CRM_CHECK((xml != NULL) && (attr != NULL), return EINVAL); - value_s = crm_strdup_printf("%lld", value); + value_s = pcmk__assert_asprintf("%lld", value); rc = pcmk__xe_set(xml, attr, value_s); free(value_s); @@ -1609,7 +1609,7 @@ crm_xml_set_id(xmlNode *xml, const char *format, ...) int len = 0; char *id = NULL; - /* equivalent to crm_strdup_printf() */ + // Equivalent to pcmk__assert_asprintf() va_start(ap, format); len = vasprintf(&id, format, ap); va_end(ap); @@ -1839,7 +1839,7 @@ crm_xml_add_timeval(xmlNode *xml, const char *name_sec, const char *name_usec, const char * crm_xml_add_ms(xmlNode *node, const char *name, guint ms) { - char *number = crm_strdup_printf("%u", ms); + char *number = pcmk__assert_asprintf("%u", ms); const char *added = crm_xml_add(node, name, number); free(number); diff --git a/lib/common/xml_idref.c b/lib/common/xml_idref.c index d8238e6d9af..d808cc2d3fe 100644 --- a/lib/common/xml_idref.c +++ b/lib/common/xml_idref.c @@ -101,7 +101,7 @@ pcmk__xe_resolve_idref(xmlNode *xml, xmlNode *search) search = xml; } - xpath = crm_strdup_printf("//%s[@" PCMK_XA_ID "='%s']", xml->name, ref); + xpath = pcmk__assert_asprintf("//%s[@" PCMK_XA_ID "='%s']", xml->name, ref); result = pcmk__xpath_find_one(search->doc, xpath, LOG_DEBUG); if (result == NULL) { // Not possible with schema validation enabled diff --git a/lib/common/xml_io.c b/lib/common/xml_io.c index fd13949cdff..f6af680abd1 100644 --- a/lib/common/xml_io.c +++ b/lib/common/xml_io.c @@ -622,7 +622,7 @@ pcmk__xml_write_temp_file(const xmlNode *xml, const char *desc, uuid = crm_generate_uuid(); filename = uuid; } - path = crm_strdup_printf("%s/%s", pcmk__get_tmpdir(), filename); + path = pcmk__assert_asprintf("%s/%s", pcmk__get_tmpdir(), filename); crm_info("Saving %s to %s", desc, path); pcmk__xml_write_file(xml, filename, false); @@ -644,7 +644,7 @@ save_xml_to_file(const xmlNode *xml, const char *desc, const char *filename) if (filename == NULL) { char *uuid = crm_generate_uuid(); - f = crm_strdup_printf("%s/%s", pcmk__get_tmpdir(), uuid); + f = pcmk__assert_asprintf("%s/%s", pcmk__get_tmpdir(), uuid); filename = f; free(uuid); } diff --git a/lib/common/xpath.c b/lib/common/xpath.c index f57b43d5b0d..317114c1b1d 100644 --- a/lib/common/xpath.c +++ b/lib/common/xpath.c @@ -332,7 +332,7 @@ pcmk__xpath_node_id(const char *xpath, const char *node) return retval; } - patt = crm_strdup_printf("/%s[@" PCMK_XA_ID "=", node); + patt = pcmk__assert_asprintf("/%s[@" PCMK_XA_ID "=", node); start = strstr(xpath, patt); if (!start) { diff --git a/lib/fencing/st_actions.c b/lib/fencing/st_actions.c index 86c31702e30..8afee24c652 100644 --- a/lib/fencing/st_actions.c +++ b/lib/fencing/st_actions.c @@ -79,7 +79,8 @@ log_action(stonith_action_t *action, pid_t pid) */ if (action->result.action_stderr != NULL) { /* Logging the whole string confuses syslog when the string is xml */ - char *prefix = crm_strdup_printf("%s[%d] stderr:", action->agent, pid); + char *prefix = pcmk__assert_asprintf("%s[%d] stderr:", action->agent, + pid); crm_log_output(LOG_WARNING, prefix, action->result.action_stderr); free(prefix); @@ -161,7 +162,7 @@ make_args(const char *agent, const char *action, const char *target, // If the target's node ID was specified, pass it, too if (target_nodeid != 0) { - char *nodeid = crm_strdup_printf("%" PRIu32, target_nodeid); + char *nodeid = pcmk__assert_asprintf("%" PRIu32, target_nodeid); // cts-fencing looks for this log message crm_info("Passing '%s' as nodeid with fence action '%s' targeting %s", @@ -590,7 +591,7 @@ stonith_action_to_svc(stonith_action_t *action) { static int stonith_sequence = 0; - char *path = crm_strdup_printf(PCMK__FENCE_BINDIR "/%s", action->agent); + char *path = pcmk__assert_asprintf(PCMK__FENCE_BINDIR "/%s", action->agent); svc_action_t *svc_action = services_action_create_generic(path, NULL); free(path); @@ -602,9 +603,9 @@ stonith_action_to_svc(stonith_action_t *action) svc_action->timeout = action->remaining_timeout * 1000; svc_action->standard = pcmk__str_copy(PCMK_RESOURCE_CLASS_STONITH); - svc_action->id = crm_strdup_printf("%s_%s_%dof%d", action->agent, - action->action, action->tries, - action->max_retries); + svc_action->id = pcmk__assert_asprintf("%s_%s_%dof%d", action->agent, + action->action, action->tries, + action->max_retries); svc_action->agent = pcmk__str_copy(action->agent); svc_action->sequence = stonith_sequence++; svc_action->params = action->args; diff --git a/lib/fencing/st_client.c b/lib/fencing/st_client.c index e2796ddd900..87f26702641 100644 --- a/lib/fencing/st_client.c +++ b/lib/fencing/st_client.c @@ -1391,7 +1391,7 @@ stonith_dump_pending_callbacks(stonith_t * stonith) static xmlNode * get_event_data_xml(xmlNode *msg, const char *ntype) { - char *data_addr = crm_strdup_printf("//%s", ntype); + char *data_addr = pcmk__assert_asprintf("//%s", ntype); xmlNode *data = pcmk__xpath_find_one(msg->doc, data_addr, LOG_DEBUG); free(data_addr); @@ -1804,7 +1804,8 @@ stonith__validate(stonith_t *st, int call_options, const char *rsc_id, rc = errno; if (error_output) { - *error_output = crm_strdup_printf("Agent %s not found", agent); + *error_output = pcmk__assert_asprintf("Agent %s not found", + agent); } else { crm_err("Agent %s not found", agent); } @@ -1816,8 +1817,9 @@ stonith__validate(stonith_t *st, int call_options, const char *rsc_id, rc = errno; if (error_output) { - *error_output = crm_strdup_printf("Agent %s does not support validation", - agent); + *error_output = pcmk__assert_asprintf("Agent %s does not " + "support validation", + agent); } else { crm_err("Agent %s does not support validation", agent); } @@ -2540,8 +2542,8 @@ stonith__metadata_async(const char *agent, int timeout_sec, pcmk__action_result_t result = { .exit_status = CRM_EX_NOSUCH, .execution_status = PCMK_EXEC_ERROR_HARD, - .exit_reason = crm_strdup_printf("No such agent '%s'", - agent), + .exit_reason = pcmk__assert_asprintf("No such agent '%s'", + agent), .action_stdout = NULL, .action_stderr = NULL, }; @@ -2701,33 +2703,37 @@ stonith__event_description(const stonith_event_t *event) if (pcmk__str_eq(event->operation, PCMK__VALUE_ST_NOTIFY_HISTORY, pcmk__str_none)) { - return crm_strdup_printf("Fencing history may have changed"); + return pcmk__assert_asprintf("Fencing history may have changed"); } else if (pcmk__str_eq(event->operation, STONITH_OP_DEVICE_ADD, pcmk__str_none)) { - return crm_strdup_printf("A fencing device (%s) was added", device); + return pcmk__assert_asprintf("A fencing device (%s) was added", device); } else if (pcmk__str_eq(event->operation, STONITH_OP_DEVICE_DEL, pcmk__str_none)) { - return crm_strdup_printf("A fencing device (%s) was removed", device); + return pcmk__assert_asprintf("A fencing device (%s) was removed", + device); } else if (pcmk__str_eq(event->operation, STONITH_OP_LEVEL_ADD, pcmk__str_none)) { - return crm_strdup_printf("A fencing topology level (%s) was added", - device); + return pcmk__assert_asprintf("A fencing topology level (%s) was added", + device); } else if (pcmk__str_eq(event->operation, STONITH_OP_LEVEL_DEL, pcmk__str_none)) { - return crm_strdup_printf("A fencing topology level (%s) was removed", - device); + return pcmk__assert_asprintf("A fencing topology level (%s) was " + "removed", + device); } // event->operation should be PCMK__VALUE_ST_NOTIFY_FENCE at this point - return crm_strdup_printf("Operation %s of %s by %s for %s@%s: %s%s%s%s (ref=%s)", - action, target, executioner, origin, origin_node, - status, - ((reason == NULL)? "" : " ("), pcmk__s(reason, ""), - ((reason == NULL)? "" : ")"), - pcmk__s(event->id, "(none)")); + return pcmk__assert_asprintf("Operation %s of %s by %s for %s@%s: %s%s%s%s " + "(ref=%s)", + action, target, executioner, origin, + origin_node, status, + ((reason == NULL)? "" : " ("), + pcmk__s(reason, ""), + ((reason == NULL)? "" : ")"), + pcmk__s(event->id, "(none)")); } diff --git a/lib/fencing/st_lha.c b/lib/fencing/st_lha.c index 25189e41c9d..0b85e929815 100644 --- a/lib/fencing/st_lha.c +++ b/lib/fencing/st_lha.c @@ -261,13 +261,13 @@ stonith__lha_metadata(const char *agent, int timeout, char **output) * here because PCMK_DEFAULT_ACTION_TIMEOUT_MS is 20000 -> "20s". */ timeout_str = pcmk__readable_interval(PCMK_DEFAULT_ACTION_TIMEOUT_MS); - buffer = crm_strdup_printf(META_TEMPLATE, agent, - ((meta_longdesc_esc != NULL) ? - meta_longdesc_esc : meta_longdesc), - ((meta_shortdesc_esc != NULL) ? - meta_shortdesc_esc : meta_shortdesc), - meta_param, timeout_str, timeout_str, - timeout_str); + buffer = pcmk__assert_asprintf(META_TEMPLATE, agent, + pcmk__s(meta_longdesc_esc, + meta_longdesc), + pcmk__s(meta_shortdesc_esc, + meta_shortdesc), + meta_param, timeout_str, timeout_str, + timeout_str); g_free(meta_longdesc_esc); g_free(meta_shortdesc_esc); diff --git a/lib/fencing/st_output.c b/lib/fencing/st_output.c index 8df742a4449..f6a7b2b4533 100644 --- a/lib/fencing/st_output.c +++ b/lib/fencing/st_output.c @@ -311,7 +311,8 @@ last_fenced_html(pcmk__output_t *out, va_list args) { time_t when = va_arg(args, time_t); if (when) { - char *buf = crm_strdup_printf("Node %s last fenced at: %s", target, ctime(&when)); + char *buf = pcmk__assert_asprintf("Node %s last fenced at: %s", target, + ctime(&when)); pcmk__output_create_html_node(out, PCMK__XE_DIV, NULL, NULL, buf); free(buf); return pcmk_rc_ok; @@ -512,15 +513,17 @@ validate_agent_html(pcmk__output_t *out, va_list args) { const char *output = va_arg(args, const char *); const char *error_output = va_arg(args, const char *); int rc = va_arg(args, int); + const char *rc_s = (rc == pcmk_rc_ok)? "succeeded" : "failed"; if (device) { - char *buf = crm_strdup_printf("Validation of %s on %s %s", agent, device, - rc ? "failed" : "succeeded"); + char *buf = pcmk__assert_asprintf("Validation of %s on %s %s", agent, + device, rc_s); + pcmk__output_create_html_node(out, PCMK__XE_DIV, NULL, NULL, buf); free(buf); } else { - char *buf = crm_strdup_printf("Validation of %s %s", agent, - rc ? "failed" : "succeeded"); + char *buf = pcmk__assert_asprintf("Validation of %s %s", agent, rc_s); + pcmk__output_create_html_node(out, PCMK__XE_DIV, NULL, NULL, buf); free(buf); } diff --git a/lib/fencing/st_rhcs.c b/lib/fencing/st_rhcs.c index b41395cf889..8fe12e8808d 100644 --- a/lib/fencing/st_rhcs.c +++ b/lib/fencing/st_rhcs.c @@ -45,7 +45,7 @@ rhcs_agent_filter(const struct dirent *entry) } // glibc doesn't enforce PATH_MAX, so don't limit buf size - buf = crm_strdup_printf(PCMK__FENCE_BINDIR "/%s", entry->d_name); + buf = pcmk__assert_asprintf(PCMK__FENCE_BINDIR "/%s", entry->d_name); if ((stat(buf, &sb) != 0) || !S_ISREG(sb.st_mode)) { goto done; } @@ -97,8 +97,9 @@ stonith_rhcs_parameter_not_required(xmlNode *metadata, const char *parameter) CRM_CHECK(metadata != NULL, return); CRM_CHECK(parameter != NULL, return); - xpath = crm_strdup_printf("//" PCMK_XE_PARAMETER "[@" PCMK_XA_NAME "='%s']", - parameter); + xpath = pcmk__assert_asprintf("//" PCMK_XE_PARAMETER + "[@" PCMK_XA_NAME "='%s']", + parameter); /* Fudge metadata so that the parameter isn't required in config * Pacemaker handles and adds it */ xpathObj = pcmk__xpath_search(metadata->doc, xpath); @@ -257,7 +258,7 @@ bool stonith__agent_is_rhcs(const char *agent) { struct stat prop; - char *buffer = crm_strdup_printf(PCMK__FENCE_BINDIR "/%s", agent); + char *buffer = pcmk__assert_asprintf(PCMK__FENCE_BINDIR "/%s", agent); int rc = stat(buffer, &prop); free(buffer); diff --git a/lib/lrmd/lrmd_alerts.c b/lib/lrmd/lrmd_alerts.c index 59e8ed8cd9f..a98ab5961f9 100644 --- a/lib/lrmd/lrmd_alerts.c +++ b/lib/lrmd/lrmd_alerts.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. * @@ -49,7 +49,7 @@ static lrmd_key_value_t * alert_key2param_ms(lrmd_key_value_t *head, enum pcmk__alert_keys_e name, guint value) { - char *value_s = crm_strdup_printf("%u", value); + char *value_s = pcmk__assert_asprintf("%u", value); head = alert_key2param(head, name, value_s); free(value_s); diff --git a/lib/lrmd/lrmd_client.c b/lib/lrmd/lrmd_client.c index 798b64ccadd..be07ec17bdd 100644 --- a/lib/lrmd/lrmd_client.c +++ b/lib/lrmd/lrmd_client.c @@ -1439,8 +1439,8 @@ add_tls_to_mainloop(lrmd_t *lrmd, bool do_api_handshake) lrmd_private_t *native = lrmd->lrmd_private; int rc = pcmk_rc_ok; - char *name = crm_strdup_printf("pacemaker-remote-%s:%d", - native->server, native->port); + char *name = pcmk__assert_asprintf("pacemaker-remote-%s:%d", + native->server, native->port); struct mainloop_fd_callbacks tls_fd_callbacks = { .dispatch = lrmd_tls_dispatch, diff --git a/lib/lrmd/lrmd_output.c b/lib/lrmd/lrmd_output.c index e5729696649..2e3271c82c2 100644 --- a/lib/lrmd/lrmd_output.c +++ b/lib/lrmd/lrmd_output.c @@ -96,10 +96,11 @@ lrmd__agents_list(pcmk__output_t *out, va_list args) { const char *agent_spec = va_arg(args, const char *); const char *provider = va_arg(args, const char *); - int rc; - char *title = crm_strdup_printf("%s agents", pcmk__str_empty(provider) ? agent_spec : provider); + const char *desc = pcmk__str_empty(provider)? agent_spec : provider; + char *title = pcmk__assert_asprintf("%s agents", + pcmk__s(desc, "(unknown)")); + int rc = default_list(out, list, title); - rc = default_list(out, list, title); free(title); return rc; } diff --git a/lib/pacemaker/pcmk_acl.c b/lib/pacemaker/pcmk_acl.c index e944b251919..d500aa24734 100644 --- a/lib/pacemaker/pcmk_acl.c +++ b/lib/pacemaker/pcmk_acl.c @@ -239,8 +239,8 @@ pcmk__acl_annotate_permissions(const char *cred, const xmlDoc *cib_doc, ret = annotate_with_siblings(target); if (ret == pcmk_rc_ok) { - char *content = crm_strdup_printf("ACLs as evaluated for user %s", - cred); + char *content = pcmk__assert_asprintf("ACLs as evaluated for user %s", + cred); comment = pcmk__xc_create(target->doc, content); xmlAddPrevSibling(xmlDocGetRootElement(target->doc), comment); diff --git a/lib/pacemaker/pcmk_graph_logging.c b/lib/pacemaker/pcmk_graph_logging.c index 46920826e53..84a8c7798f3 100644 --- a/lib/pacemaker/pcmk_graph_logging.c +++ b/lib/pacemaker/pcmk_graph_logging.c @@ -163,9 +163,9 @@ log_synapse_action(unsigned int log_level, pcmk__graph_synapse_t *synapse, { const char *key = pcmk__xe_get(action->xml, PCMK__XA_OPERATION_KEY); const char *host = pcmk__xe_get(action->xml, PCMK__META_ON_NODE); - char *desc = crm_strdup_printf("%s %s op %s", - synapse_state_str(synapse), - actiontype2text(action->type), key); + char *desc = pcmk__assert_asprintf("%s %s op %s", + synapse_state_str(synapse), + actiontype2text(action->type), key); do_crm_log(log_level, "[Action %4d]: %-50s%s%s (priority: %d, waiting: %s)", diff --git a/lib/pacemaker/pcmk_injections.c b/lib/pacemaker/pcmk_injections.c index 4aebe77336f..1f0ee2ca217 100644 --- a/lib/pacemaker/pcmk_injections.c +++ b/lib/pacemaker/pcmk_injections.c @@ -158,7 +158,7 @@ static void create_node_entry(cib_t *cib_conn, const char *node) { int rc = pcmk_ok; - char *xpath = crm_strdup_printf(XPATH_NODE_CONFIG, node); + char *xpath = pcmk__assert_asprintf(XPATH_NODE_CONFIG, node); rc = cib_conn->cmds->query(cib_conn, xpath, NULL, cib_xpath|cib_sync_call); @@ -258,7 +258,7 @@ pcmk__inject_node(cib_t *cib_conn, const char *node, const char *uuid) { int rc = pcmk_ok; xmlNode *cib_object = NULL; - char *xpath = crm_strdup_printf(XPATH_NODE_STATE, node); + char *xpath = pcmk__assert_asprintf(XPATH_NODE_STATE, node); bool duplicate = false; char *found_uuid = NULL; @@ -285,8 +285,8 @@ pcmk__inject_node(cib_t *cib_conn, const char *node, const char *uuid) } if (found_uuid) { - char *xpath_by_uuid = crm_strdup_printf(XPATH_NODE_STATE_BY_ID, - found_uuid); + char *xpath_by_uuid = pcmk__assert_asprintf(XPATH_NODE_STATE_BY_ID, + found_uuid); /* It's possible that a PCMK__XE_NODE_STATE entry doesn't have a * PCMK_XA_UNAME yet @@ -387,7 +387,7 @@ static xmlNode * find_resource_xml(xmlNode *cib_node, const char *resource) { const char *node = pcmk__xe_get(cib_node, PCMK_XA_UNAME); - char *xpath = crm_strdup_printf(XPATH_RSC_HISTORY, node, resource); + char *xpath = pcmk__assert_asprintf(XPATH_RSC_HISTORY, node, resource); xmlNode *match = pcmk__xpath_find_one(cib_node->doc, xpath, LOG_TRACE); free(xpath); @@ -701,17 +701,17 @@ pcmk__inject_scheduler_input(pcmk_scheduler_t *scheduler, cib_t *cib, pcmk__assert(rc == pcmk_ok); pcmk__xml_free(cib_node); - xpath = crm_strdup_printf("//" PCMK__XE_NODE_STATE - "[@" PCMK_XA_UNAME "='%s']" - "/" PCMK__XE_LRM, - node); + xpath = pcmk__assert_asprintf("//" PCMK__XE_NODE_STATE + "[@" PCMK_XA_UNAME "='%s']" + "/" PCMK__XE_LRM, + node); cib->cmds->remove(cib, xpath, NULL, cib_xpath|cib_sync_call); free(xpath); - xpath = crm_strdup_printf("//" PCMK__XE_NODE_STATE - "[@" PCMK_XA_UNAME "='%s']" - "/" PCMK__XE_TRANSIENT_ATTRIBUTES, - node); + xpath = pcmk__assert_asprintf("//" PCMK__XE_NODE_STATE + "[@" PCMK_XA_UNAME "='%s']" + "/" PCMK__XE_TRANSIENT_ATTRIBUTES, + node); cib->cmds->remove(cib, xpath, NULL, cib_xpath|cib_sync_call); free(xpath); } diff --git a/lib/pacemaker/pcmk_output.c b/lib/pacemaker/pcmk_output.c index accf1d6c656..5698fe71874 100644 --- a/lib/pacemaker/pcmk_output.c +++ b/lib/pacemaker/pcmk_output.c @@ -26,15 +26,17 @@ colocations_header(pcmk_resource_t *rsc, pcmk__colocation_t *cons, char *retval = NULL; if (cons->primary_role > pcmk_role_started) { - retval = crm_strdup_printf("%s (score=%s, %s role=%s, id=%s)", - rsc->id, pcmk_readable_score(cons->score), - (dependents? "needs" : "with"), - pcmk_role_text(cons->primary_role), - cons->id); + retval = pcmk__assert_asprintf("%s (score=%s, %s role=%s, id=%s)", + rsc->id, + pcmk_readable_score(cons->score), + (dependents? "needs" : "with"), + pcmk_role_text(cons->primary_role), + cons->id); } else { - retval = crm_strdup_printf("%s (score=%s, id=%s)", - rsc->id, pcmk_readable_score(cons->score), - cons->id); + retval = pcmk__assert_asprintf("%s (score=%s, id=%s)", + rsc->id, + pcmk_readable_score(cons->score), + cons->id); } return retval; } @@ -151,60 +153,60 @@ rsc_action_item(pcmk__output_t *out, va_list args) if (need_role && (origin == NULL)) { /* Starting and promoting a promotable clone instance */ - details = crm_strdup_printf("%s -> %s %s", - pcmk_role_text(rsc->priv->orig_role), - pcmk_role_text(rsc->priv->next_role), - pcmk__node_name(destination)); + details = pcmk__assert_asprintf("%s -> %s %s", + pcmk_role_text(rsc->priv->orig_role), + pcmk_role_text(rsc->priv->next_role), + pcmk__node_name(destination)); } else if (origin == NULL) { /* Starting a resource */ - details = crm_strdup_printf("%s", pcmk__node_name(destination)); + details = pcmk__assert_asprintf("%s", pcmk__node_name(destination)); } else if (need_role && (destination == NULL)) { /* Stopping a promotable clone instance */ - details = crm_strdup_printf("%s %s", - pcmk_role_text(rsc->priv->orig_role), - pcmk__node_name(origin)); + details = pcmk__assert_asprintf("%s %s", + pcmk_role_text(rsc->priv->orig_role), + pcmk__node_name(origin)); } else if (destination == NULL) { /* Stopping a resource */ - details = crm_strdup_printf("%s", pcmk__node_name(origin)); + details = pcmk__assert_asprintf("%s", pcmk__node_name(origin)); } else if (need_role && same_role && same_host) { /* Recovering, restarting or re-promoting a promotable clone instance */ - details = crm_strdup_printf("%s %s", - pcmk_role_text(rsc->priv->orig_role), - pcmk__node_name(origin)); + details = pcmk__assert_asprintf("%s %s", + pcmk_role_text(rsc->priv->orig_role), + pcmk__node_name(origin)); } else if (same_role && same_host) { /* Recovering or Restarting a normal resource */ - details = crm_strdup_printf("%s", pcmk__node_name(origin)); + details = pcmk__assert_asprintf("%s", pcmk__node_name(origin)); } else if (need_role && same_role) { /* Moving a promotable clone instance */ - details = crm_strdup_printf("%s -> %s %s", pcmk__node_name(origin), - pcmk__node_name(destination), - pcmk_role_text(rsc->priv->orig_role)); + details = pcmk__assert_asprintf("%s -> %s %s", pcmk__node_name(origin), + pcmk__node_name(destination), + pcmk_role_text(rsc->priv->orig_role)); } else if (same_role) { /* Moving a normal resource */ - details = crm_strdup_printf("%s -> %s", pcmk__node_name(origin), - pcmk__node_name(destination)); + details = pcmk__assert_asprintf("%s -> %s", pcmk__node_name(origin), + pcmk__node_name(destination)); } else if (same_host) { /* Promoting or demoting a promotable clone instance */ - details = crm_strdup_printf("%s -> %s %s", - pcmk_role_text(rsc->priv->orig_role), - pcmk_role_text(rsc->priv->next_role), - pcmk__node_name(origin)); + details = pcmk__assert_asprintf("%s -> %s %s", + pcmk_role_text(rsc->priv->orig_role), + pcmk_role_text(rsc->priv->next_role), + pcmk__node_name(origin)); } else { /* Moving and promoting/demoting */ - details = crm_strdup_printf("%s %s -> %s %s", - pcmk_role_text(rsc->priv->orig_role), - pcmk__node_name(origin), - pcmk_role_text(rsc->priv->next_role), - pcmk__node_name(destination)); + details = pcmk__assert_asprintf("%s %s -> %s %s", + pcmk_role_text(rsc->priv->orig_role), + pcmk__node_name(origin), + pcmk_role_text(rsc->priv->next_role), + pcmk__node_name(destination)); } len = strlen(details); @@ -214,10 +216,10 @@ rsc_action_item(pcmk__output_t *out, va_list args) if ((source->reason != NULL) && !pcmk_is_set(action->flags, pcmk__action_runnable)) { - reason = crm_strdup_printf("due to %s (blocked)", source->reason); + reason = pcmk__assert_asprintf("due to %s (blocked)", source->reason); } else if (source->reason) { - reason = crm_strdup_printf("due to %s", source->reason); + reason = pcmk__assert_asprintf("due to %s", source->reason); } else if (!pcmk_is_set(action->flags, pcmk__action_runnable)) { reason = strdup("blocked"); @@ -777,9 +779,9 @@ pacemakerd_health_html(pcmk__output_t *out, va_list args) |crm_time_log_with_timezone); } - msg = crm_strdup_printf("Status of %s: '%s' (last updated %s)", - sys_from, state_s, - pcmk__s(last_updated_s, "at unknown time")); + msg = pcmk__assert_asprintf("Status of %s: '%s' (last updated %s)", + sys_from, state_s, + pcmk__s(last_updated_s, "at unknown time")); pcmk__output_create_html_node(out, "li", NULL, NULL, msg); free(msg); @@ -992,13 +994,14 @@ digests_text(pcmk__output_t *out, va_list args) const char *node_desc = "unknown node"; if (interval_ms != 0) { - action_desc = crm_strdup_printf("%ums-interval %s action", interval_ms, - ((task == NULL)? "unknown" : task)); + action_desc = pcmk__assert_asprintf("%ums-interval %s action", + interval_ms, + pcmk__s(task, "unknown")); } else if (pcmk__str_eq(task, PCMK_ACTION_MONITOR, pcmk__str_none)) { action_desc = strdup("probe action"); } else { - action_desc = crm_strdup_printf("%s action", - ((task == NULL)? "unknown" : task)); + action_desc = pcmk__assert_asprintf("%s action", + pcmk__s(task, "unknown")); } if ((rsc != NULL) && (rsc->id != NULL)) { rsc_desc = rsc->id; @@ -1055,7 +1058,7 @@ digests_xml(pcmk__output_t *out, va_list args) guint interval_ms = va_arg(args, guint); const pcmk__op_digest_t *digests = va_arg(args, const pcmk__op_digest_t *); - char *interval_s = crm_strdup_printf("%ums", interval_ms); + char *interval_s = pcmk__assert_asprintf("%ums", interval_ms); xmlNode *xml = NULL; xml = pcmk__output_create_xml_node(out, PCMK_XE_DIGESTS, @@ -1394,7 +1397,7 @@ node_info_xml(pcmk__output_t *out, va_list args) bool have_quorum = (bool) va_arg(args, int); bool is_remote = (bool) va_arg(args, int); - char *id_s = crm_strdup_printf("%" PRIu32, node_id); + char *id_s = pcmk__assert_asprintf("%" PRIu32, node_id); pcmk__output_create_xml_node(out, PCMK_XE_NODE_INFO, PCMK_XA_NODEID, id_s, diff --git a/lib/pacemaker/pcmk_resource.c b/lib/pacemaker/pcmk_resource.c index d23d49abb1c..01bf6088591 100644 --- a/lib/pacemaker/pcmk_resource.c +++ b/lib/pacemaker/pcmk_resource.c @@ -41,7 +41,7 @@ best_op(const pcmk_resource_t *rsc, const pcmk_node_t *node) const char *best_digest = NULL; // Find node's resource history - xpath = crm_strdup_printf(XPATH_OP_HISTORY, node->priv->name, rsc->id); + xpath = pcmk__assert_asprintf(XPATH_OP_HISTORY, node->priv->name, rsc->id); history = pcmk__xpath_find_one(rsc->priv->scheduler->input->doc, xpath, LOG_NEVER); free(xpath); diff --git a/lib/pacemaker/pcmk_rule.c b/lib/pacemaker/pcmk_rule.c index e5c14a1be30..39bd2d97063 100644 --- a/lib/pacemaker/pcmk_rule.c +++ b/lib/pacemaker/pcmk_rule.c @@ -57,7 +57,7 @@ eval_rule(pcmk_scheduler_t *scheduler, const char *rule_id, const char **error) * We do this in steps to provide better error messages. First, check that * there's any rule with the given ID. */ - xpath = crm_strdup_printf(XPATH_NODE_RULE, rule_id); + xpath = pcmk__assert_asprintf(XPATH_NODE_RULE, rule_id); xpath_obj = pcmk__xpath_search(cib_constraints->doc, xpath); num_results = pcmk__xpath_num_results(xpath_obj); @@ -76,7 +76,9 @@ eval_rule(pcmk_scheduler_t *scheduler, const char *rule_id, const char **error) } /* Next, make sure it has exactly one date_expression. */ - xpath = crm_strdup_printf(XPATH_NODE_RULE "//date_expression", rule_id); + xpath = pcmk__assert_asprintf(XPATH_NODE_RULE "//" + PCMK_XE_DATE_EXPRESSION, + rule_id); xpath_obj = pcmk__xpath_search(cib_constraints->doc, xpath); num_results = pcmk__xpath_num_results(xpath_obj); @@ -93,11 +95,11 @@ eval_rule(pcmk_scheduler_t *scheduler, const char *rule_id, const char **error) } /* Then, check that it's something we actually support. */ - xpath = crm_strdup_printf(XPATH_NODE_RULE - "//" PCMK_XE_DATE_EXPRESSION - "[@" PCMK_XA_OPERATION - "!='" PCMK_VALUE_DATE_SPEC "']", - rule_id); + xpath = pcmk__assert_asprintf(XPATH_NODE_RULE + "//" PCMK_XE_DATE_EXPRESSION + "[@" PCMK_XA_OPERATION + "!='" PCMK_VALUE_DATE_SPEC "']", + rule_id); xpath_obj = pcmk__xpath_search(cib_constraints->doc, xpath); num_results = pcmk__xpath_num_results(xpath_obj); @@ -106,13 +108,13 @@ eval_rule(pcmk_scheduler_t *scheduler, const char *rule_id, const char **error) if (num_results == 0) { xmlXPathFreeObject(xpath_obj); - xpath = crm_strdup_printf(XPATH_NODE_RULE - "//" PCMK_XE_DATE_EXPRESSION - "[@" PCMK_XA_OPERATION - "='" PCMK_VALUE_DATE_SPEC "' " - "and " PCMK_XE_DATE_SPEC - "/@" PCMK_XA_YEARS "]", - rule_id); + xpath = pcmk__assert_asprintf(XPATH_NODE_RULE + "//" PCMK_XE_DATE_EXPRESSION + "[@" PCMK_XA_OPERATION + "='" PCMK_VALUE_DATE_SPEC "' " + "and " PCMK_XE_DATE_SPEC + "/@" PCMK_XA_YEARS "]", + rule_id); xpath_obj = pcmk__xpath_search(cib_constraints->doc, xpath); num_results = pcmk__xpath_num_results(xpath_obj); diff --git a/lib/pacemaker/pcmk_sched_actions.c b/lib/pacemaker/pcmk_sched_actions.c index 2435ef78885..90f9658adaf 100644 --- a/lib/pacemaker/pcmk_sched_actions.c +++ b/lib/pacemaker/pcmk_sched_actions.c @@ -1072,8 +1072,8 @@ pcmk__new_shutdown_action(pcmk_node_t *node) pcmk__assert(node != NULL); - shutdown_id = crm_strdup_printf("%s-%s", PCMK_ACTION_DO_SHUTDOWN, - node->priv->name); + shutdown_id = pcmk__assert_asprintf("%s-%s", PCMK_ACTION_DO_SHUTDOWN, + node->priv->name); shutdown_op = custom_action(NULL, shutdown_id, PCMK_ACTION_DO_SHUTDOWN, node, FALSE, node->priv->scheduler); @@ -1232,8 +1232,8 @@ pcmk__create_history_xml(xmlNode *parent, lrmd_event_data_t *op, } if (magic == NULL) { - magic = crm_strdup_printf("%d:%d;%s", op->op_status, op->rc, - (const char *) op->user_data); + magic = pcmk__assert_asprintf("%d:%d;%s", op->op_status, op->rc, + (const char *) op->user_data); } pcmk__xe_set(xml_op, PCMK_XA_ID, op_id); @@ -1438,7 +1438,7 @@ pcmk__output_actions(pcmk_scheduler_t *scheduler) const char *op = g_hash_table_lookup(action->meta, PCMK__META_STONITH_ACTION); - task = crm_strdup_printf("Fence (%s)", op); + task = pcmk__assert_asprintf("Fence (%s)", op); } else { continue; // Don't display other node action types @@ -1447,11 +1447,12 @@ pcmk__output_actions(pcmk_scheduler_t *scheduler) if (pcmk__is_guest_or_bundle_node(action->node)) { const pcmk_resource_t *remote = action->node->priv->remote; - node_name = crm_strdup_printf("%s (resource: %s)", - pcmk__node_name(action->node), - remote->priv->launcher->id); + node_name = pcmk__assert_asprintf("%s (resource: %s)", + pcmk__node_name(action->node), + remote->priv->launcher->id); } else if (action->node != NULL) { - node_name = crm_strdup_printf("%s", pcmk__node_name(action->node)); + node_name = pcmk__assert_asprintf("%s", + pcmk__node_name(action->node)); } out->message(out, "node-action", task, node_name, action->reason); @@ -1944,7 +1945,7 @@ pcmk__handle_rsc_config_changes(pcmk_scheduler_t *scheduler) char *xpath = NULL; xmlNode *history = NULL; - xpath = crm_strdup_printf(XPATH_NODE_HISTORY, node->priv->name); + xpath = pcmk__assert_asprintf(XPATH_NODE_HISTORY, node->priv->name); history = pcmk__xpath_find_one(scheduler->input->doc, xpath, LOG_NEVER); free(xpath); diff --git a/lib/pacemaker/pcmk_sched_colocation.c b/lib/pacemaker/pcmk_sched_colocation.c index 0837f842319..9678e7caade 100644 --- a/lib/pacemaker/pcmk_sched_colocation.c +++ b/lib/pacemaker/pcmk_sched_colocation.c @@ -1100,7 +1100,7 @@ mark_action_blocked(pcmk_resource_t *rsc, const char *task, const pcmk_resource_t *reason) { GList *iter = NULL; - char *reason_text = crm_strdup_printf("colocation with %s", reason->id); + char *reason_text = pcmk__assert_asprintf("colocation with %s", reason->id); for (iter = rsc->priv->actions; iter != NULL; iter = iter->next) { pcmk_action_t *action = iter->data; diff --git a/lib/pacemaker/pcmk_sched_fencing.c b/lib/pacemaker/pcmk_sched_fencing.c index 318d5926874..b05bff2f069 100644 --- a/lib/pacemaker/pcmk_sched_fencing.c +++ b/lib/pacemaker/pcmk_sched_fencing.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. * @@ -336,8 +336,8 @@ pcmk__order_vs_unfence(const pcmk_resource_t *rsc, pcmk_node_t *node, if (!pcmk__node_unfenced(node)) { // But unfencing is required if it has never been done - char *reason = crm_strdup_printf("required by %s %s", - rsc->id, action->task); + char *reason = pcmk__assert_asprintf("required by %s %s", + rsc->id, action->task); trigger_unfencing(NULL, node, reason, NULL, node->priv->scheduler); diff --git a/lib/pacemaker/pcmk_sched_ordering.c b/lib/pacemaker/pcmk_sched_ordering.c index 3aa81fa159f..48c186c5820 100644 --- a/lib/pacemaker/pcmk_sched_ordering.c +++ b/lib/pacemaker/pcmk_sched_ordering.c @@ -322,7 +322,7 @@ clone_min_ordering(const char *id, uint32_t flags, int clone_min) { // Create a pseudo-action for when the minimum instances are active - char *task = crm_strdup_printf(PCMK_ACTION_CLONE_ONE_OR_MORE ":%s", id); + char *task = pcmk__assert_asprintf(PCMK_ACTION_CLONE_ONE_OR_MORE ":%s", id); pcmk_action_t *clone_min_met = get_pseudo_op(task, rsc_first->priv->scheduler); @@ -722,8 +722,8 @@ order_rsc_sets(const char *id, const xmlNode *set1, const xmlNode *set2, * irrelevant in regards to set2. */ if (!require_all) { - char *task = crm_strdup_printf(PCMK_ACTION_ONE_OR_MORE ":%s", - pcmk__xe_id(set1)); + char *task = pcmk__assert_asprintf(PCMK_ACTION_ONE_OR_MORE ":%s", + pcmk__xe_id(set1)); pcmk_action_t *unordered_action = get_pseudo_op(task, scheduler); free(task); diff --git a/lib/pacemaker/pcmk_sched_recurring.c b/lib/pacemaker/pcmk_sched_recurring.c index 6d2fad5d6c8..609908916bb 100644 --- a/lib/pacemaker/pcmk_sched_recurring.c +++ b/lib/pacemaker/pcmk_sched_recurring.c @@ -670,7 +670,7 @@ pcmk__new_cancel_action(pcmk_resource_t *rsc, const char *task, pcmk__str_update(&(cancel_op->task), PCMK_ACTION_CANCEL); pcmk__str_update(&(cancel_op->cancel_task), task); - interval_ms_s = crm_strdup_printf("%u", interval_ms); + interval_ms_s = pcmk__assert_asprintf("%u", interval_ms); pcmk__insert_meta(cancel_op, PCMK_XA_OPERATION, task); pcmk__insert_meta(cancel_op, PCMK_META_INTERVAL, interval_ms_s); free(interval_ms_s); diff --git a/lib/pacemaker/pcmk_sched_utilization.c b/lib/pacemaker/pcmk_sched_utilization.c index 4e4132b4da8..f6efd37c125 100644 --- a/lib/pacemaker/pcmk_sched_utilization.c +++ b/lib/pacemaker/pcmk_sched_utilization.c @@ -1,5 +1,5 @@ /* - * Copyright 2014-2024 the Pacemaker project contributors + * Copyright 2014-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -323,7 +323,7 @@ pcmk__ban_insufficient_capacity(pcmk_resource_t *rsc) return NULL; } - rscs_id = crm_strdup_printf("%s and its colocated resources", rsc->id); + rscs_id = pcmk__assert_asprintf("%s and its colocated resources", rsc->id); // If rsc isn't in the list, add it so we include its utilization if (g_list_find(colocated_rscs, rsc) == NULL) { @@ -403,8 +403,9 @@ pcmk__ban_insufficient_capacity(pcmk_resource_t *rsc) static pcmk_action_t * new_load_stopped_op(pcmk_node_t *node) { - char *load_stopped_task = crm_strdup_printf(PCMK_ACTION_LOAD_STOPPED "_%s", - node->priv->name); + char *load_stopped_task = pcmk__assert_asprintf(PCMK_ACTION_LOAD_STOPPED + "_%s", + node->priv->name); pcmk_action_t *load_stopped = get_pseudo_op(load_stopped_task, node->priv->scheduler); diff --git a/lib/pacemaker/pcmk_simulate.c b/lib/pacemaker/pcmk_simulate.c index cbc1a185994..3d4e623f3fb 100644 --- a/lib/pacemaker/pcmk_simulate.c +++ b/lib/pacemaker/pcmk_simulate.c @@ -88,10 +88,10 @@ create_action_name(const pcmk_action_t *action, bool verbose) } if (action_host != NULL) { - action_name = crm_strdup_printf("%s%s %s", - prefix, key, action_host); + action_name = pcmk__assert_asprintf("%s%s %s", + prefix, key, action_host); } else { - action_name = crm_strdup_printf("%s%s", prefix, key); + action_name = pcmk__assert_asprintf("%s%s", prefix, key); } free(key); @@ -100,23 +100,25 @@ create_action_name(const pcmk_action_t *action, bool verbose) const char *op = g_hash_table_lookup(action->meta, PCMK__META_STONITH_ACTION); - action_name = crm_strdup_printf("%s%s '%s' %s", - prefix, action->task, op, action_host); + action_name = pcmk__assert_asprintf("%s%s '%s' %s", + prefix, action->task, op, + action_host); } else if (action->rsc && action_host) { - action_name = crm_strdup_printf("%s%s %s", - prefix, action->uuid, action_host); + action_name = pcmk__assert_asprintf("%s%s %s", + prefix, action->uuid, action_host); } else if (action_host) { - action_name = crm_strdup_printf("%s%s %s", - prefix, action->task, action_host); + action_name = pcmk__assert_asprintf("%s%s %s", + prefix, action->task, action_host); } else { - action_name = crm_strdup_printf("%s", action->uuid); + action_name = pcmk__assert_asprintf("%s", action->uuid); } if (verbose) { - char *with_id = crm_strdup_printf("%s (%d)", action_name, action->id); + char *with_id = pcmk__assert_asprintf("%s (%d)", action_name, + action->id); free(action_name); action_name = with_id; @@ -348,7 +350,7 @@ profile_filter(const struct dirent *entry) goto done; } - buf = crm_strdup_printf("%s/%s", profiling_dir, filename); + buf = pcmk__assert_asprintf("%s/%s", profiling_dir, filename); if ((stat(buf, &sb) != 0) || !S_ISREG(sb.st_mode)) { crm_trace("Not profiling file '%s': not a regular file", filename); goto done; @@ -464,7 +466,7 @@ pcmk__profile_dir(pcmk__output_t *out, uint32_t flags, const char *dir, for (int i = 0; i < num_files; i++) { // glibc doesn't enforce PATH_MAX, so don't limit the buffer size - char *path = crm_strdup_printf("%s/%s", dir, namelist[i]->d_name); + char *path = pcmk__assert_asprintf("%s/%s", dir, namelist[i]->d_name); profile_file(path, repeat, scheduler, scheduler_flags, use_date); free(path); @@ -663,8 +665,8 @@ simulate_resource_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) const char *offset = NULL; // Allow user to specify anonymous clone with or without instance number - key = crm_strdup_printf(PCMK__OP_FMT "@%s=", resource, op->op_type, - op->interval_ms, node); + key = pcmk__assert_asprintf(PCMK__OP_FMT "@%s=", resource, op->op_type, + op->interval_ms, node); if (strncasecmp(key, spec, strlen(key)) == 0) { match_name = resource; } @@ -674,8 +676,9 @@ simulate_resource_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) if ((match_name == NULL) && (strcmp(resource, resource_config_name) != 0)) { - key = crm_strdup_printf(PCMK__OP_FMT "@%s=", resource_config_name, - op->op_type, op->interval_ms, node); + key = pcmk__assert_asprintf(PCMK__OP_FMT "@%s=", + resource_config_name, op->op_type, + op->interval_ms, node); if (strncasecmp(key, spec, strlen(key)) == 0) { match_name = resource_config_name; } diff --git a/lib/pacemaker/pcmk_ticket.c b/lib/pacemaker/pcmk_ticket.c index 14ab65ecd99..87612965c44 100644 --- a/lib/pacemaker/pcmk_ticket.c +++ b/lib/pacemaker/pcmk_ticket.c @@ -87,11 +87,14 @@ pcmk__get_ticket_state(cib_t *cib, const char *ticket_id, xmlNode **state) *state = NULL; if (ticket_id != NULL) { - xpath = crm_strdup_printf("/" PCMK_XE_CIB "/" PCMK_XE_STATUS "/" PCMK_XE_TICKETS - "/" PCMK__XE_TICKET_STATE "[@" PCMK_XA_ID "=\"%s\"]", - ticket_id); + xpath = pcmk__assert_asprintf("/" PCMK_XE_CIB "/" PCMK_XE_STATUS + "/" PCMK_XE_TICKETS + "/" PCMK__XE_TICKET_STATE + "[@" PCMK_XA_ID "=\"%s\"]", + ticket_id); } else { - xpath = crm_strdup_printf("/" PCMK_XE_CIB "/" PCMK_XE_STATUS "/" PCMK_XE_TICKETS); + xpath = pcmk__assert_asprintf("/" PCMK_XE_CIB "/" PCMK_XE_STATUS + "/" PCMK_XE_TICKETS); } rc = cib->cmds->query(cib, xpath, &xml_search, cib_sync_call|cib_xpath); @@ -125,10 +128,11 @@ pcmk__ticket_constraints(pcmk__output_t *out, cib_t *cib, const char *ticket_id) pcmk__assert(xpath_base != NULL); if (ticket_id != NULL) { - xpath = crm_strdup_printf("%s/" PCMK_XE_RSC_TICKET "[@" PCMK_XA_TICKET "=\"%s\"]", - xpath_base, ticket_id); + xpath = pcmk__assert_asprintf("%s/" PCMK_XE_RSC_TICKET + "[@" PCMK_XA_TICKET "=\"%s\"]", + xpath_base, ticket_id); } else { - xpath = crm_strdup_printf("%s/" PCMK_XE_RSC_TICKET, xpath_base); + xpath = pcmk__assert_asprintf("%s/" PCMK_XE_RSC_TICKET, xpath_base); } rc = cib->cmds->query(cib, xpath, &result, cib_sync_call|cib_xpath); diff --git a/lib/pengine/bundle.c b/lib/pengine/bundle.c index d463f90ab81..712c71bcac0 100644 --- a/lib/pengine/bundle.c +++ b/lib/pengine/bundle.c @@ -272,7 +272,7 @@ next_ip(const char *last_ip) ++oct4; } - return crm_strdup_printf("%u.%u.%u.%u", oct1, oct2, oct3, oct4); + return pcmk__assert_asprintf("%u.%u.%u.%u", oct1, oct2, oct3, oct4); } static void @@ -363,7 +363,7 @@ create_ip_resource(pcmk_resource_t *parent, pe__bundle_variant_data_t *data, xmlNode *xml_ip = NULL; xmlNode *xml_obj = NULL; - id = crm_strdup_printf("%s-ip-%s", data->prefix, replica->ipaddr); + id = pcmk__assert_asprintf("%s-ip-%s", data->prefix, replica->ipaddr); pcmk__xml_sanitize_id(id); xml_ip = create_resource(id, "heartbeat", "IPaddr2"); free(id); @@ -445,8 +445,8 @@ create_container_resource(pcmk_resource_t *parent, buffer = g_string_sized_new(4096); - id = crm_strdup_printf("%s-%s-%d", data->prefix, agent_str, - replica->offset); + id = pcmk__assert_asprintf("%s-%s-%d", data->prefix, agent_str, + replica->offset); pcmk__xml_sanitize_id(id); xml_container = create_resource(id, "heartbeat", agent_str); free(id); @@ -491,8 +491,8 @@ create_container_resource(pcmk_resource_t *parent, char *source = NULL; if (pcmk_is_set(mount->flags, pe__bundle_mount_subdir)) { - source = crm_strdup_printf("%s/%s-%d", mount->source, data->prefix, - replica->offset); + source = pcmk__assert_asprintf("%s/%s-%d", mount->source, + data->prefix, replica->offset); pcmk__add_separated_word(&dbuffer, 1024, source, ","); } @@ -652,7 +652,8 @@ create_remote_resource(pcmk_resource_t *parent, pe__bundle_variant_data_t *data, GHashTableIter gIter; pcmk_node_t *node = NULL; xmlNode *xml_remote = NULL; - char *id = crm_strdup_printf("%s-%d", data->prefix, replica->offset); + char *id = pcmk__assert_asprintf("%s-%d", data->prefix, + replica->offset); char *port_s = NULL; const char *uname = NULL; const char *connect_name = NULL; @@ -661,8 +662,8 @@ create_remote_resource(pcmk_resource_t *parent, pe__bundle_variant_data_t *data, if (pe_find_resource(scheduler->priv->resources, id) != NULL) { free(id); // The biggest hammer we have - id = crm_strdup_printf("pcmk-internal-%s-remote-%d", - replica->child->id, replica->offset); + id = pcmk__assert_asprintf("pcmk-internal-%s-remote-%d", + replica->child->id, replica->offset); //@TODO return error instead of asserting? pcmk__assert(pe_find_resource(scheduler->priv->resources, id) == NULL); diff --git a/lib/pengine/clone.c b/lib/pengine/clone.c index d6c081567fd..fc126379298 100644 --- a/lib/pengine/clone.c +++ b/lib/pengine/clone.c @@ -858,14 +858,17 @@ pe__clone_default(pcmk__output_t *out, va_list args) probe_op = pe__failed_probe_for_rsc(rsc, node->priv->name); if (probe_op != NULL) { - int rc; + int rc = pcmk_rc_ok; + char *key = pcmk__str_copy(node->priv->name); + char *value = NULL; pcmk__scan_min_int(pcmk__xe_get(probe_op, PCMK__XA_RC_CODE), &rc, 0); - g_hash_table_insert(stopped, strdup(node->priv->name), - crm_strdup_printf("Stopped (%s)", - crm_exit_str(rc))); + value = pcmk__assert_asprintf("Stopped (%s)", + crm_exit_str(rc)); + g_hash_table_insert(stopped, key, value); + } else { pcmk__insert_dup(stopped, node->priv->name, state); } diff --git a/lib/pengine/complex.c b/lib/pengine/complex.c index 4dd1eeea344..73941723ff7 100644 --- a/lib/pengine/complex.c +++ b/lib/pengine/complex.c @@ -259,7 +259,7 @@ template_op_key(xmlNode * op) role = PCMK__ROLE_UNKNOWN; } - key = crm_strdup_printf("%s-%s", name, role); + key = pcmk__assert_asprintf("%s-%s", name, role); return key; } @@ -771,7 +771,7 @@ pe__unpack_resource(xmlNode *xml_obj, pcmk_resource_t **rsc, value = pcmk__xe_get(rsc_private->xml, PCMK__META_CLONE); if (value) { - (*rsc)->id = crm_strdup_printf("%s:%s", id, value); + (*rsc)->id = pcmk__assert_asprintf("%s:%s", id, value); pcmk__insert_meta(rsc_private, PCMK__META_CLONE, value); } else { diff --git a/lib/pengine/failcounts.c b/lib/pengine/failcounts.c index e7ce2e2e6f4..8d9d5ca19cc 100644 --- a/lib/pengine/failcounts.c +++ b/lib/pengine/failcounts.c @@ -91,12 +91,12 @@ block_failure(const pcmk_node_t *node, pcmk_resource_t *rsc, * Ideally, we'd unpack the operation before this point, and pass in a * meta-attributes table that takes all that into consideration. */ - char *xpath = crm_strdup_printf("//" PCMK_XE_PRIMITIVE - "[@" PCMK_XA_ID "='%s']" - "//" PCMK_XE_OP - "[@" PCMK_META_ON_FAIL - "='" PCMK_VALUE_BLOCK "']", - xml_name); + char *xpath = pcmk__assert_asprintf("//" PCMK_XE_PRIMITIVE + "[@" PCMK_XA_ID "='%s']" + "//" PCMK_XE_OP + "[@" PCMK_META_ON_FAIL + "='" PCMK_VALUE_BLOCK "']", + xml_name); xmlXPathObject *xpathObj = pcmk__xpath_search(rsc->priv->xml->doc, xpath); gboolean should_block = FALSE; @@ -135,10 +135,10 @@ block_failure(const pcmk_node_t *node, pcmk_resource_t *rsc, "/" PCMK__XE_LRM_RSC_OP "[@" PCMK_XA_OPERATION "='%s']" \ "[@" PCMK_META_INTERVAL "='%u']" - lrm_op_xpath = crm_strdup_printf(XPATH_FMT, - node->priv->name, xml_name, - conf_op_name, - conf_op_interval_ms); + lrm_op_xpath = pcmk__assert_asprintf(XPATH_FMT, + node->priv->name, xml_name, + conf_op_name, + conf_op_interval_ms); lrm_op_xpathObj = pcmk__xpath_search(scheduler->input->doc, lrm_op_xpath); @@ -217,8 +217,8 @@ generate_fail_regex(const char *prefix, const char *rsc_name, bool is_unique, */ const char *instance_pattern = (is_unique? "" : "(:[0-9]+)?"); - pattern = crm_strdup_printf("^%s-%s%s%s$", prefix, rsc_name, - instance_pattern, op_pattern); + pattern = pcmk__assert_asprintf("^%s-%s%s%s$", prefix, rsc_name, + instance_pattern, op_pattern); if (regcomp(re, pattern, REG_EXTENDED|REG_NOSUB) != 0) { free(pattern); return EINVAL; diff --git a/lib/pengine/pe_actions.c b/lib/pengine/pe_actions.c index ea3703037a6..d2c7ad6ec76 100644 --- a/lib/pengine/pe_actions.c +++ b/lib/pengine/pe_actions.c @@ -747,7 +747,7 @@ pcmk__unpack_action_meta(pcmk_resource_t *rsc, const pcmk_node_t *node, // Normalize interval to milliseconds if (interval_ms > 0) { g_hash_table_insert(meta, pcmk__str_copy(PCMK_META_INTERVAL), - crm_strdup_printf("%u", interval_ms)); + pcmk__assert_asprintf("%u", interval_ms)); } else { g_hash_table_remove(meta, PCMK_META_INTERVAL); } @@ -800,7 +800,7 @@ pcmk__unpack_action_meta(pcmk_resource_t *rsc, const pcmk_node_t *node, rsc->priv->scheduler->priv->now, &start_delay)) { g_hash_table_insert(meta, pcmk__str_copy(PCMK_META_START_DELAY), - crm_strdup_printf("%lld", start_delay)); + pcmk__assert_asprintf("%lld", start_delay)); } } return meta; @@ -1244,8 +1244,8 @@ pe_fence_op(pcmk_node_t *node, const char *op, bool optional, op = scheduler->priv->fence_action; } - op_key = crm_strdup_printf("%s-%s-%s", - PCMK_ACTION_STONITH, node->priv->name, op); + op_key = pcmk__assert_asprintf("%s-%s-%s", + PCMK_ACTION_STONITH, node->priv->name, op); stonith_op = lookup_singleton(scheduler, op_key); if(stonith_op == NULL) { @@ -1528,10 +1528,10 @@ pe__action2reason(const pcmk_action_t *action, enum pcmk__action_flags flag) CRM_CHECK(change != NULL, change = ""); break; } - return crm_strdup_printf("%s%s%s %s", change, - (action->rsc == NULL)? "" : " ", - (action->rsc == NULL)? "" : action->rsc->id, - action->task); + return pcmk__assert_asprintf("%s%s%s %s", change, + (action->rsc == NULL)? "" : " ", + (action->rsc == NULL)? "" : action->rsc->id, + action->task); } void pe_action_set_reason(pcmk_action_t *action, const char *reason, diff --git a/lib/pengine/pe_digest.c b/lib/pengine/pe_digest.c index f5eef5b554d..a4867aff8a6 100644 --- a/lib/pengine/pe_digest.c +++ b/lib/pengine/pe_digest.c @@ -52,7 +52,7 @@ static bool attr_not_in_string(xmlAttrPtr a, void *user_data) { bool filter = false; - char *name = crm_strdup_printf(" %s ", (const char *) a->name); + char *name = pcmk__assert_asprintf(" %s ", (const char *) a->name); if (strstr((const char *) user_data, name) == NULL) { crm_trace("Filtering %s (not found in '%s')", @@ -68,7 +68,7 @@ static bool attr_in_string(xmlAttrPtr a, void *user_data) { bool filter = false; - char *name = crm_strdup_printf(" %s ", (const char *) a->name); + char *name = pcmk__assert_asprintf(" %s ", (const char *) a->name); if (strstr((const char *) user_data, name) != NULL) { crm_trace("Filtering %s (found in '%s')", @@ -487,7 +487,7 @@ static inline char * create_unfencing_summary(const char *rsc_id, const char *agent_type, const char *param_digest) { - return crm_strdup_printf("%s:%s:%s", rsc_id, agent_type, param_digest); + return pcmk__assert_asprintf("%s:%s:%s", rsc_id, agent_type, param_digest); } /*! diff --git a/lib/pengine/pe_output.c b/lib/pengine/pe_output.c index 140cf51c2b2..ce12028473c 100644 --- a/lib/pengine/pe_output.c +++ b/lib/pengine/pe_output.c @@ -188,8 +188,9 @@ static void append_dump_text(gpointer key, gpointer value, gpointer user_data) { char **dump_text = user_data; - char *new_text = crm_strdup_printf("%s %s=%s", - *dump_text, (char *)key, (char *)value); + char *new_text = pcmk__assert_asprintf("%s %s=%s", + *dump_text, (const char *) key, + (const char *)value); free(*dump_text); *dump_text = new_text; @@ -215,14 +216,14 @@ static char * last_changed_string(const char *last_written, const char *user, const char *client, const char *origin) { if (last_written != NULL || user != NULL || client != NULL || origin != NULL) { - return crm_strdup_printf("%s%s%s%s%s%s%s", - last_written ? last_written : "", - user ? " by " : "", - user ? user : "", - client ? " via " : "", - client ? client : "", - origin ? " on " : "", - origin ? origin : ""); + return pcmk__assert_asprintf("%s%s%s%s%s%s%s", + pcmk__s(last_written, ""), + ((user != NULL)? " by " : ""), + pcmk__s(user, ""), + ((client != NULL) ? " via " : ""), + pcmk__s(client, ""), + ((origin != NULL)? " on " : ""), + pcmk__s(origin, "")); } else { return strdup(""); } @@ -237,7 +238,7 @@ op_history_string(xmlNode *xml_op, const char *task, const char *interval_ms_s, if (interval_ms_s && !pcmk__str_eq(interval_ms_s, "0", pcmk__str_casei)) { char *pair = pcmk__format_nvpair(PCMK_XA_INTERVAL, interval_ms_s, "ms"); - interval_str = crm_strdup_printf(" %s", pair); + interval_str = pcmk__assert_asprintf(" %s", pair); free(pair); } @@ -254,32 +255,32 @@ op_history_string(xmlNode *xml_op, const char *task, const char *interval_ms_s, if (epoch > 0) { char *epoch_str = pcmk__epoch2str(&epoch, 0); - last_change_str = crm_strdup_printf(" %s=\"%s\"", - PCMK_XA_LAST_RC_CHANGE, - pcmk__s(epoch_str, "")); + last_change_str = pcmk__assert_asprintf(" %s=\"%s\"", + PCMK_XA_LAST_RC_CHANGE, + pcmk__s(epoch_str, "")); free(epoch_str); } value = pcmk__xe_get(xml_op, PCMK_XA_EXEC_TIME); if (value) { char *pair = pcmk__format_nvpair(PCMK_XA_EXEC_TIME, value, "ms"); - exec_str = crm_strdup_printf(" %s", pair); + exec_str = pcmk__assert_asprintf(" %s", pair); free(pair); } value = pcmk__xe_get(xml_op, PCMK_XA_QUEUE_TIME); if (value) { char *pair = pcmk__format_nvpair(PCMK_XA_QUEUE_TIME, value, "ms"); - queue_str = crm_strdup_printf(" %s", pair); + queue_str = pcmk__assert_asprintf(" %s", pair); free(pair); } - buf = crm_strdup_printf("(%s) %s:%s%s%s%s rc=%d (%s)", call, task, - interval_str ? interval_str : "", - last_change_str ? last_change_str : "", - exec_str ? exec_str : "", - queue_str ? queue_str : "", - rc, crm_exit_str(rc)); + buf = pcmk__assert_asprintf("(%s) %s:%s%s%s%s rc=%d (%s)", call, task, + pcmk__s(interval_str, ""), + pcmk__s(last_change_str, ""), + pcmk__s(exec_str, ""), + pcmk__s(queue_str, ""), + rc, crm_exit_str(rc)); if (last_change_str) { free(last_change_str); @@ -293,9 +294,9 @@ op_history_string(xmlNode *xml_op, const char *task, const char *interval_ms_s, free(queue_str); } } else { - buf = crm_strdup_printf("(%s) %s%s%s", call, task, - interval_str ? ":" : "", - interval_str ? interval_str : ""); + buf = pcmk__assert_asprintf("(%s) %s%s%s", call, task, + ((interval_str != NULL)? ":" : ""), + pcmk__s(interval_str, "")); } if (interval_str) { @@ -311,31 +312,32 @@ resource_history_string(pcmk_resource_t *rsc, const char *rsc_id, bool all, char *buf = NULL; if (rsc == NULL) { - buf = crm_strdup_printf("%s: orphan", rsc_id); + buf = pcmk__assert_asprintf("%s: orphan", rsc_id); } else if (all || failcount || last_failure > 0) { char *failcount_s = NULL; char *lastfail_s = NULL; if (failcount > 0) { - failcount_s = crm_strdup_printf(" %s=%d", - PCMK_XA_FAIL_COUNT, failcount); + failcount_s = pcmk__assert_asprintf(" " PCMK_XA_FAIL_COUNT "=%d", + failcount); } else { failcount_s = strdup(""); } if (last_failure > 0) { buf = pcmk__epoch2str(&last_failure, 0); - lastfail_s = crm_strdup_printf(" %s='%s'", - PCMK_XA_LAST_FAILURE, buf); + lastfail_s = pcmk__assert_asprintf(" " PCMK_XA_LAST_FAILURE "='%s'", + buf); free(buf); } - buf = crm_strdup_printf("%s: " PCMK_META_MIGRATION_THRESHOLD "=%d%s%s", - rsc_id, rsc->priv->ban_after_failures, - failcount_s, pcmk__s(lastfail_s, "")); + buf = pcmk__assert_asprintf("%s: " PCMK_META_MIGRATION_THRESHOLD + "=%d%s%s", + rsc_id, rsc->priv->ban_after_failures, + failcount_s, pcmk__s(lastfail_s, "")); free(failcount_s); free(lastfail_s); } else { - buf = crm_strdup_printf("%s:", rsc_id); + buf = pcmk__assert_asprintf("%s:", rsc_id); } return buf; @@ -653,9 +655,10 @@ ban_html(pcmk__output_t *out, va_list args) { char *node_name = pe__node_display_name(pe_node, pcmk_is_set(show_opts, pcmk_show_node_id)); - char *buf = crm_strdup_printf("%s\tprevents %s from running %son %s", - location->id, location->rsc->id, - role_desc(location->role_filter), node_name); + char *buf = pcmk__assert_asprintf("%s\tprevents %s from running %son %s", + location->id, location->rsc->id, + role_desc(location->role_filter), + node_name); pcmk__output_create_html_node(out, "li", NULL, NULL, buf); @@ -1207,10 +1210,10 @@ cluster_options_xml(pcmk__output_t *out, va_list args) { const char *stop_all_resources = pcmk__flag_text(scheduler->flags, pcmk__sched_stop_all); char *stonith_timeout_ms_s = - crm_strdup_printf("%u", scheduler->priv->fence_timeout_ms); + pcmk__assert_asprintf("%u", scheduler->priv->fence_timeout_ms); char *priority_fencing_delay_ms_s = - crm_strdup_printf("%u", scheduler->priv->priority_fencing_ms); + pcmk__assert_asprintf("%u", scheduler->priv->priority_fencing_ms); pcmk__output_create_xml_node(out, PCMK_XE_CLUSTER_OPTIONS, PCMK_XA_STONITH_ENABLED, stonith_enabled, @@ -1637,7 +1640,7 @@ failed_action_xml(pcmk__output_t *out, va_list args) { |crm_time_log_with_timezone); pcmk__xe_get_guint(xml_op, PCMK_META_INTERVAL, &interval_ms); - interval_ms_s = crm_strdup_printf("%u", interval_ms); + interval_ms_s = pcmk__assert_asprintf("%u", interval_ms); pcmk__xe_set_props(node, PCMK_XA_LAST_RC_CHANGE, rc_change, @@ -2216,17 +2219,17 @@ node_and_op(pcmk__output_t *out, va_list args) { node_str = pcmk__native_output_string(rsc, rsc_printable_id(rsc), node, show_opts, target_role, false); } else { - node_str = crm_strdup_printf("Unknown resource %s", op_rsc); + node_str = pcmk__assert_asprintf("Unknown resource %s", op_rsc); } if (pcmk__xe_get_time(xml_op, PCMK_XA_LAST_RC_CHANGE, &last_change) == pcmk_rc_ok) { const char *exec_time = pcmk__xe_get(xml_op, PCMK_XA_EXEC_TIME); - last_change_str = crm_strdup_printf(", %s='%s', exec=%sms", - PCMK_XA_LAST_RC_CHANGE, - pcmk__trim(ctime(&last_change)), - exec_time); + last_change_str = pcmk__assert_asprintf(", " PCMK_XA_LAST_RC_CHANGE + "='%s', exec=%sms", + pcmk__trim(ctime(&last_change)), + exec_time); } out->list_item(out, NULL, "%s: %s (node=%s, call=%s, rc=%s%s): %s", @@ -2279,10 +2282,10 @@ node_and_op_xml(pcmk__output_t *out, va_list args) { bool has_provider = pcmk_is_set(pcmk_get_ra_caps(class), pcmk_ra_cap_provider); - char *agent_tuple = crm_strdup_printf("%s:%s:%s", - class, - (has_provider? provider : ""), - kind); + char *agent_tuple = pcmk__assert_asprintf("%s:%s:%s", + class, + (has_provider? provider : ""), + kind); pcmk__xe_set_props(node, PCMK_XA_RSC, rsc_printable_id(rsc), @@ -2402,8 +2405,8 @@ node_capacity(pcmk__output_t *out, va_list args) const pcmk_node_t *node = va_arg(args, pcmk_node_t *); const char *comment = va_arg(args, const char *); - char *dump_text = crm_strdup_printf("%s: %s capacity:", - comment, pcmk__node_name(node)); + char *dump_text = pcmk__assert_asprintf("%s: %s capacity:", + comment, pcmk__node_name(node)); g_hash_table_foreach(node->priv->utilization, append_dump_text, &dump_text); @@ -2826,7 +2829,7 @@ op_history_xml(pcmk__output_t *out, va_list args) { free(rc_s); if (interval_ms_s && !pcmk__str_eq(interval_ms_s, "0", pcmk__str_casei)) { - char *s = crm_strdup_printf("%sms", interval_ms_s); + char *s = pcmk__assert_asprintf("%sms", interval_ms_s); pcmk__xe_set(node, PCMK_XA_INTERVAL, s); free(s); } @@ -2844,13 +2847,13 @@ op_history_xml(pcmk__output_t *out, va_list args) { value = pcmk__xe_get(xml_op, PCMK_XA_EXEC_TIME); if (value) { - char *s = crm_strdup_printf("%sms", value); + char *s = pcmk__assert_asprintf("%sms", value); pcmk__xe_set(node, PCMK_XA_EXEC_TIME, s); free(s); } value = pcmk__xe_get(xml_op, PCMK_XA_QUEUE_TIME); if (value) { - char *s = crm_strdup_printf("%sms", value); + char *s = pcmk__assert_asprintf("%sms", value); pcmk__xe_set(node, PCMK_XA_QUEUE_TIME, s); free(s); } @@ -3184,8 +3187,8 @@ resource_util(pcmk__output_t *out, va_list args) pcmk_node_t *node = va_arg(args, pcmk_node_t *); const char *fn = va_arg(args, const char *); - char *dump_text = crm_strdup_printf("%s: %s utilization on %s:", - fn, rsc->id, pcmk__node_name(node)); + char *dump_text = pcmk__assert_asprintf("%s: %s utilization on %s:", + fn, rsc->id, pcmk__node_name(node)); g_hash_table_foreach(rsc->priv->utilization, append_dump_text, &dump_text); diff --git a/lib/pengine/tests/native/native_find_rsc_test.c b/lib/pengine/tests/native/native_find_rsc_test.c index 070b355064c..d0f4f0c1e8f 100644 --- a/lib/pengine/tests/native/native_find_rsc_test.c +++ b/lib/pengine/tests/native/native_find_rsc_test.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. * @@ -29,7 +29,7 @@ setup(void **state) { pcmk__xml_init(); - path = crm_strdup_printf("%s/crm_mon.xml", getenv("PCMK_CTS_CLI_DIR")); + path = pcmk__assert_asprintf("%s/crm_mon.xml", getenv("PCMK_CTS_CLI_DIR")); input = pcmk__xml_read(path); free(path); @@ -96,11 +96,11 @@ bad_args(void **state) { assert_null(native_find_rsc(rsc, NULL, NULL, 0)); /* No resources exist with these names. */ - name = crm_strdup_printf("%sX", rsc->id); + name = pcmk__assert_asprintf("%sX", rsc->id); assert_null(native_find_rsc(rsc, name, NULL, 0)); free(name); - name = crm_strdup_printf("x%s", rsc->id); + name = pcmk__assert_asprintf("x%s", rsc->id); assert_null(native_find_rsc(rsc, name, NULL, 0)); free(name); diff --git a/lib/pengine/tests/native/pe_base_name_eq_test.c b/lib/pengine/tests/native/pe_base_name_eq_test.c index 51e4af3787b..c7525442dc9 100644 --- a/lib/pengine/tests/native/pe_base_name_eq_test.c +++ b/lib/pengine/tests/native/pe_base_name_eq_test.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. * @@ -28,7 +28,7 @@ setup(void **state) { pcmk__xml_init(); - path = crm_strdup_printf("%s/crm_mon.xml", getenv("PCMK_CTS_CLI_DIR")); + path = pcmk__assert_asprintf("%s/crm_mon.xml", getenv("PCMK_CTS_CLI_DIR")); input = pcmk__xml_read(path); free(path); diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c index 7213beed1cd..21ec07e2c45 100644 --- a/lib/pengine/unpack.c +++ b/lib/pengine/unpack.c @@ -2358,17 +2358,20 @@ process_rsc_state(pcmk_resource_t *rsc, pcmk_node_t *node, * remote nodes to be fenced as well. */ pcmk__clear_node_flags(node, pcmk__node_seen); - reason = crm_strdup_printf("%s is active there (fencing will be" - " revoked if remote connection can " - "be re-established elsewhere)", - rsc->id); + reason = pcmk__assert_asprintf("%s is active there (fencing " + "will be revoked if remote " + "connection can be " + "re-established elsewhere)", + rsc->id); } should_fence = TRUE; } if (should_fence) { if (reason == NULL) { - reason = crm_strdup_printf("%s is thought to be active there", rsc->id); + reason = pcmk__assert_asprintf("%s is thought to be active " + "there", + rsc->id); } pe_fence_node(scheduler, node, reason, FALSE); } @@ -2399,7 +2402,7 @@ process_rsc_state(pcmk_resource_t *rsc, pcmk_node_t *node, /* treat it as if it is still running * but also mark the node as unclean */ - reason = crm_strdup_printf("%s failed there", rsc->id); + reason = pcmk__assert_asprintf("%s failed there", rsc->id); pe_fence_node(scheduler, node, reason, FALSE); free(reason); break; @@ -3027,11 +3030,12 @@ unknown_on_node(pcmk_resource_t *rsc, const char *node_name) xmlXPathObject *search; char *xpath = NULL; - xpath = crm_strdup_printf(XPATH_NODE_STATE "[@" PCMK_XA_UNAME "='%s']" - SUB_XPATH_LRM_RESOURCE "[@" PCMK_XA_ID "='%s']" - SUB_XPATH_LRM_RSC_OP - "[@" PCMK__XA_RC_CODE "!='%d']", - node_name, rsc->id, PCMK_OCF_UNKNOWN); + xpath = pcmk__assert_asprintf(XPATH_NODE_STATE "[@" PCMK_XA_UNAME "='%s']" + SUB_XPATH_LRM_RESOURCE + "[@" PCMK_XA_ID "='%s']" + SUB_XPATH_LRM_RSC_OP + "[@" PCMK__XA_RC_CODE "!='%d']", + node_name, rsc->id, PCMK_OCF_UNKNOWN); search = pcmk__xpath_search(rsc->priv->scheduler->input->doc, xpath); result = (pcmk__xpath_num_results(search) == 0); diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c index d7b9b97b3cf..c1b5303cb61 100644 --- a/lib/services/services_linux.c +++ b/lib/services/services_linux.c @@ -484,7 +484,8 @@ static void pipe_in_single_parameter(gpointer key, gpointer value, gpointer user_data) { svc_action_t *op = user_data; - char *buffer = crm_strdup_printf("%s=%s\n", (char *)key, (char *) value); + char *buffer = pcmk__assert_asprintf("%s=%s\n", (const char *) key, + (const char *) value); size_t len = strlen(buffer); size_t total = 0; ssize_t ret = 0; @@ -623,7 +624,8 @@ finish_op_output(svc_action_t *op, bool is_stderr) static void log_op_output(svc_action_t *op) { - char *prefix = crm_strdup_printf("%s[%d] error output", op->id, op->pid); + char *prefix = pcmk__assert_asprintf("%s[%d] error output", op->id, + op->pid); /* The library caller has better context to know how important the output * is, so log it at info and debug severity here. They can log it again at diff --git a/lib/services/services_lsb.c b/lib/services/services_lsb.c index 2dbf9c40800..1c9d1c8f6d5 100644 --- a/lib/services/services_lsb.c +++ b/lib/services/services_lsb.c @@ -1,5 +1,5 @@ /* - * Copyright 2010-2024 the Pacemaker project contributors + * Copyright 2010-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -215,16 +215,16 @@ services__get_lsb_metadata(const char *type, char **output) } fclose(fp); - *output = crm_strdup_printf(lsb_metadata_template, type, - pcmk__s(long_desc, type), - pcmk__s(short_desc, type), - pcmk__s(provides, ""), - pcmk__s(required_start, ""), - pcmk__s(required_stop, ""), - pcmk__s(should_start, ""), - pcmk__s(should_stop, ""), - pcmk__s(default_start, ""), - pcmk__s(default_stop, "")); + *output = pcmk__assert_asprintf(lsb_metadata_template, type, + pcmk__s(long_desc, type), + pcmk__s(short_desc, type), + pcmk__s(provides, ""), + pcmk__s(required_start, ""), + pcmk__s(required_stop, ""), + pcmk__s(should_start, ""), + pcmk__s(should_stop, ""), + pcmk__s(default_start, ""), + pcmk__s(default_stop, "")); g_free(long_desc); g_free(short_desc); diff --git a/lib/services/services_ocf.c b/lib/services/services_ocf.c index d3f5f14230e..2ace59e95dc 100644 --- a/lib/services/services_ocf.c +++ b/lib/services/services_ocf.c @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the Pacemaker project contributors + * Copyright 2012-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -96,7 +96,7 @@ services__ocf_agent_exists(const char *provider, const char *agent) } for (dir = strtok(dirs, ":"); dir != NULL; dir = strtok(NULL, ":")) { - buf = crm_strdup_printf("%s/%s/%s", dir, provider, agent); + buf = pcmk__assert_asprintf("%s/%s/%s", dir, provider, agent); if (stat(buf, &st) == 0) { free(buf); rc = TRUE; @@ -131,7 +131,8 @@ services__ocf_prepare(svc_action_t *op) // Look for agent on path for (char *dir = strtok(dirs, ":"); dir != NULL; dir = strtok(NULL, ":")) { - char *buf = crm_strdup_printf("%s/%s/%s", dir, op->provider, op->agent); + char *buf = pcmk__assert_asprintf("%s/%s/%s", dir, op->provider, + op->agent); if (stat(buf, &st) == 0) { op->opaque->exec = buf; diff --git a/lib/services/systemd.c b/lib/services/systemd.c index 64cfae0971b..417f209cd07 100644 --- a/lib/services/systemd.c +++ b/lib/services/systemd.c @@ -284,17 +284,17 @@ systemd_unit_name(const char *name, bool add_instance_name) if (dot) { if (dot != name && *(dot-1) == '@') { - return crm_strdup_printf("%.*spacemaker%s", - (int) (dot - name), name, dot); + return pcmk__assert_asprintf("%.*spacemaker%s", + (int) (dot - name), name, dot); } else { return pcmk__str_copy(name); } } else if (add_instance_name && *(name+strlen(name)-1) == '@') { - return crm_strdup_printf("%spacemaker.service", name); + return pcmk__assert_asprintf("%spacemaker.service", name); } else { - return crm_strdup_printf("%s.service", name); + return pcmk__assert_asprintf("%s.service", name); } } @@ -759,17 +759,17 @@ systemd_unit_metadata(const char *name, int timeout) desc = systemd_get_property(path, "Description", NULL, NULL, NULL, timeout); } else { - desc = crm_strdup_printf("Systemd unit file for %s", name); + desc = pcmk__assert_asprintf("Systemd unit file for %s", name); } if (pcmk__xml_needs_escape(desc, pcmk__xml_escape_text)) { gchar *escaped = pcmk__xml_escape(desc, pcmk__xml_escape_text); - meta = crm_strdup_printf(METADATA_FORMAT, name, escaped, name); + meta = pcmk__assert_asprintf(METADATA_FORMAT, name, escaped, name); g_free(escaped); } else { - meta = crm_strdup_printf(METADATA_FORMAT, name, desc, name); + meta = pcmk__assert_asprintf(METADATA_FORMAT, name, desc, name); } free(desc); diff --git a/tools/crm_mon.c b/tools/crm_mon.c index 5ce17538a7a..3d26f03ddf8 100644 --- a/tools/crm_mon.c +++ b/tools/crm_mon.c @@ -404,7 +404,7 @@ apply_include_exclude(GSList *lst, GError **error) { static gboolean user_include_exclude_cb(const gchar *option_name, const gchar *optarg, gpointer data, GError **err) { - char *s = crm_strdup_printf("%s=%s", option_name, optarg); + char *s = pcmk__assert_asprintf("%s=%s", option_name, optarg); options.user_includes_excludes = g_slist_append(options.user_includes_excludes, s); return TRUE; @@ -412,7 +412,7 @@ user_include_exclude_cb(const gchar *option_name, const gchar *optarg, gpointer static gboolean include_exclude_cb(const gchar *option_name, const gchar *optarg, gpointer data, GError **err) { - char *s = crm_strdup_printf("%s=%s", option_name, optarg); + char *s = pcmk__assert_asprintf("%s=%s", option_name, optarg); options.includes_excludes = g_slist_append(options.includes_excludes, s); return TRUE; @@ -566,7 +566,7 @@ show_attributes_cb(const gchar *option_name, const gchar *optarg, gpointer data, static gboolean show_bans_cb(const gchar *option_name, const gchar *optarg, gpointer data, GError **err) { if (optarg != NULL) { - char *s = crm_strdup_printf("bans:%s", optarg); + char *s = pcmk__assert_asprintf("bans:%s", optarg); gboolean rc = user_include_exclude_cb("--include", s, data, err); free(s); return rc; diff --git a/tools/crm_node.c b/tools/crm_node.c index ab46990c214..bffb3ccc3cf 100644 --- a/tools/crm_node.c +++ b/tools/crm_node.c @@ -157,7 +157,7 @@ static int node_id_xml(pcmk__output_t *out, va_list args) { uint32_t node_id = va_arg(args, uint32_t); - char *id_s = crm_strdup_printf("%" PRIu32, node_id); + char *id_s = pcmk__assert_asprintf("%" PRIu32, node_id); pcmk__output_create_xml_node(out, PCMK_XE_NODE_INFO, PCMK_XA_NODEID, id_s, @@ -192,7 +192,7 @@ simple_node_list_xml(pcmk__output_t *out, va_list args) for (GList *node_iter = nodes; node_iter != NULL; node_iter = node_iter->next) { pcmk_controld_api_node_t *node = node_iter->data; - char *id_s = crm_strdup_printf("%" PRIu32, node->id); + char *id_s = pcmk__assert_asprintf("%" PRIu32, node->id); pcmk__output_create_xml_node(out, PCMK_XE_NODE, PCMK_XA_ID, id_s, @@ -224,7 +224,7 @@ node_name_xml(pcmk__output_t *out, va_list args) { uint32_t node_id = va_arg(args, uint32_t); const char *node_name = va_arg(args, const char *); - char *id_s = crm_strdup_printf("%" PRIu32, node_id); + char *id_s = pcmk__assert_asprintf("%" PRIu32, node_id); pcmk__output_create_xml_node(out, PCMK_XE_NODE_INFO, PCMK_XA_NODEID, id_s, @@ -271,7 +271,7 @@ partition_list_xml(pcmk__output_t *out, va_list args) pcmk_controld_api_node_t *node = node_iter->data; if (pcmk__str_eq(node->state, "member", pcmk__str_none)) { - char *id_s = crm_strdup_printf("%" PRIu32, node->id); + char *id_s = pcmk__assert_asprintf("%" PRIu32, node->id); pcmk__output_create_xml_node(out, PCMK_XE_NODE, PCMK_XA_ID, id_s, diff --git a/tools/crm_resource.c b/tools/crm_resource.c index f5c6edee706..969a898ebdb 100644 --- a/tools/crm_resource.c +++ b/tools/crm_resource.c @@ -2351,8 +2351,10 @@ main(int argc, char **argv) // For CRM_EX_USAGE, error is already set satisfactorily if ((exit_code != CRM_EX_OK) && (exit_code != CRM_EX_USAGE)) { if (error != NULL) { - char *msg = crm_strdup_printf("%s\nError performing operation: %s", - error->message, crm_exit_str(exit_code)); + char *msg = pcmk__assert_asprintf("%s\nError performing operation: " + "%s", + error->message, + crm_exit_str(exit_code)); g_clear_error(&error); g_set_error(&error, PCMK__EXITC_ERROR, exit_code, "%s", msg); free(msg); diff --git a/tools/crm_resource_ban.c b/tools/crm_resource_ban.c index 33e77c8ca48..fbdc086c2a8 100644 --- a/tools/crm_resource_ban.c +++ b/tools/crm_resource_ban.c @@ -263,7 +263,7 @@ resource_clear_node_in_expr(const char *rsc_id, const char *host, "and @" PCMK_XA_VALUE "='%s']" \ "]" - xpath_string = crm_strdup_printf(XPATH_FMT, rsc_id, rsc_id, host); + xpath_string = pcmk__assert_asprintf(XPATH_FMT, rsc_id, rsc_id, host); rc = cib_conn->cmds->remove(cib_conn, xpath_string, NULL, cib_xpath|cib_sync_call); diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c index 33159929d6d..bc0f6a72651 100644 --- a/tools/crm_resource_runtime.c +++ b/tools/crm_resource_runtime.c @@ -287,9 +287,9 @@ find_matching_attr_resources(pcmk__output_t *out, pcmk_resource_t *rsc, static xmlNode * get_cib_rsc(xmlNode *cib_xml, const pcmk_resource_t *rsc) { - char *xpath = crm_strdup_printf("%s//*[@" PCMK_XA_ID "='%s']", - pcmk_cib_xpath_for(PCMK_XE_RESOURCES), - pcmk__xe_id(rsc->priv->xml)); + char *xpath = pcmk__assert_asprintf("%s//*[@" PCMK_XA_ID "='%s']", + pcmk_cib_xpath_for(PCMK_XE_RESOURCES), + pcmk__xe_id(rsc->priv->xml)); xmlNode *rsc_xml = pcmk__xpath_find_one(cib_xml->doc, xpath, LOG_ERR); free(xpath); @@ -456,13 +456,14 @@ update_attribute(pcmk_resource_t *rsc, const char *requested_name, case ENXIO: if (rsc_attr_set == NULL) { - local_attr_set = crm_strdup_printf("%s-%s", lookup_id, - attr_set_type); + local_attr_set = pcmk__assert_asprintf("%s-%s", lookup_id, + attr_set_type); rsc_attr_set = local_attr_set; } if (rsc_attr_id == NULL) { - found_attr_id = crm_strdup_printf("%s-%s", - rsc_attr_set, attr_name); + found_attr_id = pcmk__assert_asprintf("%s-%s", + rsc_attr_set, + attr_name); rsc_attr_id = found_attr_id; } @@ -872,7 +873,7 @@ clear_rsc_failures(pcmk__output_t *out, pcmk_ipc_api_t *controld_api, guint interval_ms = 0U; pcmk_parse_interval_spec(interval_spec, &interval_ms); - interval_ms_s = crm_strdup_printf("%u", interval_ms); + interval_ms_s = pcmk__assert_asprintf("%u", interval_ms); } for (xmlNode *xml_op = pcmk__xe_first_child(scheduler->priv->failed, NULL, @@ -2118,13 +2119,13 @@ wait_till_stable(pcmk__output_t *out, guint timeout_ms, cib_t * cib) return ENOMEM; } - xpath = crm_strdup_printf("/" PCMK_XE_CIB "/" PCMK_XE_STATUS - "/" PCMK__XE_NODE_STATE "/" PCMK__XE_LRM - "/" PCMK__XE_LRM_RESOURCES - "/" PCMK__XE_LRM_RESOURCE - "/" PCMK__XE_LRM_RSC_OP - "[@" PCMK__XA_RC_CODE "='%d']", - PCMK_OCF_UNKNOWN); + xpath = pcmk__assert_asprintf("/" PCMK_XE_CIB "/" PCMK_XE_STATUS + "/" PCMK__XE_NODE_STATE "/" PCMK__XE_LRM + "/" PCMK__XE_LRM_RESOURCES + "/" PCMK__XE_LRM_RESOURCE + "/" PCMK__XE_LRM_RSC_OP + "[@" PCMK__XA_RC_CODE "='%d']", + PCMK_OCF_UNKNOWN); do { /* Abort if timeout is reached */ time_diff = expire_time - time(NULL); @@ -2219,12 +2220,12 @@ set_agent_environment(GHashTable *params, guint timeout_ms, int check_level, int verbosity) { g_hash_table_insert(params, crm_meta_name(PCMK_META_TIMEOUT), - crm_strdup_printf("%u", timeout_ms)); + pcmk__assert_asprintf("%u", timeout_ms)); pcmk__insert_dup(params, PCMK_XA_CRM_FEATURE_SET, CRM_FEATURE_SET); if (check_level >= 0) { - char *level = crm_strdup_printf("%d", check_level); + char *level = pcmk__assert_asprintf("%d", check_level); setenv("OCF_CHECK_LEVEL", level, 1); free(level); diff --git a/tools/crm_shadow.c b/tools/crm_shadow.c index 0040685846d..c7331794006 100644 --- a/tools/crm_shadow.c +++ b/tools/crm_shadow.c @@ -356,10 +356,10 @@ set_danger_error(const char *reason, bool for_shadow, bool show_mismatch, if (show_mismatch && !pcmk__str_eq(active, options.instance, pcmk__str_null_matches)) { - full = crm_strdup_printf("%s.\nAdditionally, the supplied shadow " - "instance (%s) is not the same as the active " - "one (%s)", - reason, options.instance, active); + full = pcmk__assert_asprintf("%s.\nAdditionally, the supplied shadow " + "instance (%s) is not the same as the " + "active one (%s)", + reason, options.instance, active); reason = full; } @@ -410,8 +410,9 @@ check_file_exists(const char *filename, bool should_exist, GError **error) struct stat buf; if (!should_exist && (stat(filename, &buf) == 0)) { - char *reason = crm_strdup_printf("A shadow instance '%s' already " - "exists", options.instance); + char *reason = pcmk__assert_asprintf("A shadow instance '%s' already " + "exists", + options.instance); exit_code = CRM_EX_CANTCREAT; set_danger_error(reason, true, false, error); @@ -558,7 +559,7 @@ write_shadow_file(const xmlNode *xml, const char *filename, bool reset, static inline char * get_shadow_prompt(void) { - return crm_strdup_printf("shadow[%.40s] # ", options.instance); + return pcmk__assert_asprintf("shadow[%.40s] # ", options.instance); } /*! @@ -612,9 +613,9 @@ shadow_setup(pcmk__output_t *out, bool do_switch, GError **error) prefix = "To switch to the named shadow instance"; } - msg = crm_strdup_printf("%s, enter the following into your shell:\n" - "\texport CIB_shadow=%s", - prefix, options.instance); + msg = pcmk__assert_asprintf("%s, enter the following into your shell:\n" + "\texport CIB_shadow=%s", + prefix, options.instance); out->message(out, "instruction", msg); free(msg); } diff --git a/tools/stonith_admin.c b/tools/stonith_admin.c index ba9180f632e..978e6c7ecf4 100644 --- a/tools/stonith_admin.c +++ b/tools/stonith_admin.c @@ -242,7 +242,7 @@ static char *name = NULL; gboolean add_env_params(const gchar *option_name, const gchar *optarg, gpointer data, GError **error) { - char *key = crm_strdup_printf("OCF_RESKEY_%s", optarg); + char *key = pcmk__assert_asprintf("OCF_RESKEY_%s", optarg); const char *env = getenv(key); gboolean retval = TRUE; @@ -317,7 +317,7 @@ add_stonith_params(const gchar *option_name, const gchar *optarg, gpointer data, gboolean set_tag(const gchar *option_name, const gchar *optarg, gpointer data, GError **error) { free(name); - name = crm_strdup_printf("%s.%s", crm_system_name, optarg); + name = pcmk__assert_asprintf("%s.%s", crm_system_name, optarg); return TRUE; } From a5651aafaf54bff2e50c4dae0ba125091321186a Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Sun, 23 Mar 2025 01:45:14 -0700 Subject: [PATCH 119/186] API: libcrmcommon: Deprecate crm_strdup_printf() Signed-off-by: Reid Wahl --- include/crm/common/strings.h | 3 --- include/crm/common/strings_compat.h | 4 ++++ lib/common/strings.c | 28 ++++++++++++++-------------- 3 files changed, 18 insertions(+), 17 deletions(-) diff --git a/include/crm/common/strings.h b/include/crm/common/strings.h index 6368c42bef5..eb753d1f093 100644 --- a/include/crm/common/strings.h +++ b/include/crm/common/strings.h @@ -24,9 +24,6 @@ extern "C" { int pcmk_parse_interval_spec(const char *input, guint *result_ms); -// NOTE: sbd (as of at least 1.5.2) uses this -char *crm_strdup_printf(char const *format, ...) G_GNUC_PRINTF(1, 2); - #if !defined(PCMK_ALLOW_DEPRECATED) || (PCMK_ALLOW_DEPRECATED == 1) #include #endif diff --git a/include/crm/common/strings_compat.h b/include/crm/common/strings_compat.h index a5b5cfb83c6..9fa586c60c6 100644 --- a/include/crm/common/strings_compat.h +++ b/include/crm/common/strings_compat.h @@ -35,6 +35,10 @@ gboolean crm_is_true(const char *s); //! \deprecated Do not use int crm_str_to_boolean(const char *s, int *ret); +// NOTE: sbd (as of at least 1.5.2) uses this +//! \deprecated Do not use +char *crm_strdup_printf(char const *format, ...) G_GNUC_PRINTF(1, 2); + #ifdef __cplusplus } #endif diff --git a/lib/common/strings.c b/lib/common/strings.c index 71379f0bf1a..4ee3b3d5650 100644 --- a/lib/common/strings.c +++ b/lib/common/strings.c @@ -762,20 +762,6 @@ pcmk__compress(const char *data, unsigned int length, unsigned int max, return pcmk_rc_ok; } -char * -crm_strdup_printf(char const *format, ...) -{ - va_list ap; - int len = 0; - char *string = NULL; - - va_start(ap, format); - len = vasprintf(&string, format, ap); - pcmk__assert(len > 0); - va_end(ap); - return string; -} - /*! * \internal * \brief Parse a boolean value from a string @@ -1513,5 +1499,19 @@ crm_str_to_boolean(const char *s, int *ret) return -1; } +char * +crm_strdup_printf(char const *format, ...) +{ + va_list ap; + int len = 0; + char *string = NULL; + + va_start(ap, format); + len = vasprintf(&string, format, ap); + pcmk__assert(len > 0); + va_end(ap); + return string; +} + // LCOV_EXCL_STOP // End deprecated API From 1f54b2c3836d0d5cb51d9684ac85414f7e76c906 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Sun, 23 Mar 2025 02:55:51 -0700 Subject: [PATCH 120/186] Refactor: libcrmcommon: New pcmk__is_set() To replace pcmk_is_set(). Make it an inline function since we don't need any CPP features. Signed-off-by: Reid Wahl --- daemons/attrd/attrd_attributes.c | 4 +- daemons/attrd/attrd_cib.c | 23 +- daemons/attrd/attrd_corosync.c | 8 +- daemons/based/based_callbacks.c | 41 ++-- daemons/based/based_notify.c | 8 +- daemons/based/based_remote.c | 10 +- daemons/based/based_transaction.c | 2 +- daemons/controld/controld_attrd.c | 8 +- daemons/controld/controld_callbacks.c | 21 +- daemons/controld/controld_cib.c | 24 +- daemons/controld/controld_control.c | 30 +-- daemons/controld/controld_corosync.c | 4 +- daemons/controld/controld_election.c | 8 +- daemons/controld/controld_execd.c | 28 +-- daemons/controld/controld_execd_state.c | 4 +- daemons/controld/controld_fencing.c | 21 +- daemons/controld/controld_fsa.c | 157 ++++++------- daemons/controld/controld_fsa.h | 4 +- daemons/controld/controld_join_client.c | 4 +- daemons/controld/controld_join_dc.c | 12 +- daemons/controld/controld_membership.c | 10 +- daemons/controld/controld_messages.c | 12 +- daemons/controld/controld_metadata.c | 6 +- daemons/controld/controld_remote_ra.c | 43 ++-- daemons/controld/controld_schedulerd.c | 24 +- daemons/controld/controld_te_actions.c | 6 +- daemons/controld/controld_te_events.c | 10 +- daemons/controld/controld_te_utils.c | 2 +- daemons/controld/controld_transition.c | 8 +- daemons/controld/controld_utils.c | 146 ++++++------ daemons/controld/pacemaker-controld.c | 4 +- daemons/execd/execd_commands.c | 14 +- daemons/execd/remoted_tls.c | 5 +- daemons/fenced/fenced_commands.c | 50 ++--- daemons/fenced/fenced_remote.c | 28 ++- daemons/fenced/fenced_scheduler.c | 2 +- daemons/fenced/pacemaker-fenced.c | 12 +- daemons/pacemakerd/pcmkd_messages.c | 3 +- daemons/pacemakerd/pcmkd_subdaemons.c | 20 +- daemons/schedulerd/schedulerd_messages.c | 4 +- include/crm/common/clone_internal.h | 9 +- include/crm/common/internal.h | 19 ++ include/crm/common/logging_internal.h | 5 +- include/crm/common/util_compat.h | 4 +- include/crm/pengine/status.h | 3 +- include/crm/pengine/status_compat.h | 3 +- lib/cib/cib_attrs.c | 4 +- lib/cib/cib_file.c | 10 +- lib/cib/cib_native.c | 2 +- lib/cib/cib_ops.c | 10 +- lib/cib/cib_remote.c | 2 +- lib/cib/cib_utils.c | 10 +- lib/cluster/cluster.c | 5 +- lib/cluster/corosync.c | 2 +- lib/cluster/membership.c | 30 +-- lib/common/acl.c | 20 +- lib/common/actions.c | 2 +- lib/common/agents.c | 2 +- lib/common/alerts.c | 22 +- lib/common/ipc_attrd.c | 20 +- lib/common/ipc_client.c | 4 +- lib/common/ipc_server.c | 8 +- lib/common/iso8601.c | 22 +- lib/common/messages.c | 2 +- lib/common/options_display.c | 16 +- lib/common/patchset.c | 8 +- lib/common/resources.c | 4 +- lib/common/scheduler.c | 2 +- lib/common/strings.c | 10 +- .../tests/flags/pcmk_all_flags_set_test.c | 8 +- .../tests/xml_comment/pcmk__xc_create_test.c | 2 +- lib/common/xml.c | 10 +- lib/common/xml_attr.c | 4 +- lib/common/xml_display.c | 35 +-- lib/common/xml_element.c | 4 +- lib/common/xml_io.c | 20 +- lib/fencing/st_output.c | 4 +- lib/fencing/st_rhcs.c | 6 +- lib/lrmd/lrmd_alerts.c | 2 +- lib/lrmd/lrmd_client.c | 6 +- lib/lrmd/proxy_common.c | 2 +- lib/pacemaker/pcmk_graph_consumer.c | 35 +-- lib/pacemaker/pcmk_graph_logging.c | 16 +- lib/pacemaker/pcmk_graph_producer.c | 90 ++++---- lib/pacemaker/pcmk_injections.c | 6 +- lib/pacemaker/pcmk_output.c | 118 +++++----- lib/pacemaker/pcmk_result_code.c | 14 +- lib/pacemaker/pcmk_sched_actions.c | 212 +++++++++--------- lib/pacemaker/pcmk_sched_bundle.c | 24 +- lib/pacemaker/pcmk_sched_clone.c | 32 +-- lib/pacemaker/pcmk_sched_colocation.c | 50 ++--- lib/pacemaker/pcmk_sched_fencing.c | 22 +- lib/pacemaker/pcmk_sched_group.c | 32 +-- lib/pacemaker/pcmk_sched_instances.c | 52 ++--- lib/pacemaker/pcmk_sched_migration.c | 16 +- lib/pacemaker/pcmk_sched_nodes.c | 2 +- lib/pacemaker/pcmk_sched_ordering.c | 8 +- lib/pacemaker/pcmk_sched_primitive.c | 90 ++++---- lib/pacemaker/pcmk_sched_probes.c | 38 ++-- lib/pacemaker/pcmk_sched_promotable.c | 24 +- lib/pacemaker/pcmk_sched_recurring.c | 36 +-- lib/pacemaker/pcmk_sched_remote.c | 22 +- lib/pacemaker/pcmk_sched_resource.c | 8 +- lib/pacemaker/pcmk_sched_tickets.c | 24 +- lib/pacemaker/pcmk_sched_utilization.c | 2 +- lib/pacemaker/pcmk_scheduler.c | 46 ++-- lib/pacemaker/pcmk_simulate.c | 48 ++-- lib/pacemaker/pcmk_status.c | 7 +- lib/pacemaker/pcmk_ticket.c | 4 +- lib/pengine/bundle.c | 88 +++++--- lib/pengine/clone.c | 40 ++-- lib/pengine/complex.c | 46 ++-- lib/pengine/failcounts.c | 13 +- lib/pengine/group.c | 35 +-- lib/pengine/native.c | 94 ++++---- lib/pengine/pe_actions.c | 46 ++-- lib/pengine/pe_digest.c | 10 +- lib/pengine/pe_notif.c | 33 +-- lib/pengine/pe_output.c | 169 ++++++++------ lib/pengine/remote.c | 8 +- lib/pengine/status.c | 8 +- lib/pengine/unpack.c | 153 +++++++------ lib/pengine/utils.c | 24 +- lib/services/services.c | 17 +- lib/services/services_linux.c | 13 +- tools/cibadmin.c | 2 +- tools/crm_mon.c | 40 ++-- tools/crm_mon_curses.c | 4 +- tools/crm_resource.c | 20 +- tools/crm_resource_print.c | 22 +- tools/crm_resource_runtime.c | 28 +-- tools/crm_shadow.c | 16 +- tools/crm_simulate.c | 5 +- 133 files changed, 1681 insertions(+), 1524 deletions(-) diff --git a/daemons/attrd/attrd_attributes.c b/daemons/attrd/attrd_attributes.c index bbb05e9cc76..aa2e3b9f3b4 100644 --- a/daemons/attrd/attrd_attributes.c +++ b/daemons/attrd/attrd_attributes.c @@ -156,9 +156,9 @@ attrd_add_value_xml(xmlNode *parent, const attribute_t *a, pcmk__xe_set_int(xml, PCMK__XA_ATTR_DAMPENING, pcmk__timeout_ms2s(a->timeout_ms)); pcmk__xe_set_int(xml, PCMK__XA_ATTR_IS_PRIVATE, - pcmk_is_set(a->flags, attrd_attr_is_private)); + pcmk__is_set(a->flags, attrd_attr_is_private)); pcmk__xe_set_int(xml, PCMK__XA_ATTR_IS_REMOTE, - pcmk_is_set(v->flags, attrd_value_remote)); + pcmk__is_set(v->flags, attrd_value_remote)); pcmk__xe_set_int(xml, PCMK__XA_ATTRD_IS_FORCE_WRITE, force_write); return xml; diff --git a/daemons/attrd/attrd_cib.c b/daemons/attrd/attrd_cib.c index 1abaa270e03..a92bfe223bf 100644 --- a/daemons/attrd/attrd_cib.c +++ b/daemons/attrd/attrd_cib.c @@ -301,7 +301,7 @@ attrd_cib_callback(xmlNode *msg, int call_id, int rc, xmlNode *output, void *use } } - if (pcmk_is_set(a->flags, attrd_attr_changed) && attrd_election_won()) { + if (pcmk__is_set(a->flags, attrd_attr_changed) && attrd_election_won()) { if (rc == pcmk_ok) { /* We deferred a write of a new update because this update was in * progress. Write out the new value without additional delay. @@ -501,7 +501,7 @@ write_attribute(attribute_t *a, bool ignore_delay) } // Private attributes (or any in standalone mode) are not written to the CIB - if (stand_alone || pcmk_is_set(a->flags, attrd_attr_is_private)) { + if (stand_alone || pcmk__is_set(a->flags, attrd_attr_is_private)) { should_write = false; } @@ -571,7 +571,7 @@ write_attribute(attribute_t *a, bool ignore_delay) prev_xml_id = attrd_get_node_xml_id(v->nodename); - if (pcmk_is_set(v->flags, attrd_value_remote)) { + if (pcmk__is_set(v->flags, attrd_value_remote)) { // A Pacemaker Remote node's XML ID is the same as its name node_xml_id = v->nodename; @@ -674,23 +674,24 @@ attrd_write_attributes(uint32_t options) attribute_t *a = NULL; crm_debug("Writing out %s attributes", - pcmk_is_set(options, attrd_write_all)? "all" : "changed"); + pcmk__is_set(options, attrd_write_all)? "all" : "changed"); g_hash_table_iter_init(&iter, attributes); while (g_hash_table_iter_next(&iter, NULL, (gpointer *) & a)) { - if (!pcmk_is_set(options, attrd_write_all) - && pcmk_is_set(a->flags, attrd_attr_node_unknown)) { + if (!pcmk__is_set(options, attrd_write_all) + && pcmk__is_set(a->flags, attrd_attr_node_unknown)) { // Try writing this attribute again, in case peer ID was learned attrd_set_attr_flags(a, attrd_attr_changed); - } else if (pcmk_is_set(a->flags, attrd_attr_force_write)) { + } else if (pcmk__is_set(a->flags, attrd_attr_force_write)) { /* If the force_write flag is set, write the attribute. */ attrd_set_attr_flags(a, attrd_attr_changed); } - if (pcmk_is_set(options, attrd_write_all) || - pcmk_is_set(a->flags, attrd_attr_changed)) { - bool ignore_delay = pcmk_is_set(options, attrd_write_no_delay); + if (pcmk__is_set(options, attrd_write_all) + || pcmk__is_set(a->flags, attrd_attr_changed)) { - if (pcmk_is_set(a->flags, attrd_attr_force_write)) { + bool ignore_delay = pcmk__is_set(options, attrd_write_no_delay); + + if (pcmk__is_set(a->flags, attrd_attr_force_write)) { // Always ignore delay when forced write flag is set ignore_delay = true; } diff --git a/daemons/attrd/attrd_corosync.c b/daemons/attrd/attrd_corosync.c index 05f70e39452..b9ae186f74e 100644 --- a/daemons/attrd/attrd_corosync.c +++ b/daemons/attrd/attrd_corosync.c @@ -164,7 +164,7 @@ attrd_peer_change_cb(enum pcmk__node_update kind, pcmk__node_status_t *peer, const void *data) { bool gone = false; - bool is_remote = pcmk_is_set(peer->flags, pcmk__node_status_remote); + bool is_remote = pcmk__is_set(peer->flags, pcmk__node_status_remote); switch (kind) { case pcmk__node_update_name: @@ -174,7 +174,7 @@ attrd_peer_change_cb(enum pcmk__node_update kind, pcmk__node_status_t *peer, break; case pcmk__node_update_processes: - if (!pcmk_is_set(peer->processes, crm_get_cluster_proc())) { + if (!pcmk__is_set(peer->processes, crm_get_cluster_proc())) { gone = true; } crm_debug("Node %s is %s a peer", @@ -190,7 +190,7 @@ attrd_peer_change_cb(enum pcmk__node_update kind, pcmk__node_status_t *peer, * (unless it's a remote node, which doesn't run its own attrd) */ if (attrd_election_won() - && !pcmk_is_set(peer->flags, pcmk__node_status_remote)) { + && !pcmk__is_set(peer->flags, pcmk__node_status_remote)) { attrd_peer_sync(peer); } } else { @@ -389,7 +389,7 @@ broadcast_unseen_local_values(void) g_hash_table_iter_init(&vIter, a->values); while (g_hash_table_iter_next(&vIter, NULL, (gpointer *) & v)) { - if (!pcmk_is_set(v->flags, attrd_value_from_peer) + if (!pcmk__is_set(v->flags, attrd_value_from_peer) && pcmk__str_eq(v->nodename, attrd_cluster->priv->node_name, pcmk__str_casei)) { crm_trace("* %s[%s]='%s' is local-only", diff --git a/daemons/based/based_callbacks.c b/daemons/based/based_callbacks.c index 5fd02ab299f..b0a1aaa59bf 100644 --- a/daemons/based/based_callbacks.c +++ b/daemons/based/based_callbacks.c @@ -235,7 +235,7 @@ cib_common_callback_worker(uint32_t id, uint32_t flags, xmlNode * op_request, /* Requests with cib_transaction set should not be sent to based directly * (outside of a commit-transaction request) */ - if (pcmk_is_set(call_options, cib_transaction)) { + if (pcmk__is_set(call_options, cib_transaction)) { return; } @@ -328,7 +328,7 @@ cib_common_callback(qb_ipcs_connection_t * c, void *data, size_t size, gboolean return 0; } - if (pcmk_is_set(call_options, cib_sync_call)) { + if (pcmk__is_set(call_options, cib_sync_call)) { CRM_LOG_ASSERT(flags & crm_ipc_client_response); CRM_LOG_ASSERT(cib_client->request_id == 0); /* This means the client has two synchronous events in-flight */ cib_client->request_id = id; /* Reply only to the last one */ @@ -348,7 +348,7 @@ cib_common_callback(qb_ipcs_connection_t * c, void *data, size_t size, gboolean } /* Allow cluster daemons more leeway before being evicted */ - if (pcmk_is_set(cib_client->flags, cib_is_daemon)) { + if (pcmk__is_set(cib_client->flags, cib_is_daemon)) { const char *qmax = cib_config_lookup(PCMK_OPT_CLUSTER_IPC_LIMIT); pcmk__set_client_queue_max(cib_client, qmax); @@ -492,7 +492,7 @@ parse_local_options(const pcmk__client_t *cib_client, *local_notify = TRUE; *needs_forward = FALSE; - if (pcmk_is_set(operation->flags, cib__op_attr_local)) { + if (pcmk__is_set(operation->flags, cib__op_attr_local)) { /* Always process locally if cib__op_attr_local is set. * * @COMPAT: Currently host is ignored. At a compatibility break, throw @@ -512,7 +512,7 @@ parse_local_options(const pcmk__client_t *cib_client, return; } - if (pcmk_is_set(operation->flags, cib__op_attr_modifies) + if (pcmk__is_set(operation->flags, cib__op_attr_modifies) || !pcmk__str_eq(host, OUR_NODENAME, pcmk__str_casei|pcmk__str_null_matches)) { @@ -620,7 +620,7 @@ parse_peer_options(const cib__operation_t *operation, xmlNode *request, return FALSE; } else if (is_reply - && pcmk_is_set(operation->flags, cib__op_attr_modifies)) { + && pcmk__is_set(operation->flags, cib__op_attr_modifies)) { crm_trace("Ignoring legacy %s reply sent from %s to local clients", op, originator); return FALSE; @@ -818,7 +818,7 @@ cib_process_request(xmlNode *request, gboolean privileged, return rc; } - if (pcmk_is_set(call_options, cib_transaction)) { + if (pcmk__is_set(call_options, cib_transaction)) { /* All requests in a transaction are processed locally against a working * CIB copy, and we don't notify for individual requests because the * entire transaction is atomic. @@ -832,9 +832,9 @@ cib_process_request(xmlNode *request, gboolean privileged, needs_forward = FALSE; } - is_update = pcmk_is_set(operation->flags, cib__op_attr_modifies); + is_update = pcmk__is_set(operation->flags, cib__op_attr_modifies); - if (pcmk_is_set(call_options, cib_discard_reply)) { + if (pcmk__is_set(call_options, cib_discard_reply)) { /* If the request will modify the CIB, and we are in legacy mode, we * need to build a reply so we can broadcast a diff, even if the * requester doesn't want one. @@ -929,7 +929,7 @@ cib_process_request(xmlNode *request, gboolean privileged, crm_trace("Completed update as secondary"); } else if ((cib_client == NULL) - && !pcmk_is_set(call_options, cib_discard_reply)) { + && !pcmk__is_set(call_options, cib_discard_reply)) { if (is_update == FALSE || result_diff == NULL) { crm_trace("Request not broadcast: R/O call"); @@ -946,15 +946,15 @@ cib_process_request(xmlNode *request, gboolean privileged, if (local_notify && client_id) { crm_trace("Performing local %ssync notification for %s", - (pcmk_is_set(call_options, cib_sync_call)? "" : "a"), + (pcmk__is_set(call_options, cib_sync_call)? "" : "a"), client_id); if (process == FALSE) { do_local_notify(request, client_id, - pcmk_is_set(call_options, cib_sync_call), + pcmk__is_set(call_options, cib_sync_call), (cib_client == NULL)); } else { do_local_notify(op_reply, client_id, - pcmk_is_set(call_options, cib_sync_call), + pcmk__is_set(call_options, cib_sync_call), (cib_client == NULL)); } } @@ -1063,7 +1063,8 @@ cib_process_command(xmlNode *request, const cib__operation_t *operation, crm_warn("Couldn't parse options from request: %s", pcmk_rc_str(rc)); } - if (!privileged && pcmk_is_set(operation->flags, cib__op_attr_privileged)) { + if (!privileged + && pcmk__is_set(operation->flags, cib__op_attr_privileged)) { rc = -EACCES; crm_trace("Failed due to lack of privileges: %s", pcmk_strerror(rc)); goto done; @@ -1071,7 +1072,7 @@ cib_process_command(xmlNode *request, const cib__operation_t *operation, input = prepare_input(request, operation->type, §ion); - if (!pcmk_is_set(operation->flags, cib__op_attr_modifies)) { + if (!pcmk__is_set(operation->flags, cib__op_attr_modifies)) { rc = cib_perform_op(NULL, op, call_options, op_function, true, section, request, input, false, &config_changed, &the_cib, &result_cib, NULL, &output); @@ -1109,7 +1110,7 @@ cib_process_command(xmlNode *request, const cib__operation_t *operation, * negates the need to detect ordering changes. */ if ((rc == pcmk_ok) - && pcmk_is_set(operation->flags, cib__op_attr_writes_through)) { + && pcmk__is_set(operation->flags, cib__op_attr_writes_through)) { config_changed = true; } @@ -1118,7 +1119,7 @@ cib_process_command(xmlNode *request, const cib__operation_t *operation, && !pcmk_any_flags_set(call_options, cib_dryrun|cib_transaction)) { if (result_cib != the_cib) { - if (pcmk_is_set(operation->flags, cib__op_attr_writes_through)) { + if (pcmk__is_set(operation->flags, cib__op_attr_writes_through)) { config_changed = true; } @@ -1169,7 +1170,7 @@ cib_process_command(xmlNode *request, const cib__operation_t *operation, } else { crm_trace("Not activating %d %d %s", rc, - pcmk_is_set(call_options, cib_dryrun), + pcmk__is_set(call_options, cib_dryrun), pcmk__xe_get(result_cib, PCMK_XA_NUM_UPDATES)); if (result_cib != the_cib) { @@ -1180,7 +1181,7 @@ cib_process_command(xmlNode *request, const cib__operation_t *operation, if (!pcmk_any_flags_set(call_options, cib_dryrun|cib_inhibit_notify|cib_transaction)) { crm_trace("Sending notifications %d", - pcmk_is_set(call_options, cib_dryrun)); + pcmk__is_set(call_options, cib_dryrun)); cib_diff_notify(op, rc, call_id, client_id, client_name, originator, input, *cib_diff); } @@ -1188,7 +1189,7 @@ cib_process_command(xmlNode *request, const cib__operation_t *operation, pcmk__log_xml_patchset(LOG_TRACE, *cib_diff); done: - if (!pcmk_is_set(call_options, cib_discard_reply)) { + if (!pcmk__is_set(call_options, cib_discard_reply)) { *reply = create_cib_reply(op, call_id, client_id, call_options, rc, output); } diff --git a/daemons/based/based_notify.c b/daemons/based/based_notify.c index d71bd0ac561..5332f166e01 100644 --- a/daemons/based/based_notify.c +++ b/daemons/based/based_notify.c @@ -55,22 +55,22 @@ cib_notify_send_one(gpointer key, gpointer value, gpointer user_data) type = pcmk__xe_get(update->msg, PCMK__XA_SUBT); CRM_LOG_ASSERT(type != NULL); - if (pcmk_is_set(client->flags, cib_notify_diff) + if (pcmk__is_set(client->flags, cib_notify_diff) && pcmk__str_eq(type, PCMK__VALUE_CIB_DIFF_NOTIFY, pcmk__str_none)) { do_send = TRUE; - } else if (pcmk_is_set(client->flags, cib_notify_confirm) + } else if (pcmk__is_set(client->flags, cib_notify_confirm) && pcmk__str_eq(type, PCMK__VALUE_CIB_UPDATE_CONFIRMATION, pcmk__str_none)) { do_send = TRUE; - } else if (pcmk_is_set(client->flags, cib_notify_pre) + } else if (pcmk__is_set(client->flags, cib_notify_pre) && pcmk__str_eq(type, PCMK__VALUE_CIB_PRE_NOTIFY, pcmk__str_none)) { do_send = TRUE; - } else if (pcmk_is_set(client->flags, cib_notify_post) + } else if (pcmk__is_set(client->flags, cib_notify_post) && pcmk__str_eq(type, PCMK__VALUE_CIB_POST_NOTIFY, pcmk__str_none)) { do_send = TRUE; diff --git a/daemons/based/based_remote.c b/daemons/based/based_remote.c index 21f60b12304..1afdbc8c8e8 100644 --- a/daemons/based/based_remote.c +++ b/daemons/based/based_remote.c @@ -235,7 +235,7 @@ remote_auth_timeout_cb(gpointer data) client->remote->auth_timeout = 0; - if (pcmk_is_set(client->flags, pcmk__client_authenticated)) { + if (pcmk__is_set(client->flags, pcmk__client_authenticated)) { return FALSE; } @@ -340,8 +340,8 @@ cib_remote_connection_destroy(gpointer user_data) if (client->remote->tls_session) { csock = pcmk__tls_get_client_sock(client->remote); - if (pcmk_is_set(client->flags, - pcmk__client_tls_handshake_complete)) { + if (pcmk__is_set(client->flags, + pcmk__client_tls_handshake_complete)) { gnutls_bye(client->remote->tls_session, GNUTLS_SHUT_WR); } gnutls_deinit(client->remote->tls_session); @@ -418,7 +418,7 @@ cib_remote_msg(gpointer data) pcmk__client_type_str(PCMK__CLIENT_TYPE(client)), client_name); if ((PCMK__CLIENT_TYPE(client) == pcmk__client_tls) - && !pcmk_is_set(client->flags, pcmk__client_tls_handshake_complete)) { + && !pcmk__is_set(client->flags, pcmk__client_tls_handshake_complete)) { int rc = pcmk__read_handshake_data(client); @@ -467,7 +467,7 @@ cib_remote_msg(gpointer data) } /* must pass auth before we will process anything else */ - if (!pcmk_is_set(client->flags, pcmk__client_authenticated)) { + if (!pcmk__is_set(client->flags, pcmk__client_authenticated)) { xmlNode *reg; const char *user = NULL; diff --git a/daemons/based/based_transaction.c b/daemons/based/based_transaction.c index 6fdbb704f73..8bdc621d1dc 100644 --- a/daemons/based/based_transaction.c +++ b/daemons/based/based_transaction.c @@ -67,7 +67,7 @@ process_transaction_requests(xmlNodePtr transaction, int rc = cib__get_operation(op, &operation); if (rc == pcmk_rc_ok) { - if (!pcmk_is_set(operation->flags, cib__op_attr_transaction) + if (!pcmk__is_set(operation->flags, cib__op_attr_transaction) || (host != NULL)) { rc = EOPNOTSUPP; diff --git a/daemons/controld/controld_attrd.c b/daemons/controld/controld_attrd.c index eff8070818d..ea2bbf80aea 100644 --- a/daemons/controld/controld_attrd.c +++ b/daemons/controld/controld_attrd.c @@ -1,5 +1,5 @@ /* - * Copyright 2006-2024 the Pacemaker project contributors + * Copyright 2006-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -39,8 +39,8 @@ node_type(bool is_remote) static inline const char * when(void) { - return pcmk_is_set(controld_globals.fsa_input_register, - R_SHUTDOWN)? " at shutdown" : ""; + return pcmk__is_set(controld_globals.fsa_input_register, + R_SHUTDOWN)? " at shutdown" : ""; } static void @@ -53,7 +53,7 @@ handle_attr_error(void) */ crmd_exit(CRM_EX_FATAL); - } else if (pcmk_is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { + } else if (pcmk__is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { // Fast-track shutdown since unable to request via attribute register_fsa_input(C_FSA_INTERNAL, I_FAIL, NULL); } diff --git a/daemons/controld/controld_callbacks.c b/daemons/controld/controld_callbacks.c index b87e00e5788..e1fdf53c511 100644 --- a/daemons/controld/controld_callbacks.c +++ b/daemons/controld/controld_callbacks.c @@ -82,7 +82,7 @@ crmd_ha_msg_filter(xmlNode * msg) static int node_alive(const pcmk__node_status_t *node) { - if (pcmk_is_set(node->flags, pcmk__node_status_remote)) { + if (pcmk__is_set(node->flags, pcmk__node_status_remote)) { // Pacemaker Remote nodes can't be partially alive if (pcmk__str_eq(node->state, PCMK_VALUE_MEMBER, pcmk__str_none)) { return 1; @@ -93,7 +93,7 @@ node_alive(const pcmk__node_status_t *node) // Completely up cluster node: both cluster member and peer return 1; - } else if (!pcmk_is_set(node->processes, crm_get_cluster_proc()) + } else if (!pcmk__is_set(node->processes, crm_get_cluster_proc()) && !pcmk__str_eq(node->state, PCMK_VALUE_MEMBER, pcmk__str_none)) { // Completely down cluster node: neither cluster member nor peer @@ -113,7 +113,7 @@ peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, { uint32_t old = 0; bool appeared = FALSE; - bool is_remote = pcmk_is_set(node->flags, pcmk__node_status_remote); + bool is_remote = pcmk__is_set(node->flags, pcmk__node_status_remote); controld_node_pending_timer(node); @@ -126,7 +126,7 @@ peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, } if ((type == pcmk__node_update_processes) - && pcmk_is_set(node->processes, crm_get_cluster_proc()) + && pcmk__is_set(node->processes, crm_get_cluster_proc()) && !AM_I_DC && !is_remote) { /* relay_message() on the recipient ignores these messages, but @@ -182,7 +182,7 @@ peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, case pcmk__node_update_processes: CRM_CHECK(data != NULL, return); old = *(const uint32_t *)data; - appeared = pcmk_is_set(node->processes, crm_get_cluster_proc()); + appeared = pcmk__is_set(node->processes, crm_get_cluster_proc()); { const char *dc_s = controld_globals.dc_name; @@ -197,7 +197,8 @@ peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, pcmk__s(dc_s, ""), old, node->processes); } - if (!pcmk_is_set((node->processes ^ old), crm_get_cluster_proc())) { + if (!pcmk__is_set((node->processes ^ old), + crm_get_cluster_proc())) { /* Peer status did not change. This should not be possible, * since we don't track process flags other than peer status. */ @@ -213,8 +214,8 @@ peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, controld_remove_voter(node->name); } - if (!pcmk_is_set(controld_globals.fsa_input_register, - R_CIB_CONNECTED)) { + if (!pcmk__is_set(controld_globals.fsa_input_register, + R_CIB_CONNECTED)) { crm_trace("Ignoring peer status change because not connected to CIB"); return; @@ -247,7 +248,7 @@ peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, cib_none); } else if (AM_I_DC - || pcmk_is_set(controld_globals.flags, controld_dc_left) + || pcmk__is_set(controld_globals.flags, controld_dc_left) || (controld_globals.dc_name == NULL)) { /* This only needs to be done once, so normally the DC should do * it. However if there is no DC, every node must do it, since @@ -282,7 +283,7 @@ peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, if (pcmk__str_eq(task, PCMK_ACTION_STONITH, pcmk__str_casei)) { const bool confirmed = - pcmk_is_set(down->flags, pcmk__graph_action_confirmed); + pcmk__is_set(down->flags, pcmk__graph_action_confirmed); /* tengine_stonith_callback() confirms fence actions */ crm_trace("Updating CIB %s fencer reported fencing of %s complete", diff --git a/daemons/controld/controld_cib.c b/daemons/controld/controld_cib.c index f59d50178ad..eff4800aa3d 100644 --- a/daemons/controld/controld_cib.c +++ b/daemons/controld/controld_cib.c @@ -35,7 +35,7 @@ handle_cib_disconnect(gpointer user_data) controld_trigger_fsa(); controld_globals.cib_conn->state = cib_disconnected; - if (pcmk_is_set(controld_globals.fsa_input_register, R_CIB_CONNECTED)) { + if (pcmk__is_set(controld_globals.fsa_input_register, R_CIB_CONNECTED)) { // @TODO This should trigger a reconnect, not a shutdown crm_crit("Lost connection to the CIB manager, shutting down"); register_fsa_input(C_FSA_INTERNAL, I_ERROR, NULL); @@ -133,7 +133,7 @@ do_cib_control(long long action, pcmk__assert(cib_conn != NULL); - if (pcmk_is_set(action, A_CIB_STOP)) { + if (pcmk__is_set(action, A_CIB_STOP)) { if ((cib_conn->state != cib_disconnected) && (pending_rsc_update != 0)) { @@ -145,7 +145,7 @@ do_cib_control(long long action, controld_disconnect_cib_manager(); } - if (!pcmk_is_set(action, A_CIB_START)) { + if (!pcmk__is_set(action, A_CIB_START)) { return; } @@ -182,7 +182,7 @@ do_cib_control(long long action, cib_retries = 0; } - if (!pcmk_is_set(controld_globals.fsa_input_register, R_CIB_CONNECTED)) { + if (!pcmk__is_set(controld_globals.fsa_input_register, R_CIB_CONNECTED)) { cib_retries++; if (cib_retries < 30) { @@ -430,8 +430,8 @@ controld_delete_resource_history(const char *rsc_id, const char *node, return rc; } - if (pcmk_is_set(call_options, cib_sync_call)) { - if (pcmk_is_set(call_options, cib_dryrun)) { + if (pcmk__is_set(call_options, cib_sync_call)) { + if (pcmk__is_set(call_options, cib_dryrun)) { crm_debug("Deletion of %s would succeed", desc); } else { crm_debug("Deletion of %s succeeded", desc); @@ -494,17 +494,17 @@ build_parameter_list(const lrmd_event_data_t *op, switch (param_type) { case ra_param_reloadable: - accept_for_list = !pcmk_is_set(param->rap_flags, param_type); + accept_for_list = !pcmk__is_set(param->rap_flags, param_type); accept_for_xml = accept_for_list; break; case ra_param_unique: - accept_for_list = pcmk_is_set(param->rap_flags, param_type); + accept_for_list = pcmk__is_set(param->rap_flags, param_type); accept_for_xml = accept_for_list; break; case ra_param_private: - accept_for_list = pcmk_is_set(param->rap_flags, param_type); + accept_for_list = pcmk__is_set(param->rap_flags, param_type); accept_for_xml = !accept_for_list; break; } @@ -558,14 +558,14 @@ append_restart_list(lrmd_event_data_t *op, struct ra_metadata_s *metadata, return; } - if (pcmk_is_set(metadata->ra_flags, ra_supports_reload_agent)) { + if (pcmk__is_set(metadata->ra_flags, ra_supports_reload_agent)) { /* Add parameters not marked reloadable to the PCMK__XA_OP_FORCE_RESTART * list */ list = build_parameter_list(op, metadata, ra_param_reloadable, &restart); - } else if (pcmk_is_set(metadata->ra_flags, ra_supports_legacy_reload)) { + } else if (pcmk__is_set(metadata->ra_flags, ra_supports_legacy_reload)) { /* @COMPAT pre-OCF-1.1 resource agents * * Before OCF 1.1, Pacemaker abused "unique=0" to indicate @@ -788,7 +788,7 @@ cib_rsc_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, void *use static bool should_preserve_lock(lrmd_event_data_t *op) { - if (!pcmk_is_set(controld_globals.flags, controld_shutdown_lock_enabled)) { + if (!pcmk__is_set(controld_globals.flags, controld_shutdown_lock_enabled)) { return false; } if (!strcmp(op->op_type, PCMK_ACTION_STOP) && (op->rc == PCMK_OCF_OK)) { diff --git a/daemons/controld/controld_control.c b/daemons/controld/controld_control.c index 14937d1add1..07bbbfe49da 100644 --- a/daemons/controld/controld_control.c +++ b/daemons/controld/controld_control.c @@ -130,14 +130,14 @@ do_shutdown_req(long long action, void crmd_fast_exit(crm_exit_t exit_code) { - if (pcmk_is_set(controld_globals.fsa_input_register, R_STAYDOWN)) { + if (pcmk__is_set(controld_globals.fsa_input_register, R_STAYDOWN)) { crm_warn("Inhibiting respawn " QB_XS " remapping exit code %d to %d", exit_code, CRM_EX_FATAL); exit_code = CRM_EX_FATAL; } else if ((exit_code == CRM_EX_OK) - && pcmk_is_set(controld_globals.fsa_input_register, - R_IN_RECOVERY)) { + && pcmk__is_set(controld_globals.fsa_input_register, + R_IN_RECOVERY)) { crm_err("Could not recover from internal error"); exit_code = CRM_EX_ERROR; } @@ -328,7 +328,7 @@ do_exit(long long action, { crm_exit_t exit_code = CRM_EX_OK; - if (pcmk_is_set(action, A_EXIT_1)) { + if (pcmk__is_set(action, A_EXIT_1)) { exit_code = CRM_EX_ERROR; crm_err("Exiting now due to errors"); } @@ -459,36 +459,36 @@ do_started(long long action, crm_err("Start cancelled... %s", fsa_state2string(cur_state)); return; - } else if (!pcmk_is_set(controld_globals.fsa_input_register, - R_MEMBERSHIP)) { + } else if (!pcmk__is_set(controld_globals.fsa_input_register, + R_MEMBERSHIP)) { crm_info("Delaying start, no membership data (%.16llx)", R_MEMBERSHIP); crmd_fsa_stall(TRUE); return; - } else if (!pcmk_is_set(controld_globals.fsa_input_register, - R_LRM_CONNECTED)) { + } else if (!pcmk__is_set(controld_globals.fsa_input_register, + R_LRM_CONNECTED)) { crm_info("Delaying start, not connected to executor (%.16llx)", R_LRM_CONNECTED); crmd_fsa_stall(TRUE); return; - } else if (!pcmk_is_set(controld_globals.fsa_input_register, - R_CIB_CONNECTED)) { + } else if (!pcmk__is_set(controld_globals.fsa_input_register, + R_CIB_CONNECTED)) { crm_info("Delaying start, CIB not connected (%.16llx)", R_CIB_CONNECTED); crmd_fsa_stall(TRUE); return; - } else if (!pcmk_is_set(controld_globals.fsa_input_register, - R_READ_CONFIG)) { + } else if (!pcmk__is_set(controld_globals.fsa_input_register, + R_READ_CONFIG)) { crm_info("Delaying start, Config not read (%.16llx)", R_READ_CONFIG); crmd_fsa_stall(TRUE); return; - } else if (!pcmk_is_set(controld_globals.fsa_input_register, R_PEER_DATA)) { - + } else if (!pcmk__is_set(controld_globals.fsa_input_register, + R_PEER_DATA)) { crm_info("Delaying start, No peer data (%.16llx)", R_PEER_DATA); crmd_fsa_stall(TRUE); return; @@ -676,7 +676,7 @@ crm_shutdown(int nsig) return; } - if (pcmk_is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { + if (pcmk__is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { crm_err("Escalating shutdown"); register_fsa_input_before(C_SHUTDOWN, I_ERROR, NULL); return; diff --git a/daemons/controld/controld_corosync.c b/daemons/controld/controld_corosync.c index 3556cde29d0..d5eef3710f7 100644 --- a/daemons/controld/controld_corosync.c +++ b/daemons/controld/controld_corosync.c @@ -52,7 +52,7 @@ crmd_cs_dispatch(cpg_handle_t handle, const struct cpg_name *groupName, pcmk__xe_set(xml, PCMK__XA_SRC, from); peer = pcmk__get_node(0, from, NULL, pcmk__node_search_cluster_member); - if (!pcmk_is_set(peer->processes, crm_proc_cpg)) { + if (!pcmk__is_set(peer->processes, crm_proc_cpg)) { /* If we can still talk to our peer process on that node, then it must * be part of the corosync membership */ @@ -78,7 +78,7 @@ crmd_quorum_callback(unsigned long long seq, gboolean quorate) static void crmd_cs_destroy(gpointer user_data) { - if (!pcmk_is_set(controld_globals.fsa_input_register, R_HA_DISCONNECTED)) { + if (!pcmk__is_set(controld_globals.fsa_input_register, R_HA_DISCONNECTED)) { crm_crit("Lost connection to cluster layer, shutting down"); crmd_exit(CRM_EX_DISCONNECT); } diff --git a/daemons/controld/controld_election.c b/daemons/controld/controld_election.c index 29f5087a215..14833ddae8f 100644 --- a/daemons/controld/controld_election.c +++ b/daemons/controld/controld_election.c @@ -94,7 +94,7 @@ do_election_vote(long long action, } if (not_voting == FALSE) { - if (pcmk_is_set(controld_globals.fsa_input_register, R_STARTING)) { + if (pcmk__is_set(controld_globals.fsa_input_register, R_STARTING)) { not_voting = TRUE; } } @@ -137,7 +137,7 @@ do_election_count_vote(long long action, ha_msg_input_t *vote = fsa_typed_data(fsa_dt_ha_msg); if (pcmk__peer_cache == NULL) { - if (!pcmk_is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { + if (!pcmk__is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { crm_err("Internal error, no peer cache"); } return; @@ -154,7 +154,7 @@ do_election_count_vote(long long action, case election_lost: update_dc(NULL); - if (pcmk_is_set(controld_globals.fsa_input_register, R_THE_DC)) { + if (pcmk__is_set(controld_globals.fsa_input_register, R_THE_DC)) { cib_t *cib_conn = controld_globals.cib_conn; register_fsa_input(C_FSA_INTERNAL, I_RELEASE_DC, NULL); @@ -258,7 +258,7 @@ do_dc_release(long long action, } else if (action & A_DC_RELEASED) { crm_info("DC role released"); - if (pcmk_is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { + if (pcmk__is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { xmlNode *update = NULL; pcmk__node_status_t *node = controld_get_local_node_status(); diff --git a/daemons/controld/controld_execd.c b/daemons/controld/controld_execd.c index 2bb49655109..ea950cf48b5 100644 --- a/daemons/controld/controld_execd.c +++ b/daemons/controld/controld_execd.c @@ -49,7 +49,7 @@ static gboolean lrm_state_verify_stopped(lrm_state_t * lrm_state, enum crmd_fsa_ static void lrm_connection_destroy(void) { - if (pcmk_is_set(controld_globals.fsa_input_register, R_LRM_CONNECTED)) { + if (pcmk__is_set(controld_globals.fsa_input_register, R_LRM_CONNECTED)) { crm_crit("Lost connection to local executor"); register_fsa_input(C_FSA_INTERNAL, I_ERROR, NULL); controld_clear_fsa_input_flags(R_LRM_CONNECTED); @@ -406,7 +406,7 @@ lrm_state_verify_stopped(lrm_state_t * lrm_state, enum crmd_fsa_state cur_state, log_level = LOG_ERR; when = "shutdown"; - } else if (pcmk_is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { + } else if (pcmk__is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { when = "shutdown... waiting"; } @@ -437,8 +437,8 @@ lrm_state_verify_stopped(lrm_state_t * lrm_state, enum crmd_fsa_state cur_state, counter, pcmk__plural_s(counter), when); if ((cur_state == S_TERMINATE) - || !pcmk_is_set(controld_globals.fsa_input_register, - R_SENT_RSC_STOP)) { + || !pcmk__is_set(controld_globals.fsa_input_register, + R_SENT_RSC_STOP)) { g_hash_table_iter_init(&gIter, lrm_state->active_ops); while (g_hash_table_iter_next(&gIter, (gpointer*)&key, (gpointer*)&pending)) { do_crm_log(log_level, "Pending action: %s (%s)", key, pending->op_key); @@ -454,7 +454,7 @@ lrm_state_verify_stopped(lrm_state_t * lrm_state, enum crmd_fsa_state cur_state, return rc; } - if (pcmk_is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { + if (pcmk__is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { /* At this point we're not waiting, we're just shutting down */ when = "shutdown"; } @@ -804,12 +804,12 @@ cancel_op(lrm_state_t * lrm_state, const char *rsc_id, const char *key, int op, pending = g_hash_table_lookup(lrm_state->active_ops, key); if (pending) { - if (remove && !pcmk_is_set(pending->flags, active_op_remove)) { + if (remove && !pcmk__is_set(pending->flags, active_op_remove)) { controld_set_active_op_flags(pending, active_op_remove); crm_debug("Scheduling %s for removal", key); } - if (pcmk_is_set(pending->flags, active_op_cancelled)) { + if (pcmk__is_set(pending->flags, active_op_cancelled)) { crm_debug("Operation %s already cancelled", key); free(local_key); return FALSE; @@ -1379,7 +1379,7 @@ metadata_complete(int pid, const pcmk__action_result_t *result, void *user_data) md = controld_cache_metadata(lrm_state->metadata_cache, data->rsc, result->action_stdout); } - if (!pcmk_is_set(controld_globals.fsa_input_register, R_HA_DISCONNECTED)) { + if (!pcmk__is_set(controld_globals.fsa_input_register, R_HA_DISCONNECTED)) { do_lrm_rsc_op(lrm_state, data->rsc, data->input_xml, md); } free_metadata_cb_data(data); @@ -1629,9 +1629,9 @@ construct_op(const lrm_state_t *lrm_state, const xmlNode *rsc_op, primitive = pcmk__xe_first_child(rsc_op, PCMK_XE_PRIMITIVE, NULL, NULL); class = pcmk__xe_get(primitive, PCMK_XA_CLASS); - if (pcmk_is_set(pcmk_get_ra_caps(class), pcmk_ra_cap_fence_params) - && pcmk__str_eq(operation, PCMK_ACTION_MONITOR, pcmk__str_casei) - && (op->interval_ms > 0)) { + if (pcmk__is_set(pcmk_get_ra_caps(class), pcmk_ra_cap_fence_params) + && pcmk__str_eq(operation, PCMK_ACTION_MONITOR, pcmk__str_casei) + && (op->interval_ms > 0)) { op_timeout = g_hash_table_lookup(params, "pcmk_monitor_timeout"); if (op_timeout != NULL) { @@ -1867,7 +1867,7 @@ should_cancel_recurring(const char *rsc_id, const char *action, guint interval_m static const char * should_nack_action(const char *action) { - if (pcmk_is_set(controld_globals.fsa_input_register, R_SHUTDOWN) + if (pcmk__is_set(controld_globals.fsa_input_register, R_SHUTDOWN) && pcmk__str_eq(action, PCMK_ACTION_START, pcmk__str_none)) { register_fsa_input(C_SHUTDOWN, I_SHUTDOWN, NULL); @@ -1930,7 +1930,7 @@ do_lrm_rsc_op(lrm_state_t *lrm_state, lrmd_rsc_info_t *rsc, xmlNode *msg, * Default to the OCF 1.1 name. */ if ((md != NULL) - && pcmk_is_set(md->ra_flags, ra_supports_legacy_reload)) { + && pcmk__is_set(md->ra_flags, ra_supports_legacy_reload)) { operation = PCMK_ACTION_RELOAD; } else { operation = PCMK_ACTION_RELOAD_AGENT; @@ -2311,7 +2311,7 @@ process_lrm_event(lrm_state_t *lrm_state, lrmd_event_data_t *op, crm_err("Recurring operation %s was cancelled without transition information", op_key); - } else if (pcmk_is_set(pending->flags, active_op_remove)) { + } else if (pcmk__is_set(pending->flags, active_op_remove)) { /* This recurring operation was cancelled (by us) and pending, and we * have been waiting for it to finish. */ diff --git a/daemons/controld/controld_execd_state.c b/daemons/controld/controld_execd_state.c index 7686fecdd4c..8a318620118 100644 --- a/daemons/controld/controld_execd_state.c +++ b/daemons/controld/controld_execd_state.c @@ -345,7 +345,7 @@ lrm_state_disconnect_only(lrm_state_t * lrm_state) ((lrmd_t *) lrm_state->conn)->cmds->disconnect(lrm_state->conn); - if (!pcmk_is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { + if (!pcmk__is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { removed = g_hash_table_foreach_remove(lrm_state->active_ops, fail_pending_op, lrm_state); crm_trace("Synthesized %d operation failures for %s", removed, lrm_state->node_name); @@ -585,7 +585,7 @@ crmd_remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg) crm_warn("Couldn't parse controller flags from remote request: %s", pcmk_rc_str(rc)); } - if (pcmk_is_set(flags, crm_ipc_client_response)) { + if (pcmk__is_set(flags, crm_ipc_client_response)) { int msg_id = 0; xmlNode *op_reply = pcmk__xe_create(NULL, PCMK__XE_ACK); diff --git a/daemons/controld/controld_fencing.c b/daemons/controld/controld_fencing.c index 54386fa4939..51590abaada 100644 --- a/daemons/controld/controld_fencing.c +++ b/daemons/controld/controld_fencing.c @@ -251,7 +251,7 @@ update_node_state_after_fencing(const char *target, const char *target_xml_id) node_state = create_node_state_update(peer, flags, NULL, __func__); pcmk__xe_set(node_state, PCMK_XA_ID, target_xml_id); - if (pcmk_is_set(peer->flags, pcmk__node_status_remote)) { + if (pcmk__is_set(peer->flags, pcmk__node_status_remote)) { char *now_s = pcmk__ttoa(time(NULL)); pcmk__xe_set(node_state, PCMK__XA_NODE_FENCED, now_s); @@ -409,7 +409,7 @@ fail_incompletable_stonith(pcmk__graph_t *graph) GList *lpc2 = NULL; pcmk__graph_synapse_t *synapse = (pcmk__graph_synapse_t *) lpc->data; - if (pcmk_is_set(synapse->flags, pcmk__synapse_confirmed)) { + if (pcmk__is_set(synapse->flags, pcmk__synapse_confirmed)) { continue; } @@ -417,7 +417,7 @@ fail_incompletable_stonith(pcmk__graph_t *graph) pcmk__graph_action_t *action = (pcmk__graph_action_t *) lpc2->data; if ((action->type != pcmk__cluster_graph_action) - || pcmk_is_set(action->flags, pcmk__graph_action_confirmed)) { + || pcmk__is_set(action->flags, pcmk__graph_action_confirmed)) { continue; } @@ -446,7 +446,7 @@ tengine_stonith_connection_destroy(stonith_t *st, stonith_event_t *e) { te_cleanup_stonith_history_sync(st, FALSE); - if (pcmk_is_set(controld_globals.fsa_input_register, R_ST_REQUIRED)) { + if (pcmk__is_set(controld_globals.fsa_input_register, R_ST_REQUIRED)) { crm_err("Lost fencer connection (will attempt to reconnect)"); if (!mainloop_timer_running(controld_fencer_connect_timer)) { mainloop_timer_start(controld_fencer_connect_timer); @@ -612,7 +612,7 @@ handle_fence_notification(stonith_t *st, stonith_event_t *event) } else if (pcmk__str_eq(controld_globals.dc_name, event->target, pcmk__str_null_matches|pcmk__str_casei) - && !pcmk_is_set(peer->flags, pcmk__node_status_remote)) { + && !pcmk__is_set(peer->flags, pcmk__node_status_remote)) { // Assume the target was our DC if we don't currently have one if (controld_globals.dc_name != NULL) { @@ -637,7 +637,7 @@ handle_fence_notification(stonith_t *st, stonith_event_t *event) * The connection won't necessarily drop when a remote node is fenced, * so the failure might not otherwise be detected until the next poke. */ - if (pcmk_is_set(peer->flags, pcmk__node_status_remote)) { + if (pcmk__is_set(peer->flags, pcmk__node_status_remote)) { remote_ra_fail(event->target); } @@ -691,8 +691,8 @@ controld_timer_fencer_connect(gpointer user_data) } if (rc != pcmk_ok) { - if (pcmk_is_set(controld_globals.fsa_input_register, - R_ST_REQUIRED)) { + if (pcmk__is_set(controld_globals.fsa_input_register, + R_ST_REQUIRED)) { crm_notice("Fencer connection failed (will retry): %s " QB_XS " rc=%d", pcmk_strerror(rc), rc); @@ -841,7 +841,7 @@ tengine_stonith_callback(stonith_t *stonith, stonith_callback_data_t *data) PCMK__META_STONITH_ACTION); crm_info("Fence operation %d for %s succeeded", data->call_id, target); - if (!(pcmk_is_set(action->flags, pcmk__graph_action_confirmed))) { + if (!(pcmk__is_set(action->flags, pcmk__graph_action_confirmed))) { te_action_confirmed(action, NULL); if (pcmk__str_eq(PCMK_ACTION_ON, op, pcmk__str_casei)) { const char *value = NULL; @@ -873,7 +873,8 @@ tengine_stonith_callback(stonith_t *stonith, stonith_callback_data_t *data) update_attrd(target, CRM_ATTR_DIGESTS_SECURE, value, NULL, is_remote_node); - } else if (!(pcmk_is_set(action->flags, pcmk__graph_action_sent_update))) { + } else if (!pcmk__is_set(action->flags, + pcmk__graph_action_sent_update)) { update_node_state_after_fencing(target, uuid); pcmk__set_graph_action_flags(action, pcmk__graph_action_sent_update); diff --git a/daemons/controld/controld_fsa.c b/daemons/controld/controld_fsa.c index b0d2e1dd49b..6e5c183906f 100644 --- a/daemons/controld/controld_fsa.c +++ b/daemons/controld/controld_fsa.c @@ -158,7 +158,7 @@ s_crmd_fsa(enum crmd_fsa_cause cause) = g_list_append(controld_globals.fsa_message_queue, fsa_data); } while ((controld_globals.fsa_message_queue != NULL) - && !pcmk_is_set(controld_globals.flags, controld_fsa_is_stalled)) { + && !pcmk__is_set(controld_globals.flags, controld_fsa_is_stalled)) { crm_trace("Checking messages (%d remaining)", g_list_length(controld_globals.fsa_message_queue)); @@ -186,13 +186,13 @@ s_crmd_fsa(enum crmd_fsa_cause cause) } /* logging : *before* the state is changed */ - if (pcmk_is_set(controld_globals.fsa_actions, A_ERROR)) { + if (pcmk__is_set(controld_globals.fsa_actions, A_ERROR)) { do_fsa_action(fsa_data, A_ERROR, do_log); } - if (pcmk_is_set(controld_globals.fsa_actions, A_WARN)) { + if (pcmk__is_set(controld_globals.fsa_actions, A_WARN)) { do_fsa_action(fsa_data, A_WARN, do_log); } - if (pcmk_is_set(controld_globals.fsa_actions, A_LOG)) { + if (pcmk__is_set(controld_globals.fsa_actions, A_LOG)) { do_fsa_action(fsa_data, A_LOG, do_log); } @@ -204,7 +204,7 @@ s_crmd_fsa(enum crmd_fsa_cause cause) * Remove certain actions during shutdown */ if ((globals->fsa_state == S_STOPPING) - || pcmk_is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { + || pcmk__is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { controld_clear_fsa_action_flags(startup_actions); } @@ -223,7 +223,7 @@ s_crmd_fsa(enum crmd_fsa_cause cause) if ((controld_globals.fsa_message_queue != NULL) || (controld_globals.fsa_actions != A_NOTHING) - || pcmk_is_set(controld_globals.flags, controld_fsa_is_stalled)) { + || pcmk__is_set(controld_globals.flags, controld_fsa_is_stalled)) { crm_debug("Exiting the FSA: queue=%d, fsa_actions=%" PRIx64 ", stalled=%s", @@ -259,22 +259,22 @@ s_crmd_fsa_actions(fsa_data_t * fsa_data) */ CRM_CHECK(fsa_data != NULL, return); while ((controld_globals.fsa_actions != A_NOTHING) - && !pcmk_is_set(controld_globals.flags, controld_fsa_is_stalled)) { + && !pcmk__is_set(controld_globals.flags, controld_fsa_is_stalled)) { /* regular action processing in order of action priority * * Make sure all actions that connect to required systems * are performed first */ - if (pcmk_is_set(controld_globals.fsa_actions, A_ERROR)) { + if (pcmk__is_set(controld_globals.fsa_actions, A_ERROR)) { do_fsa_action(fsa_data, A_ERROR, do_log); - } else if (pcmk_is_set(controld_globals.fsa_actions, A_WARN)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_WARN)) { do_fsa_action(fsa_data, A_WARN, do_log); - } else if (pcmk_is_set(controld_globals.fsa_actions, A_LOG)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_LOG)) { do_fsa_action(fsa_data, A_LOG, do_log); /* get out of here NOW! before anything worse happens */ - } else if (pcmk_is_set(controld_globals.fsa_actions, A_EXIT_1)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_EXIT_1)) { do_fsa_action(fsa_data, A_EXIT_1, do_exit); /* sub-system restart */ @@ -295,116 +295,120 @@ s_crmd_fsa_actions(fsa_data_t * fsa_data) do_fsa_action(fsa_data, O_TE_RESTART, do_te_control); /* essential start tasks */ - } else if (pcmk_is_set(controld_globals.fsa_actions, A_STARTUP)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_STARTUP)) { do_fsa_action(fsa_data, A_STARTUP, do_startup); - } else if (pcmk_is_set(controld_globals.fsa_actions, A_CIB_START)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_CIB_START)) { do_fsa_action(fsa_data, A_CIB_START, do_cib_control); - } else if (pcmk_is_set(controld_globals.fsa_actions, A_HA_CONNECT)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_HA_CONNECT)) { do_fsa_action(fsa_data, A_HA_CONNECT, do_ha_control); - } else if (pcmk_is_set(controld_globals.fsa_actions, A_READCONFIG)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_READCONFIG)) { do_fsa_action(fsa_data, A_READCONFIG, do_read_config); /* sub-system start/connect */ - } else if (pcmk_is_set(controld_globals.fsa_actions, A_LRM_CONNECT)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_LRM_CONNECT)) { do_fsa_action(fsa_data, A_LRM_CONNECT, do_lrm_control); - } else if (pcmk_is_set(controld_globals.fsa_actions, A_TE_START)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_TE_START)) { do_fsa_action(fsa_data, A_TE_START, do_te_control); - } else if (pcmk_is_set(controld_globals.fsa_actions, A_PE_START)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_PE_START)) { do_fsa_action(fsa_data, A_PE_START, do_pe_control); /* Timers */ - } else if (pcmk_is_set(controld_globals.fsa_actions, A_DC_TIMER_STOP)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, + A_DC_TIMER_STOP)) { do_fsa_action(fsa_data, A_DC_TIMER_STOP, do_timer_control); - } else if (pcmk_is_set(controld_globals.fsa_actions, - A_INTEGRATE_TIMER_STOP)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, + A_INTEGRATE_TIMER_STOP)) { do_fsa_action(fsa_data, A_INTEGRATE_TIMER_STOP, do_timer_control); - } else if (pcmk_is_set(controld_globals.fsa_actions, - A_INTEGRATE_TIMER_START)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, + A_INTEGRATE_TIMER_START)) { do_fsa_action(fsa_data, A_INTEGRATE_TIMER_START, do_timer_control); - } else if (pcmk_is_set(controld_globals.fsa_actions, - A_FINALIZE_TIMER_STOP)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, + A_FINALIZE_TIMER_STOP)) { do_fsa_action(fsa_data, A_FINALIZE_TIMER_STOP, do_timer_control); - } else if (pcmk_is_set(controld_globals.fsa_actions, - A_FINALIZE_TIMER_START)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, + A_FINALIZE_TIMER_START)) { do_fsa_action(fsa_data, A_FINALIZE_TIMER_START, do_timer_control); /* * Highest priority actions */ - } else if (pcmk_is_set(controld_globals.fsa_actions, A_MSG_ROUTE)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_MSG_ROUTE)) { do_fsa_action(fsa_data, A_MSG_ROUTE, do_msg_route); - } else if (pcmk_is_set(controld_globals.fsa_actions, A_RECOVER)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_RECOVER)) { do_fsa_action(fsa_data, A_RECOVER, do_recover); - } else if (pcmk_is_set(controld_globals.fsa_actions, - A_CL_JOIN_RESULT)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, + A_CL_JOIN_RESULT)) { do_fsa_action(fsa_data, A_CL_JOIN_RESULT, do_cl_join_finalize_respond); - } else if (pcmk_is_set(controld_globals.fsa_actions, - A_CL_JOIN_REQUEST)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, + A_CL_JOIN_REQUEST)) { do_fsa_action(fsa_data, A_CL_JOIN_REQUEST, do_cl_join_offer_respond); - } else if (pcmk_is_set(controld_globals.fsa_actions, A_SHUTDOWN_REQ)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_SHUTDOWN_REQ)) { do_fsa_action(fsa_data, A_SHUTDOWN_REQ, do_shutdown_req); - } else if (pcmk_is_set(controld_globals.fsa_actions, A_ELECTION_VOTE)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, + A_ELECTION_VOTE)) { do_fsa_action(fsa_data, A_ELECTION_VOTE, do_election_vote); - } else if (pcmk_is_set(controld_globals.fsa_actions, - A_ELECTION_COUNT)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, + A_ELECTION_COUNT)) { do_fsa_action(fsa_data, A_ELECTION_COUNT, do_election_count_vote); /* * High priority actions */ - } else if (pcmk_is_set(controld_globals.fsa_actions, A_STARTED)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_STARTED)) { do_fsa_action(fsa_data, A_STARTED, do_started); - } else if (pcmk_is_set(controld_globals.fsa_actions, A_CL_JOIN_QUERY)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, + A_CL_JOIN_QUERY)) { do_fsa_action(fsa_data, A_CL_JOIN_QUERY, do_cl_join_query); - } else if (pcmk_is_set(controld_globals.fsa_actions, - A_DC_TIMER_START)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, + A_DC_TIMER_START)) { do_fsa_action(fsa_data, A_DC_TIMER_START, do_timer_control); /* * Medium priority actions * - Membership */ - } else if (pcmk_is_set(controld_globals.fsa_actions, A_DC_TAKEOVER)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_DC_TAKEOVER)) { do_fsa_action(fsa_data, A_DC_TAKEOVER, do_dc_takeover); - } else if (pcmk_is_set(controld_globals.fsa_actions, A_DC_RELEASE)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_DC_RELEASE)) { do_fsa_action(fsa_data, A_DC_RELEASE, do_dc_release); - } else if (pcmk_is_set(controld_globals.fsa_actions, A_DC_JOIN_FINAL)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, + A_DC_JOIN_FINAL)) { do_fsa_action(fsa_data, A_DC_JOIN_FINAL, do_dc_join_final); - } else if (pcmk_is_set(controld_globals.fsa_actions, - A_ELECTION_CHECK)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, + A_ELECTION_CHECK)) { do_fsa_action(fsa_data, A_ELECTION_CHECK, do_election_check); - } else if (pcmk_is_set(controld_globals.fsa_actions, - A_ELECTION_START)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, + A_ELECTION_START)) { do_fsa_action(fsa_data, A_ELECTION_START, do_election_vote); - } else if (pcmk_is_set(controld_globals.fsa_actions, - A_DC_JOIN_OFFER_ALL)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, + A_DC_JOIN_OFFER_ALL)) { do_fsa_action(fsa_data, A_DC_JOIN_OFFER_ALL, do_dc_join_offer_all); - } else if (pcmk_is_set(controld_globals.fsa_actions, - A_DC_JOIN_OFFER_ONE)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, + A_DC_JOIN_OFFER_ONE)) { do_fsa_action(fsa_data, A_DC_JOIN_OFFER_ONE, do_dc_join_offer_one); - } else if (pcmk_is_set(controld_globals.fsa_actions, - A_DC_JOIN_PROCESS_REQ)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, + A_DC_JOIN_PROCESS_REQ)) { do_fsa_action(fsa_data, A_DC_JOIN_PROCESS_REQ, do_dc_join_filter_offer); - } else if (pcmk_is_set(controld_globals.fsa_actions, - A_DC_JOIN_PROCESS_ACK)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, + A_DC_JOIN_PROCESS_ACK)) { do_fsa_action(fsa_data, A_DC_JOIN_PROCESS_ACK, do_dc_join_ack); - } else if (pcmk_is_set(controld_globals.fsa_actions, - A_DC_JOIN_FINALIZE)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, + A_DC_JOIN_FINALIZE)) { do_fsa_action(fsa_data, A_DC_JOIN_FINALIZE, do_dc_join_finalize); - } else if (pcmk_is_set(controld_globals.fsa_actions, - A_CL_JOIN_ANNOUNCE)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, + A_CL_JOIN_ANNOUNCE)) { do_fsa_action(fsa_data, A_CL_JOIN_ANNOUNCE, do_cl_join_announce); /* @@ -412,39 +416,40 @@ s_crmd_fsa_actions(fsa_data_t * fsa_data) * Make sure the CIB is always updated before invoking the * scheduler, and the scheduler before the transition engine. */ - } else if (pcmk_is_set(controld_globals.fsa_actions, A_TE_HALT)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_TE_HALT)) { do_fsa_action(fsa_data, A_TE_HALT, do_te_invoke); - } else if (pcmk_is_set(controld_globals.fsa_actions, A_TE_CANCEL)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_TE_CANCEL)) { do_fsa_action(fsa_data, A_TE_CANCEL, do_te_invoke); - } else if (pcmk_is_set(controld_globals.fsa_actions, A_LRM_INVOKE)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_LRM_INVOKE)) { do_fsa_action(fsa_data, A_LRM_INVOKE, do_lrm_invoke); - } else if (pcmk_is_set(controld_globals.fsa_actions, A_PE_INVOKE)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_PE_INVOKE)) { do_fsa_action(fsa_data, A_PE_INVOKE, do_pe_invoke); - } else if (pcmk_is_set(controld_globals.fsa_actions, A_TE_INVOKE)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_TE_INVOKE)) { do_fsa_action(fsa_data, A_TE_INVOKE, do_te_invoke); /* Shutdown actions */ - } else if (pcmk_is_set(controld_globals.fsa_actions, A_DC_RELEASED)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_DC_RELEASED)) { do_fsa_action(fsa_data, A_DC_RELEASED, do_dc_release); - } else if (pcmk_is_set(controld_globals.fsa_actions, A_PE_STOP)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_PE_STOP)) { do_fsa_action(fsa_data, A_PE_STOP, do_pe_control); - } else if (pcmk_is_set(controld_globals.fsa_actions, A_TE_STOP)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_TE_STOP)) { do_fsa_action(fsa_data, A_TE_STOP, do_te_control); - } else if (pcmk_is_set(controld_globals.fsa_actions, A_SHUTDOWN)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_SHUTDOWN)) { do_fsa_action(fsa_data, A_SHUTDOWN, do_shutdown); - } else if (pcmk_is_set(controld_globals.fsa_actions, + } else if (pcmk__is_set(controld_globals.fsa_actions, A_LRM_DISCONNECT)) { do_fsa_action(fsa_data, A_LRM_DISCONNECT, do_lrm_control); - } else if (pcmk_is_set(controld_globals.fsa_actions, A_HA_DISCONNECT)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, + A_HA_DISCONNECT)) { do_fsa_action(fsa_data, A_HA_DISCONNECT, do_ha_control); - } else if (pcmk_is_set(controld_globals.fsa_actions, A_CIB_STOP)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_CIB_STOP)) { do_fsa_action(fsa_data, A_CIB_STOP, do_cib_control); - } else if (pcmk_is_set(controld_globals.fsa_actions, A_STOP)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_STOP)) { do_fsa_action(fsa_data, A_STOP, do_stop); /* exit gracefully */ - } else if (pcmk_is_set(controld_globals.fsa_actions, A_EXIT_0)) { + } else if (pcmk__is_set(controld_globals.fsa_actions, A_EXIT_0)) { do_fsa_action(fsa_data, A_EXIT_0, do_exit); /* Error checking and reporting */ @@ -598,7 +603,7 @@ do_state_transition(enum crmd_fsa_state cur_state, controld_reset_counter_election_timer(); purge_stonith_cleanup(); - if (pcmk_is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { + if (pcmk__is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { crm_info("(Re)Issuing shutdown request now" " that we have a new DC"); controld_set_fsa_action_flags(A_SHUTDOWN_REQ); } @@ -648,7 +653,7 @@ do_state_transition(enum crmd_fsa_state cur_state, case S_IDLE: CRM_LOG_ASSERT(AM_I_DC); - if (pcmk_is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { + if (pcmk__is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { crm_info("(Re)Issuing shutdown request now" " that we are the DC"); controld_set_fsa_action_flags(A_SHUTDOWN_REQ); } diff --git a/daemons/controld/controld_fsa.h b/daemons/controld/controld_fsa.h index 29cad93e795..5d3573dd624 100644 --- a/daemons/controld/controld_fsa.h +++ b/daemons/controld/controld_fsa.h @@ -496,8 +496,8 @@ void controld_destroy_fsa_trigger(void); void free_max_generation(void); -# define AM_I_DC pcmk_is_set(controld_globals.fsa_input_register, R_THE_DC) -# define controld_trigger_fsa() controld_trigger_fsa_as(__func__, __LINE__) +#define AM_I_DC pcmk__is_set(controld_globals.fsa_input_register, R_THE_DC) +#define controld_trigger_fsa() controld_trigger_fsa_as(__func__, __LINE__) void controld_trigger_fsa_as(const char *fn, int line); diff --git a/daemons/controld/controld_join_client.c b/daemons/controld/controld_join_client.c index e831ceee873..0abeb7ae1fd 100644 --- a/daemons/controld/controld_join_client.c +++ b/daemons/controld/controld_join_client.c @@ -78,7 +78,7 @@ do_cl_join_announce(long long action, return; } - if (!pcmk_is_set(controld_globals.fsa_input_register, R_STARTING)) { + if (!pcmk__is_set(controld_globals.fsa_input_register, R_STARTING)) { /* send as a broadcast */ xmlNode *req = pcmk__new_request(pcmk_ipc_controld, CRM_SYSTEM_CRMD, NULL, CRM_SYSTEM_DC, @@ -336,7 +336,7 @@ do_cl_join_finalize_respond(long long action, * clones and end up with multiple active instances on the machine. */ if (first_join - && !pcmk_is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { + && !pcmk__is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { first_join = FALSE; if (start_state) { diff --git a/daemons/controld/controld_join_dc.c b/daemons/controld/controld_join_dc.c index 8b8a7bf0a4f..ba2b751be84 100644 --- a/daemons/controld/controld_join_dc.c +++ b/daemons/controld/controld_join_dc.c @@ -161,7 +161,7 @@ crm_update_peer_join(const char *source, pcmk__node_status_t *node, CRM_CHECK(node != NULL, return); /* Remote nodes do not participate in joins */ - if (pcmk_is_set(node->flags, pcmk__node_status_remote)) { + if (pcmk__is_set(node->flags, pcmk__node_status_remote)) { return; } @@ -240,8 +240,8 @@ create_dc_message(const char *join_op, const char *host_to) * joining node from fencing the old DC if it becomes the new DC. */ pcmk__xe_set_bool_attr(msg, PCMK__XA_DC_LEAVING, - pcmk_is_set(controld_globals.fsa_input_register, - R_SHUTDOWN)); + pcmk__is_set(controld_globals.fsa_input_register, + R_SHUTDOWN)); return msg; } @@ -654,7 +654,7 @@ do_dc_join_finalize(long long action, return; } - if (pcmk_is_set(controld_globals.fsa_input_register, R_HAVE_CIB)) { + if (pcmk__is_set(controld_globals.fsa_input_register, R_HAVE_CIB)) { // Send our CIB out to everyone sync_from = pcmk__str_copy(controld_globals.cluster->priv->node_name); } else { @@ -833,7 +833,7 @@ do_dc_join_ack(long long action, } // Delete relevant parts of node's current executor state from CIB - if (pcmk_is_set(controld_globals.flags, controld_shutdown_lock_enabled)) { + if (pcmk__is_set(controld_globals.flags, controld_shutdown_lock_enabled)) { section = controld_section_lrm_unlocked; } controld_node_state_deletion_strings(join_from, section, &xpath, NULL); @@ -1015,7 +1015,7 @@ check_join_state(enum crmd_fsa_state cur_state, const char *source) } } else if (cur_state == S_FINALIZE_JOIN) { - if (!pcmk_is_set(controld_globals.fsa_input_register, R_HAVE_CIB)) { + if (!pcmk__is_set(controld_globals.fsa_input_register, R_HAVE_CIB)) { crm_debug("join-%d: Delaying finalization until we have CIB " QB_XS " state=%s for=%s", current_join_id, fsa_state2string(cur_state), source); diff --git a/daemons/controld/controld_membership.c b/daemons/controld/controld_membership.c index 72913341815..a761aaf512f 100644 --- a/daemons/controld/controld_membership.c +++ b/daemons/controld/controld_membership.c @@ -138,7 +138,7 @@ create_node_state_update(pcmk__node_status_t *node, int flags, node_state = pcmk__xe_create(parent, PCMK__XE_NODE_STATE); - if (pcmk_is_set(node->flags, pcmk__node_status_remote)) { + if (pcmk__is_set(node->flags, pcmk__node_status_remote)) { pcmk__xe_set_bool_attr(node_state, PCMK_XA_REMOTE_NODE, true); } @@ -165,7 +165,7 @@ create_node_state_update(pcmk__node_status_t *node, int flags, } } - if (!pcmk_is_set(node->flags, pcmk__node_status_remote)) { + if (!pcmk__is_set(node->flags, pcmk__node_status_remote)) { if (flags & node_update_peer) { if (compare_version(controld_globals.dc_version, "3.18.0") >= 0) { // A value 0 means the peer is offline in CPG. @@ -174,7 +174,7 @@ create_node_state_update(pcmk__node_status_t *node, int flags, } else { // @COMPAT DCs < 2.1.7 use online/offline rather than timestamp value = PCMK_VALUE_OFFLINE; - if (pcmk_is_set(node->processes, crm_get_cluster_proc())) { + if (pcmk__is_set(node->processes, crm_get_cluster_proc())) { value = PCMK_VALUE_ONLINE; } pcmk__xe_set(node_state, PCMK_XA_CRMD, value); @@ -314,7 +314,7 @@ populate_cib_nodes(enum node_update_flags flags, const char *source) xmlNode *node_list = pcmk__xe_create(NULL, PCMK_XE_NODES); #if SUPPORT_COROSYNC - if (!pcmk_is_set(flags, node_update_quick) + if (!pcmk__is_set(flags, node_update_quick) && (pcmk_get_cluster_layer() == pcmk_cluster_layer_corosync)) { from_hashtable = pcmk__corosync_add_nodes(node_list); @@ -415,7 +415,7 @@ cib_quorum_update_complete(xmlNode * msg, int call_id, int rc, xmlNode * output, void crm_update_quorum(gboolean quorum, gboolean force_update) { - bool has_quorum = pcmk_is_set(controld_globals.flags, controld_has_quorum); + bool has_quorum = pcmk__is_set(controld_globals.flags, controld_has_quorum); if (quorum) { controld_set_global_flags(controld_ever_had_quorum); diff --git a/daemons/controld/controld_messages.c b/daemons/controld/controld_messages.c index 876a07bcf0a..32a43d01889 100644 --- a/daemons/controld/controld_messages.c +++ b/daemons/controld/controld_messages.c @@ -923,8 +923,8 @@ handle_node_info_request(const xmlNode *msg) // Add whether current partition has quorum pcmk__xe_set_bool_attr(reply_data, PCMK_XA_HAVE_QUORUM, - pcmk_is_set(controld_globals.flags, - controld_has_quorum)); + pcmk__is_set(controld_globals.flags, + controld_has_quorum)); /* Check whether client requested node info by ID and/or name * @@ -949,8 +949,8 @@ handle_node_info_request(const xmlNode *msg) pcmk__xe_set(reply_data, PCMK_XA_UNAME, node->name); pcmk__xe_set(reply_data, PCMK_XA_CRMD, node->state); pcmk__xe_set_bool_attr(reply_data, PCMK_XA_REMOTE_NODE, - pcmk_is_set(node->flags, - pcmk__node_status_remote)); + pcmk__is_set(node->flags, + pcmk__node_status_remote)); } // Send reply @@ -996,7 +996,7 @@ handle_shutdown_self_ack(xmlNode *stored_msg) { const char *host_from = pcmk__xe_get(stored_msg, PCMK__XA_SRC); - if (pcmk_is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { + if (pcmk__is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { // The expected case -- we initiated own shutdown sequence crm_info("Shutting down controller"); return I_STOP; @@ -1037,7 +1037,7 @@ handle_shutdown_ack(xmlNode *stored_msg) if (pcmk__str_eq(host_from, controld_globals.dc_name, pcmk__str_null_matches|pcmk__str_casei)) { - if (pcmk_is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { + if (pcmk__is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { crm_info("Shutting down controller after confirmation from %s", host_from); } else { diff --git a/daemons/controld/controld_metadata.c b/daemons/controld/controld_metadata.c index e35b48bc8b3..8b5aa0db84a 100644 --- a/daemons/controld/controld_metadata.c +++ b/daemons/controld/controld_metadata.c @@ -195,7 +195,7 @@ controld_cache_metadata(GHashTable *mdc, const lrmd_rsc_info_t *rsc, reason = "Could not allocate memory"; goto err; } - if (pcmk_is_set(p->rap_flags, ra_param_private)) { + if (pcmk__is_set(p->rap_flags, ra_param_private)) { any_private_params = true; } md->ra_params = g_list_prepend(md->ra_params, p); @@ -254,7 +254,7 @@ controld_get_rsc_metadata(lrm_state_t *lrm_state, const lrmd_rsc_info_t *rsc, CRM_CHECK((lrm_state != NULL) && (rsc != NULL), return NULL); - if (pcmk_is_set(source, controld_metadata_from_cache)) { + if (pcmk__is_set(source, controld_metadata_from_cache)) { key = crm_generate_ra_key(rsc->standard, rsc->provider, rsc->type); if (key != NULL) { metadata = g_hash_table_lookup(lrm_state->metadata_cache, key); @@ -270,7 +270,7 @@ controld_get_rsc_metadata(lrm_state_t *lrm_state, const lrmd_rsc_info_t *rsc, } } - if (!pcmk_is_set(source, controld_metadata_from_agent)) { + if (!pcmk__is_set(source, controld_metadata_from_agent)) { return NULL; } diff --git a/daemons/controld/controld_remote_ra.c b/daemons/controld/controld_remote_ra.c index 6b071337ba5..84cee77c695 100644 --- a/daemons/controld/controld_remote_ra.c +++ b/daemons/controld/controld_remote_ra.c @@ -240,7 +240,7 @@ should_purge_attributes(pcmk__node_status_t *node) static enum controld_section_e section_to_delete(bool purge) { - if (pcmk_is_set(controld_globals.flags, controld_shutdown_lock_enabled)) { + if (pcmk__is_set(controld_globals.flags, controld_shutdown_lock_enabled)) { if (purge) { return controld_section_all_unlocked; } else { @@ -434,7 +434,7 @@ check_remote_node_state(const remote_ra_cmd_t *cmd) remote_ra_data_t *ra_data = lrm_state? lrm_state->remote_ra_data : NULL; if (ra_data) { - if (!pcmk_is_set(ra_data->status, takeover_complete)) { + if (!pcmk__is_set(ra_data->status, takeover_complete)) { /* Stop means down if we didn't successfully migrate elsewhere */ remote_node_down(cmd->rsc_id, DOWN_KEEP_LRM); } else if (AM_I_DC == FALSE) { @@ -477,7 +477,9 @@ report_remote_ra_result(remote_ra_cmd_t * cmd) lrmd__set_result(&op, cmd->result.exit_status, cmd->result.execution_status, cmd->result.exit_reason); - if (pcmk_is_set(cmd->status, cmd_reported_success) && !pcmk__result_ok(&(cmd->result))) { + if (pcmk__is_set(cmd->status, cmd_reported_success) + && !pcmk__result_ok(&(cmd->result))) { + op.t_rcchange = time(NULL); /* This edge case will likely never ever occur, but if it does the * result is that a failure will not be processed correctly. This is only @@ -669,7 +671,7 @@ remote_lrm_op_callback(lrmd_event_data_t * op) if (op->type == lrmd_event_new_client) { // Another client has connected to the remote daemon - if (pcmk_is_set(ra_data->status, expect_takeover)) { + if (pcmk__is_set(ra_data->status, expect_takeover)) { // Great, we knew this was coming lrm_remote_clear_flags(lrm_state, expect_takeover); lrm_remote_set_flags(lrm_state, takeover_complete); @@ -687,7 +689,7 @@ remote_lrm_op_callback(lrmd_event_data_t * op) /* filter all EXEC events up */ if (op->type == lrmd_event_exec_complete) { - if (pcmk_is_set(ra_data->status, takeover_complete)) { + if (pcmk__is_set(ra_data->status, takeover_complete)) { crm_debug("ignoring event, this connection is taken over by another node"); } else { lrm_op_callback(op); @@ -697,7 +699,7 @@ remote_lrm_op_callback(lrmd_event_data_t * op) if ((op->type == lrmd_event_disconnect) && (ra_data->cur_cmd == NULL)) { - if (!pcmk_is_set(ra_data->status, remote_active)) { + if (!pcmk__is_set(ra_data->status, remote_active)) { crm_debug("Disconnection from Pacemaker Remote node %s complete", lrm_state->node_name); @@ -777,7 +779,7 @@ remote_lrm_op_callback(lrmd_event_data_t * op) /* Only report success the first time, after that only worry about failures. * For this function, if we get the poke pack, it is always a success. Pokes * only fail if the send fails, or the response times out. */ - if (!pcmk_is_set(cmd->status, cmd_reported_success)) { + if (!pcmk__is_set(cmd->status, cmd_reported_success)) { pcmk__set_result(&(cmd->result), PCMK_OCF_OK, PCMK_EXEC_DONE, NULL); report_remote_ra_result(cmd); cmd_set_flags(cmd, cmd_reported_success); @@ -786,7 +788,7 @@ remote_lrm_op_callback(lrmd_event_data_t * op) crm_debug("Remote poke event matched %s action", cmd->action); /* success, keep rescheduling if interval is present. */ - if (cmd->interval_ms && !pcmk_is_set(cmd->status, cmd_cancel)) { + if (cmd->interval_ms && !pcmk__is_set(cmd->status, cmd_cancel)) { ra_data->recurring_cmds = g_list_append(ra_data->recurring_cmds, cmd); cmd->interval_id = pcmk__create_timer(cmd->interval_ms, recurring_helper, cmd); @@ -797,8 +799,9 @@ remote_lrm_op_callback(lrmd_event_data_t * op) } else if ((op->type == lrmd_event_disconnect) && pcmk__str_eq(cmd->action, PCMK_ACTION_MONITOR, pcmk__str_casei)) { - if (pcmk_is_set(ra_data->status, remote_active) && - !pcmk_is_set(cmd->status, cmd_cancel)) { + if (pcmk__is_set(ra_data->status, remote_active) + && !pcmk__is_set(cmd->status, cmd_cancel)) { + pcmk__set_result(&(cmd->result), PCMK_OCF_UNKNOWN_ERROR, PCMK_EXEC_ERROR, "Remote connection unexpectedly dropped " @@ -830,7 +833,7 @@ handle_remote_ra_stop(lrm_state_t * lrm_state, remote_ra_cmd_t * cmd) pcmk__assert(lrm_state != NULL); ra_data = lrm_state->remote_ra_data; - if (!pcmk_is_set(ra_data->status, takeover_complete)) { + if (!pcmk__is_set(ra_data->status, takeover_complete)) { /* delete pending ops when ever the remote connection is intentionally stopped */ g_hash_table_remove_all(lrm_state->active_ops); } else { @@ -958,7 +961,7 @@ handle_remote_ra_exec(gpointer user_data) } else if (!strcmp(cmd->action, PCMK_ACTION_STOP)) { - if (pcmk_is_set(ra_data->status, expect_takeover)) { + if (pcmk__is_set(ra_data->status, expect_takeover)) { /* Briefly wait on stop for an expected takeover to occur. If * the takeover does not occur during the wait, that's fine; it * just means that the remote node's resource history will be @@ -1181,8 +1184,8 @@ handle_dup_monitor(remote_ra_data_t *ra_data, guint interval_ms, } if (ra_data->cur_cmd && - !pcmk_is_set(ra_data->cur_cmd->status, cmd_cancel) && - (ra_data->cur_cmd->interval_ms == interval_ms) + !pcmk__is_set(ra_data->cur_cmd->status, cmd_cancel) + && (ra_data->cur_cmd->interval_ms == interval_ms) && pcmk__str_eq(ra_data->cur_cmd->action, PCMK_ACTION_MONITOR, pcmk__str_casei)) { @@ -1222,7 +1225,7 @@ handle_dup_monitor(remote_ra_data_t *ra_data, guint interval_ms, } /* if we've already reported success, generate a new call id */ - if (pcmk_is_set(cmd->status, cmd_reported_success)) { + if (pcmk__is_set(cmd->status, cmd_reported_success)) { cmd->start_time = time(NULL); cmd->call_id = generate_callid(); cmd_clear_flags(cmd, cmd_reported_success); @@ -1448,6 +1451,7 @@ remote_ra_process_maintenance_nodes(xmlNode *xml) node != NULL; node = pcmk__xe_next(node, PCMK_XE_NODE)) { lrm_state_t *lrm_state = NULL; + const remote_ra_data_t *ra_data = NULL; const char *id = pcmk__xe_id(node); cnt++; @@ -1456,9 +1460,10 @@ remote_ra_process_maintenance_nodes(xmlNode *xml) } lrm_state = controld_get_executor_state(id, false); + ra_data = (const remote_ra_data_t *) lrm_state->remote_ra_data; - if (lrm_state && lrm_state->remote_ra_data && - pcmk_is_set(((remote_ra_data_t *) lrm_state->remote_ra_data)->status, remote_active)) { + if ((lrm_state != NULL) && (lrm_state->remote_ra_data != NULL) + && pcmk__is_set(ra_data->status, remote_active)) { const char *in_maint_s = NULL; int in_maint; @@ -1480,12 +1485,12 @@ gboolean remote_ra_is_in_maintenance(lrm_state_t * lrm_state) { remote_ra_data_t *ra_data = lrm_state->remote_ra_data; - return pcmk_is_set(ra_data->status, remote_in_maint); + return pcmk__is_set(ra_data->status, remote_in_maint); } gboolean remote_ra_controlling_guest(lrm_state_t * lrm_state) { remote_ra_data_t *ra_data = lrm_state->remote_ra_data; - return pcmk_is_set(ra_data->status, controlling_guest); + return pcmk__is_set(ra_data->status, controlling_guest); } diff --git a/daemons/controld/controld_schedulerd.c b/daemons/controld/controld_schedulerd.c index 685d35160bf..2e5d723e3fe 100644 --- a/daemons/controld/controld_schedulerd.c +++ b/daemons/controld/controld_schedulerd.c @@ -89,7 +89,7 @@ handle_disconnect(void) // If we aren't connected to the scheduler, we can't expect a reply controld_expect_sched_reply(NULL); - if (pcmk_is_set(controld_globals.fsa_input_register, R_PE_REQUIRED)) { + if (pcmk__is_set(controld_globals.fsa_input_register, R_PE_REQUIRED)) { int rc = pcmk_ok; char *uuid_str = crm_generate_uuid(); @@ -221,13 +221,13 @@ do_pe_control(long long action, enum crmd_fsa_state cur_state, enum crmd_fsa_input current_input, fsa_data_t * msg_data) { - if (pcmk_is_set(action, A_PE_STOP)) { + if (pcmk__is_set(action, A_PE_STOP)) { controld_clear_fsa_input_flags(R_PE_REQUIRED); pcmk_disconnect_ipc(schedulerd_api); handle_disconnect(); } - if (pcmk_is_set(action, A_PE_START) - && !pcmk_is_set(controld_globals.fsa_input_register, R_PE_CONNECTED)) { + if (pcmk__is_set(action, A_PE_START) + && !pcmk__is_set(controld_globals.fsa_input_register, R_PE_CONNECTED)) { if (cur_state == S_STOPPING) { crm_info("Ignoring request to connect to scheduler while shutting down"); @@ -336,8 +336,8 @@ do_pe_invoke(long long action, return; } - if (!pcmk_is_set(controld_globals.fsa_input_register, R_PE_CONNECTED)) { - if (pcmk_is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { + if (!pcmk__is_set(controld_globals.fsa_input_register, R_PE_CONNECTED)) { + if (pcmk__is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { crm_err("Cannot shut down gracefully without the scheduler"); register_fsa_input_before(C_FSA_INTERNAL, I_TERMINATE, NULL); @@ -355,7 +355,7 @@ do_pe_invoke(long long action, fsa_state2string(cur_state)); return; } - if (!pcmk_is_set(controld_globals.fsa_input_register, R_HAVE_CIB)) { + if (!pcmk__is_set(controld_globals.fsa_input_register, R_HAVE_CIB)) { crm_err("Attempted to invoke scheduler without consistent Cluster Information Base!"); /* start the join from scratch */ @@ -464,8 +464,8 @@ do_pe_invoke_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, void return; } else if (!AM_I_DC - || !pcmk_is_set(controld_globals.fsa_input_register, - R_PE_CONNECTED)) { + || !pcmk__is_set(controld_globals.fsa_input_register, + R_PE_CONNECTED)) { crm_debug("No need to invoke the scheduler anymore"); return; @@ -492,12 +492,12 @@ do_pe_invoke_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, void pcmk__xe_set(output, PCMK_XA_DC_UUID, controld_globals.our_uuid); pcmk__xe_set_bool_attr(output, PCMK_XA_HAVE_QUORUM, - pcmk_is_set(controld_globals.flags, - controld_has_quorum)); + pcmk__is_set(controld_globals.flags, + controld_has_quorum)); force_local_option(output, PCMK_OPT_HAVE_WATCHDOG, pcmk__btoa(watchdog)); - if (pcmk_is_set(controld_globals.flags, controld_ever_had_quorum) + if (pcmk__is_set(controld_globals.flags, controld_ever_had_quorum) && !pcmk__cluster_has_quorum()) { pcmk__xe_set_int(output, PCMK_XA_NO_QUORUM_PANIC, 1); diff --git a/daemons/controld/controld_te_actions.c b/daemons/controld/controld_te_actions.c index 642d60d55bd..22b00406711 100644 --- a/daemons/controld/controld_te_actions.c +++ b/daemons/controld/controld_te_actions.c @@ -449,7 +449,7 @@ execute_rsc_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) pcmk__update_graph(controld_globals.transition_graph, action); trigger_graph(); - } else if (pcmk_is_set(action->flags, pcmk__graph_action_confirmed)) { + } else if (pcmk__is_set(action->flags, pcmk__graph_action_confirmed)) { crm_debug("Action %d: %s %s on %s(timeout %dms) was already confirmed.", action->id, task, task_uuid, on_node, action->timeout); } else { @@ -662,7 +662,7 @@ graph_action_allowed(pcmk__graph_t *graph, pcmk__graph_action_t *action) void te_action_confirmed(pcmk__graph_action_t *action, pcmk__graph_t *graph) { - if (!pcmk_is_set(action->flags, pcmk__graph_action_confirmed)) { + if (!pcmk__is_set(action->flags, pcmk__graph_action_confirmed)) { if ((action->type == pcmk__rsc_graph_action) && (pcmk__xe_get(action->xml, PCMK__META_ON_NODE) != NULL)) { te_update_job_count(action, -1); @@ -736,7 +736,7 @@ notify_crmd(pcmk__graph_t *graph) case pcmk__graph_shutdown: type = "shutdown"; - if (pcmk_is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { + if (pcmk__is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { event = I_STOP; } else { diff --git a/daemons/controld/controld_te_events.c b/daemons/controld/controld_te_events.c index 1b00e8acc65..a6334f8d16e 100644 --- a/daemons/controld/controld_te_events.c +++ b/daemons/controld/controld_te_events.c @@ -108,7 +108,7 @@ fail_incompletable_actions(pcmk__graph_t *graph, const char *down_node) pcmk__graph_action_t *action = (pcmk__graph_action_t *) gIter2->data; if ((action->type == pcmk__pseudo_graph_action) - || pcmk_is_set(action->flags, pcmk__graph_action_confirmed)) { + || pcmk__is_set(action->flags, pcmk__graph_action_confirmed)) { continue; } else if (action->type == pcmk__cluster_graph_action) { const char *task = pcmk__xe_get(action->xml, PCMK_XA_OPERATION); @@ -137,7 +137,7 @@ fail_incompletable_actions(pcmk__graph_t *graph, const char *down_node) stop_te_timer(action); pcmk__update_graph(graph, action); - if (pcmk_is_set(synapse->flags, pcmk__synapse_executed)) { + if (pcmk__is_set(synapse->flags, pcmk__synapse_executed)) { crm_notice("Action %d (%s) was pending on %s (offline)", action->id, pcmk__xe_get(action->xml, @@ -395,7 +395,7 @@ match_down_event(const char *target) gIter2 = gIter2->next) { match = (pcmk__graph_action_t *) gIter2->data; - if (pcmk_is_set(match->flags, pcmk__graph_action_executed)) { + if (pcmk__is_set(match->flags, pcmk__graph_action_executed)) { xpath_ret = pcmk__xpath_search(match->xml->doc, xpath); if (pcmk__xpath_num_results(xpath_ret) == 0) { match = NULL; @@ -528,7 +528,7 @@ process_graph_event(xmlNode *event, const char *event_node) abort_transition(PCMK_SCORE_INFINITY, pcmk__graph_restart, "Unknown event", event); - } else if (pcmk_is_set(action->flags, pcmk__graph_action_confirmed)) { + } else if (pcmk__is_set(action->flags, pcmk__graph_action_confirmed)) { /* Nothing further needs to be done if the action has already been * confirmed. This can happen e.g. when processing both an * "xxx_last_0" or "xxx_last_failure_0" record as well as the main @@ -554,7 +554,7 @@ process_graph_event(xmlNode *event, const char *event_node) stop_te_timer(action); te_action_confirmed(action, controld_globals.transition_graph); - if (pcmk_is_set(action->flags, pcmk__graph_action_failed)) { + if (pcmk__is_set(action->flags, pcmk__graph_action_failed)) { abort_transition(action->synapse->priority + 1, pcmk__graph_restart, "Event failed", event); } diff --git a/daemons/controld/controld_te_utils.c b/daemons/controld/controld_te_utils.c index 3b360e91d5e..4cbbae7c1f4 100644 --- a/daemons/controld/controld_te_utils.c +++ b/daemons/controld/controld_te_utils.c @@ -263,7 +263,7 @@ controld_node_pending_timer(const pcmk__node_status_t *node) * already part of CPG, or PCMK_OPT_NODE_PENDING_TIMEOUT is disabled, free * any node pending timer for it. */ - if (pcmk_is_set(node->flags, pcmk__node_status_remote) + if (pcmk__is_set(node->flags, pcmk__node_status_remote) || (node->when_member <= 1) || (node->when_online > 0) || (controld_globals.node_pending_timeout == 0)) { diff --git a/daemons/controld/controld_transition.c b/daemons/controld/controld_transition.c index 711bd887091..e52b45f28b4 100644 --- a/daemons/controld/controld_transition.c +++ b/daemons/controld/controld_transition.c @@ -35,7 +35,7 @@ do_te_control(long long action, cib_t *cib_conn = controld_globals.cib_conn; gboolean init_ok = TRUE; - if (pcmk_is_set(action, A_TE_STOP)) { + if (pcmk__is_set(action, A_TE_STOP)) { pcmk__free_graph(controld_globals.transition_graph); controld_globals.transition_graph = NULL; @@ -52,8 +52,8 @@ do_te_control(long long action, if ((action & A_TE_START) == 0) { return; - } else if (pcmk_is_set(controld_globals.fsa_input_register, - R_TE_CONNECTED)) { + } else if (pcmk__is_set(controld_globals.fsa_input_register, + R_TE_CONNECTED)) { crm_debug("The transitioner is already active"); return; @@ -99,7 +99,7 @@ do_te_invoke(long long action, if (!AM_I_DC || ((controld_globals.fsa_state != S_TRANSITION_ENGINE) - && pcmk_is_set(action, A_TE_INVOKE))) { + && pcmk__is_set(action, A_TE_INVOKE))) { crm_notice("No need to invoke the TE (%s) in state %s", fsa_action2string(action), fsa_state2string(controld_globals.fsa_state)); diff --git a/daemons/controld/controld_utils.c b/daemons/controld/controld_utils.c index 5dc302d8e61..196b106a446 100644 --- a/daemons/controld/controld_utils.c +++ b/daemons/controld/controld_utils.c @@ -476,73 +476,73 @@ fsa_dump_inputs(int log_level, const char *text, long long input_register) text = "Input register contents:"; } - if (pcmk_is_set(input_register, R_THE_DC)) { + if (pcmk__is_set(input_register, R_THE_DC)) { crm_trace("%s %.16llx (R_THE_DC)", text, R_THE_DC); } - if (pcmk_is_set(input_register, R_STARTING)) { + if (pcmk__is_set(input_register, R_STARTING)) { crm_trace("%s %.16llx (R_STARTING)", text, R_STARTING); } - if (pcmk_is_set(input_register, R_SHUTDOWN)) { + if (pcmk__is_set(input_register, R_SHUTDOWN)) { crm_trace("%s %.16llx (R_SHUTDOWN)", text, R_SHUTDOWN); } - if (pcmk_is_set(input_register, R_STAYDOWN)) { + if (pcmk__is_set(input_register, R_STAYDOWN)) { crm_trace("%s %.16llx (R_STAYDOWN)", text, R_STAYDOWN); } - if (pcmk_is_set(input_register, R_JOIN_OK)) { + if (pcmk__is_set(input_register, R_JOIN_OK)) { crm_trace("%s %.16llx (R_JOIN_OK)", text, R_JOIN_OK); } - if (pcmk_is_set(input_register, R_READ_CONFIG)) { + if (pcmk__is_set(input_register, R_READ_CONFIG)) { crm_trace("%s %.16llx (R_READ_CONFIG)", text, R_READ_CONFIG); } - if (pcmk_is_set(input_register, R_INVOKE_PE)) { + if (pcmk__is_set(input_register, R_INVOKE_PE)) { crm_trace("%s %.16llx (R_INVOKE_PE)", text, R_INVOKE_PE); } - if (pcmk_is_set(input_register, R_CIB_CONNECTED)) { + if (pcmk__is_set(input_register, R_CIB_CONNECTED)) { crm_trace("%s %.16llx (R_CIB_CONNECTED)", text, R_CIB_CONNECTED); } - if (pcmk_is_set(input_register, R_PE_CONNECTED)) { + if (pcmk__is_set(input_register, R_PE_CONNECTED)) { crm_trace("%s %.16llx (R_PE_CONNECTED)", text, R_PE_CONNECTED); } - if (pcmk_is_set(input_register, R_TE_CONNECTED)) { + if (pcmk__is_set(input_register, R_TE_CONNECTED)) { crm_trace("%s %.16llx (R_TE_CONNECTED)", text, R_TE_CONNECTED); } - if (pcmk_is_set(input_register, R_LRM_CONNECTED)) { + if (pcmk__is_set(input_register, R_LRM_CONNECTED)) { crm_trace("%s %.16llx (R_LRM_CONNECTED)", text, R_LRM_CONNECTED); } - if (pcmk_is_set(input_register, R_CIB_REQUIRED)) { + if (pcmk__is_set(input_register, R_CIB_REQUIRED)) { crm_trace("%s %.16llx (R_CIB_REQUIRED)", text, R_CIB_REQUIRED); } - if (pcmk_is_set(input_register, R_PE_REQUIRED)) { + if (pcmk__is_set(input_register, R_PE_REQUIRED)) { crm_trace("%s %.16llx (R_PE_REQUIRED)", text, R_PE_REQUIRED); } - if (pcmk_is_set(input_register, R_TE_REQUIRED)) { + if (pcmk__is_set(input_register, R_TE_REQUIRED)) { crm_trace("%s %.16llx (R_TE_REQUIRED)", text, R_TE_REQUIRED); } - if (pcmk_is_set(input_register, R_REQ_PEND)) { + if (pcmk__is_set(input_register, R_REQ_PEND)) { crm_trace("%s %.16llx (R_REQ_PEND)", text, R_REQ_PEND); } - if (pcmk_is_set(input_register, R_PE_PEND)) { + if (pcmk__is_set(input_register, R_PE_PEND)) { crm_trace("%s %.16llx (R_PE_PEND)", text, R_PE_PEND); } - if (pcmk_is_set(input_register, R_TE_PEND)) { + if (pcmk__is_set(input_register, R_TE_PEND)) { crm_trace("%s %.16llx (R_TE_PEND)", text, R_TE_PEND); } - if (pcmk_is_set(input_register, R_RESP_PEND)) { + if (pcmk__is_set(input_register, R_RESP_PEND)) { crm_trace("%s %.16llx (R_RESP_PEND)", text, R_RESP_PEND); } - if (pcmk_is_set(input_register, R_CIB_DONE)) { + if (pcmk__is_set(input_register, R_CIB_DONE)) { crm_trace("%s %.16llx (R_CIB_DONE)", text, R_CIB_DONE); } - if (pcmk_is_set(input_register, R_HAVE_CIB)) { + if (pcmk__is_set(input_register, R_HAVE_CIB)) { crm_trace("%s %.16llx (R_HAVE_CIB)", text, R_HAVE_CIB); } - if (pcmk_is_set(input_register, R_MEMBERSHIP)) { + if (pcmk__is_set(input_register, R_MEMBERSHIP)) { crm_trace("%s %.16llx (R_MEMBERSHIP)", text, R_MEMBERSHIP); } - if (pcmk_is_set(input_register, R_PEER_DATA)) { + if (pcmk__is_set(input_register, R_PEER_DATA)) { crm_trace("%s %.16llx (R_PEER_DATA)", text, R_PEER_DATA); } - if (pcmk_is_set(input_register, R_IN_RECOVERY)) { + if (pcmk__is_set(input_register, R_IN_RECOVERY)) { crm_trace("%s %.16llx (R_IN_RECOVERY)", text, R_IN_RECOVERY); } } @@ -550,154 +550,154 @@ fsa_dump_inputs(int log_level, const char *text, long long input_register) void fsa_dump_actions(uint64_t action, const char *text) { - if (pcmk_is_set(action, A_READCONFIG)) { + if (pcmk__is_set(action, A_READCONFIG)) { crm_trace("Action %.16llx (A_READCONFIG) %s", A_READCONFIG, text); } - if (pcmk_is_set(action, A_STARTUP)) { + if (pcmk__is_set(action, A_STARTUP)) { crm_trace("Action %.16llx (A_STARTUP) %s", A_STARTUP, text); } - if (pcmk_is_set(action, A_STARTED)) { + if (pcmk__is_set(action, A_STARTED)) { crm_trace("Action %.16llx (A_STARTED) %s", A_STARTED, text); } - if (pcmk_is_set(action, A_HA_CONNECT)) { + if (pcmk__is_set(action, A_HA_CONNECT)) { crm_trace("Action %.16llx (A_CONNECT) %s", A_HA_CONNECT, text); } - if (pcmk_is_set(action, A_HA_DISCONNECT)) { + if (pcmk__is_set(action, A_HA_DISCONNECT)) { crm_trace("Action %.16llx (A_DISCONNECT) %s", A_HA_DISCONNECT, text); } - if (pcmk_is_set(action, A_LRM_CONNECT)) { + if (pcmk__is_set(action, A_LRM_CONNECT)) { crm_trace("Action %.16llx (A_LRM_CONNECT) %s", A_LRM_CONNECT, text); } - if (pcmk_is_set(action, A_LRM_INVOKE)) { + if (pcmk__is_set(action, A_LRM_INVOKE)) { crm_trace("Action %.16llx (A_LRM_INVOKE) %s", A_LRM_INVOKE, text); } - if (pcmk_is_set(action, A_LRM_DISCONNECT)) { + if (pcmk__is_set(action, A_LRM_DISCONNECT)) { crm_trace("Action %.16llx (A_LRM_DISCONNECT) %s", A_LRM_DISCONNECT, text); } - if (pcmk_is_set(action, A_DC_TIMER_STOP)) { + if (pcmk__is_set(action, A_DC_TIMER_STOP)) { crm_trace("Action %.16llx (A_DC_TIMER_STOP) %s", A_DC_TIMER_STOP, text); } - if (pcmk_is_set(action, A_DC_TIMER_START)) { + if (pcmk__is_set(action, A_DC_TIMER_START)) { crm_trace("Action %.16llx (A_DC_TIMER_START) %s", A_DC_TIMER_START, text); } - if (pcmk_is_set(action, A_INTEGRATE_TIMER_START)) { + if (pcmk__is_set(action, A_INTEGRATE_TIMER_START)) { crm_trace("Action %.16llx (A_INTEGRATE_TIMER_START) %s", A_INTEGRATE_TIMER_START, text); } - if (pcmk_is_set(action, A_INTEGRATE_TIMER_STOP)) { + if (pcmk__is_set(action, A_INTEGRATE_TIMER_STOP)) { crm_trace("Action %.16llx (A_INTEGRATE_TIMER_STOP) %s", A_INTEGRATE_TIMER_STOP, text); } - if (pcmk_is_set(action, A_FINALIZE_TIMER_START)) { + if (pcmk__is_set(action, A_FINALIZE_TIMER_START)) { crm_trace("Action %.16llx (A_FINALIZE_TIMER_START) %s", A_FINALIZE_TIMER_START, text); } - if (pcmk_is_set(action, A_FINALIZE_TIMER_STOP)) { + if (pcmk__is_set(action, A_FINALIZE_TIMER_STOP)) { crm_trace("Action %.16llx (A_FINALIZE_TIMER_STOP) %s", A_FINALIZE_TIMER_STOP, text); } - if (pcmk_is_set(action, A_ELECTION_COUNT)) { + if (pcmk__is_set(action, A_ELECTION_COUNT)) { crm_trace("Action %.16llx (A_ELECTION_COUNT) %s", A_ELECTION_COUNT, text); } - if (pcmk_is_set(action, A_ELECTION_VOTE)) { + if (pcmk__is_set(action, A_ELECTION_VOTE)) { crm_trace("Action %.16llx (A_ELECTION_VOTE) %s", A_ELECTION_VOTE, text); } - if (pcmk_is_set(action, A_ELECTION_CHECK)) { + if (pcmk__is_set(action, A_ELECTION_CHECK)) { crm_trace("Action %.16llx (A_ELECTION_CHECK) %s", A_ELECTION_CHECK, text); } - if (pcmk_is_set(action, A_CL_JOIN_ANNOUNCE)) { + if (pcmk__is_set(action, A_CL_JOIN_ANNOUNCE)) { crm_trace("Action %.16llx (A_CL_JOIN_ANNOUNCE) %s", A_CL_JOIN_ANNOUNCE, text); } - if (pcmk_is_set(action, A_CL_JOIN_REQUEST)) { + if (pcmk__is_set(action, A_CL_JOIN_REQUEST)) { crm_trace("Action %.16llx (A_CL_JOIN_REQUEST) %s", A_CL_JOIN_REQUEST, text); } - if (pcmk_is_set(action, A_CL_JOIN_RESULT)) { + if (pcmk__is_set(action, A_CL_JOIN_RESULT)) { crm_trace("Action %.16llx (A_CL_JOIN_RESULT) %s", A_CL_JOIN_RESULT, text); } - if (pcmk_is_set(action, A_DC_JOIN_OFFER_ALL)) { + if (pcmk__is_set(action, A_DC_JOIN_OFFER_ALL)) { crm_trace("Action %.16llx (A_DC_JOIN_OFFER_ALL) %s", A_DC_JOIN_OFFER_ALL, text); } - if (pcmk_is_set(action, A_DC_JOIN_OFFER_ONE)) { + if (pcmk__is_set(action, A_DC_JOIN_OFFER_ONE)) { crm_trace("Action %.16llx (A_DC_JOIN_OFFER_ONE) %s", A_DC_JOIN_OFFER_ONE, text); } - if (pcmk_is_set(action, A_DC_JOIN_PROCESS_REQ)) { + if (pcmk__is_set(action, A_DC_JOIN_PROCESS_REQ)) { crm_trace("Action %.16llx (A_DC_JOIN_PROCESS_REQ) %s", A_DC_JOIN_PROCESS_REQ, text); } - if (pcmk_is_set(action, A_DC_JOIN_PROCESS_ACK)) { + if (pcmk__is_set(action, A_DC_JOIN_PROCESS_ACK)) { crm_trace("Action %.16llx (A_DC_JOIN_PROCESS_ACK) %s", A_DC_JOIN_PROCESS_ACK, text); } - if (pcmk_is_set(action, A_DC_JOIN_FINALIZE)) { + if (pcmk__is_set(action, A_DC_JOIN_FINALIZE)) { crm_trace("Action %.16llx (A_DC_JOIN_FINALIZE) %s", A_DC_JOIN_FINALIZE, text); } - if (pcmk_is_set(action, A_MSG_PROCESS)) { + if (pcmk__is_set(action, A_MSG_PROCESS)) { crm_trace("Action %.16llx (A_MSG_PROCESS) %s", A_MSG_PROCESS, text); } - if (pcmk_is_set(action, A_MSG_ROUTE)) { + if (pcmk__is_set(action, A_MSG_ROUTE)) { crm_trace("Action %.16llx (A_MSG_ROUTE) %s", A_MSG_ROUTE, text); } - if (pcmk_is_set(action, A_RECOVER)) { + if (pcmk__is_set(action, A_RECOVER)) { crm_trace("Action %.16llx (A_RECOVER) %s", A_RECOVER, text); } - if (pcmk_is_set(action, A_DC_RELEASE)) { + if (pcmk__is_set(action, A_DC_RELEASE)) { crm_trace("Action %.16llx (A_DC_RELEASE) %s", A_DC_RELEASE, text); } - if (pcmk_is_set(action, A_DC_RELEASED)) { + if (pcmk__is_set(action, A_DC_RELEASED)) { crm_trace("Action %.16llx (A_DC_RELEASED) %s", A_DC_RELEASED, text); } - if (pcmk_is_set(action, A_DC_TAKEOVER)) { + if (pcmk__is_set(action, A_DC_TAKEOVER)) { crm_trace("Action %.16llx (A_DC_TAKEOVER) %s", A_DC_TAKEOVER, text); } - if (pcmk_is_set(action, A_SHUTDOWN)) { + if (pcmk__is_set(action, A_SHUTDOWN)) { crm_trace("Action %.16llx (A_SHUTDOWN) %s", A_SHUTDOWN, text); } - if (pcmk_is_set(action, A_SHUTDOWN_REQ)) { + if (pcmk__is_set(action, A_SHUTDOWN_REQ)) { crm_trace("Action %.16llx (A_SHUTDOWN_REQ) %s", A_SHUTDOWN_REQ, text); } - if (pcmk_is_set(action, A_STOP)) { + if (pcmk__is_set(action, A_STOP)) { crm_trace("Action %.16llx (A_STOP ) %s", A_STOP, text); } - if (pcmk_is_set(action, A_EXIT_0)) { + if (pcmk__is_set(action, A_EXIT_0)) { crm_trace("Action %.16llx (A_EXIT_0) %s", A_EXIT_0, text); } - if (pcmk_is_set(action, A_EXIT_1)) { + if (pcmk__is_set(action, A_EXIT_1)) { crm_trace("Action %.16llx (A_EXIT_1) %s", A_EXIT_1, text); } - if (pcmk_is_set(action, A_CIB_START)) { + if (pcmk__is_set(action, A_CIB_START)) { crm_trace("Action %.16llx (A_CIB_START) %s", A_CIB_START, text); } - if (pcmk_is_set(action, A_CIB_STOP)) { + if (pcmk__is_set(action, A_CIB_STOP)) { crm_trace("Action %.16llx (A_CIB_STOP) %s", A_CIB_STOP, text); } - if (pcmk_is_set(action, A_TE_INVOKE)) { + if (pcmk__is_set(action, A_TE_INVOKE)) { crm_trace("Action %.16llx (A_TE_INVOKE) %s", A_TE_INVOKE, text); } - if (pcmk_is_set(action, A_TE_START)) { + if (pcmk__is_set(action, A_TE_START)) { crm_trace("Action %.16llx (A_TE_START) %s", A_TE_START, text); } - if (pcmk_is_set(action, A_TE_STOP)) { + if (pcmk__is_set(action, A_TE_STOP)) { crm_trace("Action %.16llx (A_TE_STOP) %s", A_TE_STOP, text); } - if (pcmk_is_set(action, A_TE_CANCEL)) { + if (pcmk__is_set(action, A_TE_CANCEL)) { crm_trace("Action %.16llx (A_TE_CANCEL) %s", A_TE_CANCEL, text); } - if (pcmk_is_set(action, A_PE_INVOKE)) { + if (pcmk__is_set(action, A_PE_INVOKE)) { crm_trace("Action %.16llx (A_PE_INVOKE) %s", A_PE_INVOKE, text); } - if (pcmk_is_set(action, A_PE_START)) { + if (pcmk__is_set(action, A_PE_START)) { crm_trace("Action %.16llx (A_PE_START) %s", A_PE_START, text); } - if (pcmk_is_set(action, A_PE_STOP)) { + if (pcmk__is_set(action, A_PE_STOP)) { crm_trace("Action %.16llx (A_PE_STOP) %s", A_PE_STOP, text); } - if (pcmk_is_set(action, A_NODE_BLOCK)) { + if (pcmk__is_set(action, A_NODE_BLOCK)) { crm_trace("Action %.16llx (A_NODE_BLOCK) %s", A_NODE_BLOCK, text); } - if (pcmk_is_set(action, A_UPDATE_NODESTATUS)) { + if (pcmk__is_set(action, A_UPDATE_NODESTATUS)) { crm_trace("Action %.16llx (A_UPDATE_NODESTATUS) %s", A_UPDATE_NODESTATUS, text); } - if (pcmk_is_set(action, A_LOG)) { + if (pcmk__is_set(action, A_LOG)) { crm_trace("Action %.16llx (A_LOG ) %s", A_LOG, text); } - if (pcmk_is_set(action, A_ERROR)) { + if (pcmk__is_set(action, A_ERROR)) { crm_trace("Action %.16llx (A_ERROR ) %s", A_ERROR, text); } - if (pcmk_is_set(action, A_WARN)) { + if (pcmk__is_set(action, A_WARN)) { crm_trace("Action %.16llx (A_WARN ) %s", A_WARN, text); } } diff --git a/daemons/controld/pacemaker-controld.c b/daemons/controld/pacemaker-controld.c index a365443d984..1891d4d1d68 100644 --- a/daemons/controld/pacemaker-controld.c +++ b/daemons/controld/pacemaker-controld.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. * @@ -199,7 +199,7 @@ main(int argc, char **argv) // Run mainloop controld_globals.mainloop = g_main_loop_new(NULL, FALSE); g_main_loop_run(controld_globals.mainloop); - if (pcmk_is_set(controld_globals.fsa_input_register, R_STAYDOWN)) { + if (pcmk__is_set(controld_globals.fsa_input_register, R_STAYDOWN)) { crm_info("Inhibiting automated respawn"); exit_code = CRM_EX_FATAL; } diff --git a/daemons/execd/execd_commands.c b/daemons/execd/execd_commands.c index 7d2c5854f2a..077bf1b7647 100644 --- a/daemons/execd/execd_commands.c +++ b/daemons/execd/execd_commands.c @@ -272,7 +272,7 @@ static const char * normalize_action_name(lrmd_rsc_t * rsc, const char *action) { if (pcmk__str_eq(action, PCMK_ACTION_MONITOR, pcmk__str_casei) && - pcmk_is_set(pcmk_get_ra_caps(rsc->class), pcmk_ra_cap_status)) { + pcmk__is_set(pcmk_get_ra_caps(rsc->class), pcmk_ra_cap_status)) { return PCMK_ACTION_STATUS; } return action; @@ -570,7 +570,7 @@ send_client_notify(gpointer key, gpointer value, gpointer user_data) crm_trace("Skipping notification to client without name"); return; } - if (pcmk_is_set(client->flags, pcmk__client_to_proxy)) { + if (pcmk__is_set(client->flags, pcmk__client_to_proxy)) { /* We only want to notify clients of the executor IPC API. If we are * running as Pacemaker Remote, we may have clients proxied to other * IPC services in the cluster, so skip those. @@ -617,7 +617,7 @@ send_cmd_complete_notify(lrmd_cmd_t * cmd) * operation results, skip the notification if the result hasn't changed. */ if (cmd->first_notify_sent - && pcmk_is_set(cmd->call_opts, lrmd_opt_notify_changes_only) + && pcmk__is_set(cmd->call_opts, lrmd_opt_notify_changes_only) && (cmd->last_notify_rc == cmd->result.exit_status) && (cmd->last_notify_op_status == cmd->result.execution_status)) { return; @@ -678,7 +678,7 @@ send_cmd_complete_notify(lrmd_cmd_t * cmd) } } if ((cmd->client_id != NULL) - && pcmk_is_set(cmd->call_opts, lrmd_opt_notify_orig_only)) { + && pcmk__is_set(cmd->call_opts, lrmd_opt_notify_orig_only)) { pcmk__client_t *client = pcmk__find_client_by_id(cmd->client_id); @@ -1521,8 +1521,8 @@ process_lrmd_signon(pcmk__client_t *client, xmlNode *request, int call_id, if (pcmk__xe_attr_is_true(request, PCMK__XA_LRMD_IS_IPC_PROVIDER)) { #ifdef PCMK__COMPILE_REMOTE if ((client->remote != NULL) - && pcmk_is_set(client->flags, - pcmk__client_tls_handshake_complete)) { + && pcmk__is_set(client->flags, + pcmk__client_tls_handshake_complete)) { const char *op = pcmk__xe_get(request, PCMK__XA_LRMD_OP); // This is a remote connection from a cluster node's controller @@ -1875,7 +1875,7 @@ process_lrmd_message(pcmk__client_t *client, uint32_t id, xmlNode *request) * hacluster), because they would otherwise provide a means of bypassing * ACLs. */ - bool allowed = pcmk_is_set(client->flags, pcmk__client_privileged); + bool allowed = pcmk__is_set(client->flags, pcmk__client_privileged); crm_trace("Processing %s operation from %s", op, client->id); pcmk__xe_get_int(request, PCMK__XA_LRMD_CALLID, &call_id); diff --git a/daemons/execd/remoted_tls.c b/daemons/execd/remoted_tls.c index 65dd9e270a7..675eb1aa88b 100644 --- a/daemons/execd/remoted_tls.c +++ b/daemons/execd/remoted_tls.c @@ -90,7 +90,7 @@ lrmd_remote_client_msg(gpointer data) xmlNode *request = NULL; pcmk__client_t *client = data; - if (!pcmk_is_set(client->flags, pcmk__client_tls_handshake_complete)) { + if (!pcmk__is_set(client->flags, pcmk__client_tls_handshake_complete)) { return remoted__read_handshake_data(client); } @@ -190,8 +190,7 @@ lrmd_auth_timeout_cb(gpointer data) client->remote->auth_timeout = 0; - if (pcmk_is_set(client->flags, - pcmk__client_tls_handshake_complete)) { + if (pcmk__is_set(client->flags, pcmk__client_tls_handshake_complete)) { return FALSE; } diff --git a/daemons/fenced/fenced_commands.c b/daemons/fenced/fenced_commands.c index fd826e26482..b5dbdd5c667 100644 --- a/daemons/fenced/fenced_commands.c +++ b/daemons/fenced/fenced_commands.c @@ -225,7 +225,7 @@ get_action_timeout(const stonith_device_t *device, const char *action, * we will remap to "off", so check timeout for "off" instead */ if (pcmk__str_eq(action, PCMK_ACTION_REBOOT, pcmk__str_none) - && !pcmk_is_set(device->flags, st_device_supports_reboot)) { + && !pcmk__is_set(device->flags, st_device_supports_reboot)) { crm_trace("%s doesn't support reboot, using timeout for off instead", device->id); action = PCMK_ACTION_OFF; @@ -307,7 +307,7 @@ fenced_device_supports_on(const char *device_id) stonith_device_t *device = g_hash_table_lookup(device_list, device_id); if (device != NULL) { - return pcmk_is_set(device->flags, st_device_supports_on); + return pcmk__is_set(device->flags, st_device_supports_on); } } return false; @@ -589,7 +589,7 @@ stonith_device_execute(stonith_device_t * device) action_str = cmd->action; if (pcmk__str_eq(cmd->action, PCMK_ACTION_REBOOT, pcmk__str_none) - && !pcmk_is_set(device->flags, st_device_supports_reboot)) { + && !pcmk__is_set(device->flags, st_device_supports_reboot)) { crm_notice("Remapping 'reboot' action%s%s using %s to 'off' " "because agent '%s' does not support reboot", @@ -598,10 +598,10 @@ stonith_device_execute(stonith_device_t * device) action_str = PCMK_ACTION_OFF; } - if (pcmk_is_set(device->flags, st_device_supports_parameter_port)) { + if (pcmk__is_set(device->flags, st_device_supports_parameter_port)) { host_arg = "port"; - } else if (pcmk_is_set(device->flags, st_device_supports_parameter_plug)) { + } else if (pcmk__is_set(device->flags, st_device_supports_parameter_plug)) { host_arg = "plug"; } @@ -1014,9 +1014,9 @@ target_list_type(stonith_device_t * dev) check_type = PCMK_VALUE_STATIC_LIST; } else if (g_hash_table_lookup(dev->params, PCMK_STONITH_HOST_MAP)) { check_type = PCMK_VALUE_STATIC_LIST; - } else if (pcmk_is_set(dev->flags, st_device_supports_list)) { + } else if (pcmk__is_set(dev->flags, st_device_supports_list)) { check_type = PCMK_VALUE_DYNAMIC_LIST; - } else if (pcmk_is_set(dev->flags, st_device_supports_status)) { + } else if (pcmk__is_set(dev->flags, st_device_supports_status)) { check_type = PCMK_VALUE_STATUS; } else { check_type = PCMK_VALUE_NONE; @@ -1981,7 +1981,7 @@ search_devices_record_result(struct device_search_s *search, const char *device, if (can_fence && device) { if (search->support_action_only != st_device_supports_none) { stonith_device_t *dev = g_hash_table_lookup(device_list, device); - if (dev && !pcmk_is_set(dev->flags, search->support_action_only)) { + if (dev && !pcmk__is_set(dev->flags, search->support_action_only)) { return; } } @@ -2123,7 +2123,7 @@ can_fence_host_with_device(stonith_device_t *dev, * or the local node is not allowed to perform it */ if (pcmk__str_eq(action, PCMK_ACTION_ON, pcmk__str_none) - && !pcmk_is_set(dev->flags, st_device_supports_on)) { + && !pcmk__is_set(dev->flags, st_device_supports_on)) { check_type = "Agent does not support 'on'"; goto search_report_results; @@ -2442,7 +2442,7 @@ stonith_query_capable_device_cb(GList * devices, void *user_data) /* If the originating fencer wants to reboot the node, and we have a * capable device that doesn't support "reboot", remap to "off" instead. */ - if (!pcmk_is_set(device->flags, st_device_supports_reboot) + if (!pcmk__is_set(device->flags, st_device_supports_reboot) && pcmk__str_eq(query->action, PCMK_ACTION_REBOOT, pcmk__str_none)) { crm_trace("%s doesn't support reboot, using values for off instead", @@ -2465,11 +2465,11 @@ stonith_query_capable_device_cb(GList * devices, void *user_data) * versions will ignore "off" and "on", so they are not a problem. */ add_disallowed(dev, action, device, query->target, - pcmk_is_set(query->call_options, - st_opt_allow_self_fencing)); + pcmk__is_set(query->call_options, + st_opt_allow_self_fencing)); add_action_reply(dev, PCMK_ACTION_OFF, device, query->target, - pcmk_is_set(query->call_options, - st_opt_allow_self_fencing)); + pcmk__is_set(query->call_options, + st_opt_allow_self_fencing)); add_action_reply(dev, PCMK_ACTION_ON, device, query->target, FALSE); } @@ -2889,7 +2889,7 @@ fence_locally(xmlNode *msg, pcmk__action_result_t *result) } else { const char *host = pcmk__xe_get(dev, PCMK__XA_ST_TARGET); - if (pcmk_is_set(cmd->options, st_opt_cs_nodeid)) { + if (pcmk__is_set(cmd->options, st_opt_cs_nodeid)) { int nodeid = 0; pcmk__node_status_t *node = NULL; @@ -3010,7 +3010,7 @@ bool fencing_peer_active(pcmk__node_status_t *peer) { return (peer != NULL) && (peer->name != NULL) - && pcmk_is_set(peer->processes, crm_get_cluster_proc()); + && pcmk__is_set(peer->processes, crm_get_cluster_proc()); } void @@ -3127,7 +3127,7 @@ remove_relay_op(xmlNode * request) static inline bool is_privileged(const pcmk__client_t *c, const char *op) { - if ((c == NULL) || pcmk_is_set(c->flags, pcmk__client_privileged)) { + if ((c == NULL) || pcmk__is_set(c->flags, pcmk__client_privileged)) { return true; } else { crm_warn("Rejecting IPC request '%s' from unprivileged client %s", @@ -3222,8 +3222,8 @@ handle_query_request(pcmk__request_t *request) pcmk__xe_get_int(request->xml, PCMK__XA_ST_TIMEOUT, &timeout); get_capable_devices(target, action, timeout, - pcmk_is_set(query->call_options, - st_opt_allow_self_fencing), + pcmk__is_set(query->call_options, + st_opt_allow_self_fencing), query, stonith_query_capable_device_cb, st_device_supports_none); return NULL; } @@ -3288,7 +3288,7 @@ handle_fence_request(pcmk__request_t *request) if (request->peer != NULL) { fence_locally(request->xml, &request->result); - } else if (pcmk_is_set(request->call_options, st_opt_manual_ack)) { + } else if (pcmk__is_set(request->call_options, st_opt_manual_ack)) { switch (fenced_handle_manual_confirmation(request->ipc_client, request->xml)) { case pcmk_rc_ok: @@ -3390,7 +3390,7 @@ handle_history_request(pcmk__request_t *request) stonith_fence_history(request->xml, &data, request->peer, request->call_options); pcmk__set_result(&request->result, CRM_EX_OK, PCMK_EXEC_DONE, NULL); - if (!pcmk_is_set(request->call_options, st_opt_discard_reply)) { + if (!pcmk__is_set(request->call_options, st_opt_discard_reply)) { /* When the local node broadcasts its history, it sets * st_opt_discard_reply and doesn't need a reply. */ @@ -3554,7 +3554,7 @@ handle_request(pcmk__request_t *request) } reply = pcmk__process_request(request, fenced_handlers); if (reply != NULL) { - if (pcmk_is_set(request->flags, pcmk__request_reuse_options) + if (pcmk__is_set(request->flags, pcmk__request_reuse_options) && (request->ipc_client != NULL)) { /* Certain IPC-only commands must reuse the call options from the * original request rather than the ones set by stonith_send_reply() @@ -3639,13 +3639,13 @@ stonith_command(pcmk__client_t *client, uint32_t id, uint32_t flags, } crm_debug("Processing %ssynchronous %s %s %u from %s %s", - pcmk_is_set(call_options, st_opt_sync_call)? "" : "a", + pcmk__is_set(call_options, st_opt_sync_call)? "" : "a", pcmk__xe_get(message, PCMK__XA_ST_OP), (is_reply? "reply" : "request"), id, ((client == NULL)? "peer" : "client"), ((client == NULL)? remote_peer : pcmk__client_name(client))); - if (pcmk_is_set(call_options, st_opt_sync_call)) { + if (pcmk__is_set(call_options, st_opt_sync_call)) { pcmk__assert((client == NULL) || (client->request_id == id)); } @@ -3665,7 +3665,7 @@ stonith_command(pcmk__client_t *client, uint32_t id, uint32_t flags, request.op = pcmk__xe_get_copy(request.xml, PCMK__XA_ST_OP); CRM_CHECK(request.op != NULL, return); - if (pcmk_is_set(request.call_options, st_opt_sync_call)) { + if (pcmk__is_set(request.call_options, st_opt_sync_call)) { pcmk__set_request_flags(&request, pcmk__request_sync); } diff --git a/daemons/fenced/fenced_remote.c b/daemons/fenced/fenced_remote.c index 654e43f0848..b8e5a6ef5fd 100644 --- a/daemons/fenced/fenced_remote.c +++ b/daemons/fenced/fenced_remote.c @@ -139,7 +139,9 @@ count_peer_device(gpointer key, gpointer value, gpointer user_data) if (!props->executed[data->op->phase] && (!data->verified_only || props->verified) - && ((data->support_action_only == st_device_supports_none) || pcmk_is_set(props->device_support_flags, data->support_action_only))) { + && ((data->support_action_only == st_device_supports_none) + || pcmk__is_set(props->device_support_flags, + data->support_action_only))) { ++(data->count); } } @@ -187,7 +189,9 @@ find_peer_device(const remote_fencing_op_t *op, const peer_device_info_t *peer, { device_properties_t *props = g_hash_table_lookup(peer->devices, device); - if (props && support_action_only != st_device_supports_none && !pcmk_is_set(props->device_support_flags, support_action_only)) { + if ((props != NULL) + && (support_action_only != st_device_supports_none) + && !pcmk__is_set(props->device_support_flags, support_action_only)) { return NULL; } return (props && !props->executed[op->phase] @@ -1396,7 +1400,7 @@ find_best_peer(const char *device, remote_fencing_op_t * op, enum find_best_peer GList *iter = NULL; gboolean verified_devices_only = (options & FIND_PEER_VERIFIED_ONLY) ? TRUE : FALSE; - if (!device && pcmk_is_set(op->call_options, st_opt_topology)) { + if ((device == NULL) && pcmk__is_set(op->call_options, st_opt_topology)) { return NULL; } @@ -1413,8 +1417,7 @@ find_best_peer(const char *device, remote_fencing_op_t * op, enum find_best_peer continue; } - if (pcmk_is_set(op->call_options, st_opt_topology)) { - + if (pcmk__is_set(op->call_options, st_opt_topology)) { if (grab_peer_device(op, peer, device, verified_devices_only)) { return peer; } @@ -1482,7 +1485,7 @@ stonith_choose_peer(remote_fencing_op_t * op) * phase of a remapped "reboot", because we ignore errors in that case) */ } while ((op->phase != st_phase_on) - && pcmk_is_set(op->call_options, st_opt_topology) + && pcmk__is_set(op->call_options, st_opt_topology) && (advance_topology_level(op, false) == pcmk_rc_ok)); /* With a simple watchdog fencing configuration without a topology, @@ -1615,7 +1618,7 @@ get_op_total_timeout(const remote_fencing_op_t *op, long long total_timeout = 0; stonith_topology_t *tp = find_topology_for_host(op->target); - if (pcmk_is_set(op->call_options, st_opt_topology) && tp) { + if (pcmk__is_set(op->call_options, st_opt_topology) && (tp != NULL)) { int i; GList *device_list = NULL; GList *iter = NULL; @@ -1900,7 +1903,7 @@ request_peer_fencing(remote_fencing_op_t *op, peer_device_info_t *peer) } timeout = op->base_timeout; - if ((peer == NULL) && !pcmk_is_set(op->call_options, st_opt_topology)) { + if ((peer == NULL) && !pcmk__is_set(op->call_options, st_opt_topology)) { peer = stonith_choose_peer(op); } @@ -1913,7 +1916,8 @@ request_peer_fencing(remote_fencing_op_t *op, peer_device_info_t *peer) op->total_timeout, op->target, op->client_name, op->id); } - if (pcmk_is_set(op->call_options, st_opt_topology) && op->devices) { + if (pcmk__is_set(op->call_options, st_opt_topology) + && (op->devices != NULL)) { /* Ignore the caller's peer preference if topology is in use, because * that peer might not have access to the required device. With * topology, stonith_choose_peer() removes the device from further @@ -2059,7 +2063,7 @@ request_peer_fencing(remote_fencing_op_t *op, peer_device_info_t *peer) pcmk__set_result(&op->result, CRM_EX_ERROR, PCMK_EXEC_NO_FENCE_DEVICE, NULL); } else { - if (pcmk_is_set(op->call_options, st_opt_topology)) { + if (pcmk__is_set(op->call_options, st_opt_topology)) { pcmk__reset_result(&op->result); pcmk__set_result(&op->result, CRM_EX_ERROR, PCMK_EXEC_NO_FENCE_DEVICE, NULL); @@ -2382,7 +2386,7 @@ process_remote_stonith_query(xmlNode *msg) pcmk__set_result(&op->result, CRM_EX_OK, PCMK_EXEC_DONE, NULL); - if (pcmk_is_set(op->call_options, st_opt_topology)) { + if (pcmk__is_set(op->call_options, st_opt_topology)) { /* If we start the fencing before all the topology results are in, * it is possible fencing levels will be skipped because of the missing * query results. */ @@ -2510,7 +2514,7 @@ fenced_process_fencing_reply(xmlNode *msg) return; } - if (pcmk_is_set(op->call_options, st_opt_topology)) { + if (pcmk__is_set(op->call_options, st_opt_topology)) { const char *device = NULL; const char *reason = op->result.exit_reason; diff --git a/daemons/fenced/fenced_scheduler.c b/daemons/fenced/fenced_scheduler.c index 19f42ed65ba..58dc064ba67 100644 --- a/daemons/fenced/fenced_scheduler.c +++ b/daemons/fenced/fenced_scheduler.c @@ -164,7 +164,7 @@ register_if_fencing_device(gpointer data, gpointer user_data) return; } - if (!pcmk_is_set(rsc->flags, pcmk__rsc_fence_device)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_fence_device)) { return; // Not a fencing device } diff --git a/daemons/fenced/pacemaker-fenced.c b/daemons/fenced/pacemaker-fenced.c index 3caa07bf4fa..e0d20787118 100644 --- a/daemons/fenced/pacemaker-fenced.c +++ b/daemons/fenced/pacemaker-fenced.c @@ -137,8 +137,8 @@ st_ipc_dispatch(qb_ipcs_connection_t * qbc, void *data, size_t size) crm_trace("Flags %#08" PRIx32 "/%#08x for command %" PRIu32 " from client %s", flags, call_options, id, pcmk__client_name(c)); - if (pcmk_is_set(call_options, st_opt_sync_call)) { - pcmk__assert(pcmk_is_set(flags, crm_ipc_client_response)); + if (pcmk__is_set(call_options, st_opt_sync_call)) { + pcmk__assert(pcmk__is_set(flags, crm_ipc_client_response)); CRM_LOG_ASSERT(c->request_id == 0); /* This means the client has two synchronous events in-flight */ c->request_id = id; /* Reply only to the last one */ } @@ -235,7 +235,7 @@ do_local_reply(const xmlNode *notify_src, pcmk__client_t *client, int rid = 0; uint32_t ipc_flags = crm_ipc_server_event; - if (pcmk_is_set(call_options, st_opt_sync_call)) { + if (pcmk__is_set(call_options, st_opt_sync_call)) { CRM_LOG_ASSERT(client->request_id); rid = client->request_id; client->request_id = 0; @@ -248,7 +248,7 @@ do_local_reply(const xmlNode *notify_src, pcmk__client_t *client, rid, pcmk__client_name(client)); } else { crm_warn("%synchronous reply to client %s failed: %s", - (pcmk_is_set(call_options, st_opt_sync_call)? "S" : "As"), + (pcmk__is_set(call_options, st_opt_sync_call)? "S" : "As"), pcmk__client_name(client), pcmk_rc_str(local_rc)); } } @@ -296,7 +296,7 @@ stonith_notify_client(gpointer key, gpointer value, gpointer user_data) return; } - if (pcmk_is_set(client->flags, get_stonith_flag(type))) { + if (pcmk__is_set(client->flags, get_stonith_flag(type))) { int rc = pcmk__ipc_send_xml(client, 0, update_msg, crm_ipc_server_event); @@ -464,7 +464,7 @@ st_peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, const void *data) { if ((type != pcmk__node_update_processes) - && !pcmk_is_set(node->flags, pcmk__node_status_remote)) { + && !pcmk__is_set(node->flags, pcmk__node_status_remote)) { /* * This is a hack until we can send to a nodeid and/or we fix node name lookups * These messages are ignored in stonith_peer_callback() diff --git a/daemons/pacemakerd/pcmkd_messages.c b/daemons/pacemakerd/pcmkd_messages.c index 9ec174c37d3..0edd3834005 100644 --- a/daemons/pacemakerd/pcmkd_messages.c +++ b/daemons/pacemakerd/pcmkd_messages.c @@ -104,7 +104,8 @@ handle_shutdown_request(pcmk__request_t *request) * Pacemaker from the command line (or direct IPC), so that other users * are forced to go through the CIB and have ACLs applied. */ - bool allowed = pcmk_is_set(request->ipc_client->flags, pcmk__client_privileged); + bool allowed = pcmk__is_set(request->ipc_client->flags, + pcmk__client_privileged); pcmk__ipc_send_ack(request->ipc_client, request->ipc_id, request->ipc_flags, PCMK__XE_ACK, NULL, CRM_EX_INDETERMINATE); diff --git a/daemons/pacemakerd/pcmkd_subdaemons.c b/daemons/pacemakerd/pcmkd_subdaemons.c index aa65ca9cc20..206a5d88fb7 100644 --- a/daemons/pacemakerd/pcmkd_subdaemons.c +++ b/daemons/pacemakerd/pcmkd_subdaemons.c @@ -171,7 +171,7 @@ check_next_subdaemon(gpointer user_data) name, pid, child->check_count, pcmk__plural_s(child->check_count)); stop_child(child, SIGKILL); - if (pcmk_is_set(child->flags, child_respawn)) { + if (pcmk__is_set(child->flags, child_respawn)) { // Respawn limit hasn't been reached, so retry another round child->check_count = 0; } @@ -180,7 +180,7 @@ check_next_subdaemon(gpointer user_data) "after %d attempt%s (will recheck later)", name, pid, child->check_count, pcmk__plural_s(child->check_count)); - if (pcmk_is_set(child->flags, child_respawn)) { + if (pcmk__is_set(child->flags, child_respawn)) { /* as long as the respawn-limit isn't reached and we haven't run out of connect retries we account this as progress we are willing @@ -194,7 +194,7 @@ check_next_subdaemon(gpointer user_data) */ break; case pcmk_rc_ipc_unresponsive: - if (!pcmk_is_set(child->flags, child_respawn)) { + if (!pcmk__is_set(child->flags, child_respawn)) { /* if a subdaemon is down and we don't want it to be restarted this is a success during shutdown. if it isn't restarted anymore @@ -205,11 +205,11 @@ check_next_subdaemon(gpointer user_data) subdaemon_check_progress = time(NULL); } } - if (!pcmk_is_set(child->flags, child_active_before_startup)) { + if (!pcmk__is_set(child->flags, child_active_before_startup)) { crm_trace("Subdaemon %s[%lld] terminated", name, pid); break; } - if (pcmk_is_set(child->flags, child_respawn)) { + if (pcmk__is_set(child->flags, child_respawn)) { // cts-lab looks for this message crm_err("Subdaemon %s[%lld] terminated", name, pid); } else { @@ -321,7 +321,7 @@ pcmk_process_exit(pcmk_child_t * child) /* resume step-wise shutdown (returned TRUE yields no parallelizing) */ mainloop_set_trigger(shutdown_trigger); - } else if (!pcmk_is_set(child->flags, child_respawn)) { + } else if (!pcmk__is_set(child->flags, child_respawn)) { /* nothing to do */ } else if (pcmk__is_true(pcmk__env_option(PCMK__ENV_FAIL_FAST))) { @@ -331,7 +331,8 @@ pcmk_process_exit(pcmk_child_t * child) crm_warn("Not respawning subdaemon %s because IPC endpoint %s is OK", name, pcmk__server_ipc_name(child->server)); - } else if (pcmk_is_set(child->flags, child_needs_cluster) && !pcmkd_cluster_connected()) { + } else if (pcmk__is_set(child->flags, child_needs_cluster) + && !pcmkd_cluster_connected()) { crm_notice("Not respawning subdaemon %s until cluster returns", name); child->flags |= child_needs_retry; @@ -360,7 +361,7 @@ pcmk_shutdown_worker(gpointer user_data) if (child->pid != 0) { time_t now = time(NULL); - if (pcmk_is_set(child->flags, child_respawn)) { + if (pcmk__is_set(child->flags, child_respawn)) { if (child->pid == PCMK__SPECIAL_PID) { crm_warn("Subdaemon %s cannot be terminated (shutdown " "will be escalated after %ld seconds if it does " @@ -854,7 +855,8 @@ void restart_cluster_subdaemons(void) { for (int i = 0; i < PCMK__NELEM(pcmk_children); i++) { - if (!pcmk_is_set(pcmk_children[i].flags, child_needs_retry) || pcmk_children[i].pid != 0) { + if (!pcmk__is_set(pcmk_children[i].flags, child_needs_retry) + || (pcmk_children[i].pid != 0)) { continue; } diff --git a/daemons/schedulerd/schedulerd_messages.c b/daemons/schedulerd/schedulerd_messages.c index 04a9501e859..75ba676396e 100644 --- a/daemons/schedulerd/schedulerd_messages.c +++ b/daemons/schedulerd/schedulerd_messages.c @@ -102,10 +102,10 @@ handle_pecalc_request(pcmk__request_t *request) } // Get appropriate index into series[] array - if (pcmk_is_set(scheduler->flags, pcmk__sched_processing_error) + if (pcmk__is_set(scheduler->flags, pcmk__sched_processing_error) || pcmk__config_has_error) { series_id = 0; - } else if (pcmk_is_set(scheduler->flags, pcmk__sched_processing_warning) + } else if (pcmk__is_set(scheduler->flags, pcmk__sched_processing_warning) || pcmk__config_has_warning) { series_id = 1; } else { diff --git a/include/crm/common/clone_internal.h b/include/crm/common/clone_internal.h index 4dd6bb927ce..e2157fc917c 100644 --- a/include/crm/common/clone_internal.h +++ b/include/crm/common/clone_internal.h @@ -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. * @@ -12,10 +12,11 @@ #include // NULL #include // bool + +#include // pcmk__is_set() #include // pcmk_resource_t #include // pcmk_rsc_unique, #include // pcmk__rsc_variant_clone etc. -#include // pcmk_is_set #ifdef __cplusplus extern "C" { @@ -60,7 +61,7 @@ pcmk__is_clone(const pcmk_resource_t *rsc) static inline bool pcmk__is_unique_clone(const pcmk_resource_t *rsc) { - return pcmk__is_clone(rsc) && pcmk_is_set(rsc->flags, pcmk__rsc_unique); + return pcmk__is_clone(rsc) && pcmk__is_set(rsc->flags, pcmk__rsc_unique); } /*! @@ -74,7 +75,7 @@ pcmk__is_unique_clone(const pcmk_resource_t *rsc) static inline bool pcmk__is_anonymous_clone(const pcmk_resource_t *rsc) { - return pcmk__is_clone(rsc) && !pcmk_is_set(rsc->flags, pcmk__rsc_unique); + return pcmk__is_clone(rsc) && !pcmk__is_set(rsc->flags, pcmk__rsc_unique); } #ifdef __cplusplus diff --git a/include/crm/common/internal.h b/include/crm/common/internal.h index 76b0077e6ab..9bc49ce75f4 100644 --- a/include/crm/common/internal.h +++ b/include/crm/common/internal.h @@ -173,6 +173,25 @@ pcmk__clear_flags_as(const char *function, int line, uint8_t log_level, return result; } +/*! + * \internal + * \brief Convenience alias for \c pcmk_all_flags_set(), to check single flag + * + * This is truly identical to \c pcmk_all_flags_set() but allows a call that's + * shorter and semantically clearer for checking a single flag. + * + * \param[in] flag_group Flag group (check whether \p flag is set in this) + * \param[in] flag Flag (check whether this is set in \p flag_group) + * + * \retval \c true if \p flag is set in \p flag_group or if \p flag is 0 + * \retval \c false otherwise + */ +static inline bool +pcmk__is_set(uint64_t flag_group, uint64_t flag) +{ + return pcmk_all_flags_set(flag_group, flag); +} + /*! * \internal * \brief Get readable string for whether specified flags are set diff --git a/include/crm/common/logging_internal.h b/include/crm/common/logging_internal.h index ec63e7fe9f0..29e804eea37 100644 --- a/include/crm/common/logging_internal.h +++ b/include/crm/common/logging_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. * @@ -12,6 +12,7 @@ #include +#include // pcmk__is_set() #include #include @@ -48,7 +49,7 @@ enum pcmk__warnings { * \param[in] fmt... printf(3)-style format and arguments */ #define pcmk__warn_once(wo_flag, fmt...) do { \ - if (!pcmk_is_set(pcmk__warnings, wo_flag)) { \ + if (!pcmk__is_set(pcmk__warnings, wo_flag)) { \ if (wo_flag == pcmk__wo_blind) { \ crm_warn(fmt); \ } else { \ diff --git a/include/crm/common/util_compat.h b/include/crm/common/util_compat.h index ebcefcb9e96..c3ffa7c482a 100644 --- a/include/crm/common/util_compat.h +++ b/include/crm/common/util_compat.h @@ -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. * @@ -33,7 +33,7 @@ void crm_gnutls_global_init(void); bool crm_is_daemon_name(const char *name); // NOTE: sbd (as of at least 1.5.2) uses this -//! \deprecated Use pcmk_is_set() or pcmk_all_flags_set() instead +//! \deprecated Use pcmk_all_flags_set() instead static inline gboolean is_set(long long word, long long bit) { diff --git a/include/crm/pengine/status.h b/include/crm/pengine/status.h index 4d894dc96ed..8d7722c72b0 100644 --- a/include/crm/pengine/status.h +++ b/include/crm/pengine/status.h @@ -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. * @@ -12,7 +12,6 @@ # include // gboolean # include // bool -# include // pcmk_is_set() # include # include // pcmk_node_t, pcmk_resource_t, etc. # include diff --git a/include/crm/pengine/status_compat.h b/include/crm/pengine/status_compat.h index af45129d2d4..e0a685bedc6 100644 --- a/include/crm/pengine/status_compat.h +++ b/include/crm/pengine/status_compat.h @@ -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. * @@ -11,7 +11,6 @@ #define PCMK__CRM_PENGINE_STATUS_COMPAT__H #include // bool -#include // pcmk_is_set() #include // pcmk_resource_t, pcmk__rsc_unique, etc. #ifdef __cplusplus diff --git a/lib/cib/cib_attrs.c b/lib/cib/cib_attrs.c index 590bd73b64c..81f05dff7ca 100644 --- a/lib/cib/cib_attrs.c +++ b/lib/cib/cib_attrs.c @@ -321,7 +321,7 @@ cib__update_node_attr(pcmk__output_t *out, cib_t *cib, int call_options, const c rc = cib_internal_op(cib, PCMK__CIB_REQUEST_MODIFY, NULL, section, xml_top, NULL, call_options, user_name); - if (!pcmk_is_set(call_options, cib_sync_call) && (cib->variant != cib_file) + if (!pcmk__is_set(call_options, cib_sync_call) && (cib->variant != cib_file) && (rc >= 0)) { // For async call, positive rc is the call ID (file always synchronous) rc = pcmk_rc_ok; @@ -402,7 +402,7 @@ cib__delete_node_attr(pcmk__output_t *out, cib_t *cib, int options, const char * rc = cib_internal_op(cib, PCMK__CIB_REQUEST_DELETE, NULL, section, xml_obj, NULL, options, user_name); - if (!pcmk_is_set(options, cib_sync_call) && (cib->variant != cib_file) + if (!pcmk__is_set(options, cib_sync_call) && (cib->variant != cib_file) && (rc >= 0)) { // For async call, positive rc is the call ID (file always synchronous) rc = pcmk_rc_ok; diff --git a/lib/cib/cib_file.c b/lib/cib/cib_file.c index e25147c99f7..678c8f75e64 100644 --- a/lib/cib/cib_file.c +++ b/lib/cib/cib_file.c @@ -242,7 +242,7 @@ cib_file_process_request(cib_t *cib, xmlNode *request, xmlNode **output) crm_warn("Couldn't parse options from request: %s", pcmk_rc_str(rc)); } - read_only = !pcmk_is_set(operation->flags, cib__op_attr_modifies); + read_only = !pcmk__is_set(operation->flags, cib__op_attr_modifies); // Mirror the logic in prepare_input() in the CIB manager if ((section != NULL) && pcmk__xe_is(data, PCMK_XE_CIB)) { @@ -254,7 +254,7 @@ cib_file_process_request(cib_t *cib, xmlNode *request, xmlNode **output) request, data, true, &changed, &private->cib_xml, &result_cib, &cib_diff, output); - if (pcmk_is_set(call_options, cib_transaction)) { + if (pcmk__is_set(call_options, cib_transaction)) { /* The rest of the logic applies only to the transaction as a whole, not * to individual requests. */ @@ -331,7 +331,7 @@ cib_file_perform_op_delegate(cib_t *cib, const char *op, const char *host, pcmk__xe_set(request, PCMK__XA_ACL_TARGET, user_name); pcmk__xe_set(request, PCMK__XA_CIB_CLIENTID, private->id); - if (pcmk_is_set(call_options, cib_transaction)) { + if (pcmk__is_set(call_options, cib_transaction)) { rc = cib__extend_transaction(cib, request); goto done; } @@ -536,10 +536,10 @@ cib_file_signoff(cib_t *cib) cib->cmds->end_transaction(cib, false, cib_none); /* If the in-memory CIB has been changed, write it to disk */ - if (pcmk_is_set(private->flags, cib_file_flag_dirty)) { + if (pcmk__is_set(private->flags, cib_file_flag_dirty)) { /* If this is the live CIB, write it out with a digest */ - if (pcmk_is_set(private->flags, cib_file_flag_live)) { + if (pcmk__is_set(private->flags, cib_file_flag_live)) { if (cib_file_write_live(private->cib_xml, private->filename) < 0) { rc = pcmk_err_generic; } diff --git a/lib/cib/cib_native.c b/lib/cib/cib_native.c index 96345ceef8d..18099b90139 100644 --- a/lib/cib/cib_native.c +++ b/lib/cib/cib_native.c @@ -71,7 +71,7 @@ cib_native_perform_op_delegate(cib_t *cib, const char *op, const char *host, return rc; } - if (pcmk_is_set(call_options, cib_transaction)) { + if (pcmk__is_set(call_options, cib_transaction)) { rc = cib__extend_transaction(cib, op_msg); goto done; } diff --git a/lib/cib/cib_ops.c b/lib/cib/cib_ops.c index 1faa55d98cd..be0bfa6082d 100644 --- a/lib/cib/cib_ops.c +++ b/lib/cib/cib_ops.c @@ -272,7 +272,7 @@ cib_process_upgrade(const char *op, int options, const char *section, xmlNode * original_schema = pcmk__xe_get(existing_cib, PCMK_XA_VALIDATE_WITH); rc = pcmk__update_schema(result_cib, max_schema, true, - !pcmk_is_set(options, cib_verbose)); + !pcmk__is_set(options, cib_verbose)); rc = pcmk_rc2legacy(rc); new_schema = pcmk__xe_get(*result_cib, PCMK_XA_VALIDATE_WITH); @@ -488,7 +488,7 @@ cib_process_modify(const char *op, int options, const char *section, xmlNode * r CRM_CHECK(obj_root != NULL, return -EINVAL); - if (pcmk_is_set(options, cib_score_update)) { + if (pcmk__is_set(options, cib_score_update)) { flags |= pcmk__xaf_score_update; } @@ -654,7 +654,7 @@ cib_process_diff(const char *op, int options, const char *section, xmlNode * req crm_trace("Processing \"%s\" event from %s%s", op, originator, - (pcmk_is_set(options, cib_force_diff)? " (global update)" : "")); + (pcmk__is_set(options, cib_force_diff)? " (global update)" : "")); if (*result_cib != existing_cib) { pcmk__xml_free(*result_cib); @@ -672,7 +672,7 @@ cib_process_xpath(const char *op, int options, const char *section, int num_results = 0; int rc = pcmk_ok; bool is_query = pcmk__str_eq(op, PCMK__CIB_REQUEST_QUERY, pcmk__str_none); - bool delete_multiple = pcmk_is_set(options, cib_multiple) + bool delete_multiple = pcmk__is_set(options, cib_multiple) && pcmk__str_eq(op, PCMK__CIB_REQUEST_DELETE, pcmk__str_none); xmlXPathObject *xpathObj = NULL; @@ -751,7 +751,7 @@ cib_process_xpath(const char *op, int options, const char *section, } else if (pcmk__str_eq(op, PCMK__CIB_REQUEST_MODIFY, pcmk__str_none)) { uint32_t flags = pcmk__xaf_none; - if (pcmk_is_set(options, cib_score_update)) { + if (pcmk__is_set(options, cib_score_update)) { flags |= pcmk__xaf_score_update; } diff --git a/lib/cib/cib_remote.c b/lib/cib/cib_remote.c index 7d7413988f3..ec7e1ac71eb 100644 --- a/lib/cib/cib_remote.c +++ b/lib/cib/cib_remote.c @@ -85,7 +85,7 @@ cib_remote_perform_op(cib_t *cib, const char *op, const char *host, return rc; } - if (pcmk_is_set(call_options, cib_transaction)) { + if (pcmk__is_set(call_options, cib_transaction)) { rc = cib__extend_transaction(cib, op_msg); pcmk__xml_free(op_msg); return rc; diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c index 7351b71486c..094dd5b470e 100644 --- a/lib/cib/cib_utils.c +++ b/lib/cib/cib_utils.c @@ -182,7 +182,7 @@ cib_acl_enabled(xmlNode *xml, const char *user) static bool should_copy_cib(const char *op, const char *section, int call_options) { - if (pcmk_is_set(call_options, cib_dryrun)) { + if (pcmk__is_set(call_options, cib_dryrun)) { // cib_dryrun implies a scratch copy by definition; no side effects return true; } @@ -195,7 +195,7 @@ should_copy_cib(const char *op, const char *section, int call_options) return true; } - if (pcmk_is_set(call_options, cib_transaction)) { + if (pcmk__is_set(call_options, cib_transaction)) { /* If cib_transaction is set, then we're in the process of committing a * transaction. The commit-transaction request already made a scratch * copy, and we're accumulating changes in that copy. @@ -237,7 +237,7 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, bool with_digest = false; crm_trace("Begin %s%s%s op", - (pcmk_is_set(call_options, cib_dryrun)? "dry run of " : ""), + (pcmk__is_set(call_options, cib_dryrun)? "dry run of " : ""), (is_query? "read-only " : ""), op); CRM_CHECK(output != NULL, return -ENOMSG); @@ -490,7 +490,7 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, }; */ - if (*config_changed && !pcmk_is_set(call_options, cib_no_mtime)) { + if (*config_changed && !pcmk__is_set(call_options, cib_no_mtime)) { const char *schema = pcmk__xe_get(scratch, PCMK_XA_VALIDATE_WITH); if (schema == NULL) { @@ -616,7 +616,7 @@ validate_transaction_request(const xmlNode *request) return rc; } - if (!pcmk_is_set(operation->flags, cib__op_attr_transaction)) { + if (!pcmk__is_set(operation->flags, cib__op_attr_transaction)) { crm_err("Operation %s is not supported in CIB transactions", op); return EOPNOTSUPP; } diff --git a/lib/cluster/cluster.c b/lib/cluster/cluster.c index dda4b8e89ae..e296c51a6f5 100644 --- a/lib/cluster/cluster.c +++ b/lib/cluster/cluster.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. * @@ -53,7 +53,8 @@ pcmk__cluster_get_xml_id(pcmk__node_status_t *node) } // xml_id is always set when a Pacemaker Remote node entry is created - CRM_CHECK(!pcmk_is_set(node->flags, pcmk__node_status_remote), return NULL); + CRM_CHECK(!pcmk__is_set(node->flags, pcmk__node_status_remote), + return NULL); switch (cluster_layer) { #if SUPPORT_COROSYNC diff --git a/lib/cluster/corosync.c b/lib/cluster/corosync.c index 89a98aa699c..bf336136512 100644 --- a/lib/cluster/corosync.c +++ b/lib/cluster/corosync.c @@ -543,7 +543,7 @@ pcmk__corosync_is_peer_active(const pcmk__node_status_t *node) node->name, node->state); return false; } - if (!pcmk_is_set(node->processes, crm_proc_cpg)) { + if (!pcmk__is_set(node->processes, crm_proc_cpg)) { crm_trace("Corosync peer %s inactive " QB_XS " processes=%.16" PRIx32, node->name, node->processes); return false; diff --git a/lib/cluster/membership.c b/lib/cluster/membership.c index 5219bd45b4f..7d97b618363 100644 --- a/lib/cluster/membership.c +++ b/lib/cluster/membership.c @@ -292,7 +292,7 @@ remote_cache_refresh_helper(xmlNode *result, void *user_data) pcmk__update_peer_state(__func__, node, state, 0); } - } else if (pcmk_is_set(node->flags, pcmk__node_status_dirty)) { + } else if (pcmk__is_set(node->flags, pcmk__node_status_dirty)) { /* Node is in cache and hasn't been updated already, so mark it clean */ clear_peer_flags(node, pcmk__node_status_dirty); if (state) { @@ -312,7 +312,7 @@ is_dirty(gpointer key, gpointer value, gpointer user_data) { const pcmk__node_status_t *node = value; - return pcmk_is_set(node->flags, pcmk__node_status_dirty); + return pcmk__is_set(node->flags, pcmk__node_status_dirty); } /*! @@ -375,7 +375,7 @@ pcmk__cluster_is_node_active(const pcmk__node_status_t *node) { const enum pcmk_cluster_layer cluster_layer = pcmk_get_cluster_layer(); - if ((node == NULL) || pcmk_is_set(node->flags, pcmk__node_status_remote)) { + if ((node == NULL) || pcmk__is_set(node->flags, pcmk__node_status_remote)) { return false; } @@ -817,7 +817,7 @@ pcmk__search_node_caches(unsigned int id, const char *uname, pcmk__cluster_init_node_caches(); - if (pcmk_is_set(flags, pcmk__node_search_remote)) { + if (pcmk__is_set(flags, pcmk__node_search_remote)) { if (uname != NULL) { node = g_hash_table_lookup(pcmk__remote_peer_cache, uname); } else if (xml_id != NULL) { @@ -826,12 +826,12 @@ pcmk__search_node_caches(unsigned int id, const char *uname, } if ((node == NULL) - && pcmk_is_set(flags, pcmk__node_search_cluster_member)) { + && pcmk__is_set(flags, pcmk__node_search_cluster_member)) { node = search_cluster_member_cache(id, uname, xml_id); } - if ((node == NULL) && pcmk_is_set(flags, pcmk__node_search_cluster_cib)) { + if ((node == NULL) && pcmk__is_set(flags, pcmk__node_search_cluster_cib)) { if (xml_id != NULL) { node = find_cib_cluster_node(xml_id, uname); } else { @@ -955,14 +955,14 @@ pcmk__get_node(unsigned int id, const char *uname, const char *xml_id, pcmk__cluster_init_node_caches(); // Check the Pacemaker Remote node cache first - if (pcmk_is_set(flags, pcmk__node_search_remote)) { + if (pcmk__is_set(flags, pcmk__node_search_remote)) { node = g_hash_table_lookup(pcmk__remote_peer_cache, uname); if (node != NULL) { return node; } } - if (!pcmk_is_set(flags, pcmk__node_search_cluster_member)) { + if (!pcmk__is_set(flags, pcmk__node_search_cluster_member)) { return NULL; } @@ -1064,7 +1064,7 @@ update_peer_uname(pcmk__node_status_t *node, const char *uname) #if SUPPORT_COROSYNC if ((pcmk_get_cluster_layer() == pcmk_cluster_layer_corosync) - && !pcmk_is_set(node->flags, pcmk__node_status_remote)) { + && !pcmk__is_set(node->flags, pcmk__node_status_remote)) { remove_conflicting_peer(node); } @@ -1123,7 +1123,7 @@ crm_update_peer_proc(const char *source, pcmk__node_status_t *node, return NULL); /* Pacemaker doesn't spawn processes on remote nodes */ - if (pcmk_is_set(node->flags, pcmk__node_status_remote)) { + if (pcmk__is_set(node->flags, pcmk__node_status_remote)) { return node; } @@ -1161,7 +1161,7 @@ crm_update_peer_proc(const char *source, pcmk__node_status_t *node, proc2text(flag), status); } - if (pcmk_is_set(node->processes, crm_get_cluster_proc())) { + if (pcmk__is_set(node->processes, crm_get_cluster_proc())) { node->when_online = time(NULL); } else { @@ -1185,7 +1185,7 @@ crm_update_peer_proc(const char *source, pcmk__node_status_t *node, if (autoreap) { const char *peer_state = NULL; - if (pcmk_is_set(node->processes, crm_get_cluster_proc())) { + if (pcmk__is_set(node->processes, crm_get_cluster_proc())) { peer_state = PCMK_VALUE_MEMBER; } else { peer_state = PCMK__VALUE_LOST; @@ -1219,7 +1219,7 @@ pcmk__update_peer_expected(const char *source, pcmk__node_status_t *node, return); /* Remote nodes don't participate in joins */ - if (pcmk_is_set(node->flags, pcmk__node_status_remote)) { + if (pcmk__is_set(node->flags, pcmk__node_status_remote)) { return; } @@ -1296,7 +1296,7 @@ update_peer_state_iter(const char *source, pcmk__node_status_t *node, free(last); if (autoreap && !is_member - && !pcmk_is_set(node->flags, pcmk__node_status_remote)) { + && !pcmk__is_set(node->flags, pcmk__node_status_remote)) { /* We only autoreap from the peer cache, not the remote peer cache, * because the latter should be managed only by * refresh_remote_nodes(). @@ -1474,7 +1474,7 @@ cluster_node_cib_cache_refresh_helper(xmlNode *xml_node, void *user_data) g_hash_table_replace(cluster_node_cib_cache, uniqueid, node); - } else if (pcmk_is_set(node->flags, pcmk__node_status_dirty)) { + } else if (pcmk__is_set(node->flags, pcmk__node_status_dirty)) { pcmk__str_update(&node->name, uname); /* Node is in cache and hasn't been updated already, so mark it clean */ diff --git a/lib/common/acl.c b/lib/common/acl.c index 7a2011fc117..f342e63be3f 100644 --- a/lib/common/acl.c +++ b/lib/common/acl.c @@ -200,13 +200,13 @@ parse_acl_entry(const xmlNode *acl_top, const xmlNode *acl_entry, GList *acls) static const char * acl_to_text(enum pcmk__xml_flags flags) { - if (pcmk_is_set(flags, pcmk__xf_acl_deny)) { + if (pcmk__is_set(flags, pcmk__xf_acl_deny)) { return "deny"; } else if (pcmk_any_flags_set(flags, pcmk__xf_acl_write|pcmk__xf_acl_create)) { return "read/write"; - } else if (pcmk_is_set(flags, pcmk__xf_acl_read)) { + } else if (pcmk__is_set(flags, pcmk__xf_acl_read)) { return "read"; } return "none"; @@ -392,17 +392,17 @@ pcmk__enable_acl(xmlNode *acl_source, xmlNode *target, const char *user) static inline bool test_acl_mode(enum pcmk__xml_flags allowed, enum pcmk__xml_flags requested) { - if (pcmk_is_set(allowed, pcmk__xf_acl_deny)) { + if (pcmk__is_set(allowed, pcmk__xf_acl_deny)) { return false; } else if (pcmk_all_flags_set(allowed, requested)) { return true; - } else if (pcmk_is_set(requested, pcmk__xf_acl_read) - && pcmk_is_set(allowed, pcmk__xf_acl_write)) { + } else if (pcmk__is_set(requested, pcmk__xf_acl_read) + && pcmk__is_set(allowed, pcmk__xf_acl_write)) { return true; - } else if (pcmk_is_set(requested, pcmk__xf_acl_create) + } else if (pcmk__is_set(requested, pcmk__xf_acl_create) && pcmk_any_flags_set(allowed, pcmk__xf_acl_write|pcmk__xf_created)) { return true; } @@ -617,7 +617,7 @@ pcmk__apply_creation_acl(xmlNode *xml, bool check_top) { xml_node_private_t *nodepriv = xml->_private; - if (pcmk_is_set(nodepriv->flags, pcmk__xf_created)) { + if (pcmk__is_set(nodepriv->flags, pcmk__xf_created)) { if (implicitly_allowed(xml)) { crm_trace("Creation of <%s> scaffolding with " PCMK_XA_ID "=\"%s\"" " is implicitly allowed", @@ -677,7 +677,7 @@ xml_acl_denied(const xmlNode *xml) if (xml && xml->doc && xml->doc->_private){ xml_doc_private_t *docpriv = xml->doc->_private; - return pcmk_is_set(docpriv->flags, pcmk__xf_acl_denied); + return pcmk__is_set(docpriv->flags, pcmk__xf_acl_denied); } return false; } @@ -773,7 +773,7 @@ pcmk__check_acl(xmlNode *xml, const char *attr_name, enum pcmk__xml_flags mode) return true; } - if (pcmk_is_set(nodepriv->flags, pcmk__xf_acl_deny)) { + if (pcmk__is_set(nodepriv->flags, pcmk__xf_acl_deny)) { const char *pfx = (parent != xml)? "Parent " : ""; check_acl_deny(xml, attr_name, pfx, docpriv->acl_user, mode); @@ -921,7 +921,7 @@ xml_acl_enabled(const xmlNode *xml) if (xml && xml->doc && xml->doc->_private){ xml_doc_private_t *docpriv = xml->doc->_private; - return pcmk_is_set(docpriv->flags, pcmk__xf_acl_enabled); + return pcmk__is_set(docpriv->flags, pcmk__xf_acl_enabled); } return false; } diff --git a/lib/common/actions.c b/lib/common/actions.c index 6fc5a4a4f87..25a9dc4cdf9 100644 --- a/lib/common/actions.c +++ b/lib/common/actions.c @@ -582,7 +582,7 @@ crm_op_needs_metadata(const char *rsc_class, const char *op) CRM_CHECK((rsc_class != NULL) || (op != NULL), return false); if ((rsc_class != NULL) - && !pcmk_is_set(pcmk_get_ra_caps(rsc_class), pcmk_ra_cap_params)) { + && !pcmk__is_set(pcmk_get_ra_caps(rsc_class), pcmk_ra_cap_params)) { // Metadata is needed only for resource classes that use parameters return false; } diff --git a/lib/common/agents.c b/lib/common/agents.c index 2d0494ac65e..d705b2a5866 100644 --- a/lib/common/agents.c +++ b/lib/common/agents.c @@ -132,7 +132,7 @@ crm_parse_agent_spec(const char *spec, char **standard, char **provider, *standard = strndup(spec, colon - spec); spec = colon + 1; - if (pcmk_is_set(pcmk_get_ra_caps(*standard), pcmk_ra_cap_provider)) { + if (pcmk__is_set(pcmk_get_ra_caps(*standard), pcmk_ra_cap_provider)) { colon = strchr(spec, ':'); if ((colon == NULL) || (colon == spec)) { free(*standard); diff --git a/lib/common/alerts.c b/lib/common/alerts.c index d25521e4a37..abf1552453a 100644 --- a/lib/common/alerts.c +++ b/lib/common/alerts.c @@ -303,14 +303,24 @@ unpack_alert_filter(xmlNode *xml, pcmk__alert_t *entry) } if (flags != pcmk__alert_none) { + const bool attribute = pcmk__is_set(flags, pcmk__alert_attribute); + const bool fencing = pcmk__is_set(flags, pcmk__alert_fencing); + const bool node = pcmk__is_set(flags, pcmk__alert_node); + const bool resource = pcmk__is_set(flags, pcmk__alert_resource); + const char *which_attrs = "none"; + + if (attribute) { + if (entry->select_attribute_name != NULL) { + which_attrs = "some"; + } else { + which_attrs = "all"; + } + } + entry->flags = flags; crm_debug("Alert %s receives events: attributes:%s%s%s%s", - entry->id, - (pcmk_is_set(flags, pcmk__alert_attribute)? - (entry->select_attribute_name? "some" : "all") : "none"), - (pcmk_is_set(flags, pcmk__alert_fencing)? " fencing" : ""), - (pcmk_is_set(flags, pcmk__alert_node)? " nodes" : ""), - (pcmk_is_set(flags, pcmk__alert_resource)? " resources" : "")); + entry->id, which_attrs, (fencing? " fencing" : ""), + (node? " nodes" : ""), (resource? " resources" : "")); } } diff --git a/lib/common/ipc_attrd.c b/lib/common/ipc_attrd.c index 4016afc4380..8b33f0a5c73 100644 --- a/lib/common/ipc_attrd.c +++ b/lib/common/ipc_attrd.c @@ -208,7 +208,7 @@ pcmk__attrd_api_clear_failures(pcmk_ipc_api_t *api, const char *node, pcmk__xe_set(request, PCMK__XA_ATTR_CLEAR_OPERATION, operation); pcmk__xe_set(request, PCMK__XA_ATTR_CLEAR_INTERVAL, interval_spec); pcmk__xe_set_int(request, PCMK__XA_ATTR_IS_REMOTE, - pcmk_is_set(options, pcmk__node_attr_remote)); + pcmk__is_set(options, pcmk__node_attr_remote)); rc = connect_and_send_attrd_request(api, request); @@ -279,7 +279,7 @@ pcmk__attrd_api_query(pcmk_ipc_api_t *api, const char *node, const char *name, return EINVAL; } - if (pcmk_is_set(options, pcmk__node_attr_query_all)) { + if (pcmk__is_set(options, pcmk__node_attr_query_all)) { node = NULL; } else { target = pcmk__node_attr_target(node); @@ -336,9 +336,9 @@ add_op_attr(xmlNode *op, uint32_t options) { if (pcmk_all_flags_set(options, pcmk__node_attr_value | pcmk__node_attr_delay)) { pcmk__xe_set(op, PCMK_XA_TASK, PCMK__ATTRD_CMD_UPDATE_BOTH); - } else if (pcmk_is_set(options, pcmk__node_attr_value)) { + } else if (pcmk__is_set(options, pcmk__node_attr_value)) { pcmk__xe_set(op, PCMK_XA_TASK, PCMK__ATTRD_CMD_UPDATE); - } else if (pcmk_is_set(options, pcmk__node_attr_delay)) { + } else if (pcmk__is_set(options, pcmk__node_attr_delay)) { pcmk__xe_set(op, PCMK_XA_TASK, PCMK__ATTRD_CMD_UPDATE_DELAY); } } @@ -347,13 +347,13 @@ static void populate_update_op(xmlNode *op, const char *node, const char *name, const char *value, const char *dampen, const char *set, uint32_t options) { - if (pcmk_is_set(options, pcmk__node_attr_pattern)) { + if (pcmk__is_set(options, pcmk__node_attr_pattern)) { pcmk__xe_set(op, PCMK__XA_ATTR_REGEX, name); } else { pcmk__xe_set(op, PCMK__XA_ATTR_NAME, name); } - if (pcmk_is_set(options, pcmk__node_attr_utilization)) { + if (pcmk__is_set(options, pcmk__node_attr_utilization)) { pcmk__xe_set(op, PCMK__XA_ATTR_SET_TYPE, PCMK_XE_UTILIZATION); } else { pcmk__xe_set(op, PCMK__XA_ATTR_SET_TYPE, PCMK_XE_INSTANCE_ATTRIBUTES); @@ -366,13 +366,13 @@ populate_update_op(xmlNode *op, const char *node, const char *name, const char * pcmk__xe_set(op, PCMK__XA_ATTR_HOST, node); pcmk__xe_set(op, PCMK__XA_ATTR_SET, set); pcmk__xe_set_int(op, PCMK__XA_ATTR_IS_REMOTE, - pcmk_is_set(options, pcmk__node_attr_remote)); + pcmk__is_set(options, pcmk__node_attr_remote)); pcmk__xe_set_int(op, PCMK__XA_ATTR_IS_PRIVATE, - pcmk_is_set(options, pcmk__node_attr_private)); + pcmk__is_set(options, pcmk__node_attr_private)); - if (pcmk_is_set(options, pcmk__node_attr_sync_local)) { + if (pcmk__is_set(options, pcmk__node_attr_sync_local)) { pcmk__xe_set(op, PCMK__XA_ATTR_SYNC_POINT, PCMK__VALUE_LOCAL); - } else if (pcmk_is_set(options, pcmk__node_attr_sync_cluster)) { + } else if (pcmk__is_set(options, pcmk__node_attr_sync_cluster)) { pcmk__xe_set(op, PCMK__XA_ATTR_SYNC_POINT, PCMK__VALUE_CLUSTER); } } diff --git a/lib/common/ipc_client.c b/lib/common/ipc_client.c index b3a417a5f06..57e1df51865 100644 --- a/lib/common/ipc_client.c +++ b/lib/common/ipc_client.c @@ -1346,7 +1346,7 @@ crm_ipc_send(crm_ipc_t *client, const xmlNode *message, header = iov[0].iov_base; pcmk__set_ipc_flags(header->flags, client->server_name, flags); - if (pcmk_is_set(flags, crm_ipc_proxied)) { + if (pcmk__is_set(flags, crm_ipc_proxied)) { /* Don't look for a synchronous response */ pcmk__clear_ipc_flags(flags, "client", crm_ipc_client_response); } @@ -1379,7 +1379,7 @@ crm_ipc_send(crm_ipc_t *client, const xmlNode *message, } /* If we should not wait for a response, bail now */ - if (!pcmk_is_set(flags, crm_ipc_client_response)) { + if (!pcmk__is_set(flags, crm_ipc_client_response)) { crm_trace("Not waiting for reply to %s IPC request %d", client->server_name, header->qb.id); goto send_cleanup; diff --git a/lib/common/ipc_server.c b/lib/common/ipc_server.c index 3d0d8593fea..d85dec8db13 100644 --- a/lib/common/ipc_server.c +++ b/lib/common/ipc_server.c @@ -346,7 +346,7 @@ pcmk__set_client_queue_max(pcmk__client_t *client, const char *qmax) orig_value = client->queue_max; - if (pcmk_is_set(client->flags, pcmk__client_privileged)) { + if (pcmk__is_set(client->flags, pcmk__client_privileged)) { rc = pcmk__scan_ll(qmax, &qmax_ll, 0LL); if (rc == pcmk_rc_ok) { if ((qmax_ll <= 0LL) || (qmax_ll > UINT_MAX)) { @@ -412,7 +412,7 @@ pcmk__client_data2xml(pcmk__client_t *c, void *data, uint32_t *id, *flags = header->flags; } - if (pcmk_is_set(header->flags, crm_ipc_proxied)) { + if (pcmk__is_set(header->flags, crm_ipc_proxied)) { /* Mark this client as being the endpoint of a proxy connection. * Proxy connections responses are sent on the event channel, to avoid * blocking the controller serving as proxy. @@ -690,7 +690,7 @@ pcmk__ipc_send_iov(pcmk__client_t *c, struct iovec *iov, uint32_t flags) if (c->flags & pcmk__client_proxied) { /* _ALL_ replies to proxied connections need to be sent as events */ - if (!pcmk_is_set(flags, crm_ipc_server_event)) { + if (!pcmk__is_set(flags, crm_ipc_server_event)) { /* The proxied flag lets us know this was originally meant to be a * response, even though we're sending it over the event channel. */ @@ -805,7 +805,7 @@ pcmk__ipc_create_ack_as(const char *function, int line, uint32_t flags, { xmlNode *ack = NULL; - if (pcmk_is_set(flags, crm_ipc_client_response)) { + if (pcmk__is_set(flags, crm_ipc_client_response)) { ack = pcmk__xe_create(NULL, tag); pcmk__xe_set(ack, PCMK_XA_FUNCTION, function); pcmk__xe_set_int(ack, PCMK__XA_LINE, line); diff --git a/lib/common/iso8601.c b/lib/common/iso8601.c index 5c1f9d0a0ab..580e2add1e4 100644 --- a/lib/common/iso8601.c +++ b/lib/common/iso8601.c @@ -604,8 +604,8 @@ time_as_string_common(const crm_time_t *dt, int usec, uint32_t flags, * These never depend on time zone. */ - if (pcmk_is_set(flags, crm_time_log_duration)) { - crm_duration_as_string(dt, usec, pcmk_is_set(flags, crm_time_usecs), + if (pcmk__is_set(flags, crm_time_log_duration)) { + crm_duration_as_string(dt, usec, pcmk__is_set(flags, crm_time_usecs), result); return; } @@ -613,13 +613,13 @@ time_as_string_common(const crm_time_t *dt, int usec, uint32_t flags, if (pcmk_any_flags_set(flags, crm_time_seconds|crm_time_epoch)) { long long seconds = 0; - if (pcmk_is_set(flags, crm_time_seconds)) { + if (pcmk__is_set(flags, crm_time_seconds)) { seconds = crm_time_get_seconds(dt); } else { seconds = crm_time_get_seconds_since_epoch(dt); } - if (pcmk_is_set(flags, crm_time_usecs)) { + if (pcmk__is_set(flags, crm_time_usecs)) { sec_usec_as_string(seconds, usec, result, &offset); } else { snprintf(result, DATE_MAX, "%lld", seconds); @@ -628,7 +628,7 @@ time_as_string_common(const crm_time_t *dt, int usec, uint32_t flags, } // Convert to UTC if local timezone was not requested - if ((dt->offset != 0) && !pcmk_is_set(flags, crm_time_log_with_timezone)) { + if ((dt->offset != 0) && !pcmk__is_set(flags, crm_time_log_with_timezone)) { crm_trace("UTC conversion"); utc = crm_get_utc_time(dt); dt = utc; @@ -636,8 +636,8 @@ time_as_string_common(const crm_time_t *dt, int usec, uint32_t flags, // As readable string - if (pcmk_is_set(flags, crm_time_log_date)) { - if (pcmk_is_set(flags, crm_time_weeks)) { // YYYY-WW-D + if (pcmk__is_set(flags, crm_time_log_date)) { + if (pcmk__is_set(flags, crm_time_weeks)) { // YYYY-WW-D uint32_t y = 0; uint32_t w = 0; uint32_t d = 0; @@ -648,7 +648,7 @@ time_as_string_common(const crm_time_t *dt, int usec, uint32_t flags, y, w, d); } - } else if (pcmk_is_set(flags, crm_time_ordinal)) { // YYYY-DDD + } else if (pcmk__is_set(flags, crm_time_ordinal)) { // YYYY-DDD uint32_t y = 0; uint32_t d = 0; @@ -670,7 +670,7 @@ time_as_string_common(const crm_time_t *dt, int usec, uint32_t flags, } } - if (pcmk_is_set(flags, crm_time_log_timeofday)) { + if (pcmk__is_set(flags, crm_time_log_timeofday)) { uint32_t h = 0, m = 0, s = 0; if (offset > 0) { @@ -682,13 +682,13 @@ time_as_string_common(const crm_time_t *dt, int usec, uint32_t flags, "%.2" PRIu32 ":%.2" PRIu32 ":%.2" PRIu32, h, m, s); - if (pcmk_is_set(flags, crm_time_usecs)) { + if (pcmk__is_set(flags, crm_time_usecs)) { offset += snprintf(result + offset, DATE_MAX - offset, ".%06" PRIu32, QB_ABS(usec)); } } - if (pcmk_is_set(flags, crm_time_log_with_timezone) + if (pcmk__is_set(flags, crm_time_log_with_timezone) && (dt->offset != 0)) { crm_time_get_sec(dt->offset, &h, &m, &s); offset += snprintf(result + offset, DATE_MAX - offset, diff --git a/lib/common/messages.c b/lib/common/messages.c index 68717c44ea7..7ce999e17bc 100644 --- a/lib/common/messages.c +++ b/lib/common/messages.c @@ -212,7 +212,7 @@ pcmk__process_request(pcmk__request_t *request, GHashTable *handlers) CRM_CHECK((request != NULL) && (request->op != NULL) && (handlers != NULL), return NULL); - if (pcmk_is_set(request->flags, pcmk__request_sync) + if (pcmk__is_set(request->flags, pcmk__request_sync) && (request->ipc_client != NULL)) { CRM_CHECK(request->ipc_client->request_id == request->ipc_id, return NULL); diff --git a/lib/common/options_display.c b/lib/common/options_display.c index 5fd93e08711..4c10a1449be 100644 --- a/lib/common/options_display.c +++ b/lib/common/options_display.c @@ -29,7 +29,7 @@ add_possible_values_default(pcmk__output_t *out, pcmk__assert(option->type != NULL); - if (pcmk_is_set(option->flags, pcmk__opt_generated)) { + if (pcmk__is_set(option->flags, pcmk__opt_generated)) { id = _("Possible values (generated by Pacemaker)"); } @@ -134,8 +134,8 @@ option_list_default(pcmk__output_t *out, va_list args) const bool all = (bool) va_arg(args, int); const bool show_deprecated = all - || pcmk_is_set(filter, pcmk__opt_deprecated); - const bool show_advanced = all || pcmk_is_set(filter, pcmk__opt_advanced); + || pcmk__is_set(filter, pcmk__opt_deprecated); + const bool show_advanced = all || pcmk__is_set(filter, pcmk__opt_advanced); bool old_fancy = false; GSList *deprecated = NULL; @@ -157,12 +157,12 @@ option_list_default(pcmk__output_t *out, va_list args) // Store deprecated and advanced options to display later if appropriate if (pcmk_all_flags_set(option->flags, filter)) { - if (pcmk_is_set(option->flags, pcmk__opt_deprecated)) { + if (pcmk__is_set(option->flags, pcmk__opt_deprecated)) { if (show_deprecated) { deprecated = g_slist_prepend(deprecated, (gpointer) option); } - } else if (pcmk_is_set(option->flags, pcmk__opt_advanced)) { + } else if (pcmk__is_set(option->flags, pcmk__opt_advanced)) { if (show_advanced) { advanced = g_slist_prepend(advanced, (gpointer) option); } @@ -318,9 +318,9 @@ add_option_metadata_xml(pcmk__output_t *out, const char *type = option->type; const char *desc_long = option->description_long; const char *desc_short = option->description_short; - const bool advanced = pcmk_is_set(option->flags, pcmk__opt_advanced); - const bool deprecated = pcmk_is_set(option->flags, pcmk__opt_deprecated); - const bool generated = pcmk_is_set(option->flags, pcmk__opt_generated); + const bool advanced = pcmk__is_set(option->flags, pcmk__opt_advanced); + const bool deprecated = pcmk__is_set(option->flags, pcmk__opt_deprecated); + const bool generated = pcmk__is_set(option->flags, pcmk__opt_generated); // OCF requires "1"/"0" and does not allow "true"/"false // @COMPAT Variables no longer needed after we drop legacy mode diff --git a/lib/common/patchset.c b/lib/common/patchset.c index c2851ea904a..573ed277356 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -53,7 +53,7 @@ add_xml_changes_to_patchset(xmlNode *xml, xmlNode *patchset) } // If this XML node is new, just report that - if (patchset && pcmk_is_set(nodepriv->flags, pcmk__xf_created)) { + if ((patchset != NULL) && pcmk__is_set(nodepriv->flags, pcmk__xf_created)) { GString *xpath = pcmk__element_xpath(xml->parent); if (xpath != NULL) { @@ -118,7 +118,7 @@ add_xml_changes_to_patchset(xmlNode *xml, xmlNode *patchset) for (pIter = pcmk__xe_first_attr(xml); pIter != NULL; pIter = pIter->next) { nodepriv = pIter->_private; - if (!pcmk_is_set(nodepriv->flags, pcmk__xf_deleted)) { + if (!pcmk__is_set(nodepriv->flags, pcmk__xf_deleted)) { value = pcmk__xe_get(xml, (const char *) pIter->name); pcmk__xe_set(result, (const char *)pIter->name, value); } @@ -132,7 +132,7 @@ add_xml_changes_to_patchset(xmlNode *xml, xmlNode *patchset) } nodepriv = xml->_private; - if (patchset && pcmk_is_set(nodepriv->flags, pcmk__xf_moved)) { + if ((patchset != NULL) && pcmk__is_set(nodepriv->flags, pcmk__xf_moved)) { GString *xpath = pcmk__element_xpath(xml); crm_trace("%s.%s moved to position %d", @@ -163,7 +163,7 @@ is_config_change(xmlNode *xml) if (config) { nodepriv = config->_private; } - if ((nodepriv != NULL) && pcmk_is_set(nodepriv->flags, pcmk__xf_dirty)) { + if ((nodepriv != NULL) && pcmk__is_set(nodepriv->flags, pcmk__xf_dirty)) { return TRUE; } diff --git a/lib/common/resources.c b/lib/common/resources.c index 18890a99af2..993344805c4 100644 --- a/lib/common/resources.c +++ b/lib/common/resources.c @@ -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. * @@ -56,7 +56,7 @@ pcmk_resource_id(const pcmk_resource_t *rsc) bool pcmk_resource_is_managed(const pcmk_resource_t *rsc) { - return (rsc == NULL)? false : pcmk_is_set(rsc->flags, pcmk__rsc_managed); + return (rsc == NULL)? false : pcmk__is_set(rsc->flags, pcmk__rsc_managed); } /*! diff --git a/lib/common/scheduler.c b/lib/common/scheduler.c index ceaa570b0fe..db5ed2d5346 100644 --- a/lib/common/scheduler.c +++ b/lib/common/scheduler.c @@ -266,7 +266,7 @@ pcmk_has_quorum(const pcmk_scheduler_t *scheduler) if (scheduler == NULL) { return false; } - return pcmk_is_set(scheduler->flags, pcmk__sched_quorate); + return pcmk__is_set(scheduler->flags, pcmk__sched_quorate); } /*! diff --git a/lib/common/strings.c b/lib/common/strings.c index 4ee3b3d5650..dd362391366 100644 --- a/lib/common/strings.c +++ b/lib/common/strings.c @@ -1199,7 +1199,7 @@ int pcmk__strcmp(const char *s1, const char *s2, uint32_t flags) { /* If this flag is set, the second string is a regex. */ - if (pcmk_is_set(flags, pcmk__str_regex)) { + if (pcmk__is_set(flags, pcmk__str_regex)) { regex_t r_patt; int reg_flags = REG_EXTENDED | REG_NOSUB; int regcomp_rc = 0; @@ -1209,7 +1209,7 @@ pcmk__strcmp(const char *s1, const char *s2, uint32_t flags) return 1; } - if (pcmk_is_set(flags, pcmk__str_casei)) { + if (pcmk__is_set(flags, pcmk__str_casei)) { reg_flags |= REG_ICASE; } regcomp_rc = regcomp(&r_patt, s2, reg_flags); @@ -1235,7 +1235,7 @@ pcmk__strcmp(const char *s1, const char *s2, uint32_t flags) * are NULL. If neither one is NULL, we need to continue and compare * them normally. */ - if (pcmk_is_set(flags, pcmk__str_null_matches)) { + if (pcmk__is_set(flags, pcmk__str_null_matches)) { if (s1 == NULL || s2 == NULL) { return 0; } @@ -1254,13 +1254,13 @@ pcmk__strcmp(const char *s1, const char *s2, uint32_t flags) * are "*". If neither one is, we need to continue and compare them * normally. */ - if (pcmk_is_set(flags, pcmk__str_star_matches)) { + if (pcmk__is_set(flags, pcmk__str_star_matches)) { if (strcmp(s1, "*") == 0 || strcmp(s2, "*") == 0) { return 0; } } - if (pcmk_is_set(flags, pcmk__str_casei)) { + if (pcmk__is_set(flags, pcmk__str_casei)) { return strcasecmp(s1, s2); } else { return strcmp(s1, s2); diff --git a/lib/common/tests/flags/pcmk_all_flags_set_test.c b/lib/common/tests/flags/pcmk_all_flags_set_test.c index 512ccce0652..e667f33c04c 100644 --- a/lib/common/tests/flags/pcmk_all_flags_set_test.c +++ b/lib/common/tests/flags/pcmk_all_flags_set_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2020-2021 the Pacemaker project contributors + * Copyright 2020-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -23,9 +23,9 @@ all_set(void **state) { static void one_is_set(void **state) { - // pcmk_is_set() is a simple macro alias for pcmk_all_flags_set() - assert_true(pcmk_is_set(0x00f, 0x001)); - assert_false(pcmk_is_set(0x00f, 0x010)); + // pcmk__is_set() is a simple macro alias for pcmk_all_flags_set() + assert_true(pcmk__is_set(0x00f, 0x001)); + assert_false(pcmk__is_set(0x00f, 0x010)); } PCMK__UNIT_TEST(NULL, NULL, diff --git a/lib/common/tests/xml_comment/pcmk__xc_create_test.c b/lib/common/tests/xml_comment/pcmk__xc_create_test.c index a16a7da6f8d..010b463cddb 100644 --- a/lib/common/tests/xml_comment/pcmk__xc_create_test.c +++ b/lib/common/tests/xml_comment/pcmk__xc_create_test.c @@ -46,7 +46,7 @@ assert_comment(const char *content) assert_true(pcmk_all_flags_set(nodepriv->flags, pcmk__xf_dirty|pcmk__xf_created)); - assert_true(pcmk_is_set(docpriv->flags, pcmk__xf_dirty)); + assert_true(pcmk__is_set(docpriv->flags, pcmk__xf_dirty)); pcmk__xml_free(node); pcmk__xml_free_doc(doc); diff --git a/lib/common/xml.c b/lib/common/xml.c index 61099a40311..41f7555f0af 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -419,7 +419,7 @@ pcmk__xml_position(const xmlNode *xml, enum pcmk__xml_flags ignore_if_set) for (const xmlNode *cIter = xml; cIter->prev; cIter = cIter->prev) { xml_node_private_t *nodepriv = ((xmlNode*)cIter->prev)->_private; - if (!pcmk_is_set(nodepriv->flags, ignore_if_set)) { + if (!pcmk__is_set(nodepriv->flags, ignore_if_set)) { position++; } } @@ -479,7 +479,7 @@ pcmk__xml_commit_changes(xmlDoc *doc) return; } - if (pcmk_is_set(docpriv->flags, pcmk__xf_dirty)) { + if (pcmk__is_set(docpriv->flags, pcmk__xf_dirty)) { pcmk__xml_tree_foreach(xmlDocGetRootElement(doc), commit_attr_deletions, NULL); } @@ -771,7 +771,7 @@ free_xml_with_position(xmlNode *node, int position) } if (pcmk__xml_doc_all_flags_set(node->doc, pcmk__xf_tracking) - && !pcmk_is_set(nodepriv->flags, pcmk__xf_created)) { + && !pcmk__is_set(nodepriv->flags, pcmk__xf_created)) { xml_doc_private_t *docpriv = doc->_private; GString *xpath = pcmk__element_xpath(node); @@ -1255,7 +1255,7 @@ mark_created_attrs(xmlNode *new_xml) xml_node_private_t *nodepriv = attr_iter->_private; attr_iter = attr_iter->next; - if (pcmk_is_set(nodepriv->flags, pcmk__xf_created)) { + if (pcmk__is_set(nodepriv->flags, pcmk__xf_created)) { const char *attr_name = (const char *) new_attr->name; crm_trace("Created new attribute %s=%s in %s", @@ -1397,7 +1397,7 @@ new_comment_matches(const xmlNode *old_comment, const xmlNode *new_comment) { xml_node_private_t *nodepriv = new_comment->_private; - if (pcmk_is_set(nodepriv->flags, pcmk__xf_skip)) { + if (pcmk__is_set(nodepriv->flags, pcmk__xf_skip)) { /* @TODO Should we also return false if old_comment has pcmk__xf_skip * set? This preserves existing behavior at time of writing. */ diff --git a/lib/common/xml_attr.c b/lib/common/xml_attr.c index 54f263a33de..2e78196260c 100644 --- a/lib/common/xml_attr.c +++ b/lib/common/xml_attr.c @@ -90,7 +90,7 @@ pcmk__marked_as_deleted(xmlAttrPtr a, void *user_data) { xml_node_private_t *nodepriv = a->_private; - if (pcmk_is_set(nodepriv->flags, pcmk__xf_deleted)) { + if (pcmk__is_set(nodepriv->flags, pcmk__xf_deleted)) { return true; } nodepriv->flags = pcmk__xf_none; @@ -117,7 +117,7 @@ pcmk__dump_xml_attr(const xmlAttr *attr, GString *buffer) } nodepriv = attr->_private; - if (nodepriv && pcmk_is_set(nodepriv->flags, pcmk__xf_deleted)) { + if ((nodepriv != NULL) && pcmk__is_set(nodepriv->flags, pcmk__xf_deleted)) { return; } diff --git a/lib/common/xml_display.c b/lib/common/xml_display.c index cee9e667de0..87f81c48b1c 100644 --- a/lib/common/xml_display.c +++ b/lib/common/xml_display.c @@ -59,8 +59,9 @@ static int show_xml_comment(pcmk__output_t *out, const xmlNode *data, int depth, uint32_t options) { - if (pcmk_is_set(options, pcmk__xml_fmt_open)) { - int width = pcmk_is_set(options, pcmk__xml_fmt_pretty)? (2 * depth) : 0; + if (pcmk__is_set(options, pcmk__xml_fmt_open)) { + int width = + pcmk__is_set(options, pcmk__xml_fmt_pretty)? (2 * depth) : 0; return out->info(out, "%*s", width, "", (const char *) data->content); @@ -91,10 +92,10 @@ static int show_xml_element(pcmk__output_t *out, GString *buffer, const char *prefix, const xmlNode *data, int depth, uint32_t options) { - int spaces = pcmk_is_set(options, pcmk__xml_fmt_pretty)? (2 * depth) : 0; + int spaces = pcmk__is_set(options, pcmk__xml_fmt_pretty)? (2 * depth) : 0; int rc = pcmk_rc_no_output; - if (pcmk_is_set(options, pcmk__xml_fmt_open)) { + if (pcmk__is_set(options, pcmk__xml_fmt_open)) { const char *hidden = pcmk__xe_get(data, PCMK__XA_HIDDEN); g_string_truncate(buffer, 0); @@ -112,7 +113,7 @@ show_xml_element(pcmk__output_t *out, GString *buffer, const char *prefix, gchar *p_copy = NULL; if ((nodepriv == NULL) - || pcmk_is_set(nodepriv->flags, pcmk__xf_deleted)) { + || pcmk__is_set(nodepriv->flags, pcmk__xf_deleted)) { continue; } @@ -132,7 +133,7 @@ show_xml_element(pcmk__output_t *out, GString *buffer, const char *prefix, } if ((data->children != NULL) - && pcmk_is_set(options, pcmk__xml_fmt_children)) { + && pcmk__is_set(options, pcmk__xml_fmt_children)) { g_string_append_c(buffer, '>'); } else { @@ -148,7 +149,7 @@ show_xml_element(pcmk__output_t *out, GString *buffer, const char *prefix, return rc; } - if (pcmk_is_set(options, pcmk__xml_fmt_children)) { + if (pcmk__is_set(options, pcmk__xml_fmt_children)) { for (const xmlNode *child = pcmk__xml_first_child(data); child != NULL; child = pcmk__xml_next(child)) { @@ -160,7 +161,7 @@ show_xml_element(pcmk__output_t *out, GString *buffer, const char *prefix, } } - if (pcmk_is_set(options, pcmk__xml_fmt_close)) { + if (pcmk__is_set(options, pcmk__xml_fmt_close)) { int temp_rc = out->info(out, "%s%s%*s", pcmk__s(prefix, ""), pcmk__str_empty(prefix)? "" : " ", @@ -279,13 +280,13 @@ show_xml_changes_recursive(pcmk__output_t *out, const xmlNode *data, int depth, |pcmk__xml_fmt_close); } - if (pcmk_is_set(nodepriv->flags, pcmk__xf_dirty)) { + if (pcmk__is_set(nodepriv->flags, pcmk__xf_dirty)) { // Modified or moved - bool pretty = pcmk_is_set(options, pcmk__xml_fmt_pretty); + bool pretty = pcmk__is_set(options, pcmk__xml_fmt_pretty); int spaces = pretty? (2 * depth) : 0; const char *prefix = PCMK__XML_PREFIX_MODIFIED; - if (pcmk_is_set(nodepriv->flags, pcmk__xf_moved)) { + if (pcmk__is_set(nodepriv->flags, pcmk__xf_moved)) { prefix = PCMK__XML_PREFIX_MOVED; } @@ -300,23 +301,23 @@ show_xml_changes_recursive(pcmk__output_t *out, const xmlNode *data, int depth, nodepriv = attr->_private; - if (pcmk_is_set(nodepriv->flags, pcmk__xf_deleted)) { + if (pcmk__is_set(nodepriv->flags, pcmk__xf_deleted)) { const char *value = pcmk__xml_attr_value(attr); temp_rc = out->info(out, "%s %*s @%s=%s", PCMK__XML_PREFIX_DELETED, spaces, "", name, value); - } else if (pcmk_is_set(nodepriv->flags, pcmk__xf_dirty)) { + } else if (pcmk__is_set(nodepriv->flags, pcmk__xf_dirty)) { const char *value = pcmk__xml_attr_value(attr); - if (pcmk_is_set(nodepriv->flags, pcmk__xf_created)) { + if (pcmk__is_set(nodepriv->flags, pcmk__xf_created)) { prefix = PCMK__XML_PREFIX_CREATED; - } else if (pcmk_is_set(nodepriv->flags, pcmk__xf_modified)) { + } else if (pcmk__is_set(nodepriv->flags, pcmk__xf_modified)) { prefix = PCMK__XML_PREFIX_MODIFIED; - } else if (pcmk_is_set(nodepriv->flags, pcmk__xf_moved)) { + } else if (pcmk__is_set(nodepriv->flags, pcmk__xf_moved)) { prefix = PCMK__XML_PREFIX_MOVED; } else { @@ -373,7 +374,7 @@ pcmk__xml_show_changes(pcmk__output_t *out, const xmlNode *xml) pcmk__assert((out != NULL) && (xml != NULL) && (xml->doc != NULL)); docpriv = xml->doc->_private; - if (!pcmk_is_set(docpriv->flags, pcmk__xf_dirty)) { + if (!pcmk__is_set(docpriv->flags, pcmk__xf_dirty)) { return rc; } diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index 432790cedf5..8f1d927c129 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -256,12 +256,12 @@ pcmk__xe_copy_attrs(xmlNode *target, const xmlNode *src, uint32_t flags) const char *name = (const char *) attr->name; const char *value = pcmk__xml_attr_value(attr); - if (pcmk_is_set(flags, pcmk__xaf_no_overwrite) + if (pcmk__is_set(flags, pcmk__xaf_no_overwrite) && (pcmk__xe_get(target, name) != NULL)) { continue; } - if (pcmk_is_set(flags, pcmk__xaf_score_update)) { + if (pcmk__is_set(flags, pcmk__xaf_score_update)) { pcmk__xe_set_score(target, name, value); } else { pcmk__xe_set(target, name, value); diff --git a/lib/common/xml_io.c b/lib/common/xml_io.c index f6af680abd1..2740420cecb 100644 --- a/lib/common/xml_io.c +++ b/lib/common/xml_io.c @@ -214,9 +214,9 @@ static void dump_xml_element(const xmlNode *data, uint32_t options, GString *buffer, int depth) { - bool pretty = pcmk_is_set(options, pcmk__xml_fmt_pretty); - bool filtered = pcmk_is_set(options, pcmk__xml_fmt_filtered); - int spaces = pretty? (2 * depth) : 0; + const bool pretty = pcmk__is_set(options, pcmk__xml_fmt_pretty); + const bool filtered = pcmk__is_set(options, pcmk__xml_fmt_filtered); + const int spaces = pretty? (2 * depth) : 0; for (int lpc = 0; lpc < spaces; lpc++) { g_string_append_c(buffer, ' '); @@ -274,8 +274,8 @@ static void dump_xml_text(const xmlNode *data, uint32_t options, GString *buffer, int depth) { - bool pretty = pcmk_is_set(options, pcmk__xml_fmt_pretty); - int spaces = pretty? (2 * depth) : 0; + const bool pretty = pcmk__is_set(options, pcmk__xml_fmt_pretty); + const int spaces = pretty? (2 * depth) : 0; const char *content = (const char *) data->content; gchar *content_esc = NULL; @@ -309,8 +309,8 @@ static void dump_xml_cdata(const xmlNode *data, uint32_t options, GString *buffer, int depth) { - bool pretty = pcmk_is_set(options, pcmk__xml_fmt_pretty); - int spaces = pretty? (2 * depth) : 0; + const bool pretty = pcmk__is_set(options, pcmk__xml_fmt_pretty); + const int spaces = pretty? (2 * depth) : 0; for (int lpc = 0; lpc < spaces; lpc++) { g_string_append_c(buffer, ' '); @@ -337,8 +337,8 @@ static void dump_xml_comment(const xmlNode *data, uint32_t options, GString *buffer, int depth) { - bool pretty = pcmk_is_set(options, pcmk__xml_fmt_pretty); - int spaces = pretty? (2 * depth) : 0; + const bool pretty = pcmk__is_set(options, pcmk__xml_fmt_pretty); + const int spaces = pretty? (2 * depth) : 0; for (int lpc = 0; lpc < spaces; lpc++) { g_string_append_c(buffer, ' '); @@ -384,7 +384,7 @@ pcmk__xml_string(const xmlNode *data, uint32_t options, GString *buffer, dump_xml_element(data, options, buffer, depth); break; case XML_TEXT_NODE: - if (pcmk_is_set(options, pcmk__xml_fmt_text)) { + if (pcmk__is_set(options, pcmk__xml_fmt_text)) { dump_xml_text(data, options, buffer, depth); } break; diff --git a/lib/fencing/st_output.c b/lib/fencing/st_output.c index f6a7b2b4533..68a041fb4e3 100644 --- a/lib/fencing/st_output.c +++ b/lib/fencing/st_output.c @@ -102,7 +102,7 @@ stonith__history_description(const stonith_history_t *history, stonith_action_str(history->action), " of ", history->target, NULL); - if (!pcmk_is_set(show_opts, pcmk_show_failed_detail)) { + if (!pcmk__is_set(show_opts, pcmk_show_failed_detail)) { // More human-friendly if (((history->state == st_failed) || (history->state == st_done)) && (history->delegate != NULL)) { @@ -123,7 +123,7 @@ stonith__history_description(const stonith_history_t *history, pcmk__g_strcat(str, " (", history->exit_reason, ")", NULL); } - if (pcmk_is_set(show_opts, pcmk_show_failed_detail)) { + if (pcmk__is_set(show_opts, pcmk_show_failed_detail)) { // More technical g_string_append(str, ": "); diff --git a/lib/fencing/st_rhcs.c b/lib/fencing/st_rhcs.c index 8fe12e8808d..27a0bad6ebc 100644 --- a/lib/fencing/st_rhcs.c +++ b/lib/fencing/st_rhcs.c @@ -286,11 +286,11 @@ stonith__rhcs_validate(stonith_t *st, int call_options, const char *target, uint32_t device_flags = 0; stonith__device_parameter_flags(&device_flags, agent, metadata); - if (pcmk_is_set(device_flags, st_device_supports_parameter_port)) { + if (pcmk__is_set(device_flags, st_device_supports_parameter_port)) { host_arg = "port"; - } else if (pcmk_is_set(device_flags, - st_device_supports_parameter_plug)) { + } else if (pcmk__is_set(device_flags, + st_device_supports_parameter_plug)) { host_arg = "plug"; } } diff --git a/lib/lrmd/lrmd_alerts.c b/lib/lrmd/lrmd_alerts.c index a98ab5961f9..1737f3cd041 100644 --- a/lib/lrmd/lrmd_alerts.c +++ b/lib/lrmd/lrmd_alerts.c @@ -141,7 +141,7 @@ exec_alert_list(lrmd_t *lrmd, const GList *alert_list, lrmd_key_value_t *head = NULL; int rc; - if (!pcmk_is_set(entry->flags, kind)) { + if (!pcmk__is_set(entry->flags, kind)) { crm_trace("Filtering unwanted %s alert to %s via %s", kind_s, entry->recipient, entry->id); continue; diff --git a/lib/lrmd/lrmd_client.c b/lib/lrmd/lrmd_client.c index be07ec17bdd..b293f0a82ec 100644 --- a/lib/lrmd/lrmd_client.c +++ b/lib/lrmd/lrmd_client.c @@ -1826,7 +1826,7 @@ lrmd_api_register_rsc(lrmd_t * lrmd, if (!class || !type || !rsc_id) { return -EINVAL; } - if (pcmk_is_set(pcmk_get_ra_caps(class), pcmk_ra_cap_provider) + if (pcmk__is_set(pcmk_get_ra_caps(class), pcmk_ra_cap_provider) && (provider == NULL)) { return -EINVAL; } @@ -1917,8 +1917,8 @@ lrmd_api_get_rsc_info(lrmd_t * lrmd, const char *rsc_id, enum lrmd_call_options if (!class || !type) { pcmk__xml_free(output); return NULL; - } else if (pcmk_is_set(pcmk_get_ra_caps(class), pcmk_ra_cap_provider) - && !provider) { + } else if (pcmk__is_set(pcmk_get_ra_caps(class), pcmk_ra_cap_provider) + && (provider == NULL)) { pcmk__xml_free(output); return NULL; } diff --git a/lib/lrmd/proxy_common.c b/lib/lrmd/proxy_common.c index fde7de8c493..c2156bf33d3 100644 --- a/lib/lrmd/proxy_common.c +++ b/lib/lrmd/proxy_common.c @@ -271,7 +271,7 @@ remote_proxy_cb(lrmd_t *lrmd, const char *node_name, xmlNode *msg) pcmk__assert(node_name != NULL); pcmk__update_acl_user(request, PCMK__XA_LRMD_IPC_USER, node_name); - if (pcmk_is_set(flags, crm_ipc_proxied)) { + if (pcmk__is_set(flags, crm_ipc_proxied)) { const char *type = pcmk__xe_get(request, PCMK__XA_T); int rc = 0; diff --git a/lib/pacemaker/pcmk_graph_consumer.c b/lib/pacemaker/pcmk_graph_consumer.c index d69dd2ba954..2aae32d2f8d 100644 --- a/lib/pacemaker/pcmk_graph_consumer.c +++ b/lib/pacemaker/pcmk_graph_consumer.c @@ -104,7 +104,7 @@ pcmk__free_graph(pcmk__graph_t *graph) static void update_synapse_ready(pcmk__graph_synapse_t *synapse, int action_id) { - if (pcmk_is_set(synapse->flags, pcmk__synapse_ready)) { + if (pcmk__is_set(synapse->flags, pcmk__synapse_ready)) { return; // All inputs have already been confirmed } @@ -119,13 +119,13 @@ update_synapse_ready(pcmk__graph_synapse_t *synapse, int action_id) action_id, synapse->id); pcmk__set_graph_action_flags(prereq, pcmk__graph_action_confirmed); - } else if (!pcmk_is_set(prereq->flags, pcmk__graph_action_confirmed)) { + } else if (!pcmk__is_set(prereq->flags, pcmk__graph_action_confirmed)) { pcmk__clear_synapse_flags(synapse, pcmk__synapse_ready); crm_trace("Synapse %d still not ready after action %d", synapse->id, action_id); } } - if (pcmk_is_set(synapse->flags, pcmk__synapse_ready)) { + if (pcmk__is_set(synapse->flags, pcmk__synapse_ready)) { crm_trace("Synapse %d is now ready to execute", synapse->id); } } @@ -150,8 +150,9 @@ update_synapse_confirmed(pcmk__graph_synapse_t *synapse, int action_id) action_id, synapse->id); pcmk__set_graph_action_flags(action, pcmk__graph_action_confirmed); - } else if (all_confirmed && - !pcmk_is_set(action->flags, pcmk__graph_action_confirmed)) { + } else if (all_confirmed + && !pcmk__is_set(action->flags, + pcmk__graph_action_confirmed)) { all_confirmed = false; crm_trace("Synapse %d still not confirmed after action %d", synapse->id, action_id); @@ -159,7 +160,7 @@ update_synapse_confirmed(pcmk__graph_synapse_t *synapse, int action_id) } if (all_confirmed - && !pcmk_is_set(synapse->flags, pcmk__synapse_confirmed)) { + && !pcmk__is_set(synapse->flags, pcmk__synapse_confirmed)) { crm_trace("Confirmed synapse %d", synapse->id); pcmk__set_synapse_flags(synapse, pcmk__synapse_confirmed); } @@ -182,10 +183,10 @@ pcmk__update_graph(pcmk__graph_t *graph, const pcmk__graph_action_t *action) pcmk__synapse_confirmed|pcmk__synapse_failed)) { continue; // This synapse already completed - } else if (pcmk_is_set(synapse->flags, pcmk__synapse_executed)) { + } else if (pcmk__is_set(synapse->flags, pcmk__synapse_executed)) { update_synapse_confirmed(synapse, action->id); - } else if (!pcmk_is_set(action->flags, pcmk__graph_action_failed) + } else if (!pcmk__is_set(action->flags, pcmk__graph_action_failed) || (synapse->priority == PCMK_SCORE_INFINITY)) { update_synapse_ready(synapse, action->id); } @@ -237,20 +238,20 @@ should_fire_synapse(pcmk__graph_t *graph, pcmk__graph_synapse_t *synapse) for (lpc = synapse->inputs; lpc != NULL; lpc = lpc->next) { pcmk__graph_action_t *prereq = (pcmk__graph_action_t *) lpc->data; - if (!(pcmk_is_set(prereq->flags, pcmk__graph_action_confirmed))) { + if (!(pcmk__is_set(prereq->flags, pcmk__graph_action_confirmed))) { crm_trace("Input %d for synapse %d not yet confirmed", prereq->id, synapse->id); pcmk__clear_synapse_flags(synapse, pcmk__synapse_ready); break; - } else if (pcmk_is_set(prereq->flags, pcmk__graph_action_failed)) { + } else if (pcmk__is_set(prereq->flags, pcmk__graph_action_failed)) { crm_trace("Input %d for synapse %d confirmed but failed", prereq->id, synapse->id); pcmk__clear_synapse_flags(synapse, pcmk__synapse_ready); break; } } - if (pcmk_is_set(synapse->flags, pcmk__synapse_ready)) { + if (pcmk__is_set(synapse->flags, pcmk__synapse_ready)) { crm_trace("Synapse %d is ready to execute", synapse->id); } else { return false; @@ -293,7 +294,7 @@ initiate_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) const char *id = pcmk__xe_id(action->xml); CRM_CHECK(id != NULL, return EINVAL); - CRM_CHECK(!pcmk_is_set(action->flags, pcmk__graph_action_executed), + CRM_CHECK(!pcmk__is_set(action->flags, pcmk__graph_action_executed), return pcmk_rc_already); pcmk__set_graph_action_flags(action, pcmk__graph_action_executed); @@ -435,11 +436,11 @@ pcmk__execute_graph(pcmk__graph_t *graph) for (lpc = graph->synapses; lpc != NULL; lpc = lpc->next) { pcmk__graph_synapse_t *synapse = (pcmk__graph_synapse_t *) lpc->data; - if (pcmk_is_set(synapse->flags, pcmk__synapse_confirmed)) { + if (pcmk__is_set(synapse->flags, pcmk__synapse_confirmed)) { graph->completed++; - } else if (!pcmk_is_set(synapse->flags, pcmk__synapse_failed) - && pcmk_is_set(synapse->flags, pcmk__synapse_executed)) { + } else if (!pcmk__is_set(synapse->flags, pcmk__synapse_failed) + && pcmk__is_set(synapse->flags, pcmk__synapse_executed)) { graph->pending++; } } @@ -457,7 +458,7 @@ pcmk__execute_graph(pcmk__graph_t *graph) graph->batch_limit); break; - } else if (pcmk_is_set(synapse->flags, pcmk__synapse_failed)) { + } else if (pcmk__is_set(synapse->flags, pcmk__synapse_failed)) { graph->skipped++; continue; @@ -476,7 +477,7 @@ pcmk__execute_graph(pcmk__graph_t *graph) graph->fired--; } - if (!(pcmk_is_set(synapse->flags, pcmk__synapse_confirmed))) { + if (!(pcmk__is_set(synapse->flags, pcmk__synapse_confirmed))) { graph->pending++; } diff --git a/lib/pacemaker/pcmk_graph_logging.c b/lib/pacemaker/pcmk_graph_logging.c index 84a8c7798f3..c4b713c1591 100644 --- a/lib/pacemaker/pcmk_graph_logging.c +++ b/lib/pacemaker/pcmk_graph_logging.c @@ -87,16 +87,16 @@ find_graph_action_by_id(const pcmk__graph_t *graph, int id) static const char * synapse_state_str(pcmk__graph_synapse_t *synapse) { - if (pcmk_is_set(synapse->flags, pcmk__synapse_failed)) { + if (pcmk__is_set(synapse->flags, pcmk__synapse_failed)) { return "Failed"; - } else if (pcmk_is_set(synapse->flags, pcmk__synapse_confirmed)) { + } else if (pcmk__is_set(synapse->flags, pcmk__synapse_confirmed)) { return "Completed"; - } else if (pcmk_is_set(synapse->flags, pcmk__synapse_executed)) { + } else if (pcmk__is_set(synapse->flags, pcmk__synapse_executed)) { return "In-flight"; - } else if (pcmk_is_set(synapse->flags, pcmk__synapse_ready)) { + } else if (pcmk__is_set(synapse->flags, pcmk__synapse_ready)) { return "Ready"; } return "Pending"; @@ -124,10 +124,10 @@ synapse_pending_inputs(const pcmk__graph_t *graph, for (const GList *lpc = synapse->inputs; lpc != NULL; lpc = lpc->next) { const pcmk__graph_action_t *input = (pcmk__graph_action_t *) lpc->data; - if (pcmk_is_set(input->flags, pcmk__graph_action_failed)) { + if (pcmk__is_set(input->flags, pcmk__graph_action_failed)) { pcmk__add_word(&pending, 1024, pcmk__xe_id(input->xml)); - } else if (pcmk_is_set(input->flags, pcmk__graph_action_confirmed)) { + } else if (pcmk__is_set(input->flags, pcmk__graph_action_confirmed)) { // Confirmed successful inputs are not pending } else if (find_graph_action_by_id(graph, input->id) != NULL) { @@ -181,7 +181,7 @@ log_synapse(unsigned int log_level, pcmk__graph_t *graph, GString *g_pending = NULL; const char *pending = "none"; - if (!pcmk_is_set(synapse->flags, pcmk__synapse_executed)) { + if (!pcmk__is_set(synapse->flags, pcmk__synapse_executed)) { g_pending = synapse_pending_inputs(graph, synapse); if (g_pending != NULL) { @@ -198,7 +198,7 @@ log_synapse(unsigned int log_level, pcmk__graph_t *graph, g_string_free(g_pending, TRUE); } - if (!pcmk_is_set(synapse->flags, pcmk__synapse_executed)) { + if (!pcmk__is_set(synapse->flags, pcmk__synapse_executed)) { log_unresolved_inputs(log_level, graph, synapse); } } diff --git a/lib/pacemaker/pcmk_graph_producer.c b/lib/pacemaker/pcmk_graph_producer.c index 7075ed9bc80..e4e5bdd53bd 100644 --- a/lib/pacemaker/pcmk_graph_producer.c +++ b/lib/pacemaker/pcmk_graph_producer.c @@ -23,13 +23,13 @@ // Convenience macros for logging action properties #define action_type_str(flags) \ - (pcmk_is_set((flags), pcmk__action_pseudo)? "pseudo-action" : "action") + (pcmk__is_set((flags), pcmk__action_pseudo)? "pseudo-action" : "action") #define action_optional_str(flags) \ - (pcmk_is_set((flags), pcmk__action_optional)? "optional" : "required") + (pcmk__is_set((flags), pcmk__action_optional)? "optional" : "required") #define action_runnable_str(flags) \ - (pcmk_is_set((flags), pcmk__action_runnable)? "runnable" : "unrunnable") + (pcmk__is_set((flags), pcmk__action_runnable)? "runnable" : "unrunnable") #define action_node_str(a) \ (((a)->node == NULL)? "no node" : (a)->node->priv->name) @@ -92,9 +92,9 @@ add_maintenance_nodes(xmlNode *xml, const pcmk_scheduler_t *scheduler) continue; } if ((node->details->maintenance - && !pcmk_is_set(node->priv->flags, pcmk__node_remote_maint)) + && !pcmk__is_set(node->priv->flags, pcmk__node_remote_maint)) || (!node->details->maintenance - && pcmk_is_set(node->priv->flags, pcmk__node_remote_maint))) { + && pcmk__is_set(node->priv->flags, pcmk__node_remote_maint))) { if (maintenance != NULL) { pcmk__xe_set(add_node_to_xml_by_id(node->priv->id, @@ -165,8 +165,8 @@ add_downed_nodes(xmlNode *xml, const pcmk_action_t *action) } } else if ((action->rsc != NULL) - && pcmk_is_set(action->rsc->flags, - pcmk__rsc_is_remote_connection) + && pcmk__is_set(action->rsc->flags, + pcmk__rsc_is_remote_connection) && pcmk__str_eq(action->task, PCMK_ACTION_STOP, pcmk__str_none)) { @@ -268,7 +268,7 @@ add_resource_details(const pcmk_action_t *action, xmlNode *action_xml) rsc_xml = pcmk__xe_create(action_xml, (const char *) action->rsc->priv->xml->name); - if (pcmk_is_set(action->rsc->flags, pcmk__rsc_removed) + if (pcmk__is_set(action->rsc->flags, pcmk__rsc_removed) && (action->rsc->priv->history_id != NULL)) { /* Use the numbered instance name here, because if there is more * than one instance on a node, we need to make sure the command @@ -283,7 +283,7 @@ add_resource_details(const pcmk_action_t *action, xmlNode *action_xml) pcmk__xe_set(rsc_xml, PCMK_XA_ID, action->rsc->priv->history_id); pcmk__xe_set(rsc_xml, PCMK__XA_LONG_ID, action->rsc->id); - } else if (!pcmk_is_set(action->rsc->flags, pcmk__rsc_unique)) { + } else if (!pcmk__is_set(action->rsc->flags, pcmk__rsc_unique)) { const char *xml_id = pcmk__xe_id(action->rsc->priv->xml); crm_debug("Using anonymous clone name %s for %s (aka %s)", @@ -403,7 +403,7 @@ create_graph_action(xmlNode *parent, pcmk_action_t *action, bool skip_details, if (pcmk__str_eq(action->task, PCMK_ACTION_STONITH, pcmk__str_none)) { /* All fences need node info; guest node fences are pseudo-events */ - if (pcmk_is_set(action->flags, pcmk__action_pseudo)) { + if (pcmk__is_set(action->flags, pcmk__action_pseudo)) { action_xml = pcmk__xe_create(parent, PCMK__XE_PSEUDO_EVENT); } else { action_xml = pcmk__xe_create(parent, PCMK__XE_CRM_EVENT); @@ -420,7 +420,7 @@ create_graph_action(xmlNode *parent, pcmk_action_t *action, bool skip_details, action_xml = pcmk__xe_create(parent, PCMK__XE_CRM_EVENT); pcmk__xe_set(action_xml, PCMK__XA_MODE, PCMK__VALUE_CIB); - } else if (pcmk_is_set(action->flags, pcmk__action_pseudo)) { + } else if (pcmk__is_set(action->flags, pcmk__action_pseudo)) { if (pcmk__str_eq(action->task, PCMK_ACTION_MAINTENANCE_NODES, pcmk__str_none)) { needs_maintenance_info = true; @@ -465,7 +465,7 @@ create_graph_action(xmlNode *parent, pcmk_action_t *action, bool skip_details, } if ((action->rsc != NULL) - && !pcmk_is_set(action->flags, pcmk__action_pseudo)) { + && !pcmk__is_set(action->flags, pcmk__action_pseudo)) { // This is a real resource action, so add resource details add_resource_details(action, action_xml); @@ -495,14 +495,14 @@ create_graph_action(xmlNode *parent, pcmk_action_t *action, bool skip_details, static bool should_add_action_to_graph(pcmk_action_t *action) { - if (!pcmk_is_set(action->flags, pcmk__action_runnable)) { + if (!pcmk__is_set(action->flags, pcmk__action_runnable)) { crm_trace("Ignoring action %s (%d): unrunnable", action->uuid, action->id); return false; } - if (pcmk_is_set(action->flags, pcmk__action_optional) - && !pcmk_is_set(action->flags, pcmk__action_always_in_graph)) { + if (pcmk__is_set(action->flags, pcmk__action_optional) + && !pcmk__is_set(action->flags, pcmk__action_always_in_graph)) { crm_trace("Ignoring action %s (%d): optional", action->uuid, action->id); return false; @@ -512,7 +512,7 @@ should_add_action_to_graph(pcmk_action_t *action) * with the exception of monitors and cancellation of recurring monitors. */ if ((action->rsc != NULL) - && !pcmk_is_set(action->rsc->flags, pcmk__rsc_managed) + && !pcmk__is_set(action->rsc->flags, pcmk__rsc_managed) && !pcmk__str_eq(action->task, PCMK_ACTION_MONITOR, pcmk__str_none)) { const char *interval_ms_s; @@ -533,7 +533,7 @@ should_add_action_to_graph(pcmk_action_t *action) /* Always add pseudo-actions, fence actions, and shutdown actions (already * determined to be required and runnable by this point) */ - if (pcmk_is_set(action->flags, pcmk__action_pseudo) + if (pcmk__is_set(action->flags, pcmk__action_pseudo) || pcmk__strcase_any_of(action->task, PCMK_ACTION_STONITH, PCMK_ACTION_DO_SHUTDOWN, NULL)) { return true; @@ -548,14 +548,14 @@ should_add_action_to_graph(pcmk_action_t *action) return false; } - if (pcmk_is_set(action->flags, pcmk__action_on_dc)) { + if (pcmk__is_set(action->flags, pcmk__action_on_dc)) { crm_trace("Action %s (%d) should be dumped: " "can run on DC instead of %s", action->uuid, action->id, pcmk__node_name(action->node)); } else if (pcmk__is_guest_or_bundle_node(action->node) - && !pcmk_is_set(action->node->priv->flags, - pcmk__node_remote_reset)) { + && !pcmk__is_set(action->node->priv->flags, + pcmk__node_remote_reset)) { crm_trace("Action %s (%d) should be dumped: " "assuming will be runnable on guest %s", action->uuid, action->id, pcmk__node_name(action->node)); @@ -622,7 +622,7 @@ should_add_input_to_graph(const pcmk_action_t *action, input->action->uuid, input->action->id); return false; - } else if (!pcmk_is_set(input->action->flags, pcmk__action_runnable) + } else if (!pcmk__is_set(input->action->flags, pcmk__action_runnable) && !ordering_can_change_actions(input)) { crm_trace("Ignoring %s (%d) input %s (%d): " "optional and input unrunnable", @@ -630,24 +630,24 @@ should_add_input_to_graph(const pcmk_action_t *action, input->action->uuid, input->action->id); return false; - } else if (!pcmk_is_set(input->action->flags, pcmk__action_runnable) - && pcmk_is_set(input->flags, pcmk__ar_min_runnable)) { + } else if (!pcmk__is_set(input->action->flags, pcmk__action_runnable) + && pcmk__is_set(input->flags, pcmk__ar_min_runnable)) { crm_trace("Ignoring %s (%d) input %s (%d): " "minimum number of instances required but input unrunnable", action->uuid, action->id, input->action->uuid, input->action->id); return false; - } else if (pcmk_is_set(input->flags, pcmk__ar_unmigratable_then_blocks) - && !pcmk_is_set(input->action->flags, pcmk__action_runnable)) { + } else if (pcmk__is_set(input->flags, pcmk__ar_unmigratable_then_blocks) + && !pcmk__is_set(input->action->flags, pcmk__action_runnable)) { crm_trace("Ignoring %s (%d) input %s (%d): " "input blocked if 'then' unmigratable", action->uuid, action->id, input->action->uuid, input->action->id); return false; - } else if (pcmk_is_set(input->flags, pcmk__ar_if_first_unmigratable) - && pcmk_is_set(input->action->flags, pcmk__action_migratable)) { + } else if (pcmk__is_set(input->flags, pcmk__ar_if_first_unmigratable) + && pcmk__is_set(input->action->flags, pcmk__action_migratable)) { crm_trace("Ignoring %s (%d) input %s (%d): ordering applies " "only if input is unmigratable, but it is migratable", action->uuid, action->id, @@ -655,7 +655,7 @@ should_add_input_to_graph(const pcmk_action_t *action, return false; } else if ((input->flags == pcmk__ar_ordered) - && pcmk_is_set(input->action->flags, pcmk__action_migratable) + && pcmk__is_set(input->action->flags, pcmk__action_migratable) && pcmk__ends_with(input->action->uuid, "_stop_0")) { crm_trace("Ignoring %s (%d) input %s (%d): " "optional but stop in migration", @@ -697,7 +697,7 @@ should_add_input_to_graph(const pcmk_action_t *action, input->flags = pcmk__ar_none; return false; - } else if (pcmk_is_set(input->action->flags, pcmk__action_optional)) { + } else if (pcmk__is_set(input->action->flags, pcmk__action_optional)) { crm_trace("Ignoring %s (%d) input %s (%d): " "ordering optional", action->uuid, action->id, @@ -718,7 +718,7 @@ should_add_input_to_graph(const pcmk_action_t *action, input->flags = pcmk__ar_none; return false; - } else if (pcmk_is_set(input->action->flags, pcmk__action_optional)) { + } else if (pcmk__is_set(input->action->flags, pcmk__action_optional)) { crm_trace("Ignoring %s (%d) input %s (%d): optional", action->uuid, action->id, input->action->uuid, input->action->id); @@ -728,8 +728,8 @@ should_add_input_to_graph(const pcmk_action_t *action, } else if (input->action->rsc && input->action->rsc != action->rsc - && pcmk_is_set(input->action->rsc->flags, pcmk__rsc_failed) - && !pcmk_is_set(input->action->rsc->flags, pcmk__rsc_managed) + && pcmk__is_set(input->action->rsc->flags, pcmk__rsc_failed) + && !pcmk__is_set(input->action->rsc->flags, pcmk__rsc_managed) && pcmk__ends_with(input->action->uuid, "_stop_0") && pcmk__is_clone(action->rsc)) { crm_warn("Ignoring requirement that %s complete before %s:" @@ -737,7 +737,7 @@ should_add_input_to_graph(const pcmk_action_t *action, input->action->uuid, action->uuid); return false; - } else if (pcmk_is_set(input->action->flags, pcmk__action_optional) + } else if (pcmk__is_set(input->action->flags, pcmk__action_optional) && !pcmk_any_flags_set(input->action->flags, pcmk__action_always_in_graph |pcmk__action_added_to_graph) @@ -776,7 +776,7 @@ pcmk__graph_has_loop(const pcmk_action_t *init_action, { bool has_loop = false; - if (pcmk_is_set(input->action->flags, pcmk__action_detect_loop)) { + if (pcmk__is_set(input->action->flags, pcmk__action_detect_loop)) { crm_trace("Breaking tracking loop: %s@%s -> %s@%s (%#.6x)", input->action->uuid, input->action->node? input->action->node->priv->name : "", @@ -896,12 +896,12 @@ add_action_to_graph(gpointer data, gpointer user_data) * the action to the graph, so that crm_simulate's dot graphs don't have * duplicates). */ - if (!pcmk_is_set(action->flags, pcmk__action_inputs_deduplicated)) { + if (!pcmk__is_set(action->flags, pcmk__action_inputs_deduplicated)) { pcmk__deduplicate_action_inputs(action); pcmk__set_action_flags(action, pcmk__action_inputs_deduplicated); } - if (pcmk_is_set(action->flags, pcmk__action_added_to_graph) + if (pcmk__is_set(action->flags, pcmk__action_added_to_graph) || !should_add_action_to_graph(action)) { return; // Already added, or shouldn't be } @@ -943,14 +943,14 @@ void pcmk__log_transition_summary(const pcmk_scheduler_t *scheduler, const char *filename) { - if (pcmk_is_set(scheduler->flags, pcmk__sched_processing_error) + if (pcmk__is_set(scheduler->flags, pcmk__sched_processing_error) || pcmk__config_has_error) { crm_err("Calculated transition %d (with errors)%s%s", transition_id, (filename == NULL)? "" : ", saving inputs in ", (filename == NULL)? "" : filename); - } else if (pcmk_is_set(scheduler->flags, pcmk__sched_processing_warning) + } else if (pcmk__is_set(scheduler->flags, pcmk__sched_processing_warning) || pcmk__config_has_warning) { crm_warn("Calculated transition %d (with warnings)%s%s", transition_id, @@ -1025,7 +1025,7 @@ pcmk__create_graph(pcmk_scheduler_t *scheduler) pcmk__xe_set(scheduler->priv->graph, PCMK__XA_FAILED_STOP_OFFSET, PCMK_VALUE_INFINITY); - if (pcmk_is_set(scheduler->flags, pcmk__sched_start_failure_fatal)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_start_failure_fatal)) { pcmk__xe_set(scheduler->priv->graph, PCMK__XA_FAILED_START_OFFSET, PCMK_VALUE_INFINITY); } else { @@ -1074,7 +1074,7 @@ pcmk__create_graph(pcmk_scheduler_t *scheduler) if ((action->rsc != NULL) && (action->node != NULL) && action->node->details->shutdown - && !pcmk_is_set(action->rsc->flags, pcmk__rsc_maintenance) + && !pcmk__is_set(action->rsc->flags, pcmk__rsc_maintenance) && !pcmk_any_flags_set(action->flags, pcmk__action_optional|pcmk__action_runnable) && pcmk__str_eq(action->task, PCMK_ACTION_STOP, pcmk__str_none)) { @@ -1082,12 +1082,12 @@ pcmk__create_graph(pcmk_scheduler_t *scheduler) * it's the best way to detect (in CTS) when CIB resource updates * are being lost. */ - if (pcmk_is_set(scheduler->flags, pcmk__sched_quorate) + if (pcmk__is_set(scheduler->flags, pcmk__sched_quorate) || (scheduler->no_quorum_policy == pcmk_no_quorum_ignore)) { - const bool managed = pcmk_is_set(action->rsc->flags, - pcmk__rsc_managed); - const bool failed = pcmk_is_set(action->rsc->flags, - pcmk__rsc_failed); + const bool managed = pcmk__is_set(action->rsc->flags, + pcmk__rsc_managed); + const bool failed = pcmk__is_set(action->rsc->flags, + pcmk__rsc_failed); crm_crit("Cannot %s %s because of %s:%s%s (%s)", action->node->details->unclean? "fence" : "shut down", diff --git a/lib/pacemaker/pcmk_injections.c b/lib/pacemaker/pcmk_injections.c index 1f0ee2ca217..019421d1044 100644 --- a/lib/pacemaker/pcmk_injections.c +++ b/lib/pacemaker/pcmk_injections.c @@ -453,7 +453,7 @@ pcmk__inject_resource_history(pcmk__output_t *out, xmlNode *cib_node, out->err(out, "Invalid class for %s: %s", resource, rclass); return NULL; - } else if (pcmk_is_set(pcmk_get_ra_caps(rclass), pcmk_ra_cap_provider) + } else if (pcmk__is_set(pcmk_get_ra_caps(rclass), pcmk_ra_cap_provider) && (rprovider == NULL)) { // @TODO query configuration for provider out->err(out, "Please specify the provider for resource %s", resource); @@ -609,8 +609,8 @@ inject_action(pcmk__output_t *out, const char *spec, cib_t *cib, infinity = true; } else if (pcmk__str_eq(task, PCMK_ACTION_START, pcmk__str_none) - && pcmk_is_set(scheduler->flags, - pcmk__sched_start_failure_fatal)) { + && pcmk__is_set(scheduler->flags, + pcmk__sched_start_failure_fatal)) { infinity = true; } diff --git a/lib/pacemaker/pcmk_output.c b/lib/pacemaker/pcmk_output.c index 5698fe71874..5d676a0e947 100644 --- a/lib/pacemaker/pcmk_output.c +++ b/lib/pacemaker/pcmk_output.c @@ -215,13 +215,13 @@ rsc_action_item(pcmk__output_t *out, va_list args) } if ((source->reason != NULL) - && !pcmk_is_set(action->flags, pcmk__action_runnable)) { + && !pcmk__is_set(action->flags, pcmk__action_runnable)) { reason = pcmk__assert_asprintf("due to %s (blocked)", source->reason); } else if (source->reason) { reason = pcmk__assert_asprintf("due to %s", source->reason); - } else if (!pcmk_is_set(action->flags, pcmk__action_runnable)) { + } else if (!pcmk__is_set(action->flags, pcmk__action_runnable)) { reason = strdup("blocked"); } @@ -359,7 +359,7 @@ rsc_action_item_xml(pcmk__output_t *out, va_list args) } if ((source->reason != NULL) - && !pcmk_is_set(action->flags, pcmk__action_runnable)) { + && !pcmk__is_set(action->flags, pcmk__action_runnable)) { pcmk__xe_set_props(xml, PCMK_XA_REASON, source->reason, PCMK_XA_BLOCKED, PCMK_VALUE_TRUE, @@ -368,7 +368,7 @@ rsc_action_item_xml(pcmk__output_t *out, va_list args) } else if (source->reason != NULL) { pcmk__xe_set(xml, PCMK_XA_REASON, source->reason); - } else if (!pcmk_is_set(action->flags, pcmk__action_runnable)) { + } else if (!pcmk__is_set(action->flags, pcmk__action_runnable)) { pcmk__xe_set_bool_attr(xml, PCMK_XA_BLOCKED, true); } @@ -384,7 +384,7 @@ rsc_is_colocated_with_list(pcmk__output_t *out, va_list args) { int rc = pcmk_rc_no_output; - if (pcmk_is_set(rsc->flags, pcmk__rsc_detect_loop)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_detect_loop)) { return rc; } @@ -401,7 +401,7 @@ rsc_is_colocated_with_list(pcmk__output_t *out, va_list args) { PCMK__OUTPUT_LIST_HEADER(out, false, rc, "Resources %s is colocated with", rsc->id); - if (pcmk_is_set(cons->primary->flags, pcmk__rsc_detect_loop)) { + if (pcmk__is_set(cons->primary->flags, pcmk__rsc_detect_loop)) { out->list_item(out, NULL, "%s (id=%s - loop)", cons->primary->id, cons->id); continue; @@ -435,7 +435,7 @@ rsc_is_colocated_with_list_xml(pcmk__output_t *out, va_list args) { int rc = pcmk_rc_no_output; - if (pcmk_is_set(rsc->flags, pcmk__rsc_detect_loop)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_detect_loop)) { return rc; } @@ -448,7 +448,7 @@ rsc_is_colocated_with_list_xml(pcmk__output_t *out, va_list args) { lpc != NULL; lpc = lpc->next) { pcmk__colocation_t *cons = (pcmk__colocation_t *) lpc->data; - if (pcmk_is_set(cons->primary->flags, pcmk__rsc_detect_loop)) { + if (pcmk__is_set(cons->primary->flags, pcmk__rsc_detect_loop)) { colocations_xml_node(out, cons->primary, cons); continue; } @@ -473,7 +473,7 @@ rscs_colocated_with_list(pcmk__output_t *out, va_list args) { int rc = pcmk_rc_no_output; - if (pcmk_is_set(rsc->flags, pcmk__rsc_detect_loop)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_detect_loop)) { return rc; } @@ -490,7 +490,7 @@ rscs_colocated_with_list(pcmk__output_t *out, va_list args) { PCMK__OUTPUT_LIST_HEADER(out, false, rc, "Resources colocated with %s", rsc->id); - if (pcmk_is_set(cons->dependent->flags, pcmk__rsc_detect_loop)) { + if (pcmk__is_set(cons->dependent->flags, pcmk__rsc_detect_loop)) { out->list_item(out, NULL, "%s (id=%s - loop)", cons->dependent->id, cons->id); continue; @@ -524,7 +524,7 @@ rscs_colocated_with_list_xml(pcmk__output_t *out, va_list args) { int rc = pcmk_rc_no_output; - if (pcmk_is_set(rsc->flags, pcmk__rsc_detect_loop)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_detect_loop)) { return rc; } @@ -537,7 +537,7 @@ rscs_colocated_with_list_xml(pcmk__output_t *out, va_list args) { lpc != NULL; lpc = lpc->next) { pcmk__colocation_t *cons = (pcmk__colocation_t *) lpc->data; - if (pcmk_is_set(cons->dependent->flags, pcmk__rsc_detect_loop)) { + if (pcmk__is_set(cons->dependent->flags, pcmk__rsc_detect_loop)) { colocations_xml_node(out, cons->dependent, cons); continue; } @@ -1087,10 +1087,11 @@ digests_xml(pcmk__output_t *out, va_list args) crm_err("%s:%d: No stop action exists for %s", \ __func__, lineno, rsc->id); \ pcmk__assert(stop != NULL); \ - } else if (pcmk_is_set(stop->flags, pcmk__action_optional)) { \ + } else if (pcmk__is_set(stop->flags, pcmk__action_optional)) { \ crm_err("%s:%d: Action %s is still optional", \ __func__, lineno, stop->uuid); \ - pcmk__assert(!pcmk_is_set(stop->flags, pcmk__action_optional)); \ + pcmk__assert(!pcmk__is_set(stop->flags, \ + pcmk__action_optional)); \ } \ } while (0) @@ -1115,9 +1116,9 @@ rsc_action_default(pcmk__output_t *out, va_list args) pcmk_action_t *demote = NULL; pcmk_action_t *reason_op = NULL; - if (!pcmk_is_set(rsc->flags, pcmk__rsc_managed) - || (current == NULL && next == NULL)) { - const bool managed = pcmk_is_set(rsc->flags, pcmk__rsc_managed); + if (!pcmk__is_set(rsc->flags, pcmk__rsc_managed) + || ((current == NULL) && (next == NULL))) { + const bool managed = pcmk__is_set(rsc->flags, pcmk__rsc_managed); pcmk__rsc_info(rsc, "Leave %s\t(%s%s)", rsc->id, pcmk_role_text(rsc->priv->orig_role), @@ -1136,7 +1137,7 @@ rsc_action_default(pcmk__output_t *out, va_list args) } if ((start == NULL) - || !pcmk_is_set(start->flags, pcmk__action_runnable)) { + || !pcmk__is_set(start->flags, pcmk__action_runnable)) { start_node = NULL; } else { start_node = current; @@ -1146,7 +1147,7 @@ rsc_action_default(pcmk__output_t *out, va_list args) if (possible_matches) { stop = possible_matches->data; g_list_free(possible_matches); - } else if (pcmk_is_set(rsc->flags, pcmk__rsc_stop_unexpected)) { + } else if (pcmk__is_set(rsc->flags, pcmk__rsc_stop_unexpected)) { /* The resource is multiply active with PCMK_META_MULTIPLE_ACTIVE set to * PCMK_VALUE_STOP_UNEXPECTED, and not stopping on its current node, but * it should be stopping elsewhere. @@ -1186,19 +1187,19 @@ rsc_action_default(pcmk__output_t *out, va_list args) } if ((migrate_op != NULL) && (current != NULL) - && pcmk_is_set(migrate_op->flags, pcmk__action_runnable)) { + && pcmk__is_set(migrate_op->flags, pcmk__action_runnable)) { rc = out->message(out, "rsc-action-item", "Migrate", rsc, current, next, start, NULL); - } else if (pcmk_is_set(rsc->flags, pcmk__rsc_reload)) { + } else if (pcmk__is_set(rsc->flags, pcmk__rsc_reload)) { rc = out->message(out, "rsc-action-item", "Reload", rsc, current, next, start, NULL); } else if ((start == NULL) - || pcmk_is_set(start->flags, pcmk__action_optional)) { + || pcmk__is_set(start->flags, pcmk__action_optional)) { if ((demote != NULL) && (promote != NULL) - && !pcmk_is_set(demote->flags, pcmk__action_optional) - && !pcmk_is_set(promote->flags, pcmk__action_optional)) { + && !pcmk__is_set(demote->flags, pcmk__action_optional) + && !pcmk__is_set(promote->flags, pcmk__action_optional)) { rc = out->message(out, "rsc-action-item", "Re-promote", rsc, current, next, promote, demote); } else { @@ -1207,7 +1208,7 @@ rsc_action_default(pcmk__output_t *out, va_list args) pcmk__node_name(next)); } - } else if (!pcmk_is_set(start->flags, pcmk__action_runnable)) { + } else if (!pcmk__is_set(start->flags, pcmk__action_runnable)) { if ((stop == NULL) || (stop->reason == NULL)) { reason_op = start; } else { @@ -1218,13 +1219,13 @@ rsc_action_default(pcmk__output_t *out, va_list args) STOP_SANITY_ASSERT(__LINE__); } else if (moving && current) { - const bool failed = pcmk_is_set(rsc->flags, pcmk__rsc_failed); + const bool failed = pcmk__is_set(rsc->flags, pcmk__rsc_failed); rc = out->message(out, "rsc-action-item", (failed? "Recover" : "Move"), rsc, current, next, stop, NULL); - } else if (pcmk_is_set(rsc->flags, pcmk__rsc_failed)) { + } else if (pcmk__is_set(rsc->flags, pcmk__rsc_failed)) { rc = out->message(out, "rsc-action-item", "Recover", rsc, current, NULL, stop, NULL); STOP_SANITY_ASSERT(__LINE__); @@ -1247,7 +1248,7 @@ rsc_action_default(pcmk__output_t *out, va_list args) if ((stop != NULL) && ((rsc->priv->next_role == pcmk_role_stopped) || ((start != NULL) - && !pcmk_is_set(start->flags, pcmk__action_runnable)))) { + && !pcmk__is_set(start->flags, pcmk__action_runnable)))) { key = stop_key(rsc); for (GList *iter = rsc->priv->active_nodes; @@ -1264,7 +1265,7 @@ rsc_action_default(pcmk__output_t *out, va_list args) } if (stop_op != NULL) { - if (pcmk_is_set(stop_op->flags, pcmk__action_runnable)) { + if (pcmk__is_set(stop_op->flags, pcmk__action_runnable)) { STOP_SANITY_ASSERT(__LINE__); } if (stop_op->reason != NULL) { @@ -1294,12 +1295,12 @@ rsc_action_default(pcmk__output_t *out, va_list args) stop, NULL); STOP_SANITY_ASSERT(__LINE__); - } else if (pcmk_is_set(rsc->flags, pcmk__rsc_reload)) { + } else if (pcmk__is_set(rsc->flags, pcmk__rsc_reload)) { rc = out->message(out, "rsc-action-item", "Reload", rsc, current, next, start, NULL); } else if ((stop != NULL) - && !pcmk_is_set(stop->flags, pcmk__action_optional)) { + && !pcmk__is_set(stop->flags, pcmk__action_optional)) { rc = out->message(out, "rsc-action-item", "Restart", rsc, current, next, start, NULL); STOP_SANITY_ASSERT(__LINE__); @@ -1831,19 +1832,19 @@ pcmk__cluster_status_text(pcmk__output_t *out, va_list args) CHECK_RC(rc, out->message(out, "cluster-summary", scheduler, pcmkd_state, section_opts, show_opts)); - if (pcmk_is_set(section_opts, pcmk_section_nodes) && unames) { + if (pcmk__is_set(section_opts, pcmk_section_nodes) && unames) { CHECK_RC(rc, out->message(out, "node-list", scheduler->nodes, unames, resources, show_opts, rc == pcmk_rc_ok)); } /* Print resources section, if needed */ - if (pcmk_is_set(section_opts, pcmk_section_resources)) { + if (pcmk__is_set(section_opts, pcmk_section_resources)) { CHECK_RC(rc, out->message(out, "resource-list", scheduler, show_opts, true, unames, resources, rc == pcmk_rc_ok)); } /* print Node Attributes section if requested */ - if (pcmk_is_set(section_opts, pcmk_section_attributes)) { + if (pcmk__is_set(section_opts, pcmk_section_attributes)) { CHECK_RC(rc, out->message(out, "node-attribute-list", scheduler, show_opts, (rc == pcmk_rc_ok), unames, resources)); @@ -1860,7 +1861,7 @@ pcmk__cluster_status_text(pcmk__output_t *out, va_list args) } /* If there were any failed actions, print them */ - if (pcmk_is_set(section_opts, pcmk_section_failures) + if (pcmk__is_set(section_opts, pcmk_section_failures) && (scheduler->priv->failed != NULL) && (scheduler->priv->failed->children != NULL)) { @@ -1869,7 +1870,7 @@ pcmk__cluster_status_text(pcmk__output_t *out, va_list args) } /* Print failed stonith actions */ - if (pcmk_is_set(section_opts, pcmk_section_fence_failed) && + if (pcmk__is_set(section_opts, pcmk_section_fence_failed) && fence_history != pcmk__fence_history_none) { if (history_rc == 0) { stonith_history_t *hp = NULL; @@ -1894,14 +1895,14 @@ pcmk__cluster_status_text(pcmk__output_t *out, va_list args) } /* Print tickets if requested */ - if (pcmk_is_set(section_opts, pcmk_section_tickets)) { + if (pcmk__is_set(section_opts, pcmk_section_tickets)) { CHECK_RC(rc, out->message(out, "ticket-list", scheduler->priv->ticket_constraints, (rc == pcmk_rc_ok), false, false)); } /* Print negative location constraints if requested */ - if (pcmk_is_set(section_opts, pcmk_section_bans)) { + if (pcmk__is_set(section_opts, pcmk_section_bans)) { CHECK_RC(rc, out->message(out, "ban-list", scheduler, prefix, resources, show_opts, rc == pcmk_rc_ok)); } @@ -1917,7 +1918,7 @@ pcmk__cluster_status_text(pcmk__output_t *out, va_list args) crm_exit_str(history_rc)); out->end_list(out); } - } else if (pcmk_is_set(section_opts, pcmk_section_fence_worked)) { + } else if (pcmk__is_set(section_opts, pcmk_section_fence_worked)) { stonith_history_t *hp = NULL; hp = stonith__first_matching_event(stonith_history, @@ -1928,7 +1929,7 @@ pcmk__cluster_status_text(pcmk__output_t *out, va_list args) section_opts, show_opts, rc == pcmk_rc_ok)); } - } else if (pcmk_is_set(section_opts, pcmk_section_fence_pending)) { + } else if (pcmk__is_set(section_opts, pcmk_section_fence_pending)) { stonith_history_t *hp = NULL; hp = stonith__first_matching_event(stonith_history, @@ -1968,13 +1969,13 @@ cluster_status_xml(pcmk__output_t *out, va_list args) show_opts); /*** NODES ***/ - if (pcmk_is_set(section_opts, pcmk_section_nodes)) { + if (pcmk__is_set(section_opts, pcmk_section_nodes)) { out->message(out, "node-list", scheduler->nodes, unames, resources, show_opts, false); } /* Print resources section, if needed */ - if (pcmk_is_set(section_opts, pcmk_section_resources)) { + if (pcmk__is_set(section_opts, pcmk_section_resources)) { /* XML output always displays full details. */ uint32_t full_show_opts = show_opts & ~pcmk_show_brief; @@ -1983,7 +1984,7 @@ cluster_status_xml(pcmk__output_t *out, va_list args) } /* print Node Attributes section if requested */ - if (pcmk_is_set(section_opts, pcmk_section_attributes)) { + if (pcmk__is_set(section_opts, pcmk_section_attributes)) { out->message(out, "node-attribute-list", scheduler, show_opts, false, unames, resources); } @@ -1998,7 +1999,7 @@ cluster_status_xml(pcmk__output_t *out, va_list args) } /* If there were any failed actions, print them */ - if (pcmk_is_set(section_opts, pcmk_section_failures) + if (pcmk__is_set(section_opts, pcmk_section_failures) && (scheduler->priv->failed != NULL) && (scheduler->priv->failed->children != NULL)) { @@ -2007,20 +2008,20 @@ cluster_status_xml(pcmk__output_t *out, va_list args) } /* Print stonith history */ - if (pcmk_is_set(section_opts, pcmk_section_fencing_all) && - fence_history != pcmk__fence_history_none) { + if (pcmk__is_set(section_opts, pcmk_section_fencing_all) + && (fence_history != pcmk__fence_history_none)) { out->message(out, "full-fencing-list", history_rc, stonith_history, unames, section_opts, show_opts, false); } /* Print tickets if requested */ - if (pcmk_is_set(section_opts, pcmk_section_tickets)) { + if (pcmk__is_set(section_opts, pcmk_section_tickets)) { out->message(out, "ticket-list", scheduler->priv->ticket_constraints, false, false, false); } /* Print negative location constraints if requested */ - if (pcmk_is_set(section_opts, pcmk_section_bans)) { + if (pcmk__is_set(section_opts, pcmk_section_bans)) { out->message(out, "ban-list", scheduler, prefix, resources, show_opts, false); } @@ -2052,19 +2053,19 @@ cluster_status_html(pcmk__output_t *out, va_list args) show_opts); /*** NODE LIST ***/ - if (pcmk_is_set(section_opts, pcmk_section_nodes) && unames) { + if (pcmk__is_set(section_opts, pcmk_section_nodes) && (unames != NULL)) { out->message(out, "node-list", scheduler->nodes, unames, resources, show_opts, false); } /* Print resources section, if needed */ - if (pcmk_is_set(section_opts, pcmk_section_resources)) { + if (pcmk__is_set(section_opts, pcmk_section_resources)) { out->message(out, "resource-list", scheduler, show_opts, true, unames, resources, false); } /* print Node Attributes section if requested */ - if (pcmk_is_set(section_opts, pcmk_section_attributes)) { + if (pcmk__is_set(section_opts, pcmk_section_attributes)) { out->message(out, "node-attribute-list", scheduler, show_opts, false, unames, resources); } @@ -2079,7 +2080,7 @@ cluster_status_html(pcmk__output_t *out, va_list args) } /* If there were any failed actions, print them */ - if (pcmk_is_set(section_opts, pcmk_section_failures) + if (pcmk__is_set(section_opts, pcmk_section_failures) && (scheduler->priv->failed != NULL) && (scheduler->priv->failed->children != NULL)) { @@ -2088,8 +2089,9 @@ cluster_status_html(pcmk__output_t *out, va_list args) } /* Print failed stonith actions */ - if (pcmk_is_set(section_opts, pcmk_section_fence_failed) && - fence_history != pcmk__fence_history_none) { + if (pcmk__is_set(section_opts, pcmk_section_fence_failed) + && (fence_history != pcmk__fence_history_none)) { + if (history_rc == 0) { stonith_history_t *hp = NULL; @@ -2118,7 +2120,7 @@ cluster_status_html(pcmk__output_t *out, va_list args) crm_exit_str(history_rc)); out->end_list(out); } - } else if (pcmk_is_set(section_opts, pcmk_section_fence_worked)) { + } else if (pcmk__is_set(section_opts, pcmk_section_fence_worked)) { stonith_history_t *hp = NULL; hp = stonith__first_matching_event(stonith_history, @@ -2128,7 +2130,7 @@ cluster_status_html(pcmk__output_t *out, va_list args) out->message(out, "fencing-list", hp, unames, section_opts, show_opts, false); } - } else if (pcmk_is_set(section_opts, pcmk_section_fence_pending)) { + } else if (pcmk__is_set(section_opts, pcmk_section_fence_pending)) { stonith_history_t *hp = NULL; hp = stonith__first_matching_event(stonith_history, @@ -2142,13 +2144,13 @@ cluster_status_html(pcmk__output_t *out, va_list args) } /* Print tickets if requested */ - if (pcmk_is_set(section_opts, pcmk_section_tickets)) { + if (pcmk__is_set(section_opts, pcmk_section_tickets)) { out->message(out, "ticket-list", scheduler->priv->ticket_constraints, false, false, false); } /* Print negative location constraints if requested */ - if (pcmk_is_set(section_opts, pcmk_section_bans)) { + if (pcmk__is_set(section_opts, pcmk_section_bans)) { out->message(out, "ban-list", scheduler, prefix, resources, show_opts, false); } diff --git a/lib/pacemaker/pcmk_result_code.c b/lib/pacemaker/pcmk_result_code.c index b45eee18d51..23d38bf81c9 100644 --- a/lib/pacemaker/pcmk_result_code.c +++ b/lib/pacemaker/pcmk_result_code.c @@ -1,5 +1,5 @@ /* - * Copyright 2022 the Pacemaker project contributors + * Copyright 2022-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -47,11 +47,11 @@ pcmk__show_result_code(pcmk__output_t *out, int code, } // out->quiet controls whether the code is shown (if quiet is supported) - out->quiet = !pcmk_is_set(flags, pcmk_rc_disp_code); + out->quiet = !pcmk__is_set(flags, pcmk_rc_disp_code); out->message(out, "result-code", code, - pcmk_is_set(flags, pcmk_rc_disp_name)? name : NULL, - pcmk_is_set(flags, pcmk_rc_disp_desc)? desc : NULL); + pcmk__is_set(flags, pcmk_rc_disp_name)? name : NULL, + pcmk__is_set(flags, pcmk_rc_disp_desc)? desc : NULL); out->quiet = quiet_orig; return rc; @@ -133,11 +133,11 @@ pcmk__list_result_codes(pcmk__output_t *out, enum pcmk_result_type type, } // out->quiet controls whether the code is shown (if quiet is supported) - out->quiet = !pcmk_is_set(flags, pcmk_rc_disp_code); + out->quiet = !pcmk__is_set(flags, pcmk_rc_disp_code); out->message(out, "result-code", code, - pcmk_is_set(flags, pcmk_rc_disp_name)? name : NULL, - pcmk_is_set(flags, pcmk_rc_disp_desc)? desc : NULL); + pcmk__is_set(flags, pcmk_rc_disp_name)? name : NULL, + pcmk__is_set(flags, pcmk_rc_disp_desc)? desc : NULL); out->quiet = quiet_orig; code++; diff --git a/lib/pacemaker/pcmk_sched_actions.c b/lib/pacemaker/pcmk_sched_actions.c index 90f9658adaf..0fc5a4080ab 100644 --- a/lib/pacemaker/pcmk_sched_actions.c +++ b/lib/pacemaker/pcmk_sched_actions.c @@ -54,7 +54,7 @@ action_flags_for_ordering(pcmk_action_t *action, const pcmk_node_t *node) /* Otherwise (i.e., for clone resource actions on a specific node), first * remember whether the non-node-specific action is runnable. */ - runnable = pcmk_is_set(flags, pcmk__action_runnable); + runnable = pcmk__is_set(flags, pcmk__action_runnable); // Then recheck the resource method with the node flags = action->rsc->priv->cmds->action_flags(action, node); @@ -67,7 +67,7 @@ action_flags_for_ordering(pcmk_action_t *action, const pcmk_node_t *node) * function shouldn't be used for other types of constraints without * changes. Not very satisfying, but it's logical and appears to work well. */ - if (runnable && !pcmk_is_set(flags, pcmk__action_runnable)) { + if (runnable && !pcmk__is_set(flags, pcmk__action_runnable)) { pcmk__set_raw_action_flags(flags, action->rsc->id, pcmk__action_runnable); } @@ -144,7 +144,7 @@ action_uuid_for_ordering(const char *first_uuid, /* If a clone or bundle has notifications enabled, the ordering will be * relative to when notifications have been sent for the remapped task. */ - if (pcmk_is_set(first_rsc->flags, pcmk__rsc_notify) + if (pcmk__is_set(first_rsc->flags, pcmk__rsc_notify) && (pcmk__is_clone(first_rsc) || pcmk__is_bundled(first_rsc))) { uuid = pcmk__notify_key(rid, "confirmed-post", pcmk__action_text(remapped_task)); @@ -259,7 +259,7 @@ update_action_for_ordering_flags(pcmk_action_t *first, pcmk_action_t *then, */ pcmk_node_t *node = then->node; - if (pcmk_is_set(order->flags, pcmk__ar_first_implies_same_node_then)) { + if (pcmk__is_set(order->flags, pcmk__ar_first_implies_same_node_then)) { /* For unfencing, only instances of 'then' on the same node as 'first' * (the unfencing operation) should restart, so reset node to * first->node, at which point this case is handled like a normal @@ -276,14 +276,14 @@ update_action_for_ordering_flags(pcmk_action_t *first, pcmk_action_t *then, first->uuid, then->uuid, pcmk__node_name(node)); } - if (pcmk_is_set(order->flags, pcmk__ar_first_implies_then)) { + if (pcmk__is_set(order->flags, pcmk__ar_first_implies_then)) { if (then->rsc != NULL) { changed |= update(then->rsc, first, then, node, first_flags & pcmk__action_optional, pcmk__action_optional, pcmk__ar_first_implies_then, scheduler); - } else if (!pcmk_is_set(first_flags, pcmk__action_optional) - && pcmk_is_set(then->flags, pcmk__action_optional)) { + } else if (!pcmk__is_set(first_flags, pcmk__action_optional) + && pcmk__is_set(then->flags, pcmk__action_optional)) { pcmk__clear_action_flags(then, pcmk__action_optional); pcmk__set_updated_flags(changed, first, pcmk__updated_then); } @@ -293,7 +293,7 @@ update_action_for_ordering_flags(pcmk_action_t *first, pcmk_action_t *then, (changed? "changed" : "unchanged")); } - if (pcmk_is_set(order->flags, pcmk__ar_intermediate_stop) + if (pcmk__is_set(order->flags, pcmk__ar_intermediate_stop) && (then->rsc != NULL)) { enum pcmk__action_flags restart = pcmk__action_optional |pcmk__action_runnable; @@ -306,13 +306,13 @@ update_action_for_ordering_flags(pcmk_action_t *first, pcmk_action_t *then, (changed? "changed" : "unchanged")); } - if (pcmk_is_set(order->flags, pcmk__ar_then_implies_first)) { + if (pcmk__is_set(order->flags, pcmk__ar_then_implies_first)) { if (first->rsc != NULL) { changed |= update(first->rsc, first, then, node, first_flags, pcmk__action_optional, pcmk__ar_then_implies_first, scheduler); - } else if (!pcmk_is_set(first_flags, pcmk__action_optional) - && pcmk_is_set(first->flags, pcmk__action_runnable)) { + } else if (!pcmk__is_set(first_flags, pcmk__action_optional) + && pcmk__is_set(first->flags, pcmk__action_runnable)) { pcmk__clear_action_flags(first, pcmk__action_runnable); pcmk__set_updated_flags(changed, first, pcmk__updated_first); } @@ -322,7 +322,7 @@ update_action_for_ordering_flags(pcmk_action_t *first, pcmk_action_t *then, (changed? "changed" : "unchanged")); } - if (pcmk_is_set(order->flags, pcmk__ar_promoted_then_implies_first)) { + if (pcmk__is_set(order->flags, pcmk__ar_promoted_then_implies_first)) { if (then->rsc != NULL) { changed |= update(then->rsc, first, then, node, first_flags & pcmk__action_optional, @@ -336,13 +336,13 @@ update_action_for_ordering_flags(pcmk_action_t *first, pcmk_action_t *then, (changed? "changed" : "unchanged")); } - if (pcmk_is_set(order->flags, pcmk__ar_min_runnable)) { + if (pcmk__is_set(order->flags, pcmk__ar_min_runnable)) { if (then->rsc != NULL) { changed |= update(then->rsc, first, then, node, first_flags, pcmk__action_runnable, pcmk__ar_min_runnable, scheduler); - } else if (pcmk_is_set(first_flags, pcmk__action_runnable)) { + } else if (pcmk__is_set(first_flags, pcmk__action_runnable)) { // We have another runnable instance of "first" then->runnable_before++; @@ -350,7 +350,7 @@ update_action_for_ordering_flags(pcmk_action_t *first, pcmk_action_t *then, * "before" instances to be runnable, and they now are. */ if ((then->runnable_before >= then->required_runnable_before) - && !pcmk_is_set(then->flags, pcmk__action_runnable)) { + && !pcmk__is_set(then->flags, pcmk__action_runnable)) { pcmk__set_action_flags(then, pcmk__action_runnable); pcmk__set_updated_flags(changed, first, pcmk__updated_then); @@ -361,10 +361,10 @@ update_action_for_ordering_flags(pcmk_action_t *first, pcmk_action_t *then, (changed? "changed" : "unchanged")); } - if (pcmk_is_set(order->flags, pcmk__ar_nested_remote_probe) + if (pcmk__is_set(order->flags, pcmk__ar_nested_remote_probe) && (then->rsc != NULL)) { - if (!pcmk_is_set(first_flags, pcmk__action_runnable) + if (!pcmk__is_set(first_flags, pcmk__action_runnable) && (first->rsc != NULL) && (first->rsc->priv->active_nodes != NULL)) { @@ -383,14 +383,14 @@ update_action_for_ordering_flags(pcmk_action_t *first, pcmk_action_t *then, (changed? "changed" : "unchanged")); } - if (pcmk_is_set(order->flags, pcmk__ar_unrunnable_first_blocks)) { + if (pcmk__is_set(order->flags, pcmk__ar_unrunnable_first_blocks)) { if (then->rsc != NULL) { changed |= update(then->rsc, first, then, node, first_flags, pcmk__action_runnable, pcmk__ar_unrunnable_first_blocks, scheduler); - } else if (!pcmk_is_set(first_flags, pcmk__action_runnable) - && pcmk_is_set(then->flags, pcmk__action_runnable)) { + } else if (!pcmk__is_set(first_flags, pcmk__action_runnable) + && pcmk__is_set(then->flags, pcmk__action_runnable)) { pcmk__clear_action_flags(then, pcmk__action_runnable); pcmk__set_updated_flags(changed, first, pcmk__updated_then); @@ -401,7 +401,7 @@ update_action_for_ordering_flags(pcmk_action_t *first, pcmk_action_t *then, (changed? "changed" : "unchanged")); } - if (pcmk_is_set(order->flags, pcmk__ar_unmigratable_then_blocks)) { + if (pcmk__is_set(order->flags, pcmk__ar_unmigratable_then_blocks)) { if (then->rsc != NULL) { changed |= update(then->rsc, first, then, node, first_flags, pcmk__action_optional, @@ -414,7 +414,7 @@ update_action_for_ordering_flags(pcmk_action_t *first, pcmk_action_t *then, (changed? "changed" : "unchanged")); } - if (pcmk_is_set(order->flags, pcmk__ar_first_else_then)) { + if (pcmk__is_set(order->flags, pcmk__ar_first_else_then)) { if (then->rsc != NULL) { changed |= update(then->rsc, first, then, node, first_flags, pcmk__action_optional, pcmk__ar_first_else_then, @@ -426,7 +426,7 @@ update_action_for_ordering_flags(pcmk_action_t *first, pcmk_action_t *then, (changed? "changed" : "unchanged")); } - if (pcmk_is_set(order->flags, pcmk__ar_ordered)) { + if (pcmk__is_set(order->flags, pcmk__ar_ordered)) { if (then->rsc != NULL) { changed |= update(then->rsc, first, then, node, first_flags, pcmk__action_runnable, pcmk__ar_ordered, @@ -437,7 +437,7 @@ update_action_for_ordering_flags(pcmk_action_t *first, pcmk_action_t *then, (changed? "changed" : "unchanged")); } - if (pcmk_is_set(order->flags, pcmk__ar_asymmetric)) { + if (pcmk__is_set(order->flags, pcmk__ar_asymmetric)) { if (then->rsc != NULL) { changed |= update(then->rsc, first, then, node, first_flags, pcmk__action_runnable, pcmk__ar_asymmetric, @@ -448,9 +448,9 @@ update_action_for_ordering_flags(pcmk_action_t *first, pcmk_action_t *then, (changed? "changed" : "unchanged")); } - if (pcmk_is_set(first->flags, pcmk__action_runnable) - && pcmk_is_set(order->flags, pcmk__ar_first_implies_then_graphed) - && !pcmk_is_set(first_flags, pcmk__action_optional)) { + if (pcmk__is_set(first->flags, pcmk__action_runnable) + && pcmk__is_set(order->flags, pcmk__ar_first_implies_then_graphed) + && !pcmk__is_set(first_flags, pcmk__action_optional)) { pcmk__rsc_trace(then->rsc, "%s will be in graph because %s is required", then->uuid, first->uuid); @@ -458,8 +458,8 @@ update_action_for_ordering_flags(pcmk_action_t *first, pcmk_action_t *then, // Don't bother marking 'then' as changed just for this } - if (pcmk_is_set(order->flags, pcmk__ar_then_implies_first_graphed) - && !pcmk_is_set(then_flags, pcmk__action_optional)) { + if (pcmk__is_set(order->flags, pcmk__ar_then_implies_first_graphed) + && !pcmk__is_set(then_flags, pcmk__action_optional)) { pcmk__rsc_trace(then->rsc, "%s will be in graph because %s is required", first->uuid, then->uuid); @@ -471,9 +471,9 @@ update_action_for_ordering_flags(pcmk_action_t *first, pcmk_action_t *then, |pcmk__ar_then_implies_first |pcmk__ar_intermediate_stop) && (first->rsc != NULL) - && !pcmk_is_set(first->rsc->flags, pcmk__rsc_managed) - && pcmk_is_set(first->rsc->flags, pcmk__rsc_blocked) - && !pcmk_is_set(first->flags, pcmk__action_runnable) + && !pcmk__is_set(first->rsc->flags, pcmk__rsc_managed) + && pcmk__is_set(first->rsc->flags, pcmk__rsc_blocked) + && !pcmk__is_set(first->flags, pcmk__action_runnable) && pcmk__str_eq(first->task, PCMK_ACTION_STOP, pcmk__str_none)) { /* @TODO This seems odd; why wouldn't an unrunnable "first" already @@ -482,7 +482,7 @@ update_action_for_ordering_flags(pcmk_action_t *first, pcmk_action_t *then, * "stop then stop" relations that would be good for checking any * changes. */ - if (pcmk_is_set(then->flags, pcmk__action_runnable)) { + if (pcmk__is_set(then->flags, pcmk__action_runnable)) { pcmk__clear_action_flags(then, pcmk__action_runnable); pcmk__set_updated_flags(changed, first, pcmk__updated_then); } @@ -499,13 +499,13 @@ update_action_for_ordering_flags(pcmk_action_t *first, pcmk_action_t *then, // Convenience macros for logging action properties #define action_type_str(flags) \ - (pcmk_is_set((flags), pcmk__action_pseudo)? "pseudo-action" : "action") + (pcmk__is_set((flags), pcmk__action_pseudo)? "pseudo-action" : "action") #define action_optional_str(flags) \ - (pcmk_is_set((flags), pcmk__action_optional)? "optional" : "required") + (pcmk__is_set((flags), pcmk__action_optional)? "optional" : "required") #define action_runnable_str(flags) \ - (pcmk_is_set((flags), pcmk__action_runnable)? "runnable" : "unrunnable") + (pcmk__is_set((flags), pcmk__action_runnable)? "runnable" : "unrunnable") #define action_node_str(a) \ (((a)->node == NULL)? "no node" : (a)->node->priv->name) @@ -577,7 +577,7 @@ pcmk__update_action_for_orderings(pcmk_action_t *then, } // Disable constraint if it only applies when on same node, but isn't - if (pcmk_is_set(other->flags, pcmk__ar_if_on_same_node) + if (pcmk__is_set(other->flags, pcmk__ar_if_on_same_node) && (first_node != NULL) && (then_node != NULL) && !pcmk__same_node(first_node, then_node)) { @@ -593,8 +593,8 @@ pcmk__update_action_for_orderings(pcmk_action_t *then, pcmk__clear_updated_flags(changed, then, pcmk__updated_first); if ((first->rsc != NULL) - && pcmk_is_set(other->flags, pcmk__ar_then_cancels_first) - && !pcmk_is_set(then->flags, pcmk__action_optional)) { + && pcmk__is_set(other->flags, pcmk__ar_then_cancels_first) + && !pcmk__is_set(then->flags, pcmk__action_optional)) { /* 'then' is required, so we must abandon 'first' * (e.g. a required stop cancels any agent reload). @@ -650,7 +650,7 @@ pcmk__update_action_for_orderings(pcmk_action_t *then, } - if (pcmk_is_set(changed, pcmk__updated_first)) { + if (pcmk__is_set(changed, pcmk__updated_first)) { crm_trace("Re-processing %s and its 'after' actions " "because it changed", first->uuid); for (GList *lpc2 = first->actions_after; lpc2 != NULL; @@ -671,11 +671,11 @@ pcmk__update_action_for_orderings(pcmk_action_t *then, } } - if (pcmk_is_set(changed, pcmk__updated_then)) { + if (pcmk__is_set(changed, pcmk__updated_then)) { crm_trace("Re-processing %s and its 'after' actions because it changed", then->uuid); - if (pcmk_is_set(last_flags, pcmk__action_runnable) - && !pcmk_is_set(then->flags, pcmk__action_runnable)) { + if (pcmk__is_set(last_flags, pcmk__action_runnable) + && !pcmk__is_set(then->flags, pcmk__action_runnable)) { pcmk__block_colocation_dependents(then); } pcmk__update_action_for_orderings(then, scheduler); @@ -702,7 +702,7 @@ is_primitive_action(const pcmk_action_t *action) * \param[in] reason Action that is the reason why flag is being cleared */ #define clear_action_flag_because(action, flag, reason) do { \ - if (pcmk_is_set((action)->flags, (flag))) { \ + if (pcmk__is_set((action)->flags, (flag))) { \ pcmk__clear_action_flags(action, flag); \ if ((action)->rsc != (reason)->rsc) { \ char *reason_text = pe__action2reason((reason), (flag)); \ @@ -729,12 +729,12 @@ handle_asymmetric_ordering(const pcmk_action_t *first, pcmk_action_t *then) * asymmetric ordering. */ if ((then->rsc == NULL) - || pcmk_is_set(first->flags, pcmk__action_runnable)) { + || pcmk__is_set(first->flags, pcmk__action_runnable)) { return; } // Certain optional 'then' actions are unaffected by unrunnable 'first' - if (pcmk_is_set(then->flags, pcmk__action_optional)) { + if (pcmk__is_set(then->flags, pcmk__action_optional)) { enum rsc_role_e then_rsc_role; then_rsc_role = then->rsc->priv->fns->state(then->rsc, true); @@ -782,17 +782,17 @@ handle_restart_ordering(pcmk_action_t *first, pcmk_action_t *then, // We need to update the action in two cases: // ... if 'then' is required - if (pcmk_is_set(filter, pcmk__action_optional) - && !pcmk_is_set(then->flags, pcmk__action_optional)) { + if (pcmk__is_set(filter, pcmk__action_optional) + && !pcmk__is_set(then->flags, pcmk__action_optional)) { reason = "restart"; } /* ... if 'then' is unrunnable action on same resource (if a resource * should restart but can't start, we still want to stop) */ - if (pcmk_is_set(filter, pcmk__action_runnable) - && !pcmk_is_set(then->flags, pcmk__action_runnable) - && pcmk_is_set(then->rsc->flags, pcmk__rsc_managed) + if (pcmk__is_set(filter, pcmk__action_runnable) + && !pcmk__is_set(then->flags, pcmk__action_runnable) + && pcmk__is_set(then->rsc->flags, pcmk__rsc_managed) && (first->rsc == then->rsc)) { reason = "stop"; } @@ -805,23 +805,23 @@ handle_restart_ordering(pcmk_action_t *first, pcmk_action_t *then, first->uuid, then->uuid, reason); // Make 'first' required if it is runnable - if (pcmk_is_set(first->flags, pcmk__action_runnable)) { + if (pcmk__is_set(first->flags, pcmk__action_runnable)) { clear_action_flag_because(first, pcmk__action_optional, then); } // Make 'first' required if 'then' is required - if (!pcmk_is_set(then->flags, pcmk__action_optional)) { + if (!pcmk__is_set(then->flags, pcmk__action_optional)) { clear_action_flag_because(first, pcmk__action_optional, then); } // Make 'first' unmigratable if 'then' is unmigratable - if (!pcmk_is_set(then->flags, pcmk__action_migratable)) { + if (!pcmk__is_set(then->flags, pcmk__action_migratable)) { clear_action_flag_because(first, pcmk__action_migratable, then); } // Make 'then' unrunnable if 'first' is required but unrunnable - if (!pcmk_is_set(first->flags, pcmk__action_optional) - && !pcmk_is_set(first->flags, pcmk__action_runnable)) { + if (!pcmk__is_set(first->flags, pcmk__action_optional) + && !pcmk__is_set(first->flags, pcmk__action_runnable)) { clear_action_flag_because(then, pcmk__action_runnable, first); } } @@ -862,80 +862,80 @@ pcmk__update_ordered_actions(pcmk_action_t *first, pcmk_action_t *then, then_flags = then->flags; first_flags = first->flags; - if (pcmk_is_set(type, pcmk__ar_asymmetric)) { + if (pcmk__is_set(type, pcmk__ar_asymmetric)) { handle_asymmetric_ordering(first, then); } - if (pcmk_is_set(type, pcmk__ar_then_implies_first) - && !pcmk_is_set(then_flags, pcmk__action_optional)) { + if (pcmk__is_set(type, pcmk__ar_then_implies_first) + && !pcmk__is_set(then_flags, pcmk__action_optional)) { // Then is required, and implies first should be, too - if (pcmk_is_set(filter, pcmk__action_optional) - && !pcmk_is_set(flags, pcmk__action_optional) - && pcmk_is_set(first_flags, pcmk__action_optional)) { + if (pcmk__is_set(filter, pcmk__action_optional) + && !pcmk__is_set(flags, pcmk__action_optional) + && pcmk__is_set(first_flags, pcmk__action_optional)) { clear_action_flag_because(first, pcmk__action_optional, then); } - if (pcmk_is_set(flags, pcmk__action_migratable) - && !pcmk_is_set(then->flags, pcmk__action_migratable)) { + if (pcmk__is_set(flags, pcmk__action_migratable) + && !pcmk__is_set(then->flags, pcmk__action_migratable)) { clear_action_flag_because(first, pcmk__action_migratable, then); } } - if (pcmk_is_set(type, pcmk__ar_promoted_then_implies_first) + if (pcmk__is_set(type, pcmk__ar_promoted_then_implies_first) && (then->rsc != NULL) && (then->rsc->priv->orig_role == pcmk_role_promoted) - && pcmk_is_set(filter, pcmk__action_optional) - && !pcmk_is_set(then->flags, pcmk__action_optional)) { + && pcmk__is_set(filter, pcmk__action_optional) + && !pcmk__is_set(then->flags, pcmk__action_optional)) { clear_action_flag_because(first, pcmk__action_optional, then); - if (pcmk_is_set(first->flags, pcmk__action_migratable) - && !pcmk_is_set(then->flags, pcmk__action_migratable)) { + if (pcmk__is_set(first->flags, pcmk__action_migratable) + && !pcmk__is_set(then->flags, pcmk__action_migratable)) { clear_action_flag_because(first, pcmk__action_migratable, then); } } - if (pcmk_is_set(type, pcmk__ar_unmigratable_then_blocks) - && pcmk_is_set(filter, pcmk__action_optional)) { + if (pcmk__is_set(type, pcmk__ar_unmigratable_then_blocks) + && pcmk__is_set(filter, pcmk__action_optional)) { if (!pcmk_all_flags_set(then->flags, pcmk__action_migratable |pcmk__action_runnable)) { clear_action_flag_because(first, pcmk__action_runnable, then); } - if (!pcmk_is_set(then->flags, pcmk__action_optional)) { + if (!pcmk__is_set(then->flags, pcmk__action_optional)) { clear_action_flag_because(first, pcmk__action_optional, then); } } - if (pcmk_is_set(type, pcmk__ar_first_else_then) - && pcmk_is_set(filter, pcmk__action_optional) - && !pcmk_is_set(first->flags, pcmk__action_runnable)) { + if (pcmk__is_set(type, pcmk__ar_first_else_then) + && pcmk__is_set(filter, pcmk__action_optional) + && !pcmk__is_set(first->flags, pcmk__action_runnable)) { clear_action_flag_because(then, pcmk__action_migratable, first); pcmk__clear_action_flags(then, pcmk__action_pseudo); } - if (pcmk_is_set(type, pcmk__ar_unrunnable_first_blocks) - && pcmk_is_set(filter, pcmk__action_runnable) - && pcmk_is_set(then->flags, pcmk__action_runnable) - && !pcmk_is_set(flags, pcmk__action_runnable)) { + if (pcmk__is_set(type, pcmk__ar_unrunnable_first_blocks) + && pcmk__is_set(filter, pcmk__action_runnable) + && pcmk__is_set(then->flags, pcmk__action_runnable) + && !pcmk__is_set(flags, pcmk__action_runnable)) { clear_action_flag_because(then, pcmk__action_runnable, first); clear_action_flag_because(then, pcmk__action_migratable, first); } - if (pcmk_is_set(type, pcmk__ar_first_implies_then) - && pcmk_is_set(filter, pcmk__action_optional) - && pcmk_is_set(then->flags, pcmk__action_optional) - && !pcmk_is_set(flags, pcmk__action_optional) - && !pcmk_is_set(first->flags, pcmk__action_migratable)) { + if (pcmk__is_set(type, pcmk__ar_first_implies_then) + && pcmk__is_set(filter, pcmk__action_optional) + && pcmk__is_set(then->flags, pcmk__action_optional) + && !pcmk__is_set(flags, pcmk__action_optional) + && !pcmk__is_set(first->flags, pcmk__action_migratable)) { clear_action_flag_because(then, pcmk__action_optional, first); } - if (pcmk_is_set(type, pcmk__ar_intermediate_stop)) { + if (pcmk__is_set(type, pcmk__ar_intermediate_stop)) { handle_restart_ordering(first, then, filter); } @@ -983,7 +983,7 @@ pcmk__log_action(const char *pre_text, const pcmk_action_t *action, CRM_CHECK(action != NULL, return); - if (!pcmk_is_set(action->flags, pcmk__action_pseudo)) { + if (!pcmk__is_set(action->flags, pcmk__action_pseudo)) { if (action->node != NULL) { node_uname = action->node->priv->name; node_uuid = action->node->priv->id; @@ -995,11 +995,11 @@ pcmk__log_action(const char *pre_text, const pcmk_action_t *action, switch (pcmk__parse_action(action->task)) { case pcmk__action_fence: case pcmk__action_shutdown: - if (pcmk_is_set(action->flags, pcmk__action_pseudo)) { + if (pcmk__is_set(action->flags, pcmk__action_pseudo)) { desc = "Pseudo "; - } else if (pcmk_is_set(action->flags, pcmk__action_optional)) { + } else if (pcmk__is_set(action->flags, pcmk__action_optional)) { desc = "Optional "; - } else if (!pcmk_is_set(action->flags, pcmk__action_runnable)) { + } else if (!pcmk__is_set(action->flags, pcmk__action_runnable)) { desc = "!!Non-Startable!! "; } else { desc = "(Provisional) "; @@ -1013,11 +1013,11 @@ pcmk__log_action(const char *pre_text, const pcmk_action_t *action, (node_uuid? ")" : "")); break; default: - if (pcmk_is_set(action->flags, pcmk__action_optional)) { + if (pcmk__is_set(action->flags, pcmk__action_optional)) { desc = "Optional "; - } else if (pcmk_is_set(action->flags, pcmk__action_pseudo)) { + } else if (pcmk__is_set(action->flags, pcmk__action_pseudo)) { desc = "Pseudo "; - } else if (!pcmk_is_set(action->flags, pcmk__action_runnable)) { + } else if (!pcmk__is_set(action->flags, pcmk__action_runnable)) { desc = "!!Non-Startable!! "; } else { desc = "(Provisional) "; @@ -1425,7 +1425,7 @@ pcmk__output_actions(pcmk_scheduler_t *scheduler) if (action->rsc != NULL) { continue; // Resource actions will be output later - } else if (pcmk_is_set(action->flags, pcmk__action_optional)) { + } else if (pcmk__is_set(action->flags, pcmk__action_optional)) { continue; // This action was not scheduled } @@ -1518,7 +1518,7 @@ only_sanitized_changed(const xmlNode *xml_op, { const char *digest_secure = NULL; - if (!pcmk_is_set(scheduler->flags, pcmk__sched_sanitized)) { + if (!pcmk__is_set(scheduler->flags, pcmk__sched_sanitized)) { // The scheduler is not being run as a simulation return false; } @@ -1575,12 +1575,14 @@ schedule_reload(gpointer data, gpointer user_data) // Skip the reload in certain situations if ((node == NULL) - || !pcmk_is_set(rsc->flags, pcmk__rsc_managed) - || pcmk_is_set(rsc->flags, pcmk__rsc_failed)) { - pcmk__rsc_trace(rsc, "Skip reload of %s:%s%s %s", - rsc->id, - pcmk_is_set(rsc->flags, pcmk__rsc_managed)? "" : " unmanaged", - pcmk_is_set(rsc->flags, pcmk__rsc_failed)? " failed" : "", + || !pcmk__is_set(rsc->flags, pcmk__rsc_managed) + || pcmk__is_set(rsc->flags, pcmk__rsc_failed)) { + + const bool managed = pcmk__is_set(rsc->flags, pcmk__rsc_managed); + const bool failed = pcmk__is_set(rsc->flags, pcmk__rsc_failed); + + pcmk__rsc_trace(rsc, "Skip reload of %s:%s%s %s", rsc->id, + (managed? "" : " unmanaged"), (failed? " failed" : ""), (node == NULL)? "inactive" : node->priv->name); return; } @@ -1588,7 +1590,7 @@ schedule_reload(gpointer data, gpointer user_data) /* If a resource's configuration changed while a start was pending, * force a full restart instead of a reload. */ - if (pcmk_is_set(rsc->flags, pcmk__rsc_start_pending)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_start_pending)) { pcmk__rsc_trace(rsc, "%s: preventing agent reload because start pending", rsc->id); @@ -1649,8 +1651,8 @@ pcmk__check_action_config(pcmk_resource_t *rsc, pcmk_node_t *node, "%s-interval %s for %s on %s is in configuration", pcmk__readable_interval(interval_ms), task, rsc->id, pcmk__node_name(node)); - } else if (pcmk_is_set(rsc->priv->scheduler->flags, - pcmk__sched_cancel_removed_actions)) { + } else if (pcmk__is_set(rsc->priv->scheduler->flags, + pcmk__sched_cancel_removed_actions)) { pcmk__schedule_cancel(rsc, pcmk__xe_get(xml_op, PCMK__XA_CALL_ID), task, interval_ms, node, "orphan"); return true; @@ -1774,7 +1776,7 @@ process_rsc_history(const xmlNode *rsc_entry, pcmk_resource_t *rsc, int start_index = 0; GList *sorted_op_list = NULL; - if (pcmk_is_set(rsc->flags, pcmk__rsc_removed)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_removed)) { if (pcmk__is_anonymous_clone(pe__const_top_resource(rsc, false))) { /* @TODO Should this be done for bundled primitives as well? Added * by 2ac43ae31 @@ -1830,7 +1832,7 @@ process_rsc_history(const xmlNode *rsc_entry, pcmk_resource_t *rsc, pcmk__xe_get_guint(rsc_op, PCMK_META_INTERVAL, &interval_ms); if ((interval_ms > 0) - && (pcmk_is_set(rsc->flags, pcmk__rsc_maintenance) + && (pcmk__is_set(rsc->flags, pcmk__rsc_maintenance) || node->details->maintenance)) { // Maintenance mode cancels recurring operations pcmk__schedule_cancel(rsc, pcmk__xe_get(rsc_op, PCMK__XA_CALL_ID), diff --git a/lib/pacemaker/pcmk_sched_bundle.c b/lib/pacemaker/pcmk_sched_bundle.c index 2c9ebcfd45d..fafa1372c28 100644 --- a/lib/pacemaker/pcmk_sched_bundle.c +++ b/lib/pacemaker/pcmk_sched_bundle.c @@ -125,8 +125,8 @@ pcmk__bundle_assign(pcmk_resource_t *rsc, const pcmk_node_t *prefer, pcmk__rsc_trace(rsc, "Assigning bundle %s", rsc->id); pcmk__set_rsc_flags(rsc, pcmk__rsc_assigning); - pe__show_node_scores(!pcmk_is_set(rsc->priv->scheduler->flags, - pcmk__sched_output_scores), + pe__show_node_scores(!pcmk__is_set(rsc->priv->scheduler->flags, + pcmk__sched_output_scores), rsc, __func__, rsc->priv->allowed_nodes, rsc->priv->scheduler); @@ -210,7 +210,7 @@ pcmk__bundle_create_actions(pcmk_resource_t *rsc) if (bundled_resource != NULL) { bundled_resource->priv->cmds->create_actions(bundled_resource); - if (pcmk_is_set(bundled_resource->flags, pcmk__rsc_promotable)) { + if (pcmk__is_set(bundled_resource->flags, pcmk__rsc_promotable)) { pe__new_rsc_pseudo_action(rsc, PCMK_ACTION_PROMOTE, true, true); action = pe__new_rsc_pseudo_action(rsc, PCMK_ACTION_PROMOTED, true, true); @@ -336,7 +336,7 @@ pcmk__bundle_internal_constraints(pcmk_resource_t *rsc) bundled_resource->priv->cmds->internal_constraints(bundled_resource); - if (!pcmk_is_set(bundled_resource->flags, pcmk__rsc_promotable)) { + if (!pcmk__is_set(bundled_resource->flags, pcmk__rsc_promotable)) { return; } pcmk__promotable_restart_ordering(rsc); @@ -548,7 +548,7 @@ pcmk__bundle_apply_coloc_score(pcmk_resource_t *dependent, pcmk__assert(pcmk__is_bundle(primary) && pcmk__is_primitive(dependent) && (colocation != NULL) && !for_dependent); - if (pcmk_is_set(primary->flags, pcmk__rsc_unassigned)) { + if (pcmk__is_set(primary->flags, pcmk__rsc_unassigned)) { pcmk__rsc_trace(primary, "Skipping applying colocation %s " "because %s is still provisional", @@ -612,7 +612,7 @@ pcmk__with_bundle_colocations(const pcmk_resource_t *rsc, // The bundle itself and its containers always get its colocations if ((orig_rsc == rsc) - || pcmk_is_set(orig_rsc->flags, pcmk__rsc_replica_container)) { + || pcmk__is_set(orig_rsc->flags, pcmk__rsc_replica_container)) { pcmk__add_with_this_list(list, rsc->priv->with_this_colocations, orig_rsc); @@ -624,7 +624,7 @@ pcmk__with_bundle_colocations(const pcmk_resource_t *rsc, */ bundled_rsc = pe__bundled_resource(rsc); if ((bundled_rsc == NULL) - || !pcmk_is_set(bundled_rsc->flags, pcmk__rsc_promotable) + || !pcmk__is_set(bundled_rsc->flags, pcmk__rsc_promotable) || (pe__const_top_resource(orig_rsc, false) != bundled_rsc)) { return; } @@ -639,7 +639,7 @@ pcmk__with_bundle_colocations(const pcmk_resource_t *rsc, orig_rsc); } - } else if (!pcmk_is_set(orig_rsc->flags, pcmk__rsc_unassigned)) { + } else if (!pcmk__is_set(orig_rsc->flags, pcmk__rsc_unassigned)) { /* orig_rsc is an instance and is already assigned. If something * requests colocations for orig_rsc now, it's for setting roles. */ @@ -659,7 +659,7 @@ pcmk__bundle_with_colocations(const pcmk_resource_t *rsc, // The bundle itself and its containers always get its colocations if ((orig_rsc == rsc) - || pcmk_is_set(orig_rsc->flags, pcmk__rsc_replica_container)) { + || pcmk__is_set(orig_rsc->flags, pcmk__rsc_replica_container)) { pcmk__add_this_with_list(list, rsc->priv->this_with_colocations, orig_rsc); @@ -671,7 +671,7 @@ pcmk__bundle_with_colocations(const pcmk_resource_t *rsc, */ bundled_rsc = pe__bundled_resource(rsc); if ((bundled_rsc == NULL) - || !pcmk_is_set(bundled_rsc->flags, pcmk__rsc_promotable) + || !pcmk__is_set(bundled_rsc->flags, pcmk__rsc_promotable) || (pe__const_top_resource(orig_rsc, false) != bundled_rsc)) { return; } @@ -686,7 +686,7 @@ pcmk__bundle_with_colocations(const pcmk_resource_t *rsc, orig_rsc); } - } else if (!pcmk_is_set(orig_rsc->flags, pcmk__rsc_unassigned)) { + } else if (!pcmk__is_set(orig_rsc->flags, pcmk__rsc_unassigned)) { /* orig_rsc is an instance and is already assigned. If something * requests colocations for orig_rsc now, it's for setting roles. */ @@ -1056,7 +1056,7 @@ pcmk__bundle_add_utilization(const pcmk_resource_t *rsc, pcmk__assert(pcmk__is_bundle(rsc)); - if (!pcmk_is_set(rsc->flags, pcmk__rsc_unassigned)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_unassigned)) { return; } diff --git a/lib/pacemaker/pcmk_sched_clone.c b/lib/pacemaker/pcmk_sched_clone.c index edf54ea007a..eb52560a5ac 100644 --- a/lib/pacemaker/pcmk_sched_clone.c +++ b/lib/pacemaker/pcmk_sched_clone.c @@ -41,19 +41,19 @@ pcmk__clone_assign(pcmk_resource_t *rsc, const pcmk_node_t *prefer, pcmk__assert(pcmk__is_clone(rsc)); - if (!pcmk_is_set(rsc->flags, pcmk__rsc_unassigned)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_unassigned)) { return NULL; // Assignment has already been done } // Detect assignment loops - if (pcmk_is_set(rsc->flags, pcmk__rsc_assigning)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_assigning)) { pcmk__rsc_debug(rsc, "Breaking assignment loop involving %s", rsc->id); return NULL; } pcmk__set_rsc_flags(rsc, pcmk__rsc_assigning); // If this clone is promotable, consider nodes' promotion scores - if (pcmk_is_set(rsc->flags, pcmk__rsc_promotable)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_promotable)) { pcmk__add_promotion_scores(rsc); } @@ -74,8 +74,8 @@ pcmk__clone_assign(pcmk_resource_t *rsc, const pcmk_node_t *prefer, g_list_foreach(colocations, pcmk__add_dependent_scores, rsc); g_list_free(colocations); - pe__show_node_scores(!pcmk_is_set(rsc->priv->scheduler->flags, - pcmk__sched_output_scores), + pe__show_node_scores(!pcmk__is_set(rsc->priv->scheduler->flags, + pcmk__sched_output_scores), rsc, __func__, rsc->priv->allowed_nodes, rsc->priv->scheduler); @@ -83,7 +83,7 @@ pcmk__clone_assign(pcmk_resource_t *rsc, const pcmk_node_t *prefer, pcmk__assign_instances(rsc, rsc->priv->children, pe__clone_max(rsc), pe__clone_node_max(rsc)); - if (pcmk_is_set(rsc->flags, pcmk__rsc_promotable)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_promotable)) { pcmk__set_instance_roles(rsc); } @@ -105,7 +105,7 @@ pcmk__clone_create_actions(pcmk_resource_t *rsc) pcmk__rsc_trace(rsc, "Creating actions for clone %s", rsc->id); pcmk__create_instance_actions(rsc, rsc->priv->children); - if (pcmk_is_set(rsc->flags, pcmk__rsc_promotable)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_promotable)) { pcmk__create_promotable_actions(rsc); } } @@ -137,7 +137,7 @@ pcmk__clone_internal_constraints(pcmk_resource_t *rsc) pcmk__ar_unrunnable_first_blocks); // Demoted -> stop and started -> promote - if (pcmk_is_set(rsc->flags, pcmk__rsc_promotable)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_promotable)) { pcmk__order_resource_actions(rsc, PCMK_ACTION_DEMOTED, rsc, PCMK_ACTION_STOP, pcmk__ar_ordered); @@ -189,7 +189,7 @@ pcmk__clone_internal_constraints(pcmk_resource_t *rsc) } } } - if (pcmk_is_set(rsc->flags, pcmk__rsc_promotable)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_promotable)) { pcmk__order_promotable_instances(rsc); } } @@ -264,7 +264,7 @@ pcmk__clone_apply_coloc_score(pcmk_resource_t *dependent, pcmk__assert(!for_dependent && (colocation != NULL) && pcmk__is_clone(primary) && pcmk__is_primitive(dependent)); - if (pcmk_is_set(primary->flags, pcmk__rsc_unassigned)) { + if (pcmk__is_set(primary->flags, pcmk__rsc_unassigned)) { pcmk__rsc_trace(primary, "Delaying processing colocation %s " "because cloned primary %s is still provisional", @@ -277,10 +277,10 @@ pcmk__clone_apply_coloc_score(pcmk_resource_t *dependent, pcmk_readable_score(colocation->score)); // Apply role-specific colocations - if (pcmk_is_set(primary->flags, pcmk__rsc_promotable) + if (pcmk__is_set(primary->flags, pcmk__rsc_promotable) && (colocation->primary_role != pcmk_role_unknown)) { - if (pcmk_is_set(dependent->flags, pcmk__rsc_unassigned)) { + if (pcmk__is_set(dependent->flags, pcmk__rsc_unassigned)) { // We're assigning the dependent to a node pcmk__update_dependent_with_promotable(primary, dependent, colocation); @@ -593,7 +593,7 @@ pcmk__clone_create_probe(pcmk_resource_t *rsc, pcmk_node_t *node) { pcmk__assert((node != NULL) && pcmk__is_clone(rsc)); - if (pcmk_is_set(rsc->flags, pcmk__rsc_exclusive_probes)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_exclusive_probes)) { /* The clone is configured to be probed only where a location constraint * exists with PCMK_XA_RESOURCE_DISCOVERY set to exclusive. * @@ -623,7 +623,7 @@ pcmk__clone_create_probe(pcmk_resource_t *rsc, pcmk_node_t *node) rsc->priv->children = g_list_sort(rsc->priv->children, pcmk__cmp_instance_number); - if (pcmk_is_set(rsc->flags, pcmk__rsc_unique)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_unique)) { return pcmk__probe_resource_list(rsc->priv->children, node); } else { return probe_anonymous_clone(rsc, node); @@ -662,7 +662,7 @@ pcmk__clone_add_graph_meta(const pcmk_resource_t *rsc, xmlNode *xml) pcmk__xe_set_int(xml, name, pe__clone_node_max(rsc)); free(name); - if (pcmk_is_set(rsc->flags, pcmk__rsc_promotable)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_promotable)) { int promoted_max = pe__clone_promoted_max(rsc); int promoted_node_max = pe__clone_promoted_node_max(rsc); @@ -699,7 +699,7 @@ pcmk__clone_add_utilization(const pcmk_resource_t *rsc, pcmk__assert(pcmk__is_clone(rsc) && (orig_rsc != NULL) && (utilization != NULL)); - if (!pcmk_is_set(rsc->flags, pcmk__rsc_unassigned)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_unassigned)) { return; } diff --git a/lib/pacemaker/pcmk_sched_colocation.c b/lib/pacemaker/pcmk_sched_colocation.c index 9678e7caade..2388d39618f 100644 --- a/lib/pacemaker/pcmk_sched_colocation.c +++ b/lib/pacemaker/pcmk_sched_colocation.c @@ -127,12 +127,12 @@ cmp_colocation_priority(const pcmk__colocation_t *colocation1, * tests) */ if (pcmk__is_clone(rsc1)) { - if (pcmk_is_set(rsc1->flags, pcmk__rsc_promotable) - && !pcmk_is_set(rsc2->flags, pcmk__rsc_promotable)) { + if (pcmk__is_set(rsc1->flags, pcmk__rsc_promotable) + && !pcmk__is_set(rsc2->flags, pcmk__rsc_promotable)) { return -1; } - if (!pcmk_is_set(rsc1->flags, pcmk__rsc_promotable) - && pcmk_is_set(rsc2->flags, pcmk__rsc_promotable)) { + if (!pcmk__is_set(rsc1->flags, pcmk__rsc_promotable) + && pcmk__is_set(rsc2->flags, pcmk__rsc_promotable)) { return 1; } } @@ -466,7 +466,7 @@ unpack_influence(const char *coloc_id, const pcmk_resource_t *rsc, PCMK_XA_INFLUENCE " (using default)", coloc_id); } - if (pcmk_is_set(rsc->flags, pcmk__rsc_critical)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_critical)) { return pcmk__coloc_influence; } return pcmk__coloc_none; @@ -1073,9 +1073,9 @@ pcmk__colocation_has_influence(const pcmk__colocation_t *colocation, * This also avoids problematic scenarios where two containers want to * perpetually swap places. */ - if (pcmk_is_set(colocation->dependent->flags, - pcmk__rsc_remote_nesting_allowed) - && !pcmk_is_set(rsc->flags, pcmk__rsc_failed) + if (pcmk__is_set(colocation->dependent->flags, + pcmk__rsc_remote_nesting_allowed) + && !pcmk__is_set(rsc->flags, pcmk__rsc_failed) && pcmk__list_of_1(rsc->priv->active_nodes)) { return false; } @@ -1083,7 +1083,7 @@ pcmk__colocation_has_influence(const pcmk__colocation_t *colocation, /* The dependent in a colocation influences the primary's location * if the PCMK_XA_INFLUENCE option is true or the primary is not yet active. */ - return pcmk_is_set(colocation->flags, pcmk__coloc_influence) + return pcmk__is_set(colocation->flags, pcmk__coloc_influence) || (rsc->priv->active_nodes == NULL); } @@ -1105,7 +1105,7 @@ mark_action_blocked(pcmk_resource_t *rsc, const char *task, for (iter = rsc->priv->actions; iter != NULL; iter = iter->next) { pcmk_action_t *action = iter->data; - if (pcmk_is_set(action->flags, pcmk__action_runnable) + if (pcmk__is_set(action->flags, pcmk__action_runnable) && pcmk__str_eq(action->task, task, pcmk__str_none)) { pcmk__clear_action_flags(action, pcmk__action_runnable); @@ -1140,7 +1140,7 @@ pcmk__block_colocation_dependents(pcmk_action_t *action) pcmk_resource_t *rsc = NULL; bool is_start = false; - if (pcmk_is_set(action->flags, pcmk__action_runnable)) { + if (pcmk__is_set(action->flags, pcmk__action_runnable)) { return; // Only unrunnable actions block dependents } @@ -1169,7 +1169,7 @@ pcmk__block_colocation_dependents(pcmk_action_t *action) child_action = find_first_action(child->priv->actions, NULL, action->task, NULL); if ((child_action == NULL) - || pcmk_is_set(child_action->flags, pcmk__action_runnable)) { + || pcmk__is_set(child_action->flags, pcmk__action_runnable)) { crm_trace("Not blocking %s colocation dependents because " "at least %s has runnable %s", rsc->id, child->id, action->task); @@ -1232,7 +1232,7 @@ pcmk__block_colocation_dependents(pcmk_action_t *action) static const pcmk_resource_t * get_resource_for_role(const pcmk_resource_t *rsc) { - if (pcmk_is_set(rsc->flags, pcmk__rsc_replica_container)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_replica_container)) { const pcmk_resource_t *child = pe__get_rsc_in_container(rsc); if (child != NULL) { @@ -1271,7 +1271,7 @@ pcmk__colocation_affects(const pcmk_resource_t *dependent, pcmk__assert((dependent != NULL) && (primary != NULL) && (colocation != NULL)); - if (!preview && pcmk_is_set(primary->flags, pcmk__rsc_unassigned)) { + if (!preview && pcmk__is_set(primary->flags, pcmk__rsc_unassigned)) { // Primary resource has not been assigned yet, so we can't do anything return pcmk__coloc_affects_nothing; } @@ -1282,9 +1282,9 @@ pcmk__colocation_affects(const pcmk_resource_t *dependent, if ((colocation->dependent_role >= pcmk_role_unpromoted) && (dependent_role_rsc->priv->parent != NULL) - && pcmk_is_set(dependent_role_rsc->priv->parent->flags, - pcmk__rsc_promotable) - && !pcmk_is_set(dependent_role_rsc->flags, pcmk__rsc_unassigned)) { + && pcmk__is_set(dependent_role_rsc->priv->parent->flags, + pcmk__rsc_promotable) + && !pcmk__is_set(dependent_role_rsc->flags, pcmk__rsc_unassigned)) { /* This is a colocation by role, and the dependent is a promotable clone * that has already been assigned, so the colocation should now affect @@ -1293,7 +1293,7 @@ pcmk__colocation_affects(const pcmk_resource_t *dependent, return pcmk__coloc_affects_role; } - if (!preview && !pcmk_is_set(dependent->flags, pcmk__rsc_unassigned)) { + if (!preview && !pcmk__is_set(dependent->flags, pcmk__rsc_unassigned)) { /* The dependent resource has already been through assignment, so the * constraint no longer matters. */ @@ -1543,7 +1543,7 @@ best_node_score_matching_attr(const pcmk__colocation_t *colocation, const char *best_node = NULL; if ((colocation != NULL) && (rsc == colocation->dependent) - && pcmk_is_set(colocation->flags, pcmk__coloc_explicit) + && pcmk__is_set(colocation->flags, pcmk__coloc_explicit) && pcmk__is_group(rsc->priv->parent) && (rsc != rsc->priv->parent->priv->children->data)) { /* The resource is a user-configured colocation's explicit dependent, @@ -1811,7 +1811,7 @@ pcmk__add_colocated_node_scores(pcmk_resource_t *source_rsc, } // Avoid infinite recursion - if (pcmk_is_set(source_rsc->flags, pcmk__rsc_updating_nodes)) { + if (pcmk__is_set(source_rsc->flags, pcmk__rsc_updating_nodes)) { pcmk__rsc_info(source_rsc, "%s: Breaking dependency loop at %s", log_id, source_rsc->id); return; @@ -1822,7 +1822,7 @@ pcmk__add_colocated_node_scores(pcmk_resource_t *source_rsc, work = pcmk__copy_node_table(source_rsc->priv->allowed_nodes); target_rsc = source_rsc; } else { - const bool pos = pcmk_is_set(flags, pcmk__coloc_select_nonnegative); + const bool pos = pcmk__is_set(flags, pcmk__coloc_select_nonnegative); pcmk__rsc_trace(source_rsc, "%s: Merging %s scores from %s (at %.6f)", log_id, (pos? "positive" : "all"), source_rsc->id, factor); @@ -1839,7 +1839,7 @@ pcmk__add_colocated_node_scores(pcmk_resource_t *source_rsc, if (pcmk__any_node_available(work)) { GList *colocations = NULL; - if (pcmk_is_set(flags, pcmk__coloc_select_this_with)) { + if (pcmk__is_set(flags, pcmk__coloc_select_this_with)) { colocations = pcmk__this_with_colocations(source_rsc); pcmk__rsc_trace(source_rsc, "Checking additional %d optional '%s with' " @@ -1861,7 +1861,7 @@ pcmk__add_colocated_node_scores(pcmk_resource_t *source_rsc, float other_factor = factor * constraint->score / (float) PCMK_SCORE_INFINITY; - if (pcmk_is_set(flags, pcmk__coloc_select_this_with)) { + if (pcmk__is_set(flags, pcmk__coloc_select_this_with)) { other = constraint->primary; } else if (!pcmk__colocation_has_influence(constraint, NULL)) { continue; @@ -1883,7 +1883,7 @@ pcmk__add_colocated_node_scores(pcmk_resource_t *source_rsc, } g_list_free(colocations); - } else if (pcmk_is_set(flags, pcmk__coloc_select_active)) { + } else if (pcmk__is_set(flags, pcmk__coloc_select_active)) { pcmk__rsc_info(source_rsc, "%s: Rolling back optional scores from %s", log_id, source_rsc->id); g_hash_table_destroy(work); @@ -1892,7 +1892,7 @@ pcmk__add_colocated_node_scores(pcmk_resource_t *source_rsc, } - if (pcmk_is_set(flags, pcmk__coloc_select_nonnegative)) { + if (pcmk__is_set(flags, pcmk__coloc_select_nonnegative)) { pcmk_node_t *node = NULL; GHashTableIter iter; diff --git a/lib/pacemaker/pcmk_sched_fencing.c b/lib/pacemaker/pcmk_sched_fencing.c index b05bff2f069..5a52ef50007 100644 --- a/lib/pacemaker/pcmk_sched_fencing.c +++ b/lib/pacemaker/pcmk_sched_fencing.c @@ -130,7 +130,7 @@ order_stop_vs_fencing(pcmk_resource_t *rsc, pcmk_action_t *stonith_op) * ordered after fencing, even if the resource does not require fencing, * because guest node "fencing" is actually just a resource stop. */ - if (pcmk_is_set(rsc->flags, pcmk__rsc_needs_fencing) + if (pcmk__is_set(rsc->flags, pcmk__rsc_needs_fencing) || pcmk__is_guest_or_bundle_node(target)) { order_implicit = true; @@ -167,7 +167,7 @@ order_stop_vs_fencing(pcmk_resource_t *rsc, pcmk_action_t *stonith_op) order_actions(stonith_op, parent_stop, pcmk__ar_guest_allowed); } - if (pcmk_is_set(rsc->flags, pcmk__rsc_failed)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_failed)) { crm_notice("Stop of failed resource %s is implicit %s %s is fenced", rsc->id, (order_implicit? "after" : "because"), pcmk__node_name(target)); @@ -177,7 +177,7 @@ order_stop_vs_fencing(pcmk_resource_t *rsc, pcmk_action_t *stonith_op) pcmk__node_name(target)); } - if (pcmk_is_set(rsc->flags, pcmk__rsc_notify)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_notify)) { pe__order_notifs_after_fencing(action, rsc, stonith_op); } @@ -217,9 +217,9 @@ order_stop_vs_fencing(pcmk_resource_t *rsc, pcmk_action_t *stonith_op) pcmk_action_t *action = iter->data; if (!(action->node->details->online) || action->node->details->unclean - || pcmk_is_set(rsc->flags, pcmk__rsc_failed)) { + || pcmk__is_set(rsc->flags, pcmk__rsc_failed)) { - if (pcmk_is_set(rsc->flags, pcmk__rsc_failed)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_failed)) { pcmk__rsc_info(rsc, "Demote of failed resource %s is implicit " "after %s is fenced", @@ -268,7 +268,7 @@ rsc_stonith_ordering(pcmk_resource_t *rsc, pcmk_action_t *stonith_op) rsc_stonith_ordering(child_rsc, stonith_op); } - } else if (!pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + } else if (!pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { pcmk__rsc_trace(rsc, "Skipping fencing constraints for unmanaged resource: " "%s", rsc->id); @@ -320,10 +320,10 @@ pcmk__order_vs_unfence(const pcmk_resource_t *rsc, pcmk_node_t *node, * only quorum. However, fence agents that unfence often don't have enough * information to even probe or start unless the node is first unfenced. */ - if ((pcmk_is_set(rsc->flags, pcmk__rsc_fence_device) - && pcmk_is_set(rsc->priv->scheduler->flags, - pcmk__sched_enable_unfencing)) - || pcmk_is_set(rsc->flags, pcmk__rsc_needs_unfencing)) { + if ((pcmk__is_set(rsc->flags, pcmk__rsc_fence_device) + && pcmk__is_set(rsc->priv->scheduler->flags, + pcmk__sched_enable_unfencing)) + || pcmk__is_set(rsc->flags, pcmk__rsc_needs_unfencing)) { /* Start with an optional ordering. Requiring unfencing would result in * the node being unfenced, and all its resources being stopped, @@ -395,7 +395,7 @@ pcmk__fence_guest(pcmk_node_t *node) * it is restarted, so we always order pseudo-fencing after stop, not start * (even though start might be closer to what is done for a real reboot). */ - if ((stop != NULL) && pcmk_is_set(stop->flags, pcmk__action_pseudo)) { + if ((stop != NULL) && pcmk__is_set(stop->flags, pcmk__action_pseudo)) { pcmk_action_t *parent_stonith_op = pe_fence_op(stop->node, NULL, FALSE, NULL, FALSE, node->priv->scheduler); diff --git a/lib/pacemaker/pcmk_sched_group.c b/lib/pacemaker/pcmk_sched_group.c index 665b5ffcb6d..a46c163e034 100644 --- a/lib/pacemaker/pcmk_sched_group.c +++ b/lib/pacemaker/pcmk_sched_group.c @@ -45,10 +45,10 @@ pcmk__group_assign(pcmk_resource_t *rsc, const pcmk_node_t *prefer, pcmk__assert(pcmk__is_group(rsc)); - if (!pcmk_is_set(rsc->flags, pcmk__rsc_unassigned)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_unassigned)) { return rsc->priv->assigned_node; // Assignment already done } - if (pcmk_is_set(rsc->flags, pcmk__rsc_assigning)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_assigning)) { pcmk__rsc_debug(rsc, "Assignment dependency loop detected involving %s", rsc->id); return NULL; @@ -64,8 +64,8 @@ pcmk__group_assign(pcmk_resource_t *rsc, const pcmk_node_t *prefer, first_member = (pcmk_resource_t *) rsc->priv->children->data; rsc->priv->orig_role = first_member->priv->orig_role; - pe__show_node_scores(!pcmk_is_set(rsc->priv->scheduler->flags, - pcmk__sched_output_scores), + pe__show_node_scores(!pcmk__is_set(rsc->priv->scheduler->flags, + pcmk__sched_output_scores), rsc, __func__, rsc->priv->allowed_nodes, rsc->priv->scheduler); @@ -192,7 +192,7 @@ member_internal_constraints(gpointer data, gpointer user_data) } else if (member_data->colocated) { uint32_t flags = pcmk__coloc_none; - if (pcmk_is_set(member->flags, pcmk__rsc_critical)) { + if (pcmk__is_set(member->flags, pcmk__rsc_critical)) { flags |= pcmk__coloc_influence; } @@ -344,7 +344,7 @@ pcmk__group_internal_constraints(pcmk_resource_t *rsc) member_data.ordered = pe__group_flag_is_set(rsc, pcmk__group_ordered); member_data.colocated = pe__group_flag_is_set(rsc, pcmk__group_colocated); - member_data.promotable = pcmk_is_set(top->flags, pcmk__rsc_promotable); + member_data.promotable = pcmk__is_set(top->flags, pcmk__rsc_promotable); g_list_foreach(rsc->priv->children, member_internal_constraints, &member_data); } @@ -452,7 +452,7 @@ colocate_with_group(pcmk_resource_t *dependent, const pcmk_resource_t *primary, "Processing colocation %s (%s with group %s) for primary", colocation->id, dependent->id, primary->id); - if (pcmk_is_set(primary->flags, pcmk__rsc_unassigned)) { + if (pcmk__is_set(primary->flags, pcmk__rsc_unassigned)) { return 0; } @@ -576,8 +576,8 @@ pcmk__group_action_flags(pcmk_action_t *action, const pcmk_node_t *node) node); // Group action is mandatory if any member action is - if (pcmk_is_set(flags, pcmk__action_optional) - && !pcmk_is_set(member_flags, pcmk__action_optional)) { + if (pcmk__is_set(flags, pcmk__action_optional) + && !pcmk__is_set(member_flags, pcmk__action_optional)) { pcmk__rsc_trace(action->rsc, "%s is mandatory because %s is", action->uuid, member_action->uuid); pcmk__clear_raw_action_flags(flags, "group action", @@ -587,8 +587,8 @@ pcmk__group_action_flags(pcmk_action_t *action, const pcmk_node_t *node) // Group action is unrunnable if any member action is if (!pcmk__str_eq(task_s, action->task, pcmk__str_none) - && pcmk_is_set(flags, pcmk__action_runnable) - && !pcmk_is_set(member_flags, pcmk__action_runnable)) { + && pcmk__is_set(flags, pcmk__action_runnable) + && !pcmk__is_set(member_flags, pcmk__action_runnable)) { pcmk__rsc_trace(action->rsc, "%s is unrunnable because %s is", action->uuid, member_action->uuid); @@ -887,7 +887,7 @@ pcmk__group_with_colocations(const pcmk_resource_t *rsc, break; // We've seen all earlier members, and none are unmanaged } - if (!pcmk_is_set(member->flags, pcmk__rsc_managed)) { + if (!pcmk__is_set(member->flags, pcmk__rsc_managed)) { crm_trace("Adding mandatory '%s with' colocations to list for " "member %s because earlier member %s is unmanaged", rsc->id, orig_rsc->id, member->id); @@ -954,7 +954,7 @@ pcmk__group_add_colocated_node_scores(pcmk_resource_t *source_rsc, } // Avoid infinite recursion - if (pcmk_is_set(source_rsc->flags, pcmk__rsc_updating_nodes)) { + if (pcmk__is_set(source_rsc->flags, pcmk__rsc_updating_nodes)) { pcmk__rsc_info(source_rsc, "%s: Breaking dependency loop at %s", log_id, source_rsc->id); return; @@ -1001,7 +1001,7 @@ pcmk__group_add_utilization(const pcmk_resource_t *rsc, pcmk__assert((orig_rsc != NULL) && (utilization != NULL) && pcmk__is_group(rsc)); - if (!pcmk_is_set(rsc->flags, pcmk__rsc_unassigned)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_unassigned)) { return; } @@ -1016,7 +1016,7 @@ pcmk__group_add_utilization(const pcmk_resource_t *rsc, member = (pcmk_resource_t *) iter->data; - if (pcmk_is_set(member->flags, pcmk__rsc_unassigned) + if (pcmk__is_set(member->flags, pcmk__rsc_unassigned) && (g_list_find(all_rscs, member) == NULL)) { member->priv->cmds->add_utilization(member, orig_rsc, all_rscs, utilization); @@ -1027,7 +1027,7 @@ pcmk__group_add_utilization(const pcmk_resource_t *rsc, // Just add first member's utilization member = (pcmk_resource_t *) rsc->priv->children->data; if ((member != NULL) - && pcmk_is_set(member->flags, pcmk__rsc_unassigned) + && pcmk__is_set(member->flags, pcmk__rsc_unassigned) && (g_list_find(all_rscs, member) == NULL)) { member->priv->cmds->add_utilization(member, orig_rsc, all_rscs, diff --git a/lib/pacemaker/pcmk_sched_instances.c b/lib/pacemaker/pcmk_sched_instances.c index 0792abf2607..f047b119273 100644 --- a/lib/pacemaker/pcmk_sched_instances.c +++ b/lib/pacemaker/pcmk_sched_instances.c @@ -32,7 +32,7 @@ can_run_instance(const pcmk_resource_t *instance, const pcmk_node_t *node, { pcmk_node_t *allowed_node = NULL; - if (pcmk_is_set(instance->flags, pcmk__rsc_removed)) { + if (pcmk__is_set(instance->flags, pcmk__rsc_removed)) { pcmk__rsc_trace(instance, "%s cannot run on %s: orphaned", instance->id, pcmk__node_name(node)); return false; @@ -250,7 +250,7 @@ cmp_instance_by_colocation(const pcmk_resource_t *instance1, static bool did_fail(const pcmk_resource_t *rsc) { - if (pcmk_is_set(rsc->flags, pcmk__rsc_failed)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_failed)) { return true; } @@ -540,7 +540,7 @@ increment_parent_count(pcmk_resource_t *instance, * shouldn't be possible if the resource is managed, and we won't be * able to limit the number of instances assigned to the node. */ - CRM_LOG_ASSERT(!pcmk_is_set(instance->flags, pcmk__rsc_managed)); + CRM_LOG_ASSERT(!pcmk__is_set(instance->flags, pcmk__rsc_managed)); } else { allowed->assign->count++; @@ -568,7 +568,7 @@ assign_instance(pcmk_resource_t *instance, const pcmk_node_t *prefer, pcmk__rsc_trace(instance, "Assigning %s (preferring %s)", instance->id, ((prefer == NULL)? "no node" : prefer->priv->name)); - if (pcmk_is_set(instance->flags, pcmk__rsc_assigning)) { + if (pcmk__is_set(instance->flags, pcmk__rsc_assigning)) { pcmk__rsc_debug(instance, "Assignment loop detected involving %s colocations", instance->id); @@ -750,8 +750,8 @@ preferred_node(const pcmk_resource_t *instance, int optimal_per_node) // Check whether instance is active, healthy, and not yet assigned if ((instance->priv->active_nodes == NULL) - || !pcmk_is_set(instance->flags, pcmk__rsc_unassigned) - || pcmk_is_set(instance->flags, pcmk__rsc_failed)) { + || !pcmk__is_set(instance->flags, pcmk__rsc_unassigned) + || pcmk__is_set(instance->flags, pcmk__rsc_failed)) { return NULL; } @@ -819,7 +819,7 @@ pcmk__assign_instances(pcmk_resource_t *collective, GList *instances, int available = max_total - assigned; instance = iter->data; - if (!pcmk_is_set(instance->flags, pcmk__rsc_unassigned)) { + if (!pcmk__is_set(instance->flags, pcmk__rsc_unassigned)) { continue; // Already assigned } @@ -837,7 +837,7 @@ pcmk__assign_instances(pcmk_resource_t *collective, GList *instances, for (iter = instances; iter != NULL; iter = iter->next) { instance = (pcmk_resource_t *) iter->data; - if (!pcmk_is_set(instance->flags, pcmk__rsc_unassigned)) { + if (!pcmk__is_set(instance->flags, pcmk__rsc_unassigned)) { continue; // Already assigned } @@ -846,7 +846,7 @@ pcmk__assign_instances(pcmk_resource_t *collective, GList *instances, if (pcmk__top_allowed_node(instance, current) == NULL) { const char *unmanaged = ""; - if (!pcmk_is_set(instance->flags, pcmk__rsc_managed)) { + if (!pcmk__is_set(instance->flags, pcmk__rsc_managed)) { unmanaged = "Unmanaged resource "; } crm_notice("%s%s is running on %s which is no longer allowed", @@ -932,11 +932,12 @@ check_instance_state(const pcmk_resource_t *instance, uint32_t *state) iter = iter->next) { const pcmk_action_t *action = (const pcmk_action_t *) iter->data; - const bool optional = pcmk_is_set(action->flags, pcmk__action_optional); + const bool optional = pcmk__is_set(action->flags, + pcmk__action_optional); if (pcmk__str_eq(PCMK_ACTION_START, action->task, pcmk__str_none)) { if (!optional - && pcmk_is_set(action->flags, pcmk__action_runnable)) { + && pcmk__is_set(action->flags, pcmk__action_runnable)) { pcmk__rsc_trace(instance, "Instance is starting due to %s", action->uuid); @@ -1005,10 +1006,10 @@ pcmk__create_instance_actions(pcmk_resource_t *collective, GList *instances) // Create pseudo-actions for rsc start and started start = pe__new_rsc_pseudo_action(collective, PCMK_ACTION_START, - !pcmk_is_set(state, instance_starting), + !pcmk__is_set(state, instance_starting), true); started = pe__new_rsc_pseudo_action(collective, PCMK_ACTION_RUNNING, - !pcmk_is_set(state, instance_starting), + !pcmk__is_set(state, instance_starting), false); started->priority = PCMK_SCORE_INFINITY; if (pcmk_any_flags_set(state, instance_active|instance_starting)) { @@ -1017,13 +1018,13 @@ pcmk__create_instance_actions(pcmk_resource_t *collective, GList *instances) // Create pseudo-actions for rsc stop and stopped stop = pe__new_rsc_pseudo_action(collective, PCMK_ACTION_STOP, - !pcmk_is_set(state, instance_stopping), + !pcmk__is_set(state, instance_stopping), true); stopped = pe__new_rsc_pseudo_action(collective, PCMK_ACTION_STOPPED, - !pcmk_is_set(state, instance_stopping), + !pcmk__is_set(state, instance_stopping), true); stopped->priority = PCMK_SCORE_INFINITY; - if (!pcmk_is_set(state, instance_restarting)) { + if (!pcmk__is_set(state, instance_restarting)) { pcmk__set_action_flags(stop, pcmk__action_migratable); } @@ -1325,12 +1326,11 @@ find_instance_action(const pcmk_action_t *action, const pcmk_resource_t *instanc return matching_action; } - if (pcmk_is_set(instance->flags, pcmk__rsc_removed) - || pcmk__is_down_action(action_name)) { - crm_trace("No %s action found for %s%s", - action_name, - pcmk_is_set(instance->flags, pcmk__rsc_removed)? "orphan " : "", + if (pcmk__is_set(instance->flags, pcmk__rsc_removed)) { + crm_trace("No %s action found for orphan %s", action_name, instance->id); + } else if (pcmk__is_down_action(action_name)) { + crm_trace("No %s action found for %s", action_name, instance->id); } else { crm_err("No %s action found for %s to interleave (bug?)", action_name, instance->id); @@ -1549,7 +1549,7 @@ update_noninterleaved_actions(pcmk_resource_t *instance, pcmk_action_t *first, // Check whether action is runnable instance_flags = instance->priv->cmds->action_flags(instance_action, node); - if (!pcmk_is_set(instance_flags, pcmk__action_runnable)) { + if (!pcmk__is_set(instance_flags, pcmk__action_runnable)) { return changed; } @@ -1560,7 +1560,7 @@ update_noninterleaved_actions(pcmk_resource_t *instance, pcmk_action_t *first, type, scheduler); // Propagate any changes to later actions - if (pcmk_is_set(changed, pcmk__updated_then)) { + if (pcmk__is_set(changed, pcmk__updated_then)) { for (GList *after_iter = instance_action->actions_after; after_iter != NULL; after_iter = after_iter->next) { pcmk__related_action_t *after = after_iter->data; @@ -1684,8 +1684,8 @@ pcmk__collective_action_flags(pcmk_action_t *action, const GList *instances, node); // If any instance action is mandatory, so is the collective action - if (pcmk_is_set(flags, pcmk__action_optional) - && !pcmk_is_set(instance_flags, pcmk__action_optional)) { + if (pcmk__is_set(flags, pcmk__action_optional) + && !pcmk__is_set(instance_flags, pcmk__action_optional)) { pcmk__rsc_trace(instance, "%s is mandatory because %s is", action->uuid, instance_action->uuid); pe__clear_action_summary_flags(flags, action, @@ -1694,7 +1694,7 @@ pcmk__collective_action_flags(pcmk_action_t *action, const GList *instances, } // If any instance action is runnable, so is the collective action - if (pcmk_is_set(instance_flags, pcmk__action_runnable)) { + if (pcmk__is_set(instance_flags, pcmk__action_runnable)) { any_runnable = true; } } diff --git a/lib/pacemaker/pcmk_sched_migration.c b/lib/pacemaker/pcmk_sched_migration.c index f0945cf1682..fdb0335fd0c 100644 --- a/lib/pacemaker/pcmk_sched_migration.c +++ b/lib/pacemaker/pcmk_sched_migration.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. * @@ -125,7 +125,7 @@ pcmk__create_migration_actions(pcmk_resource_t *rsc, const pcmk_node_t *current) if (migrate_to != NULL) { add_migration_meta(migrate_to, current, rsc->priv->assigned_node); - if (!pcmk_is_set(rsc->flags, pcmk__rsc_is_remote_connection)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_is_remote_connection)) { /* migrate_to takes place on the source node, but can affect the * target node depending on how the agent is written. Because of * this, pending migrate_to actions must be recorded in the CIB, @@ -181,25 +181,25 @@ pcmk__rsc_can_migrate(const pcmk_resource_t *rsc, const pcmk_node_t *current) { CRM_CHECK(rsc != NULL, return false); - if (!pcmk_is_set(rsc->flags, pcmk__rsc_migratable)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_migratable)) { pcmk__rsc_trace(rsc, "%s cannot migrate because " "the configuration does not allow it", rsc->id); return false; } - if (!pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { pcmk__rsc_trace(rsc, "%s cannot migrate because it is not managed", rsc->id); return false; } - if (pcmk_is_set(rsc->flags, pcmk__rsc_failed)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_failed)) { pcmk__rsc_trace(rsc, "%s cannot migrate because it is failed", rsc->id); return false; } - if (pcmk_is_set(rsc->flags, pcmk__rsc_start_pending)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_start_pending)) { pcmk__rsc_trace(rsc, "%s cannot migrate because it has a start pending", rsc->id); return false; @@ -275,8 +275,8 @@ pcmk__order_migration_equivalents(pcmk__action_relation_t *order) } // Only orderings involving at least one migratable resource are relevant - first_migratable = pcmk_is_set(order->rsc1->flags, pcmk__rsc_migratable); - then_migratable = pcmk_is_set(order->rsc2->flags, pcmk__rsc_migratable); + first_migratable = pcmk__is_set(order->rsc1->flags, pcmk__rsc_migratable); + then_migratable = pcmk__is_set(order->rsc2->flags, pcmk__rsc_migratable); if (!first_migratable && !then_migratable) { return; } diff --git a/lib/pacemaker/pcmk_sched_nodes.c b/lib/pacemaker/pcmk_sched_nodes.c index 8f5f94d3469..643e4da2807 100644 --- a/lib/pacemaker/pcmk_sched_nodes.c +++ b/lib/pacemaker/pcmk_sched_nodes.c @@ -32,7 +32,7 @@ pcmk__node_available(const pcmk_node_t *node, bool consider_score, { if ((node == NULL) || (node->details == NULL) || !node->details->online || node->details->shutdown || node->details->unclean - || pcmk_is_set(node->priv->flags, pcmk__node_standby) + || pcmk__is_set(node->priv->flags, pcmk__node_standby) || node->details->maintenance) { return false; } diff --git a/lib/pacemaker/pcmk_sched_ordering.c b/lib/pacemaker/pcmk_sched_ordering.c index 48c186c5820..791ae5e796c 100644 --- a/lib/pacemaker/pcmk_sched_ordering.c +++ b/lib/pacemaker/pcmk_sched_ordering.c @@ -1069,7 +1069,7 @@ ordering_is_invalid(pcmk_action_t *action, pcmk__related_action_t *input) /* Prevent user-defined ordering constraints between resources * running in a guest node and the resource that defines that node. */ - if (!pcmk_is_set(input->flags, pcmk__ar_guest_allowed) + if (!pcmk__is_set(input->flags, pcmk__ar_guest_allowed) && (input->action->rsc != NULL) && pcmk__rsc_corresponds_to_guest(action->rsc, input->action->node)) { @@ -1138,7 +1138,7 @@ pcmk__order_stops_before_shutdown(pcmk_node_t *node, pcmk_action_t *shutdown_op) // Resources and nodes in maintenance mode won't be touched - if (pcmk_is_set(action->rsc->flags, pcmk__rsc_maintenance)) { + if (pcmk__is_set(action->rsc->flags, pcmk__rsc_maintenance)) { pcmk__rsc_trace(action->rsc, "Not ordering %s before shutdown of %s because " "resource in maintenance mode", @@ -1246,7 +1246,7 @@ order_resource_actions_after(pcmk_action_t *first_action, } if ((first_action != NULL) && (first_action->rsc == rsc) - && pcmk_is_set(first_action->flags, pcmk__action_migration_abort)) { + && pcmk__is_set(first_action->flags, pcmk__action_migration_abort)) { pcmk__rsc_trace(rsc, "Detected dangling migration ordering (%s then %s %s)", @@ -1255,7 +1255,7 @@ order_resource_actions_after(pcmk_action_t *first_action, } if ((first_action == NULL) - && !pcmk_is_set(flags, pcmk__ar_first_implies_then)) { + && !pcmk__is_set(flags, pcmk__ar_first_implies_then)) { pcmk__rsc_debug(rsc, "Ignoring ordering %d for %s: No first action found", diff --git a/lib/pacemaker/pcmk_sched_primitive.c b/lib/pacemaker/pcmk_sched_primitive.c index 0c5fbafe76e..6fda856bf4f 100644 --- a/lib/pacemaker/pcmk_sched_primitive.c +++ b/lib/pacemaker/pcmk_sched_primitive.c @@ -175,7 +175,7 @@ assign_best_node(pcmk_resource_t *rsc, const pcmk_node_t *prefer, prefer = most_free_node; } - if (!pcmk_is_set(rsc->flags, pcmk__rsc_unassigned)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_unassigned)) { // We've already finished assignment of resources to nodes return rsc->priv->assigned_node != NULL; } @@ -310,7 +310,7 @@ apply_this_with(pcmk__colocation_t *colocation, pcmk_resource_t *rsc) archive = pcmk__copy_node_table(rsc->priv->allowed_nodes); } - if (pcmk_is_set(other->flags, pcmk__rsc_unassigned)) { + if (pcmk__is_set(other->flags, pcmk__rsc_unassigned)) { pcmk__rsc_trace(rsc, "%s: Assigning colocation %s primary %s first" "(score=%d role=%s)", @@ -357,7 +357,7 @@ remote_connection_assigned(const pcmk_resource_t *connection) crm_trace("Pacemaker Remote node %s will be online", remote_node->priv->id); remote_node->details->online = TRUE; - if (!pcmk_is_set(remote_node->priv->flags, pcmk__node_seen)) { + if (!pcmk__is_set(remote_node->priv->flags, pcmk__node_seen)) { // Avoid unnecessary fence, since we will attempt connection remote_node->details->unclean = FALSE; } @@ -406,13 +406,13 @@ pcmk__primitive_assign(pcmk_resource_t *rsc, const pcmk_node_t *prefer, parent = rsc->priv->parent; // Never assign a child without parent being assigned first - if ((parent != NULL) && !pcmk_is_set(parent->flags, pcmk__rsc_assigning)) { + if ((parent != NULL) && !pcmk__is_set(parent->flags, pcmk__rsc_assigning)) { pcmk__rsc_debug(rsc, "%s: Assigning parent %s first", rsc->id, parent->id); parent->priv->cmds->assign(parent, prefer, stop_if_fail); } - if (!pcmk_is_set(rsc->flags, pcmk__rsc_unassigned)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_unassigned)) { // Assignment has already been done const char *node_name = "no node"; @@ -424,7 +424,7 @@ pcmk__primitive_assign(pcmk_resource_t *rsc, const pcmk_node_t *prefer, } // Ensure we detect assignment loops - if (pcmk_is_set(rsc->flags, pcmk__rsc_assigning)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_assigning)) { pcmk__rsc_debug(rsc, "Breaking assignment loop involving %s", rsc->id); return NULL; } @@ -486,7 +486,7 @@ pcmk__primitive_assign(pcmk_resource_t *rsc, const pcmk_node_t *prefer, PCMK_META_TARGET_ROLE, scheduler); } else if ((rsc->priv->next_role > rsc->priv->orig_role) - && !pcmk_is_set(scheduler->flags, pcmk__sched_quorate) + && !pcmk__is_set(scheduler->flags, pcmk__sched_quorate) && (scheduler->no_quorum_policy == pcmk_no_quorum_freeze)) { crm_notice("Resource %s cannot be elevated from %s to %s due to " PCMK_OPT_NO_QUORUM_POLICY "=" PCMK_VALUE_FREEZE, @@ -496,17 +496,17 @@ pcmk__primitive_assign(pcmk_resource_t *rsc, const pcmk_node_t *prefer, PCMK_OPT_NO_QUORUM_POLICY "=" PCMK_VALUE_FREEZE); } - pe__show_node_scores(!pcmk_is_set(scheduler->flags, - pcmk__sched_output_scores), + pe__show_node_scores(!pcmk__is_set(scheduler->flags, + pcmk__sched_output_scores), rsc, __func__, rsc->priv->allowed_nodes, scheduler); // Unmanage resource if fencing is enabled but no device is configured - if (pcmk_is_set(scheduler->flags, pcmk__sched_fencing_enabled) - && !pcmk_is_set(scheduler->flags, pcmk__sched_have_fencing)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_fencing_enabled) + && !pcmk__is_set(scheduler->flags, pcmk__sched_have_fencing)) { pcmk__clear_rsc_flags(rsc, pcmk__rsc_managed); } - if (!pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { // Unmanaged resources stay on their current node const char *reason = NULL; pcmk_node_t *assign_to = NULL; @@ -517,7 +517,7 @@ pcmk__primitive_assign(pcmk_resource_t *rsc, const pcmk_node_t *prefer, reason = "inactive"; } else if (rsc->priv->orig_role == pcmk_role_promoted) { reason = "promoted"; - } else if (pcmk_is_set(rsc->flags, pcmk__rsc_failed)) { + } else if (pcmk__is_set(rsc->flags, pcmk__rsc_failed)) { reason = "failed"; } else { reason = "active"; @@ -527,7 +527,7 @@ pcmk__primitive_assign(pcmk_resource_t *rsc, const pcmk_node_t *prefer, reason); pcmk__assign_resource(rsc, assign_to, true, stop_if_fail); - } else if (pcmk_is_set(scheduler->flags, pcmk__sched_stop_all)) { + } else if (pcmk__is_set(scheduler->flags, pcmk__sched_stop_all)) { // Must stop at some point, but be consistent with stop_if_fail if (stop_if_fail) { pcmk__rsc_debug(rsc, @@ -538,7 +538,7 @@ pcmk__primitive_assign(pcmk_resource_t *rsc, const pcmk_node_t *prefer, } else if (!assign_best_node(rsc, prefer, stop_if_fail)) { // Assignment failed - if (!pcmk_is_set(rsc->flags, pcmk__rsc_removed)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_removed)) { pcmk__rsc_info(rsc, "Resource %s cannot run anywhere", rsc->id); } else if ((rsc->priv->active_nodes != NULL) && stop_if_fail) { pcmk__rsc_info(rsc, "Stopping removed resource %s", rsc->id); @@ -547,7 +547,7 @@ pcmk__primitive_assign(pcmk_resource_t *rsc, const pcmk_node_t *prefer, pcmk__clear_rsc_flags(rsc, pcmk__rsc_assigning); - if (pcmk_is_set(rsc->flags, pcmk__rsc_is_remote_connection)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_is_remote_connection)) { remote_connection_assigned(rsc); } @@ -592,7 +592,7 @@ schedule_restart_actions(pcmk_resource_t *rsc, pcmk_node_t *current, // Bring resource up to its next role on its next node while ((rsc->priv->orig_role <= rsc->priv->next_role) && (role != rsc->priv->orig_role) - && !pcmk_is_set(rsc->flags, pcmk__rsc_blocked)) { + && !pcmk__is_set(rsc->flags, pcmk__rsc_blocked)) { bool required = need_stop; next_role = rsc_state_matrix[role][rsc->priv->orig_role]; @@ -775,7 +775,7 @@ pcmk__primitive_create_actions(pcmk_resource_t *rsc) rsc->priv->partial_migration_target = NULL; allow_migrate = false; - } else if (pcmk_is_set(rsc->flags, pcmk__rsc_needs_fencing)) { + } else if (pcmk__is_set(rsc->flags, pcmk__rsc_needs_fencing)) { multiply_active = (num_all_active > 1); } else { /* If a resource has PCMK_META_REQUIRES set to PCMK_VALUE_NOTHING or @@ -816,15 +816,15 @@ pcmk__primitive_create_actions(pcmk_resource_t *rsc) pcmk__clear_rsc_flags(rsc, pcmk__rsc_stop_unexpected); } - if (pcmk_is_set(rsc->flags, pcmk__rsc_start_pending)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_start_pending)) { create_pending_start(rsc); } if (is_moving) { // Remaining tests are only for resources staying where they are - } else if (pcmk_is_set(rsc->flags, pcmk__rsc_failed)) { - if (pcmk_is_set(rsc->flags, pcmk__rsc_stop_if_failed)) { + } else if (pcmk__is_set(rsc->flags, pcmk__rsc_failed)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_stop_if_failed)) { need_stop = true; pcmk__rsc_trace(rsc, "Recovering %s", rsc->id); } else { @@ -834,7 +834,7 @@ pcmk__primitive_create_actions(pcmk_resource_t *rsc) } } - } else if (pcmk_is_set(rsc->flags, pcmk__rsc_blocked)) { + } else if (pcmk__is_set(rsc->flags, pcmk__rsc_blocked)) { pcmk__rsc_trace(rsc, "Blocking further actions on %s", rsc->id); need_stop = true; @@ -846,7 +846,7 @@ pcmk__primitive_create_actions(pcmk_resource_t *rsc) pcmk__rsc_trace(rsc, "Creating start action for promoted resource %s", rsc->id); start = start_action(rsc, rsc->priv->assigned_node, TRUE); - if (!pcmk_is_set(start->flags, pcmk__action_optional)) { + if (!pcmk__is_set(start->flags, pcmk__action_optional)) { // Recovery of a promoted resource pcmk__rsc_trace(rsc, "%s restart is required for recovery", rsc->id); need_stop = true; @@ -932,7 +932,7 @@ pcmk__primitive_internal_constraints(pcmk_resource_t *rsc) pcmk__assert(pcmk__is_primitive(rsc)); scheduler = rsc->priv->scheduler; - if (!pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { pcmk__rsc_trace(rsc, "Skipping implicit constraints for unmanaged resource " "%s", rsc->id); @@ -940,10 +940,10 @@ pcmk__primitive_internal_constraints(pcmk_resource_t *rsc) } // Whether resource requires unfencing - check_unfencing = !pcmk_is_set(rsc->flags, pcmk__rsc_fence_device) - && pcmk_is_set(scheduler->flags, - pcmk__sched_enable_unfencing) - && pcmk_is_set(rsc->flags, pcmk__rsc_needs_unfencing); + check_unfencing = !pcmk__is_set(rsc->flags, pcmk__rsc_fence_device) + && pcmk__is_set(scheduler->flags, + pcmk__sched_enable_unfencing) + && pcmk__is_set(rsc->flags, pcmk__rsc_needs_unfencing); // Whether a non-default placement strategy is used check_utilization = (g_hash_table_size(rsc->priv->utilization) > 0) @@ -958,8 +958,8 @@ pcmk__primitive_internal_constraints(pcmk_resource_t *rsc) |pcmk__ar_intermediate_stop, scheduler); // Promotable ordering: demote before stop, start before promote - if (pcmk_is_set(pe__const_top_resource(rsc, false)->flags, - pcmk__rsc_promotable) + if (pcmk__is_set(pe__const_top_resource(rsc, false)->flags, + pcmk__rsc_promotable) || (rsc->priv->orig_role > pcmk_role_unpromoted)) { pcmk__new_ordering(rsc, pcmk__op_key(rsc->id, PCMK_ACTION_DEMOTE, 0), @@ -1001,13 +1001,13 @@ pcmk__primitive_internal_constraints(pcmk_resource_t *rsc) if (rsc->priv->launcher != NULL) { pcmk_resource_t *remote_rsc = NULL; - if (pcmk_is_set(rsc->flags, pcmk__rsc_is_remote_connection)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_is_remote_connection)) { // rsc is the implicit remote connection for a guest or bundle node /* Guest resources are not allowed to run on Pacemaker Remote nodes, * to avoid nesting remotes. However, bundles are allowed. */ - if (!pcmk_is_set(rsc->flags, pcmk__rsc_remote_nesting_allowed)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_remote_nesting_allowed)) { rsc_avoids_remote_nodes(rsc->priv->launcher); } @@ -1029,8 +1029,8 @@ pcmk__primitive_internal_constraints(pcmk_resource_t *rsc) * we check whether a resource (that is not itself a remote connection) * has PCMK__META_CONTAINER set to a remote node or guest node resource. */ - } else if (pcmk_is_set(rsc->priv->launcher->flags, - pcmk__rsc_is_remote_connection)) { + } else if (pcmk__is_set(rsc->priv->launcher->flags, + pcmk__rsc_is_remote_connection)) { remote_rsc = rsc->priv->launcher; } else { remote_rsc = @@ -1077,7 +1077,7 @@ pcmk__primitive_internal_constraints(pcmk_resource_t *rsc) PCMK_ACTION_STOP, 0), NULL, pcmk__ar_then_implies_first, scheduler); - if (pcmk_is_set(rsc->flags, pcmk__rsc_remote_nesting_allowed) + if (pcmk__is_set(rsc->flags, pcmk__rsc_remote_nesting_allowed) /* @TODO: && non-bundle Pacemaker Remote nodes exist */) { score = 10000; /* Highly preferred but not essential */ } else { @@ -1089,8 +1089,8 @@ pcmk__primitive_internal_constraints(pcmk_resource_t *rsc) } } - if (pcmk_is_set(rsc->flags, pcmk__rsc_is_remote_connection) - || pcmk_is_set(rsc->flags, pcmk__rsc_fence_device)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_is_remote_connection) + || pcmk__is_set(rsc->flags, pcmk__rsc_fence_device)) { /* Remote connections and fencing devices are not allowed to run on * Pacemaker Remote nodes */ @@ -1180,7 +1180,7 @@ pcmk__with_primitive_colocations(const pcmk_resource_t *rsc, iter != NULL; iter = iter->next) { pcmk__colocation_t *colocation = iter->data; - if (pcmk_is_set(colocation->flags, pcmk__coloc_explicit)) { + if (pcmk__is_set(colocation->flags, pcmk__coloc_explicit)) { pcmk__add_with_this(list, colocation, orig_rsc); } } @@ -1214,7 +1214,7 @@ pcmk__primitive_with_colocations(const pcmk_resource_t *rsc, iter != NULL; iter = iter->next) { pcmk__colocation_t *colocation = iter->data; - if (pcmk_is_set(colocation->flags, pcmk__coloc_explicit)) { + if (pcmk__is_set(colocation->flags, pcmk__coloc_explicit)) { pcmk__add_this_with(list, colocation, orig_rsc); } } @@ -1322,11 +1322,11 @@ stop_resource(pcmk_resource_t *rsc, pcmk_node_t *node, bool optional) pe_action_set_reason(stop, "being multiply active", true); } - if (!pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { pcmk__clear_action_flags(stop, pcmk__action_runnable); } - if (pcmk_is_set(rsc->flags, pcmk__rsc_needs_unfencing)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_needs_unfencing)) { pcmk_action_t *unfence = pe_fence_op(current, PCMK_ACTION_ON, true, NULL, false, rsc->priv->scheduler); @@ -1363,7 +1363,7 @@ start_resource(pcmk_resource_t *rsc, pcmk_node_t *node, bool optional) pcmk__order_vs_unfence(rsc, node, start, pcmk__ar_first_implies_then); - if (pcmk_is_set(start->flags, pcmk__action_runnable) && !optional) { + if (pcmk__is_set(start->flags, pcmk__action_runnable) && !optional) { pcmk__clear_action_flags(start, pcmk__action_optional); } @@ -1401,7 +1401,7 @@ promote_resource(pcmk_resource_t *rsc, pcmk_node_t *node, bool optional) for (iter = action_list; iter != NULL; iter = iter->next) { pcmk_action_t *start = (pcmk_action_t *) iter->data; - if (!pcmk_is_set(start->flags, pcmk__action_runnable)) { + if (!pcmk__is_set(start->flags, pcmk__action_runnable)) { runnable = false; } } @@ -1500,7 +1500,7 @@ pcmk__schedule_cleanup(pcmk_resource_t *rsc, const pcmk_node_t *node, CRM_CHECK((rsc != NULL) && (node != NULL), return); - if (pcmk_is_set(rsc->flags, pcmk__rsc_failed)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_failed)) { pcmk__rsc_trace(rsc, "Skipping clean-up of %s on %s: resource failed", rsc->id, pcmk__node_name(node)); return; @@ -1587,7 +1587,7 @@ pcmk__primitive_add_utilization(const pcmk_resource_t *rsc, pcmk__assert(pcmk__is_primitive(rsc) && (orig_rsc != NULL) && (utilization != NULL)); - if (!pcmk_is_set(rsc->flags, pcmk__rsc_unassigned)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_unassigned)) { return; } diff --git a/lib/pacemaker/pcmk_sched_probes.c b/lib/pacemaker/pcmk_sched_probes.c index 6223d246d08..8e454b81915 100644 --- a/lib/pacemaker/pcmk_sched_probes.c +++ b/lib/pacemaker/pcmk_sched_probes.c @@ -110,9 +110,9 @@ guest_resource_will_stop(const pcmk_node_t *node) /* Ideally, we'd check whether the guest has a required stop, but that * information doesn't exist yet, so approximate it ... */ - return pcmk_is_set(node->priv->flags, pcmk__node_remote_reset) + return pcmk__is_set(node->priv->flags, pcmk__node_remote_reset) || node->details->unclean - || pcmk_is_set(guest_rsc->flags, pcmk__rsc_failed) + || pcmk__is_set(guest_rsc->flags, pcmk__rsc_failed) || (guest_rsc->priv->next_role == pcmk_role_stopped) // Guest is moving @@ -172,14 +172,14 @@ pcmk__probe_rsc_on_node(pcmk_resource_t *rsc, pcmk_node_t *node) pcmk__assert((rsc != NULL) && (node != NULL)); - if (!pcmk_is_set(rsc->priv->scheduler->flags, - pcmk__sched_probe_resources)) { + if (!pcmk__is_set(rsc->priv->scheduler->flags, + pcmk__sched_probe_resources)) { reason = "start-up probes are disabled"; goto no_probe; } if (pcmk__is_pacemaker_remote_node(node)) { - if (pcmk_is_set(rsc->flags, pcmk__rsc_fence_device)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_fence_device)) { reason = "Pacemaker Remote nodes cannot run stonith agents"; goto no_probe; @@ -189,7 +189,7 @@ pcmk__probe_rsc_on_node(pcmk_resource_t *rsc, pcmk_node_t *node) reason = "guest nodes cannot run resources containing guest nodes"; goto no_probe; - } else if (pcmk_is_set(rsc->flags, pcmk__rsc_is_remote_connection)) { + } else if (pcmk__is_set(rsc->flags, pcmk__rsc_is_remote_connection)) { reason = "Pacemaker Remote nodes cannot host remote connections"; goto no_probe; } @@ -201,11 +201,11 @@ pcmk__probe_rsc_on_node(pcmk_resource_t *rsc, pcmk_node_t *node) } if ((rsc->priv->launcher != NULL) - && !pcmk_is_set(rsc->flags, pcmk__rsc_is_remote_connection)) { + && !pcmk__is_set(rsc->flags, pcmk__rsc_is_remote_connection)) { reason = "resource is inside a container"; goto no_probe; - } else if (pcmk_is_set(rsc->flags, pcmk__rsc_removed)) { + } else if (pcmk__is_set(rsc->flags, pcmk__rsc_removed)) { reason = "resource is orphaned"; goto no_probe; @@ -218,8 +218,8 @@ pcmk__probe_rsc_on_node(pcmk_resource_t *rsc, pcmk_node_t *node) allowed = g_hash_table_lookup(rsc->priv->allowed_nodes, node->priv->id); - if (pcmk_is_set(rsc->flags, pcmk__rsc_exclusive_probes) - || pcmk_is_set(top->flags, pcmk__rsc_exclusive_probes)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_exclusive_probes) + || pcmk__is_set(top->flags, pcmk__rsc_exclusive_probes)) { // Exclusive discovery is enabled ... if (allowed == NULL) { @@ -281,7 +281,7 @@ pcmk__probe_rsc_on_node(pcmk_resource_t *rsc, pcmk_node_t *node) /* Prevent a start if the resource can't be probed, but don't cause the * resource or entire clone to stop if already active. */ - if (!pcmk_is_set(probe->flags, pcmk__action_runnable) + if (!pcmk__is_set(probe->flags, pcmk__action_runnable) && (top->priv->active_nodes == NULL)) { pcmk__set_relation_flags(flags, pcmk__ar_unrunnable_first_blocks); } @@ -409,11 +409,11 @@ add_probe_orderings_for_stops(pcmk_scheduler_t *scheduler) } // Preserve certain order options for future filtering - if (pcmk_is_set(order->flags, pcmk__ar_if_first_unmigratable)) { + if (pcmk__is_set(order->flags, pcmk__ar_if_first_unmigratable)) { pcmk__set_relation_flags(order_flags, pcmk__ar_if_first_unmigratable); } - if (pcmk_is_set(order->flags, pcmk__ar_if_on_same_node)) { + if (pcmk__is_set(order->flags, pcmk__ar_if_on_same_node)) { pcmk__set_relation_flags(order_flags, pcmk__ar_if_on_same_node); } @@ -497,9 +497,9 @@ add_start_orderings_for_probe(pcmk_action_t *probe, * many instances before we know the state on all nodes. */ if ((after->action->rsc->priv->variant <= pcmk__rsc_variant_group) - || pcmk_is_set(probe->flags, pcmk__action_runnable) + || pcmk__is_set(probe->flags, pcmk__action_runnable) // The order type is already enforced for its parent. - || pcmk_is_set(after->flags, pcmk__ar_unrunnable_first_blocks) + || pcmk__is_set(after->flags, pcmk__ar_unrunnable_first_blocks) || (pe__const_top_resource(probe->rsc, false) != after->action->rsc) || !pcmk__str_eq(after->action->task, PCMK_ACTION_START, pcmk__str_none)) { @@ -565,7 +565,7 @@ add_restart_orderings_for_probe(pcmk_action_t *probe, pcmk_action_t *after) } // Avoid running into any possible loop - if (pcmk_is_set(after->flags, pcmk__action_detect_loop)) { + if (pcmk__is_set(after->flags, pcmk__action_detect_loop)) { return; } pcmk__set_action_flags(after, pcmk__action_detect_loop); @@ -595,7 +595,7 @@ add_restart_orderings_for_probe(pcmk_action_t *probe, pcmk_action_t *after) pcmk_action_t *then = (pcmk_action_t *) iter->data; // Skip pseudo-actions (for example, those implied by fencing) - if (!pcmk_is_set(then->flags, pcmk__action_pseudo)) { + if (!pcmk__is_set(then->flags, pcmk__action_pseudo)) { order_actions(probe, then, pcmk__ar_ordered); } } @@ -634,7 +634,7 @@ add_restart_orderings_for_probe(pcmk_action_t *probe, pcmk_action_t *after) * only used for unfencing case, which tends to introduce transition * loops... */ - if (!pcmk_is_set(after_wrapper->flags, pcmk__ar_first_implies_then)) { + if (!pcmk__is_set(after_wrapper->flags, pcmk__ar_first_implies_then)) { /* The order type between a group/clone and its child such as * B.start-> B_child.start is: * pcmk__ar_then_implies_first_graphed @@ -894,7 +894,7 @@ pcmk__schedule_probes(pcmk_scheduler_t *scheduler) continue; } - if (!pcmk_is_set(node->priv->flags, pcmk__node_probes_allowed)) { + if (!pcmk__is_set(node->priv->flags, pcmk__node_probes_allowed)) { // The user requested that probes not be done on this node continue; } diff --git a/lib/pacemaker/pcmk_sched_promotable.c b/lib/pacemaker/pcmk_sched_promotable.c index cdf276f3f94..608aab3d8a7 100644 --- a/lib/pacemaker/pcmk_sched_promotable.c +++ b/lib/pacemaker/pcmk_sched_promotable.c @@ -100,7 +100,7 @@ check_for_role_change(const pcmk_resource_t *rsc, bool *demoting, if (*promoting && *demoting) { return; - } else if (pcmk_is_set(action->flags, pcmk__action_optional)) { + } else if (pcmk__is_set(action->flags, pcmk__action_optional)) { continue; } else if (pcmk__str_eq(PCMK_ACTION_DEMOTE, action->task, @@ -191,7 +191,7 @@ node_to_be_promoted_on(const pcmk_resource_t *rsc) rsc->id); return NULL; - } else if (!pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + } else if (!pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { if (rsc->priv->fns->state(rsc, true) == pcmk_role_promoted) { crm_notice("Unmanaged instance %s will be left promoted on %s", rsc->id, pcmk__node_name(node)); @@ -224,7 +224,7 @@ node_to_be_promoted_on(const pcmk_resource_t *rsc) * instance to a node where its parent is not allowed, but it's good to * have a fail-safe. */ - if (pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { pcmk__sched_err(node->priv->scheduler, "%s can't be promoted because %s is not allowed " "on %s (scheduler bug?)", @@ -233,7 +233,7 @@ node_to_be_promoted_on(const pcmk_resource_t *rsc) return NULL; } else if ((local_node->assign->count >= pe__clone_promoted_node_max(parent)) - && pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + && pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { pcmk__rsc_trace(rsc, "%s can't be promoted because %s has " "maximum promoted instances already", @@ -402,7 +402,7 @@ set_promotion_priority_to_node_score(gpointer data, gpointer user_data) pcmk_node_t *chosen = child->priv->fns->location(child, NULL, pcmk__rsc_node_assigned); - if (!pcmk_is_set(child->flags, pcmk__rsc_managed) + if (!pcmk__is_set(child->flags, pcmk__rsc_managed) && (child->priv->next_role == pcmk_role_promoted)) { child->priv->promotion_priority = PCMK_SCORE_INFINITY; pcmk__rsc_trace(clone, @@ -593,7 +593,7 @@ promotion_score_applies(const pcmk_resource_t *rsc, const pcmk_node_t *node) const char *reason = "allowed"; // Some checks apply only to anonymous clone instances - if (!pcmk_is_set(rsc->flags, pcmk__rsc_unique)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_unique)) { // If instance is active on the node, its score definitely applies active = find_active_anon_instance(parent, id, node); @@ -672,7 +672,7 @@ promotion_attr_value(const pcmk_resource_t *rsc, const pcmk_node_t *node, const char *target = NULL; enum pcmk__rsc_node node_type = pcmk__rsc_node_assigned; - if (pcmk_is_set(rsc->flags, pcmk__rsc_unassigned)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_unassigned)) { // Not assigned yet node_type = pcmk__rsc_node_current; } @@ -745,7 +745,7 @@ promotion_score(const pcmk_resource_t *rsc, const pcmk_node_t *node, pcmk__rsc_trace(rsc, "Promotion score for %s on %s = %s", name, pcmk__node_name(node), pcmk__s(attr_value, "(unset)")); - } else if (!pcmk_is_set(rsc->flags, pcmk__rsc_unique)) { + } else if (!pcmk__is_set(rsc->flags, pcmk__rsc_unique)) { /* If we don't have any resource history yet, we won't have history_id. * In that case, for anonymous clones, try the resource name without * any instance number. @@ -911,8 +911,8 @@ show_promotion_score(pcmk_resource_t *instance) chosen = instance->priv->fns->location(instance, NULL, pcmk__rsc_node_assigned); score_s = pcmk_readable_score(instance->priv->promotion_priority); - if (pcmk_is_set(instance->priv->scheduler->flags, - pcmk__sched_output_scores) + if (pcmk__is_set(instance->priv->scheduler->flags, + pcmk__sched_output_scores) && !pcmk__is_daemon && (instance->priv->scheduler->priv->out != NULL)) { @@ -1054,7 +1054,7 @@ set_instance_role(gpointer data, gpointer user_data) instance->id); } else if ((*count < pe__clone_promoted_max(instance)) - || !pcmk_is_set(clone->flags, pcmk__rsc_managed)) { + || !pcmk__is_set(clone->flags, pcmk__rsc_managed)) { chosen = node_to_be_promoted_on(instance); } @@ -1064,7 +1064,7 @@ set_instance_role(gpointer data, gpointer user_data) } if ((instance->priv->orig_role < pcmk_role_promoted) - && !pcmk_is_set(scheduler->flags, pcmk__sched_quorate) + && !pcmk__is_set(scheduler->flags, pcmk__sched_quorate) && (scheduler->no_quorum_policy == pcmk_no_quorum_freeze)) { crm_notice("Clone instance %s cannot be promoted without quorum", instance->id); diff --git a/lib/pacemaker/pcmk_sched_recurring.c b/lib/pacemaker/pcmk_sched_recurring.c index 609908916bb..0cfd93487d7 100644 --- a/lib/pacemaker/pcmk_sched_recurring.c +++ b/lib/pacemaker/pcmk_sched_recurring.c @@ -207,8 +207,8 @@ active_recurring_should_be_optional(const pcmk_resource_t *rsc, return false; } - if (!pcmk_is_set(rsc->priv->cmds->action_flags(start, NULL), - pcmk__action_optional)) { + if (!pcmk__is_set(rsc->priv->cmds->action_flags(start, NULL), + pcmk__action_optional)) { pcmk__rsc_trace(rsc, "%s will be mandatory because %s is", key, start->uuid); return false; @@ -227,7 +227,7 @@ active_recurring_should_be_optional(const pcmk_resource_t *rsc, const pcmk_action_t *op = (const pcmk_action_t *) iter->data; - if (pcmk_is_set(op->flags, pcmk__action_reschedule)) { + if (pcmk__is_set(op->flags, pcmk__action_reschedule)) { pcmk__rsc_trace(rsc, "%s will be mandatory because " "it needs to be rescheduled", key); @@ -324,7 +324,7 @@ recurring_op_for_active(pcmk_resource_t *rsc, pcmk_action_t *start, mon = custom_action(rsc, strdup(op->key), op->name, node, is_optional, rsc->priv->scheduler); - if (!pcmk_is_set(start->flags, pcmk__action_runnable)) { + if (!pcmk__is_set(start->flags, pcmk__action_runnable)) { pcmk__rsc_trace(rsc, "%s is unrunnable because start is", mon->uuid); pcmk__clear_action_flags(mon, pcmk__action_runnable); @@ -334,7 +334,7 @@ recurring_op_for_active(pcmk_resource_t *rsc, pcmk_action_t *start, mon->uuid); pcmk__clear_action_flags(mon, pcmk__action_runnable); - } else if (!pcmk_is_set(mon->flags, pcmk__action_optional)) { + } else if (!pcmk__is_set(mon->flags, pcmk__action_optional)) { pcmk__rsc_info(rsc, "Start %s-interval %s for %s on %s", pcmk__readable_interval(op->interval_ms), mon->task, rsc->id, pcmk__node_name(node)); @@ -345,7 +345,7 @@ recurring_op_for_active(pcmk_resource_t *rsc, pcmk_action_t *start, } // Order monitor relative to other actions - if ((node == NULL) || pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + if ((node == NULL) || pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { pcmk__new_ordering(rsc, start_key(rsc), NULL, NULL, strdup(mon->uuid), mon, pcmk__ar_first_implies_then @@ -462,21 +462,21 @@ order_after_stops(pcmk_resource_t *rsc, const pcmk_node_t *node, for (GList *iter = stop_ops; iter != NULL; iter = iter->next) { pcmk_action_t *stop = (pcmk_action_t *) iter->data; - if (!pcmk_is_set(stop->flags, pcmk__action_optional) - && !pcmk_is_set(action->flags, pcmk__action_optional) - && !pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + if (!pcmk__is_set(stop->flags, pcmk__action_optional) + && !pcmk__is_set(action->flags, pcmk__action_optional) + && !pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { pcmk__rsc_trace(rsc, "%s optional on %s: unmanaged", action->uuid, pcmk__node_name(node)); pcmk__set_action_flags(action, pcmk__action_optional); } - if (!pcmk_is_set(stop->flags, pcmk__action_runnable)) { + if (!pcmk__is_set(stop->flags, pcmk__action_runnable)) { crm_debug("%s unrunnable on %s: stop is unrunnable", action->uuid, pcmk__node_name(node)); pcmk__clear_action_flags(action, pcmk__action_runnable); } - if (pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { pcmk__new_ordering(rsc, stop_key(rsc), stop, NULL, NULL, action, pcmk__ar_first_implies_then @@ -506,7 +506,7 @@ recurring_op_for_inactive(pcmk_resource_t *rsc, const pcmk_node_t *node, return; } - if (!pcmk_is_set(rsc->flags, pcmk__rsc_unique)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_unique)) { crm_notice("Ignoring %s (recurring monitors for " PCMK_ROLE_STOPPED " role are not supported for anonymous clones)", op->id); return; // @TODO add support @@ -549,7 +549,7 @@ recurring_op_for_inactive(pcmk_resource_t *rsc, const pcmk_node_t *node, pe__add_action_expected_result(stopped_mon, CRM_EX_NOT_RUNNING); - if (pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { order_after_probes(rsc, stop_node, stopped_mon); } @@ -564,8 +564,8 @@ recurring_op_for_inactive(pcmk_resource_t *rsc, const pcmk_node_t *node, pcmk__clear_action_flags(stopped_mon, pcmk__action_runnable); } - if (pcmk_is_set(stopped_mon->flags, pcmk__action_runnable) - && !pcmk_is_set(stopped_mon->flags, pcmk__action_optional)) { + if (pcmk__is_set(stopped_mon->flags, pcmk__action_runnable) + && !pcmk__is_set(stopped_mon->flags, pcmk__action_optional)) { crm_notice("Start recurring %s-interval %s for " PCMK_ROLE_STOPPED " %s on %s", pcmk__readable_interval(op->interval_ms), @@ -585,14 +585,14 @@ pcmk__create_recurring_actions(pcmk_resource_t *rsc) { pcmk_action_t *start = NULL; - if (pcmk_is_set(rsc->flags, pcmk__rsc_blocked)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_blocked)) { pcmk__rsc_trace(rsc, "Skipping recurring actions for blocked resource %s", rsc->id); return; } - if (pcmk_is_set(rsc->flags, pcmk__rsc_maintenance)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_maintenance)) { pcmk__rsc_trace(rsc, "Skipping recurring actions for %s " "in maintenance mode", rsc->id); @@ -609,7 +609,7 @@ pcmk__create_recurring_actions(pcmk_resource_t *rsc) rsc->id, pcmk__node_name(rsc->priv->assigned_node)); } else if ((rsc->priv->next_role != pcmk_role_stopped) - || !pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + || !pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { // Recurring actions for active roles needed start = start_action(rsc, rsc->priv->assigned_node, TRUE); } diff --git a/lib/pacemaker/pcmk_sched_remote.c b/lib/pacemaker/pcmk_sched_remote.c index 90b43a3995b..e5c5be0a9ec 100644 --- a/lib/pacemaker/pcmk_sched_remote.c +++ b/lib/pacemaker/pcmk_sched_remote.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. * @@ -113,7 +113,7 @@ get_remote_node_state(const pcmk_node_t *node) return remote_state_failed; } - if (!pcmk_is_set(remote_rsc->flags, pcmk__rsc_failed)) { + if (!pcmk__is_set(remote_rsc->flags, pcmk__rsc_failed)) { /* Connection resource is cleanly stopped */ return remote_state_stopped; } @@ -122,7 +122,7 @@ get_remote_node_state(const pcmk_node_t *node) if ((remote_rsc->priv->next_role == pcmk_role_stopped) && (remote_rsc->priv->remote_reconnect_ms > 0U) - && pcmk_is_set(node->priv->flags, pcmk__node_remote_fenced) + && pcmk__is_set(node->priv->flags, pcmk__node_remote_fenced) && !pe__shutdown_requested(node)) { /* We won't know whether the connection is recoverable until the @@ -186,7 +186,7 @@ apply_remote_ordering(pcmk_action_t *action) crm_trace("Order %s action %s relative to %s%s (state: %s)", action->task, action->uuid, - pcmk_is_set(remote_rsc->flags, pcmk__rsc_failed)? "failed " : "", + pcmk__is_set(remote_rsc->flags, pcmk__rsc_failed)? "failed " : "", remote_rsc->id, state2text(state)); if (pcmk__strcase_any_of(action->task, PCMK_ACTION_MIGRATE_TO, @@ -313,16 +313,16 @@ apply_launcher_ordering(pcmk_action_t *action) launcher = remote_rsc->priv->launcher; pcmk__assert(launcher != NULL); - if (pcmk_is_set(launcher->flags, pcmk__rsc_failed)) { + if (pcmk__is_set(launcher->flags, pcmk__rsc_failed)) { pe_fence_node(action->rsc->priv->scheduler, action->node, "container failed", FALSE); } crm_trace("Order %s action %s relative to %s%s for %s%s", action->task, action->uuid, - pcmk_is_set(remote_rsc->flags, pcmk__rsc_failed)? "failed " : "", + pcmk__is_set(remote_rsc->flags, pcmk__rsc_failed)? "failed " : "", remote_rsc->id, - pcmk_is_set(launcher->flags, pcmk__rsc_failed)? "failed " : "", + pcmk__is_set(launcher->flags, pcmk__rsc_failed)? "failed " : "", launcher->id); if (pcmk__strcase_any_of(action->task, PCMK_ACTION_MIGRATE_TO, @@ -346,7 +346,7 @@ apply_launcher_ordering(pcmk_action_t *action) case pcmk__action_stop: case pcmk__action_demote: - if (pcmk_is_set(launcher->flags, pcmk__rsc_failed)) { + if (pcmk__is_set(launcher->flags, pcmk__rsc_failed)) { /* When the launcher representing a guest node fails, any stop * or demote actions for resources running on the guest node * are implied by the launcher stopping. This is similar to @@ -393,7 +393,7 @@ apply_launcher_ordering(pcmk_action_t *action) void pcmk__order_remote_connection_actions(pcmk_scheduler_t *scheduler) { - if (!pcmk_is_set(scheduler->flags, pcmk__sched_have_remote_nodes)) { + if (!pcmk__is_set(scheduler->flags, pcmk__sched_have_remote_nodes)) { return; } @@ -413,7 +413,7 @@ pcmk__order_remote_connection_actions(pcmk_scheduler_t *scheduler) * remote connection resource, then make sure this happens before * any start of the resource in this transition. */ - if (pcmk_is_set(action->rsc->flags, pcmk__rsc_is_remote_connection) + if (pcmk__is_set(action->rsc->flags, pcmk__rsc_is_remote_connection) && pcmk__str_eq(action->task, PCMK_ACTION_CLEAR_FAILCOUNT, pcmk__str_none)) { @@ -440,7 +440,7 @@ pcmk__order_remote_connection_actions(pcmk_scheduler_t *scheduler) * real actions and vice versa later in update_actions() at the end of * pcmk__apply_orderings(). */ - if (pcmk_is_set(action->flags, pcmk__action_pseudo)) { + if (pcmk__is_set(action->flags, pcmk__action_pseudo)) { continue; } diff --git a/lib/pacemaker/pcmk_sched_resource.c b/lib/pacemaker/pcmk_sched_resource.c index 372cfa7db02..e9a0c2849e7 100644 --- a/lib/pacemaker/pcmk_sched_resource.c +++ b/lib/pacemaker/pcmk_sched_resource.c @@ -354,7 +354,7 @@ pcmk__output_resource_actions(pcmk_resource_t *rsc) } } - if ((current == NULL) && pcmk_is_set(rsc->flags, pcmk__rsc_removed)) { + if ((current == NULL) && pcmk__is_set(rsc->flags, pcmk__rsc_removed)) { /* Don't log stopped orphans */ return; } @@ -520,7 +520,7 @@ pcmk__assign_resource(pcmk_resource_t *rsc, pcmk_node_t *node, bool force, node->assign->count++; pcmk__consume_node_capacity(node->priv->utilization, rsc); - if (pcmk_is_set(scheduler->flags, pcmk__sched_show_utilization)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_show_utilization)) { pcmk__output_t *out = scheduler->priv->out; out->message(out, "resource-util", rsc, node, __func__); @@ -600,7 +600,7 @@ pcmk__threshold_reached(pcmk_resource_t *rsc, const pcmk_node_t *node, } // If we're ignoring failures, also ignore the migration threshold - if (pcmk_is_set(rsc->flags, pcmk__rsc_ignore_failure)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_ignore_failure)) { return false; } @@ -612,7 +612,7 @@ pcmk__threshold_reached(pcmk_resource_t *rsc, const pcmk_node_t *node, } // If failed resource is anonymous clone instance, we'll force clone away - if (!pcmk_is_set(rsc->flags, pcmk__rsc_unique)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_unique)) { rsc_to_ban = uber_parent(rsc); } diff --git a/lib/pacemaker/pcmk_sched_tickets.c b/lib/pacemaker/pcmk_sched_tickets.c index 871758657af..d3001a6f8ac 100644 --- a/lib/pacemaker/pcmk_sched_tickets.c +++ b/lib/pacemaker/pcmk_sched_tickets.c @@ -69,8 +69,8 @@ constraints_for_ticket(pcmk_resource_t *rsc, const rsc_ticket_t *rsc_ticket) CRM_CHECK((rsc != NULL) && (rsc_ticket != NULL), return); - if (pcmk_is_set(rsc_ticket->ticket->flags, pcmk__ticket_granted) - && !pcmk_is_set(rsc_ticket->ticket->flags, pcmk__ticket_standby)) { + if (pcmk__is_set(rsc_ticket->ticket->flags, pcmk__ticket_granted) + && !pcmk__is_set(rsc_ticket->ticket->flags, pcmk__ticket_standby)) { return; } @@ -86,7 +86,7 @@ constraints_for_ticket(pcmk_resource_t *rsc, const rsc_ticket_t *rsc_ticket) rsc->id, rsc_ticket->ticket->id, rsc_ticket->id, pcmk_role_text(rsc_ticket->role)); - if (!pcmk_is_set(rsc_ticket->ticket->flags, pcmk__ticket_granted) + if (!pcmk__is_set(rsc_ticket->ticket->flags, pcmk__ticket_granted) && (rsc->priv->active_nodes != NULL)) { switch (rsc_ticket->loss_policy) { @@ -134,7 +134,7 @@ constraints_for_ticket(pcmk_resource_t *rsc, const rsc_ticket_t *rsc_ticket) break; } - } else if (!pcmk_is_set(rsc_ticket->ticket->flags, pcmk__ticket_granted)) { + } else if (!pcmk__is_set(rsc_ticket->ticket->flags, pcmk__ticket_granted)) { if ((rsc_ticket->role != pcmk_role_promoted) || (rsc_ticket->loss_policy == loss_ticket_stop)) { @@ -142,7 +142,7 @@ constraints_for_ticket(pcmk_resource_t *rsc, const rsc_ticket_t *rsc_ticket) "__no_ticket__", rsc->priv->scheduler); } - } else if (pcmk_is_set(rsc_ticket->ticket->flags, pcmk__ticket_standby)) { + } else if (pcmk__is_set(rsc_ticket->ticket->flags, pcmk__ticket_standby)) { if ((rsc_ticket->role != pcmk_role_promoted) || (rsc_ticket->loss_policy == loss_ticket_stop)) { @@ -176,8 +176,8 @@ rsc_ticket_new(const char *id, pcmk_resource_t *rsc, pcmk__ticket_t *ticket, new_rsc_ticket->role = role; if (pcmk__str_eq(loss_policy, PCMK_VALUE_FENCE, pcmk__str_casei)) { - if (pcmk_is_set(rsc->priv->scheduler->flags, - pcmk__sched_fencing_enabled)) { + if (pcmk__is_set(rsc->priv->scheduler->flags, + pcmk__sched_fencing_enabled)) { new_rsc_ticket->loss_policy = loss_ticket_fence; } else { pcmk__config_err("Resetting '" PCMK_XA_LOSS_POLICY "' " @@ -231,8 +231,8 @@ rsc_ticket_new(const char *id, pcmk_resource_t *rsc, pcmk__ticket_t *ticket, rsc->priv->ticket_constraints = g_list_append(rsc->priv->ticket_constraints, new_rsc_ticket); - if (!pcmk_is_set(new_rsc_ticket->ticket->flags, pcmk__ticket_granted) - || pcmk_is_set(new_rsc_ticket->ticket->flags, pcmk__ticket_standby)) { + if (!pcmk__is_set(new_rsc_ticket->ticket->flags, pcmk__ticket_granted) + || pcmk__is_set(new_rsc_ticket->ticket->flags, pcmk__ticket_standby)) { constraints_for_ticket(rsc, new_rsc_ticket); } } @@ -512,9 +512,9 @@ pcmk__require_promotion_tickets(pcmk_resource_t *rsc) rsc_ticket_t *rsc_ticket = (rsc_ticket_t *) item->data; if ((rsc_ticket->role == pcmk_role_promoted) - && (!pcmk_is_set(rsc_ticket->ticket->flags, pcmk__ticket_granted) - || pcmk_is_set(rsc_ticket->ticket->flags, - pcmk__ticket_standby))) { + && (!pcmk__is_set(rsc_ticket->ticket->flags, pcmk__ticket_granted) + || pcmk__is_set(rsc_ticket->ticket->flags, + pcmk__ticket_standby))) { resource_location(rsc, NULL, -PCMK_SCORE_INFINITY, "__stateful_without_ticket__", rsc->priv->scheduler); diff --git a/lib/pacemaker/pcmk_sched_utilization.c b/lib/pacemaker/pcmk_sched_utilization.c index f6efd37c125..e2aa3df9656 100644 --- a/lib/pacemaker/pcmk_sched_utilization.c +++ b/lib/pacemaker/pcmk_sched_utilization.c @@ -468,7 +468,7 @@ pcmk__create_utilization_constraints(pcmk_resource_t *rsc, void pcmk__show_node_capacities(const char *desc, pcmk_scheduler_t *scheduler) { - if (!pcmk_is_set(scheduler->flags, pcmk__sched_show_utilization)) { + if (!pcmk__is_set(scheduler->flags, pcmk__sched_show_utilization)) { return; } for (const GList *iter = scheduler->nodes; diff --git a/lib/pacemaker/pcmk_scheduler.c b/lib/pacemaker/pcmk_scheduler.c index 1269e22fb9b..53ec594b0f6 100644 --- a/lib/pacemaker/pcmk_scheduler.c +++ b/lib/pacemaker/pcmk_scheduler.c @@ -163,9 +163,9 @@ apply_exclusive_discovery(gpointer data, gpointer user_data) /* @TODO This checks rsc and the top rsc, but should probably check all * ancestors (a cloned group could have it set on the group) */ - if (pcmk_is_set(rsc->flags, pcmk__rsc_exclusive_probes) - || pcmk_is_set(pe__const_top_resource(rsc, false)->flags, - pcmk__rsc_exclusive_probes)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_exclusive_probes) + || pcmk__is_set(pe__const_top_resource(rsc, false)->flags, + pcmk__rsc_exclusive_probes)) { pcmk_node_t *match = NULL; // If this is a collective resource, apply recursively to children @@ -203,7 +203,7 @@ apply_stickiness(gpointer data, gpointer user_data) /* A resource is sticky if it is managed, has stickiness configured, and is * active on a single node. */ - if (!pcmk_is_set(rsc->flags, pcmk__rsc_managed) + if (!pcmk__is_set(rsc->flags, pcmk__rsc_managed) || (rsc->priv->stickiness < 1) || !pcmk__list_of_1(rsc->priv->active_nodes)) { return; @@ -216,8 +216,8 @@ apply_stickiness(gpointer data, gpointer user_data) * allowed on the node, so we don't keep the resource somewhere it is no * longer explicitly enabled. */ - if (!pcmk_is_set(rsc->priv->scheduler->flags, - pcmk__sched_symmetric_cluster) + if (!pcmk__is_set(rsc->priv->scheduler->flags, + pcmk__sched_symmetric_cluster) && (g_hash_table_lookup(rsc->priv->allowed_nodes, node->priv->id) == NULL)) { pcmk__rsc_debug(rsc, @@ -242,7 +242,7 @@ apply_stickiness(gpointer data, gpointer user_data) static void apply_shutdown_locks(pcmk_scheduler_t *scheduler) { - if (!pcmk_is_set(scheduler->flags, pcmk__sched_shutdown_lock)) { + if (!pcmk__is_set(scheduler->flags, pcmk__sched_shutdown_lock)) { return; } for (GList *iter = scheduler->priv->resources; @@ -301,7 +301,7 @@ assign_resources(pcmk_scheduler_t *scheduler) } pcmk__show_node_capacities("Original", scheduler); - if (pcmk_is_set(scheduler->flags, pcmk__sched_have_remote_nodes)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_have_remote_nodes)) { /* Assign remote connection resources first (which will also assign any * colocation dependencies). If the connection is migrating, always * prefer the partial migration target. @@ -312,7 +312,7 @@ assign_resources(pcmk_scheduler_t *scheduler) pcmk_resource_t *rsc = (pcmk_resource_t *) iter->data; const pcmk_node_t *target = rsc->priv->partial_migration_target; - if (pcmk_is_set(rsc->flags, pcmk__rsc_is_remote_connection)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_is_remote_connection)) { pcmk__rsc_trace(rsc, "Assigning remote connection resource '%s'", rsc->id); rsc->priv->cmds->assign(rsc, target, true); @@ -324,7 +324,7 @@ assign_resources(pcmk_scheduler_t *scheduler) for (iter = scheduler->priv->resources; iter != NULL; iter = iter->next) { pcmk_resource_t *rsc = (pcmk_resource_t *) iter->data; - if (!pcmk_is_set(rsc->flags, pcmk__rsc_is_remote_connection)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_is_remote_connection)) { pcmk__rsc_trace(rsc, "Assigning %s resource '%s'", rsc->priv->xml->name, rsc->id); rsc->priv->cmds->assign(rsc, NULL, true); @@ -346,7 +346,7 @@ clear_failcounts_if_orphaned(gpointer data, gpointer user_data) { pcmk_resource_t *rsc = data; - if (!pcmk_is_set(rsc->flags, pcmk__rsc_removed)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_removed)) { return; } crm_trace("Clear fail counts for orphaned resource %s", rsc->id); @@ -392,12 +392,12 @@ schedule_resource_actions(pcmk_scheduler_t *scheduler) pcmk__foreach_param_check(scheduler, check_params); pcmk__free_param_checks(scheduler); - if (pcmk_is_set(scheduler->flags, pcmk__sched_probe_resources)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_probe_resources)) { crm_trace("Scheduling probes"); pcmk__schedule_probes(scheduler); } - if (pcmk_is_set(scheduler->flags, pcmk__sched_stop_removed_resources)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_stop_removed_resources)) { g_list_foreach(scheduler->priv->resources, clear_failcounts_if_orphaned, NULL); } @@ -423,7 +423,7 @@ schedule_resource_actions(pcmk_scheduler_t *scheduler) static bool is_managed(const pcmk_resource_t *rsc) { - if (pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { return true; } for (GList *iter = rsc->priv->children; @@ -506,7 +506,7 @@ static GList * add_nondc_fencing(GList *list, pcmk_action_t *action, const pcmk_scheduler_t *scheduler) { - if (!pcmk_is_set(scheduler->flags, pcmk__sched_concurrent_fencing) + if (!pcmk__is_set(scheduler->flags, pcmk__sched_concurrent_fencing) && (list != NULL)) { /* Concurrent fencing is disabled, so order each non-DC * fencing in a chain. If there is any DC fencing or @@ -567,7 +567,7 @@ schedule_fencing_and_shutdowns(pcmk_scheduler_t *scheduler) * so handle them separately. */ if (pcmk__is_guest_or_bundle_node(node)) { - if (pcmk_is_set(node->priv->flags, pcmk__node_remote_reset) + if (pcmk__is_set(node->priv->flags, pcmk__node_remote_reset) && have_managed && pe_can_fence(scheduler, node)) { pcmk__fence_guest(node); } @@ -604,12 +604,12 @@ schedule_fencing_and_shutdowns(pcmk_scheduler_t *scheduler) } if (integrity_lost) { - if (!pcmk_is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { + if (!pcmk__is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { pcmk__config_warn("Resource functionality and data integrity " "cannot be guaranteed (configure, enable, " "and test fencing to correct this)"); - } else if (!pcmk_is_set(scheduler->flags, pcmk__sched_quorate)) { + } else if (!pcmk__is_set(scheduler->flags, pcmk__sched_quorate)) { crm_notice("Unclean nodes will not be fenced until quorum is " "attained or " PCMK_OPT_NO_QUORUM_POLICY " is set to " PCMK_VALUE_IGNORE); @@ -631,7 +631,7 @@ schedule_fencing_and_shutdowns(pcmk_scheduler_t *scheduler) // Order any non-DC fencing before any DC fencing or shutdown - if (pcmk_is_set(scheduler->flags, pcmk__sched_concurrent_fencing)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_concurrent_fencing)) { /* With concurrent fencing, order each non-DC fencing action * separately before any DC fencing or shutdown. */ @@ -668,7 +668,7 @@ log_resource_details(pcmk_scheduler_t *scheduler) pcmk_resource_t *rsc = (pcmk_resource_t *) item->data; // Log all resources except inactive orphans - if (!pcmk_is_set(rsc->flags, pcmk__rsc_removed) + if (!pcmk__is_set(rsc->flags, pcmk__rsc_removed) || (rsc->priv->orig_role != pcmk_role_stopped)) { out->message(out, (const char *) rsc->priv->xml->name, 0UL, rsc, all, all); @@ -743,18 +743,18 @@ pcmk__schedule_actions(pcmk_scheduler_t *scheduler) pcmk__set_assignment_methods(scheduler); pcmk__apply_node_health(scheduler); pcmk__unpack_constraints(scheduler); - if (pcmk_is_set(scheduler->flags, pcmk__sched_validate_only)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_validate_only)) { return; } - if (!pcmk_is_set(scheduler->flags, pcmk__sched_location_only) + if (!pcmk__is_set(scheduler->flags, pcmk__sched_location_only) && pcmk__is_daemon) { log_resource_details(scheduler); } apply_node_criteria(scheduler); - if (pcmk_is_set(scheduler->flags, pcmk__sched_location_only)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_location_only)) { return; } diff --git a/lib/pacemaker/pcmk_simulate.c b/lib/pacemaker/pcmk_simulate.c index 3d4e623f3fb..2016781a735 100644 --- a/lib/pacemaker/pcmk_simulate.c +++ b/lib/pacemaker/pcmk_simulate.c @@ -52,7 +52,7 @@ create_action_name(const pcmk_action_t *action, bool verbose) if (action->node != NULL) { action_host = action->node->priv->name; - } else if (!pcmk_is_set(action->flags, pcmk__action_pseudo)) { + } else if (!pcmk__is_set(action->flags, pcmk__action_pseudo)) { action_host = ""; } @@ -199,13 +199,13 @@ reset(pcmk_scheduler_t *scheduler, xmlNodePtr input, pcmk__output_t *out, scheduler->input = input; scheduler->priv->out = out; set_effective_date(scheduler, true, use_date); - if (pcmk_is_set(flags, pcmk_sim_sanitized)) { + if (pcmk__is_set(flags, pcmk_sim_sanitized)) { pcmk__set_scheduler_flags(scheduler, pcmk__sched_sanitized); } - if (pcmk_is_set(flags, pcmk_sim_show_scores)) { + if (pcmk__is_set(flags, pcmk_sim_show_scores)) { pcmk__set_scheduler_flags(scheduler, pcmk__sched_output_scores); } - if (pcmk_is_set(flags, pcmk_sim_show_utilization)) { + if (pcmk__is_set(flags, pcmk_sim_show_utilization)) { pcmk__set_scheduler_flags(scheduler, pcmk__sched_show_utilization); } cluster_status(scheduler); @@ -243,23 +243,23 @@ write_sim_dotfile(pcmk_scheduler_t *scheduler, const char *dot_file, const char *color = "black"; char *action_name = create_action_name(action, verbose); - if (pcmk_is_set(action->flags, pcmk__action_pseudo)) { + if (pcmk__is_set(action->flags, pcmk__action_pseudo)) { font = "orange"; } - if (pcmk_is_set(action->flags, pcmk__action_added_to_graph)) { + if (pcmk__is_set(action->flags, pcmk__action_added_to_graph)) { style = PCMK__VALUE_BOLD; color = "green"; } else if ((action->rsc != NULL) - && !pcmk_is_set(action->rsc->flags, pcmk__rsc_managed)) { + && !pcmk__is_set(action->rsc->flags, pcmk__rsc_managed)) { color = "red"; font = "purple"; if (!all_actions) { goto do_not_write; } - } else if (pcmk_is_set(action->flags, pcmk__action_optional)) { + } else if (pcmk__is_set(action->flags, pcmk__action_optional)) { color = "blue"; if (!all_actions) { goto do_not_write; @@ -267,7 +267,7 @@ write_sim_dotfile(pcmk_scheduler_t *scheduler, const char *dot_file, } else { color = "red"; - CRM_LOG_ASSERT(!pcmk_is_set(action->flags, pcmk__action_runnable)); + CRM_LOG_ASSERT(!pcmk__is_set(action->flags, pcmk__action_runnable)); } pcmk__set_action_flags(action, pcmk__action_added_to_graph); @@ -295,9 +295,10 @@ write_sim_dotfile(pcmk_scheduler_t *scheduler, const char *dot_file, style = PCMK__VALUE_BOLD; } else if (before->flags == pcmk__ar_none) { continue; - } else if (pcmk_is_set(before->action->flags, - pcmk__action_added_to_graph) - && pcmk_is_set(action->flags, pcmk__action_added_to_graph) + } else if (pcmk__is_set(before->action->flags, + pcmk__action_added_to_graph) + && pcmk__is_set(action->flags, + pcmk__action_added_to_graph) && before->flags != pcmk__ar_if_on_same_node_or_target) { optional = false; } @@ -442,10 +443,10 @@ pcmk__profile_dir(pcmk__output_t *out, uint32_t flags, const char *dir, } scheduler->priv->out = out; - if (pcmk_is_set(flags, pcmk_sim_show_scores)) { + if (pcmk__is_set(flags, pcmk_sim_show_scores)) { scheduler_flags |= pcmk__sched_output_scores; } - if (pcmk_is_set(flags, pcmk_sim_show_utilization)) { + if (pcmk__is_set(flags, pcmk_sim_show_utilization)) { scheduler_flags |= pcmk__sched_show_utilization; } @@ -885,9 +886,9 @@ pcmk__simulate(pcmk_scheduler_t *scheduler, pcmk__output_t *out, reset(scheduler, input, out, use_date, flags); if (!out->is_quiet(out)) { - const bool show_pending = pcmk_is_set(flags, pcmk_sim_show_pending); + const bool show_pending = pcmk__is_set(flags, pcmk_sim_show_pending); - if (pcmk_is_set(scheduler->flags, pcmk__sched_in_maintenance)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_in_maintenance)) { printed = out->message(out, "maint-mode", scheduler->flags); } @@ -954,12 +955,13 @@ pcmk__simulate(pcmk_scheduler_t *scheduler, pcmk__output_t *out, "Assignment Scores and Utilization Information"); printed = pcmk_rc_ok; - } else if (pcmk_is_set(scheduler->flags, pcmk__sched_output_scores)) { + } else if (pcmk__is_set(scheduler->flags, pcmk__sched_output_scores)) { PCMK__OUTPUT_SPACER_IF(out, printed == pcmk_rc_ok); out->begin_list(out, NULL, NULL, "Assignment Scores"); printed = pcmk_rc_ok; - } else if (pcmk_is_set(scheduler->flags, pcmk__sched_show_utilization)) { + } else if (pcmk__is_set(scheduler->flags, + pcmk__sched_show_utilization)) { PCMK__OUTPUT_SPACER_IF(out, printed == pcmk_rc_ok); out->begin_list(out, NULL, NULL, "Utilization Information"); printed = pcmk_rc_ok; @@ -997,8 +999,8 @@ pcmk__simulate(pcmk_scheduler_t *scheduler, pcmk__output_t *out, if (dot_file != NULL) { rc = write_sim_dotfile(scheduler, dot_file, - pcmk_is_set(flags, pcmk_sim_all_actions), - pcmk_is_set(flags, pcmk_sim_verbose)); + pcmk__is_set(flags, pcmk_sim_all_actions), + pcmk__is_set(flags, pcmk_sim_verbose)); if (rc != pcmk_rc_ok) { rc = pcmk_rc_dot_error; goto simulate_done; @@ -1012,7 +1014,7 @@ pcmk__simulate(pcmk_scheduler_t *scheduler, pcmk__output_t *out, rc = pcmk_rc_ok; - if (!pcmk_is_set(flags, pcmk_sim_simulate)) { + if (!pcmk__is_set(flags, pcmk_sim_simulate)) { goto simulate_done; } @@ -1028,10 +1030,10 @@ pcmk__simulate(pcmk_scheduler_t *scheduler, pcmk__output_t *out, set_effective_date(scheduler, true, use_date); - if (pcmk_is_set(flags, pcmk_sim_show_scores)) { + if (pcmk__is_set(flags, pcmk_sim_show_scores)) { pcmk__set_scheduler_flags(scheduler, pcmk__sched_output_scores); } - if (pcmk_is_set(flags, pcmk_sim_show_utilization)) { + if (pcmk__is_set(flags, pcmk_sim_show_utilization)) { pcmk__set_scheduler_flags(scheduler, pcmk__sched_show_utilization); } diff --git a/lib/pacemaker/pcmk_status.c b/lib/pacemaker/pcmk_status.c index 6fc1af7a112..117a1ae4e0c 100644 --- a/lib/pacemaker/pcmk_status.c +++ b/lib/pacemaker/pcmk_status.c @@ -108,8 +108,8 @@ pcmk__output_cluster_status(pcmk_scheduler_t *scheduler, stonith_t *stonith, /* Unpack constraints if any section will need them * (tickets may be referenced in constraints but not granted yet, * and bans need negative location constraints) */ - if (pcmk_is_set(show, pcmk_section_bans) - || pcmk_is_set(show, pcmk_section_tickets)) { + if (pcmk__is_set(show, pcmk_section_bans) + || pcmk__is_set(show, pcmk_section_tickets)) { pcmk__unpack_constraints(scheduler); } @@ -261,7 +261,8 @@ pcmk__status(pcmk__output_t *out, cib_t *cib, pcmk__mem_assert(scheduler); scheduler->priv->out = out; - if ((cib->variant == cib_native) && pcmk_is_set(show, pcmk_section_times)) { + if ((cib->variant == cib_native) + && pcmk__is_set(show, pcmk_section_times)) { // Currently used only in the times section pcmk__query_node_name(out, 0, &(scheduler->priv->local_node_name), 0); } diff --git a/lib/pacemaker/pcmk_ticket.c b/lib/pacemaker/pcmk_ticket.c index 87612965c44..d4b26d6ab0e 100644 --- a/lib/pacemaker/pcmk_ticket.c +++ b/lib/pacemaker/pcmk_ticket.c @@ -63,7 +63,7 @@ add_attribute_xml(pcmk_scheduler_t *scheduler, const char *ticket_id, if (pcmk__str_eq(key, PCMK__XA_GRANTED, pcmk__str_none) && ((ticket == NULL) - || !pcmk_is_set(ticket->flags, pcmk__ticket_granted)) + || !pcmk__is_set(ticket->flags, pcmk__ticket_granted)) && pcmk__is_true(value)) { char *now = pcmk__ttoa(time(NULL)); @@ -204,7 +204,7 @@ pcmk__ticket_delete(pcmk__output_t *out, cib_t *cib, pcmk_scheduler_t *scheduler return ENXIO; } - if (pcmk_is_set(ticket->flags, pcmk__ticket_granted)) { + if (pcmk__is_set(ticket->flags, pcmk__ticket_granted)) { return EACCES; } } diff --git a/lib/pengine/bundle.c b/lib/pengine/bundle.c index 712c71bcac0..d8f1b8e6995 100644 --- a/lib/pengine/bundle.c +++ b/lib/pengine/bundle.c @@ -490,7 +490,7 @@ create_container_resource(pcmk_resource_t *parent, pe__bundle_mount_t *mount = (pe__bundle_mount_t *) iter->data; char *source = NULL; - if (pcmk_is_set(mount->flags, pe__bundle_mount_subdir)) { + if (pcmk__is_set(mount->flags, pe__bundle_mount_subdir)) { source = pcmk__assert_asprintf("%s/%s-%d", mount->source, data->prefix, replica->offset); pcmk__add_separated_word(&dbuffer, 1024, source, ","); @@ -1229,7 +1229,7 @@ pe__unpack_bundle(pcmk_resource_t *rsc) replica->offset = lpc++; // Ensure the child's notify gets set based on the underlying primitive's value - if (pcmk_is_set(replica->child->flags, pcmk__rsc_notify)) { + if (pcmk__is_set(replica->child->flags, pcmk__rsc_notify)) { pcmk__set_rsc_flags(bundle_data->child, pcmk__rsc_notify); } @@ -1555,10 +1555,10 @@ pe__bundle_replica_output_html(pcmk__output_t *out, static const char * get_unmanaged_str(const pcmk_resource_t *rsc) { - if (pcmk_is_set(rsc->flags, pcmk__rsc_maintenance)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_maintenance)) { return " (maintenance)"; } - if (!pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { return " (unmanaged)"; } return ""; @@ -1617,18 +1617,24 @@ pe__bundle_html(pcmk__output_t *out, va_list args) && !remote->priv->fns->is_filtered(remote, only_rsc, print_everything); - if (pcmk_is_set(show_opts, pcmk_show_implicit_rscs) || - (print_everything == FALSE && (print_ip || print_child || print_ctnr || print_remote))) { + if (pcmk__is_set(show_opts, pcmk_show_implicit_rscs) + || (!print_everything + && (print_ip || print_child || print_ctnr || print_remote))) { /* The text output messages used below require pe_print_implicit to * be set to do anything. */ - uint32_t new_show_opts = show_opts | pcmk_show_implicit_rscs; - - PCMK__OUTPUT_LIST_HEADER(out, FALSE, rc, "Container bundle%s: %s [%s]%s%s%s%s%s", - (bundle_data->nreplicas > 1)? " set" : "", - rsc->id, bundle_data->image, - pcmk_is_set(rsc->flags, pcmk__rsc_unique)? " (unique)" : "", - desc ? " (" : "", desc ? desc : "", desc ? ")" : "", + const bool multiple = (bundle_data->nreplicas > 1); + const bool unique = pcmk__is_set(rsc->flags, pcmk__rsc_unique); + const uint32_t new_show_opts = show_opts | pcmk_show_implicit_rscs; + + PCMK__OUTPUT_LIST_HEADER(out, FALSE, rc, + "Container bundle%s: %s [%s]%s%s%s%s%s", + (multiple? " set" : ""), rsc->id, + bundle_data->image, + (unique? " (unique)" : ""), + ((desc != NULL)? " (" : ""), + pcmk__s(desc, ""), + ((desc != NULL)? ")" : ""), get_unmanaged_str(rsc)); if (pcmk__list_of_multiple(bundle_data->replicas)) { @@ -1661,11 +1667,17 @@ pe__bundle_html(pcmk__output_t *out, va_list args) } else if (print_everything == FALSE && !(print_ip || print_child || print_ctnr || print_remote)) { continue; } else { - PCMK__OUTPUT_LIST_HEADER(out, FALSE, rc, "Container bundle%s: %s [%s]%s%s%s%s%s", - (bundle_data->nreplicas > 1)? " set" : "", - rsc->id, bundle_data->image, - pcmk_is_set(rsc->flags, pcmk__rsc_unique)? " (unique)" : "", - desc ? " (" : "", desc ? desc : "", desc ? ")" : "", + const bool multiple = (bundle_data->nreplicas > 1); + const bool unique = pcmk__is_set(rsc->flags, pcmk__rsc_unique); + + PCMK__OUTPUT_LIST_HEADER(out, FALSE, rc, + "Container bundle%s: %s [%s]%s%s%s%s%s", + (multiple? " set" : ""), rsc->id, + bundle_data->image, + (unique? " (unique)" : ""), + ((desc != NULL)? " (" : ""), + pcmk__s(desc, ""), + ((desc != NULL)? ")" : ""), get_unmanaged_str(rsc)); pe__bundle_replica_output_html(out, replica, @@ -1760,18 +1772,24 @@ pe__bundle_text(pcmk__output_t *out, va_list args) && !remote->priv->fns->is_filtered(remote, only_rsc, print_everything); - if (pcmk_is_set(show_opts, pcmk_show_implicit_rscs) || - (print_everything == FALSE && (print_ip || print_child || print_ctnr || print_remote))) { + if (pcmk__is_set(show_opts, pcmk_show_implicit_rscs) + || (!print_everything + && (print_ip || print_child || print_ctnr || print_remote))) { /* The text output messages used below require pe_print_implicit to * be set to do anything. */ - uint32_t new_show_opts = show_opts | pcmk_show_implicit_rscs; - - PCMK__OUTPUT_LIST_HEADER(out, FALSE, rc, "Container bundle%s: %s [%s]%s%s%s%s%s", - (bundle_data->nreplicas > 1)? " set" : "", - rsc->id, bundle_data->image, - pcmk_is_set(rsc->flags, pcmk__rsc_unique)? " (unique)" : "", - desc ? " (" : "", desc ? desc : "", desc ? ")" : "", + const bool multiple = (bundle_data->nreplicas > 1); + const bool unique = pcmk__is_set(rsc->flags, pcmk__rsc_unique); + const uint32_t new_show_opts = show_opts | pcmk_show_implicit_rscs; + + PCMK__OUTPUT_LIST_HEADER(out, FALSE, rc, + "Container bundle%s: %s [%s]%s%s%s%s%s", + (multiple? " set" : ""), rsc->id, + bundle_data->image, + (unique? " (unique)" : ""), + ((desc != NULL)? " (" : ""), + pcmk__s(desc, ""), + ((desc != NULL)? ")" : ""), get_unmanaged_str(rsc)); if (pcmk__list_of_multiple(bundle_data->replicas)) { @@ -1804,11 +1822,17 @@ pe__bundle_text(pcmk__output_t *out, va_list args) } else if (print_everything == FALSE && !(print_ip || print_child || print_ctnr || print_remote)) { continue; } else { - PCMK__OUTPUT_LIST_HEADER(out, FALSE, rc, "Container bundle%s: %s [%s]%s%s%s%s%s", - (bundle_data->nreplicas > 1)? " set" : "", - rsc->id, bundle_data->image, - pcmk_is_set(rsc->flags, pcmk__rsc_unique)? " (unique)" : "", - desc ? " (" : "", desc ? desc : "", desc ? ")" : "", + const bool multiple = (bundle_data->nreplicas > 1); + const bool unique = pcmk__is_set(rsc->flags, pcmk__rsc_unique); + + PCMK__OUTPUT_LIST_HEADER(out, FALSE, rc, + "Container bundle%s: %s [%s]%s%s%s%s%s", + (multiple? " set" : ""), rsc->id, + bundle_data->image, + (unique? " (unique)" : ""), + ((desc != NULL)? " (" : ""), + pcmk__s(desc, ""), + ((desc != NULL)? ")" : ""), get_unmanaged_str(rsc)); pe__bundle_replica_output_text(out, replica, diff --git a/lib/pengine/clone.c b/lib/pengine/clone.c index fc126379298..bc5148a19f8 100644 --- a/lib/pengine/clone.c +++ b/lib/pengine/clone.c @@ -166,11 +166,11 @@ clone_header(pcmk__output_t *out, int *rc, const pcmk_resource_t *rsc, { GString *attrs = NULL; - if (pcmk_is_set(rsc->flags, pcmk__rsc_promotable)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_promotable)) { pcmk__add_separated_word(&attrs, 64, "promotable", ", "); } - if (pcmk_is_set(rsc->flags, pcmk__rsc_unique)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_unique)) { pcmk__add_separated_word(&attrs, 64, "unique", ", "); } @@ -178,10 +178,10 @@ clone_header(pcmk__output_t *out, int *rc, const pcmk_resource_t *rsc, pcmk__add_separated_word(&attrs, 64, "disabled", ", "); } - if (pcmk_is_set(rsc->flags, pcmk__rsc_maintenance)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_maintenance)) { pcmk__add_separated_word(&attrs, 64, "maintenance", ", "); - } else if (!pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + } else if (!pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { pcmk__add_separated_word(&attrs, 64, "unmanaged", ", "); } @@ -333,7 +333,7 @@ clone_unpack(pcmk_resource_t *rsc) clone_data = pcmk__assert_alloc(1, sizeof(clone_variant_data_t)); rsc->priv->variant_opaque = clone_data; - if (pcmk_is_set(rsc->flags, pcmk__rsc_promotable)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_promotable)) { // Use 1 as default but 0 for minimum and invalid // @COMPAT PCMK__META_PROMOTED_MAX_LEGACY deprecated since 2.0.0 clone_data->promoted_max = @@ -368,7 +368,7 @@ clone_unpack(pcmk_resource_t *rsc) "pcmk__clone_ordered"); } - if (!pcmk_is_set(rsc->flags, pcmk__rsc_unique) + if (!pcmk__is_set(rsc->flags, pcmk__rsc_unique) && (clone_data->clone_node_max > 1)) { pcmk__config_err("Ignoring " PCMK_META_CLONE_NODE_MAX " of %d for %s " @@ -501,7 +501,7 @@ is_set_recursive(const pcmk_resource_t *rsc, long long flag, bool any) { bool all = !any; - if (pcmk_is_set(rsc->flags, flag)) { + if (pcmk__is_set(rsc->flags, flag)) { if(any) { return TRUE; } @@ -660,20 +660,20 @@ pe__clone_default(pcmk__output_t *out, va_list args) continue; } - if (pcmk_is_set(show_opts, pcmk_show_clone_detail)) { + if (pcmk__is_set(show_opts, pcmk_show_clone_detail)) { print_full = TRUE; } - if (pcmk_is_set(rsc->flags, pcmk__rsc_unique)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_unique)) { // Print individual instance when unique (except stopped orphans) if (partially_active - || !pcmk_is_set(rsc->flags, pcmk__rsc_removed)) { + || !pcmk__is_set(rsc->flags, pcmk__rsc_removed)) { print_full = TRUE; } // Everything else in this block is for anonymous clones - } else if (pcmk_is_set(show_opts, pcmk_show_pending) + } else if (pcmk__is_set(show_opts, pcmk_show_pending) && (child_rsc->priv->pending_action != NULL) && (strcmp(child_rsc->priv->pending_action, "probe") != 0)) { @@ -682,9 +682,9 @@ pe__clone_default(pcmk__output_t *out, va_list args) } else if (partially_active == FALSE) { // List stopped instances when requested (except orphans) - if (!pcmk_is_set(child_rsc->flags, pcmk__rsc_removed) - && !pcmk_is_set(show_opts, pcmk_show_clone_detail) - && pcmk_is_set(show_opts, pcmk_show_inactive_rscs)) { + if (!pcmk__is_set(child_rsc->flags, pcmk__rsc_removed) + && !pcmk__is_set(show_opts, pcmk_show_clone_detail) + && pcmk__is_set(show_opts, pcmk_show_inactive_rscs)) { if (stopped == NULL) { stopped = pcmk__strkey_table(free, free); } @@ -745,7 +745,7 @@ pe__clone_default(pcmk__output_t *out, va_list args) } } - if (pcmk_is_set(show_opts, pcmk_show_clone_detail)) { + if (pcmk__is_set(show_opts, pcmk_show_clone_detail)) { PCMK__OUTPUT_LIST_FOOTER(out, rc); return pcmk_rc_ok; } @@ -791,7 +791,7 @@ pe__clone_default(pcmk__output_t *out, va_list args) if ((list_text != NULL) && (list_text->len > 0)) { clone_header(out, &rc, rsc, clone_data, desc); - if (pcmk_is_set(rsc->flags, pcmk__rsc_promotable)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_promotable)) { enum rsc_role_e role = configured_role(rsc); if (role == pcmk_role_unpromoted) { @@ -814,8 +814,8 @@ pe__clone_default(pcmk__output_t *out, va_list args) g_string_free(list_text, TRUE); } - if (pcmk_is_set(show_opts, pcmk_show_inactive_rscs)) { - if (!pcmk_is_set(rsc->flags, pcmk__rsc_unique) + if (pcmk__is_set(show_opts, pcmk_show_inactive_rscs)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_unique) && (clone_data->clone_max > active_instances)) { GList *nIter; @@ -1048,7 +1048,7 @@ pe__clone_is_ordered(const pcmk_resource_t *clone) clone_variant_data_t *clone_data = NULL; get_clone_variant_data(clone_data, clone); - return pcmk_is_set(clone_data->flags, pcmk__clone_ordered); + return pcmk__is_set(clone_data->flags, pcmk__clone_ordered); } /*! @@ -1067,7 +1067,7 @@ pe__set_clone_flag(pcmk_resource_t *clone, enum pcmk__clone_flags flag) clone_variant_data_t *clone_data = NULL; get_clone_variant_data(clone_data, clone); - if (pcmk_is_set(clone_data->flags, flag)) { + if (pcmk__is_set(clone_data->flags, flag)) { return pcmk_rc_already; } clone_data->flags = pcmk__set_flags_as(__func__, __LINE__, LOG_TRACE, diff --git a/lib/pengine/complex.c b/lib/pengine/complex.c index 73941723ff7..beedfa643a4 100644 --- a/lib/pengine/complex.c +++ b/lib/pengine/complex.c @@ -517,45 +517,47 @@ unpack_requires(pcmk_resource_t *rsc, const char *value, bool is_default) } else if (pcmk__str_eq(value, PCMK_VALUE_FENCING, pcmk__str_casei)) { pcmk__set_rsc_flags(rsc, pcmk__rsc_needs_fencing); - if (!pcmk_is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { + if (!pcmk__is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { pcmk__config_warn("%s requires fencing but fencing is disabled", rsc->id); } } else if (pcmk__str_eq(value, PCMK_VALUE_UNFENCING, pcmk__str_casei)) { - if (pcmk_is_set(rsc->flags, pcmk__rsc_fence_device)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_fence_device)) { pcmk__config_warn("Resetting \"" PCMK_META_REQUIRES "\" for %s " "to \"" PCMK_VALUE_QUORUM "\" because fencing " "devices cannot require unfencing", rsc->id); unpack_requires(rsc, PCMK_VALUE_QUORUM, true); return; + } - } else if (!pcmk_is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { + if (!pcmk__is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { pcmk__config_warn("Resetting \"" PCMK_META_REQUIRES "\" for %s " "to \"" PCMK_VALUE_QUORUM "\" because fencing is " "disabled", rsc->id); unpack_requires(rsc, PCMK_VALUE_QUORUM, true); return; - - } else { - pcmk__set_rsc_flags(rsc, pcmk__rsc_needs_fencing - |pcmk__rsc_needs_unfencing); } + pcmk__set_rsc_flags(rsc, + pcmk__rsc_needs_fencing|pcmk__rsc_needs_unfencing); + } else { const char *orig_value = value; - if (pcmk_is_set(rsc->flags, pcmk__rsc_fence_device)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_fence_device)) { value = PCMK_VALUE_QUORUM; } else if (pcmk__is_primitive(rsc) && xml_contains_remote_node(rsc->priv->xml)) { value = PCMK_VALUE_QUORUM; - } else if (pcmk_is_set(scheduler->flags, pcmk__sched_enable_unfencing)) { + } else if (pcmk__is_set(scheduler->flags, + pcmk__sched_enable_unfencing)) { value = PCMK_VALUE_UNFENCING; - } else if (pcmk_is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { + } else if (pcmk__is_set(scheduler->flags, + pcmk__sched_fencing_enabled)) { value = PCMK_VALUE_FENCING; } else if (scheduler->no_quorum_policy == pcmk_no_quorum_ignore) { @@ -785,7 +787,7 @@ pe__unpack_resource(xmlNode *xml_obj, pcmk_resource_t **rsc, (*rsc)->flags = 0; pcmk__set_rsc_flags(*rsc, pcmk__rsc_unassigned); - if (!pcmk_is_set(scheduler->flags, pcmk__sched_in_maintenance)) { + if (!pcmk__is_set(scheduler->flags, pcmk__sched_in_maintenance)) { pcmk__set_rsc_flags(*rsc, pcmk__rsc_managed); } @@ -847,7 +849,7 @@ pe__unpack_resource(xmlNode *xml_obj, pcmk_resource_t **rsc, pcmk__clear_rsc_flags(*rsc, pcmk__rsc_managed); pcmk__set_rsc_flags(*rsc, pcmk__rsc_maintenance); } - if (pcmk_is_set(scheduler->flags, pcmk__sched_in_maintenance)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_in_maintenance)) { pcmk__clear_rsc_flags(*rsc, pcmk__rsc_managed); pcmk__set_rsc_flags(*rsc, pcmk__rsc_maintenance); } @@ -950,7 +952,7 @@ pe__unpack_resource(xmlNode *xml_obj, pcmk_resource_t **rsc, return pcmk_rc_unpack_error; } - if (pcmk_is_set(scheduler->flags, pcmk__sched_symmetric_cluster)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_symmetric_cluster)) { // This tag must stay exactly the same because it is tested elsewhere resource_location(*rsc, NULL, 0, "symmetric_default", scheduler); } else if (guest_node) { @@ -961,8 +963,12 @@ pe__unpack_resource(xmlNode *xml_obj, pcmk_resource_t **rsc, scheduler); } - pcmk__rsc_trace(*rsc, "%s action notification: %s", (*rsc)->id, - pcmk_is_set((*rsc)->flags, pcmk__rsc_notify)? "required" : "not required"); + if (pcmk__is_set((*rsc)->flags, pcmk__rsc_notify)) { + pcmk__rsc_trace(*rsc, "%s action notification: required", (*rsc)->id); + } else { + pcmk__rsc_trace(*rsc, "%s action notification: not required", + (*rsc)->id); + } pe__unpack_dataset_nvpairs(rsc_private->xml, PCMK_XE_UTILIZATION, &rule_input, rsc_private->utilization, NULL, @@ -1052,7 +1058,7 @@ common_free(pcmk_resource_t * rsc) } if ((rsc->priv->parent == NULL) - && pcmk_is_set(rsc->flags, pcmk__rsc_removed)) { + && pcmk__is_set(rsc->flags, pcmk__rsc_removed)) { pcmk__xml_free(rsc->priv->xml); rsc->priv->xml = NULL; @@ -1141,7 +1147,7 @@ pe__count_active_node(const pcmk_resource_t *rsc, pcmk_node_t *node, } else { keep_looking = true; } - } else if (!pcmk_is_set(rsc->flags, pcmk__rsc_needs_fencing)) { + } else if (!pcmk__is_set(rsc->flags, pcmk__rsc_needs_fencing)) { if (is_happy && ((*active == NULL) || !(*active)->details->online || (*active)->details->unclean)) { *active = node; // This is the first clean node @@ -1205,7 +1211,7 @@ pe__find_active_requires(const pcmk_resource_t *rsc, unsigned int *count) return NULL; } - if (pcmk_is_set(rsc->flags, pcmk__rsc_needs_fencing)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_needs_fencing)) { return rsc->priv->fns->active_node(rsc, count, NULL); } else { return rsc->priv->fns->active_node(rsc, NULL, count); @@ -1223,13 +1229,13 @@ pe__count_common(pcmk_resource_t *rsc) child->priv->fns->count(item->data); } - } else if (!pcmk_is_set(rsc->flags, pcmk__rsc_removed) + } else if (!pcmk__is_set(rsc->flags, pcmk__rsc_removed) || (rsc->priv->orig_role > pcmk_role_stopped)) { rsc->priv->scheduler->priv->ninstances++; if (pe__resource_is_disabled(rsc)) { rsc->priv->scheduler->priv->disabled_resources++; } - if (pcmk_is_set(rsc->flags, pcmk__rsc_blocked)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_blocked)) { rsc->priv->scheduler->priv->blocked_resources++; } } diff --git a/lib/pengine/failcounts.c b/lib/pengine/failcounts.c index 8d9d5ca19cc..ddd8acf4fef 100644 --- a/lib/pengine/failcounts.c +++ b/lib/pengine/failcounts.c @@ -188,7 +188,10 @@ rsc_fail_name(const pcmk_resource_t *rsc) { const char *name = pcmk__s(rsc->priv->history_id, rsc->id); - return pcmk_is_set(rsc->flags, pcmk__rsc_unique)? strdup(name) : clone_strip(name); + if (pcmk__is_set(rsc->flags, pcmk__rsc_unique)) { + return strdup(name); + } + return clone_strip(name); } /*! @@ -248,12 +251,12 @@ generate_fail_regexes(const pcmk_resource_t *rsc, regex_t *failcount_re, char *rsc_name = rsc_fail_name(rsc); if (generate_fail_regex(PCMK__FAIL_COUNT_PREFIX, rsc_name, - pcmk_is_set(rsc->flags, pcmk__rsc_unique), + pcmk__is_set(rsc->flags, pcmk__rsc_unique), failcount_re) != pcmk_rc_ok) { rc = EINVAL; } else if (generate_fail_regex(PCMK__LAST_FAILURE_PREFIX, rsc_name, - pcmk_is_set(rsc->flags, pcmk__rsc_unique), + pcmk__is_set(rsc->flags, pcmk__rsc_unique), lastfailure_re) != pcmk_rc_ok) { rc = EINVAL; regfree(failcount_re); @@ -396,7 +399,7 @@ pe_get_failcount(const pcmk_node_t *node, pcmk_resource_t *rsc, } // If all failures have expired, ignore fail count - if (pcmk_is_set(flags, pcmk__fc_effective) && (fc_data.failcount > 0) + if (pcmk__is_set(flags, pcmk__fc_effective) && (fc_data.failcount > 0) && (fc_data.last_failure > 0) && (rsc->priv->failure_expiration_ms > 0)) { @@ -421,7 +424,7 @@ pe_get_failcount(const pcmk_node_t *node, pcmk_resource_t *rsc, * container's fail count on that node could lead to attempting to stop the * container on the wrong node. */ - if (pcmk_is_set(flags, pcmk__fc_launched) + if (pcmk__is_set(flags, pcmk__fc_launched) && (rsc->priv->launched != NULL) && !pcmk__is_bundled(rsc)) { g_list_foreach(rsc->priv->launched, update_launched_failcount, diff --git a/lib/pengine/group.c b/lib/pengine/group.c index 58d9a8cb09f..76455bfe358 100644 --- a/lib/pengine/group.c +++ b/lib/pengine/group.c @@ -130,10 +130,10 @@ group_header(pcmk__output_t *out, int *rc, const pcmk_resource_t *rsc, pcmk__add_separated_word(&attrs, 64, "disabled", ", "); } - if (pcmk_is_set(rsc->flags, pcmk__rsc_maintenance)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_maintenance)) { pcmk__add_separated_word(&attrs, 64, "maintenance", ", "); - } else if (!pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + } else if (!pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { pcmk__add_separated_word(&attrs, 64, "unmanaged", ", "); } @@ -155,11 +155,13 @@ static bool skip_child_rsc(pcmk_resource_t *rsc, pcmk_resource_t *child, gboolean parent_passes, GList *only_rsc, uint32_t show_opts) { - bool star_list = pcmk__list_of_1(only_rsc) && - pcmk__str_eq("*", g_list_first(only_rsc)->data, pcmk__str_none); - bool child_filtered = child->priv->fns->is_filtered(child, only_rsc, false); - bool child_active = child->priv->fns->active(child, false); - bool show_inactive = pcmk_is_set(show_opts, pcmk_show_inactive_rscs); + const bool star_list = pcmk__list_of_1(only_rsc) + && pcmk__str_eq("*", g_list_first(only_rsc)->data, + pcmk__str_none); + const bool child_filtered = child->priv->fns->is_filtered(child, only_rsc, + false); + const bool child_active = child->priv->fns->active(child, false); + const bool show_inactive = pcmk__is_set(show_opts, pcmk_show_inactive_rscs); /* If the resource is in only_rsc by name (so, ignoring "*") then allow * it regardless of if it's active or not. @@ -334,8 +336,9 @@ pe__group_default(pcmk__output_t *out, va_list args) gboolean parent_passes = pcmk__str_in_list(rsc_printable_id(rsc), only_rsc, pcmk__str_star_matches) || (strstr(rsc->id, ":") != NULL && pcmk__str_in_list(rsc->id, only_rsc, pcmk__str_star_matches)); - bool active = rsc->priv->fns->active(rsc, true); - bool partially_active = rsc->priv->fns->active(rsc, false); + const bool active = rsc->priv->fns->active(rsc, true); + const bool partially_active = rsc->priv->fns->active(rsc, false); + const bool count_inactive = !active && partially_active; desc = pe__resource_description(rsc, show_opts); @@ -343,12 +346,14 @@ pe__group_default(pcmk__output_t *out, va_list args) return rc; } - if (pcmk_is_set(show_opts, pcmk_show_brief)) { + if (pcmk__is_set(show_opts, pcmk_show_brief)) { GList *rscs = pe__filter_rsc_list(rsc->priv->children, only_rsc); if (rscs != NULL) { - group_header(out, &rc, rsc, !active && partially_active ? inactive_resources(rsc) : 0, - pcmk_is_set(show_opts, pcmk_show_inactive_rscs), desc); + group_header(out, &rc, rsc, + (count_inactive? inactive_resources(rsc) : 0), + pcmk__is_set(show_opts, pcmk_show_inactive_rscs), + desc); pe__rscs_brief_output(out, rscs, show_opts | pcmk_show_inactive_rscs); rc = pcmk_rc_ok; @@ -364,8 +369,10 @@ pe__group_default(pcmk__output_t *out, va_list args) continue; } - group_header(out, &rc, rsc, !active && partially_active ? inactive_resources(rsc) : 0, - pcmk_is_set(show_opts, pcmk_show_inactive_rscs), desc); + group_header(out, &rc, rsc, + (count_inactive? inactive_resources(rsc) : 0), + pcmk__is_set(show_opts, pcmk_show_inactive_rscs), + desc); out->message(out, (const char *) child_rsc->priv->xml->name, show_opts, child_rsc, only_node, only_rsc); } diff --git a/lib/pengine/native.c b/lib/pengine/native.c index 665420f5f29..c75fae01c2a 100644 --- a/lib/pengine/native.c +++ b/lib/pengine/native.c @@ -101,8 +101,12 @@ native_add_running(pcmk_resource_t *rsc, pcmk_node_t *node, } } - pcmk__rsc_trace(rsc, "Adding %s to %s %s", rsc->id, pcmk__node_name(node), - pcmk_is_set(rsc->flags, pcmk__rsc_managed)? "" : "(unmanaged)"); + if (pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { + pcmk__rsc_trace(rsc, "Adding %s to %s", rsc->id, pcmk__node_name(node)); + } else { + pcmk__rsc_trace(rsc, "Adding %s to %s (unmanaged)", rsc->id, + pcmk__node_name(node)); + } rsc->priv->active_nodes = g_list_append(rsc->priv->active_nodes, node); if (pcmk__is_primitive(rsc)) { @@ -114,7 +118,7 @@ native_add_running(pcmk_resource_t *rsc, pcmk_node_t *node, } } - if (!pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { pcmk_resource_t *p = parent; pcmk__rsc_info(rsc, "resource %s isn't managed", rsc->id); @@ -211,8 +215,8 @@ native_unpack(pcmk_resource_t *rsc) pcmk__rsc_trace(rsc, "Processing resource %s...", rsc->id); // Only some agent standards support unique and promotable clones - if (!pcmk_is_set(ra_caps, pcmk_ra_cap_unique) - && pcmk_is_set(rsc->flags, pcmk__rsc_unique) + if (!pcmk__is_set(ra_caps, pcmk_ra_cap_unique) + && pcmk__is_set(rsc->flags, pcmk__rsc_unique) && pcmk__is_clone(parent)) { /* @COMPAT We should probably reject this situation as an error (as we @@ -230,8 +234,8 @@ native_unpack(pcmk_resource_t *rsc) recursive_clear_unique(parent, NULL); recursive_clear_unique(rsc, NULL); } - if (!pcmk_is_set(ra_caps, pcmk_ra_cap_promotable) - && pcmk_is_set(parent->flags, pcmk__rsc_promotable)) { + if (!pcmk__is_set(ra_caps, pcmk_ra_cap_promotable) + && pcmk__is_set(parent->flags, pcmk__rsc_promotable)) { pcmk__config_err("Resource %s is of type %s and therefore " "cannot be used as a promotable clone resource", @@ -247,7 +251,7 @@ rsc_is_on_node(pcmk_resource_t *rsc, const pcmk_node_t *node, int flags) pcmk__rsc_trace(rsc, "Checking whether %s is on %s", rsc->id, pcmk__node_name(node)); - if (pcmk_is_set(flags, pcmk_rsc_match_current_node) + if (pcmk__is_set(flags, pcmk_rsc_match_current_node) && (rsc->priv->active_nodes != NULL)) { for (GList *iter = rsc->priv->active_nodes; @@ -258,7 +262,7 @@ rsc_is_on_node(pcmk_resource_t *rsc, const pcmk_node_t *node, int flags) } } - } else if (!pcmk_is_set(flags, pcmk_rsc_match_current_node) + } else if (!pcmk__is_set(flags, pcmk_rsc_match_current_node) && (rsc->priv->assigned_node != NULL) && pcmk__same_node(rsc->priv->assigned_node, node)) { return true; @@ -275,7 +279,7 @@ native_find_rsc(pcmk_resource_t *rsc, const char *id, CRM_CHECK(id && rsc && rsc->id, return NULL); - if (pcmk_is_set(flags, pcmk_rsc_match_clone_only)) { + if (pcmk__is_set(flags, pcmk_rsc_match_clone_only)) { const char *rid = pcmk__xe_id(rsc->priv->xml); if (!pcmk__is_clone(pe__const_top_resource(rsc, false))) { @@ -288,13 +292,13 @@ native_find_rsc(pcmk_resource_t *rsc, const char *id, } else if (!strcmp(id, rsc->id)) { match = true; - } else if (pcmk_is_set(flags, pcmk_rsc_match_history) + } else if (pcmk__is_set(flags, pcmk_rsc_match_history) && pcmk__str_eq(rsc->priv->history_id, id, pcmk__str_none)) { match = true; - } else if (pcmk_is_set(flags, pcmk_rsc_match_basename) - || (pcmk_is_set(flags, pcmk_rsc_match_anon_basename) - && !pcmk_is_set(rsc->flags, pcmk__rsc_unique))) { + } else if (pcmk__is_set(flags, pcmk_rsc_match_basename) + || (pcmk__is_set(flags, pcmk_rsc_match_anon_basename) + && !pcmk__is_set(rsc->flags, pcmk__rsc_unique))) { match = pe_base_name_eq(rsc, id); } @@ -334,7 +338,7 @@ native_active(const pcmk_resource_t *rsc, bool all) rsc->id, pcmk__node_name(a_node)); return TRUE; } else if (!a_node->details->online - && pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + && pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { pcmk__rsc_trace(rsc, "Resource %s: %s is offline", rsc->id, pcmk__node_name(a_node)); } else { @@ -415,8 +419,8 @@ native_displayable_role(const pcmk_resource_t *rsc) enum rsc_role_e role = rsc->priv->orig_role; if ((role == pcmk_role_started) - && pcmk_is_set(pe__const_top_resource(rsc, false)->flags, - pcmk__rsc_promotable)) { + && pcmk__is_set(pe__const_top_resource(rsc, false)->flags, + pcmk__rsc_promotable)) { role = pcmk_role_unpromoted; } @@ -488,7 +492,7 @@ pcmk__native_output_string(const pcmk_resource_t *rsc, const char *name, CRM_CHECK(kind != NULL, kind = "unknown"); CRM_CHECK(class != NULL, class = "unknown"); - if (pcmk_is_set(pcmk_get_ra_caps(class), pcmk_ra_cap_provider)) { + if (pcmk__is_set(pcmk_get_ra_caps(class), pcmk_ra_cap_provider)) { provider = pcmk__xe_get(rsc->priv->xml, PCMK_XA_PROVIDER); } @@ -508,10 +512,10 @@ pcmk__native_output_string(const pcmk_resource_t *rsc, const char *name, pcmk__s(provider, ""), ":", kind, "):\t", NULL); // State on node - if (pcmk_is_set(rsc->flags, pcmk__rsc_removed)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_removed)) { g_string_append(outstr, " ORPHANED"); } - if (pcmk_is_set(rsc->flags, pcmk__rsc_failed)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_failed)) { enum rsc_role_e role = native_displayable_role(rsc); g_string_append(outstr, " FAILED"); @@ -519,7 +523,7 @@ pcmk__native_output_string(const pcmk_resource_t *rsc, const char *name, pcmk__add_word(&outstr, 0, pcmk_role_text(role)); } } else { - bool show_pending = pcmk_is_set(show_opts, pcmk_show_pending); + const bool show_pending = pcmk__is_set(show_opts, pcmk_show_pending); pcmk__add_word(&outstr, 0, native_displayable_state(rsc, show_pending)); } @@ -547,7 +551,7 @@ pcmk__native_output_string(const pcmk_resource_t *rsc, const char *name, if ((node != NULL) && pcmk__same_node(node, rsc->priv->lock_node)) { have_flags = add_output_flag(outstr, "LOCKED", have_flags); } - if (pcmk_is_set(show_opts, pcmk_show_pending)) { + if (pcmk__is_set(show_opts, pcmk_show_pending)) { const char *pending_action = native_pending_action(rsc); if (pending_action != NULL) { @@ -566,8 +570,8 @@ pcmk__native_output_string(const pcmk_resource_t *rsc, const char *name, break; case pcmk_role_unpromoted: - if (pcmk_is_set(pe__const_top_resource(rsc, false)->flags, - pcmk__rsc_promotable)) { + if (pcmk__is_set(pe__const_top_resource(rsc, false)->flags, + pcmk__rsc_promotable)) { have_flags = add_output_flag(outstr, PCMK_META_TARGET_ROLE ":", have_flags); @@ -587,17 +591,17 @@ pcmk__native_output_string(const pcmk_resource_t *rsc, const char *name, // Blocked or maintenance implies unmanaged if (pcmk_any_flags_set(rsc->flags, pcmk__rsc_blocked|pcmk__rsc_maintenance)) { - if (pcmk_is_set(rsc->flags, pcmk__rsc_blocked)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_blocked)) { have_flags = add_output_flag(outstr, "blocked", have_flags); - } else if (pcmk_is_set(rsc->flags, pcmk__rsc_maintenance)) { + } else if (pcmk__is_set(rsc->flags, pcmk__rsc_maintenance)) { have_flags = add_output_flag(outstr, "maintenance", have_flags); } - } else if (!pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + } else if (!pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { have_flags = add_output_flag(outstr, "unmanaged", have_flags); } - if (pcmk_is_set(rsc->flags, pcmk__rsc_ignore_failure)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_ignore_failure)) { have_flags = add_output_flag(outstr, "failure ignored", have_flags); } @@ -619,7 +623,7 @@ pcmk__native_output_string(const pcmk_resource_t *rsc, const char *name, } } - if (show_nodes && !pcmk_is_set(show_opts, pcmk_show_rsc_only) + if (show_nodes && !pcmk__is_set(show_opts, pcmk_show_rsc_only) && pcmk__list_of_multiple(rsc->priv->active_nodes)) { bool have_nodes = false; @@ -654,7 +658,7 @@ pe__common_output_html(pcmk__output_t *out, const pcmk_resource_t *rsc, if (pcmk__is_true(g_hash_table_lookup(rsc->priv->meta, PCMK__META_INTERNAL_RSC)) - && !pcmk_is_set(show_opts, pcmk_show_implicit_rscs)) { + && !pcmk__is_set(show_opts, pcmk_show_implicit_rscs)) { crm_trace("skipping print of internal resource %s", rsc->id); return pcmk_rc_no_output; @@ -662,10 +666,10 @@ pe__common_output_html(pcmk__output_t *out, const pcmk_resource_t *rsc, target_role = g_hash_table_lookup(rsc->priv->meta, PCMK_META_TARGET_ROLE); - if (!pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { cl = PCMK__VALUE_RSC_MANAGED; - } else if (pcmk_is_set(rsc->flags, pcmk__rsc_failed)) { + } else if (pcmk__is_set(rsc->flags, pcmk__rsc_failed)) { cl = PCMK__VALUE_RSC_FAILED; } else if (pcmk__is_primitive(rsc) @@ -675,7 +679,7 @@ pe__common_output_html(pcmk__output_t *out, const pcmk_resource_t *rsc, } else if (pcmk__list_of_multiple(rsc->priv->active_nodes)) { cl = PCMK__VALUE_RSC_MULTIPLE; - } else if (pcmk_is_set(rsc->flags, pcmk__rsc_ignore_failure)) { + } else if (pcmk__is_set(rsc->flags, pcmk__rsc_ignore_failure)) { cl = PCMK__VALUE_RSC_FAILURE_IGNORED; } else { @@ -703,7 +707,7 @@ pe__common_output_text(pcmk__output_t *out, const pcmk_resource_t *rsc, if (pcmk__is_true(g_hash_table_lookup(rsc->priv->meta, PCMK__META_INTERNAL_RSC)) - && !pcmk_is_set(show_opts, pcmk_show_implicit_rscs)) { + && !pcmk__is_set(show_opts, pcmk_show_implicit_rscs)) { crm_trace("skipping print of internal resource %s", rsc->id); return pcmk_rc_no_output; @@ -733,7 +737,7 @@ pe__resource_xml(pcmk__output_t *out, va_list args) GList *only_rsc = va_arg(args, GList *); int rc = pcmk_rc_no_output; - bool print_pending = pcmk_is_set(show_opts, pcmk_show_pending); + const bool print_pending = pcmk__is_set(show_opts, pcmk_show_pending); const char *class = pcmk__xe_get(rsc->priv->xml, PCMK_XA_CLASS); const char *prov = pcmk__xe_get(rsc->priv->xml, PCMK_XA_PROVIDER); @@ -909,15 +913,15 @@ native_location(const pcmk_resource_t *rsc, GList **list, uint32_t target) } } else { - if (pcmk_is_set(target, pcmk__rsc_node_current)) { + if (pcmk__is_set(target, pcmk__rsc_node_current)) { result = g_list_copy(rsc->priv->active_nodes); } - if (pcmk_is_set(target, pcmk__rsc_node_pending) + if (pcmk__is_set(target, pcmk__rsc_node_pending) && (rsc->priv->pending_node != NULL) && !pe_find_node_id(result, rsc->priv->pending_node->priv->id)) { result = g_list_append(result, (gpointer) rsc->priv->pending_node); } - if (pcmk_is_set(target, pcmk__rsc_node_assigned) + if (pcmk__is_set(target, pcmk__rsc_node_assigned) && (rsc->priv->assigned_node != NULL)) { result = g_list_append(result, rsc->priv->assigned_node); } @@ -966,7 +970,7 @@ get_rscs_brief(GList *rsc_list, GHashTable * rsc_table, GHashTable * active_tabl } offset += snprintf(buffer + offset, LINE_MAX - offset, "%s", class); - if (pcmk_is_set(pcmk_get_ra_caps(class), pcmk_ra_cap_provider)) { + if (pcmk__is_set(pcmk_get_ra_caps(class), pcmk_ra_cap_provider)) { const char *prov = pcmk__xe_get(rsc->priv->xml, PCMK_XA_PROVIDER); if (prov != NULL) { @@ -994,8 +998,8 @@ get_rscs_brief(GList *rsc_list, GHashTable * rsc_table, GHashTable * active_tabl pcmk_node_t *node = (pcmk_node_t *) gIter2->data; GHashTable *node_table = NULL; - if (node->details->unclean == FALSE && node->details->online == FALSE && - pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + if (!node->details->unclean && !node->details->online + && pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { continue; } @@ -1078,11 +1082,11 @@ pe__rscs_brief_output(pcmk__output_t *out, GList *rsc_list, uint32_t show_opts) active_counter_all += *active_counter; } - if (pcmk_is_set(show_opts, pcmk_show_rsc_only)) { + if (pcmk__is_set(show_opts, pcmk_show_rsc_only)) { node_name = NULL; } - if (pcmk_is_set(show_opts, pcmk_show_inactive_rscs)) { + if (pcmk__is_set(show_opts, pcmk_show_inactive_rscs)) { out->list_item(out, NULL, "%d/%d\t(%s):\tActive %s", *active_counter, rsc_counter ? *rsc_counter : 0, type, @@ -1096,7 +1100,9 @@ pe__rscs_brief_output(pcmk__output_t *out, GList *rsc_list, uint32_t show_opts) rc = pcmk_rc_ok; } - if (pcmk_is_set(show_opts, pcmk_show_inactive_rscs) && active_counter_all == 0) { + if (pcmk__is_set(show_opts, pcmk_show_inactive_rscs) + && (active_counter_all == 0)) { + out->list_item(out, NULL, "%d/%d\t(%s):\tActive", active_counter_all, rsc_counter ? *rsc_counter : 0, type); diff --git a/lib/pengine/pe_actions.c b/lib/pengine/pe_actions.c index d2c7ad6ec76..c060d18126d 100644 --- a/lib/pengine/pe_actions.c +++ b/lib/pengine/pe_actions.c @@ -272,8 +272,8 @@ update_action_optional(pcmk_action_t *action, gboolean optional) { // Force a non-recurring action to be optional if its resource is unmanaged if ((action->rsc != NULL) && (action->node != NULL) - && !pcmk_is_set(action->flags, pcmk__action_pseudo) - && !pcmk_is_set(action->rsc->flags, pcmk__rsc_managed) + && !pcmk__is_set(action->flags, pcmk__action_pseudo) + && !pcmk__is_set(action->rsc->flags, pcmk__rsc_managed) && (g_hash_table_lookup(action->meta, PCMK_META_INTERVAL) == NULL)) { pcmk__rsc_debug(action->rsc, "%s on %s is optional (%s is unmanaged)", @@ -293,7 +293,7 @@ effective_quorum_policy(pcmk_resource_t *rsc, pcmk_scheduler_t *scheduler) { enum pe_quorum_policy policy = scheduler->no_quorum_policy; - if (pcmk_is_set(scheduler->flags, pcmk__sched_quorate)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_quorate)) { policy = pcmk_no_quorum_ignore; } else if (scheduler->no_quorum_policy == pcmk_no_quorum_demote) { @@ -329,7 +329,7 @@ update_resource_action_runnable(pcmk_action_t *action, { pcmk_resource_t *rsc = action->rsc; - if (pcmk_is_set(action->flags, pcmk__action_pseudo)) { + if (pcmk__is_set(action->flags, pcmk__action_pseudo)) { return; } @@ -337,21 +337,21 @@ update_resource_action_runnable(pcmk_action_t *action, pcmk__rsc_trace(rsc, "%s is unrunnable (unallocated)", action->uuid); pcmk__clear_action_flags(action, pcmk__action_runnable); - } else if (!pcmk_is_set(action->flags, pcmk__action_on_dc) + } else if (!pcmk__is_set(action->flags, pcmk__action_on_dc) && !(action->node->details->online) && (!pcmk__is_guest_or_bundle_node(action->node) - || pcmk_is_set(action->node->priv->flags, - pcmk__node_remote_reset))) { + || pcmk__is_set(action->node->priv->flags, + pcmk__node_remote_reset))) { pcmk__clear_action_flags(action, pcmk__action_runnable); do_crm_log(LOG_WARNING, "%s on %s is unrunnable (node is offline)", action->uuid, pcmk__node_name(action->node)); - if (pcmk_is_set(rsc->flags, pcmk__rsc_managed) + if (pcmk__is_set(rsc->flags, pcmk__rsc_managed) && pcmk__str_eq(action->task, PCMK_ACTION_STOP, pcmk__str_casei) && !(action->node->details->unclean)) { pe_fence_node(scheduler, action->node, "stop is unrunnable", false); } - } else if (!pcmk_is_set(action->flags, pcmk__action_on_dc) + } else if (!pcmk__is_set(action->flags, pcmk__action_on_dc) && action->node->details->pending) { pcmk__clear_action_flags(action, pcmk__action_runnable); do_crm_log(LOG_WARNING, @@ -763,8 +763,8 @@ pcmk__unpack_action_meta(pcmk_resource_t *rsc, const pcmk_node_t *node, */ // Check for pcmk_monitor_timeout - if (pcmk_is_set(pcmk_get_ra_caps(rule_input.rsc_standard), - pcmk_ra_cap_fence_params) + if (pcmk__is_set(pcmk_get_ra_caps(rule_input.rsc_standard), + pcmk_ra_cap_fence_params) && (pcmk__str_eq(action_name, PCMK_ACTION_START, pcmk__str_none) || pcmk_is_probe(action_name, interval_ms))) { @@ -827,11 +827,11 @@ pcmk__action_requires(const pcmk_resource_t *rsc, const char *action_name) PCMK_ACTION_PROMOTE, NULL)) { value = "nothing (not start or promote)"; - } else if (pcmk_is_set(rsc->flags, pcmk__rsc_needs_fencing)) { + } else if (pcmk__is_set(rsc->flags, pcmk__rsc_needs_fencing)) { requires = pcmk__requires_fencing; value = "fencing"; - } else if (pcmk_is_set(rsc->flags, pcmk__rsc_needs_quorum)) { + } else if (pcmk__is_set(rsc->flags, pcmk__rsc_needs_quorum)) { requires = pcmk__requires_quorum; value = "quorum"; @@ -874,7 +874,7 @@ pcmk__parse_on_fail(const pcmk_resource_t *rsc, const char *action_name, desc = "block"; } else if (pcmk__str_eq(value, PCMK_VALUE_FENCE, pcmk__str_casei)) { - if (pcmk_is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { on_fail = pcmk__on_fail_fence_node; desc = "node fencing"; } else { @@ -938,12 +938,12 @@ pcmk__parse_on_fail(const pcmk_resource_t *rsc, const char *action_name, * failures that don't are probes and starts. The user can explicitly set * PCMK_META_ON_FAIL=PCMK_VALUE_FENCE to fence after start failures. */ - if (pcmk_is_set(rsc->flags, pcmk__rsc_is_remote_connection) + if (pcmk__is_set(rsc->flags, pcmk__rsc_is_remote_connection) && pcmk__is_remote_node(pcmk_find_node(scheduler, rsc->id)) && !pcmk_is_probe(action_name, interval_ms) && !pcmk__str_eq(action_name, PCMK_ACTION_START, pcmk__str_none)) { needs_remote_reset = true; - if (!pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { desc = NULL; // Force default for unmanaged connections } } @@ -956,8 +956,8 @@ pcmk__parse_on_fail(const pcmk_resource_t *rsc, const char *action_name, desc = "restart container (and possibly migrate) (default)"; } else if (needs_remote_reset) { - if (pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { - if (pcmk_is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { desc = "fence remote node (default)"; } else { desc = "recover remote node connection (default)"; @@ -969,7 +969,7 @@ pcmk__parse_on_fail(const pcmk_resource_t *rsc, const char *action_name, } } else if (pcmk__str_eq(action_name, PCMK_ACTION_STOP, pcmk__str_none)) { - if (pcmk_is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { on_fail = pcmk__on_fail_fence_node; desc = "resource fence (default)"; } else { @@ -1105,7 +1105,7 @@ custom_action(pcmk_resource_t *rsc, char *key, const char *task, * new_action(). */ if ((action->node != NULL) && (action->op_entry != NULL) - && !pcmk_is_set(action->flags, pcmk__action_attrs_evaluated)) { + && !pcmk__is_set(action->flags, pcmk__action_attrs_evaluated)) { GHashTable *attrs = action->node->priv->attrs; @@ -1149,10 +1149,10 @@ find_unfencing_devices(GList *candidates, GList *matches) matches = find_unfencing_devices(candidate->priv->children, matches); - } else if (!pcmk_is_set(candidate->flags, pcmk__rsc_fence_device)) { + } else if (!pcmk__is_set(candidate->flags, pcmk__rsc_fence_device)) { continue; - } else if (pcmk_is_set(candidate->flags, pcmk__rsc_needs_unfencing)) { + } else if (pcmk__is_set(candidate->flags, pcmk__rsc_needs_unfencing)) { matches = g_list_prepend(matches, candidate); } else if (pcmk__str_eq(g_hash_table_lookup(candidate->priv->meta, @@ -1257,7 +1257,7 @@ pe_fence_op(pcmk_node_t *node, const char *op, bool optional, node->priv->id); pcmk__insert_meta(stonith_op, PCMK__META_STONITH_ACTION, op); - if (pcmk_is_set(scheduler->flags, pcmk__sched_enable_unfencing)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_enable_unfencing)) { /* Extra work to detect device changes */ GString *digests_all = g_string_sized_new(1024); diff --git a/lib/pengine/pe_digest.c b/lib/pengine/pe_digest.c index a4867aff8a6..24361ceac20 100644 --- a/lib/pengine/pe_digest.c +++ b/lib/pengine/pe_digest.c @@ -215,8 +215,8 @@ calculate_secure_digest(pcmk__op_digest_t *data, const pcmk_resource_t *rsc, attr_in_string, (void *) secure_list); } if (old_version - && pcmk_is_set(pcmk_get_ra_caps(class), - pcmk_ra_cap_fence_params)) { + && pcmk__is_set(pcmk_get_ra_caps(class), + pcmk_ra_cap_fence_params)) { /* For stonith resources, Pacemaker adds special parameters, * but these are not listed in fence agent meta-data, so with older * versions of DC, the controller will not hash them. That means we have @@ -407,8 +407,8 @@ rsc_action_digest_cmp(pcmk_resource_t *rsc, const xmlNode *xml_op, pcmk__xe_get_guint(xml_op, PCMK_META_INTERVAL, &interval_ms); data = rsc_action_digest(rsc, task, interval_ms, node, xml_op, - pcmk_is_set(scheduler->flags, - pcmk__sched_sanitized), + pcmk__is_set(scheduler->flags, + pcmk__sched_sanitized), scheduler); if (!pcmk__str_eq(data->digest_restart_calc, digest_restart, @@ -587,7 +587,7 @@ pe__compare_fencing_digest(pcmk_resource_t *rsc, const char *agent, // Parameters don't match data->rc = pcmk__digest_mismatch; - if (pcmk_is_set(scheduler->flags, pcmk__sched_sanitized) + if (pcmk__is_set(scheduler->flags, pcmk__sched_sanitized) && (data->digest_secure_calc != NULL)) { if (scheduler->priv->out != NULL) { diff --git a/lib/pengine/pe_notif.c b/lib/pengine/pe_notif.c index 89d678a7128..812ad55b024 100644 --- a/lib/pengine/pe_notif.c +++ b/lib/pengine/pe_notif.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. * @@ -294,7 +294,7 @@ new_notify_pseudo_action(pcmk_resource_t *rsc, const pcmk_action_t *action, notify = custom_action(rsc, pcmk__notify_key(rsc->id, notif_type, action->task), notif_action, NULL, - pcmk_is_set(action->flags, pcmk__action_optional), + pcmk__is_set(action->flags, pcmk__action_optional), rsc->priv->scheduler); pcmk__set_action_flags(notify, pcmk__action_pseudo); pcmk__insert_meta(notify, "notify_key_type", notif_type); @@ -334,7 +334,7 @@ new_notify_action(pcmk_resource_t *rsc, const pcmk_node_t *node, skip_reason = "no parent notification"; } else if (!node->details->online) { skip_reason = "node offline"; - } else if (!pcmk_is_set(op->flags, pcmk__action_runnable)) { + } else if (!pcmk__is_set(op->flags, pcmk__action_runnable)) { skip_reason = "original action not runnable"; } if (skip_reason != NULL) { @@ -352,7 +352,8 @@ new_notify_action(pcmk_resource_t *rsc, const pcmk_node_t *node, // Create the notify action key = pcmk__notify_key(rsc->id, value, task); notify_action = custom_action(rsc, key, op->task, node, - pcmk_is_set(op->flags, pcmk__action_optional), + pcmk__is_set(op->flags, + pcmk__action_optional), rsc->priv->scheduler); // Add meta-data to notify action @@ -442,7 +443,7 @@ pe__action_notif_pseudo_ops(pcmk_resource_t *rsc, const char *task, { notify_data_t *n_data = NULL; - if (!pcmk_is_set(rsc->flags, pcmk__rsc_notify)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_notify)) { return NULL; } @@ -478,7 +479,7 @@ pe__action_notif_pseudo_ops(pcmk_resource_t *rsc, const char *task, n_data->post = new_notify_pseudo_action(rsc, complete, PCMK_ACTION_NOTIFY, "post"); n_data->post->priority = PCMK_SCORE_INFINITY; - if (pcmk_is_set(complete->flags, pcmk__action_runnable)) { + if (pcmk__is_set(complete->flags, pcmk__action_runnable)) { pcmk__set_action_flags(n_data->post, pcmk__action_runnable); } else { pcmk__clear_action_flags(n_data->post, pcmk__action_runnable); @@ -491,7 +492,7 @@ pe__action_notif_pseudo_ops(pcmk_resource_t *rsc, const char *task, PCMK_ACTION_NOTIFIED, "confirmed-post"); n_data->post_done->priority = PCMK_SCORE_INFINITY; - if (pcmk_is_set(complete->flags, pcmk__action_runnable)) { + if (pcmk__is_set(complete->flags, pcmk__action_runnable)) { pcmk__set_action_flags(n_data->post_done, pcmk__action_runnable); } else { pcmk__clear_action_flags(n_data->post_done, pcmk__action_runnable); @@ -621,13 +622,13 @@ collect_resource_data(pcmk_resource_t *rsc, bool activity, for (iter = rsc->priv->actions; iter != NULL; iter = iter->next) { const pcmk_action_t *op = (const pcmk_action_t *) iter->data; - if (!pcmk_is_set(op->flags, pcmk__action_optional) + if (!pcmk__is_set(op->flags, pcmk__action_optional) && (op->node != NULL)) { enum pcmk__action_type task = pcmk__parse_action(op->task); if ((task == pcmk__action_stop) && op->node->details->unclean) { // Create anyway (additional noise if node can't be fenced) - } else if (!pcmk_is_set(op->flags, pcmk__action_runnable)) { + } else if (!pcmk__is_set(op->flags, pcmk__action_runnable)) { continue; } @@ -834,7 +835,7 @@ create_notify_actions(pcmk_resource_t *rsc, notify_data_t *n_data) for (iter = rsc->priv->actions; iter != NULL; iter = iter->next) { pcmk_action_t *op = (pcmk_action_t *) iter->data; - if (!pcmk_is_set(op->flags, pcmk__action_optional) + if (!pcmk__is_set(op->flags, pcmk__action_optional) && (op->node != NULL)) { switch (pcmk__parse_action(op->task)) { case pcmk__action_start: @@ -899,10 +900,10 @@ create_notify_actions(pcmk_resource_t *rsc, notify_data_t *n_data) * notify the node getting fenced. */ if ((stop != NULL) - && pcmk_is_set(stop->flags, pcmk__action_pseudo) + && pcmk__is_set(stop->flags, pcmk__action_pseudo) && (current_node->details->unclean - || pcmk_is_set(current_node->priv->flags, - pcmk__node_remote_reset))) { + || pcmk__is_set(current_node->priv->flags, + pcmk__node_remote_reset))) { continue; } @@ -910,7 +911,7 @@ create_notify_actions(pcmk_resource_t *rsc, notify_data_t *n_data) n_data->pre_done, n_data); if ((task == pcmk__action_demote) || (stop == NULL) - || pcmk_is_set(stop->flags, pcmk__action_optional)) { + || pcmk__is_set(stop->flags, pcmk__action_optional)) { new_post_notify_action(rsc, current_node, n_data); } } @@ -926,7 +927,7 @@ create_notify_actions(pcmk_resource_t *rsc, notify_data_t *n_data) pcmk_action_t *remote_start = find_remote_start(start); if ((remote_start != NULL) - && !pcmk_is_set(remote_start->flags, pcmk__action_runnable)) { + && !pcmk__is_set(remote_start->flags, pcmk__action_runnable)) { /* Start and promote actions for a clone instance behind * a Pacemaker Remote connection happen after the * connection starts. If the connection start is blocked, do @@ -942,7 +943,7 @@ create_notify_actions(pcmk_resource_t *rsc, notify_data_t *n_data) return; } if ((task != pcmk__action_start) || (start == NULL) - || pcmk_is_set(start->flags, pcmk__action_optional)) { + || pcmk__is_set(start->flags, pcmk__action_optional)) { new_notify_action(rsc, rsc->priv->assigned_node, n_data->pre, n_data->pre_done, n_data); diff --git a/lib/pengine/pe_output.c b/lib/pengine/pe_output.c index ce12028473c..2943d64c82a 100644 --- a/lib/pengine/pe_output.c +++ b/lib/pengine/pe_output.c @@ -357,7 +357,7 @@ static const char * get_node_feature_set(const pcmk_node_t *node) { if (node->details->online - && pcmk_is_set(node->priv->flags, pcmk__node_expected_up) + && pcmk__is_set(node->priv->flags, pcmk__node_expected_up) && !pcmk__is_pacemaker_remote_node(node)) { const char *feature_set = g_hash_table_lookup(node->priv->attrs, @@ -416,12 +416,12 @@ cluster_summary(pcmk__output_t *out, va_list args) { int rc = pcmk_rc_no_output; const char *stack_s = get_cluster_stack(scheduler); - if (pcmk_is_set(section_opts, pcmk_section_stack)) { + if (pcmk__is_set(section_opts, pcmk_section_stack)) { PCMK__OUTPUT_LIST_HEADER(out, false, rc, "Cluster Summary"); out->message(out, "cluster-stack", stack_s, pcmkd_state); } - if (pcmk_is_set(section_opts, pcmk_section_dc)) { + if (pcmk__is_set(section_opts, pcmk_section_dc)) { xmlNode *dc_version = pcmk__xpath_find_one(scheduler->input->doc, XPATH_DC_VERSION, LOG_DEBUG); const char *dc_version_s = dc_version? @@ -429,8 +429,14 @@ cluster_summary(pcmk__output_t *out, va_list args) { : NULL; const char *quorum = pcmk__xe_get(scheduler->input, PCMK_XA_HAVE_QUORUM); - char *dc_name = scheduler->dc_node? pe__node_display_name(scheduler->dc_node, pcmk_is_set(show_opts, pcmk_show_node_id)) : NULL; - bool mixed_version = is_mixed_version(scheduler); + char *dc_name = NULL; + const bool mixed_version = is_mixed_version(scheduler); + + if (scheduler->dc_node != NULL) { + dc_name = pe__node_display_name(scheduler->dc_node, + pcmk__is_set(show_opts, + pcmk_show_node_id)); + } PCMK__OUTPUT_LIST_HEADER(out, false, rc, "Cluster Summary"); out->message(out, "cluster-dc", scheduler->dc_node, quorum, @@ -438,7 +444,7 @@ cluster_summary(pcmk__output_t *out, va_list args) { free(dc_name); } - if (pcmk_is_set(section_opts, pcmk_section_times)) { + if (pcmk__is_set(section_opts, pcmk_section_times)) { const char *last_written = pcmk__xe_get(scheduler->input, PCMK_XA_CIB_LAST_WRITTEN); const char *user = pcmk__xe_get(scheduler->input, PCMK_XA_UPDATE_USER); @@ -452,7 +458,7 @@ cluster_summary(pcmk__output_t *out, va_list args) { last_written, user, client, origin); } - if (pcmk_is_set(section_opts, pcmk_section_counts)) { + if (pcmk__is_set(section_opts, pcmk_section_counts)) { PCMK__OUTPUT_LIST_HEADER(out, false, rc, "Cluster Summary"); out->message(out, "cluster-counts", g_list_length(scheduler->nodes), scheduler->priv->ninstances, @@ -460,14 +466,14 @@ cluster_summary(pcmk__output_t *out, va_list args) { scheduler->priv->blocked_resources); } - if (pcmk_is_set(section_opts, pcmk_section_options)) { + if (pcmk__is_set(section_opts, pcmk_section_options)) { PCMK__OUTPUT_LIST_HEADER(out, false, rc, "Cluster Summary"); out->message(out, "cluster-options", scheduler); } PCMK__OUTPUT_LIST_FOOTER(out, rc); - if (pcmk_is_set(section_opts, pcmk_section_maint_mode)) { + if (pcmk__is_set(section_opts, pcmk_section_maint_mode)) { if (out->message(out, "maint-mode", scheduler->flags) == pcmk_rc_ok) { rc = pcmk_rc_ok; } @@ -489,14 +495,14 @@ cluster_summary_html(pcmk__output_t *out, va_list args) { int rc = pcmk_rc_no_output; const char *stack_s = get_cluster_stack(scheduler); - if (pcmk_is_set(section_opts, pcmk_section_stack)) { + if (pcmk__is_set(section_opts, pcmk_section_stack)) { PCMK__OUTPUT_LIST_HEADER(out, false, rc, "Cluster Summary"); out->message(out, "cluster-stack", stack_s, pcmkd_state); } /* Always print DC if none, even if not requested */ if ((scheduler->dc_node == NULL) - || pcmk_is_set(section_opts, pcmk_section_dc)) { + || pcmk__is_set(section_opts, pcmk_section_dc)) { xmlNode *dc_version = pcmk__xpath_find_one(scheduler->input->doc, XPATH_DC_VERSION, LOG_DEBUG); const char *dc_version_s = dc_version? @@ -504,8 +510,14 @@ cluster_summary_html(pcmk__output_t *out, va_list args) { : NULL; const char *quorum = pcmk__xe_get(scheduler->input, PCMK_XA_HAVE_QUORUM); - char *dc_name = scheduler->dc_node? pe__node_display_name(scheduler->dc_node, pcmk_is_set(show_opts, pcmk_show_node_id)) : NULL; - bool mixed_version = is_mixed_version(scheduler); + char *dc_name = NULL; + const bool mixed_version = is_mixed_version(scheduler); + + if (scheduler->dc_node != NULL) { + dc_name = pe__node_display_name(scheduler->dc_node, + pcmk__is_set(show_opts, + pcmk_show_node_id)); + } PCMK__OUTPUT_LIST_HEADER(out, false, rc, "Cluster Summary"); out->message(out, "cluster-dc", scheduler->dc_node, quorum, @@ -513,7 +525,7 @@ cluster_summary_html(pcmk__output_t *out, va_list args) { free(dc_name); } - if (pcmk_is_set(section_opts, pcmk_section_times)) { + if (pcmk__is_set(section_opts, pcmk_section_times)) { const char *last_written = pcmk__xe_get(scheduler->input, PCMK_XA_CIB_LAST_WRITTEN); const char *user = pcmk__xe_get(scheduler->input, PCMK_XA_UPDATE_USER); @@ -527,7 +539,7 @@ cluster_summary_html(pcmk__output_t *out, va_list args) { last_written, user, client, origin); } - if (pcmk_is_set(section_opts, pcmk_section_counts)) { + if (pcmk__is_set(section_opts, pcmk_section_counts)) { PCMK__OUTPUT_LIST_HEADER(out, false, rc, "Cluster Summary"); out->message(out, "cluster-counts", g_list_length(scheduler->nodes), scheduler->priv->ninstances, @@ -535,7 +547,7 @@ cluster_summary_html(pcmk__output_t *out, va_list args) { scheduler->priv->blocked_resources); } - if (pcmk_is_set(section_opts, pcmk_section_options)) { + if (pcmk__is_set(section_opts, pcmk_section_options)) { /* Kind of a hack - close the list we may have opened earlier in this * function so we can put all the options into their own list. We * only want to do this on HTML output, though. @@ -548,7 +560,7 @@ cluster_summary_html(pcmk__output_t *out, va_list args) { PCMK__OUTPUT_LIST_FOOTER(out, rc); - if (pcmk_is_set(section_opts, pcmk_section_maint_mode)) { + if (pcmk__is_set(section_opts, pcmk_section_maint_mode)) { if (out->message(out, "maint-mode", scheduler->flags) == pcmk_rc_ok) { rc = pcmk_rc_ok; } @@ -654,7 +666,8 @@ ban_html(pcmk__output_t *out, va_list args) { uint32_t show_opts = va_arg(args, uint32_t); char *node_name = pe__node_display_name(pe_node, - pcmk_is_set(show_opts, pcmk_show_node_id)); + pcmk__is_set(show_opts, + pcmk_show_node_id)); char *buf = pcmk__assert_asprintf("%s\tprevents %s from running %son %s", location->id, location->rsc->id, role_desc(location->role_filter), @@ -675,7 +688,8 @@ ban_text(pcmk__output_t *out, va_list args) { uint32_t show_opts = va_arg(args, uint32_t); char *node_name = pe__node_display_name(pe_node, - pcmk_is_set(show_opts, pcmk_show_node_id)); + pcmk__is_set(show_opts, + pcmk_show_node_id)); out->list_item(out, NULL, "%s\tprevents %s from running %son %s", location->id, location->rsc->id, role_desc(location->role_filter), node_name); @@ -1009,11 +1023,11 @@ static int cluster_maint_mode_text(pcmk__output_t *out, va_list args) { uint64_t flags = va_arg(args, uint64_t); - if (pcmk_is_set(flags, pcmk__sched_in_maintenance)) { + if (pcmk__is_set(flags, pcmk__sched_in_maintenance)) { pcmk__formatted_printf(out, "\n *** Resource management is DISABLED ***\n"); pcmk__formatted_printf(out, " The cluster will not attempt to start, stop or recover services\n"); return pcmk_rc_ok; - } else if (pcmk_is_set(flags, pcmk__sched_stop_all)) { + } else if (pcmk__is_set(flags, pcmk__sched_stop_all)) { pcmk__formatted_printf(out, "\n *** Resource management is DISABLED ***\n"); pcmk__formatted_printf(out, " The cluster will keep all resources stopped\n"); return pcmk_rc_ok; @@ -1027,13 +1041,13 @@ static int cluster_options_html(pcmk__output_t *out, va_list args) { pcmk_scheduler_t *scheduler = va_arg(args, pcmk_scheduler_t *); - if (pcmk_is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { out->list_item(out, NULL, "STONITH of failed nodes enabled"); } else { out->list_item(out, NULL, "STONITH of failed nodes disabled"); } - if (pcmk_is_set(scheduler->flags, pcmk__sched_symmetric_cluster)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_symmetric_cluster)) { out->list_item(out, NULL, "Cluster is symmetric"); } else { out->list_item(out, NULL, "Cluster is asymmetric"); @@ -1068,7 +1082,7 @@ cluster_options_html(pcmk__output_t *out, va_list args) { break; } - if (pcmk_is_set(scheduler->flags, pcmk__sched_in_maintenance)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_in_maintenance)) { xmlNodePtr node = pcmk__output_create_xml_node(out, "li", NULL); xmlNode *child = NULL; @@ -1083,7 +1097,7 @@ cluster_options_html(pcmk__output_t *out, va_list args) { " (the cluster will not attempt to start, stop," " or recover services)"); - } else if (pcmk_is_set(scheduler->flags, pcmk__sched_stop_all)) { + } else if (pcmk__is_set(scheduler->flags, pcmk__sched_stop_all)) { xmlNodePtr node = pcmk__output_create_xml_node(out, "li", NULL); xmlNode *child = NULL; @@ -1109,9 +1123,9 @@ static int cluster_options_log(pcmk__output_t *out, va_list args) { pcmk_scheduler_t *scheduler = va_arg(args, pcmk_scheduler_t *); - if (pcmk_is_set(scheduler->flags, pcmk__sched_in_maintenance)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_in_maintenance)) { return out->info(out, "Resource management is DISABLED. The cluster will not attempt to start, stop or recover services."); - } else if (pcmk_is_set(scheduler->flags, pcmk__sched_stop_all)) { + } else if (pcmk__is_set(scheduler->flags, pcmk__sched_stop_all)) { return out->info(out, "Resource management is DISABLED. The cluster has stopped all resources."); } else { return pcmk_rc_no_output; @@ -1123,13 +1137,13 @@ static int cluster_options_text(pcmk__output_t *out, va_list args) { pcmk_scheduler_t *scheduler = va_arg(args, pcmk_scheduler_t *); - if (pcmk_is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { out->list_item(out, NULL, "STONITH of failed nodes enabled"); } else { out->list_item(out, NULL, "STONITH of failed nodes disabled"); } - if (pcmk_is_set(scheduler->flags, pcmk__sched_symmetric_cluster)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_symmetric_cluster)) { out->list_item(out, NULL, "Cluster is symmetric"); } else { out->list_item(out, NULL, "Cluster is asymmetric"); @@ -1571,7 +1585,7 @@ failed_action_default(pcmk__output_t *out, va_list args) node_name = "unknown node"; } - if (pcmk_is_set(show_opts, pcmk_show_failed_detail)) { + if (pcmk__is_set(show_opts, pcmk_show_failed_detail)) { failed_action_technical(out, xml_op, op_key, node_name, rc, status, exit_reason, exec_time); } else { @@ -1728,7 +1742,7 @@ status_node(pcmk_node_t *node, xmlNodePtr parent, uint32_t show_opts) } // Standby mode - if (pcmk_is_set(node->priv->flags, pcmk__node_fail_standby)) { + if (pcmk__is_set(node->priv->flags, pcmk__node_fail_standby)) { child = pcmk__html_create(parent, PCMK__XE_SPAN, NULL, PCMK_VALUE_STANDBY); if (node->details->running_rsc == NULL) { @@ -1740,7 +1754,7 @@ status_node(pcmk_node_t *node, xmlNodePtr parent, uint32_t show_opts) " with active resources)"); } - } else if (pcmk_is_set(node->priv->flags, pcmk__node_standby)) { + } else if (pcmk__is_set(node->priv->flags, pcmk__node_standby)) { child = pcmk__html_create(parent, PCMK__XE_SPAN, NULL, PCMK_VALUE_STANDBY); if (node->details->running_rsc == NULL) { @@ -1770,7 +1784,7 @@ status_node(pcmk_node_t *node, xmlNodePtr parent, uint32_t show_opts) } // Feature set - if (pcmk_is_set(show_opts, pcmk_show_feature_set)) { + if (pcmk__is_set(show_opts, pcmk_show_feature_set)) { const char *feature_set = get_node_feature_set(node); if (feature_set != NULL) { child = pcmk__html_create(parent, PCMK__XE_SPAN, NULL, NULL); @@ -1789,7 +1803,9 @@ node_html(pcmk__output_t *out, va_list args) { GList *only_node = va_arg(args, GList *); GList *only_rsc = va_arg(args, GList *); - char *node_name = pe__node_display_name(node, pcmk_is_set(show_opts, pcmk_show_node_id)); + char *node_name = pe__node_display_name(node, + pcmk__is_set(show_opts, + pcmk_show_node_id)); if (full) { xmlNode *item_node = NULL; @@ -1814,7 +1830,7 @@ node_html(pcmk__output_t *out, va_list args) { pcmk__output_xml_pop_parent(out); out->end_list(out); - } else if (pcmk_is_set(show_opts, pcmk_show_rscs_by_node)) { + } else if (pcmk__is_set(show_opts, pcmk_show_rscs_by_node)) { GList *lpc2 = NULL; int rc = pcmk_rc_no_output; @@ -1878,11 +1894,11 @@ node_text_status(const pcmk_node_t *node) } else if (node->details->pending) { return "pending"; - } else if (pcmk_is_set(node->priv->flags, pcmk__node_fail_standby) + } else if (pcmk__is_set(node->priv->flags, pcmk__node_fail_standby) && node->details->online) { return "standby (" PCMK_META_ON_FAIL ")"; - } else if (pcmk_is_set(node->priv->flags, pcmk__node_standby)) { + } else if (pcmk__is_set(node->priv->flags, pcmk__node_standby)) { if (!node->details->online) { return "OFFLINE (standby)"; } else if (node->details->running_rsc == NULL) { @@ -1916,7 +1932,9 @@ node_text(pcmk__output_t *out, va_list args) { GList *only_rsc = va_arg(args, GList *); if (full) { - char *node_name = pe__node_display_name(node, pcmk_is_set(show_opts, pcmk_show_node_id)); + char *node_name = + pe__node_display_name(node, + pcmk__is_set(show_opts, pcmk_show_node_id)); GString *str = g_string_sized_new(64); int health = pe__node_health(node); @@ -1935,7 +1953,7 @@ node_text(pcmk__output_t *out, va_list args) { } else if (health == 0) { g_string_append(str, " (health is YELLOW)"); } - if (pcmk_is_set(show_opts, pcmk_show_feature_set)) { + if (pcmk__is_set(show_opts, pcmk_show_feature_set)) { const char *feature_set = get_node_feature_set(node); if (feature_set != NULL) { pcmk__g_strcat(str, ", feature set ", feature_set, NULL); @@ -1943,8 +1961,8 @@ node_text(pcmk__output_t *out, va_list args) { } /* If we're grouping by node, print its resources */ - if (pcmk_is_set(show_opts, pcmk_show_rscs_by_node)) { - if (pcmk_is_set(show_opts, pcmk_show_brief)) { + if (pcmk__is_set(show_opts, pcmk_show_rscs_by_node)) { + if (pcmk__is_set(show_opts, pcmk_show_brief)) { GList *rscs = pe__filter_rsc_list(node->details->running_rsc, only_rsc); if (rscs != NULL) { @@ -1984,7 +2002,10 @@ node_text(pcmk__output_t *out, va_list args) { g_string_free(str, TRUE); free(node_name); } else { - char *node_name = pe__node_display_name(node, pcmk_is_set(show_opts, pcmk_show_node_id)); + char *node_name = + pe__node_display_name(node, + pcmk__is_set(show_opts, pcmk_show_node_id)); + out->begin_list(out, NULL, NULL, "Node: %s", node_name); free(node_name); } @@ -2096,7 +2117,7 @@ node_xml(pcmk__output_t *out, va_list args) { node->priv->remote->priv->launcher->id); } - if (pcmk_is_set(show_opts, pcmk_show_rscs_by_node)) { + if (pcmk__is_set(show_opts, pcmk_show_rscs_by_node)) { GList *lpc = NULL; for (lpc = node->details->running_rsc; lpc != NULL; lpc = lpc->next) { @@ -2279,8 +2300,8 @@ node_and_op_xml(pcmk__output_t *out, va_list args) { const char *class = pcmk__xe_get(rsc->priv->xml, PCMK_XA_CLASS); const char *provider = pcmk__xe_get(rsc->priv->xml, PCMK_XA_PROVIDER); const char *kind = pcmk__xe_get(rsc->priv->xml, PCMK_XA_TYPE); - bool has_provider = pcmk_is_set(pcmk_get_ra_caps(class), - pcmk_ra_cap_provider); + bool has_provider = pcmk__is_set(pcmk_get_ra_caps(class), + pcmk_ra_cap_provider); char *agent_tuple = pcmk__assert_asprintf("%s:%s:%s", class, @@ -2491,7 +2512,7 @@ node_history_list(pcmk__output_t *out, va_list args) { continue; } - if (!pcmk_is_set(section_opts, pcmk_section_operations)) { + if (!pcmk__is_set(section_opts, pcmk_section_operations)) { time_t last_failure = 0; int failcount = pe_get_failcount(node, rsc, &last_failure, pcmk__fc_default, NULL); @@ -2582,7 +2603,9 @@ node_list_text(pcmk__output_t *out, va_list args) { for (GList *gIter = nodes; gIter != NULL; gIter = gIter->next) { pcmk_node_t *node = (pcmk_node_t *) gIter->data; - char *node_name = pe__node_display_name(node, pcmk_is_set(show_opts, pcmk_show_node_id)); + char *node_name = + pe__node_display_name(node, + pcmk__is_set(show_opts, pcmk_show_node_id)); if (!pcmk__str_in_list(node->priv->name, only_node, pcmk__str_star_matches|pcmk__str_casei)) { @@ -2594,12 +2617,12 @@ node_list_text(pcmk__output_t *out, va_list args) { // Determine whether to display node individually or in a list if (node->details->unclean || node->details->pending - || (pcmk_is_set(node->priv->flags, pcmk__node_fail_standby) + || (pcmk__is_set(node->priv->flags, pcmk__node_fail_standby) && node->details->online) - || pcmk_is_set(node->priv->flags, pcmk__node_standby) + || pcmk__is_set(node->priv->flags, pcmk__node_standby) || node->details->maintenance - || pcmk_is_set(show_opts, pcmk_show_rscs_by_node) - || pcmk_is_set(show_opts, pcmk_show_feature_set) + || pcmk__is_set(show_opts, pcmk_show_rscs_by_node) + || pcmk__is_set(show_opts, pcmk_show_feature_set) || (pe__node_health(node) <= 0)) { // Display node individually @@ -2724,6 +2747,8 @@ node_summary(pcmk__output_t *out, va_list args) { pcmk_node_t *node = pe_find_node_id(scheduler->nodes, pcmk__xe_id(node_state)); + const bool operations = pcmk__is_set(section_opts, + pcmk_section_operations); if (!node || !node->details || !node->details->online) { continue; @@ -2734,8 +2759,12 @@ node_summary(pcmk__output_t *out, va_list args) { continue; } - PCMK__OUTPUT_LIST_HEADER(out, print_spacer, rc, - pcmk_is_set(section_opts, pcmk_section_operations) ? "Operations" : "Migration Summary"); + if (operations) { + PCMK__OUTPUT_LIST_HEADER(out, print_spacer, rc, "Operations"); + } else { + PCMK__OUTPUT_LIST_HEADER(out, print_spacer, rc, + "Migration Summary"); + } out->message(out, "node-history-list", scheduler, node, node_state, only_node, only_rsc, section_opts, show_opts); @@ -2798,7 +2827,7 @@ op_history_text(pcmk__output_t *out, va_list args) { uint32_t show_opts = va_arg(args, uint32_t); char *buf = op_history_string(xml_op, task, interval_ms_s, rc, - pcmk_is_set(show_opts, pcmk_show_timing)); + pcmk__is_set(show_opts, pcmk_show_timing)); out->list_item(out, NULL, "%s", buf); @@ -2834,7 +2863,7 @@ op_history_xml(pcmk__output_t *out, va_list args) { free(s); } - if (pcmk_is_set(show_opts, pcmk_show_timing)) { + if (pcmk__is_set(show_opts, pcmk_show_timing)) { const char *value = NULL; time_t epoch = 0; @@ -2999,10 +3028,10 @@ resource_history_xml(pcmk__output_t *out, va_list args) { static void print_resource_header(pcmk__output_t *out, uint32_t show_opts) { - if (pcmk_is_set(show_opts, pcmk_show_rscs_by_node)) { + if (pcmk__is_set(show_opts, pcmk_show_rscs_by_node)) { /* Active resources have already been printed by node */ out->begin_list(out, NULL, NULL, "Inactive Resources"); - } else if (pcmk_is_set(show_opts, pcmk_show_inactive_rscs)) { + } else if (pcmk__is_set(show_opts, pcmk_show_inactive_rscs)) { out->begin_list(out, NULL, NULL, "Full List of Resources"); } else { out->begin_list(out, NULL, NULL, "Active Resources"); @@ -3029,15 +3058,15 @@ resource_list(pcmk__output_t *out, va_list args) /* If we already showed active resources by node, and * we're not showing inactive resources, we have nothing to do */ - if (pcmk_is_set(show_opts, pcmk_show_rscs_by_node) && - !pcmk_is_set(show_opts, pcmk_show_inactive_rscs)) { + if (pcmk__is_set(show_opts, pcmk_show_rscs_by_node) + && !pcmk__is_set(show_opts, pcmk_show_inactive_rscs)) { return rc; } /* If we haven't already printed resources grouped by node, * and brief output was requested, print resource summary */ - if (pcmk_is_set(show_opts, pcmk_show_brief) - && !pcmk_is_set(show_opts, pcmk_show_rscs_by_node)) { + if (pcmk__is_set(show_opts, pcmk_show_brief) + && !pcmk__is_set(show_opts, pcmk_show_rscs_by_node)) { GList *rscs = pe__filter_rsc_list(scheduler->priv->resources, only_rsc); PCMK__OUTPUT_SPACER_IF(out, print_spacer); @@ -3060,24 +3089,26 @@ resource_list(pcmk__output_t *out, va_list args) bool partially_active = rsc->priv->fns->active(rsc, false); /* Skip inactive orphans (deleted but still in CIB) */ - if (pcmk_is_set(rsc->flags, pcmk__rsc_removed) && !is_active) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_removed) && !is_active) { continue; + } /* Skip active resources if we already displayed them by node */ - } else if (pcmk_is_set(show_opts, pcmk_show_rscs_by_node)) { + if (pcmk__is_set(show_opts, pcmk_show_rscs_by_node)) { if (is_active) { continue; } /* Skip primitives already counted in a brief summary */ - } else if (pcmk_is_set(show_opts, pcmk_show_brief) + } else if (pcmk__is_set(show_opts, pcmk_show_brief) && pcmk__is_primitive(rsc)) { continue; /* Skip resources that aren't at least partially active, * unless we're displaying inactive resources */ - } else if (!partially_active && !pcmk_is_set(show_opts, pcmk_show_inactive_rscs)) { + } else if (!partially_active + && !pcmk__is_set(show_opts, pcmk_show_inactive_rscs)) { continue; } else if (partially_active && !pe__rsc_running_on_any(rsc, only_node)) { @@ -3108,9 +3139,9 @@ resource_list(pcmk__output_t *out, va_list args) /* @FIXME It looks as if we can return pcmk_rc_no_output even after * writing output here. */ - if (pcmk_is_set(show_opts, pcmk_show_rscs_by_node)) { + if (pcmk__is_set(show_opts, pcmk_show_rscs_by_node)) { out->list_item(out, NULL, "No inactive resources"); - } else if (pcmk_is_set(show_opts, pcmk_show_inactive_rscs)) { + } else if (pcmk__is_set(show_opts, pcmk_show_inactive_rscs)) { out->list_item(out, NULL, "No resources"); } else { out->list_item(out, NULL, "No active resources"); @@ -3223,7 +3254,7 @@ resource_util_xml(pcmk__output_t *out, va_list args) static inline const char * ticket_status(pcmk__ticket_t *ticket) { - if (pcmk_is_set(ticket->flags, pcmk__ticket_granted)) { + if (pcmk__is_set(ticket->flags, pcmk__ticket_granted)) { return PCMK_VALUE_GRANTED; } return PCMK_VALUE_REVOKED; @@ -3232,7 +3263,7 @@ ticket_status(pcmk__ticket_t *ticket) static inline const char * ticket_standby_text(pcmk__ticket_t *ticket) { - return pcmk_is_set(ticket->flags, pcmk__ticket_standby)? " [standby]" : ""; + return pcmk__is_set(ticket->flags, pcmk__ticket_standby)? " [standby]" : ""; } PCMK__OUTPUT_ARGS("ticket", "pcmk__ticket_t *", "bool", "bool") diff --git a/lib/pengine/remote.c b/lib/pengine/remote.c index 96948f07e09..2da45d961a4 100644 --- a/lib/pengine/remote.c +++ b/lib/pengine/remote.c @@ -30,14 +30,14 @@ pe__resource_contains_guest_node(const pcmk_scheduler_t *scheduler, const pcmk_resource_t *rsc) { if ((rsc != NULL) && (scheduler != NULL) - && pcmk_is_set(scheduler->flags, pcmk__sched_have_remote_nodes)) { + && pcmk__is_set(scheduler->flags, pcmk__sched_have_remote_nodes)) { for (GList *gIter = rsc->priv->launched; gIter != NULL; gIter = gIter->next) { pcmk_resource_t *launched = gIter->data; - if (pcmk_is_set(launched->flags, pcmk__rsc_is_remote_connection)) { + if (pcmk__is_set(launched->flags, pcmk__rsc_is_remote_connection)) { return launched; } } @@ -90,13 +90,13 @@ pe_foreach_guest_node(const pcmk_scheduler_t *scheduler, GList *iter; CRM_CHECK(scheduler && host && host->details && helper, return); - if (!pcmk_is_set(scheduler->flags, pcmk__sched_have_remote_nodes)) { + if (!pcmk__is_set(scheduler->flags, pcmk__sched_have_remote_nodes)) { return; } for (iter = host->details->running_rsc; iter != NULL; iter = iter->next) { pcmk_resource_t *rsc = (pcmk_resource_t *) iter->data; - if (pcmk_is_set(rsc->flags, pcmk__rsc_is_remote_connection) + if (pcmk__is_set(rsc->flags, pcmk__rsc_is_remote_connection) && (rsc->priv->launcher != NULL)) { pcmk_node_t *guest_node = pcmk_find_node(scheduler, rsc->id); diff --git a/lib/pengine/status.c b/lib/pengine/status.c index 2e676319ee9..1124180c010 100644 --- a/lib/pengine/status.c +++ b/lib/pengine/status.c @@ -70,7 +70,7 @@ cluster_status(pcmk_scheduler_t * scheduler) return FALSE; } - if (pcmk_is_set(scheduler->flags, pcmk__sched_have_status)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_have_status)) { /* cluster_status() has already been called since the last time the * scheduler was reset. Unpacking the input CIB again would cause * duplication within the scheduler object's data structures. @@ -131,7 +131,7 @@ cluster_status(pcmk_scheduler_t * scheduler) section = pcmk__xpath_find_one(scheduler->input->doc, "//" PCMK_XE_RESOURCES, LOG_TRACE); - if (!pcmk_is_set(scheduler->flags, pcmk__sched_location_only)) { + if (!pcmk__is_set(scheduler->flags, pcmk__sched_location_only)) { unpack_remote_nodes(section, scheduler); } unpack_resources(section, scheduler); @@ -144,13 +144,13 @@ cluster_status(pcmk_scheduler_t * scheduler) LOG_NEVER); unpack_tags(section, scheduler); - if (!pcmk_is_set(scheduler->flags, pcmk__sched_location_only)) { + if (!pcmk__is_set(scheduler->flags, pcmk__sched_location_only)) { section = pcmk__xpath_find_one(scheduler->input->doc, "//" PCMK_XE_STATUS, LOG_TRACE); unpack_status(section, scheduler); } - if (!pcmk_is_set(scheduler->flags, pcmk__sched_no_counts)) { + if (!pcmk__is_set(scheduler->flags, pcmk__sched_no_counts)) { for (GList *item = scheduler->priv->resources; item != NULL; item = item->next) { diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c index 21ec07e2c45..4e0b3baca58 100644 --- a/lib/pengine/unpack.c +++ b/lib/pengine/unpack.c @@ -99,8 +99,8 @@ is_dangling_guest_node(pcmk_node_t *node) return pcmk__is_pacemaker_remote_node(node) && (node->priv->remote != NULL) && (node->priv->remote->priv->launcher == NULL) - && pcmk_is_set(node->priv->remote->flags, - pcmk__rsc_removed_launched); + && pcmk__is_set(node->priv->remote->flags, + pcmk__rsc_removed_launched); } /*! @@ -122,8 +122,8 @@ pe_fence_node(pcmk_scheduler_t *scheduler, pcmk_node_t *node, // Fence a guest or bundle node by marking its launcher as failed pcmk_resource_t *rsc = node->priv->remote->priv->launcher; - if (!pcmk_is_set(rsc->flags, pcmk__rsc_failed)) { - if (!pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_failed)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { crm_notice("Not fencing guest node %s " "(otherwise would because %s): " "its guest resource %s is unmanaged", @@ -155,11 +155,11 @@ pe_fence_node(pcmk_scheduler_t *scheduler, pcmk_node_t *node, } else if (pcmk__is_remote_node(node)) { pcmk_resource_t *rsc = node->priv->remote; - if ((rsc != NULL) && !pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + if ((rsc != NULL) && !pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { crm_notice("Not fencing remote node %s " "(otherwise would because %s): connection is unmanaged", pcmk__node_name(node), reason); - } else if (!pcmk_is_set(node->priv->flags, pcmk__node_remote_reset)) { + } else if (!pcmk__is_set(node->priv->flags, pcmk__node_remote_reset)) { pcmk__set_node_flags(node, pcmk__node_remote_reset); pcmk__sched_warn(scheduler, "Remote node %s %s: %s", pcmk__node_name(node), @@ -206,7 +206,7 @@ set_if_xpath(uint64_t flag, const char *xpath, pcmk_scheduler_t *scheduler) { xmlXPathObject *result = NULL; - if (!pcmk_is_set(scheduler->flags, flag)) { + if (!pcmk__is_set(scheduler->flags, flag)) { result = pcmk__xpath_search(scheduler->input->doc, xpath); if (pcmk__xpath_num_results(result) > 0) { pcmk__set_scheduler_flags(scheduler, flag); @@ -235,7 +235,7 @@ unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler) set_config_flag(scheduler, PCMK_OPT_ENABLE_STARTUP_PROBES, pcmk__sched_probe_resources); - if (!pcmk_is_set(scheduler->flags, pcmk__sched_probe_resources)) { + if (!pcmk__is_set(scheduler->flags, pcmk__sched_probe_resources)) { crm_info("Startup probes: disabled (dangerous)"); } @@ -261,7 +261,7 @@ unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler) set_config_flag(scheduler, PCMK_OPT_STONITH_ENABLED, pcmk__sched_fencing_enabled); - if (pcmk_is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { crm_debug("STONITH of failed nodes is enabled"); } else { crm_debug("STONITH of failed nodes is disabled"); @@ -273,7 +273,7 @@ unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler) set_config_flag(scheduler, PCMK_OPT_CONCURRENT_FENCING, pcmk__sched_concurrent_fencing); - if (pcmk_is_set(scheduler->flags, pcmk__sched_concurrent_fencing)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_concurrent_fencing)) { crm_debug("Concurrent fencing is enabled"); } else { crm_debug("Concurrent fencing is disabled"); @@ -294,7 +294,7 @@ unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler) set_config_flag(scheduler, PCMK_OPT_SYMMETRIC_CLUSTER, pcmk__sched_symmetric_cluster); - if (pcmk_is_set(scheduler->flags, pcmk__sched_symmetric_cluster)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_symmetric_cluster)) { crm_debug("Cluster is symmetric" " - resources can run anywhere by default"); } @@ -311,13 +311,13 @@ unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler) } else if (pcmk__strcase_any_of(value, PCMK_VALUE_FENCE, PCMK_VALUE_FENCE_LEGACY, NULL)) { - if (pcmk_is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { int do_panic = 0; pcmk__xe_get_int(scheduler->input, PCMK_XA_NO_QUORUM_PANIC, &do_panic); if (do_panic - || pcmk_is_set(scheduler->flags, pcmk__sched_quorate)) { + || pcmk__is_set(scheduler->flags, pcmk__sched_quorate)) { scheduler->no_quorum_policy = pcmk_no_quorum_fence; } else { crm_notice("Resetting " PCMK_OPT_NO_QUORUM_POLICY @@ -357,7 +357,7 @@ unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler) set_config_flag(scheduler, PCMK_OPT_STOP_ORPHAN_RESOURCES, pcmk__sched_stop_removed_resources); - if (pcmk_is_set(scheduler->flags, pcmk__sched_stop_removed_resources)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_stop_removed_resources)) { crm_trace("Orphan resources are stopped"); } else { crm_trace("Orphan resources are ignored"); @@ -365,7 +365,7 @@ unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler) set_config_flag(scheduler, PCMK_OPT_STOP_ORPHAN_ACTIONS, pcmk__sched_cancel_removed_actions); - if (pcmk_is_set(scheduler->flags, pcmk__sched_cancel_removed_actions)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_cancel_removed_actions)) { crm_trace("Orphan resource actions are stopped"); } else { crm_trace("Orphan resource actions are ignored"); @@ -378,17 +378,17 @@ unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler) set_config_flag(scheduler, PCMK_OPT_START_FAILURE_IS_FATAL, pcmk__sched_start_failure_fatal); - if (pcmk_is_set(scheduler->flags, pcmk__sched_start_failure_fatal)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_start_failure_fatal)) { crm_trace("Start failures are always fatal"); } else { crm_trace("Start failures are handled by failcount"); } - if (pcmk_is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { set_config_flag(scheduler, PCMK_OPT_STARTUP_FENCING, pcmk__sched_startup_fencing); } - if (pcmk_is_set(scheduler->flags, pcmk__sched_startup_fencing)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_startup_fencing)) { crm_trace("Unseen nodes will be fenced"); } else { pcmk__warn_once(pcmk__wo_blind, @@ -403,7 +403,7 @@ unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler) set_config_flag(scheduler, PCMK_OPT_SHUTDOWN_LOCK, pcmk__sched_shutdown_lock); - if (pcmk_is_set(scheduler->flags, pcmk__sched_shutdown_lock)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_shutdown_lock)) { value = pcmk__cluster_option(config_hash, PCMK_OPT_SHUTDOWN_LOCK_LIMIT); pcmk_parse_interval_spec(value, &(scheduler->priv->shutdown_lock_ms)); crm_trace("Resources will be locked to nodes that were cleanly " @@ -588,7 +588,7 @@ handle_startup_fencing(pcmk_scheduler_t *scheduler, pcmk_node_t *new_node) return; } - if (pcmk_is_set(scheduler->flags, pcmk__sched_startup_fencing)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_startup_fencing)) { // All nodes are unclean until we've seen their status entry new_node->details->unclean = TRUE; @@ -768,11 +768,11 @@ link_rsc2remotenode(pcmk_scheduler_t *scheduler, pcmk_resource_t *new_rsc) { pcmk_node_t *remote_node = NULL; - if (!pcmk_is_set(new_rsc->flags, pcmk__rsc_is_remote_connection)) { + if (!pcmk__is_set(new_rsc->flags, pcmk__rsc_is_remote_connection)) { return; } - if (pcmk_is_set(scheduler->flags, pcmk__sched_location_only)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_location_only)) { /* remote_nodes and remote_resources are not linked in quick location calculations */ return; } @@ -865,11 +865,11 @@ unpack_resources(const xmlNode *xml_resources, pcmk_scheduler_t *scheduler) scheduler->priv->resources = g_list_sort(scheduler->priv->resources, pe__cmp_rsc_priority); - if (pcmk_is_set(scheduler->flags, pcmk__sched_location_only)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_location_only)) { /* Ignore */ - } else if (pcmk_is_set(scheduler->flags, pcmk__sched_fencing_enabled) - && !pcmk_is_set(scheduler->flags, pcmk__sched_have_fencing)) { + } else if (pcmk__is_set(scheduler->flags, pcmk__sched_fencing_enabled) + && !pcmk__is_set(scheduler->flags, pcmk__sched_have_fencing)) { pcmk__config_err("Resource start-up disabled since no STONITH resources have been defined"); pcmk__config_err("Either configure some or disable STONITH with the " @@ -1034,7 +1034,7 @@ unpack_ticket_state(xmlNode *xml_ticket, void *userdata) standby = g_hash_table_lookup(ticket->state, PCMK_XA_STANDBY); if (pcmk__is_true(standby)) { pcmk__set_ticket_flags(ticket, pcmk__ticket_standby); - if (pcmk_is_set(ticket->flags, pcmk__ticket_granted)) { + if (pcmk__is_set(ticket->flags, pcmk__ticket_granted)) { crm_info("Granted ticket '%s' is in standby-mode", ticket->id); } } else { @@ -1074,7 +1074,7 @@ unpack_handle_remote_attrs(pcmk_node_t *this_node, const xmlNode *state, } rsc = this_node->priv->remote; - if (!pcmk_is_set(this_node->priv->flags, pcmk__node_remote_reset)) { + if (!pcmk__is_set(this_node->priv->flags, pcmk__node_remote_reset)) { this_node->details->unclean = FALSE; pcmk__set_node_flags(this_node, pcmk__node_seen); } @@ -1095,7 +1095,7 @@ unpack_handle_remote_attrs(pcmk_node_t *this_node, const xmlNode *state, if (pcmk__is_true(pcmk__node_attr(this_node, PCMK_NODE_ATTR_MAINTENANCE, NULL, pcmk__rsc_node_current)) - || ((rsc != NULL) && !pcmk_is_set(rsc->flags, pcmk__rsc_managed))) { + || ((rsc != NULL) && !pcmk__is_set(rsc->flags, pcmk__rsc_managed))) { crm_info("%s is in maintenance mode", pcmk__node_name(this_node)); this_node->details->maintenance = TRUE; } @@ -1111,7 +1111,7 @@ unpack_handle_remote_attrs(pcmk_node_t *this_node, const xmlNode *state, " (and behave as 'true') in a future release."); if (pcmk__is_remote_node(this_node) - && !pcmk_is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { + && !pcmk__is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { pcmk__config_warn("Ignoring " PCMK__NODE_ATTR_RESOURCE_DISCOVERY_ENABLED " attribute on Pacemaker Remote node %s" @@ -1250,7 +1250,7 @@ unpack_node_state(const xmlNode *state, pcmk_scheduler_t *scheduler) pcmk__node_name(this_node), id); determine_online_status(state, this_node, scheduler); - if (!pcmk_is_set(scheduler->flags, pcmk__sched_quorate) + if (!pcmk__is_set(scheduler->flags, pcmk__sched_quorate) && this_node->details->online && (scheduler->no_quorum_policy == pcmk_no_quorum_fence)) { /* Everything else should flow from this automatically @@ -1310,7 +1310,7 @@ unpack_node_history(const xmlNode *status, bool fence, continue; } - if (pcmk_is_set(this_node->priv->flags, pcmk__node_unpacked)) { + if (pcmk__is_set(this_node->priv->flags, pcmk__node_unpacked)) { crm_trace("Not unpacking resource history for node %s because " "already unpacked", id); continue; @@ -1344,7 +1344,7 @@ unpack_node_history(const xmlNode *status, bool fence, pcmk_resource_t *rsc = this_node->priv->remote; if ((rsc == NULL) - || (!pcmk_is_set(scheduler->flags, pcmk__sched_shutdown_lock) + || (!pcmk__is_set(scheduler->flags, pcmk__sched_shutdown_lock) && (rsc->priv->orig_role != pcmk_role_started))) { crm_trace("Not unpacking resource history for remote node %s " "because connection is not known to be up", id); @@ -1414,8 +1414,8 @@ unpack_status(xmlNode *status, pcmk_scheduler_t *scheduler) // Now catch any nodes we didn't see unpack_node_history(status, - pcmk_is_set(scheduler->flags, - pcmk__sched_fencing_enabled), + pcmk__is_set(scheduler->flags, + pcmk__sched_fencing_enabled), scheduler); /* Now that we know where resources are, we can schedule stops of containers @@ -1451,7 +1451,7 @@ unpack_status(xmlNode *status, pcmk_scheduler_t *scheduler) pe__set_next_role(this_node->priv->remote, pcmk_role_stopped, "remote shutdown"); } - if (!pcmk_is_set(this_node->priv->flags, pcmk__node_unpacked)) { + if (!pcmk__is_set(this_node->priv->flags, pcmk__node_unpacked)) { determine_remote_online_status(scheduler, this_node); } } @@ -1596,8 +1596,8 @@ determine_online_status_no_fencing(pcmk_scheduler_t *scheduler, pcmk__node_name(this_node), join); } - } else if (!pcmk_is_set(this_node->priv->flags, - pcmk__node_expected_up)) { + } else if (!pcmk__is_set(this_node->priv->flags, + pcmk__node_expected_up)) { crm_trace("Node %s controller is down: " "member@%lld online@%lld join=%s expected=%s", pcmk__node_name(this_node), when_member, when_online, @@ -1797,13 +1797,13 @@ determine_remote_online_status(pcmk_scheduler_t *scheduler, } /* Now check all the failure conditions. */ - if ((launcher != NULL) && pcmk_is_set(launcher->flags, pcmk__rsc_failed)) { + if ((launcher != NULL) && pcmk__is_set(launcher->flags, pcmk__rsc_failed)) { crm_trace("Guest node %s UNCLEAN because guest resource failed", this_node->priv->id); this_node->details->online = FALSE; pcmk__set_node_flags(this_node, pcmk__node_remote_reset); - } else if (pcmk_is_set(rsc->flags, pcmk__rsc_failed)) { + } else if (pcmk__is_set(rsc->flags, pcmk__rsc_failed)) { crm_trace("%s node %s OFFLINE because connection resource failed", node_type, this_node->priv->id); this_node->details->online = FALSE; @@ -1849,7 +1849,7 @@ determine_online_status(const xmlNode *node_state, pcmk_node_t *this_node, pcmk__set_node_flags(this_node, pcmk__node_expected_up); } - if (!pcmk_is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { + if (!pcmk__is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { online = determine_online_status_no_fencing(scheduler, node_state, this_node); @@ -1884,7 +1884,7 @@ determine_online_status(const xmlNode *node_state, pcmk_node_t *this_node, } else if (this_node->details->pending) { crm_info("%s is pending", pcmk__node_name(this_node)); - } else if (pcmk_is_set(this_node->priv->flags, pcmk__node_standby)) { + } else if (pcmk__is_set(this_node->priv->flags, pcmk__node_standby)) { crm_info("%s is in standby", pcmk__node_name(this_node)); } else if (this_node->details->maintenance) { @@ -2144,7 +2144,7 @@ find_anonymous_clone(pcmk_scheduler_t *scheduler, const pcmk_node_t *node, } else { pcmk__rsc_trace(parent, "Resource %s, skip inactive", child->id); if (!skip_inactive && !inactive_instance - && !pcmk_is_set(child->flags, pcmk__rsc_blocked)) { + && !pcmk__is_set(child->flags, pcmk__rsc_blocked)) { // Remember one inactive instance in case we don't find active inactive_instance = parent->priv->fns->find_rsc(child, rsc_id, NULL, @@ -2185,7 +2185,7 @@ find_anonymous_clone(pcmk_scheduler_t *scheduler, const pcmk_node_t *node, * @TODO Ideally, we'd use an inactive instance number if it is not needed * for any clean instances. However, we don't know that at this point. */ - if ((rsc != NULL) && !pcmk_is_set(rsc->flags, pcmk__rsc_needs_fencing) + if ((rsc != NULL) && !pcmk__is_set(rsc->flags, pcmk__rsc_needs_fencing) && (!node->details->online || node->details->unclean) && !pcmk__is_guest_or_bundle_node(node) && !pe__is_universal_clone(parent, scheduler)) { @@ -2219,7 +2219,9 @@ unpack_find_resource(pcmk_scheduler_t *scheduler, const pcmk_node_t *node, pcmk_resource_t *clone0 = pe_find_resource(scheduler->priv->resources, clone0_id); - if (clone0 && !pcmk_is_set(clone0->flags, pcmk__rsc_unique)) { + if ((clone0 != NULL) + && !pcmk__is_set(clone0->flags, pcmk__rsc_unique)) { + rsc = clone0; parent = uber_parent(clone0); crm_trace("%s found as %s (%s)", rsc_id, clone0_id, parent->id); @@ -2254,10 +2256,12 @@ unpack_find_resource(pcmk_scheduler_t *scheduler, const pcmk_node_t *node, if (rsc && !pcmk__str_eq(rsc_id, rsc->id, pcmk__str_none) && !pcmk__str_eq(rsc_id, rsc->priv->history_id, pcmk__str_none)) { + const bool removed = pcmk__is_set(rsc->flags, pcmk__rsc_removed); + pcmk__str_update(&(rsc->priv->history_id), rsc_id); pcmk__rsc_debug(rsc, "Internally renamed %s on %s to %s%s", rsc_id, pcmk__node_name(node), rsc->id, - pcmk_is_set(rsc->flags, pcmk__rsc_removed)? " (ORPHAN)" : ""); + (removed? " (ORPHAN)" : "")); } return rsc; } @@ -2276,7 +2280,7 @@ process_orphan_resource(const xmlNode *rsc_entry, const pcmk_node_t *node, return NULL; } - if (!pcmk_is_set(scheduler->flags, pcmk__sched_stop_removed_resources)) { + if (!pcmk__is_set(scheduler->flags, pcmk__sched_stop_removed_resources)) { pcmk__clear_rsc_flags(rsc, pcmk__rsc_managed); } else { @@ -2321,7 +2325,7 @@ process_rsc_state(pcmk_resource_t *rsc, pcmk_node_t *node, g_hash_table_insert(iter->priv->probed_nodes, (gpointer) n->priv->id, n); } - if (pcmk_is_set(iter->flags, pcmk__rsc_unique)) { + if (pcmk__is_set(iter->flags, pcmk__rsc_unique)) { break; } iter = iter->priv->parent; @@ -2330,7 +2334,7 @@ process_rsc_state(pcmk_resource_t *rsc, pcmk_node_t *node, /* If a managed resource is believed to be running, but node is down ... */ if (known_active && !node->details->online && !node->details->maintenance - && pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + && pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { gboolean should_fence = FALSE; @@ -2345,11 +2349,12 @@ process_rsc_state(pcmk_resource_t *rsc, pcmk_node_t *node, pcmk__set_rsc_flags(rsc, pcmk__rsc_failed|pcmk__rsc_stop_if_failed); should_fence = TRUE; - } else if (pcmk_is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { + } else if (pcmk__is_set(scheduler->flags, + pcmk__sched_fencing_enabled)) { if (pcmk__is_remote_node(node) && (node->priv->remote != NULL) - && !pcmk_is_set(node->priv->remote->flags, - pcmk__rsc_failed)) { + && !pcmk__is_set(node->priv->remote->flags, + pcmk__rsc_failed)) { /* Setting unseen means that fencing of the remote node will * occur only if the connection resource is not going to start @@ -2461,14 +2466,14 @@ process_rsc_state(pcmk_resource_t *rsc, pcmk_node_t *node, case pcmk__on_fail_reset_remote: pcmk__set_rsc_flags(rsc, pcmk__rsc_failed|pcmk__rsc_stop_if_failed); - if (pcmk_is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { tmpnode = NULL; - if (pcmk_is_set(rsc->flags, pcmk__rsc_is_remote_connection)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_is_remote_connection)) { tmpnode = pcmk_find_node(scheduler, rsc->id); } if (pcmk__is_remote_node(tmpnode) - && !pcmk_is_set(tmpnode->priv->flags, - pcmk__node_remote_fenced)) { + && !pcmk__is_set(tmpnode->priv->flags, + pcmk__node_remote_fenced)) { /* The remote connection resource failed in a way that * should result in fencing the remote node. */ @@ -2504,8 +2509,8 @@ process_rsc_state(pcmk_resource_t *rsc, pcmk_node_t *node, } if (known_active) { - if (pcmk_is_set(rsc->flags, pcmk__rsc_removed)) { - if (pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_removed)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { crm_notice("Removed resource %s is active on %s and will be " "stopped when possible", rsc->id, pcmk__node_name(node)); @@ -2763,7 +2768,7 @@ unpack_lrm_resource(pcmk_node_t *node, const xmlNode *lrm_resource, op_list = g_list_prepend(op_list, rsc_op); } - if (!pcmk_is_set(scheduler->flags, pcmk__sched_shutdown_lock)) { + if (!pcmk__is_set(scheduler->flags, pcmk__sched_shutdown_lock)) { if (op_list == NULL) { // If there are no operations, there is nothing to do return NULL; @@ -2783,7 +2788,7 @@ unpack_lrm_resource(pcmk_node_t *node, const xmlNode *lrm_resource, pcmk__assert(rsc != NULL); // Check whether the resource is "shutdown-locked" to this node - if (pcmk_is_set(scheduler->flags, pcmk__sched_shutdown_lock)) { + if (pcmk__is_set(scheduler->flags, pcmk__sched_shutdown_lock)) { unpack_shutdown_lock(lrm_resource, rsc, node, scheduler); } @@ -2858,7 +2863,7 @@ handle_removed_launched_resources(const xmlNode *lrm_rsc_list, rsc = pe_find_resource(scheduler->priv->resources, rsc_id); if ((rsc == NULL) || (rsc->priv->launcher != NULL) - || !pcmk_is_set(rsc->flags, pcmk__rsc_removed_launched)) { + || !pcmk__is_set(rsc->flags, pcmk__rsc_removed_launched)) { continue; } @@ -2904,7 +2909,7 @@ unpack_node_lrm(pcmk_node_t *node, const xmlNode *xml, pcmk_resource_t *rsc = unpack_lrm_resource(node, rsc_entry, scheduler); if ((rsc != NULL) - && pcmk_is_set(rsc->flags, pcmk__rsc_removed_launched)) { + && pcmk__is_set(rsc->flags, pcmk__rsc_removed_launched)) { found_removed_launched_resource = true; } } @@ -2922,7 +2927,7 @@ set_active(pcmk_resource_t *rsc) { const pcmk_resource_t *top = pe__const_top_resource(rsc, false); - if (top && pcmk_is_set(top->flags, pcmk__rsc_promotable)) { + if ((top != NULL) && pcmk__is_set(top->flags, pcmk__rsc_promotable)) { rsc->priv->orig_role = pcmk_role_unpromoted; } else { rsc->priv->orig_role = pcmk_role_started; @@ -3642,7 +3647,7 @@ unpack_rsc_op_failure(struct action_history *history, is_probe = pcmk_xe_is_probe(history->xml); last_change_s = last_change_str(history->xml); - if (!pcmk_is_set(scheduler->flags, pcmk__sched_symmetric_cluster) + if (!pcmk__is_set(scheduler->flags, pcmk__sched_symmetric_cluster) && (history->exit_status == PCMK_OCF_NOT_INSTALLED)) { crm_trace("Unexpected result (%s%s%s) was recorded for " "%s of %s on %s at %s " QB_XS " exit-status=%d id=%s", @@ -3937,7 +3942,7 @@ remap_operation(struct action_history *history, case PCMK_OCF_NOT_RUNNING: if (is_probe || (history->expected_exit_status == history->exit_status) - || !pcmk_is_set(history->rsc->flags, pcmk__rsc_managed)) { + || !pcmk__is_set(history->rsc->flags, pcmk__rsc_managed)) { /* For probes, recurring monitors for the Stopped role, and * unmanaged resources, "not running" is not considered a @@ -4110,16 +4115,16 @@ should_ignore_failure_timeout(const pcmk_resource_t *rsc, const char *task, * if the remote node hasn't been fenced. */ if ((rsc->priv->remote_reconnect_ms > 0U) - && pcmk_is_set(rsc->priv->scheduler->flags, - pcmk__sched_fencing_enabled) + && pcmk__is_set(rsc->priv->scheduler->flags, + pcmk__sched_fencing_enabled) && (interval_ms != 0) && pcmk__str_eq(task, PCMK_ACTION_MONITOR, pcmk__str_casei)) { pcmk_node_t *remote_node = pcmk_find_node(rsc->priv->scheduler, rsc->id); - if (remote_node && !pcmk_is_set(remote_node->priv->flags, - pcmk__node_remote_fenced)) { + if (remote_node && !pcmk__is_set(remote_node->priv->flags, + pcmk__node_remote_fenced)) { if (is_last_failure) { crm_info("Waiting to clear monitor failure for remote node %s" " until fencing has occurred", rsc->id); @@ -4252,7 +4257,7 @@ check_operation_expiry(struct action_history *history) clear_op = pe__clear_failcount(history->rsc, history->node, clear_reason, scheduler); - if (pcmk_is_set(scheduler->flags, pcmk__sched_fencing_enabled) + if (pcmk__is_set(scheduler->flags, pcmk__sched_fencing_enabled) && (history->rsc->priv->remote_reconnect_ms > 0)) { /* If we're clearing a remote connection due to a reconnect * interval, we want to wait until any scheduled fencing @@ -4552,7 +4557,7 @@ mask_probe_failure(struct action_history *history, int orig_exit_status, { pcmk_resource_t *ban_rsc = history->rsc; - if (!pcmk_is_set(history->rsc->flags, pcmk__rsc_unique)) { + if (!pcmk__is_set(history->rsc->flags, pcmk__rsc_unique)) { ban_rsc = uber_parent(history->rsc); } @@ -4764,7 +4769,7 @@ unpack_rsc_op(pcmk_resource_t *rsc, pcmk_node_t *node, xmlNode *xml_op, goto done; } - if (!pcmk_is_set(rsc->flags, pcmk__rsc_unique)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_unique)) { parent = uber_parent(rsc); } @@ -4800,8 +4805,8 @@ unpack_rsc_op(pcmk_resource_t *rsc, pcmk_node_t *node, xmlNode *xml_op, case PCMK_EXEC_NOT_CONNECTED: if (pcmk__is_pacemaker_remote_node(node) - && pcmk_is_set(node->priv->remote->flags, - pcmk__rsc_managed)) { + && pcmk__is_set(node->priv->remote->flags, + pcmk__rsc_managed)) { /* We should never get into a situation where a managed remote * connection resource is considered OK but a resource action * behind the connection gets a "not connected" status. But as a @@ -5083,7 +5088,7 @@ find_operations(const char *rsc, const char *node, gboolean active_filter, } if (this_node->details->online - || pcmk_is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { + || pcmk__is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { /* offline nodes run no resources... * unless stonith is enabled in which case we need to * make sure rsc start events happen after the stonith diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c index a5283d44f17..1e400a52274 100644 --- a/lib/pengine/utils.c +++ b/lib/pengine/utils.c @@ -50,13 +50,13 @@ pe_can_fence(const pcmk_scheduler_t *scheduler, const pcmk_node_t *node) } return true; - } else if (!pcmk_is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { + } else if (!pcmk__is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { return false; /* Turned off */ - } else if (!pcmk_is_set(scheduler->flags, pcmk__sched_have_fencing)) { + } else if (!pcmk__is_set(scheduler->flags, pcmk__sched_have_fencing)) { return false; /* No devices */ - } else if (pcmk_is_set(scheduler->flags, pcmk__sched_quorate)) { + } else if (pcmk__is_set(scheduler->flags, pcmk__sched_quorate)) { return true; } else if (scheduler->no_quorum_policy == pcmk_no_quorum_ignore) { @@ -253,7 +253,7 @@ pe__show_node_scores_as(const char *file, const char *function, int line, const char *comment, GHashTable *nodes, pcmk_scheduler_t *scheduler) { - if ((rsc != NULL) && pcmk_is_set(rsc->flags, pcmk__rsc_removed)) { + if ((rsc != NULL) && pcmk__is_set(rsc->flags, pcmk__rsc_removed)) { // Don't show allocation scores for orphans return; } @@ -327,7 +327,7 @@ resource_node_score(pcmk_resource_t *rsc, const pcmk_node_t *node, int score, { pcmk_node_t *match = NULL; - if ((pcmk_is_set(rsc->flags, pcmk__rsc_exclusive_probes) + if ((pcmk__is_set(rsc->flags, pcmk__rsc_exclusive_probes) || (node->assign->probe_mode == pcmk__probe_never)) && pcmk__str_eq(tag, "symmetric_default", pcmk__str_casei)) { /* This string comparision may be fragile, but exclusive resources and @@ -426,8 +426,8 @@ get_target_role(const pcmk_resource_t *rsc, enum rsc_role_e *role) return FALSE; } else if (local_role > pcmk_role_started) { - if (pcmk_is_set(pe__const_top_resource(rsc, false)->flags, - pcmk__rsc_promotable)) { + if (pcmk__is_set(pe__const_top_resource(rsc, false)->flags, + pcmk__rsc_promotable)) { if (local_role > pcmk_role_unpromoted) { /* This is what we'd do anyway, just leave the default to avoid messing up the placement algorithm */ return FALSE; @@ -546,7 +546,7 @@ ticket_new(const char *ticket_id, pcmk_scheduler_t *scheduler) const char * rsc_printable_id(const pcmk_resource_t *rsc) { - if (pcmk_is_set(rsc->flags, pcmk__rsc_unique)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_unique)) { return rsc->id; } return pcmk__xe_id(rsc->priv->xml); @@ -594,12 +594,12 @@ void trigger_unfencing(pcmk_resource_t *rsc, pcmk_node_t *node, const char *reason, pcmk_action_t *dependency, pcmk_scheduler_t *scheduler) { - if (!pcmk_is_set(scheduler->flags, pcmk__sched_enable_unfencing)) { + if (!pcmk__is_set(scheduler->flags, pcmk__sched_enable_unfencing)) { /* No resources require it */ return; } else if ((rsc != NULL) - && !pcmk_is_set(rsc->flags, pcmk__rsc_fence_device)) { + && !pcmk__is_set(rsc->flags, pcmk__rsc_fence_device)) { /* Wasn't a stonith device */ return; @@ -704,8 +704,8 @@ pe__resource_is_disabled(const pcmk_resource_t *rsc) if ((target_role_e == pcmk_role_stopped) || ((target_role_e == pcmk_role_unpromoted) - && pcmk_is_set(pe__const_top_resource(rsc, false)->flags, - pcmk__rsc_promotable))) { + && pcmk__is_set(pe__const_top_resource(rsc, false)->flags, + pcmk__rsc_promotable))) { return true; } } diff --git a/lib/services/services.c b/lib/services/services.c index 1141c14b64e..d1055951022 100644 --- a/lib/services/services.c +++ b/lib/services/services.c @@ -190,7 +190,7 @@ required_argument_missing(uint32_t ra_caps, const char *name, return true; } - if (pcmk_is_set(ra_caps, pcmk_ra_cap_provider) + if (pcmk__is_set(ra_caps, pcmk_ra_cap_provider) && pcmk__str_empty(provider)) { crm_info("Cannot create operation for %s resource %s " "without provider (bug?)", standard, name); @@ -232,7 +232,7 @@ copy_action_arguments(svc_action_t *op, uint32_t ra_caps, const char *name, return ENOMEM; } - if (pcmk_is_set(ra_caps, pcmk_ra_cap_status) + if (pcmk__is_set(ra_caps, pcmk_ra_cap_status) && pcmk__str_eq(action, PCMK_ACTION_MONITOR, pcmk__str_casei)) { action = PCMK_ACTION_STATUS; } @@ -241,7 +241,7 @@ copy_action_arguments(svc_action_t *op, uint32_t ra_caps, const char *name, return ENOMEM; } - if (pcmk_is_set(ra_caps, pcmk_ra_cap_provider)) { + if (pcmk__is_set(ra_caps, pcmk_ra_cap_provider)) { op->provider = strdup(provider); if (op->provider == NULL) { return ENOMEM; @@ -276,7 +276,7 @@ services__create_resource_action(const char *name, const char *standard, op->sequence = ++operations; // Take ownership of params - if (pcmk_is_set(ra_caps, pcmk_ra_cap_params)) { + if (pcmk__is_set(ra_caps, pcmk_ra_cap_params)) { op->params = params; } else if (params != NULL) { g_hash_table_destroy(params); @@ -867,8 +867,8 @@ services_action_async_fork_notify(svc_action_t * op, g_hash_table_replace(recurring_actions, op->id, op); } - if (!pcmk_is_set(op->flags, SVC_ACTION_NON_BLOCKED) - && op->rsc && is_op_blocked(op->rsc)) { + if (!pcmk__is_set(op->flags, SVC_ACTION_NON_BLOCKED) + && (op->rsc != NULL) && is_op_blocked(op->rsc)) { blocked_ops = g_list_append(blocked_ops, op); return TRUE; } @@ -1066,7 +1066,7 @@ resources_list_standards(void) GList * resources_list_providers(const char *standard) { - if (pcmk_is_set(pcmk_get_ra_caps(standard), pcmk_ra_cap_provider)) { + if (pcmk__is_set(pcmk_get_ra_caps(standard), pcmk_ra_cap_provider)) { return resources_os_list_ocf_providers(); } @@ -1146,7 +1146,8 @@ resources_agent_exists(const char *standard, const char *provider, const char *a rc = FALSE; - has_providers = pcmk_is_set(pcmk_get_ra_caps(standard), pcmk_ra_cap_provider); + has_providers = pcmk__is_set(pcmk_get_ra_caps(standard), + pcmk_ra_cap_provider); if (has_providers == TRUE && provider != NULL) { providers = resources_list_providers(standard); for (iter = providers; iter != NULL; iter = iter->next) { diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c index c1b5303cb61..309ad9987d6 100644 --- a/lib/services/services_linux.c +++ b/lib/services/services_linux.c @@ -1245,7 +1245,7 @@ services__execute_file(svc_action_t *op) goto done; } - if (pcmk_is_set(pcmk_get_ra_caps(op->standard), pcmk_ra_cap_stdin)) { + if (pcmk__is_set(pcmk_get_ra_caps(op->standard), pcmk_ra_cap_stdin)) { if (pipe(stdin_fd) < 0) { rc = errno; @@ -1377,9 +1377,14 @@ services__execute_file(svc_action_t *op) } crm_trace("Waiting async for '%s'[%d]", op->opaque->exec, op->pid); - mainloop_child_add_with_flags(op->pid, op->timeout, op->id, op, - pcmk_is_set(op->flags, SVC_ACTION_LEAVE_GROUP)? mainloop_leave_pid_group : 0, - async_action_complete); + if (pcmk__is_set(op->flags, SVC_ACTION_LEAVE_GROUP)) { + mainloop_child_add_with_flags(op->pid, op->timeout, op->id, op, + mainloop_leave_pid_group, + async_action_complete); + } else { + mainloop_child_add_with_flags(op->pid, op->timeout, op->id, op, 0, + async_action_complete); + } op->opaque->stdout_gsource = mainloop_add_fd(op->id, G_PRIORITY_LOW, diff --git a/tools/cibadmin.c b/tools/cibadmin.c index 9ebd9d0bc8d..05f02571571 100644 --- a/tools/cibadmin.c +++ b/tools/cibadmin.c @@ -76,7 +76,7 @@ print_xml_output(xmlNode * xml) return; } - if (pcmk_is_set(options.cmd_options, cib_xpath_address)) { + if (pcmk__is_set(options.cmd_options, cib_xpath_address)) { const char *id = pcmk__xe_get(xml, PCMK_XA_ID); if (pcmk__xe_is(xml, PCMK__XE_XPATH_QUERY)) { diff --git a/tools/crm_mon.c b/tools/crm_mon.c index 3d26f03ddf8..a07fab96edd 100644 --- a/tools/crm_mon.c +++ b/tools/crm_mon.c @@ -1091,7 +1091,7 @@ detect_user_input(GIOChannel *channel, GIOCondition condition, gpointer user_dat break; case 'o': show ^= pcmk_section_operations; - if (!pcmk_is_set(show, pcmk_section_operations)) { + if (!pcmk__is_set(show, pcmk_section_operations)) { show_opts &= ~pcmk_show_timing; } break; @@ -1103,7 +1103,7 @@ detect_user_input(GIOChannel *channel, GIOCondition condition, gpointer user_dat break; case 't': show_opts ^= pcmk_show_timing; - if (pcmk_is_set(show_opts, pcmk_show_timing)) { + if (pcmk__is_set(show_opts, pcmk_show_timing)) { show |= pcmk_section_operations; } break; @@ -1144,18 +1144,24 @@ detect_user_input(GIOChannel *channel, GIOCondition condition, gpointer user_dat refresh(); curses_formatted_printf(out, "%s", "Display option change mode\n"); - print_option_help(out, 'c', pcmk_is_set(show, pcmk_section_tickets)); - print_option_help(out, 'f', pcmk_is_set(show, pcmk_section_failcounts)); - print_option_help(out, 'n', pcmk_is_set(show_opts, pcmk_show_rscs_by_node)); - print_option_help(out, 'o', pcmk_is_set(show, pcmk_section_operations)); - print_option_help(out, 'r', pcmk_is_set(show_opts, pcmk_show_inactive_rscs)); - print_option_help(out, 't', pcmk_is_set(show_opts, pcmk_show_timing)); - print_option_help(out, 'A', pcmk_is_set(show, pcmk_section_attributes)); - print_option_help(out, 'L', pcmk_is_set(show, pcmk_section_bans)); - print_option_help(out, 'D', !pcmk_is_set(show, pcmk_section_summary)); - print_option_help(out, 'R', pcmk_any_flags_set(show_opts, pcmk_show_details)); - print_option_help(out, 'b', pcmk_is_set(show_opts, pcmk_show_brief)); - print_option_help(out, 'j', pcmk_is_set(show_opts, pcmk_show_pending)); + print_option_help(out, 'c', pcmk__is_set(show, pcmk_section_tickets)); + print_option_help(out, 'f', + pcmk__is_set(show, pcmk_section_failcounts)); + print_option_help(out, 'n', + pcmk__is_set(show_opts, pcmk_show_rscs_by_node)); + print_option_help(out, 'o', + pcmk__is_set(show, pcmk_section_operations)); + print_option_help(out, 'r', + pcmk__is_set(show_opts, pcmk_show_inactive_rscs)); + print_option_help(out, 't', pcmk__is_set(show_opts, pcmk_show_timing)); + print_option_help(out, 'A', + pcmk__is_set(show, pcmk_section_attributes)); + print_option_help(out, 'L', pcmk__is_set(show, pcmk_section_bans)); + print_option_help(out, 'D', !pcmk__is_set(show, pcmk_section_summary)); + print_option_help(out, 'R', + pcmk_any_flags_set(show_opts, pcmk_show_details)); + print_option_help(out, 'b', pcmk__is_set(show_opts, pcmk_show_brief)); + print_option_help(out, 'j', pcmk__is_set(show_opts, pcmk_show_pending)); curses_formatted_printf(out, "%d m: \t%s\n", interactive_fence_level, get_option_desc('m')); curses_formatted_printf(out, "%s", "\nToggle fields via field letter, type any other key to return\n"); } @@ -1559,7 +1565,7 @@ main(int argc, char **argv) */ if (pcmk_all_flags_set(show, pcmk_section_fencing_all)) { interactive_fence_level = 3; - } else if (pcmk_is_set(show, pcmk_section_fence_worked)) { + } else if (pcmk__is_set(show, pcmk_section_fence_worked)) { interactive_fence_level = 2; } else if (pcmk_any_flags_set(show, pcmk_section_fence_failed | pcmk_section_fence_pending)) { interactive_fence_level = 1; @@ -1605,7 +1611,9 @@ main(int argc, char **argv) scheduler = pcmk_new_scheduler(); pcmk__mem_assert(scheduler); scheduler->priv->out = out; - if ((cib->variant == cib_native) && pcmk_is_set(show, pcmk_section_times)) { + if ((cib->variant == cib_native) + && pcmk__is_set(show, pcmk_section_times)) { + // Currently used only in the times section pcmk__query_node_name(out, 0, &(scheduler->priv->local_node_name), 0); } diff --git a/tools/crm_mon_curses.c b/tools/crm_mon_curses.c index 0654322cbe4..c3d46b5684c 100644 --- a/tools/crm_mon_curses.c +++ b/tools/crm_mon_curses.c @@ -430,11 +430,11 @@ static int cluster_maint_mode_console(pcmk__output_t *out, va_list args) { uint64_t flags = va_arg(args, uint64_t); - if (pcmk_is_set(flags, pcmk__sched_in_maintenance)) { + if (pcmk__is_set(flags, pcmk__sched_in_maintenance)) { curses_formatted_printf(out, "\n *** Resource management is DISABLED ***\n"); curses_formatted_printf(out, " The cluster will not attempt to start, stop or recover services\n"); return pcmk_rc_ok; - } else if (pcmk_is_set(flags, pcmk__sched_stop_all)) { + } else if (pcmk__is_set(flags, pcmk__sched_stop_all)) { curses_formatted_printf(out, "\n *** Resource management is DISABLED ***\n"); curses_formatted_printf(out, " The cluster will keep all resources stopped\n"); return pcmk_rc_ok; diff --git a/tools/crm_resource.c b/tools/crm_resource.c index 969a898ebdb..5df18f6e9d0 100644 --- a/tools/crm_resource.c +++ b/tools/crm_resource.c @@ -867,7 +867,7 @@ ban_or_move(pcmk__output_t *out, pcmk_resource_t *rsc, cib_t *cib_conn, move_lifetime, cib_conn, options.promoted_role_only, PCMK_ROLE_PROMOTED); - } else if (pcmk_is_set(rsc->flags, pcmk__rsc_promotable)) { + } else if (pcmk__is_set(rsc->flags, pcmk__rsc_promotable)) { int count = 0; GList *iter = NULL; @@ -2204,7 +2204,7 @@ main(int argc, char **argv) } // Ensure --resource is set if it's required - if (pcmk_is_set(command_info->flags, crm_rsc_requires_resource) + if (pcmk__is_set(command_info->flags, crm_rsc_requires_resource) && !has_cmdline_config() && !options.clear_expired && (options.rsc_id == NULL)) { @@ -2216,7 +2216,7 @@ main(int argc, char **argv) } // Ensure --node is set if it's required - if (pcmk_is_set(command_info->flags, crm_rsc_requires_node) + if (pcmk__is_set(command_info->flags, crm_rsc_requires_node) && (options.host_uname == NULL)) { exit_code = CRM_EX_USAGE; @@ -2226,7 +2226,7 @@ main(int argc, char **argv) } // Establish a connection to the CIB if needed - if (pcmk_is_set(command_info->flags, crm_rsc_requires_cib) + if (pcmk__is_set(command_info->flags, crm_rsc_requires_cib) && !has_cmdline_config()) { cib_conn = cib_new(); @@ -2247,7 +2247,7 @@ main(int argc, char **argv) } // Populate scheduler data from CIB query if needed - if (pcmk_is_set(command_info->flags, crm_rsc_requires_scheduler) + if (pcmk__is_set(command_info->flags, crm_rsc_requires_scheduler) && !has_cmdline_config()) { rc = initialize_scheduler_data(&scheduler, cib_conn, out, @@ -2259,7 +2259,7 @@ main(int argc, char **argv) } // Establish a connection to the controller if needed - if (pcmk_is_set(command_info->flags, crm_rsc_requires_controller) + if (pcmk__is_set(command_info->flags, crm_rsc_requires_controller) && (getenv("CIB_file") == NULL)) { rc = pcmk_new_ipc_api(&controld_api, pcmk_ipc_controld); @@ -2311,13 +2311,13 @@ main(int argc, char **argv) * @TODO Consider stricter validation. See comment above for --node. * @TODO Setter macro for tracing? */ - if (pcmk_is_set(command_info->flags, crm_rsc_find_match_anon_basename)) { + if (pcmk__is_set(command_info->flags, crm_rsc_find_match_anon_basename)) { find_flags |= pcmk_rsc_match_anon_basename; } - if (pcmk_is_set(command_info->flags, crm_rsc_find_match_basename)) { + if (pcmk__is_set(command_info->flags, crm_rsc_find_match_basename)) { find_flags |= pcmk_rsc_match_basename; } - if (pcmk_is_set(command_info->flags, crm_rsc_find_match_history)) { + if (pcmk__is_set(command_info->flags, crm_rsc_find_match_history)) { find_flags |= pcmk_rsc_match_history; } if ((find_flags != 0) && (options.rsc_id != NULL)) { @@ -2332,7 +2332,7 @@ main(int argc, char **argv) goto done; } - if (pcmk_is_set(command_info->flags, crm_rsc_rejects_clone_instance) + if (pcmk__is_set(command_info->flags, crm_rsc_rejects_clone_instance) && pcmk__is_clone(rsc->priv->parent) && (strchr(options.rsc_id, ':') != NULL)) { diff --git a/tools/crm_resource_print.c b/tools/crm_resource_print.c index 55a6ee23c53..aab305fa664 100644 --- a/tools/crm_resource_print.c +++ b/tools/crm_resource_print.c @@ -62,7 +62,7 @@ cli_resource_print_cts(pcmk_resource_t *rsc, pcmk__output_t *out) const char *rclass = pcmk__xe_get(rsc->priv->xml, PCMK_XA_CLASS); pcmk_node_t *node = pcmk__current_node(rsc); - if (pcmk_is_set(rsc->flags, pcmk__rsc_fence_device)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_fence_device)) { needs_quorum = FALSE; } else { // @TODO check requires in resource meta-data and rsc_defaults @@ -508,27 +508,27 @@ resource_check_list_default(pcmk__output_t *out, va_list args) { out->begin_list(out, NULL, NULL, "Resource Checks"); - if (pcmk_is_set(checks->flags, rsc_remain_stopped)) { + if (pcmk__is_set(checks->flags, rsc_remain_stopped)) { out->list_item(out, "check", "Configuration specifies '%s' should remain stopped", parent->id); } - if (pcmk_is_set(checks->flags, rsc_unpromotable)) { + if (pcmk__is_set(checks->flags, rsc_unpromotable)) { out->list_item(out, "check", "Configuration specifies '%s' should not be promoted", parent->id); } - if (pcmk_is_set(checks->flags, rsc_unmanaged)) { + if (pcmk__is_set(checks->flags, rsc_unmanaged)) { out->list_item(out, "check", "Configuration prevents cluster from stopping or starting unmanaged '%s'", parent->id); } - if (pcmk_is_set(checks->flags, rsc_locked)) { + if (pcmk__is_set(checks->flags, rsc_locked)) { out->list_item(out, "check", "'%s' is locked to node %s due to shutdown", parent->id, checks->lock_node); } - if (pcmk_is_set(checks->flags, rsc_node_health)) { + if (pcmk__is_set(checks->flags, rsc_node_health)) { out->list_item(out, "check", "'%s' cannot run on unhealthy nodes due to " PCMK_OPT_NODE_HEALTH_STRATEGY "='%s'", @@ -552,23 +552,23 @@ resource_check_list_xml(pcmk__output_t *out, va_list args) { PCMK_XA_ID, parent->id, NULL); - if (pcmk_is_set(checks->flags, rsc_remain_stopped)) { + if (pcmk__is_set(checks->flags, rsc_remain_stopped)) { pcmk__xe_set_bool_attr(node, PCMK_XA_REMAIN_STOPPED, true); } - if (pcmk_is_set(checks->flags, rsc_unpromotable)) { + if (pcmk__is_set(checks->flags, rsc_unpromotable)) { pcmk__xe_set_bool_attr(node, PCMK_XA_PROMOTABLE, false); } - if (pcmk_is_set(checks->flags, rsc_unmanaged)) { + if (pcmk__is_set(checks->flags, rsc_unmanaged)) { pcmk__xe_set_bool_attr(node, PCMK_XA_UNMANAGED, true); } - if (pcmk_is_set(checks->flags, rsc_locked)) { + if (pcmk__is_set(checks->flags, rsc_locked)) { pcmk__xe_set(node, PCMK_XA_LOCKED_TO_HYPHEN, checks->lock_node); } - if (pcmk_is_set(checks->flags, rsc_node_health)) { + if (pcmk__is_set(checks->flags, rsc_node_health)) { pcmk__xe_set_bool_attr(node, PCMK_XA_UNHEALTHY, true); } diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c index bc0f6a72651..b5160a13ba4 100644 --- a/tools/crm_resource_runtime.c +++ b/tools/crm_resource_runtime.c @@ -56,7 +56,7 @@ prepend_node_info(gpointer data, gpointer user_data) ni = pcmk__assert_alloc(1, sizeof(node_info_t)); ni->node_name = node->priv->name; - ni->promoted = pcmk_is_set(rni->rsc->flags, pcmk__rsc_promotable) + ni->promoted = pcmk__is_set(rni->rsc->flags, pcmk__rsc_promotable) && (rni->rsc->priv->fns->state(rni->rsc, true) == pcmk_role_promoted); @@ -81,7 +81,7 @@ cli_resource_search(const pcmk_resource_t *rsc, const char *requested_name) const pcmk_resource_t *parent = pe__const_top_resource(rsc, false); if (pcmk__is_clone(parent) - && !pcmk_is_set(rsc->flags, pcmk__rsc_unique) + && !pcmk__is_set(rsc->flags, pcmk__rsc_unique) && (rsc->priv->history_id != NULL) && pcmk__str_eq(requested_name, rsc->priv->history_id, pcmk__str_none) @@ -550,7 +550,7 @@ update_attribute(pcmk_resource_t *rsc, const char *requested_name, crm_debug("Checking %s %d", cons->id, cons->score); - if (pcmk_is_set(cons->dependent->flags, pcmk__rsc_detect_loop) + if (pcmk__is_set(cons->dependent->flags, pcmk__rsc_detect_loop) || (cons->score <= 0)) { continue; } @@ -810,7 +810,7 @@ rsc_fail_name(const pcmk_resource_t *rsc) { const char *name = pcmk__s(rsc->priv->history_id, rsc->id); - if (pcmk_is_set(rsc->flags, pcmk__rsc_unique)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_unique)) { return strdup(name); } return clone_strip(name); @@ -1004,7 +1004,7 @@ cli_resource_delete(pcmk_ipc_api_t *controld_api, pcmk_resource_t *rsc, if (force) { nodes = g_list_copy(scheduler->nodes); - } else if (pcmk_is_set(rsc->flags, pcmk__rsc_exclusive_probes)) { + } else if (pcmk__is_set(rsc->flags, pcmk__rsc_exclusive_probes)) { GHashTableIter iter; g_hash_table_iter_init(&iter, rsc->priv->allowed_nodes); @@ -1038,7 +1038,7 @@ cli_resource_delete(pcmk_ipc_api_t *controld_api, pcmk_resource_t *rsc, return rc; } - if (!pcmk_is_set(node->priv->flags, pcmk__node_probes_allowed)) { + if (!pcmk__is_set(node->priv->flags, pcmk__node_probes_allowed)) { out->err(out, "Unable to clean up %s because resource discovery disabled on " "%s", @@ -1158,8 +1158,8 @@ check_role(resource_checks_t *checks) break; case pcmk_role_unpromoted: - if (pcmk_is_set(pe__const_top_resource(checks->rsc, false)->flags, - pcmk__rsc_promotable)) { + if (pcmk__is_set(pe__const_top_resource(checks->rsc, false)->flags, + pcmk__rsc_promotable)) { checks->flags |= rsc_unpromotable; } break; @@ -1735,7 +1735,7 @@ cli_resource_restart(pcmk__output_t *out, pcmk_resource_t *rsc, return ENXIO; } - if (!pcmk_is_set(rsc->flags, pcmk__rsc_managed)) { + if (!pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { out->err(out, "Unmanaged resources cannot be restarted."); return EAGAIN; } @@ -2022,7 +2022,7 @@ action_is_pending(const pcmk_action_t *action) { if (pcmk_any_flags_set(action->flags, pcmk__action_optional|pcmk__action_pseudo) - || !pcmk_is_set(action->flags, pcmk__action_runnable) + || !pcmk__is_set(action->flags, pcmk__action_runnable) || pcmk__str_eq(PCMK_ACTION_NOTIFY, action->task, pcmk__str_casei)) { return false; } @@ -2309,7 +2309,7 @@ cli_resource_execute_from_params(pcmk__output_t *out, const char *rsc_name, } #endif - if (!pcmk_is_set(pcmk_get_ra_caps(class), pcmk_ra_cap_cli_exec)) { + if (!pcmk__is_set(pcmk_get_ra_caps(class), pcmk_ra_cap_cli_exec)) { services__format_result(op, CRM_EX_UNIMPLEMENT_FEATURE, PCMK_EXEC_ERROR, "Manual execution of the %s standard is " "unsupported", pcmk__s(class, "unspecified")); @@ -2455,11 +2455,11 @@ cli_resource_move(pcmk_resource_t *rsc, const char *rsc_id, out = scheduler->priv->out; if (promoted_role_only - && !pcmk_is_set(rsc->flags, pcmk__rsc_promotable)) { + && !pcmk__is_set(rsc->flags, pcmk__rsc_promotable)) { pcmk_resource_t *p = uber_parent(rsc); - if (pcmk_is_set(p->flags, pcmk__rsc_promotable)) { + if (pcmk__is_set(p->flags, pcmk__rsc_promotable)) { /* @TODO This is dead code. If rsc is part of a promotable clone, * then it has the pcmk__rsc_promotable flag set. * @@ -2491,7 +2491,7 @@ cli_resource_move(pcmk_resource_t *rsc, const char *rsc_id, current = pe__find_active_requires(rsc, &count); - if (pcmk_is_set(rsc->flags, pcmk__rsc_promotable)) { + if (pcmk__is_set(rsc->flags, pcmk__rsc_promotable)) { unsigned int promoted_count = 0; pcmk_node_t *promoted_node = NULL; diff --git a/tools/crm_shadow.c b/tools/crm_shadow.c index c7331794006..cb88b2053b3 100644 --- a/tools/crm_shadow.c +++ b/tools/crm_shadow.c @@ -158,13 +158,13 @@ shadow_default(pcmk__output_t *out, va_list args) int rc = pcmk_rc_no_output; - if (pcmk_is_set(flags, shadow_disp_instance)) { + if (pcmk__is_set(flags, shadow_disp_instance)) { rc = out->info(out, "Instance: %s", pcmk__s(instance, "")); } - if (pcmk_is_set(flags, shadow_disp_file)) { + if (pcmk__is_set(flags, shadow_disp_file)) { rc = out->info(out, "File name: %s", pcmk__s(filename, "")); } - if (pcmk_is_set(flags, shadow_disp_content)) { + if (pcmk__is_set(flags, shadow_disp_content)) { rc = out->info(out, "Content:"); if (content != NULL) { @@ -185,7 +185,7 @@ shadow_default(pcmk__output_t *out, va_list args) out->info(out, ""); } } - if (pcmk_is_set(flags, shadow_disp_diff)) { + if (pcmk__is_set(flags, shadow_disp_diff)) { rc = out->info(out, "Diff:"); if (diff != NULL) { @@ -237,13 +237,13 @@ shadow_text(pcmk__output_t *out, va_list args) */ out->quiet = false; - if (pcmk_is_set(flags, shadow_disp_instance) && (instance != NULL)) { + if (pcmk__is_set(flags, shadow_disp_instance) && (instance != NULL)) { rc = out->info(out, "%s", instance); } - if (pcmk_is_set(flags, shadow_disp_file) && (filename != NULL)) { + if (pcmk__is_set(flags, shadow_disp_file) && (filename != NULL)) { rc = out->info(out, "%s", filename); } - if (pcmk_is_set(flags, shadow_disp_content) && (content != NULL)) { + if (pcmk__is_set(flags, shadow_disp_content) && (content != NULL)) { GString *buf = g_string_sized_new(1024); gchar *str = NULL; @@ -255,7 +255,7 @@ shadow_text(pcmk__output_t *out, va_list args) rc = out->info(out, "%s", str); g_free(str); } - if (pcmk_is_set(flags, shadow_disp_diff) && (diff != NULL)) { + if (pcmk__is_set(flags, shadow_disp_diff) && (diff != NULL)) { rc = out->message(out, "xml-patchset", diff); } diff --git a/tools/crm_simulate.c b/tools/crm_simulate.c index dcbc8c33be3..de47ed6adf5 100644 --- a/tools/crm_simulate.c +++ b/tools/crm_simulate.c @@ -491,8 +491,9 @@ main(int argc, char **argv) goto done; } - if (pcmk__str_eq(args->output_ty, "text", pcmk__str_null_matches) && - !(pcmk_is_set(options.flags, pcmk_sim_show_scores) && args->quiet)) { + if (pcmk__str_eq(args->output_ty, "text", pcmk__str_null_matches) + && !(pcmk__is_set(options.flags, pcmk_sim_show_scores) + && args->quiet)) { pcmk__output_text_set_fancy(out, true); } From 832d6c72a8812927fd15106a33b4e7e01331a451 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Sun, 23 Mar 2025 15:01:24 -0700 Subject: [PATCH 121/186] API: libcrmcommon: Deprecate pcmk_is_set() This was kept as part of public API in commit b751e77e only so that it could be used inside other public macros and inline functions. However, currently it is not used in those capacities. Signed-off-by: Reid Wahl --- include/crm/common/util.h | 7 +------ include/crm/common/util_compat.h | 3 +++ 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/include/crm/common/util.h b/include/crm/common/util.h index d656c54b673..2eb1923f1cc 100644 --- a/include/crm/common/util.h +++ b/include/crm/common/util.h @@ -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. * @@ -74,11 +74,6 @@ pcmk_all_flags_set(uint64_t flag_group, uint64_t flags_to_check) return (flag_group & flags_to_check) == flags_to_check; } -/*! - * \brief Convenience alias for pcmk_all_flags_set(), to check single flag - */ -#define pcmk_is_set(g, f) pcmk_all_flags_set((g), (f)) - void pcmk_common_cleanup(void); char *crm_md5sum(const char *buffer); char *crm_generate_uuid(void); diff --git a/include/crm/common/util_compat.h b/include/crm/common/util_compat.h index c3ffa7c482a..62f61623c6a 100644 --- a/include/crm/common/util_compat.h +++ b/include/crm/common/util_compat.h @@ -40,6 +40,9 @@ is_set(long long word, long long bit) return ((word & bit) == bit); } +//! \deprecated Do not use +#define pcmk_is_set(g, f) pcmk_all_flags_set((g), (f)) + #ifdef __cplusplus } #endif From 448d28b9780b844729ffefc155ab5e48ed7b7f89 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Sun, 23 Mar 2025 15:18:38 -0700 Subject: [PATCH 122/186] Refactor: libcrmcommon: New pcmk__all_flags_set() To replace pcmk_all_flags_set(). Signed-off-by: Reid Wahl --- daemons/controld/controld_fsa.c | 16 ++++++------ daemons/controld/controld_membership.c | 6 ++--- daemons/execd/execd_commands.c | 2 +- include/crm/common/internal.h | 26 ++++++++++++++++--- include/crm/common/util_compat.h | 2 +- lib/common/acl.c | 2 +- lib/common/ipc_attrd.c | 6 ++++- lib/common/options_display.c | 4 +-- lib/common/tests/flags/Makefile.am | 4 +-- ..._set_test.c => pcmk__all_flags_set_test.c} | 14 +++++----- .../tests/xml_comment/pcmk__xc_create_test.c | 4 +-- lib/common/xml.c | 2 +- lib/common/xml_display.c | 2 +- lib/fencing/st_output.c | 17 +++++++----- lib/pacemaker/pcmk_output.c | 6 ++--- lib/pacemaker/pcmk_sched_actions.c | 5 ++-- lib/pacemaker/pcmk_sched_instances.c | 14 +++++----- lib/pacemaker/pcmk_sched_primitive.c | 9 ++++--- lib/pacemaker/pcmk_simulate.c | 6 ++--- lib/pengine/clone.c | 2 +- lib/pengine/group.c | 2 +- lib/pengine/pe_output.c | 3 ++- lib/pengine/unpack.c | 4 +-- tools/crm_mon.c | 9 ++++--- 24 files changed, 98 insertions(+), 69 deletions(-) rename lib/common/tests/flags/{pcmk_all_flags_set_test.c => pcmk__all_flags_set_test.c} (61%) diff --git a/daemons/controld/controld_fsa.c b/daemons/controld/controld_fsa.c index 6e5c183906f..573a0040bea 100644 --- a/daemons/controld/controld_fsa.c +++ b/daemons/controld/controld_fsa.c @@ -278,20 +278,20 @@ s_crmd_fsa_actions(fsa_data_t * fsa_data) do_fsa_action(fsa_data, A_EXIT_1, do_exit); /* sub-system restart */ - } else if (pcmk_all_flags_set(controld_globals.fsa_actions, - O_LRM_RECONNECT)) { + } else if (pcmk__all_flags_set(controld_globals.fsa_actions, + O_LRM_RECONNECT)) { do_fsa_action(fsa_data, O_LRM_RECONNECT, do_lrm_control); - } else if (pcmk_all_flags_set(controld_globals.fsa_actions, - O_CIB_RESTART)) { + } else if (pcmk__all_flags_set(controld_globals.fsa_actions, + O_CIB_RESTART)) { do_fsa_action(fsa_data, O_CIB_RESTART, do_cib_control); - } else if (pcmk_all_flags_set(controld_globals.fsa_actions, - O_PE_RESTART)) { + } else if (pcmk__all_flags_set(controld_globals.fsa_actions, + O_PE_RESTART)) { do_fsa_action(fsa_data, O_PE_RESTART, do_pe_control); - } else if (pcmk_all_flags_set(controld_globals.fsa_actions, - O_TE_RESTART)) { + } else if (pcmk__all_flags_set(controld_globals.fsa_actions, + O_TE_RESTART)) { do_fsa_action(fsa_data, O_TE_RESTART, do_te_control); /* essential start tasks */ diff --git a/daemons/controld/controld_membership.c b/daemons/controld/controld_membership.c index a761aaf512f..c0fbd68bba9 100644 --- a/daemons/controld/controld_membership.c +++ b/daemons/controld/controld_membership.c @@ -420,9 +420,9 @@ crm_update_quorum(gboolean quorum, gboolean force_update) if (quorum) { controld_set_global_flags(controld_ever_had_quorum); - } else if (pcmk_all_flags_set(controld_globals.flags, - controld_ever_had_quorum - |controld_no_quorum_panic)) { + } else if (pcmk__all_flags_set(controld_globals.flags, + controld_ever_had_quorum + |controld_no_quorum_panic)) { pcmk__panic("Quorum lost"); } diff --git a/daemons/execd/execd_commands.c b/daemons/execd/execd_commands.c index 077bf1b7647..336fa3caf9b 100644 --- a/daemons/execd/execd_commands.c +++ b/daemons/execd/execd_commands.c @@ -810,7 +810,7 @@ client_disconnect_cleanup(const char *client_id) g_hash_table_iter_init(&iter, rsc_list); while (g_hash_table_iter_next(&iter, (gpointer *) & key, (gpointer *) & rsc)) { - if (pcmk_all_flags_set(rsc->call_opts, lrmd_opt_drop_recurring)) { + if (pcmk__is_set(rsc->call_opts, lrmd_opt_drop_recurring)) { /* This client is disconnecting, drop any recurring operations * it may have initiated on the resource */ cancel_all_recurring(rsc, client_id); diff --git a/include/crm/common/internal.h b/include/crm/common/internal.h index 9bc49ce75f4..1b253599d77 100644 --- a/include/crm/common/internal.h +++ b/include/crm/common/internal.h @@ -175,9 +175,27 @@ pcmk__clear_flags_as(const char *function, int line, uint8_t log_level, /*! * \internal - * \brief Convenience alias for \c pcmk_all_flags_set(), to check single flag + * \brief Check whether all of specified flags are set in a flag group * - * This is truly identical to \c pcmk_all_flags_set() but allows a call that's + * \param[in] flag_group Flag group to check whether \p flags_to_check are + * set + * \param[in] flags_to_check Flags to check whether set in \p flag_group + * + * \retval \c true if all flags in \p flags_to_check are set in \p flag_group + * or if \p flags_to_check is 0 + * \retval \c false otherwise + */ +static inline bool +pcmk__all_flags_set(uint64_t flag_group, uint64_t flags_to_check) +{ + return (flag_group & flags_to_check) == flags_to_check; +} + +/*! + * \internal + * \brief Convenience alias for \c pcmk__all_flags_set(), to check single flag + * + * This is truly identical to \c pcmk__all_flags_set() but allows a call that's * shorter and semantically clearer for checking a single flag. * * \param[in] flag_group Flag group (check whether \p flag is set in this) @@ -189,7 +207,7 @@ pcmk__clear_flags_as(const char *function, int line, uint8_t log_level, static inline bool pcmk__is_set(uint64_t flag_group, uint64_t flag) { - return pcmk_all_flags_set(flag_group, flag); + return pcmk__all_flags_set(flag_group, flag); } /*! @@ -204,7 +222,7 @@ pcmk__is_set(uint64_t flag_group, uint64_t flag) static inline const char * pcmk__flag_text(uint64_t flag_group, uint64_t flags) { - return pcmk__btoa(pcmk_all_flags_set(flag_group, flags)); + return pcmk__btoa(pcmk__all_flags_set(flag_group, flags)); } diff --git a/include/crm/common/util_compat.h b/include/crm/common/util_compat.h index 62f61623c6a..25d7b76735b 100644 --- a/include/crm/common/util_compat.h +++ b/include/crm/common/util_compat.h @@ -33,7 +33,7 @@ void crm_gnutls_global_init(void); bool crm_is_daemon_name(const char *name); // NOTE: sbd (as of at least 1.5.2) uses this -//! \deprecated Use pcmk_all_flags_set() instead +//! \deprecated Do not use static inline gboolean is_set(long long word, long long bit) { diff --git a/lib/common/acl.c b/lib/common/acl.c index f342e63be3f..106bb58d829 100644 --- a/lib/common/acl.c +++ b/lib/common/acl.c @@ -395,7 +395,7 @@ test_acl_mode(enum pcmk__xml_flags allowed, enum pcmk__xml_flags requested) if (pcmk__is_set(allowed, pcmk__xf_acl_deny)) { return false; - } else if (pcmk_all_flags_set(allowed, requested)) { + } else if (pcmk__all_flags_set(allowed, requested)) { return true; } else if (pcmk__is_set(requested, pcmk__xf_acl_read) diff --git a/lib/common/ipc_attrd.c b/lib/common/ipc_attrd.c index 8b33f0a5c73..c36666b8e6a 100644 --- a/lib/common/ipc_attrd.c +++ b/lib/common/ipc_attrd.c @@ -334,10 +334,14 @@ pcmk__attrd_api_refresh(pcmk_ipc_api_t *api, const char *node) static void add_op_attr(xmlNode *op, uint32_t options) { - if (pcmk_all_flags_set(options, pcmk__node_attr_value | pcmk__node_attr_delay)) { + if (pcmk__all_flags_set(options, + pcmk__node_attr_value|pcmk__node_attr_delay)) { + pcmk__xe_set(op, PCMK_XA_TASK, PCMK__ATTRD_CMD_UPDATE_BOTH); + } else if (pcmk__is_set(options, pcmk__node_attr_value)) { pcmk__xe_set(op, PCMK_XA_TASK, PCMK__ATTRD_CMD_UPDATE); + } else if (pcmk__is_set(options, pcmk__node_attr_delay)) { pcmk__xe_set(op, PCMK_XA_TASK, PCMK__ATTRD_CMD_UPDATE_DELAY); } diff --git a/lib/common/options_display.c b/lib/common/options_display.c index 4c10a1449be..1a6d8467cad 100644 --- a/lib/common/options_display.c +++ b/lib/common/options_display.c @@ -156,7 +156,7 @@ option_list_default(pcmk__output_t *out, va_list args) option->name != NULL; option++) { // Store deprecated and advanced options to display later if appropriate - if (pcmk_all_flags_set(option->flags, filter)) { + if (pcmk__all_flags_set(option->flags, filter)) { if (pcmk__is_set(option->flags, pcmk__opt_deprecated)) { if (show_deprecated) { deprecated = g_slist_prepend(deprecated, (gpointer) option); @@ -464,7 +464,7 @@ option_list_xml(pcmk__output_t *out, va_list args) for (const pcmk__cluster_option_t *option = option_list; option->name != NULL; option++) { - if (pcmk_all_flags_set(option->flags, filter)) { + if (pcmk__all_flags_set(option->flags, filter)) { add_option_metadata_xml(out, option); } } diff --git a/lib/common/tests/flags/Makefile.am b/lib/common/tests/flags/Makefile.am index 6af5dd3213b..91b629821a6 100644 --- a/lib/common/tests/flags/Makefile.am +++ b/lib/common/tests/flags/Makefile.am @@ -1,5 +1,5 @@ # -# Copyright 2020-2024 the Pacemaker project contributors +# Copyright 2020-2025 the Pacemaker project contributors # # The version control history for this file may have further details. # @@ -14,7 +14,7 @@ include $(top_srcdir)/mk/unittest.mk # Add "_test" to the end of all test program names to simplify .gitignore. check_PROGRAMS = pcmk__clear_flags_as_test \ pcmk__set_flags_as_test \ - pcmk_all_flags_set_test \ + pcmk__all_flags_set_test \ pcmk_any_flags_set_test TESTS = $(check_PROGRAMS) diff --git a/lib/common/tests/flags/pcmk_all_flags_set_test.c b/lib/common/tests/flags/pcmk__all_flags_set_test.c similarity index 61% rename from lib/common/tests/flags/pcmk_all_flags_set_test.c rename to lib/common/tests/flags/pcmk__all_flags_set_test.c index e667f33c04c..6dc78264dc1 100644 --- a/lib/common/tests/flags/pcmk_all_flags_set_test.c +++ b/lib/common/tests/flags/pcmk__all_flags_set_test.c @@ -13,17 +13,17 @@ static void all_set(void **state) { - assert_false(pcmk_all_flags_set(0x000, 0x003)); - assert_true(pcmk_all_flags_set(0x00f, 0x003)); - assert_false(pcmk_all_flags_set(0x00f, 0x010)); - assert_false(pcmk_all_flags_set(0x00f, 0x011)); - assert_true(pcmk_all_flags_set(0x000, 0x000)); - assert_true(pcmk_all_flags_set(0x00f, 0x000)); + assert_false(pcmk__all_flags_set(0x000, 0x003)); + assert_true(pcmk__all_flags_set(0x00f, 0x003)); + assert_false(pcmk__all_flags_set(0x00f, 0x010)); + assert_false(pcmk__all_flags_set(0x00f, 0x011)); + assert_true(pcmk__all_flags_set(0x000, 0x000)); + assert_true(pcmk__all_flags_set(0x00f, 0x000)); } static void one_is_set(void **state) { - // pcmk__is_set() is a simple macro alias for pcmk_all_flags_set() + // pcmk__is_set() is a simple macro alias for pcmk__all_flags_set() assert_true(pcmk__is_set(0x00f, 0x001)); assert_false(pcmk__is_set(0x00f, 0x010)); } diff --git a/lib/common/tests/xml_comment/pcmk__xc_create_test.c b/lib/common/tests/xml_comment/pcmk__xc_create_test.c index 010b463cddb..280c50ae420 100644 --- a/lib/common/tests/xml_comment/pcmk__xc_create_test.c +++ b/lib/common/tests/xml_comment/pcmk__xc_create_test.c @@ -43,8 +43,8 @@ assert_comment(const char *content) nodepriv = node->_private; assert_non_null(nodepriv); assert_int_equal(nodepriv->check, PCMK__XML_NODE_PRIVATE_MAGIC); - assert_true(pcmk_all_flags_set(nodepriv->flags, - pcmk__xf_dirty|pcmk__xf_created)); + assert_true(pcmk__all_flags_set(nodepriv->flags, + pcmk__xf_dirty|pcmk__xf_created)); assert_true(pcmk__is_set(docpriv->flags, pcmk__xf_dirty)); diff --git a/lib/common/xml.c b/lib/common/xml.c index 41f7555f0af..4b85af10c69 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -150,7 +150,7 @@ pcmk__xml_doc_all_flags_set(const xmlDoc *doc, uint32_t flags) if (doc != NULL) { xml_doc_private_t *docpriv = doc->_private; - return (docpriv != NULL) && pcmk_all_flags_set(docpriv->flags, flags); + return (docpriv != NULL) && pcmk__all_flags_set(docpriv->flags, flags); } return false; } diff --git a/lib/common/xml_display.c b/lib/common/xml_display.c index 87f81c48b1c..f8227376467 100644 --- a/lib/common/xml_display.c +++ b/lib/common/xml_display.c @@ -271,7 +271,7 @@ show_xml_changes_recursive(pcmk__output_t *out, const xmlNode *data, int depth, return pcmk_rc_no_output; } - if (pcmk_all_flags_set(nodepriv->flags, pcmk__xf_dirty|pcmk__xf_created)) { + if (pcmk__all_flags_set(nodepriv->flags, pcmk__xf_dirty|pcmk__xf_created)) { // Newly created return pcmk__xml_show(out, PCMK__XML_PREFIX_CREATED, data, depth, options diff --git a/lib/fencing/st_output.c b/lib/fencing/st_output.c index 68a041fb4e3..98b836b76de 100644 --- a/lib/fencing/st_output.c +++ b/lib/fencing/st_output.c @@ -190,7 +190,8 @@ failed_history(pcmk__output_t *out, va_list args) PCMK__OUTPUT_LIST_HEADER(out, print_spacer, rc, "Failed Fencing Actions"); out->message(out, "stonith-event", hp, - pcmk_all_flags_set(section_opts, pcmk_section_fencing_all), + pcmk__all_flags_set(section_opts, + pcmk_section_fencing_all), false, stonith__later_succeeded(hp, history), show_opts); out->increment_list(out); } @@ -220,8 +221,8 @@ stonith_history(pcmk__output_t *out, va_list args) if (hp->state != st_failed) { PCMK__OUTPUT_LIST_HEADER(out, print_spacer, rc, "Fencing History"); out->message(out, "stonith-event", hp, - pcmk_all_flags_set(section_opts, - pcmk_section_fencing_all), + pcmk__all_flags_set(section_opts, + pcmk_section_fencing_all), false, stonith__later_succeeded(hp, history), show_opts); out->increment_list(out); } @@ -252,7 +253,8 @@ full_history(pcmk__output_t *out, va_list args) PCMK__OUTPUT_LIST_HEADER(out, print_spacer, rc, "Fencing History"); out->message(out, "stonith-event", hp, - pcmk_all_flags_set(section_opts, pcmk_section_fencing_all), + pcmk__all_flags_set(section_opts, + pcmk_section_fencing_all), false, stonith__later_succeeded(hp, history), show_opts); out->increment_list(out); } @@ -283,8 +285,8 @@ full_history_xml(pcmk__output_t *out, va_list args) PCMK__OUTPUT_LIST_HEADER(out, false, rc, "Fencing History"); out->message(out, "stonith-event", hp, - pcmk_all_flags_set(section_opts, - pcmk_section_fencing_all), + pcmk__all_flags_set(section_opts, + pcmk_section_fencing_all), false, stonith__later_succeeded(hp, history), show_opts); out->increment_list(out); } @@ -382,7 +384,8 @@ pending_actions(pcmk__output_t *out, va_list args) PCMK__OUTPUT_LIST_HEADER(out, print_spacer, rc, "Pending Fencing Actions"); out->message(out, "stonith-event", hp, - pcmk_all_flags_set(section_opts, pcmk_section_fencing_all), + pcmk__all_flags_set(section_opts, + pcmk_section_fencing_all), false, stonith__later_succeeded(hp, history), show_opts); out->increment_list(out); } diff --git a/lib/pacemaker/pcmk_output.c b/lib/pacemaker/pcmk_output.c index 5d676a0e947..870887d3108 100644 --- a/lib/pacemaker/pcmk_output.c +++ b/lib/pacemaker/pcmk_output.c @@ -1282,9 +1282,9 @@ rsc_action_default(pcmk__output_t *out, va_list args) free(key); } else if ((stop != NULL) - && pcmk_all_flags_set(rsc->flags, - pcmk__rsc_failed - |pcmk__rsc_stop_if_failed)) { + && pcmk__all_flags_set(rsc->flags, + pcmk__rsc_failed + |pcmk__rsc_stop_if_failed)) { /* 'stop' may be NULL if the failure was ignored */ rc = out->message(out, "rsc-action-item", "Recover", rsc, current, next, stop, start); diff --git a/lib/pacemaker/pcmk_sched_actions.c b/lib/pacemaker/pcmk_sched_actions.c index 0fc5a4080ab..6f092b31e80 100644 --- a/lib/pacemaker/pcmk_sched_actions.c +++ b/lib/pacemaker/pcmk_sched_actions.c @@ -899,8 +899,9 @@ pcmk__update_ordered_actions(pcmk_action_t *first, pcmk_action_t *then, if (pcmk__is_set(type, pcmk__ar_unmigratable_then_blocks) && pcmk__is_set(filter, pcmk__action_optional)) { - if (!pcmk_all_flags_set(then->flags, pcmk__action_migratable - |pcmk__action_runnable)) { + if (!pcmk__all_flags_set(then->flags, + pcmk__action_migratable + |pcmk__action_runnable)) { clear_action_flag_because(first, pcmk__action_runnable, then); } diff --git a/lib/pacemaker/pcmk_sched_instances.c b/lib/pacemaker/pcmk_sched_instances.c index f047b119273..26d9fa3b4a8 100644 --- a/lib/pacemaker/pcmk_sched_instances.c +++ b/lib/pacemaker/pcmk_sched_instances.c @@ -904,14 +904,14 @@ check_instance_state(const pcmk_resource_t *instance, uint32_t *state) uint32_t instance_state = 0; // State of just this instance // No need to check further if all conditions have already been detected - if (pcmk_all_flags_set(*state, instance_all)) { + if (pcmk__all_flags_set(*state, instance_all)) { return; } // If instance is a collective (a cloned group), check its children instead if (instance->priv->variant > pcmk__rsc_variant_primitive) { for (iter = instance->priv->children; - (iter != NULL) && !pcmk_all_flags_set(*state, instance_all); + (iter != NULL) && !pcmk__all_flags_set(*state, instance_all); iter = iter->next) { check_instance_state((const pcmk_resource_t *) iter->data, state); } @@ -926,9 +926,9 @@ check_instance_state(const pcmk_resource_t *instance, uint32_t *state) // Check each of the instance's actions for runnable start or stop for (iter = instance->priv->actions; - (iter != NULL) && !pcmk_all_flags_set(instance_state, - instance_starting - |instance_stopping); + (iter != NULL) + && !pcmk__all_flags_set(instance_state, + instance_starting|instance_stopping); iter = iter->next) { const pcmk_action_t *action = (const pcmk_action_t *) iter->data; @@ -968,8 +968,8 @@ check_instance_state(const pcmk_resource_t *instance, uint32_t *state) } } - if (pcmk_all_flags_set(instance_state, - instance_starting|instance_stopping)) { + if (pcmk__all_flags_set(instance_state, + instance_starting|instance_stopping)) { instance_state |= instance_restarting; } *state |= instance_state; diff --git a/lib/pacemaker/pcmk_sched_primitive.c b/lib/pacemaker/pcmk_sched_primitive.c index 6fda856bf4f..335e969fdb5 100644 --- a/lib/pacemaker/pcmk_sched_primitive.c +++ b/lib/pacemaker/pcmk_sched_primitive.c @@ -1254,8 +1254,8 @@ pcmk__primitive_action_flags(pcmk_action_t *action, const pcmk_node_t *node) static bool is_expected_node(const pcmk_resource_t *rsc, const pcmk_node_t *node) { - return pcmk_all_flags_set(rsc->flags, - pcmk__rsc_stop_unexpected|pcmk__rsc_restarting) + return pcmk__all_flags_set(rsc->flags, + pcmk__rsc_stop_unexpected|pcmk__rsc_restarting) && (rsc->priv->next_role > pcmk_role_stopped) && pcmk__same_node(rsc->priv->assigned_node, node); } @@ -1313,8 +1313,9 @@ stop_resource(pcmk_resource_t *rsc, pcmk_node_t *node, bool optional) if (rsc->priv->assigned_node == NULL) { pe_action_set_reason(stop, "node availability", true); - } else if (pcmk_all_flags_set(rsc->flags, pcmk__rsc_restarting - |pcmk__rsc_stop_unexpected)) { + } else if (pcmk__all_flags_set(rsc->flags, + pcmk__rsc_restarting + |pcmk__rsc_stop_unexpected)) { /* We are stopping a multiply active resource on a node that is * not its expected node, and we are still scheduling restart * actions, so the stop is for being multiply active. diff --git a/lib/pacemaker/pcmk_simulate.c b/lib/pacemaker/pcmk_simulate.c index 2016781a735..4f5cb0cb329 100644 --- a/lib/pacemaker/pcmk_simulate.c +++ b/lib/pacemaker/pcmk_simulate.c @@ -947,9 +947,9 @@ pcmk__simulate(pcmk_scheduler_t *scheduler, pcmk__output_t *out, if (pcmk_any_flags_set(flags, pcmk_sim_process | pcmk_sim_simulate)) { pcmk__output_t *logger_out = NULL; - if (pcmk_all_flags_set(scheduler->flags, - pcmk__sched_output_scores - |pcmk__sched_show_utilization)) { + if (pcmk__all_flags_set(scheduler->flags, + pcmk__sched_output_scores + |pcmk__sched_show_utilization)) { PCMK__OUTPUT_SPACER_IF(out, printed == pcmk_rc_ok); out->begin_list(out, NULL, NULL, "Assignment Scores and Utilization Information"); diff --git a/lib/pengine/clone.c b/lib/pengine/clone.c index bc5148a19f8..841f0672606 100644 --- a/lib/pengine/clone.c +++ b/lib/pengine/clone.c @@ -1093,7 +1093,7 @@ pe__clone_flag_is_set(const pcmk_resource_t *clone, uint32_t flags) get_clone_variant_data(clone_data, clone); pcmk__assert(clone_data != NULL); - return pcmk_all_flags_set(clone_data->flags, flags); + return pcmk__all_flags_set(clone_data->flags, flags); } /*! diff --git a/lib/pengine/group.c b/lib/pengine/group.c index 76455bfe358..21ffe777038 100644 --- a/lib/pengine/group.c +++ b/lib/pengine/group.c @@ -62,7 +62,7 @@ pe__group_flag_is_set(const pcmk_resource_t *group, uint32_t flags) CRM_CHECK(pcmk__is_group(group), return false); group_data = group->priv->variant_opaque; - return pcmk_all_flags_set(group_data->flags, flags); + return pcmk__all_flags_set(group_data->flags, flags); } /*! diff --git a/lib/pengine/pe_output.c b/lib/pengine/pe_output.c index 2943d64c82a..9c0ae73cb84 100644 --- a/lib/pengine/pe_output.c +++ b/lib/pengine/pe_output.c @@ -1811,7 +1811,8 @@ node_html(pcmk__output_t *out, va_list args) { xmlNode *item_node = NULL; xmlNode *child = NULL; - if (pcmk_all_flags_set(show_opts, pcmk_show_brief | pcmk_show_rscs_by_node)) { + if (pcmk__all_flags_set(show_opts, + pcmk_show_brief|pcmk_show_rscs_by_node)) { GList *rscs = pe__filter_rsc_list(node->details->running_rsc, only_rsc); out->begin_list(out, NULL, NULL, "%s:", node_name); diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c index 4e0b3baca58..bc928b03be0 100644 --- a/lib/pengine/unpack.c +++ b/lib/pengine/unpack.c @@ -2500,8 +2500,8 @@ process_rsc_state(pcmk_resource_t *rsc, pcmk_node_t *node, * in a fencing operation regardless if we're going to attempt to reconnect * in this transition. */ - if (pcmk_all_flags_set(rsc->flags, - pcmk__rsc_failed|pcmk__rsc_is_remote_connection)) { + if (pcmk__all_flags_set(rsc->flags, + pcmk__rsc_failed|pcmk__rsc_is_remote_connection)) { tmpnode = pcmk_find_node(scheduler, rsc->id); if (tmpnode && tmpnode->details->unclean) { pcmk__set_node_flags(tmpnode, pcmk__node_seen); diff --git a/tools/crm_mon.c b/tools/crm_mon.c index a07fab96edd..f244e9f3774 100644 --- a/tools/crm_mon.c +++ b/tools/crm_mon.c @@ -1563,7 +1563,7 @@ main(int argc, char **argv) /* Sync up the initial value of interactive_fence_level with whatever was set with * --include/--exclude= options. */ - if (pcmk_all_flags_set(show, pcmk_section_fencing_all)) { + if (pcmk__all_flags_set(show, pcmk_section_fencing_all)) { interactive_fence_level = 3; } else if (pcmk__is_set(show, pcmk_section_fence_worked)) { interactive_fence_level = 2; @@ -1997,9 +1997,10 @@ mon_refresh_display(gpointer user_data) return G_SOURCE_REMOVE; } - if (fence_history == pcmk__fence_history_full && - !pcmk_all_flags_set(show, pcmk_section_fencing_all) && - output_format != mon_output_xml) { + if ((fence_history == pcmk__fence_history_full) + && !pcmk__all_flags_set(show, pcmk_section_fencing_all) + && (output_format != mon_output_xml)) { + fence_history = pcmk__fence_history_reduced; } From 6f78fc354529d217880c8be7021d06d87a54bdf5 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Sun, 23 Mar 2025 15:19:58 -0700 Subject: [PATCH 123/186] API: libcrmcommon: Deprecate pcmk_all_flags_set() This was kept as part of public API in commit b751e77e only so that it could be used inside other public macros and inline functions. However, currently it is not used in those capacities. Signed-off-by: Reid Wahl --- include/crm/common/util.h | 15 --------------- include/crm/common/util_compat.h | 9 +++++++++ 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/include/crm/common/util.h b/include/crm/common/util.h index 2eb1923f1cc..0cf13e1e5cc 100644 --- a/include/crm/common/util.h +++ b/include/crm/common/util.h @@ -59,21 +59,6 @@ pcmk_any_flags_set(uint64_t flag_group, uint64_t flags_to_check) return (flag_group & flags_to_check) != 0; } -/*! - * \brief Check whether all of specified flags are set in a flag group - * - * \param[in] flag_group The flag group being examined - * \param[in] flags_to_check Which flags in flag_group should be checked - * - * \return true if \p flags_to_check is zero or all of its flags are set in - * \p flag_group, or false otherwise - */ -static inline bool -pcmk_all_flags_set(uint64_t flag_group, uint64_t flags_to_check) -{ - return (flag_group & flags_to_check) == flags_to_check; -} - void pcmk_common_cleanup(void); char *crm_md5sum(const char *buffer); char *crm_generate_uuid(void); diff --git a/include/crm/common/util_compat.h b/include/crm/common/util_compat.h index 25d7b76735b..1f1ad03a80f 100644 --- a/include/crm/common/util_compat.h +++ b/include/crm/common/util_compat.h @@ -11,6 +11,8 @@ #define PCMK__CRM_COMMON_UTIL_COMPAT__H #include // bool +#include // uint64_t + #include // gboolean #ifdef __cplusplus @@ -40,6 +42,13 @@ is_set(long long word, long long bit) return ((word & bit) == bit); } +//! \deprecated Do not use +static inline bool +pcmk_all_flags_set(uint64_t flag_group, uint64_t flags_to_check) +{ + return (flag_group & flags_to_check) == flags_to_check; +} + //! \deprecated Do not use #define pcmk_is_set(g, f) pcmk_all_flags_set((g), (f)) From 419f1cc988541b540bf99fc23cb0dc7d1662e229 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Sun, 23 Mar 2025 15:30:48 -0700 Subject: [PATCH 124/186] Refactor: libcrmcommon: New pcmk__any_flags_set() To replace pcmk_any_flags_set() Signed-off-by: Reid Wahl --- daemons/based/based_callbacks.c | 6 ++--- daemons/controld/controld_te_events.c | 3 ++- include/crm/common/internal.h | 18 +++++++++++++ lib/common/acl.c | 6 +++-- lib/common/iso8601.c | 2 +- lib/common/patchset.c | 3 ++- lib/common/tests/flags/Makefile.am | 2 +- .../tests/flags/pcmk__any_flags_set_test.c | 26 +++++++++++++++++++ .../tests/flags/pcmk_any_flags_set_test.c | 26 ------------------- lib/pacemaker/pcmk_graph_consumer.c | 10 +++---- lib/pacemaker/pcmk_graph_producer.c | 18 ++++++------- lib/pacemaker/pcmk_output.c | 22 +++++++++------- lib/pacemaker/pcmk_sched_actions.c | 7 ++--- lib/pacemaker/pcmk_sched_instances.c | 12 +++++---- lib/pacemaker/pcmk_sched_ordering.c | 4 +-- lib/pacemaker/pcmk_sched_primitive.c | 5 ++-- lib/pacemaker/pcmk_scheduler.c | 2 +- lib/pacemaker/pcmk_simulate.c | 2 +- lib/pengine/native.c | 8 +++--- lib/pengine/pe_output.c | 3 ++- lib/pengine/status.c | 4 +-- lib/pengine/unpack.c | 6 ++--- lib/pengine/utils.c | 2 +- tools/crm_mon.c | 8 +++--- tools/crm_resource_runtime.c | 4 +-- 25 files changed, 120 insertions(+), 89 deletions(-) create mode 100644 lib/common/tests/flags/pcmk__any_flags_set_test.c delete mode 100644 lib/common/tests/flags/pcmk_any_flags_set_test.c diff --git a/daemons/based/based_callbacks.c b/daemons/based/based_callbacks.c index b0a1aaa59bf..4e184de578a 100644 --- a/daemons/based/based_callbacks.c +++ b/daemons/based/based_callbacks.c @@ -1116,7 +1116,7 @@ cib_process_command(xmlNode *request, const cib__operation_t *operation, } if ((rc == pcmk_ok) - && !pcmk_any_flags_set(call_options, cib_dryrun|cib_transaction)) { + && !pcmk__any_flags_set(call_options, cib_dryrun|cib_transaction)) { if (result_cib != the_cib) { if (pcmk__is_set(operation->flags, cib__op_attr_writes_through)) { @@ -1178,8 +1178,8 @@ cib_process_command(xmlNode *request, const cib__operation_t *operation, } } - if (!pcmk_any_flags_set(call_options, - cib_dryrun|cib_inhibit_notify|cib_transaction)) { + if (!pcmk__any_flags_set(call_options, + cib_dryrun|cib_inhibit_notify|cib_transaction)) { crm_trace("Sending notifications %d", pcmk__is_set(call_options, cib_dryrun)); cib_diff_notify(op, rc, call_id, client_id, client_name, originator, diff --git a/daemons/controld/controld_te_events.c b/daemons/controld/controld_te_events.c index a6334f8d16e..b3f774633dd 100644 --- a/daemons/controld/controld_te_events.c +++ b/daemons/controld/controld_te_events.c @@ -98,7 +98,8 @@ fail_incompletable_actions(pcmk__graph_t *graph, const char *down_node) for (; gIter != NULL; gIter = gIter->next) { pcmk__graph_synapse_t *synapse = (pcmk__graph_synapse_t *) gIter->data; - if (pcmk_any_flags_set(synapse->flags, pcmk__synapse_confirmed|pcmk__synapse_failed)) { + if (pcmk__any_flags_set(synapse->flags, + pcmk__synapse_confirmed|pcmk__synapse_failed)) { /* We've already been here */ continue; } diff --git a/include/crm/common/internal.h b/include/crm/common/internal.h index 1b253599d77..1813f646150 100644 --- a/include/crm/common/internal.h +++ b/include/crm/common/internal.h @@ -173,6 +173,24 @@ pcmk__clear_flags_as(const char *function, int line, uint8_t log_level, return result; } +/*! + * \internal + * \brief Check whether any of specified flags are set in a flag group + * + * \param[in] flag_group Flag group to check whether \p flags_to_check are + * set + * \param[in] flags_to_check Flags to check whether set in \p flag_group + * + * \retval \c true if \p flags_to_check is nonzero and any of its flags are + * set in \p flag_group + * \retval \c false otherwise + */ +static inline bool +pcmk__any_flags_set(uint64_t flag_group, uint64_t flags_to_check) +{ + return (flag_group & flags_to_check) != 0; +} + /*! * \internal * \brief Check whether all of specified flags are set in a flag group diff --git a/lib/common/acl.c b/lib/common/acl.c index 106bb58d829..113679deba3 100644 --- a/lib/common/acl.c +++ b/lib/common/acl.c @@ -203,7 +203,8 @@ acl_to_text(enum pcmk__xml_flags flags) if (pcmk__is_set(flags, pcmk__xf_acl_deny)) { return "deny"; - } else if (pcmk_any_flags_set(flags, pcmk__xf_acl_write|pcmk__xf_acl_create)) { + } else if (pcmk__any_flags_set(flags, + pcmk__xf_acl_write|pcmk__xf_acl_create)) { return "read/write"; } else if (pcmk__is_set(flags, pcmk__xf_acl_read)) { @@ -403,7 +404,8 @@ test_acl_mode(enum pcmk__xml_flags allowed, enum pcmk__xml_flags requested) return true; } else if (pcmk__is_set(requested, pcmk__xf_acl_create) - && pcmk_any_flags_set(allowed, pcmk__xf_acl_write|pcmk__xf_created)) { + && pcmk__any_flags_set(allowed, + pcmk__xf_acl_write|pcmk__xf_created)) { return true; } return false; diff --git a/lib/common/iso8601.c b/lib/common/iso8601.c index 580e2add1e4..a04e6f8157c 100644 --- a/lib/common/iso8601.c +++ b/lib/common/iso8601.c @@ -610,7 +610,7 @@ time_as_string_common(const crm_time_t *dt, int usec, uint32_t flags, return; } - if (pcmk_any_flags_set(flags, crm_time_seconds|crm_time_epoch)) { + if (pcmk__any_flags_set(flags, crm_time_seconds|crm_time_epoch)) { long long seconds = 0; if (pcmk__is_set(flags, crm_time_seconds)) { diff --git a/lib/common/patchset.c b/lib/common/patchset.c index 573ed277356..aebfcfc17ff 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -77,7 +77,8 @@ add_xml_changes_to_patchset(xmlNode *xml, xmlNode *patchset) xmlNode *attr = NULL; nodepriv = pIter->_private; - if (!pcmk_any_flags_set(nodepriv->flags, pcmk__xf_deleted|pcmk__xf_dirty)) { + if (!pcmk__any_flags_set(nodepriv->flags, + pcmk__xf_deleted|pcmk__xf_dirty)) { continue; } diff --git a/lib/common/tests/flags/Makefile.am b/lib/common/tests/flags/Makefile.am index 91b629821a6..9a9e708913a 100644 --- a/lib/common/tests/flags/Makefile.am +++ b/lib/common/tests/flags/Makefile.am @@ -15,6 +15,6 @@ include $(top_srcdir)/mk/unittest.mk check_PROGRAMS = pcmk__clear_flags_as_test \ pcmk__set_flags_as_test \ pcmk__all_flags_set_test \ - pcmk_any_flags_set_test + pcmk__any_flags_set_test TESTS = $(check_PROGRAMS) diff --git a/lib/common/tests/flags/pcmk__any_flags_set_test.c b/lib/common/tests/flags/pcmk__any_flags_set_test.c new file mode 100644 index 00000000000..724a77b0161 --- /dev/null +++ b/lib/common/tests/flags/pcmk__any_flags_set_test.c @@ -0,0 +1,26 @@ +/* + * Copyright 2020-2025 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 + +static void +any_set(void **state) { + assert_false(pcmk__any_flags_set(0x000, 0x000)); + assert_false(pcmk__any_flags_set(0x000, 0x001)); + assert_true(pcmk__any_flags_set(0x00f, 0x001)); + assert_false(pcmk__any_flags_set(0x00f, 0x010)); + assert_true(pcmk__any_flags_set(0x00f, 0x011)); + assert_false(pcmk__any_flags_set(0x000, 0x000)); + assert_false(pcmk__any_flags_set(0x00f, 0x000)); +} + +PCMK__UNIT_TEST(NULL, NULL, + cmocka_unit_test(any_set)) diff --git a/lib/common/tests/flags/pcmk_any_flags_set_test.c b/lib/common/tests/flags/pcmk_any_flags_set_test.c deleted file mode 100644 index dc3aabca140..00000000000 --- a/lib/common/tests/flags/pcmk_any_flags_set_test.c +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2020-2021 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 - -static void -any_set(void **state) { - assert_false(pcmk_any_flags_set(0x000, 0x000)); - assert_false(pcmk_any_flags_set(0x000, 0x001)); - assert_true(pcmk_any_flags_set(0x00f, 0x001)); - assert_false(pcmk_any_flags_set(0x00f, 0x010)); - assert_true(pcmk_any_flags_set(0x00f, 0x011)); - assert_false(pcmk_any_flags_set(0x000, 0x000)); - assert_false(pcmk_any_flags_set(0x00f, 0x000)); -} - -PCMK__UNIT_TEST(NULL, NULL, - cmocka_unit_test(any_set)) diff --git a/lib/pacemaker/pcmk_graph_consumer.c b/lib/pacemaker/pcmk_graph_consumer.c index 2aae32d2f8d..d9c6d220cf2 100644 --- a/lib/pacemaker/pcmk_graph_consumer.c +++ b/lib/pacemaker/pcmk_graph_consumer.c @@ -179,8 +179,8 @@ pcmk__update_graph(pcmk__graph_t *graph, const pcmk__graph_action_t *action) for (GList *lpc = graph->synapses; lpc != NULL; lpc = lpc->next) { pcmk__graph_synapse_t *synapse = (pcmk__graph_synapse_t *) lpc->data; - if (pcmk_any_flags_set(synapse->flags, - pcmk__synapse_confirmed|pcmk__synapse_failed)) { + if (pcmk__any_flags_set(synapse->flags, + pcmk__synapse_confirmed|pcmk__synapse_failed)) { continue; // This synapse already completed } else if (pcmk__is_set(synapse->flags, pcmk__synapse_executed)) { @@ -462,9 +462,9 @@ pcmk__execute_graph(pcmk__graph_t *graph) graph->skipped++; continue; - } else if (pcmk_any_flags_set(synapse->flags, - pcmk__synapse_confirmed - |pcmk__synapse_executed)) { + } else if (pcmk__any_flags_set(synapse->flags, + pcmk__synapse_confirmed + |pcmk__synapse_executed)) { continue; // Already handled } else if (should_fire_synapse(graph, synapse)) { diff --git a/lib/pacemaker/pcmk_graph_producer.c b/lib/pacemaker/pcmk_graph_producer.c index e4e5bdd53bd..1bfa6faeb57 100644 --- a/lib/pacemaker/pcmk_graph_producer.c +++ b/lib/pacemaker/pcmk_graph_producer.c @@ -590,10 +590,10 @@ should_add_action_to_graph(pcmk_action_t *action) static bool ordering_can_change_actions(const pcmk__related_action_t *ordering) { - return pcmk_any_flags_set(ordering->flags, - ~(pcmk__ar_then_implies_first_graphed - |pcmk__ar_first_implies_then_graphed - |pcmk__ar_ordered)); + return pcmk__any_flags_set(ordering->flags, + ~(pcmk__ar_then_implies_first_graphed + |pcmk__ar_first_implies_then_graphed + |pcmk__ar_ordered)); } /*! @@ -738,9 +738,9 @@ should_add_input_to_graph(const pcmk_action_t *action, return false; } else if (pcmk__is_set(input->action->flags, pcmk__action_optional) - && !pcmk_any_flags_set(input->action->flags, - pcmk__action_always_in_graph - |pcmk__action_added_to_graph) + && !pcmk__any_flags_set(input->action->flags, + pcmk__action_always_in_graph + |pcmk__action_added_to_graph) && !should_add_action_to_graph(input->action)) { crm_trace("Ignoring %s (%d) input %s (%d): " "input optional", @@ -1075,8 +1075,8 @@ pcmk__create_graph(pcmk_scheduler_t *scheduler) && (action->node != NULL) && action->node->details->shutdown && !pcmk__is_set(action->rsc->flags, pcmk__rsc_maintenance) - && !pcmk_any_flags_set(action->flags, - pcmk__action_optional|pcmk__action_runnable) + && !pcmk__any_flags_set(action->flags, + pcmk__action_optional|pcmk__action_runnable) && pcmk__str_eq(action->task, PCMK_ACTION_STOP, pcmk__str_none)) { /* Eventually we should just ignore the 'fence' case, but for now * it's the best way to detect (in CTS) when CIB resource updates diff --git a/lib/pacemaker/pcmk_output.c b/lib/pacemaker/pcmk_output.c index 870887d3108..38978346ce0 100644 --- a/lib/pacemaker/pcmk_output.c +++ b/lib/pacemaker/pcmk_output.c @@ -1853,8 +1853,8 @@ pcmk__cluster_status_text(pcmk__output_t *out, va_list args) /* If requested, print resource operations (which includes failcounts) * or just failcounts */ - if (pcmk_any_flags_set(section_opts, - pcmk_section_operations|pcmk_section_failcounts)) { + if (pcmk__any_flags_set(section_opts, + pcmk_section_operations|pcmk_section_failcounts)) { CHECK_RC(rc, out->message(out, "node-summary", scheduler, unames, resources, section_opts, show_opts, (rc == pcmk_rc_ok))); @@ -1908,8 +1908,9 @@ pcmk__cluster_status_text(pcmk__output_t *out, va_list args) } /* Print stonith history */ - if (pcmk_any_flags_set(section_opts, pcmk_section_fencing_all) && - fence_history != pcmk__fence_history_none) { + if (pcmk__any_flags_set(section_opts, pcmk_section_fencing_all) + && (fence_history != pcmk__fence_history_none)) { + if (history_rc != 0) { if (!already_printed_failure) { PCMK__OUTPUT_SPACER_IF(out, rc == pcmk_rc_ok); @@ -1992,8 +1993,8 @@ cluster_status_xml(pcmk__output_t *out, va_list args) /* If requested, print resource operations (which includes failcounts) * or just failcounts */ - if (pcmk_any_flags_set(section_opts, - pcmk_section_operations|pcmk_section_failcounts)) { + if (pcmk__any_flags_set(section_opts, + pcmk_section_operations|pcmk_section_failcounts)) { out->message(out, "node-summary", scheduler, unames, resources, section_opts, show_opts, false); } @@ -2073,8 +2074,8 @@ cluster_status_html(pcmk__output_t *out, va_list args) /* If requested, print resource operations (which includes failcounts) * or just failcounts */ - if (pcmk_any_flags_set(section_opts, - pcmk_section_operations|pcmk_section_failcounts)) { + if (pcmk__any_flags_set(section_opts, + pcmk_section_operations|pcmk_section_failcounts)) { out->message(out, "node-summary", scheduler, unames, resources, section_opts, show_opts, false); } @@ -2111,8 +2112,9 @@ cluster_status_html(pcmk__output_t *out, va_list args) } /* Print stonith history */ - if (pcmk_any_flags_set(section_opts, pcmk_section_fencing_all) && - fence_history != pcmk__fence_history_none) { + if (pcmk__any_flags_set(section_opts, pcmk_section_fencing_all) + && (fence_history != pcmk__fence_history_none)) { + if (history_rc != 0) { if (!already_printed_failure) { out->begin_list(out, NULL, NULL, "Failed Fencing Actions"); diff --git a/lib/pacemaker/pcmk_sched_actions.c b/lib/pacemaker/pcmk_sched_actions.c index 6f092b31e80..0e8c5fd5c7b 100644 --- a/lib/pacemaker/pcmk_sched_actions.c +++ b/lib/pacemaker/pcmk_sched_actions.c @@ -467,9 +467,10 @@ update_action_for_ordering_flags(pcmk_action_t *first, pcmk_action_t *then, // Don't bother marking 'first' as changed just for this } - if (pcmk_any_flags_set(order->flags, pcmk__ar_first_implies_then - |pcmk__ar_then_implies_first - |pcmk__ar_intermediate_stop) + if (pcmk__any_flags_set(order->flags, + pcmk__ar_first_implies_then + |pcmk__ar_then_implies_first + |pcmk__ar_intermediate_stop) && (first->rsc != NULL) && !pcmk__is_set(first->rsc->flags, pcmk__rsc_managed) && pcmk__is_set(first->rsc->flags, pcmk__rsc_blocked) diff --git a/lib/pacemaker/pcmk_sched_instances.c b/lib/pacemaker/pcmk_sched_instances.c index 26d9fa3b4a8..ed8cc8c2e24 100644 --- a/lib/pacemaker/pcmk_sched_instances.c +++ b/lib/pacemaker/pcmk_sched_instances.c @@ -955,8 +955,9 @@ check_instance_state(const pcmk_resource_t *instance, uint32_t *state) * is implied rather than actually executed. */ if (!optional - && pcmk_any_flags_set(action->flags, pcmk__action_pseudo - |pcmk__action_runnable)) { + && pcmk__any_flags_set(action->flags, + pcmk__action_pseudo + |pcmk__action_runnable)) { pcmk__rsc_trace(instance, "Instance is stopping due to %s", action->uuid); instance_state |= instance_stopping; @@ -1012,7 +1013,7 @@ pcmk__create_instance_actions(pcmk_resource_t *collective, GList *instances) !pcmk__is_set(state, instance_starting), false); started->priority = PCMK_SCORE_INFINITY; - if (pcmk_any_flags_set(state, instance_active|instance_starting)) { + if (pcmk__any_flags_set(state, instance_active|instance_starting)) { pcmk__set_action_flags(started, pcmk__action_runnable); } @@ -1255,8 +1256,9 @@ unassign_if_mandatory(const pcmk_action_t *first, const pcmk_action_t *then, /* If the "first" action must be runnable, but there is no "first" * instance, the "then" instance must not be allowed to come up. */ - } else if (pcmk_any_flags_set(type, pcmk__ar_unrunnable_first_blocks - |pcmk__ar_first_implies_then)) { + } else if (pcmk__any_flags_set(type, + pcmk__ar_unrunnable_first_blocks + |pcmk__ar_first_implies_then)) { pcmk__rsc_info(then->rsc, "Inhibiting %s from being active " "because there is no %s instance to interleave", diff --git a/lib/pacemaker/pcmk_sched_ordering.c b/lib/pacemaker/pcmk_sched_ordering.c index 791ae5e796c..fa9f3289a2c 100644 --- a/lib/pacemaker/pcmk_sched_ordering.c +++ b/lib/pacemaker/pcmk_sched_ordering.c @@ -1159,8 +1159,8 @@ pcmk__order_stops_before_shutdown(pcmk_node_t *node, pcmk_action_t *shutdown_op) * * @TODO This "if" looks wrong, create a regression test for these cases */ - if (!pcmk_any_flags_set(action->rsc->flags, - pcmk__rsc_managed|pcmk__rsc_blocked)) { + if (!pcmk__any_flags_set(action->rsc->flags, + pcmk__rsc_managed|pcmk__rsc_blocked)) { pcmk__rsc_trace(action->rsc, "Not ordering %s before shutdown of %s because " "resource is unmanaged or blocked", diff --git a/lib/pacemaker/pcmk_sched_primitive.c b/lib/pacemaker/pcmk_sched_primitive.c index 335e969fdb5..61cc519bc9e 100644 --- a/lib/pacemaker/pcmk_sched_primitive.c +++ b/lib/pacemaker/pcmk_sched_primitive.c @@ -1660,8 +1660,9 @@ pcmk__primitive_shutdown_lock(pcmk_resource_t *rsc) scheduler = rsc->priv->scheduler; // Fence devices and remote connections can't be locked - if (pcmk_any_flags_set(rsc->flags, pcmk__rsc_fence_device - |pcmk__rsc_is_remote_connection)) { + if (pcmk__any_flags_set(rsc->flags, + pcmk__rsc_fence_device + |pcmk__rsc_is_remote_connection)) { return; } diff --git a/lib/pacemaker/pcmk_scheduler.c b/lib/pacemaker/pcmk_scheduler.c index 53ec594b0f6..87649c85f2a 100644 --- a/lib/pacemaker/pcmk_scheduler.c +++ b/lib/pacemaker/pcmk_scheduler.c @@ -724,7 +724,7 @@ log_unrunnable_actions(const pcmk_scheduler_t *scheduler) const pcmk_action_t *action = (const pcmk_action_t *) iter->data; - if (!pcmk_any_flags_set(action->flags, flags)) { + if (!pcmk__any_flags_set(action->flags, flags)) { pcmk__log_action("\t", action, true); } } diff --git a/lib/pacemaker/pcmk_simulate.c b/lib/pacemaker/pcmk_simulate.c index 4f5cb0cb329..bde26a74fff 100644 --- a/lib/pacemaker/pcmk_simulate.c +++ b/lib/pacemaker/pcmk_simulate.c @@ -944,7 +944,7 @@ pcmk__simulate(pcmk_scheduler_t *scheduler, pcmk__output_t *out, } } - if (pcmk_any_flags_set(flags, pcmk_sim_process | pcmk_sim_simulate)) { + if (pcmk__any_flags_set(flags, pcmk_sim_process|pcmk_sim_simulate)) { pcmk__output_t *logger_out = NULL; if (pcmk__all_flags_set(scheduler->flags, diff --git a/lib/pengine/native.c b/lib/pengine/native.c index c75fae01c2a..4a7eb4f14f7 100644 --- a/lib/pengine/native.c +++ b/lib/pengine/native.c @@ -499,7 +499,7 @@ pcmk__native_output_string(const pcmk_resource_t *rsc, const char *name, if ((node == NULL) && (rsc->priv->lock_node != NULL)) { node = rsc->priv->lock_node; } - if (pcmk_any_flags_set(show_opts, pcmk_show_rsc_only) + if (pcmk__any_flags_set(show_opts, pcmk_show_rsc_only) || pcmk__list_of_multiple(rsc->priv->active_nodes)) { node = NULL; } @@ -589,8 +589,8 @@ pcmk__native_output_string(const pcmk_resource_t *rsc, const char *name, } // Blocked or maintenance implies unmanaged - if (pcmk_any_flags_set(rsc->flags, - pcmk__rsc_blocked|pcmk__rsc_maintenance)) { + if (pcmk__any_flags_set(rsc->flags, + pcmk__rsc_blocked|pcmk__rsc_maintenance)) { if (pcmk__is_set(rsc->flags, pcmk__rsc_blocked)) { have_flags = add_output_flag(outstr, "blocked", have_flags); @@ -611,7 +611,7 @@ pcmk__native_output_string(const pcmk_resource_t *rsc, const char *name, } // User-supplied description - if (pcmk_any_flags_set(show_opts, pcmk_show_rsc_only|pcmk_show_description) + if (pcmk__any_flags_set(show_opts, pcmk_show_rsc_only|pcmk_show_description) || pcmk__list_of_multiple(rsc->priv->active_nodes)) { const char *desc = pcmk__xe_get(rsc->priv->xml, PCMK_XA_DESCRIPTION); diff --git a/lib/pengine/pe_output.c b/lib/pengine/pe_output.c index 9c0ae73cb84..2ba4e7e6b06 100644 --- a/lib/pengine/pe_output.c +++ b/lib/pengine/pe_output.c @@ -26,7 +26,8 @@ pe__resource_description(const pcmk_resource_t *rsc, uint32_t show_opts) const char * desc = NULL; // User-supplied description - if (pcmk_any_flags_set(show_opts, pcmk_show_rsc_only|pcmk_show_description)) { + if (pcmk__any_flags_set(show_opts, + pcmk_show_rsc_only|pcmk_show_description)) { desc = pcmk__xe_get(rsc->priv->xml, PCMK_XA_DESCRIPTION); } return desc; diff --git a/lib/pengine/status.c b/lib/pengine/status.c index 1124180c010..2af9f588394 100644 --- a/lib/pengine/status.c +++ b/lib/pengine/status.c @@ -117,8 +117,8 @@ cluster_status(pcmk_scheduler_t * scheduler) "//" PCMK_XE_CRM_CONFIG, LOG_TRACE); unpack_config(section, scheduler); - if (!pcmk_any_flags_set(scheduler->flags, - pcmk__sched_location_only|pcmk__sched_quorate) + if (!pcmk__any_flags_set(scheduler->flags, + pcmk__sched_location_only|pcmk__sched_quorate) && (scheduler->no_quorum_policy != pcmk_no_quorum_ignore)) { pcmk__sched_warn(scheduler, "Fencing and resource management disabled " diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c index bc928b03be0..0afbfae2aef 100644 --- a/lib/pengine/unpack.c +++ b/lib/pengine/unpack.c @@ -1356,9 +1356,9 @@ unpack_node_history(const xmlNode *status, bool fence, * nodes have been unpacked. This allows us to number active clone * instances first. */ - } else if (!pcmk_any_flags_set(scheduler->flags, - pcmk__sched_fencing_enabled - |pcmk__sched_shutdown_lock) + } else if (!pcmk__any_flags_set(scheduler->flags, + pcmk__sched_fencing_enabled + |pcmk__sched_shutdown_lock) && !this_node->details->online) { crm_trace("Not unpacking resource history for offline " "cluster node %s", id); diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c index 1e400a52274..20908456d41 100644 --- a/lib/pengine/utils.c +++ b/lib/pengine/utils.c @@ -472,7 +472,7 @@ order_actions(pcmk_action_t *first, pcmk_action_t *then, uint32_t flags) pcmk__related_action_t *after = gIter->data; if ((after->action == then) - && pcmk_any_flags_set(after->flags, flags)) { + && pcmk__any_flags_set(after->flags, flags)) { return FALSE; } } diff --git a/tools/crm_mon.c b/tools/crm_mon.c index f244e9f3774..30d0f532b69 100644 --- a/tools/crm_mon.c +++ b/tools/crm_mon.c @@ -1115,7 +1115,7 @@ detect_user_input(GIOChannel *channel, GIOCondition condition, gpointer user_dat break; case 'D': /* If any header is shown, clear them all, otherwise set them all */ - if (pcmk_any_flags_set(show, pcmk_section_summary)) { + if (pcmk__any_flags_set(show, pcmk_section_summary)) { show &= ~pcmk_section_summary; } else { show |= pcmk_section_summary; @@ -1159,7 +1159,7 @@ detect_user_input(GIOChannel *channel, GIOCondition condition, gpointer user_dat print_option_help(out, 'L', pcmk__is_set(show, pcmk_section_bans)); print_option_help(out, 'D', !pcmk__is_set(show, pcmk_section_summary)); print_option_help(out, 'R', - pcmk_any_flags_set(show_opts, pcmk_show_details)); + pcmk__any_flags_set(show_opts, pcmk_show_details)); print_option_help(out, 'b', pcmk__is_set(show_opts, pcmk_show_brief)); print_option_help(out, 'j', pcmk__is_set(show_opts, pcmk_show_pending)); curses_formatted_printf(out, "%d m: \t%s\n", interactive_fence_level, get_option_desc('m')); @@ -1567,7 +1567,9 @@ main(int argc, char **argv) interactive_fence_level = 3; } else if (pcmk__is_set(show, pcmk_section_fence_worked)) { interactive_fence_level = 2; - } else if (pcmk_any_flags_set(show, pcmk_section_fence_failed | pcmk_section_fence_pending)) { + } else if (pcmk__any_flags_set(show, + pcmk_section_fence_failed + |pcmk_section_fence_pending)) { interactive_fence_level = 1; } else { interactive_fence_level = 0; diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c index b5160a13ba4..6a6be825075 100644 --- a/tools/crm_resource_runtime.c +++ b/tools/crm_resource_runtime.c @@ -2020,8 +2020,8 @@ cli_resource_restart(pcmk__output_t *out, pcmk_resource_t *rsc, static inline bool action_is_pending(const pcmk_action_t *action) { - if (pcmk_any_flags_set(action->flags, - pcmk__action_optional|pcmk__action_pseudo) + if (pcmk__any_flags_set(action->flags, + pcmk__action_optional|pcmk__action_pseudo) || !pcmk__is_set(action->flags, pcmk__action_runnable) || pcmk__str_eq(PCMK_ACTION_NOTIFY, action->task, pcmk__str_casei)) { return false; From c7c87aff171bd4589a0a5b113056f1fe022359fe Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Sun, 23 Mar 2025 15:32:24 -0700 Subject: [PATCH 125/186] API: libcrmcommon: Deprecate pcmk_any_flags_set() Signed-off-by: Reid Wahl --- include/crm/common/util.h | 15 --------------- include/crm/common/util_compat.h | 7 +++++++ 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/include/crm/common/util.h b/include/crm/common/util.h index 0cf13e1e5cc..37a5b8843db 100644 --- a/include/crm/common/util.h +++ b/include/crm/common/util.h @@ -44,21 +44,6 @@ int crm_default_remote_port(void); int compare_version(const char *version1, const char *version2); -/*! - * \brief Check whether any of specified flags are set in a flag group - * - * \param[in] flag_group The flag group being examined - * \param[in] flags_to_check Which flags in flag_group should be checked - * - * \return true if \p flags_to_check is nonzero and any of its flags are set in - * \p flag_group, or false otherwise - */ -static inline bool -pcmk_any_flags_set(uint64_t flag_group, uint64_t flags_to_check) -{ - return (flag_group & flags_to_check) != 0; -} - void pcmk_common_cleanup(void); char *crm_md5sum(const char *buffer); char *crm_generate_uuid(void); diff --git a/include/crm/common/util_compat.h b/include/crm/common/util_compat.h index 1f1ad03a80f..f2994258ed0 100644 --- a/include/crm/common/util_compat.h +++ b/include/crm/common/util_compat.h @@ -42,6 +42,13 @@ is_set(long long word, long long bit) return ((word & bit) == bit); } +//! \deprecated Do not use +static inline bool +pcmk_any_flags_set(uint64_t flag_group, uint64_t flags_to_check) +{ + return (flag_group & flags_to_check) != 0; +} + //! \deprecated Do not use static inline bool pcmk_all_flags_set(uint64_t flag_group, uint64_t flags_to_check) From 15d58782a210faece9acdf1f0b016861200825b7 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Sun, 23 Mar 2025 16:08:47 -0700 Subject: [PATCH 126/186] Refactor: libcrmcommon: New pcmk__md5sum() To replace crm_md5sum() Signed-off-by: Reid Wahl --- lib/common/cib_secrets.c | 6 +- lib/common/crmcommon_private.h | 5 ++ lib/common/digest.c | 56 +++++++++++++++++-- lib/common/tests/digest/Makefile.am | 4 +- ...{crm_md5sum_test.c => pcmk__md5sum_test.c} | 10 ++-- 5 files changed, 67 insertions(+), 14 deletions(-) rename lib/common/tests/digest/{crm_md5sum_test.c => pcmk__md5sum_test.c} (70%) diff --git a/lib/common/cib_secrets.c b/lib/common/cib_secrets.c index 455c365d04d..ad9010ebf5a 100644 --- a/lib/common/cib_secrets.c +++ b/lib/common/cib_secrets.c @@ -78,7 +78,7 @@ validate_hash(const char *filename, const char *secret_value, const char *rsc_id, const char *param) { char *stored = NULL; - char *calculated = NULL; + gchar *calculated = NULL; int rc = pcmk_rc_ok; stored = read_file_trimmed(filename); @@ -90,7 +90,7 @@ validate_hash(const char *filename, const char *secret_value, goto done; } - calculated = crm_md5sum(secret_value); + calculated = pcmk__md5sum(secret_value); if (calculated == NULL) { // Should be impossible rc = EINVAL; @@ -108,7 +108,7 @@ validate_hash(const char *filename, const char *secret_value, done: free(stored); - free(calculated); + g_free(calculated); return rc; } diff --git a/lib/common/crmcommon_private.h b/lib/common/crmcommon_private.h index 49c6c6eaddf..bfd09a45d67 100644 --- a/lib/common/crmcommon_private.h +++ b/lib/common/crmcommon_private.h @@ -214,6 +214,11 @@ int pcmk__add_time_from_xml(crm_time_t *t, enum pcmk__time_component component, G_GNUC_INTERNAL void pcmk__set_time_if_earlier(crm_time_t *target, const crm_time_t *source); +/* + * Digests + */ + +char *pcmk__md5sum(const char *input); /* * IPC diff --git a/lib/common/digest.c b/lib/common/digest.c index 56d1ad1a5d3..265a32cfb36 100644 --- a/lib/common/digest.c +++ b/lib/common/digest.c @@ -70,6 +70,46 @@ dump_xml_for_digest(const xmlNode *xml) return buffer; } +/*! + * \internal + * \brief Compute an MD5 checksum for a given input string + * + * \param[in] input Input string (can be \c NULL) + * + * \return Newly allocated string containing MD5 checksum for \p input, or + * \c NULL on error or if \p input is \c NULL + * + * \note The caller is responsible for freeing the return value using \c free(). + */ +char * +pcmk__md5sum(const char *input) +{ + /* This function makes two copies of the same string: one inside + * g_compute_checksum_for_string() and one from pcmk__str_copy(). The first + * one gets freed before return. + * + * We could avoid this by calling g_checksum_new(), g_checksum_get_string() + * (copying the return value with pcmk__str_copy(), and g_checksum_free() + * directly; or by updating our own call chains to use (gchar *) strings. + * However, the below is much more readable. + */ + char *checksum = NULL; + gchar *checksum_g = NULL; + + if (input == NULL) { + return NULL; + } + + checksum_g = g_compute_checksum_for_string(G_CHECKSUM_MD5, input, -1); + if (checksum_g == NULL) { + crm_err("Failed to compute MD5 checksum for %s", input); + } + + checksum = pcmk__str_copy(checksum_g); + g_free(checksum_g); + return checksum; +} + /*! * \internal * \brief Calculate and return v1 digest of XML tree @@ -84,6 +124,7 @@ static char * calculate_xml_digest_v1(const xmlNode *input) { GString *buffer = dump_xml_for_digest(input); + gchar *digest_g = NULL; char *digest = NULL; // buffer->len > 2 for initial space and trailing newline @@ -91,10 +132,11 @@ calculate_xml_digest_v1(const xmlNode *input) g_string_free(buffer, TRUE); return NULL); - digest = crm_md5sum((const char *) buffer->str); - crm_log_xml_trace(input, "digest:source"); + digest_g = pcmk__md5sum(buffer->str); + digest = pcmk__str_copy(digest_g); g_string_free(buffer, TRUE); + g_free(digest_g); return digest; } @@ -166,15 +208,18 @@ pcmk__digest_xml(const xmlNode *xml, bool filter) /* @TODO Filtering accounts for significant CPU usage. Consider removing if * possible. */ - char *digest = NULL; GString *buf = g_string_sized_new(1024); + gchar *digest_g = NULL; + char *digest = NULL; pcmk__xml_string(xml, (filter? pcmk__xml_fmt_filtered : 0), buf, 0); - digest = crm_md5sum(buf->str); - if (digest == NULL) { + digest_g = pcmk__md5sum(buf->str); + if (digest_g == NULL) { goto done; } + digest = pcmk__str_copy(digest_g); + pcmk__if_tracing( { char *trace_file = pcmk__assert_asprintf("digest-%s", digest); @@ -192,6 +237,7 @@ pcmk__digest_xml(const xmlNode *xml, bool filter) done: g_string_free(buf, TRUE); + g_free(digest_g); return digest; } diff --git a/lib/common/tests/digest/Makefile.am b/lib/common/tests/digest/Makefile.am index 223a5053d39..1210b22e070 100644 --- a/lib/common/tests/digest/Makefile.am +++ b/lib/common/tests/digest/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. # @@ -12,6 +12,6 @@ include $(top_srcdir)/mk/tap.mk include $(top_srcdir)/mk/unittest.mk # Add "_test" to the end of all test program names to simplify .gitignore. -check_PROGRAMS = crm_md5sum_test +check_PROGRAMS = pcmk__md5sum_test TESTS = $(check_PROGRAMS) diff --git a/lib/common/tests/digest/crm_md5sum_test.c b/lib/common/tests/digest/pcmk__md5sum_test.c similarity index 70% rename from lib/common/tests/digest/crm_md5sum_test.c rename to lib/common/tests/digest/pcmk__md5sum_test.c index ece4ced2c32..c9f6db1bae5 100644 --- a/lib/common/tests/digest/crm_md5sum_test.c +++ b/lib/common/tests/digest/pcmk__md5sum_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2024 the Pacemaker project contributors + * Copyright 2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -11,19 +11,21 @@ #include +#include "crmcommon_private.h" // pcmk__md5sum() + static void null_arg_test(void **state) { - assert_null(crm_md5sum(NULL)); + assert_null(pcmk__md5sum(NULL)); } static void basic_usage_test(void **state) { - char *result = crm_md5sum("abcdefghijklmnopqrstuvwxyz"); + gchar *result = pcmk__md5sum("abcdefghijklmnopqrstuvwxyz"); assert_string_equal(result, "c3fcd3d76192e4007dfb496cca67e13b"); - free(result); + g_free(result); } PCMK__UNIT_TEST(NULL, NULL, From b669c5ca8874176ec2154c13e0ec8d4365332341 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Sun, 23 Mar 2025 16:09:34 -0700 Subject: [PATCH 127/186] API: libcrmcommon: Deprecate crm_md5sum() Signed-off-by: Reid Wahl --- include/crm/common/util.h | 1 - include/crm/common/util_compat.h | 3 ++ lib/common/digest.c | 49 ++++++++++++++++---------------- 3 files changed, 28 insertions(+), 25 deletions(-) diff --git a/include/crm/common/util.h b/include/crm/common/util.h index 37a5b8843db..b9fa18e5981 100644 --- a/include/crm/common/util.h +++ b/include/crm/common/util.h @@ -45,7 +45,6 @@ int crm_default_remote_port(void); int compare_version(const char *version1, const char *version2); void pcmk_common_cleanup(void); -char *crm_md5sum(const char *buffer); char *crm_generate_uuid(void); int crm_user_lookup(const char *name, uid_t * uid, gid_t * gid); int pcmk_daemon_user(uid_t *uid, gid_t *gid); diff --git a/include/crm/common/util_compat.h b/include/crm/common/util_compat.h index f2994258ed0..e7b0da6716c 100644 --- a/include/crm/common/util_compat.h +++ b/include/crm/common/util_compat.h @@ -59,6 +59,9 @@ pcmk_all_flags_set(uint64_t flag_group, uint64_t flags_to_check) //! \deprecated Do not use #define pcmk_is_set(g, f) pcmk_all_flags_set((g), (f)) +//! \deprecated Do not use +char *crm_md5sum(const char *buffer); + #ifdef __cplusplus } #endif diff --git a/lib/common/digest.c b/lib/common/digest.c index 265a32cfb36..f54e5b83374 100644 --- a/lib/common/digest.c +++ b/lib/common/digest.c @@ -301,30 +301,6 @@ pcmk__xa_filterable(const char *name) return false; } -char * -crm_md5sum(const char *buffer) -{ - char *digest = NULL; - gchar *raw_digest = NULL; - - if (buffer == NULL) { - return NULL; - } - - raw_digest = g_compute_checksum_for_string(G_CHECKSUM_MD5, buffer, -1); - - if (raw_digest == NULL) { - crm_err("Failed to calculate hash"); - return NULL; - } - - digest = pcmk__str_copy(raw_digest); - g_free(raw_digest); - - crm_trace("Digest %s.", digest); - return digest; -} - // Return true if a is an attribute that should be filtered static bool should_filter_for_digest(xmlAttrPtr a, void *user_data) @@ -387,6 +363,7 @@ pcmk__filter_op_for_digest(xmlNode *param_set) // Deprecated functions kept only for backward API compatibility // LCOV_EXCL_START +#include // crm_md5sum() #include #include @@ -432,5 +409,29 @@ calculate_xml_versioned_digest(xmlNode *input, gboolean sort, return pcmk__digest_xml(input, do_filter); } +char * +crm_md5sum(const char *buffer) +{ + char *digest = NULL; + gchar *raw_digest = NULL; + + if (buffer == NULL) { + return NULL; + } + + raw_digest = g_compute_checksum_for_string(G_CHECKSUM_MD5, buffer, -1); + + if (raw_digest == NULL) { + crm_err("Failed to calculate hash"); + return NULL; + } + + digest = pcmk__str_copy(raw_digest); + g_free(raw_digest); + + crm_trace("Digest %s.", digest); + return digest; +} + // LCOV_EXCL_STOP // End deprecated API From 224e2cb90c24d2501a3a8a1f4321dfdc5fca6364 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Sun, 23 Mar 2025 17:23:35 -0700 Subject: [PATCH 128/186] Refactor: libcrmcommon: New pcmk__generate_uuid() Signed-off-by: Reid Wahl --- daemons/based/based_remote.c | 2 +- daemons/controld/controld_schedulerd.c | 2 +- daemons/controld/controld_transition.c | 2 +- daemons/fenced/fenced_remote.c | 2 +- include/crm/common/internal.h | 1 + lib/cib/cib_file.c | 2 +- lib/cluster/membership.c | 4 +-- lib/common/ipc_server.c | 2 +- lib/common/utils.c | 38 ++++++++++++++++++++++---- lib/common/xml_io.c | 4 +-- 10 files changed, 43 insertions(+), 16 deletions(-) diff --git a/daemons/based/based_remote.c b/daemons/based/based_remote.c index 1afdbc8c8e8..0ef01292efd 100644 --- a/daemons/based/based_remote.c +++ b/daemons/based/based_remote.c @@ -391,7 +391,7 @@ cib_handle_remote_msg(pcmk__client_t *client, xmlNode *command) pcmk__xe_set(command, PCMK__XA_CIB_USER, client->user); if (pcmk__xe_get(command, PCMK__XA_CIB_CALLID) == NULL) { - char *call_uuid = crm_generate_uuid(); + char *call_uuid = pcmk__generate_uuid(); /* fix the command */ pcmk__xe_set(command, PCMK__XA_CIB_CALLID, call_uuid); diff --git a/daemons/controld/controld_schedulerd.c b/daemons/controld/controld_schedulerd.c index 2e5d723e3fe..76279ab2cad 100644 --- a/daemons/controld/controld_schedulerd.c +++ b/daemons/controld/controld_schedulerd.c @@ -91,7 +91,7 @@ handle_disconnect(void) if (pcmk__is_set(controld_globals.fsa_input_register, R_PE_REQUIRED)) { int rc = pcmk_ok; - char *uuid_str = crm_generate_uuid(); + char *uuid_str = pcmk__generate_uuid(); crm_crit("Lost connection to the scheduler " QB_XS " CIB will be saved to " PCMK_SCHEDULER_INPUT_DIR "/pe-core-%s.bz2", diff --git a/daemons/controld/controld_transition.c b/daemons/controld/controld_transition.c index e52b45f28b4..e59f72b072c 100644 --- a/daemons/controld/controld_transition.c +++ b/daemons/controld/controld_transition.c @@ -63,7 +63,7 @@ do_te_control(long long action, } if (controld_globals.te_uuid == NULL) { - controld_globals.te_uuid = crm_generate_uuid(); + controld_globals.te_uuid = pcmk__generate_uuid(); crm_info("Registering TE UUID: %s", controld_globals.te_uuid); } diff --git a/daemons/fenced/fenced_remote.c b/daemons/fenced/fenced_remote.c index b8e5a6ef5fd..f4c0034de60 100644 --- a/daemons/fenced/fenced_remote.c +++ b/daemons/fenced/fenced_remote.c @@ -1191,7 +1191,7 @@ create_remote_stonith_op(const char *client, xmlNode *request, gboolean peer) if (peer && dev) { op->id = pcmk__xe_get_copy(dev, PCMK__XA_ST_REMOTE_OP); } else { - op->id = crm_generate_uuid(); + op->id = pcmk__generate_uuid(); } g_hash_table_replace(stonith_remote_op_list, op->id, op); diff --git a/include/crm/common/internal.h b/include/crm/common/internal.h index 1813f646150..2bfd7e120bd 100644 --- a/include/crm/common/internal.h +++ b/include/crm/common/internal.h @@ -247,6 +247,7 @@ pcmk__flag_text(uint64_t flag_group, uint64_t flags) // miscellaneous utilities (from utils.c) void pcmk__daemonize(const char *name, const char *pidfile); +char *pcmk__generate_uuid(void); void pcmk__panic(const char *reason); pid_t pcmk__locate_sbd(void); void pcmk__sleep_ms(unsigned int ms); diff --git a/lib/cib/cib_file.c b/lib/cib/cib_file.c index 678c8f75e64..211084b3f0c 100644 --- a/lib/cib/cib_file.c +++ b/lib/cib/cib_file.c @@ -667,7 +667,7 @@ cib_file_new(const char *cib_location) return NULL; } - private->id = crm_generate_uuid(); + private->id = pcmk__generate_uuid(); private->filename = filename; cib->variant = cib_file; diff --git a/lib/cluster/membership.c b/lib/cluster/membership.c index 7d97b618363..c134ef60a9f 100644 --- a/lib/cluster/membership.c +++ b/lib/cluster/membership.c @@ -985,7 +985,7 @@ pcmk__get_node(unsigned int id, const char *uname, const char *xml_id, } if (node == NULL) { - char *uniqueid = crm_generate_uuid(); + char *uniqueid = pcmk__generate_uuid(); node = pcmk__assert_alloc(1, sizeof(pcmk__node_status_t)); @@ -1465,7 +1465,7 @@ cluster_node_cib_cache_refresh_helper(xmlNode *xml_node, void *user_data) node = find_cib_cluster_node(id, uname); if (node == NULL) { - char *uniqueid = crm_generate_uuid(); + char *uniqueid = pcmk__generate_uuid(); node = pcmk__assert_alloc(1, sizeof(pcmk__node_status_t)); diff --git a/lib/common/ipc_server.c b/lib/common/ipc_server.c index d85dec8db13..c36a4ec033a 100644 --- a/lib/common/ipc_server.c +++ b/lib/common/ipc_server.c @@ -180,7 +180,7 @@ client_from_connection(qb_ipcs_connection_t *c, void *key, uid_t uid_client) } } - client->id = crm_generate_uuid(); + client->id = pcmk__generate_uuid(); if (key == NULL) { key = client->id; } diff --git a/lib/common/utils.c b/lib/common/utils.c index f49f5c0b1bb..34bec8dd69d 100644 --- a/lib/common/utils.c +++ b/lib/common/utils.c @@ -327,22 +327,48 @@ pcmk__daemonize(const char *name, const char *pidfile) pcmk__open_devnull(O_WRONLY); // stderr (fd 2) } +/* @FIXME uuid.h is an optional header per configure.ac, and we include it + * conditionally above. But uuid_generate() and uuid_unparse() depend on it, on + * many or perhaps all systems with libuuid. So it's not clear how it would ever + * be optional in practice. + * + * Note that these functions are not POSIX, although there is probably no good + * portable alternative. + * + * We do list libuuid as a build dependency in INSTALL.md already. + */ + #ifdef HAVE_UUID_UUID_H -# include -#endif +#include +#endif // HAVE_UUID_UUID_H +/*! + * \internal + * \brief Generate a 37-byte (36 bytes plus null terminator) UUID string + * + * \return Newly allocated UUID string + * + * \note The caller is responsible for freeing the return value using \c free(). + */ char * -crm_generate_uuid(void) +pcmk__generate_uuid(void) { - unsigned char uuid[16]; - char *buffer = malloc(37); /* Including NUL byte */ + uuid_t uuid; + + // uuid_unparse() converts a UUID to a 37-byte string (including null byte) + char *buffer = pcmk__assert_alloc(37, sizeof(char)); - pcmk__mem_assert(buffer); uuid_generate(uuid); uuid_unparse(uuid, buffer); return buffer; } +char * +crm_generate_uuid(void) +{ + return pcmk__generate_uuid(); +} + /*! * \internal * \brief Sleep for given milliseconds diff --git a/lib/common/xml_io.c b/lib/common/xml_io.c index 2740420cecb..8d21d60f385 100644 --- a/lib/common/xml_io.c +++ b/lib/common/xml_io.c @@ -619,7 +619,7 @@ pcmk__xml_write_temp_file(const xmlNode *xml, const char *desc, CRM_CHECK((xml != NULL) && (desc != NULL), return); if (filename == NULL) { - uuid = crm_generate_uuid(); + uuid = pcmk__generate_uuid(); filename = uuid; } path = pcmk__assert_asprintf("%s/%s", pcmk__get_tmpdir(), filename); @@ -642,7 +642,7 @@ save_xml_to_file(const xmlNode *xml, const char *desc, const char *filename) char *f = NULL; if (filename == NULL) { - char *uuid = crm_generate_uuid(); + char *uuid = pcmk__generate_uuid(); f = pcmk__assert_asprintf("%s/%s", pcmk__get_tmpdir(), uuid); filename = f; From d892713d59baeb79e42dc2562507835ce1cab8fe Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Sun, 23 Mar 2025 17:24:27 -0700 Subject: [PATCH 129/186] API: libcrmcommon: Deprecate crm_generate_uuid() Signed-off-by: Reid Wahl --- include/crm/common/util.h | 1 - include/crm/common/util_compat.h | 3 +++ lib/common/utils.c | 12 ++++++------ 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/include/crm/common/util.h b/include/crm/common/util.h index b9fa18e5981..178826d8c33 100644 --- a/include/crm/common/util.h +++ b/include/crm/common/util.h @@ -45,7 +45,6 @@ int crm_default_remote_port(void); int compare_version(const char *version1, const char *version2); void pcmk_common_cleanup(void); -char *crm_generate_uuid(void); int crm_user_lookup(const char *name, uid_t * uid, gid_t * gid); int pcmk_daemon_user(uid_t *uid, gid_t *gid); diff --git a/include/crm/common/util_compat.h b/include/crm/common/util_compat.h index e7b0da6716c..9e0dfcafff2 100644 --- a/include/crm/common/util_compat.h +++ b/include/crm/common/util_compat.h @@ -62,6 +62,9 @@ pcmk_all_flags_set(uint64_t flag_group, uint64_t flags_to_check) //! \deprecated Do not use char *crm_md5sum(const char *buffer); +//! \deprecated Do not use +char *crm_generate_uuid(void); + #ifdef __cplusplus } #endif diff --git a/lib/common/utils.c b/lib/common/utils.c index 34bec8dd69d..bcb63915a3c 100644 --- a/lib/common/utils.c +++ b/lib/common/utils.c @@ -363,12 +363,6 @@ pcmk__generate_uuid(void) return buffer; } -char * -crm_generate_uuid(void) -{ - return pcmk__generate_uuid(); -} - /*! * \internal * \brief Sleep for given milliseconds @@ -522,5 +516,11 @@ crm_is_daemon_name(const char *name) NULL); } +char * +crm_generate_uuid(void) +{ + return pcmk__generate_uuid(); +} + // LCOV_EXCL_STOP // End deprecated API From f94051f353d211f34976bb6180750b38fa7c06d6 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 24 Mar 2025 00:25:20 -0700 Subject: [PATCH 130/186] Refactor: pacemakerd: Fix indentation in pcmk_subdaemons.c:start_child() Also cast uid_t and gid_t to long long instead of unsigned long. They're specified as integer types. Their signedness is unspecified. Signed-off-by: Reid Wahl --- daemons/pacemakerd/pcmkd_subdaemons.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/daemons/pacemakerd/pcmkd_subdaemons.c b/daemons/pacemakerd/pcmkd_subdaemons.c index 206a5d88fb7..653ef9d104c 100644 --- a/daemons/pacemakerd/pcmkd_subdaemons.c +++ b/daemons/pacemakerd/pcmkd_subdaemons.c @@ -466,21 +466,20 @@ start_child(pcmk_child_t * child) pcmk__assert(child->pid != -1); if (child->pid > 0) { - /* parent */ + // Parent + const char *valgrind_s = ""; + + if (use_valgrind) { + valgrind_s = " (valgrind enabled: " PCMK__VALGRIND_EXEC ")"; + } + mainloop_child_add(child->pid, 0, name, child, pcmk_child_exit); - if (use_valgrind) { - crm_info("Forked process %lld using user %lu (%s) and group %lu " - "for subdaemon %s (valgrind enabled: %s)", - (long long) child->pid, (unsigned long) uid, - pcmk__s(child->uid, "root"), (unsigned long) gid, name, - PCMK__VALGRIND_EXEC); - } else { - crm_info("Forked process %lld using user %lu (%s) and group %lu " - "for subdaemon %s", - (long long) child->pid, (unsigned long) uid, - pcmk__s(child->uid, "root"), (unsigned long) gid, name); - } + crm_info("Forked process %lld using user %lld (%s) and group %lld " + "for subdaemon %s%s", + (long long) child->pid, (long long) uid, + pcmk__s(child->uid, "root"), (long long) gid, name, + valgrind_s); return pcmk_rc_ok; From e153f1d3ffc5275142642e546e12e5bb8443ea26 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 24 Mar 2025 00:40:12 -0700 Subject: [PATCH 131/186] Refactor: pacemakerd: Remove nesting in start_child() No meaningful code changes. A few minor things like using long long instead of unsigned long for uid_t/gid_t. Signed-off-by: Reid Wahl --- daemons/pacemakerd/pcmkd_subdaemons.c | 106 +++++++++++++------------- 1 file changed, 54 insertions(+), 52 deletions(-) diff --git a/daemons/pacemakerd/pcmkd_subdaemons.c b/daemons/pacemakerd/pcmkd_subdaemons.c index 653ef9d104c..2e0ee9e9b54 100644 --- a/daemons/pacemakerd/pcmkd_subdaemons.c +++ b/daemons/pacemakerd/pcmkd_subdaemons.c @@ -482,69 +482,71 @@ start_child(pcmk_child_t * child) valgrind_s); return pcmk_rc_ok; + } - } else { - /* Start a new session */ - (void)setsid(); - - /* Setup the two alternate arg arrays */ - opts_vgrind[0] = pcmk__str_copy(PCMK__VALGRIND_EXEC); - if (use_callgrind) { - opts_vgrind[1] = pcmk__str_copy("--tool=callgrind"); - opts_vgrind[2] = pcmk__str_copy("--callgrind-out-file=" - CRM_STATE_DIR "/callgrind.out.%p"); - opts_vgrind[3] = subdaemon_path(child); - opts_vgrind[4] = NULL; - } else { - opts_vgrind[1] = subdaemon_path(child); - opts_vgrind[2] = NULL; - opts_vgrind[3] = NULL; - opts_vgrind[4] = NULL; - } - opts_default[0] = subdaemon_path(child); + // Child - if(gid) { - // Drop root group access if not needed - if (!need_root_group && (setgid(gid) < 0)) { - crm_warn("Could not set subdaemon %s group to %lu: %s", - name, (unsigned long) gid, strerror(errno)); - } + // Start a new session + (void) setsid(); - /* Initialize supplementary groups to only those always granted to - * the user, plus haclient (so we can access IPC). - */ - if (initgroups(child->uid, gid) < 0) { - crm_err("Cannot initialize system groups for subdaemon %s: %s " - QB_XS " errno=%d", - name, pcmk_rc_str(errno), errno); - } + // Set up the two alternate argument arrays + opts_vgrind[0] = pcmk__str_copy(PCMK__VALGRIND_EXEC); + if (use_callgrind) { + opts_vgrind[1] = pcmk__str_copy("--tool=callgrind"); + opts_vgrind[2] = pcmk__str_copy("--callgrind-out-file=" + CRM_STATE_DIR "/callgrind.out.%p"); + opts_vgrind[3] = subdaemon_path(child); + opts_vgrind[4] = NULL; + } else { + opts_vgrind[1] = subdaemon_path(child); + opts_vgrind[2] = NULL; + opts_vgrind[3] = NULL; + opts_vgrind[4] = NULL; + } + opts_default[0] = subdaemon_path(child); + + if (gid != 0) { + // Drop root group access if not needed + if (!need_root_group && (setgid(gid) < 0)) { + crm_warn("Could not set subdaemon %s group to %lld: %s", name, + (long long) gid, strerror(errno)); } - if (uid && setuid(uid) < 0) { - crm_warn("Could not set subdaemon %s user to %s: %s " - QB_XS " uid=%lu errno=%d", - name, strerror(errno), child->uid, (unsigned long) uid, - errno); + /* Initialize supplementary groups to those where the user is a member, + * plus haclient (so we can access IPC) + */ + if (initgroups(child->uid, gid) < 0) { + crm_err("Cannot initialize system groups for subdaemon %s: %s " + QB_XS " errno=%d", + name, strerror(errno), errno); } + } - pcmk__close_fds_in_child(true); + if ((uid != 0) && (setuid(uid) < 0)) { + crm_warn("Could not set subdaemon %s user to %s: %s " + QB_XS " uid=%lld errno=%d", + name, strerror(errno), child->uid, (long long) uid, errno); + } - pcmk__open_devnull(O_RDONLY); // stdin (fd 0) - pcmk__open_devnull(O_WRONLY); // stdout (fd 1) - pcmk__open_devnull(O_WRONLY); // stderr (fd 2) + pcmk__close_fds_in_child(true); - if (use_valgrind) { - (void)execvp(PCMK__VALGRIND_EXEC, opts_vgrind); - } else { - char *path = subdaemon_path(child); + pcmk__open_devnull(O_RDONLY); // stdin (fd 0) + pcmk__open_devnull(O_WRONLY); // stdout (fd 1) + pcmk__open_devnull(O_WRONLY); // stderr (fd 2) - (void) execvp(path, opts_default); - free(path); - } - crm_crit("Could not execute subdaemon %s: %s", name, strerror(errno)); - crm_exit(CRM_EX_FATAL); + if (use_valgrind) { + (void) execvp(PCMK__VALGRIND_EXEC, opts_vgrind); + + } else { + char *path = subdaemon_path(child); + + (void) execvp(path, opts_default); + free(path); } - return pcmk_rc_ok; /* never reached */ + + crm_crit("Could not execute subdaemon %s: %s", name, strerror(errno)); + crm_exit(CRM_EX_FATAL); + return pcmk_rc_ok; // Never reached } /*! From d53a4a3808238f0599bab6ee6beafbc51285243c Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 24 Mar 2025 00:27:52 -0700 Subject: [PATCH 132/186] Refactor: pacemakerd: Use as_root boolean in pcmk_child_t There are really only two options: root and CRM_DAEMON_USER. The generality of pcmk_child_t:uid made things a bit harder to follow. Plus the name "uid" suggested a numeric UID. Using an as_root boolean value simplifies the code a bit and allows us to use pcmk_daemon_user() instead of crm_user_lookup(). This way, we only have to do the lookup once. After that, the uid and gid are cached in static variables within pcmk_daemon_user(). There are probably other opportunities to take advantage of the fact that uid and gid are either root or the CRM_DAEMON_USER's uid and gid. Signed-off-by: Reid Wahl --- daemons/pacemakerd/pcmkd_subdaemons.c | 57 +++++++++++---------------- 1 file changed, 22 insertions(+), 35 deletions(-) diff --git a/daemons/pacemakerd/pcmkd_subdaemons.c b/daemons/pacemakerd/pcmkd_subdaemons.c index 2e0ee9e9b54..40069a62e14 100644 --- a/daemons/pacemakerd/pcmkd_subdaemons.c +++ b/daemons/pacemakerd/pcmkd_subdaemons.c @@ -40,7 +40,10 @@ typedef struct pcmk_child_s { enum pcmk_ipc_server server; pid_t pid; int respawn_count; - const char *uid; + + //! Child runs as \c root if \c true, or as \c CRM_DAEMON_USER if \c false + bool as_root; + int check_count; uint32_t flags; } pcmk_child_t; @@ -53,30 +56,12 @@ typedef struct pcmk_child_s { #define PCMK_CHILD_CONTROLD 5 static pcmk_child_t pcmk_children[] = { - { - pcmk_ipc_based, 0, 0, CRM_DAEMON_USER, - 0, child_respawn | child_needs_cluster - }, - { - pcmk_ipc_fenced, 0, 0, NULL, - 0, child_respawn | child_needs_cluster - }, - { - pcmk_ipc_execd, 0, 0, NULL, - 0, child_respawn - }, - { - pcmk_ipc_attrd, 0, 0, CRM_DAEMON_USER, - 0, child_respawn | child_needs_cluster - }, - { - pcmk_ipc_schedulerd, 0, 0, CRM_DAEMON_USER, - 0, child_respawn - }, - { - pcmk_ipc_controld, 0, 0, CRM_DAEMON_USER, - 0, child_respawn | child_needs_cluster - }, + { pcmk_ipc_based, 0, 0, false, 0, child_respawn|child_needs_cluster }, + { pcmk_ipc_fenced, 0, 0, true, 0, child_respawn|child_needs_cluster }, + { pcmk_ipc_execd, 0, 0, true, 0, child_respawn }, + { pcmk_ipc_attrd, 0, 0, false, 0, child_respawn|child_needs_cluster }, + { pcmk_ipc_schedulerd, 0, 0, false, 0, child_respawn }, + { pcmk_ipc_controld, 0, 0, false, 0, child_respawn|child_needs_cluster }, }; static char *opts_default[] = { NULL, NULL }; @@ -422,8 +407,10 @@ pcmk_shutdown_worker(gpointer user_data) static int start_child(pcmk_child_t * child) { + const char *user = (child->as_root? "root" : CRM_DAEMON_USER); uid_t uid = 0; gid_t gid = 0; + gboolean use_valgrind = FALSE; gboolean use_callgrind = FALSE; const char *name = pcmk__server_name(child->server); @@ -456,9 +443,8 @@ start_child(pcmk_child_t * child) use_valgrind = FALSE; } - if ((child->uid != NULL) && (crm_user_lookup(child->uid, &uid, &gid) < 0)) { - crm_err("Invalid user (%s) for subdaemon %s: not found", - child->uid, name); + if (!child->as_root && (pcmk_daemon_user(&uid, &gid) < 0)) { + crm_err("User " CRM_DAEMON_USER " not found for subdaemon %s", name); return EACCES; } @@ -477,9 +463,8 @@ start_child(pcmk_child_t * child) crm_info("Forked process %lld using user %lld (%s) and group %lld " "for subdaemon %s%s", - (long long) child->pid, (long long) uid, - pcmk__s(child->uid, "root"), (long long) gid, name, - valgrind_s); + (long long) child->pid, (long long) uid, user, (long long) gid, + name, valgrind_s); return pcmk_rc_ok; } @@ -513,9 +498,11 @@ start_child(pcmk_child_t * child) } /* Initialize supplementary groups to those where the user is a member, - * plus haclient (so we can access IPC) + * plus haclient (so we can access IPC). + * + * @TODO initgroups() is not portable (not part of any standard). */ - if (initgroups(child->uid, gid) < 0) { + if (initgroups(user, gid) < 0) { crm_err("Cannot initialize system groups for subdaemon %s: %s " QB_XS " errno=%d", name, strerror(errno), errno); @@ -525,7 +512,7 @@ start_child(pcmk_child_t * child) if ((uid != 0) && (setuid(uid) < 0)) { crm_warn("Could not set subdaemon %s user to %s: %s " QB_XS " uid=%lld errno=%d", - name, strerror(errno), child->uid, (long long) uid, errno); + name, strerror(errno), user, (long long) uid, errno); } pcmk__close_fds_in_child(true); @@ -581,7 +568,7 @@ child_liveness(pcmk_child_t *child) int legacy_rc = pcmk_ok; pid_t ipc_pid = 0; - if (child->uid == NULL) { + if (child->as_root) { ref_uid = &root_uid; ref_gid = &root_gid; } else { From ed09ef616f3bc18fd564b83b121c8633ee42e1e4 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 24 Mar 2025 00:57:37 -0700 Subject: [PATCH 133/186] Refactor: pacemakerd: Rename pcmk_child_t to pcmkd_child_t Previously, it used the public API prefix. Now, it uses the pacemakerd prefix. Signed-off-by: Reid Wahl --- daemons/pacemakerd/pcmkd_subdaemons.c | 32 +++++++++++++-------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/daemons/pacemakerd/pcmkd_subdaemons.c b/daemons/pacemakerd/pcmkd_subdaemons.c index 40069a62e14..ab94376a3b0 100644 --- a/daemons/pacemakerd/pcmkd_subdaemons.c +++ b/daemons/pacemakerd/pcmkd_subdaemons.c @@ -36,7 +36,7 @@ enum child_daemon_flags { child_active_before_startup = 1 << 3, }; -typedef struct pcmk_child_s { +typedef struct { enum pcmk_ipc_server server; pid_t pid; int respawn_count; @@ -46,7 +46,7 @@ typedef struct pcmk_child_s { int check_count; uint32_t flags; -} pcmk_child_t; +} pcmkd_child_t; #define PCMK_PROCESS_CHECK_INTERVAL 1000 /* 1s */ #define PCMK_PROCESS_CHECK_RETRIES 5 @@ -55,7 +55,7 @@ typedef struct pcmk_child_s { /* Index into the array below */ #define PCMK_CHILD_CONTROLD 5 -static pcmk_child_t pcmk_children[] = { +static pcmkd_child_t pcmk_children[] = { { pcmk_ipc_based, 0, 0, false, 0, child_respawn|child_needs_cluster }, { pcmk_ipc_fenced, 0, 0, true, 0, child_respawn|child_needs_cluster }, { pcmk_ipc_execd, 0, 0, true, 0, child_respawn }, @@ -95,13 +95,13 @@ GMainLoop *mainloop = NULL; static gboolean fatal_error = FALSE; -static int child_liveness(pcmk_child_t *child); +static int child_liveness(pcmkd_child_t *child); static gboolean escalate_shutdown(gpointer data); -static int start_child(pcmk_child_t * child); +static int start_child(pcmkd_child_t *child); static void pcmk_child_exit(mainloop_child_t * p, pid_t pid, int core, int signo, int exitcode); -static void pcmk_process_exit(pcmk_child_t * child); +static void pcmk_process_exit(pcmkd_child_t *child); static gboolean pcmk_shutdown_worker(gpointer user_data); -static gboolean stop_child(pcmk_child_t * child, int signal); +static gboolean stop_child(pcmkd_child_t *child, int signal); /*! * \internal @@ -113,7 +113,7 @@ static gboolean stop_child(pcmk_child_t * child, int signal); * \note It is the caller's responsibility to free() the return value */ static inline char * -subdaemon_path(pcmk_child_t *subdaemon) +subdaemon_path(pcmkd_child_t *subdaemon) { return pcmk__assert_asprintf(CRM_DAEMON_DIR "/%s", pcmk__server_name(subdaemon->server)); @@ -134,7 +134,7 @@ check_next_subdaemon(gpointer user_data) { static int next_child = 0; - pcmk_child_t *child = &(pcmk_children[next_child]); + pcmkd_child_t *child = &(pcmk_children[next_child]); const char *name = pcmk__server_name(child->server); const long long pid = PCMK__SPECIAL_PID_AS_0(child->pid); int rc = child_liveness(child); @@ -218,7 +218,7 @@ check_next_subdaemon(gpointer user_data) static gboolean escalate_shutdown(gpointer data) { - pcmk_child_t *child = data; + pcmkd_child_t *child = data; if (child->pid == PCMK__SPECIAL_PID) { pcmk_process_exit(child); @@ -235,7 +235,7 @@ escalate_shutdown(gpointer data) static void pcmk_child_exit(mainloop_child_t * p, pid_t pid, int core, int signo, int exitcode) { - pcmk_child_t *child = mainloop_child_userdata(p); + pcmkd_child_t *child = mainloop_child_userdata(p); const char *name = mainloop_child_name(p); if (signo) { @@ -289,7 +289,7 @@ pcmk_child_exit(mainloop_child_t * p, pid_t pid, int core, int signo, int exitco } static void -pcmk_process_exit(pcmk_child_t * child) +pcmk_process_exit(pcmkd_child_t * child) { const char *name = pcmk__server_name(child->server); child->pid = 0; @@ -340,7 +340,7 @@ pcmk_shutdown_worker(gpointer user_data) } for (; phase >= 0; phase--) { - pcmk_child_t *child = &(pcmk_children[phase]); + pcmkd_child_t *child = &(pcmk_children[phase]); const char *name = pcmk__server_name(child->server); if (child->pid != 0) { @@ -405,7 +405,7 @@ pcmk_shutdown_worker(gpointer user_data) room for races */ // \return Standard Pacemaker return code static int -start_child(pcmk_child_t * child) +start_child(pcmkd_child_t * child) { const char *user = (child->as_root? "root" : CRM_DAEMON_USER); uid_t uid = 0; @@ -555,7 +555,7 @@ start_child(pcmk_child_t * child) * a different authentic holder of the IPC end-point). */ static int -child_liveness(pcmk_child_t *child) +child_liveness(pcmkd_child_t *child) { uid_t cl_uid = 0; gid_t cl_gid = 0; @@ -857,7 +857,7 @@ restart_cluster_subdaemons(void) } static gboolean -stop_child(pcmk_child_t * child, int signal) +stop_child(pcmkd_child_t *child, int signal) { const char *name = pcmk__server_name(child->server); From d1357bf1c53d71d951c070e1c9fd24a65e28c83f Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 24 Mar 2025 01:18:10 -0700 Subject: [PATCH 134/186] Refactor: pacemakerd: Remove some nesting in child_liveness() Signed-off-by: Reid Wahl --- daemons/pacemakerd/pcmkd_subdaemons.c | 52 ++++++++++++++------------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/daemons/pacemakerd/pcmkd_subdaemons.c b/daemons/pacemakerd/pcmkd_subdaemons.c index ab94376a3b0..6964f268112 100644 --- a/daemons/pacemakerd/pcmkd_subdaemons.c +++ b/daemons/pacemakerd/pcmkd_subdaemons.c @@ -564,43 +564,45 @@ child_liveness(pcmkd_child_t *child) const uid_t *ref_uid; const gid_t *ref_gid; const char *name = pcmk__server_name(child->server); + const char *ipc_name = pcmk__server_ipc_name(child->server); int rc = pcmk_rc_ipc_unresponsive; - int legacy_rc = pcmk_ok; pid_t ipc_pid = 0; if (child->as_root) { ref_uid = &root_uid; ref_gid = &root_gid; + } else { + int legacy_rc = pcmk_ok; + ref_uid = &cl_uid; ref_gid = &cl_gid; legacy_rc = pcmk_daemon_user(&cl_uid, &cl_gid); + + if (legacy_rc < 0) { + rc = pcmk_legacy2rc(legacy_rc); + crm_err("Could not find user and group IDs for user " + CRM_DAEMON_USER ": %s " QB_XS " rc=%d", + pcmk_rc_str(rc), rc); + return rc; + } } - if (legacy_rc < 0) { - rc = pcmk_legacy2rc(legacy_rc); - crm_err("Could not find user and group IDs for user %s: %s " - QB_XS " rc=%d", CRM_DAEMON_USER, pcmk_rc_str(rc), rc); - } else { - const char *ipc_name = pcmk__server_ipc_name(child->server); - - rc = pcmk__ipc_is_authentic_process_active(ipc_name, - *ref_uid, *ref_gid, - &ipc_pid); - if ((rc == pcmk_rc_ok) || (rc == pcmk_rc_ipc_unresponsive)) { - if (child->pid <= 0) { - /* If rc is pcmk_rc_ok, ipc_pid is nonzero and this - * initializes a new child. If rc is - * pcmk_rc_ipc_unresponsive, ipc_pid is zero, and we will - * investigate further. - */ - child->pid = ipc_pid; - } else if ((ipc_pid != 0) && (child->pid != ipc_pid)) { - /* An unexpected (but authorized) process is responding to - * IPC. Investigate further. - */ - rc = pcmk_rc_ipc_unresponsive; - } + rc = pcmk__ipc_is_authentic_process_active(ipc_name, *ref_uid, *ref_gid, + &ipc_pid); + if ((rc == pcmk_rc_ok) || (rc == pcmk_rc_ipc_unresponsive)) { + if (child->pid <= 0) { + /* If rc is pcmk_rc_ok, ipc_pid is nonzero and this initializes a + * new child. If rc is pcmk_rc_ipc_unresponsive, ipc_pid is zero, + * and we will investigate further. + */ + child->pid = ipc_pid; + + } else if ((ipc_pid != 0) && (child->pid != ipc_pid)) { + /* An unexpected (but authorized) process is responding to IPC. + * Investigate further. + */ + rc = pcmk_rc_ipc_unresponsive; } } From e5d1fd1c7a580a55301cbc36ed2ee1c4ba6c1ec3 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 24 Mar 2025 01:25:51 -0700 Subject: [PATCH 135/186] Refactor: pacemakerd: Remove more nesting from child_liveness() This doesn't change any logic. It also leaves comments alone except for formatting. I do not have the brain space to try to understand these comments right now. Signed-off-by: Reid Wahl --- daemons/pacemakerd/pcmkd_subdaemons.c | 99 +++++++++++++++------------ 1 file changed, 54 insertions(+), 45 deletions(-) diff --git a/daemons/pacemakerd/pcmkd_subdaemons.c b/daemons/pacemakerd/pcmkd_subdaemons.c index 6964f268112..9739b595bf4 100644 --- a/daemons/pacemakerd/pcmkd_subdaemons.c +++ b/daemons/pacemakerd/pcmkd_subdaemons.c @@ -566,6 +566,7 @@ child_liveness(pcmkd_child_t *child) const char *name = pcmk__server_name(child->server); const char *ipc_name = pcmk__server_ipc_name(child->server); int rc = pcmk_rc_ipc_unresponsive; + int active_rc = pcmk_rc_ok; pid_t ipc_pid = 0; if (child->as_root) { @@ -606,56 +607,64 @@ child_liveness(pcmkd_child_t *child) } } - if (rc == pcmk_rc_ipc_unresponsive) { - /* If we get here, a child without IPC is being tracked, no IPC liveness - * has been detected, or IPC liveness has been detected with an - * unexpected (but authorized) process. This is safe on FreeBSD since - * the only change possible from a proper child's PID into "special" PID - * of 1 behind more loosely related process. + if (rc != pcmk_rc_ipc_unresponsive) { + return rc; + } + + /* If we get here, a child without IPC is being tracked, no IPC liveness has + * been detected, or IPC liveness has been detected with an unexpected (but + * authorized) process. This is safe on FreeBSD since the only change + * possible from a proper child's PID into "special" PID of 1 behind more + * loosely related process. + */ + active_rc = pcmk__pid_active(child->pid, name); + + if ((ipc_pid != 0) + && ((active_rc != pcmk_rc_ok) + || (ipc_pid == PCMK__SPECIAL_PID) + || (pcmk__pid_active(ipc_pid, name) == pcmk_rc_ok))) { + /* An unexpected (but authorized) process was detected at the IPC + * endpoint, and either it is active, or the child we're tracking is + * not. */ - int ret = pcmk__pid_active(child->pid, name); - - if (ipc_pid && ((ret != pcmk_rc_ok) - || ipc_pid == PCMK__SPECIAL_PID - || (pcmk__pid_active(ipc_pid, name) == pcmk_rc_ok))) { - /* An unexpected (but authorized) process was detected at the IPC - * endpoint, and either it is active, or the child we're tracking is - * not. + + if (active_rc == pcmk_rc_ok) { + /* The child we're tracking is active. Kill it, and adopt the + * detected process. This assumes that our children don't fork (thus + * getting a different PID owning the IPC), but rather the tracking + * got out of sync because of some means external to Pacemaker, and + * adopting the detected process is better than killing it and + * possibly having to spawn a new child. */ - if (ret == pcmk_rc_ok) { - /* The child we're tracking is active. Kill it, and adopt the - * detected process. This assumes that our children don't fork - * (thus getting a different PID owning the IPC), but rather the - * tracking got out of sync because of some means external to - * Pacemaker, and adopting the detected process is better than - * killing it and possibly having to spawn a new child. - */ - /* not possessing IPC, afterall (what about corosync CPG?) */ - stop_child(child, SIGKILL); - } - rc = pcmk_rc_ok; - child->pid = ipc_pid; - } else if (ret == pcmk_rc_ok) { - // Our tracked child's PID was found active, but not its IPC - rc = pcmk_rc_ipc_pid_only; - } else if ((child->pid == 0) && (ret == EINVAL)) { - // FreeBSD can return EINVAL - rc = pcmk_rc_ipc_unresponsive; - } else { - switch (ret) { - case EACCES: - rc = pcmk_rc_ipc_unauthorized; - break; - case ESRCH: - rc = pcmk_rc_ipc_unresponsive; - break; - default: - rc = ret; - break; - } + // Not possessing IPC, after all (what about corosync CPG?) + stop_child(child, SIGKILL); + } + rc = pcmk_rc_ok; + child->pid = ipc_pid; + + } else if (active_rc == pcmk_rc_ok) { + // Our tracked child's PID was found active, but not its IPC + rc = pcmk_rc_ipc_pid_only; + + } else if ((child->pid == 0) && (active_rc == EINVAL)) { + // FreeBSD can return EINVAL + rc = pcmk_rc_ipc_unresponsive; + + } else { + switch (active_rc) { + case EACCES: + rc = pcmk_rc_ipc_unauthorized; + break; + case ESRCH: + rc = pcmk_rc_ipc_unresponsive; + break; + default: + rc = active_rc; + break; } } + return rc; } From 7d1ff7958723ba8371709c8c5d8469e92e7022bc Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 24 Mar 2025 01:30:15 -0700 Subject: [PATCH 136/186] Refactor: pacemakerd: Remove still more nesting from child_liveness() We no longer need the active_rc variable. We can repurpose rc, now that we're returning at all these points instead of assigning to rc and returning rc at the end. Signed-off-by: Reid Wahl --- daemons/pacemakerd/pcmkd_subdaemons.c | 41 ++++++++++++--------------- 1 file changed, 18 insertions(+), 23 deletions(-) diff --git a/daemons/pacemakerd/pcmkd_subdaemons.c b/daemons/pacemakerd/pcmkd_subdaemons.c index 9739b595bf4..969de4a193d 100644 --- a/daemons/pacemakerd/pcmkd_subdaemons.c +++ b/daemons/pacemakerd/pcmkd_subdaemons.c @@ -566,7 +566,6 @@ child_liveness(pcmkd_child_t *child) const char *name = pcmk__server_name(child->server); const char *ipc_name = pcmk__server_ipc_name(child->server); int rc = pcmk_rc_ipc_unresponsive; - int active_rc = pcmk_rc_ok; pid_t ipc_pid = 0; if (child->as_root) { @@ -617,10 +616,10 @@ child_liveness(pcmkd_child_t *child) * possible from a proper child's PID into "special" PID of 1 behind more * loosely related process. */ - active_rc = pcmk__pid_active(child->pid, name); + rc = pcmk__pid_active(child->pid, name); if ((ipc_pid != 0) - && ((active_rc != pcmk_rc_ok) + && ((rc != pcmk_rc_ok) || (ipc_pid == PCMK__SPECIAL_PID) || (pcmk__pid_active(ipc_pid, name) == pcmk_rc_ok))) { /* An unexpected (but authorized) process was detected at the IPC @@ -628,7 +627,7 @@ child_liveness(pcmkd_child_t *child) * not. */ - if (active_rc == pcmk_rc_ok) { + if (rc == pcmk_rc_ok) { /* The child we're tracking is active. Kill it, and adopt the * detected process. This assumes that our children don't fork (thus * getting a different PID owning the IPC), but rather the tracking @@ -640,32 +639,28 @@ child_liveness(pcmkd_child_t *child) // Not possessing IPC, after all (what about corosync CPG?) stop_child(child, SIGKILL); } - rc = pcmk_rc_ok; child->pid = ipc_pid; + return pcmk_rc_ok; + } - } else if (active_rc == pcmk_rc_ok) { + if (rc == pcmk_rc_ok) { // Our tracked child's PID was found active, but not its IPC - rc = pcmk_rc_ipc_pid_only; + return pcmk_rc_ipc_pid_only; + } - } else if ((child->pid == 0) && (active_rc == EINVAL)) { + if ((child->pid == 0) && (rc == EINVAL)) { // FreeBSD can return EINVAL - rc = pcmk_rc_ipc_unresponsive; - - } else { - switch (active_rc) { - case EACCES: - rc = pcmk_rc_ipc_unauthorized; - break; - case ESRCH: - rc = pcmk_rc_ipc_unresponsive; - break; - default: - rc = active_rc; - break; - } + return pcmk_rc_ipc_unresponsive; } - return rc; + switch (rc) { + case EACCES: + return pcmk_rc_ipc_unauthorized; + case ESRCH: + return pcmk_rc_ipc_unresponsive; + default: + return rc; + } } /*! From 9dbaaad5c7194ee5ebe63ff5ac256dea6ea7506f Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 24 Mar 2025 01:33:46 -0700 Subject: [PATCH 137/186] Refactor: libcrmcommon: New pcmk__daemon_user() To replace pcmk_daemon_user(). Signed-off-by: Reid Wahl --- daemons/based/pacemaker-based.c | 48 +++++++++---------- daemons/pacemakerd/pacemakerd.c | 8 ++-- daemons/pacemakerd/pcmkd_corosync.c | 2 +- daemons/pacemakerd/pcmkd_subdaemons.c | 20 ++++---- include/crm/common/internal.h | 1 + lib/cib/cib_file.c | 31 ++++++------ lib/common/io.c | 40 ++++++++-------- lib/common/ipc_client.c | 3 +- lib/common/ipc_server.c | 8 ++-- lib/common/logging.c | 7 ++- lib/common/tests/utils/Makefile.am | 4 +- ...n_user_test.c => pcmk__daemon_user_test.c} | 41 +++++++++------- lib/common/utils.c | 36 +++++++++++++- 13 files changed, 146 insertions(+), 103 deletions(-) rename lib/common/tests/utils/{pcmk_daemon_user_test.c => pcmk__daemon_user_test.c} (61%) diff --git a/daemons/based/pacemaker-based.c b/daemons/based/pacemaker-based.c index 009d2bc5413..c556d758c2a 100644 --- a/daemons/based/pacemaker-based.c +++ b/daemons/based/pacemaker-based.c @@ -74,52 +74,50 @@ cib_enable_writes(int nsig) static int setup_stand_alone(GError **error) { - int rc = 0; - struct passwd *pwentry = NULL; + uid_t uid = 0; + gid_t gid = 0; + int rc = pcmk_rc_ok; preserve_status = TRUE; cib_writes_enabled = FALSE; - errno = 0; - pwentry = getpwnam(CRM_DAEMON_USER); - if (pwentry == NULL) { + rc = pcmk__daemon_user(&uid, &gid); + if (rc != pcmk_rc_ok) { exit_code = CRM_EX_FATAL; - if (errno != 0) { - g_set_error(error, PCMK__EXITC_ERROR, exit_code, - "Error getting password DB entry for %s: %s", - CRM_DAEMON_USER, strerror(errno)); - return errno; - } g_set_error(error, PCMK__EXITC_ERROR, exit_code, - "Password DB entry for '%s' not found", CRM_DAEMON_USER); - return ENXIO; + "Error getting password DB entry for '%s': %s", + CRM_DAEMON_USER, pcmk_rc_str(rc)); + return rc; } - rc = setgid(pwentry->pw_gid); + rc = setgid(gid); if (rc < 0) { + rc = errno; exit_code = CRM_EX_FATAL; g_set_error(error, PCMK__EXITC_ERROR, exit_code, - "Could not set group to %d: %s", - pwentry->pw_gid, strerror(errno)); - return errno; + "Could not set group to %lld: %s", (long long) gid, + pcmk_rc_str(rc)); + return rc; } - rc = initgroups(CRM_DAEMON_USER, pwentry->pw_gid); + rc = initgroups(CRM_DAEMON_USER, gid); if (rc < 0) { + rc = errno; exit_code = CRM_EX_FATAL; g_set_error(error, PCMK__EXITC_ERROR, exit_code, - "Could not setup groups for user %d: %s", - pwentry->pw_uid, strerror(errno)); - return errno; + "Could not set up groups for user %lld: %s", + (long long) uid, pcmk_rc_str(rc)); + return rc; } - rc = setuid(pwentry->pw_uid); + rc = setuid(uid); if (rc < 0) { + rc = errno; exit_code = CRM_EX_FATAL; g_set_error(error, PCMK__EXITC_ERROR, exit_code, - "Could not set user to %d: %s", - pwentry->pw_uid, strerror(errno)); - return errno; + "Could not set user to %lld: %s", (long long) uid, + pcmk_rc_str(rc)); + return rc; } return pcmk_rc_ok; } diff --git a/daemons/pacemakerd/pacemakerd.c b/daemons/pacemakerd/pacemakerd.c index b85e7eaf6c5..cf4ee2d1d73 100644 --- a/daemons/pacemakerd/pacemakerd.c +++ b/daemons/pacemakerd/pacemakerd.c @@ -1,5 +1,5 @@ /* - * Copyright 2010-2024 the Pacemaker project contributors + * Copyright 2010-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -161,9 +161,9 @@ create_pcmk_dirs(void) NULL }; - if (pcmk_daemon_user(&pcmk_uid, &pcmk_gid) < 0) { - crm_err("Cluster user %s does not exist, aborting Pacemaker startup", - CRM_DAEMON_USER); + if (pcmk__daemon_user(&pcmk_uid, &pcmk_gid) != pcmk_rc_ok) { + crm_err("Cluster user " CRM_DAEMON_USER " does not exist, aborting " + "Pacemaker startup"); crm_exit(CRM_EX_NOUSER); } diff --git a/daemons/pacemakerd/pcmkd_corosync.c b/daemons/pacemakerd/pcmkd_corosync.c index b12a8be7ab8..74bc5299bd2 100644 --- a/daemons/pacemakerd/pcmkd_corosync.c +++ b/daemons/pacemakerd/pcmkd_corosync.c @@ -355,7 +355,7 @@ pacemakerd_read_config(void) if(local_handle){ gid_t gid = 0; - if (pcmk_daemon_user(NULL, &gid) < 0) { + if (pcmk__daemon_user(NULL, &gid) != pcmk_rc_ok) { crm_warn("Could not authorize group with Corosync " QB_XS " No group found for user %s", CRM_DAEMON_USER); diff --git a/daemons/pacemakerd/pcmkd_subdaemons.c b/daemons/pacemakerd/pcmkd_subdaemons.c index 969de4a193d..f7bdab17c24 100644 --- a/daemons/pacemakerd/pcmkd_subdaemons.c +++ b/daemons/pacemakerd/pcmkd_subdaemons.c @@ -443,9 +443,14 @@ start_child(pcmkd_child_t * child) use_valgrind = FALSE; } - if (!child->as_root && (pcmk_daemon_user(&uid, &gid) < 0)) { - crm_err("User " CRM_DAEMON_USER " not found for subdaemon %s", name); - return EACCES; + if (!child->as_root) { + int rc = pcmk__daemon_user(&uid, &gid); + + if (rc != pcmk_rc_ok) { + crm_err("User " CRM_DAEMON_USER " not found for subdaemon %s: %s", + name, pcmk_rc_str(rc)); + return rc; + } } child->pid = fork(); @@ -565,7 +570,7 @@ child_liveness(pcmkd_child_t *child) const gid_t *ref_gid; const char *name = pcmk__server_name(child->server); const char *ipc_name = pcmk__server_ipc_name(child->server); - int rc = pcmk_rc_ipc_unresponsive; + int rc = pcmk_rc_ok; pid_t ipc_pid = 0; if (child->as_root) { @@ -573,14 +578,11 @@ child_liveness(pcmkd_child_t *child) ref_gid = &root_gid; } else { - int legacy_rc = pcmk_ok; - ref_uid = &cl_uid; ref_gid = &cl_gid; - legacy_rc = pcmk_daemon_user(&cl_uid, &cl_gid); - if (legacy_rc < 0) { - rc = pcmk_legacy2rc(legacy_rc); + rc = pcmk__daemon_user(&cl_uid, &cl_gid); + if (rc != pcmk_rc_ok) { crm_err("Could not find user and group IDs for user " CRM_DAEMON_USER ": %s " QB_XS " rc=%d", pcmk_rc_str(rc), rc); diff --git a/include/crm/common/internal.h b/include/crm/common/internal.h index 2bfd7e120bd..9bae7973f17 100644 --- a/include/crm/common/internal.h +++ b/include/crm/common/internal.h @@ -246,6 +246,7 @@ pcmk__flag_text(uint64_t flag_group, uint64_t flags) // miscellaneous utilities (from utils.c) +int pcmk__daemon_user(uid_t *uid, gid_t *gid); void pcmk__daemonize(const char *name, const char *pidfile); char *pcmk__generate_uuid(void); void pcmk__panic(const char *reason); diff --git a/lib/cib/cib_file.c b/lib/cib/cib_file.c index 211084b3f0c..57e8fa3e7b1 100644 --- a/lib/cib/cib_file.c +++ b/lib/cib/cib_file.c @@ -444,17 +444,18 @@ cib_file_signon(cib_t *cib, const char *name, enum cib_conn_type type) static int cib_file_write_live(xmlNode *cib_root, char *path) { - uid_t uid = geteuid(); - struct passwd *daemon_pwent; + uid_t euid = geteuid(); + uid_t daemon_uid = 0; + gid_t daemon_gid = 0; char *sep = strrchr(path, '/'); const char *cib_dirname, *cib_filename; - int rc = 0; + int rc = pcmk_rc_ok; /* Get the desired uid/gid */ - errno = 0; - daemon_pwent = getpwnam(CRM_DAEMON_USER); - if (daemon_pwent == NULL) { - crm_perror(LOG_ERR, "Could not find %s user", CRM_DAEMON_USER); + rc = pcmk__daemon_user(&daemon_uid, &daemon_gid); + if (rc != pcmk_rc_ok) { + crm_perror(LOG_ERR, "Could not find user '" CRM_DAEMON_USER "': %s", + pcmk_rc_str(rc)); return -1; } @@ -462,9 +463,11 @@ cib_file_write_live(xmlNode *cib_root, char *path) * if we're daemon, anything we create will be OK; * otherwise, block access so we don't create wrong owner */ - if ((uid != 0) && (uid != daemon_pwent->pw_uid)) { - crm_perror(LOG_ERR, "Must be root or %s to modify live CIB", - CRM_DAEMON_USER); + if ((euid != 0) && (euid != daemon_uid)) { + crm_perror(LOG_ERR, + "Must be root or " CRM_DAEMON_USER " to modify live CIB"); + + // @TODO Should this return -1 instead? return 0; } @@ -485,9 +488,9 @@ cib_file_write_live(xmlNode *cib_root, char *path) } /* if we're root, we want to update the file ownership */ - if (uid == 0) { - cib_file_owner = daemon_pwent->pw_uid; - cib_file_group = daemon_pwent->pw_gid; + if (euid == 0) { + cib_file_owner = daemon_uid; + cib_file_group = daemon_gid; cib_do_chown = TRUE; } @@ -498,7 +501,7 @@ cib_file_write_live(xmlNode *cib_root, char *path) } /* turn off file ownership changes, for other callers */ - if (uid == 0) { + if (euid == 0) { cib_do_chown = FALSE; } diff --git a/lib/common/io.c b/lib/common/io.c index dae89c38069..2f11d436dbc 100644 --- a/lib/common/io.c +++ b/lib/common/io.c @@ -249,19 +249,19 @@ pcmk__chown_series_sequence(const char *directory, const char *series, static bool pcmk__daemon_user_can_write(const char *target_name, struct stat *target_stat) { - struct passwd *sys_user = NULL; + uid_t daemon_uid = 0; + int rc = pcmk__daemon_user(&daemon_uid, NULL); - errno = 0; - sys_user = getpwnam(CRM_DAEMON_USER); - if (sys_user == NULL) { - crm_notice("Could not find user %s: %s", - CRM_DAEMON_USER, pcmk_rc_str(errno)); + if (rc != pcmk_rc_ok) { + crm_notice("Could not find user '" CRM_DAEMON_USER "': %s", + pcmk_rc_str(rc)); return FALSE; } - if (target_stat->st_uid != sys_user->pw_uid) { - crm_notice("%s is not owned by user %s " QB_XS " uid %d != %d", - target_name, CRM_DAEMON_USER, sys_user->pw_uid, - target_stat->st_uid); + if (target_stat->st_uid != daemon_uid) { + crm_notice("%s is not owned by user '" CRM_DAEMON_USER "' " + QB_XS " uid %lld != %lld", + target_name, (long long) daemon_uid, + (long long) target_stat->st_uid); return FALSE; } if ((target_stat->st_mode & (S_IRUSR | S_IWUSR)) == 0) { @@ -277,20 +277,20 @@ pcmk__daemon_user_can_write(const char *target_name, struct stat *target_stat) static bool pcmk__daemon_group_can_write(const char *target_name, struct stat *target_stat) { - struct group *sys_grp = NULL; + gid_t daemon_gid = 0; + int rc = pcmk__daemon_user(NULL, &daemon_gid); - errno = 0; - sys_grp = getgrnam(CRM_DAEMON_GROUP); - if (sys_grp == NULL) { - crm_notice("Could not find group %s: %s", - CRM_DAEMON_GROUP, pcmk_rc_str(errno)); + if (rc != pcmk_rc_ok) { + crm_notice("Could not find group '" CRM_DAEMON_GROUP "': %s", + pcmk_rc_str(rc)); return FALSE; } - if (target_stat->st_gid != sys_grp->gr_gid) { - crm_notice("%s is not owned by group %s " QB_XS " uid %d != %d", - target_name, CRM_DAEMON_GROUP, - sys_grp->gr_gid, target_stat->st_gid); + if (target_stat->st_gid != daemon_gid) { + crm_notice("%s is not owned by group '" CRM_DAEMON_GROUP "' " + QB_XS " gid %lld != %lld", + target_name, (long long) daemon_gid, + (long long) target_stat->st_gid); return FALSE; } diff --git a/lib/common/ipc_client.c b/lib/common/ipc_client.c index 57e1df51865..425a04415a3 100644 --- a/lib/common/ipc_client.c +++ b/lib/common/ipc_client.c @@ -919,8 +919,7 @@ pcmk__connect_generic_ipc(crm_ipc_t *ipc) return -rc; } - rc = pcmk_daemon_user(&cl_uid, &cl_gid); - rc = pcmk_legacy2rc(rc); + rc = pcmk__daemon_user(&cl_uid, &cl_gid); if (rc != pcmk_rc_ok) { crm_ipc_close(ipc); return rc; diff --git a/lib/common/ipc_server.c b/lib/common/ipc_server.c index c36a4ec033a..d29c049c92a 100644 --- a/lib/common/ipc_server.c +++ b/lib/common/ipc_server.c @@ -215,13 +215,13 @@ pcmk__new_client(qb_ipcs_connection_t *c, uid_t uid_client, gid_t gid_client) CRM_CHECK(c != NULL, return NULL); - if (pcmk_daemon_user(&uid_cluster, &gid_cluster) < 0) { - static bool need_log = TRUE; + if (pcmk__daemon_user(&uid_cluster, &gid_cluster) != pcmk_rc_ok) { + static bool need_log = true; if (need_log) { - crm_warn("Could not find user and group IDs for user %s", + crm_warn("Could not find user and group IDs for user " CRM_DAEMON_USER); - need_log = FALSE; + need_log = false; } } diff --git a/lib/common/logging.c b/lib/common/logging.c index 3a75b459004..9400e4c1ac6 100644 --- a/lib/common/logging.c +++ b/lib/common/logging.c @@ -225,7 +225,7 @@ chown_logfile(const char *filename, int logfd) uid_t pcmk_uid = 0; gid_t pcmk_gid = 0; struct stat st; - int rc; + int rc = pcmk_rc_ok; // Get the log file's current ownership and permissions if (fstat(logfd, &st) < 0) { @@ -234,9 +234,8 @@ chown_logfile(const char *filename, int logfd) // Any other errors don't prevent file from being used as log - rc = pcmk_daemon_user(&pcmk_uid, &pcmk_gid); - if (rc != pcmk_ok) { - rc = pcmk_legacy2rc(rc); + rc = pcmk__daemon_user(&pcmk_uid, &pcmk_gid); + if (rc != pcmk_rc_ok) { crm_warn("Not changing '%s' ownership because user information " "unavailable: %s", filename, pcmk_rc_str(rc)); return pcmk_rc_ok; diff --git a/lib/common/tests/utils/Makefile.am b/lib/common/tests/utils/Makefile.am index 988fda9014a..1ecd87d5915 100644 --- a/lib/common/tests/utils/Makefile.am +++ b/lib/common/tests/utils/Makefile.am @@ -1,5 +1,5 @@ # -# Copyright 2020-2024 the Pacemaker project contributors +# Copyright 2020-2025 the Pacemaker project contributors # # The version control history for this file may have further details. # @@ -14,7 +14,7 @@ include $(top_srcdir)/mk/unittest.mk # Add "_test" to the end of all test program names to simplify .gitignore. check_PROGRAMS = compare_version_test \ crm_user_lookup_test \ - pcmk_daemon_user_test \ + pcmk__daemon_user_test \ pcmk__fail_attr_name_test \ pcmk__failcount_name_test \ pcmk__getpid_s_test \ diff --git a/lib/common/tests/utils/pcmk_daemon_user_test.c b/lib/common/tests/utils/pcmk__daemon_user_test.c similarity index 61% rename from lib/common/tests/utils/pcmk_daemon_user_test.c rename to lib/common/tests/utils/pcmk__daemon_user_test.c index a63ca737359..dbf063c72c0 100644 --- a/lib/common/tests/utils/pcmk_daemon_user_test.c +++ b/lib/common/tests/utils/pcmk__daemon_user_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2022 the Pacemaker project contributors + * Copyright 2022-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -20,8 +20,8 @@ static void no_matching_pwent(void **state) { - uid_t uid; - gid_t gid; + uid_t uid = 0; + gid_t gid = 0; // Set getpwnam_r() return value and result parameter pcmk__mock_getpwnam_r = true; @@ -34,7 +34,7 @@ no_matching_pwent(void **state) will_return(__wrap_getpwnam_r, ENOENT); will_return(__wrap_getpwnam_r, NULL); - assert_int_equal(pcmk_daemon_user(&uid, &gid), -ENOENT); + assert_int_equal(pcmk__daemon_user(&uid, &gid), ENOENT); pcmk__mock_getpwnam_r = false; } @@ -42,17 +42,14 @@ no_matching_pwent(void **state) static void entry_found(void **state) { - uid_t uid; - gid_t gid; + uid_t uid = 0; + gid_t gid = 0; - /* We don't care about any of the other fields of the password entry, so just - * leave them blank. - */ + // We don't care about the other fields of the passwd entry struct passwd returned_ent = { .pw_uid = 1000, .pw_gid = 1000 }; - /* Test getpwnam_r returning a valid passwd entry, but we don't pass uid or gid. */ + // Test getpwnam_r() returning a valid passwd entry with null output args - // Set getpwnam_r() return value and result parameter pcmk__mock_getpwnam_r = true; expect_string(__wrap_getpwnam_r, name, "hacluster"); @@ -63,15 +60,25 @@ entry_found(void **state) will_return(__wrap_getpwnam_r, 0); will_return(__wrap_getpwnam_r, &returned_ent); - assert_int_equal(pcmk_daemon_user(NULL, NULL), 0); + assert_int_equal(pcmk__daemon_user(NULL, NULL), pcmk_rc_ok); - /* Test getpwnam_r returning a valid passwd entry, and we do pass uid and gid. */ + // Test getpwnam_r() returning a valid passwd entry with non-NULL outputs - /* We don't need to call will_return() again because pcmk_daemon_user() - * will have cached the uid/gid from the previous call and won't make - * another call to getpwnam_r(). + /* We don't need to call expect_*() or will_return() again because + * pcmk__daemon_user() will have cached the uid/gid from the previous call + * and won't make another call to getpwnam_r(). */ - assert_int_equal(pcmk_daemon_user(&uid, &gid), 0); + assert_int_equal(pcmk__daemon_user(&uid, NULL), pcmk_rc_ok); + assert_int_equal(uid, 1000); + assert_int_equal(gid, 0); + + uid = 0; + assert_int_equal(pcmk__daemon_user(NULL, &gid), pcmk_rc_ok); + assert_int_equal(uid, 0); + assert_int_equal(gid, 1000); + + gid = 0; + assert_int_equal(pcmk__daemon_user(&uid, &gid), pcmk_rc_ok); assert_int_equal(uid, 1000); assert_int_equal(gid, 1000); diff --git a/lib/common/utils.c b/lib/common/utils.c index bcb63915a3c..2f269b41549 100644 --- a/lib/common/utils.c +++ b/lib/common/utils.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. * @@ -127,6 +127,40 @@ crm_user_lookup(const char *name, uid_t * uid, gid_t * gid) return rc; } +/*! + * \internal + * \brief Get user and group IDs of Pacemaker daemon user + * + * \param[out] uid Where to store daemon user ID (can be \c NULL) + * \param[out] gid Where to store daemon group ID (can be \c NULL) + * + * \return Standard Pacemaker return code + */ +int +pcmk__daemon_user(uid_t *uid, gid_t *gid) +{ + static uid_t daemon_uid = 0; + static gid_t daemon_gid = 0; + static bool found = false; + + if (!found) { + int rc = crm_user_lookup(CRM_DAEMON_USER, &daemon_uid, &daemon_gid); + + if (rc != pcmk_ok) { + return pcmk_legacy2rc(rc); + } + found = true; + } + + if (uid != NULL) { + *uid = daemon_uid; + } + if (gid != NULL) { + *gid = daemon_gid; + } + return pcmk_rc_ok; +} + /*! * \brief Get user and group IDs of pacemaker daemon user * From 97d7e46c34d627297627a7b4a16731204b7cb2b9 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 24 Mar 2025 01:50:47 -0700 Subject: [PATCH 138/186] API: libcrmcommon: Deprecate pcmk_daemon_user() We don't need to offer a way to get a user's UID and GID as part of the public API. CRM_DAEMON_USER is available via crm_config.h. External callers can use standard system utilities like getpwnam() to get the UID and GID if necessary. Signed-off-by: Reid Wahl --- include/crm/common/util.h | 1 - include/crm/common/util_compat.h | 4 +++ lib/common/utils.c | 58 ++++++++++++++------------------ 3 files changed, 29 insertions(+), 34 deletions(-) diff --git a/include/crm/common/util.h b/include/crm/common/util.h index 178826d8c33..af870679203 100644 --- a/include/crm/common/util.h +++ b/include/crm/common/util.h @@ -46,7 +46,6 @@ int compare_version(const char *version1, const char *version2); void pcmk_common_cleanup(void); int crm_user_lookup(const char *name, uid_t * uid, gid_t * gid); -int pcmk_daemon_user(uid_t *uid, gid_t *gid); #ifdef __cplusplus } diff --git a/include/crm/common/util_compat.h b/include/crm/common/util_compat.h index 9e0dfcafff2..105f2012378 100644 --- a/include/crm/common/util_compat.h +++ b/include/crm/common/util_compat.h @@ -12,6 +12,7 @@ #include // bool #include // uint64_t +#include // uid_t, gid_t #include // gboolean @@ -65,6 +66,9 @@ char *crm_md5sum(const char *buffer); //! \deprecated Do not use char *crm_generate_uuid(void); +//! \deprecated Do not use +int pcmk_daemon_user(uid_t *uid, gid_t *gid); + #ifdef __cplusplus } #endif diff --git a/lib/common/utils.c b/lib/common/utils.c index 2f269b41549..bb223084e3d 100644 --- a/lib/common/utils.c +++ b/lib/common/utils.c @@ -161,39 +161,6 @@ pcmk__daemon_user(uid_t *uid, gid_t *gid) return pcmk_rc_ok; } -/*! - * \brief Get user and group IDs of pacemaker daemon user - * - * \param[out] uid If non-NULL, where to store daemon user ID - * \param[out] gid If non-NULL, where to store daemon group ID - * - * \return pcmk_ok on success, -errno otherwise - */ -int -pcmk_daemon_user(uid_t *uid, gid_t *gid) -{ - static uid_t daemon_uid; - static gid_t daemon_gid; - static bool found = false; - int rc = pcmk_ok; - - if (!found) { - rc = crm_user_lookup(CRM_DAEMON_USER, &daemon_uid, &daemon_gid); - if (rc == pcmk_ok) { - found = true; - } - } - if (found) { - if (uid) { - *uid = daemon_uid; - } - if (gid) { - *gid = daemon_gid; - } - } - return rc; -} - /*! * \internal * \brief Return the integer equivalent of a portion of a string @@ -556,5 +523,30 @@ crm_generate_uuid(void) return pcmk__generate_uuid(); } +int +pcmk_daemon_user(uid_t *uid, gid_t *gid) +{ + static uid_t daemon_uid; + static gid_t daemon_gid; + static bool found = false; + int rc = pcmk_ok; + + if (!found) { + rc = crm_user_lookup(CRM_DAEMON_USER, &daemon_uid, &daemon_gid); + if (rc == pcmk_ok) { + found = true; + } + } + if (found) { + if (uid) { + *uid = daemon_uid; + } + if (gid) { + *gid = daemon_gid; + } + } + return rc; +} + // LCOV_EXCL_STOP // End deprecated API From e47b019e3cfff309da0a8297d4ba774fee5d4ccf Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Sun, 23 Mar 2025 23:24:13 -0700 Subject: [PATCH 139/186] API: libcrmservice: Change services_action_user() not-found return code This is mostly a refactor commit that causes a small change to the libcrmservice API. See final paragraph. Create a new pcmk__lookup_user() to replace crm_user_lookup(). This new function calls getpwnam() instead of getpwnam_r(). Since Pacemaker is single-threaded and doesn't need reentrancy for this call, I can't think of any good reason why we ever needed getpwnam_r(). It requires defining a struct passwd and allocating a buffer to copy its string members into, which makes everything more complicated. getpwnam() is basically equivalent but returns a pointer and sets errno. All we need are the uid and gid members. Most of this commit is actually changes to mocking and unit testing, and having to remember how the expect and will_return stuff works, due to using getpwnam() instead of getpwnam_r(). This changes the specific error return codes from services_action_user() in some cases. The default "no match" return code, if no entry pointer is returned and errno is 0, is now ENOENT. Previously it was EINVAL. I think this is acceptable, even though it technically changes the API. We never documented specific error codes. As long as a caller considers any nonzero code to be an error, nothing changes. (I'm not sure if there's any legitimate use case for an external caller to create or modify a service action directly anyway.) Signed-off-by: Reid Wahl --- daemons/based/based_remote.c | 12 +- include/crm/common/internal.h | 5 +- lib/common/mock.c | 35 ++--- lib/common/mock_private.h | 10 +- lib/common/tests/utils/Makefile.am | 2 +- lib/common/tests/utils/crm_user_lookup_test.c | 127 --------------- .../tests/utils/pcmk__daemon_user_test.c | 35 ++--- .../tests/utils/pcmk__lookup_user_test.c | 147 ++++++++++++++++++ lib/common/utils.c | 46 +++++- lib/services/services.c | 6 +- mk/tap.mk | 4 +- 11 files changed, 238 insertions(+), 191 deletions(-) delete mode 100644 lib/common/tests/utils/crm_user_lookup_test.c create mode 100644 lib/common/tests/utils/pcmk__lookup_user_test.c diff --git a/daemons/based/based_remote.c b/daemons/based/based_remote.c index 0ef01292efd..ea9fe3f9914 100644 --- a/daemons/based/based_remote.c +++ b/daemons/based/based_remote.c @@ -151,16 +151,18 @@ static int check_group_membership(const char *usr, const char *grp) { int index = 0; - struct passwd *pwd = NULL; + gid_t gid = 0; struct group *group = NULL; + int rc = pcmk_rc_ok; - pwd = getpwnam(usr); - if (pwd == NULL) { - crm_notice("Rejecting remote client: '%s' is not a valid user", usr); + rc = pcmk__lookup_user(usr, NULL, &gid); + if (rc != pcmk_rc_ok) { + crm_notice("Rejecting remote client: could not find user '%s': %s", + usr, pcmk_rc_str(rc)); return FALSE; } - group = getgrgid(pwd->pw_gid); + group = getgrgid(gid); if (group != NULL && pcmk__str_eq(grp, group->gr_name, pcmk__str_none)) { return TRUE; } diff --git a/include/crm/common/internal.h b/include/crm/common/internal.h index 9bae7973f17..09e5e3a0919 100644 --- a/include/crm/common/internal.h +++ b/include/crm/common/internal.h @@ -10,9 +10,11 @@ #ifndef PCMK__CRM_COMMON_INTERNAL__H #define PCMK__CRM_COMMON_INTERNAL__H -#include // pid_t, getpid() +#include // struct passwd +#include // getpid() #include // bool #include // uint8_t, uint64_t +#include // pid_t, uid_t, gid_t #include // PRIu64 #include // guint, GList, GHashTable @@ -249,6 +251,7 @@ pcmk__flag_text(uint64_t flag_group, uint64_t flags) int pcmk__daemon_user(uid_t *uid, gid_t *gid); void pcmk__daemonize(const char *name, const char *pidfile); char *pcmk__generate_uuid(void); +int pcmk__lookup_user(const char *name, uid_t *uid, gid_t *gid); void pcmk__panic(const char *reason); pid_t pcmk__locate_sbd(void); void pcmk__sleep_ms(unsigned int ms); diff --git a/lib/common/mock.c b/lib/common/mock.c index 08f025b1dd9..559ec5dd3aa 100644 --- a/lib/common/mock.c +++ b/lib/common/mock.c @@ -356,41 +356,30 @@ __wrap_fopen64(const char *pathname, const char *mode) } #endif -/* getpwnam_r() +/* getpwnam() * - * If pcmk__mock_getpwnam_r is set to true, later calls to getpwnam_r() must be + * If pcmk__mock_getpwnam is set to true, later calls to getpwnam() must be * preceded by: * - * expect_*(__wrap_getpwnam_r, name[, ...]); - * expect_*(__wrap_getpwnam_r, pwd[, ...]); - * expect_*(__wrap_getpwnam_r, buf[, ...]); - * expect_*(__wrap_getpwnam_r, buflen[, ...]); - * expect_*(__wrap_getpwnam_r, result[, ...]); - * will_return(__wrap_getpwnam_r, return_value); - * will_return(__wrap_getpwnam_r, ptr_to_result_struct); + * expect_*(__wrap_getpwnam, name[, ...]); + * will_return(__wrap_getpwnam, errno_to_set); + * will_return(__wrap_getpwnam, ptr_to_result_struct); * * expect_* functions: https://api.cmocka.org/group__cmocka__param.html */ -bool pcmk__mock_getpwnam_r = false; +bool pcmk__mock_getpwnam = false; -int -__wrap_getpwnam_r(const char *name, struct passwd *pwd, char *buf, - size_t buflen, struct passwd **result) +struct passwd * +__wrap_getpwnam(const char *name) { - if (pcmk__mock_getpwnam_r) { - int retval = mock_type(int); - + if (pcmk__mock_getpwnam) { check_expected_ptr(name); - check_expected_ptr(pwd); - check_expected_ptr(buf); - check_expected(buflen); - check_expected_ptr(result); - *result = mock_ptr_type(struct passwd *); - return retval; + errno = mock_type(int); + return mock_ptr_type(struct passwd *); } else { - return __real_getpwnam_r(name, pwd, buf, buflen, result); + return __real_getpwnam(name); } } diff --git a/lib/common/mock_private.h b/lib/common/mock_private.h index 272714f1871..5fa2d918fa6 100644 --- a/lib/common/mock_private.h +++ b/lib/common/mock_private.h @@ -1,5 +1,5 @@ /* - * Copyright 2021-2024 the Pacemaker project contributors + * Copyright 2021-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -74,11 +74,9 @@ struct group * __real_getgrent(void); void __wrap_endgrent(void); void __real_endgrent(void); -extern bool pcmk__mock_getpwnam_r; -int __real_getpwnam_r(const char *name, struct passwd *pwd, - char *buf, size_t buflen, struct passwd **result); -int __wrap_getpwnam_r(const char *name, struct passwd *pwd, - char *buf, size_t buflen, struct passwd **result); +extern bool pcmk__mock_getpwnam; +struct passwd *__real_getpwnam(const char *name); +struct passwd *__wrap_getpwnam(const char *name); extern bool pcmk__mock_readlink; ssize_t __real_readlink(const char *restrict path, char *restrict buf, diff --git a/lib/common/tests/utils/Makefile.am b/lib/common/tests/utils/Makefile.am index 1ecd87d5915..9e78afe01db 100644 --- a/lib/common/tests/utils/Makefile.am +++ b/lib/common/tests/utils/Makefile.am @@ -13,12 +13,12 @@ include $(top_srcdir)/mk/unittest.mk # Add "_test" to the end of all test program names to simplify .gitignore. check_PROGRAMS = compare_version_test \ - crm_user_lookup_test \ pcmk__daemon_user_test \ pcmk__fail_attr_name_test \ pcmk__failcount_name_test \ pcmk__getpid_s_test \ pcmk__lastfailure_name_test \ + pcmk__lookup_user_test \ pcmk__realloc_test \ pcmk__timeout_ms2s_test diff --git a/lib/common/tests/utils/crm_user_lookup_test.c b/lib/common/tests/utils/crm_user_lookup_test.c deleted file mode 100644 index 5842ec5027b..00000000000 --- a/lib/common/tests/utils/crm_user_lookup_test.c +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright 2022 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 "crmcommon_private.h" -#include "mock_private.h" - -#include -#include - -static void -calloc_fails(void **state) -{ - uid_t uid; - gid_t gid; - - pcmk__mock_calloc = true; // calloc() will return NULL - - expect_value(__wrap_calloc, nmemb, 1); - expect_value(__wrap_calloc, size, PCMK__PW_BUFFER_LEN); - assert_int_equal(crm_user_lookup("hauser", &uid, &gid), -ENOMEM); - - pcmk__mock_calloc = false; // Use real calloc() -} - -static void -getpwnam_r_fails(void **state) -{ - uid_t uid; - gid_t gid; - - // Set getpwnam_r() return value and result parameter - pcmk__mock_getpwnam_r = true; - - expect_string(__wrap_getpwnam_r, name, "hauser"); - expect_any(__wrap_getpwnam_r, pwd); - expect_any(__wrap_getpwnam_r, buf); - expect_value(__wrap_getpwnam_r, buflen, PCMK__PW_BUFFER_LEN); - expect_any(__wrap_getpwnam_r, result); - will_return(__wrap_getpwnam_r, EIO); - will_return(__wrap_getpwnam_r, NULL); - - assert_int_equal(crm_user_lookup("hauser", &uid, &gid), -EIO); - - pcmk__mock_getpwnam_r = false; -} - -static void -no_matching_pwent(void **state) -{ - uid_t uid; - gid_t gid; - - // Set getpwnam_r() return value and result parameter - pcmk__mock_getpwnam_r = true; - - expect_string(__wrap_getpwnam_r, name, "hauser"); - expect_any(__wrap_getpwnam_r, pwd); - expect_any(__wrap_getpwnam_r, buf); - expect_value(__wrap_getpwnam_r, buflen, PCMK__PW_BUFFER_LEN); - expect_any(__wrap_getpwnam_r, result); - will_return(__wrap_getpwnam_r, 0); - will_return(__wrap_getpwnam_r, NULL); - - assert_int_equal(crm_user_lookup("hauser", &uid, &gid), -EINVAL); - - pcmk__mock_getpwnam_r = false; -} - -static void -entry_found(void **state) -{ - uid_t uid; - gid_t gid; - - /* We don't care about any of the other fields of the password entry, so just - * leave them blank. - */ - struct passwd returned_ent = { .pw_uid = 1000, .pw_gid = 1000 }; - - /* Test getpwnam_r returning a valid passwd entry, but we don't pass uid or gid. */ - - // Set getpwnam_r() return value and result parameter - pcmk__mock_getpwnam_r = true; - - expect_string(__wrap_getpwnam_r, name, "hauser"); - expect_any(__wrap_getpwnam_r, pwd); - expect_any(__wrap_getpwnam_r, buf); - expect_value(__wrap_getpwnam_r, buflen, PCMK__PW_BUFFER_LEN); - expect_any(__wrap_getpwnam_r, result); - will_return(__wrap_getpwnam_r, 0); - will_return(__wrap_getpwnam_r, &returned_ent); - - assert_int_equal(crm_user_lookup("hauser", NULL, NULL), 0); - - /* Test getpwnam_r returning a valid passwd entry, and we do pass uid and gid. */ - - // Set getpwnam_r() return value and result parameter - expect_string(__wrap_getpwnam_r, name, "hauser"); - expect_any(__wrap_getpwnam_r, pwd); - expect_any(__wrap_getpwnam_r, buf); - expect_value(__wrap_getpwnam_r, buflen, PCMK__PW_BUFFER_LEN); - expect_any(__wrap_getpwnam_r, result); - will_return(__wrap_getpwnam_r, 0); - will_return(__wrap_getpwnam_r, &returned_ent); - - assert_int_equal(crm_user_lookup("hauser", &uid, &gid), 0); - assert_int_equal(uid, 1000); - assert_int_equal(gid, 1000); - - pcmk__mock_getpwnam_r = false; -} - -PCMK__UNIT_TEST(NULL, NULL, - cmocka_unit_test(calloc_fails), - cmocka_unit_test(getpwnam_r_fails), - cmocka_unit_test(no_matching_pwent), - cmocka_unit_test(entry_found)) diff --git a/lib/common/tests/utils/pcmk__daemon_user_test.c b/lib/common/tests/utils/pcmk__daemon_user_test.c index dbf063c72c0..1cbd01315b7 100644 --- a/lib/common/tests/utils/pcmk__daemon_user_test.c +++ b/lib/common/tests/utils/pcmk__daemon_user_test.c @@ -23,20 +23,15 @@ no_matching_pwent(void **state) uid_t uid = 0; gid_t gid = 0; - // Set getpwnam_r() return value and result parameter - pcmk__mock_getpwnam_r = true; + pcmk__mock_getpwnam = true; - expect_string(__wrap_getpwnam_r, name, "hacluster"); - expect_any(__wrap_getpwnam_r, pwd); - expect_any(__wrap_getpwnam_r, buf); - expect_value(__wrap_getpwnam_r, buflen, PCMK__PW_BUFFER_LEN); - expect_any(__wrap_getpwnam_r, result); - will_return(__wrap_getpwnam_r, ENOENT); - will_return(__wrap_getpwnam_r, NULL); + expect_string(__wrap_getpwnam, name, "hacluster"); + will_return(__wrap_getpwnam, 0); + will_return(__wrap_getpwnam, NULL); assert_int_equal(pcmk__daemon_user(&uid, &gid), ENOENT); - pcmk__mock_getpwnam_r = false; + pcmk__mock_getpwnam = false; } static void @@ -48,25 +43,21 @@ entry_found(void **state) // We don't care about the other fields of the passwd entry struct passwd returned_ent = { .pw_uid = 1000, .pw_gid = 1000 }; - // Test getpwnam_r() returning a valid passwd entry with null output args + // Test getpwnam() returning a valid passwd entry with null output args - pcmk__mock_getpwnam_r = true; + pcmk__mock_getpwnam = true; - expect_string(__wrap_getpwnam_r, name, "hacluster"); - expect_any(__wrap_getpwnam_r, pwd); - expect_any(__wrap_getpwnam_r, buf); - expect_value(__wrap_getpwnam_r, buflen, PCMK__PW_BUFFER_LEN); - expect_any(__wrap_getpwnam_r, result); - will_return(__wrap_getpwnam_r, 0); - will_return(__wrap_getpwnam_r, &returned_ent); + expect_string(__wrap_getpwnam, name, "hacluster"); + will_return(__wrap_getpwnam, 0); + will_return(__wrap_getpwnam, &returned_ent); assert_int_equal(pcmk__daemon_user(NULL, NULL), pcmk_rc_ok); - // Test getpwnam_r() returning a valid passwd entry with non-NULL outputs + // Test getpwnam() returning a valid passwd entry with non-NULL outputs /* We don't need to call expect_*() or will_return() again because * pcmk__daemon_user() will have cached the uid/gid from the previous call - * and won't make another call to getpwnam_r(). + * and won't make another call to getpwnam(). */ assert_int_equal(pcmk__daemon_user(&uid, NULL), pcmk_rc_ok); assert_int_equal(uid, 1000); @@ -82,7 +73,7 @@ entry_found(void **state) assert_int_equal(uid, 1000); assert_int_equal(gid, 1000); - pcmk__mock_getpwnam_r = false; + pcmk__mock_getpwnam = false; } PCMK__UNIT_TEST(NULL, NULL, diff --git a/lib/common/tests/utils/pcmk__lookup_user_test.c b/lib/common/tests/utils/pcmk__lookup_user_test.c new file mode 100644 index 00000000000..58fa6ae59d4 --- /dev/null +++ b/lib/common/tests/utils/pcmk__lookup_user_test.c @@ -0,0 +1,147 @@ +/* + * Copyright 2022-2025 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 "crmcommon_private.h" +#include "mock_private.h" + +#include +#include + +/*! + * \internal + * \brief Perform one test of \c pcmk__lookup_user() + * + * \param[in] name \c name argument for \c pcmk__lookup_user() + * \param[in] uid \c uid argument for \c pcmk__lookup_user() + * (unchanged upon return) + * \param[in] gid \c gid argument for \c pcmk__lookup_user() + * (unchanged upon return) + * \param[in] expected_rc Expected return code of \c pcmk__lookup_user() + * \param[in] expected_uid Expected value at \p *uid after + * \c pcmk__lookup_user() call + * \param[in] expected_gid Expected value at \p *gid after + * \c pcmk__lookup_user() call + */ +static void +assert_lookup_user(const char *name, uid_t *uid, gid_t *gid, int expected_rc, + uid_t expected_uid, gid_t expected_gid) +{ + uid_t uid_orig = ((uid != NULL)? *uid : 0); + gid_t gid_orig = ((gid != NULL)? *gid : 0); + + assert_int_equal(pcmk__lookup_user(name, uid, gid), expected_rc); + + if (uid != NULL) { + assert_int_equal(*uid, expected_uid); + *uid = uid_orig; + } + if (gid != NULL) { + assert_int_equal(*gid, expected_gid); + *gid = gid_orig; + } +} + +static void +null_name(void **state) +{ + uid_t uid = 0; + gid_t gid = 0; + + // These dump core via CRM_CHECK() + assert_lookup_user(NULL, NULL, NULL, EINVAL, 0, 0); + assert_lookup_user(NULL, NULL, &gid, EINVAL, 0, 0); + assert_lookup_user(NULL, &uid, NULL, EINVAL, 0, 0); + assert_lookup_user(NULL, &uid, &gid, EINVAL, 0, 0); +} + +static void +getpwnam_fails(void **state) +{ + uid_t uid = 0; + gid_t gid = 0; + + pcmk__mock_getpwnam = true; + + expect_string(__wrap_getpwnam, name, "hauser"); + will_return(__wrap_getpwnam, EIO); // errno + will_return(__wrap_getpwnam, NULL); // return value + assert_lookup_user("hauser", &uid, &gid, EIO, 0, 0); + + pcmk__mock_getpwnam = false; +} + +static void +no_matching_pwent(void **state) +{ + uid_t uid = 0; + gid_t gid = 0; + + pcmk__mock_getpwnam = true; + + /* errno may or may not be set when no matching passwd entry is found. + * However, if the return value is NULL and errno == 0, then we can be sure + * no entry was found. In other words, it's sufficient but not necessary. So + * this is our test case for "no matching entry," and we should return + * ENOENT. + */ + expect_string(__wrap_getpwnam, name, "hauser"); + will_return(__wrap_getpwnam, 0); // errno + will_return(__wrap_getpwnam, NULL); // return value + assert_lookup_user("hauser", &uid, &gid, ENOENT, 0, 0); + + pcmk__mock_getpwnam = false; +} + +static void +entry_found(void **state) +{ + uid_t uid = 0; + gid_t gid = 0; + + // We don't care about the other fields of the passwd entry + struct passwd returned_ent = { .pw_uid = 1000, .pw_gid = 1000 }; + + pcmk__mock_getpwnam = true; + + // NULL uid and NULL gid + expect_string(__wrap_getpwnam, name, "hauser"); + will_return(__wrap_getpwnam, 0); + will_return(__wrap_getpwnam, &returned_ent); + assert_lookup_user("hauser", NULL, NULL, pcmk_rc_ok, 0, 0); + + // Non-NULL uid and NULL gid + expect_string(__wrap_getpwnam, name, "hauser"); + will_return(__wrap_getpwnam, 0); + will_return(__wrap_getpwnam, &returned_ent); + assert_lookup_user("hauser", &uid, NULL, pcmk_rc_ok, 1000, 0); + + // NULL uid and non-NULL gid + expect_string(__wrap_getpwnam, name, "hauser"); + will_return(__wrap_getpwnam, 0); + will_return(__wrap_getpwnam, &returned_ent); + assert_lookup_user("hauser", NULL, &gid, pcmk_rc_ok, 0, 1000); + + // Non-NULL uid and non-NULL gid + expect_string(__wrap_getpwnam, name, "hauser"); + will_return(__wrap_getpwnam, 0); + will_return(__wrap_getpwnam, &returned_ent); + assert_lookup_user("hauser", &uid, &gid, pcmk_rc_ok, 1000, 1000); + + pcmk__mock_getpwnam = false; +} + +PCMK__UNIT_TEST(NULL, NULL, + cmocka_unit_test(null_name), + cmocka_unit_test(getpwnam_fails), + cmocka_unit_test(no_matching_pwent), + cmocka_unit_test(entry_found)) diff --git a/lib/common/utils.c b/lib/common/utils.c index bb223084e3d..2f9bd671ca9 100644 --- a/lib/common/utils.c +++ b/lib/common/utils.c @@ -95,6 +95,46 @@ pcmk__is_user_in_group(const char *user, const char *group) return false; } +int +pcmk__lookup_user(const char *name, uid_t *uid, gid_t *gid) +{ + struct passwd *pwentry = NULL; + + CRM_CHECK(name != NULL, return EINVAL); + + // getpwnam() is not thread-safe, but Pacemaker is single-threaded + errno = 0; + pwentry = getpwnam(name); + if (pwentry == NULL) { + /* Either an error occurred or no passwd entry was found. + * + * The value of errno is implementation-dependent if no passwd entry is + * found. The POSIX specification does not consider it an error. + * POSIX.1-2008 specifies that errno shall not be changed in this case, + * while POSIX.1-2001 does not specify the value of errno in this case. + * The man page on Linux notes that a variety of values have been + * observed in practice. So an implementation may set errno to an + * arbitrary value, despite the POSIX specification. + * + * However, if pwentry == NULL and errno == 0, then we know that no + * matching entry was found and there was no error. So we default to + * ENOENT as our return code. + */ + return ((errno != 0)? errno : ENOENT); + } + + if (uid != NULL) { + *uid = pwentry->pw_uid; + } + if (gid != NULL) { + *gid = pwentry->pw_gid; + } + crm_trace("User %s has uid=%lld gid=%lld", name, + (long long) pwentry->pw_uid, (long long) pwentry->pw_gid); + + return pcmk_rc_ok; +} + int crm_user_lookup(const char *name, uid_t * uid, gid_t * gid) { @@ -144,10 +184,10 @@ pcmk__daemon_user(uid_t *uid, gid_t *gid) static bool found = false; if (!found) { - int rc = crm_user_lookup(CRM_DAEMON_USER, &daemon_uid, &daemon_gid); + int rc = pcmk__lookup_user(CRM_DAEMON_USER, &daemon_uid, &daemon_gid); - if (rc != pcmk_ok) { - return pcmk_legacy2rc(rc); + if (rc != pcmk_rc_ok) { + return rc; } found = true; } diff --git a/lib/services/services.c b/lib/services/services.c index d1055951022..566fcc226bc 100644 --- a/lib/services/services.c +++ b/lib/services/services.c @@ -435,8 +435,12 @@ services_alert_create(const char *id, const char *exec, int timeout, int services_action_user(svc_action_t *op, const char *user) { + int rc = pcmk_ok; + CRM_CHECK((op != NULL) && (user != NULL), return -EINVAL); - return crm_user_lookup(user, &(op->opaque->uid), &(op->opaque->gid)); + + rc = pcmk__lookup_user(user, &(op->opaque->uid), &(op->opaque->gid)); + return pcmk_rc2legacy(rc); } /*! diff --git a/mk/tap.mk b/mk/tap.mk index e06f9a86247..bac6d0e7e09 100644 --- a/mk/tap.mk +++ b/mk/tap.mk @@ -1,5 +1,5 @@ # -# Copyright 2021-2024 the Pacemaker project contributors +# Copyright 2021-2025 the Pacemaker project contributors # # The version control history for this file may have further details. # @@ -24,7 +24,7 @@ WRAPPED = abort \ getenv \ getpid \ getgrent \ - getpwnam_r \ + getpwnam \ readlink \ realloc \ setenv \ From 8aeefb9ddbf6465895ff6bd085eb88489042c930 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 24 Mar 2025 03:20:16 -0700 Subject: [PATCH 140/186] API: libcrmcommon: Deprecate crm_user_lookup() Signed-off-by: Reid Wahl --- include/crm/common/util.h | 1 - include/crm/common/util_compat.h | 3 ++ lib/common/utils.c | 64 ++++++++++++++++---------------- 3 files changed, 35 insertions(+), 33 deletions(-) diff --git a/include/crm/common/util.h b/include/crm/common/util.h index af870679203..37dd5c1d140 100644 --- a/include/crm/common/util.h +++ b/include/crm/common/util.h @@ -45,7 +45,6 @@ int crm_default_remote_port(void); int compare_version(const char *version1, const char *version2); void pcmk_common_cleanup(void); -int crm_user_lookup(const char *name, uid_t * uid, gid_t * gid); #ifdef __cplusplus } diff --git a/include/crm/common/util_compat.h b/include/crm/common/util_compat.h index 105f2012378..9097a97debe 100644 --- a/include/crm/common/util_compat.h +++ b/include/crm/common/util_compat.h @@ -69,6 +69,9 @@ char *crm_generate_uuid(void); //! \deprecated Do not use int pcmk_daemon_user(uid_t *uid, gid_t *gid); +//! \deprecated Do not use +int crm_user_lookup(const char *name, uid_t *uid, gid_t *gid); + #ifdef __cplusplus } #endif diff --git a/lib/common/utils.c b/lib/common/utils.c index 2f9bd671ca9..8b83b754d91 100644 --- a/lib/common/utils.c +++ b/lib/common/utils.c @@ -135,38 +135,6 @@ pcmk__lookup_user(const char *name, uid_t *uid, gid_t *gid) return pcmk_rc_ok; } -int -crm_user_lookup(const char *name, uid_t * uid, gid_t * gid) -{ - int rc = pcmk_ok; - char *buffer = NULL; - struct passwd pwd; - struct passwd *pwentry = NULL; - - buffer = calloc(1, PCMK__PW_BUFFER_LEN); - if (buffer == NULL) { - return -ENOMEM; - } - - rc = getpwnam_r(name, &pwd, buffer, PCMK__PW_BUFFER_LEN, &pwentry); - if (pwentry) { - if (uid) { - *uid = pwentry->pw_uid; - } - if (gid) { - *gid = pwentry->pw_gid; - } - crm_trace("User %s has uid=%d gid=%d", name, pwentry->pw_uid, pwentry->pw_gid); - - } else { - rc = rc? -rc : -EINVAL; - crm_info("User %s lookup: %s", name, pcmk_strerror(rc)); - } - - free(buffer); - return rc; -} - /*! * \internal * \brief Get user and group IDs of Pacemaker daemon user @@ -563,6 +531,38 @@ crm_generate_uuid(void) return pcmk__generate_uuid(); } +int +crm_user_lookup(const char *name, uid_t * uid, gid_t * gid) +{ + int rc = pcmk_ok; + char *buffer = NULL; + struct passwd pwd; + struct passwd *pwentry = NULL; + + buffer = calloc(1, PCMK__PW_BUFFER_LEN); + if (buffer == NULL) { + return -ENOMEM; + } + + rc = getpwnam_r(name, &pwd, buffer, PCMK__PW_BUFFER_LEN, &pwentry); + if (pwentry) { + if (uid) { + *uid = pwentry->pw_uid; + } + if (gid) { + *gid = pwentry->pw_gid; + } + crm_trace("User %s has uid=%d gid=%d", name, pwentry->pw_uid, pwentry->pw_gid); + + } else { + rc = rc? -rc : -EINVAL; + crm_info("User %s lookup: %s", name, pcmk_strerror(rc)); + } + + free(buffer); + return rc; +} + int pcmk_daemon_user(uid_t *uid, gid_t *gid) { From 68a3f0fee8b074bf1778df9c42d41a7cdb9d09d9 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 24 Mar 2025 11:10:04 -0700 Subject: [PATCH 141/186] Refactor: libcrmcommon: Drop PCMK__PW_BUFFER_LEN No longer needed except in deprecated code, since we no longer use getpwnam_r(). Signed-off-by: Reid Wahl --- lib/common/crmcommon_private.h | 6 ------ lib/common/utils.c | 6 ++++-- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/lib/common/crmcommon_private.h b/lib/common/crmcommon_private.h index bfd09a45d67..9d8fba2c9e2 100644 --- a/lib/common/crmcommon_private.h +++ b/lib/common/crmcommon_private.h @@ -445,12 +445,6 @@ int pcmk__evaluate_op_expression(const xmlNode *expr, const pcmk_rule_input_t *rule_input); -/* - * Utils - */ -#define PCMK__PW_BUFFER_LEN 500 - - /* * Schemas */ diff --git a/lib/common/utils.c b/lib/common/utils.c index 8b83b754d91..7b19d634d80 100644 --- a/lib/common/utils.c +++ b/lib/common/utils.c @@ -531,6 +531,8 @@ crm_generate_uuid(void) return pcmk__generate_uuid(); } +#define PW_BUFFER_LEN 500 + int crm_user_lookup(const char *name, uid_t * uid, gid_t * gid) { @@ -539,12 +541,12 @@ crm_user_lookup(const char *name, uid_t * uid, gid_t * gid) struct passwd pwd; struct passwd *pwentry = NULL; - buffer = calloc(1, PCMK__PW_BUFFER_LEN); + buffer = calloc(1, PW_BUFFER_LEN); if (buffer == NULL) { return -ENOMEM; } - rc = getpwnam_r(name, &pwd, buffer, PCMK__PW_BUFFER_LEN, &pwentry); + rc = getpwnam_r(name, &pwd, buffer, PW_BUFFER_LEN, &pwentry); if (pwentry) { if (uid) { *uid = pwentry->pw_uid; From 9bdac739db0c7ba8e0f827582f3df526de16b645 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 24 Mar 2025 11:07:57 -0700 Subject: [PATCH 142/186] Test: libcrmcommon: More compare_version() unit tests Clearly there is work to be done, even for this crude version comparison function that's designed only for dotted decimal versions. We'll create a new internal function soon and deprecate the public one. Signed-off-by: Reid Wahl --- lib/common/tests/utils/compare_version_test.c | 312 ++++++++++++++++-- 1 file changed, 291 insertions(+), 21 deletions(-) diff --git a/lib/common/tests/utils/compare_version_test.c b/lib/common/tests/utils/compare_version_test.c index d191f4abbb8..31d1a034a6c 100644 --- a/lib/common/tests/utils/compare_version_test.c +++ b/lib/common/tests/utils/compare_version_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2022-2023 the Pacemaker project contributors + * Copyright 2022-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -11,48 +11,318 @@ #include +/*! + * \internal + * \brief Compare two version strings in both directions + * + * \param[in] v1 First argument for \c compare_version() + * \param[in] v2 Second argument for \c compare_version() + * \param[in] expected_rc Expected return code from + * compare_version(v1, v2) + */ +static void +assert_compare_version(const char *v1, const char *v2, int expected_rc) +{ + assert_int_equal(compare_version(v1, v2), expected_rc); + + if (v1 != v2) { + /* Try reverse order even if expected_rc == 0, if v1 and v2 are + * different strings + */ + assert_int_equal(compare_version(v2, v1), -expected_rc); + } +} + static void empty_params(void **state) { - assert_int_equal(compare_version(NULL, NULL), 0); - assert_int_equal(compare_version(NULL, "abc"), -1); - assert_int_equal(compare_version(NULL, "1.0.1"), -1); - assert_int_equal(compare_version("abc", NULL), 1); - assert_int_equal(compare_version("1.0.1", NULL), 1); + // @FIXME Treat empty string the same as NULL + assert_compare_version(NULL, NULL, 0); + assert_compare_version(NULL, "", -1); // Should be 0 + assert_compare_version("", "", 0); + + assert_compare_version(NULL, "1.0.1", -1); + assert_compare_version("", "1.0.1", -1); + + // @FIXME NULL/empty should be equal to an invalid version + assert_compare_version(NULL, "abc", -1); // Should be 0 + assert_compare_version("", "abc", -1); // Should be 0 } static void equal_versions(void **state) { - assert_int_equal(compare_version("0.4.7", "0.4.7"), 0); - assert_int_equal(compare_version("1.0", "1.0"), 0); + assert_compare_version("0.4.7", "0.4.7", 0); + assert_compare_version("1.0", "1.0", 0); } static void unequal_versions(void **state) { - assert_int_equal(compare_version("0.4.7", "0.4.8"), -1); - assert_int_equal(compare_version("0.4.8", "0.4.7"), 1); + assert_compare_version("0.4.7", "0.4.8", -1); + assert_compare_version("0.2.3", "0.3", -1); + assert_compare_version("0.99", "1.0", -1); +} - assert_int_equal(compare_version("0.2.3", "0.3"), -1); - assert_int_equal(compare_version("0.3", "0.2.3"), 1); +static void +shorter_versions(void **state) +{ + assert_compare_version("1.0", "1.0.1", -1); + assert_compare_version("1.0", "1", 0); + assert_compare_version("1", "1.2", -1); + assert_compare_version("1.0.0", "1.0", 0); + assert_compare_version("1.0.0", "1.2", -1); + assert_compare_version("0.99", "1", -1); +} + +static void +leading_zeros(void **state) +{ + // Equal to self + assert_compare_version("00001.0", "00001.0", 0); - assert_int_equal(compare_version("0.99", "1.0"), -1); - assert_int_equal(compare_version("1.0", "0.99"), 1); + // Leading zeros in each segment are ignored + assert_compare_version("0001.0", "1", 0); + assert_compare_version("0.0001", "0.1", 0); + assert_compare_version("0001.1", "1.0001", 0); } static void -shorter_versions(void **state) +negative_sign(void **state) +{ + // Equal to self + assert_compare_version("-1", "-1", 0); + assert_compare_version("1.-1.5", "1.-1.5", 0); + + // @FIXME Treat negative version as 0 (invalid) + assert_compare_version("-1", "0", -1); // Should be 0 + assert_compare_version("-1", "0.0", -1); // Should be 0 + assert_compare_version("-1", "0.1", -1); + assert_compare_version("-1", "1.0", -1); + + assert_compare_version("-1", "-0", -1); // Should be 0 + assert_compare_version("-1", "-0.0", -1); // Should be 0 + assert_compare_version("-1", "-0.1", -1); // Should be 0 + assert_compare_version("-1", "-1.0", 0); + assert_compare_version("-1", "-2.0", 1); // Should be 0 + + // @FIXME Treat negative sign inside version as garbage + assert_compare_version("1.-1.5", "1.0", -1); // Should be 0 + assert_compare_version("1.-1.5", "1.0.5", -1); + + assert_compare_version("1.-1.5", "1.-0", -1); // Should be 0 + assert_compare_version("1.-1.5", "1.-0.5", -1); // Should be 0 + + assert_compare_version("1.-1.5", "1.-1", 1); // Should be 0 + assert_compare_version("1.-1.5", "1.-1.9", -1); // Should be 0 + + assert_compare_version("1.-1.5", "1.-2", 1); // Should be 0 + assert_compare_version("1.-1.5", "1.-2.5", 1); // Should be 0 + + assert_compare_version("1.-1.5", "2.0.5", -1); + assert_compare_version("1.-1.5", "0.0.5", 1); +} + +static void +positive_sign(void **state) { - assert_int_equal(compare_version("1.0", "1.0.1"), -1); - assert_int_equal(compare_version("1.0.1", "1.0"), 1); - assert_int_equal(compare_version("1.0", "1"), 0); - assert_int_equal(compare_version("1", "1.2"), -1); - assert_int_equal(compare_version("1.2", "1"), 1); + // Equal to self + assert_compare_version("+1", "+1", 0); + assert_compare_version("1.+1.5", "1.+1.5", 0); + + // @FIXME Treat version with explicit positive sign as 0 (invalid) + assert_compare_version("+1", "0", 1); // Should be 0 + assert_compare_version("+1", "0.0", 1); // Should be 0 + assert_compare_version("+1", "0.1", 1); // Should be -1 + assert_compare_version("+1", "1.0", 0); // Should be -1 + assert_compare_version("+1", "2.0", -1); // Should be -1 + + assert_compare_version("+1", "+0", 1); // Should be 0 + assert_compare_version("+1", "+0.0", 1); // Should be 0 + assert_compare_version("+1", "+0.1", 1); // Should be 0 + assert_compare_version("+1", "+1.0", 0); + assert_compare_version("+1", "+2.0", -1); // Should be 0 + + // @FIXME Treat positive sign inside version as garbage + assert_compare_version("1.+1.5", "1.0", 1); // Should be 0 + assert_compare_version("1.+1.5", "1.0.5", 1); // Should be -1 + + assert_compare_version("1.+1.5", "1.+0", 1); // Should be 0 + assert_compare_version("1.+1.5", "1.+0.5", 1); // Should be 0 + + assert_compare_version("1.+1.5", "1.+1", 1); // Should be 0 + assert_compare_version("1.+1.5", "1.+1.9", -1); // Should be 0 + + assert_compare_version("1.+1.5", "1.+2", -1); // Should be 0 + assert_compare_version("1.+1.5", "1.+2.5", -1); // Should be 0 + + assert_compare_version("1.+1.5", "2.0.5", -1); + assert_compare_version("1.+1.5", "0.0.5", 1); +} + +/* +static void +hex_digits(void **state) +{ + // Equal to self + assert_compare_version("a", "a", 0); + + // Hex digits > 9 are garbage + assert_compare_version("a", "0", 0); + assert_compare_version("a111", "0", 0); + assert_compare_version("a", "1", -1); + assert_compare_version("a111", "1", -1); + + assert_compare_version("1a", "1", 0); + assert_compare_version("1a111", "1", 0); + assert_compare_version("1a", "2", -1); + assert_compare_version("1a111", "2", -1); + assert_compare_version("1a", "0", 1); + assert_compare_version("1a111", "0", 1); +} +*/ + +static void +bare_dot(void **state) +{ + // Equal to self + assert_compare_version(".", ".", 0); + + // Bare dot is treated as 0 + assert_compare_version(".", "0", 0); + assert_compare_version(".", "0.1", -1); + assert_compare_version(".", "1.0", -1); +} + +static void +leading_dot(void **state) +{ + // Equal to self + assert_compare_version(".0", ".0", 0); + assert_compare_version(".1", ".1", 0); + + // Leading dot is treated as 0 + assert_compare_version(".0", "0", 0); + assert_compare_version(".0", "0.0", 0); + assert_compare_version(".0", "0.0.0", 0); + assert_compare_version(".0", "0.1", -1); + + // @FIXME .1 should equal 0, not 0.1 + assert_compare_version(".1", "0", 1); + assert_compare_version(".1", "0.0", 1); + assert_compare_version(".1", "0.0.0", 1); + assert_compare_version(".1", "0.1", 0); + assert_compare_version(".1", "0.1.0", 0); + assert_compare_version(".1", "0.2", -1); +} + +static void +trailing_dot(void **state) +{ + // Equal to self + assert_compare_version("0.", "0.", 0); + assert_compare_version("0.1.", "0.1.", 0); + + // Trailing dot is ignored + assert_compare_version("0.", "0", 0); + assert_compare_version("0.", "0.0", 0); + assert_compare_version("0.", "0.1", -1); + assert_compare_version("0.1.", "0.1", 0); + assert_compare_version("0.1.", "0.1.0", 0); + assert_compare_version("0.1.", "0.2", -1); + assert_compare_version("0.1.", "0", 1); +} + +static void +leading_spaces(void **state) +{ + // Equal to self + assert_compare_version(" ", " ", 0); + assert_compare_version(" 1", " 1", 0); + + // Leading spaces are ignored + assert_compare_version(" 1", "1.0", 0); + assert_compare_version("1", " 1.0", 0); + assert_compare_version(" 1", " 1.0", 0); + assert_compare_version(" 1", "1.1", -1); + assert_compare_version("1", " 1.1", -1); + assert_compare_version(" 1", " 1.1", -1); +} + +/* +static void +trailing_spaces(void **state) +{ + // Equal to self + assert_compare_version("1 ", "1 ", 0); + + // Trailing spaces are ignored + assert_compare_version("1 ", "1.0", 0); + assert_compare_version("1", "1.0 ", 0); + assert_compare_version("1 ", "1.0 ", 0); + assert_compare_version("1 ", "1.1", -1); + assert_compare_version("1", "1.1 ", -1); + assert_compare_version("1 ", "1.1 ", -1); +} + +static void +leading_garbage(void **state) +{ + // Equal to self + assert_compare_version("@1", "@1", 0); + + // Leading garbage means rest of string is ignored + assert_compare_version("@1", "0", 0); + assert_compare_version("@1", "1", -1); + + assert_compare_version("@0.1", "0", 0); + assert_compare_version("@0.1", "1", -1); +} + +static void +trailing_garbage(void **state) +{ + // Equal to self + assert_compare_version("0.1@", "0.1@", 0); + + // Trailing garbage is ignored + assert_compare_version("0.1@", "0.1", 0); + assert_compare_version("0.1.@", "0.1", 0); + assert_compare_version("0.1 @", "0.1", 0); + assert_compare_version("0.1. @", "0.1", 0); + assert_compare_version("0.1 .@", "0.1", 0); + + // This includes more numbers after spaces + assert_compare_version("0.1 1", "0.1", 0); + assert_compare_version("0.1. 1", "0.1", 0); + assert_compare_version("0.1 .1", "0.1", 0); + + // Second consecutive dot is treated as garbage (end of valid input) + assert_compare_version("1..", "1", 0); + assert_compare_version("1..1", "1", 0); + assert_compare_version("1..", "1.0.0", 0); + assert_compare_version("1..1", "1.0.0", 0); + assert_compare_version("1..", "1.0.1", -1); + assert_compare_version("1..1", "1.0.1", -1); } +*/ +// @FIXME Commented-out tests cause infinite loops PCMK__UNIT_TEST(NULL, NULL, cmocka_unit_test(empty_params), cmocka_unit_test(equal_versions), cmocka_unit_test(unequal_versions), - cmocka_unit_test(shorter_versions)) + cmocka_unit_test(shorter_versions), + cmocka_unit_test(leading_zeros), + cmocka_unit_test(negative_sign), + cmocka_unit_test(positive_sign), + //cmocka_unit_test(hex_digits), + cmocka_unit_test(bare_dot), + cmocka_unit_test(leading_dot), + cmocka_unit_test(trailing_dot), + cmocka_unit_test(leading_spaces)) + /* + cmocka_unit_test(trailing_spaces)) + cmocka_unit_test(leading_garbage)) + cmocka_unit_test(trailing_garbage)) + */ From c2b55235a5f8980e7737555d7e45cdc7dc411e4d Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 24 Mar 2025 04:21:02 -0700 Subject: [PATCH 143/186] Refactor: libcrmcommon: New pcmk__compare_versions() To replace compare_version() The next commit replaces this with a regex implementation that I think I like better. We can squash the commits if we decide to use that. We could also take a middle ground approach of splitting each version string on dots using g_strsplit() and then parsing each segment that way, without involving a regex. All we'd have to do is iterate over each segment to make sure it's only digits. Not sure which one is more readable. Probably the regex approach, but regex.h functions are pretty ugly. Signed-off-by: Reid Wahl --- daemons/based/based_callbacks.c | 5 +- daemons/controld/controld_cib.c | 5 +- daemons/controld/controld_execd.c | 2 +- daemons/controld/controld_membership.c | 6 +- daemons/controld/controld_metadata.c | 7 +- daemons/execd/execd_commands.c | 3 +- include/crm/cib.h | 4 +- include/crm/common/internal.h | 1 + include/crm/lrmd.h | 6 +- lib/cluster/election.c | 3 +- lib/common/cib.c | 3 +- lib/common/digest.c | 2 +- lib/common/rules.c | 2 +- lib/common/tests/utils/Makefile.am | 2 +- ...n_test.c => pcmk__compare_versions_test.c} | 112 ++++++++--------- lib/common/utils.c | 116 ++++++++++++++++++ lib/pengine/pe_digest.c | 2 +- 17 files changed, 199 insertions(+), 82 deletions(-) rename lib/common/tests/utils/{compare_version_test.c => pcmk__compare_versions_test.c} (68%) diff --git a/daemons/based/based_callbacks.c b/daemons/based/based_callbacks.c index 4e184de578a..5e695eefff1 100644 --- a/daemons/based/based_callbacks.c +++ b/daemons/based/based_callbacks.c @@ -1149,8 +1149,9 @@ cib_process_command(xmlNode *request, const cib__operation_t *operation, */ if ((operation->type == cib__op_commit_transact) && pcmk__str_eq(originator, OUR_NODENAME, pcmk__str_casei) - && compare_version(pcmk__xe_get(the_cib, PCMK_XA_CRM_FEATURE_SET), - "3.19.0") < 0) { + && (pcmk__compare_versions(pcmk__xe_get(the_cib, + PCMK_XA_CRM_FEATURE_SET), + "3.19.0") < 0)) { sync_our_cib(request, TRUE); } diff --git a/daemons/controld/controld_cib.c b/daemons/controld/controld_cib.c index eff4800aa3d..8690b086f78 100644 --- a/daemons/controld/controld_cib.c +++ b/daemons/controld/controld_cib.c @@ -480,8 +480,9 @@ build_parameter_list(const lrmd_event_data_t *op, /* Consider all parameters only except private ones to be consistent with * what scheduler does with calculate_secure_digest(). */ - if (param_type == ra_param_private - && compare_version(controld_globals.dc_version, "3.16.0") >= 0) { + if ((param_type == ra_param_private) + && (pcmk__compare_versions(controld_globals.dc_version, + "3.16.0") >= 0)) { g_hash_table_foreach(op->params, hash2field, *result); pcmk__filter_op_for_digest(*result); } diff --git a/daemons/controld/controld_execd.c b/daemons/controld/controld_execd.c index ea950cf48b5..b0a092419c7 100644 --- a/daemons/controld/controld_execd.c +++ b/daemons/controld/controld_execd.c @@ -2189,7 +2189,7 @@ process_lrm_event(lrm_state_t *lrm_state, lrmd_event_data_t *op, CRM_CHECK(op->rsc_id != NULL, return); // Remap new status codes for older DCs - if (compare_version(controld_globals.dc_version, "3.2.0") < 0) { + if (pcmk__compare_versions(controld_globals.dc_version, "3.2.0") < 0) { switch (op->op_status) { case PCMK_EXEC_NOT_CONNECTED: lrmd__set_result(op, PCMK_OCF_CONNECTION_DIED, diff --git a/daemons/controld/controld_membership.c b/daemons/controld/controld_membership.c index c0fbd68bba9..e5175f093a9 100644 --- a/daemons/controld/controld_membership.c +++ b/daemons/controld/controld_membership.c @@ -154,7 +154,8 @@ create_node_state_update(pcmk__node_status_t *node, int flags, pcmk__xe_set(node_state, PCMK_XA_UNAME, node->name); if ((flags & node_update_cluster) && node->state) { - if (compare_version(controld_globals.dc_version, "3.18.0") >= 0) { + if (pcmk__compare_versions(controld_globals.dc_version, + "3.18.0") >= 0) { // A value 0 means the node is not a cluster member. pcmk__xe_set_ll(node_state, PCMK__XA_IN_CCM, node->when_member); @@ -167,7 +168,8 @@ create_node_state_update(pcmk__node_status_t *node, int flags, if (!pcmk__is_set(node->flags, pcmk__node_status_remote)) { if (flags & node_update_peer) { - if (compare_version(controld_globals.dc_version, "3.18.0") >= 0) { + if (pcmk__compare_versions(controld_globals.dc_version, + "3.18.0") >= 0) { // A value 0 means the peer is offline in CPG. pcmk__xe_set_ll(node_state, PCMK_XA_CRMD, node->when_online); diff --git a/daemons/controld/controld_metadata.c b/daemons/controld/controld_metadata.c index 8b5aa0db84a..8c6f3805097 100644 --- a/daemons/controld/controld_metadata.c +++ b/daemons/controld/controld_metadata.c @@ -97,12 +97,12 @@ log_ra_ocf_version(const char *ra_key, const char *ra_ocf_version) if (pcmk__str_empty(ra_ocf_version)) { crm_warn("%s does not advertise OCF version supported", ra_key); - } else if (compare_version(ra_ocf_version, "2") >= 0) { + } else if (pcmk__compare_versions(ra_ocf_version, "2") >= 0) { crm_warn("%s supports OCF version %s (this Pacemaker version supports " PCMK_OCF_VERSION " and might not work properly with agent)", ra_key, ra_ocf_version); - } else if (compare_version(ra_ocf_version, PCMK_OCF_VERSION) > 0) { + } else if (pcmk__compare_versions(ra_ocf_version, PCMK_OCF_VERSION) > 0) { crm_info("%s supports OCF version %s (this Pacemaker version supports " PCMK_OCF_VERSION " and might not use all agent features)", ra_key, ra_ocf_version); @@ -151,7 +151,8 @@ controld_cache_metadata(GHashTable *mdc, const lrmd_rsc_info_t *rsc, } log_ra_ocf_version(key, (const char *) content); if (content != NULL) { - ocf1_1 = (compare_version((const char *) content, "1.1") >= 0); + ocf1_1 = (pcmk__compare_versions((const char *) content, + "1.1") >= 0); xmlFree(content); } } diff --git a/daemons/execd/execd_commands.c b/daemons/execd/execd_commands.c index 336fa3caf9b..cd34021f61c 100644 --- a/daemons/execd/execd_commands.c +++ b/daemons/execd/execd_commands.c @@ -1512,7 +1512,8 @@ process_lrmd_signon(pcmk__client_t *client, xmlNode *request, int call_id, PCMK__XA_LRMD_PROTOCOL_VERSION); const char *start_state = pcmk__env_option(PCMK__ENV_NODE_START_STATE); - if (compare_version(protocol_version, LRMD_COMPATIBLE_PROTOCOL) < 0) { + if (pcmk__compare_versions(protocol_version, + LRMD_COMPATIBLE_PROTOCOL) < 0) { crm_err("Cluster API version must be greater than or equal to %s, not %s", LRMD_COMPATIBLE_PROTOCOL, protocol_version); rc = -EPROTO; diff --git a/include/crm/cib.h b/include/crm/cib.h index 8fcc257d08c..e2c44764a00 100644 --- a/include/crm/cib.h +++ b/include/crm/cib.h @@ -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. * @@ -26,7 +26,7 @@ extern "C" { * \ingroup cib */ -// Use compare_version() for doing comparisons +// Use pcmk__compare_versions() for doing comparisons # define CIB_FEATURE_SET "2.0" /* Core functions */ diff --git a/include/crm/common/internal.h b/include/crm/common/internal.h index 09e5e3a0919..0e56cb61ad5 100644 --- a/include/crm/common/internal.h +++ b/include/crm/common/internal.h @@ -248,6 +248,7 @@ pcmk__flag_text(uint64_t flag_group, uint64_t flags) // miscellaneous utilities (from utils.c) +int pcmk__compare_versions(const char *version1, const char *version2); int pcmk__daemon_user(uid_t *uid, gid_t *gid); void pcmk__daemonize(const char *name, const char *pidfile); char *pcmk__generate_uuid(void); diff --git a/include/crm/lrmd.h b/include/crm/lrmd.h index 4c1f8eed1ee..5d666fd0223 100644 --- a/include/crm/lrmd.h +++ b/include/crm/lrmd.h @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the Pacemaker project contributors + * Copyright 2012-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -16,6 +16,8 @@ #include #include +#include // pcmk__compare_versions() + #ifdef __cplusplus extern "C" { #endif @@ -43,7 +45,7 @@ typedef struct lrmd_key_value_s { */ #define LRMD_PROTOCOL_VERSION "1.2" -#define LRMD_SUPPORTS_SCHEMA_XFER(x) (compare_version((x), "1.2") >= 0) +#define LRMD_SUPPORTS_SCHEMA_XFER(x) (pcmk__compare_versions((x), "1.2") >= 0) /* The major protocol version the client and server both need to support for * the connection to be successful. This should only ever be the major diff --git a/lib/cluster/election.c b/lib/cluster/election.c index 66df5792361..b3c2c7fd249 100644 --- a/lib/cluster/election.c +++ b/lib/cluster/election.c @@ -602,7 +602,8 @@ election_count_vote(pcmk_cluster_t *cluster, const xmlNode *message, } else { // A peer vote requires a comparison to determine which node is better int age_result = compare_age(vote.age); - int version_result = compare_version(vote.version, CRM_FEATURE_SET); + int version_result = pcmk__compare_versions(vote.version, + CRM_FEATURE_SET); if (version_result < 0) { reason = "Version"; diff --git a/lib/common/cib.c b/lib/common/cib.c index fc29b0df644..58fcceb969e 100644 --- a/lib/common/cib.c +++ b/lib/common/cib.c @@ -184,7 +184,8 @@ pcmk_find_cib_element(xmlNode *cib, const char *element_name) int pcmk__check_feature_set(const char *cib_version) { - if (cib_version && compare_version(cib_version, CRM_FEATURE_SET) > 0) { + if ((cib_version != NULL) + && (pcmk__compare_versions(cib_version, CRM_FEATURE_SET) > 0)) { return EPROTONOSUPPORT; } diff --git a/lib/common/digest.c b/lib/common/digest.c index f54e5b83374..657544b525f 100644 --- a/lib/common/digest.c +++ b/lib/common/digest.c @@ -387,7 +387,7 @@ char * calculate_xml_versioned_digest(xmlNode *input, gboolean sort, gboolean do_filter, const char *version) { - if ((version == NULL) || (compare_version("3.0.5", version) > 0)) { + if ((version == NULL) || (pcmk__compare_versions("3.0.5", version) > 0)) { xmlNode *sorted = NULL; char *digest = NULL; diff --git a/lib/common/rules.c b/lib/common/rules.c index e97ce52cda6..66891c1c9c2 100644 --- a/lib/common/rules.c +++ b/lib/common/rules.c @@ -786,7 +786,7 @@ pcmk__cmp_by_type(const char *value1, const char *value2, enum pcmk__type type) break; case pcmk__type_version: - return compare_version(value1, value2); + return pcmk__compare_versions(value1, value2); default: // Invalid type return 0; diff --git a/lib/common/tests/utils/Makefile.am b/lib/common/tests/utils/Makefile.am index 9e78afe01db..682ca21babe 100644 --- a/lib/common/tests/utils/Makefile.am +++ b/lib/common/tests/utils/Makefile.am @@ -12,7 +12,7 @@ include $(top_srcdir)/mk/tap.mk include $(top_srcdir)/mk/unittest.mk # Add "_test" to the end of all test program names to simplify .gitignore. -check_PROGRAMS = compare_version_test \ +check_PROGRAMS = pcmk__compare_versions_test \ pcmk__daemon_user_test \ pcmk__fail_attr_name_test \ pcmk__failcount_name_test \ diff --git a/lib/common/tests/utils/compare_version_test.c b/lib/common/tests/utils/pcmk__compare_versions_test.c similarity index 68% rename from lib/common/tests/utils/compare_version_test.c rename to lib/common/tests/utils/pcmk__compare_versions_test.c index 31d1a034a6c..f9da0647916 100644 --- a/lib/common/tests/utils/compare_version_test.c +++ b/lib/common/tests/utils/pcmk__compare_versions_test.c @@ -15,30 +15,29 @@ * \internal * \brief Compare two version strings in both directions * - * \param[in] v1 First argument for \c compare_version() - * \param[in] v2 Second argument for \c compare_version() + * \param[in] v1 First argument for \c pcmk__compare_versions() + * \param[in] v2 Second argument for \c pcmk__compare_versions() * \param[in] expected_rc Expected return code from - * compare_version(v1, v2) + * pcmk__compare_versions(v1, v2) */ static void assert_compare_version(const char *v1, const char *v2, int expected_rc) { - assert_int_equal(compare_version(v1, v2), expected_rc); + assert_int_equal(pcmk__compare_versions(v1, v2), expected_rc); if (v1 != v2) { /* Try reverse order even if expected_rc == 0, if v1 and v2 are * different strings */ - assert_int_equal(compare_version(v2, v1), -expected_rc); + assert_int_equal(pcmk__compare_versions(v2, v1), -expected_rc); } } static void empty_params(void **state) { - // @FIXME Treat empty string the same as NULL assert_compare_version(NULL, NULL, 0); - assert_compare_version(NULL, "", -1); // Should be 0 + assert_compare_version(NULL, "", 0); assert_compare_version("", "", 0); assert_compare_version(NULL, "1.0.1", -1); @@ -94,30 +93,30 @@ negative_sign(void **state) assert_compare_version("-1", "-1", 0); assert_compare_version("1.-1.5", "1.-1.5", 0); - // @FIXME Treat negative version as 0 (invalid) - assert_compare_version("-1", "0", -1); // Should be 0 - assert_compare_version("-1", "0.0", -1); // Should be 0 + // Negative version is treated as 0 (invalid) + assert_compare_version("-1", "0", 0); + assert_compare_version("-1", "0.0", 0); assert_compare_version("-1", "0.1", -1); assert_compare_version("-1", "1.0", -1); - assert_compare_version("-1", "-0", -1); // Should be 0 - assert_compare_version("-1", "-0.0", -1); // Should be 0 - assert_compare_version("-1", "-0.1", -1); // Should be 0 + assert_compare_version("-1", "-0", 0); + assert_compare_version("-1", "-0.0", 0); + assert_compare_version("-1", "-0.1", 0); assert_compare_version("-1", "-1.0", 0); - assert_compare_version("-1", "-2.0", 1); // Should be 0 + assert_compare_version("-1", "-2.0", 0); - // @FIXME Treat negative sign inside version as garbage - assert_compare_version("1.-1.5", "1.0", -1); // Should be 0 + // Negative sign inside version is treated as garbage + assert_compare_version("1.-1.5", "1.0", 0); assert_compare_version("1.-1.5", "1.0.5", -1); - assert_compare_version("1.-1.5", "1.-0", -1); // Should be 0 - assert_compare_version("1.-1.5", "1.-0.5", -1); // Should be 0 + assert_compare_version("1.-1.5", "1.-0", 0); + assert_compare_version("1.-1.5", "1.-0.5", 0); - assert_compare_version("1.-1.5", "1.-1", 1); // Should be 0 - assert_compare_version("1.-1.5", "1.-1.9", -1); // Should be 0 + assert_compare_version("1.-1.5", "1.-1", 0); + assert_compare_version("1.-1.5", "1.-1.9", 0); - assert_compare_version("1.-1.5", "1.-2", 1); // Should be 0 - assert_compare_version("1.-1.5", "1.-2.5", 1); // Should be 0 + assert_compare_version("1.-1.5", "1.-2", 0); + assert_compare_version("1.-1.5", "1.-2.5", 0); assert_compare_version("1.-1.5", "2.0.5", -1); assert_compare_version("1.-1.5", "0.0.5", 1); @@ -131,36 +130,35 @@ positive_sign(void **state) assert_compare_version("1.+1.5", "1.+1.5", 0); // @FIXME Treat version with explicit positive sign as 0 (invalid) - assert_compare_version("+1", "0", 1); // Should be 0 - assert_compare_version("+1", "0.0", 1); // Should be 0 - assert_compare_version("+1", "0.1", 1); // Should be -1 - assert_compare_version("+1", "1.0", 0); // Should be -1 - assert_compare_version("+1", "2.0", -1); // Should be -1 - - assert_compare_version("+1", "+0", 1); // Should be 0 - assert_compare_version("+1", "+0.0", 1); // Should be 0 - assert_compare_version("+1", "+0.1", 1); // Should be 0 + assert_compare_version("+1", "0", 0); + assert_compare_version("+1", "0.0", 0); + assert_compare_version("+1", "0.1", -1); + assert_compare_version("+1", "1.0", -1); + assert_compare_version("+1", "2.0", -1); + + assert_compare_version("+1", "+0", 0); + assert_compare_version("+1", "+0.0", 0); + assert_compare_version("+1", "+0.1", 0); assert_compare_version("+1", "+1.0", 0); - assert_compare_version("+1", "+2.0", -1); // Should be 0 + assert_compare_version("+1", "+2.0", 0); // @FIXME Treat positive sign inside version as garbage - assert_compare_version("1.+1.5", "1.0", 1); // Should be 0 - assert_compare_version("1.+1.5", "1.0.5", 1); // Should be -1 + assert_compare_version("1.+1.5", "1.0", 0); + assert_compare_version("1.+1.5", "1.0.5", -1); - assert_compare_version("1.+1.5", "1.+0", 1); // Should be 0 - assert_compare_version("1.+1.5", "1.+0.5", 1); // Should be 0 + assert_compare_version("1.+1.5", "1.+0", 0); + assert_compare_version("1.+1.5", "1.+0.5", 0); - assert_compare_version("1.+1.5", "1.+1", 1); // Should be 0 - assert_compare_version("1.+1.5", "1.+1.9", -1); // Should be 0 + assert_compare_version("1.+1.5", "1.+1", 0); + assert_compare_version("1.+1.5", "1.+1.9", 0); - assert_compare_version("1.+1.5", "1.+2", -1); // Should be 0 - assert_compare_version("1.+1.5", "1.+2.5", -1); // Should be 0 + assert_compare_version("1.+1.5", "1.+2", 0); + assert_compare_version("1.+1.5", "1.+2.5", 0); assert_compare_version("1.+1.5", "2.0.5", -1); assert_compare_version("1.+1.5", "0.0.5", 1); } -/* static void hex_digits(void **state) { @@ -180,7 +178,6 @@ hex_digits(void **state) assert_compare_version("1a", "0", 1); assert_compare_version("1a111", "0", 1); } -*/ static void bare_dot(void **state) @@ -201,19 +198,17 @@ leading_dot(void **state) assert_compare_version(".0", ".0", 0); assert_compare_version(".1", ".1", 0); - // Leading dot is treated as 0 + // Version with leading dot is treated as 0 assert_compare_version(".0", "0", 0); assert_compare_version(".0", "0.0", 0); assert_compare_version(".0", "0.0.0", 0); assert_compare_version(".0", "0.1", -1); - // @FIXME .1 should equal 0, not 0.1 - assert_compare_version(".1", "0", 1); - assert_compare_version(".1", "0.0", 1); - assert_compare_version(".1", "0.0.0", 1); - assert_compare_version(".1", "0.1", 0); - assert_compare_version(".1", "0.1.0", 0); - assert_compare_version(".1", "0.2", -1); + assert_compare_version(".1", "0", 0); + assert_compare_version(".1", "0.0", 0); + assert_compare_version(".1", "0.0.0", 0); + assert_compare_version(".1", "0.1", -1); + assert_compare_version(".1", "0.1.0", -1); } static void @@ -249,7 +244,6 @@ leading_spaces(void **state) assert_compare_version(" 1", " 1.1", -1); } -/* static void trailing_spaces(void **state) { @@ -271,7 +265,7 @@ leading_garbage(void **state) // Equal to self assert_compare_version("@1", "@1", 0); - // Leading garbage means rest of string is ignored + // Version with leading garbage is treated as 0 assert_compare_version("@1", "0", 0); assert_compare_version("@1", "1", -1); @@ -297,7 +291,7 @@ trailing_garbage(void **state) assert_compare_version("0.1. 1", "0.1", 0); assert_compare_version("0.1 .1", "0.1", 0); - // Second consecutive dot is treated as garbage (end of valid input) + // Second consecutive dot is treated as garbage assert_compare_version("1..", "1", 0); assert_compare_version("1..1", "1", 0); assert_compare_version("1..", "1.0.0", 0); @@ -305,9 +299,7 @@ trailing_garbage(void **state) assert_compare_version("1..", "1.0.1", -1); assert_compare_version("1..1", "1.0.1", -1); } -*/ -// @FIXME Commented-out tests cause infinite loops PCMK__UNIT_TEST(NULL, NULL, cmocka_unit_test(empty_params), cmocka_unit_test(equal_versions), @@ -316,13 +308,11 @@ PCMK__UNIT_TEST(NULL, NULL, cmocka_unit_test(leading_zeros), cmocka_unit_test(negative_sign), cmocka_unit_test(positive_sign), - //cmocka_unit_test(hex_digits), + cmocka_unit_test(hex_digits), cmocka_unit_test(bare_dot), cmocka_unit_test(leading_dot), cmocka_unit_test(trailing_dot), - cmocka_unit_test(leading_spaces)) - /* - cmocka_unit_test(trailing_spaces)) - cmocka_unit_test(leading_garbage)) + cmocka_unit_test(leading_spaces), + cmocka_unit_test(trailing_spaces), + cmocka_unit_test(leading_garbage), cmocka_unit_test(trailing_garbage)) - */ diff --git a/lib/common/utils.c b/lib/common/utils.c index 7b19d634d80..acf3d8d6031 100644 --- a/lib/common/utils.c +++ b/lib/common/utils.c @@ -202,6 +202,122 @@ version_helper(const char *text, const char **end_text) return atoi_result; } +/*! + * \internal + * \brief Parse a version segment from an input and advance the input pointer + * + * \param[in,out] version_segment Pointer to a version string segment + * + * \return Nonnegative integer value parsed from \p *version_segment on success, + * or 0 on failure + * + * \note Upon return, \p *version_segment points to the (possibly invalid) next + * segment on success, or to the terminating null byte on failure. + */ +static long +parse_version_segment(const char **version_segment) +{ + char *endptr = NULL; + long rc = 0; + + if (pcmk__str_empty(*version_segment)) { + return 0; + } + + /* '+', '-', and whitespace are invalid in version strings. strtol() won't + * complain, so catch them here. If the first character is not a digit, + * advance to end of string. + */ + if (!isdigit(**version_segment)) { + *version_segment += strlen(*version_segment); + return 0; + } + + /* Negative return code or unparsable input should be impossible, since we + * checked with isdigit() first. If it happens somehow, advance to end of + * string. + */ + rc = strtol(*version_segment, &endptr, 10); + CRM_CHECK((rc >= 0) && (endptr != *version_segment), + *version_segment = endptr + strlen(endptr); return 0); + + // Skip one dot immediately after a series of digits + if (*endptr == '.') { + endptr++; + } + + // Advance to next version segment + *version_segment = endptr; + return rc; +} + +/*! + * \internal + * \brief Compare two version strings to determine which one is higher + * + * A valid version string is of the form specified by the regex + * [0-9]+(\.[0-9]+)*. + * + * Leading whitespace is allowed and ignored. The two strings are compared + * segment by segment, until either the terminating null byte or an invalid + * character has been reached in both strings. A segment is a series of digits + * followed by a single dot or by the terminating null byte. + * + * After the terminating null byte or an invalid character is reached in one + * string, parsing of that string stops. All further comparisons are as if that + * string has an infinite number of trailing \c "0." segments. This continues + * until the terminating null byte or an invalid character is reached in the + * other string. + * + * Segments are compared by calling \c strtol() to parse them to long integers, + * and then performing standard integer comparison. + * + * \param[in] version1 First version to compare + * \param[in] version2 Second version to compare + * + * \retval -1 if \p version1 evaluates to a lower version than \p version2 + * \retval 1 if \p version1 evaluates to a higher version than \p version2 + * \retval 0 if \p version1 and \p version2 evaluate to an equal version + */ +int +pcmk__compare_versions(const char *version1, const char *version2) +{ + if (version1 == version2) { + return 0; + } + if (pcmk__str_empty(version1) && pcmk__str_empty(version2)) { + return 0; + } + if (pcmk__str_empty(version1)) { + return -1; + } + if (pcmk__str_empty(version2)) { + return 1; + } + + // Skip leading whitespace + for (; isspace(*version1); version1++); + for (; isspace(*version2); version2++); + + for (const char *v1 = version1, *v2 = version2; + ((*v1 != '\0') || (*v2 != '\0')); ) { + + long digit1 = parse_version_segment(&v1); + long digit2 = parse_version_segment(&v2); + + if (digit1 < digit2) { + crm_trace("%s < %s", version1, version2); + return -1; + } + if (digit1 > digit2) { + crm_trace("%s > %s", version1, version2); + return 1; + } + } + crm_trace("%s == %s", version1, version2); + return 0; +} + /* * version1 < version2 : -1 * version1 = version2 : 0 diff --git a/lib/pengine/pe_digest.c b/lib/pengine/pe_digest.c index 24361ceac20..39e9b07bc44 100644 --- a/lib/pengine/pe_digest.c +++ b/lib/pengine/pe_digest.c @@ -189,7 +189,7 @@ calculate_secure_digest(pcmk__op_digest_t *data, const pcmk_resource_t *rsc, { const char *class = pcmk__xe_get(rsc->priv->xml, PCMK_XA_CLASS); const char *secure_list = NULL; - bool old_version = (compare_version(op_version, "3.16.0") < 0); + bool old_version = (pcmk__compare_versions(op_version, "3.16.0") < 0); if (xml_op == NULL) { secure_list = " passwd password user "; From 44d161ecffb5aa6a7221bf9f3860d6694618b1fb Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Tue, 25 Mar 2025 00:44:51 -0700 Subject: [PATCH 144/186] Refactor: libcrmcommon: Use regex for pcmk__compare_versions() Seems a bit more readable and a bit less error-prone, even though it's less efficient. I started out trying to use a GRegex, which works great except that it requires freeing and reallocating a GMatchInfo struct every time you reuse the regex to match a later offset of the same string. We don't need the fancy PCRE features anyway. I started working on an implementation that just uses pcmk__numeric_strcasecmp(), but it started getting ugly for things like "1" vs. "1.0", since it treats all non-digit characters equally (in particular, it doesn't treat dots specially). pcmk__compare_versions() could also reasonable go into strings.c, by the way. Signed-off-by: Reid Wahl --- .../tests/utils/pcmk__compare_versions_test.c | 6 +- lib/common/utils.c | 145 ++++++++---------- 2 files changed, 68 insertions(+), 83 deletions(-) diff --git a/lib/common/tests/utils/pcmk__compare_versions_test.c b/lib/common/tests/utils/pcmk__compare_versions_test.c index f9da0647916..4ea0fe26655 100644 --- a/lib/common/tests/utils/pcmk__compare_versions_test.c +++ b/lib/common/tests/utils/pcmk__compare_versions_test.c @@ -43,9 +43,9 @@ empty_params(void **state) assert_compare_version(NULL, "1.0.1", -1); assert_compare_version("", "1.0.1", -1); - // @FIXME NULL/empty should be equal to an invalid version - assert_compare_version(NULL, "abc", -1); // Should be 0 - assert_compare_version("", "abc", -1); // Should be 0 + // NULL or empty is treated as equal to an invalid version + assert_compare_version(NULL, "abc", 0); + assert_compare_version("", "abc", 0); } static void diff --git a/lib/common/utils.c b/lib/common/utils.c index acf3d8d6031..1e50cf33f94 100644 --- a/lib/common/utils.c +++ b/lib/common/utils.c @@ -20,6 +20,7 @@ #include #include #include +#include // regex_t, etc. #include #include @@ -202,55 +203,6 @@ version_helper(const char *text, const char **end_text) return atoi_result; } -/*! - * \internal - * \brief Parse a version segment from an input and advance the input pointer - * - * \param[in,out] version_segment Pointer to a version string segment - * - * \return Nonnegative integer value parsed from \p *version_segment on success, - * or 0 on failure - * - * \note Upon return, \p *version_segment points to the (possibly invalid) next - * segment on success, or to the terminating null byte on failure. - */ -static long -parse_version_segment(const char **version_segment) -{ - char *endptr = NULL; - long rc = 0; - - if (pcmk__str_empty(*version_segment)) { - return 0; - } - - /* '+', '-', and whitespace are invalid in version strings. strtol() won't - * complain, so catch them here. If the first character is not a digit, - * advance to end of string. - */ - if (!isdigit(**version_segment)) { - *version_segment += strlen(*version_segment); - return 0; - } - - /* Negative return code or unparsable input should be impossible, since we - * checked with isdigit() first. If it happens somehow, advance to end of - * string. - */ - rc = strtol(*version_segment, &endptr, 10); - CRM_CHECK((rc >= 0) && (endptr != *version_segment), - *version_segment = endptr + strlen(endptr); return 0); - - // Skip one dot immediately after a series of digits - if (*endptr == '.') { - endptr++; - } - - // Advance to next version segment - *version_segment = endptr; - return rc; -} - /*! * \internal * \brief Compare two version strings to determine which one is higher @@ -258,19 +210,19 @@ parse_version_segment(const char **version_segment) * A valid version string is of the form specified by the regex * [0-9]+(\.[0-9]+)*. * - * Leading whitespace is allowed and ignored. The two strings are compared - * segment by segment, until either the terminating null byte or an invalid - * character has been reached in both strings. A segment is a series of digits - * followed by a single dot or by the terminating null byte. + * Leading whitespace and trailing garbage are allowed and ignored. * - * After the terminating null byte or an invalid character is reached in one - * string, parsing of that string stops. All further comparisons are as if that - * string has an infinite number of trailing \c "0." segments. This continues - * until the terminating null byte or an invalid character is reached in the - * other string. + * For each string, we get all segments until the first invalid character. A + * segment is a series of digits, and segments are delimited by a single dot. + * The two strings are compared segment by segment, until either we find a + * difference or we've processed all segments in both strings. * - * Segments are compared by calling \c strtol() to parse them to long integers, - * and then performing standard integer comparison. + * If one string runs out of segments to compare before the other string does, + * we treat it as if it has enough padding \c "0" segments to finish the + * comparisons. + * + * Segments are compared by calling \c strtoll() to parse them to long long + * integers and then performing standard integer comparison. * * \param[in] version1 First version to compare * \param[in] version2 Second version to compare @@ -278,44 +230,77 @@ parse_version_segment(const char **version_segment) * \retval -1 if \p version1 evaluates to a lower version than \p version2 * \retval 1 if \p version1 evaluates to a higher version than \p version2 * \retval 0 if \p version1 and \p version2 evaluate to an equal version + * + * \note Each version segment's parsed value must fit into a long long. */ int pcmk__compare_versions(const char *version1, const char *version2) { + regex_t regex; + regmatch_t pmatch1[1]; + regmatch_t pmatch2[1]; + regoff_t off1 = 0; + regoff_t off2 = 0; + + bool has_match1 = false; + bool has_match2 = false; + int rc = 0; + if (version1 == version2) { return 0; } - if (pcmk__str_empty(version1) && pcmk__str_empty(version2)) { - return 0; - } - if (pcmk__str_empty(version1)) { - return -1; + + // Parse each version string as digit segments delimited by dots + pcmk__assert(regcomp(®ex, "^[[:digit:]]+\\.?", REG_EXTENDED) == 0); + + if (version1 != NULL) { + // Skip leading whitespace + for (; isspace(*version1); version1++); + has_match1 = (regexec(®ex, version1, 1, pmatch1, 0) == 0); } - if (pcmk__str_empty(version2)) { - return 1; + if (version2 != NULL) { + for (; isspace(*version2); version2++); + has_match2 = (regexec(®ex, version2, 1, pmatch2, 0) == 0); } - // Skip leading whitespace - for (; isspace(*version1); version1++); - for (; isspace(*version2); version2++); + while (has_match1 || has_match2) { + long long value1 = 0; + long long value2 = 0; - for (const char *v1 = version1, *v2 = version2; - ((*v1 != '\0') || (*v2 != '\0')); ) { - - long digit1 = parse_version_segment(&v1); - long digit2 = parse_version_segment(&v2); + if (has_match1) { + value1 = strtoll(version1 + off1 + pmatch1[0].rm_so, NULL, 10); + } + if (has_match2) { + value2 = strtoll(version2 + off2 + pmatch2[0].rm_so, NULL, 10); + } - if (digit1 < digit2) { + if (value1 < value2) { crm_trace("%s < %s", version1, version2); - return -1; + rc = -1; + goto done; } - if (digit1 > digit2) { + if (value1 > value2) { crm_trace("%s > %s", version1, version2); - return 1; + rc = 1; + goto done; + } + + // Compare next segments + if (has_match1) { + off1 += pmatch1[0].rm_eo; + has_match1 = (regexec(®ex, version1 + off1, 1, pmatch1, 0) == 0); + } + if (has_match2) { + off2 += pmatch2[0].rm_eo; + has_match2 = (regexec(®ex, version2 + off2, 1, pmatch2, 0) == 0); } } + crm_trace("%s == %s", version1, version2); - return 0; + +done: + regfree(®ex); + return rc; } /* From 41c12a7e8a21af88337a9ea2bccede5564e34638 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Mon, 24 Mar 2025 04:22:37 -0700 Subject: [PATCH 145/186] API: libcrmcommon: Deprecate compare_version() Signed-off-by: Reid Wahl --- include/crm/common/util.h | 2 - include/crm/common/util_compat.h | 3 + lib/common/utils.c | 206 +++++++++++++++---------------- 3 files changed, 100 insertions(+), 111 deletions(-) diff --git a/include/crm/common/util.h b/include/crm/common/util.h index 37dd5c1d140..c5746f03e7f 100644 --- a/include/crm/common/util.h +++ b/include/crm/common/util.h @@ -42,8 +42,6 @@ char *pcmk_promotion_score_name(const char *rsc_id); /* public Pacemaker Remote functions (from remote.c) */ int crm_default_remote_port(void); -int compare_version(const char *version1, const char *version2); - void pcmk_common_cleanup(void); #ifdef __cplusplus diff --git a/include/crm/common/util_compat.h b/include/crm/common/util_compat.h index 9097a97debe..7118cfcf96b 100644 --- a/include/crm/common/util_compat.h +++ b/include/crm/common/util_compat.h @@ -72,6 +72,9 @@ int pcmk_daemon_user(uid_t *uid, gid_t *gid); //! \deprecated Do not use int crm_user_lookup(const char *name, uid_t *uid, gid_t *gid); +//! \deprecated Do not use +int compare_version(const char *version1, const char *version2); + #ifdef __cplusplus } #endif diff --git a/lib/common/utils.c b/lib/common/utils.c index 1e50cf33f94..62d664b4416 100644 --- a/lib/common/utils.c +++ b/lib/common/utils.c @@ -170,39 +170,6 @@ pcmk__daemon_user(uid_t *uid, gid_t *gid) return pcmk_rc_ok; } -/*! - * \internal - * \brief Return the integer equivalent of a portion of a string - * - * \param[in] text Pointer to beginning of string portion - * \param[out] end_text This will point to next character after integer - */ -static int -version_helper(const char *text, const char **end_text) -{ - int atoi_result = -1; - - pcmk__assert(end_text != NULL); - - errno = 0; - - if (text != NULL && text[0] != 0) { - /* seemingly sacrificing const-correctness -- because while strtol - doesn't modify the input, it doesn't want to artificially taint the - "end_text" pointer-to-pointer-to-first-char-in-string with constness - in case the input wasn't actually constant -- by semantic definition - not a single character will get modified so it shall be perfectly - safe to make compiler happy with dropping "const" qualifier here */ - atoi_result = (int) strtol(text, (char **) end_text, 10); - - if (errno == EINVAL) { - crm_err("Conversion of '%s' %c failed", text, text[0]); - atoi_result = -1; - } - } - return atoi_result; -} - /*! * \internal * \brief Compare two version strings to determine which one is higher @@ -303,82 +270,6 @@ pcmk__compare_versions(const char *version1, const char *version2) return rc; } -/* - * version1 < version2 : -1 - * version1 = version2 : 0 - * version1 > version2 : 1 - */ -int -compare_version(const char *version1, const char *version2) -{ - int rc = 0; - int lpc = 0; - const char *ver1_iter, *ver2_iter; - - if (version1 == NULL && version2 == NULL) { - return 0; - } else if (version1 == NULL) { - return -1; - } else if (version2 == NULL) { - return 1; - } - - ver1_iter = version1; - ver2_iter = version2; - - while (1) { - int digit1 = 0; - int digit2 = 0; - - lpc++; - - if (ver1_iter == ver2_iter) { - break; - } - - if (ver1_iter != NULL) { - digit1 = version_helper(ver1_iter, &ver1_iter); - } - - if (ver2_iter != NULL) { - digit2 = version_helper(ver2_iter, &ver2_iter); - } - - if (digit1 < digit2) { - rc = -1; - break; - - } else if (digit1 > digit2) { - rc = 1; - break; - } - - if (ver1_iter != NULL && *ver1_iter == '.') { - ver1_iter++; - } - if (ver1_iter != NULL && *ver1_iter == '\0') { - ver1_iter = NULL; - } - - if (ver2_iter != NULL && *ver2_iter == '.') { - ver2_iter++; - } - if (ver2_iter != NULL && *ver2_iter == 0) { - ver2_iter = NULL; - } - } - - if (rc == 0) { - crm_trace("%s == %s (%d)", version1, version2, lpc); - } else if (rc < 0) { - crm_trace("%s < %s (%d)", version1, version2, lpc); - } else if (rc > 0) { - crm_trace("%s > %s (%d)", version1, version2, lpc); - } - - return rc; -} - /*! * \internal * \brief Convert the current process to a daemon process @@ -691,5 +582,102 @@ pcmk_daemon_user(uid_t *uid, gid_t *gid) return rc; } +static int +version_helper(const char *text, const char **end_text) +{ + int atoi_result = -1; + + pcmk__assert(end_text != NULL); + + errno = 0; + + if (text != NULL && text[0] != 0) { + /* seemingly sacrificing const-correctness -- because while strtol + doesn't modify the input, it doesn't want to artificially taint the + "end_text" pointer-to-pointer-to-first-char-in-string with constness + in case the input wasn't actually constant -- by semantic definition + not a single character will get modified so it shall be perfectly + safe to make compiler happy with dropping "const" qualifier here */ + atoi_result = (int) strtol(text, (char **) end_text, 10); + + if (errno == EINVAL) { + crm_err("Conversion of '%s' %c failed", text, text[0]); + atoi_result = -1; + } + } + return atoi_result; +} + +int +compare_version(const char *version1, const char *version2) +{ + int rc = 0; + int lpc = 0; + const char *ver1_iter, *ver2_iter; + + if (version1 == NULL && version2 == NULL) { + return 0; + } else if (version1 == NULL) { + return -1; + } else if (version2 == NULL) { + return 1; + } + + ver1_iter = version1; + ver2_iter = version2; + + while (1) { + int digit1 = 0; + int digit2 = 0; + + lpc++; + + if (ver1_iter == ver2_iter) { + break; + } + + if (ver1_iter != NULL) { + digit1 = version_helper(ver1_iter, &ver1_iter); + } + + if (ver2_iter != NULL) { + digit2 = version_helper(ver2_iter, &ver2_iter); + } + + if (digit1 < digit2) { + rc = -1; + break; + + } else if (digit1 > digit2) { + rc = 1; + break; + } + + if (ver1_iter != NULL && *ver1_iter == '.') { + ver1_iter++; + } + if (ver1_iter != NULL && *ver1_iter == '\0') { + ver1_iter = NULL; + } + + if (ver2_iter != NULL && *ver2_iter == '.') { + ver2_iter++; + } + if (ver2_iter != NULL && *ver2_iter == 0) { + ver2_iter = NULL; + } + } + + if (rc == 0) { + crm_trace("%s == %s (%d)", version1, version2, lpc); + } else if (rc < 0) { + crm_trace("%s < %s (%d)", version1, version2, lpc); + } else if (rc > 0) { + crm_trace("%s > %s (%d)", version1, version2, lpc); + } + + return rc; +} + // LCOV_EXCL_STOP // End deprecated API From 52724e523f86f6bb3c93b761c0808beeefb39ebc Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Tue, 25 Mar 2025 01:19:33 -0700 Subject: [PATCH 146/186] Refactor: libcrmcommon: Use pcmk__compare_versions() for transforms Seems simpler, even if it's heavier-weight and more than what we need for this particular use. Why reinvent the wheel? Signed-off-by: Reid Wahl --- lib/common/schemas.c | 38 +++----------------------------------- 1 file changed, 3 insertions(+), 35 deletions(-) diff --git a/lib/common/schemas.c b/lib/common/schemas.c index ba205b4b0f1..57be3ce4378 100644 --- a/lib/common/schemas.c +++ b/lib/common/schemas.c @@ -321,9 +321,6 @@ transform_filter(const struct dirent *entry) * \internal * \brief Compare transform files based on the version strings in their names * - * This is a crude version comparison that relies on the specific structure of - * these filenames. - * * \retval -1 if \p entry1 sorts before \p entry2 * \retval 0 if \p entry1 sorts equal to \p entry2 * \retval 1 if \p entry1 sorts after \p entry2 @@ -334,38 +331,9 @@ transform_filter(const struct dirent *entry) static int compare_transforms(const struct dirent **entry1, const struct dirent **entry2) { - unsigned char major1 = 0; - unsigned char major2 = 0; - unsigned char minor1 = 0; - unsigned char minor2 = 0; - unsigned char order1 = 0; - unsigned char order2 = 0; - - // If these made it through the filter, they should be of the right format - CRM_LOG_ASSERT(sscanf((*entry1)->d_name, "upgrade-%hhu.%hhu-%hhu.xsl", - &major1, &minor1, &order1) == 3); - CRM_LOG_ASSERT(sscanf((*entry2)->d_name, "upgrade-%hhu.%hhu-%hhu.xsl", - &major2, &minor2, &order2) == 3); - - if (major1 < major2) { - return -1; - } else if (major1 > major2) { - return 1; - } - - if (minor1 < minor2) { - return -1; - } else if (minor1 > minor2) { - return 1; - } - - if (order1 < order2) { - return -1; - } else if (order1 > order2) { - return 1; - } - - return 0; + // We already validated the format of each filename in transform_filter() + return pcmk__compare_versions((*entry1)->d_name + sizeof("upgrade-") - 1, + (*entry2)->d_name + sizeof("upgrade-") - 1); } /*! From 4994afd56f65543794931709ce5d47bbd66fae9c Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Tue, 25 Mar 2025 02:06:20 -0700 Subject: [PATCH 147/186] Refactor: libcrmcommon: Remove unused includes from util.h ...I'm honestly impressed by how many things this broke. Also update a comment in strings.h. Signed-off-by: Reid Wahl --- daemons/attrd/attrd_utils.c | 1 + daemons/controld/controld_callbacks.c | 1 + daemons/controld/controld_cib.c | 1 + daemons/controld/controld_control.c | 1 + daemons/controld/controld_execd.c | 1 + daemons/controld/controld_execd_state.c | 1 + daemons/controld/controld_fencing.c | 2 ++ daemons/controld/controld_join_dc.c | 1 + daemons/controld/controld_membership.c | 1 + daemons/controld/controld_te_actions.c | 1 + daemons/controld/controld_te_callbacks.c | 1 + daemons/controld/controld_te_events.c | 2 ++ daemons/controld/controld_te_utils.c | 1 + daemons/controld/controld_transition.c | 1 + daemons/execd/cts-exec-helper.c | 3 ++- daemons/execd/execd_alerts.c | 1 + daemons/execd/execd_commands.c | 1 + daemons/fenced/fenced_commands.c | 1 + daemons/fenced/fenced_scheduler.c | 1 + include/crm/common/strings.h | 2 +- include/crm/common/util.h | 16 ---------------- lib/cib/cib_attrs.c | 1 + lib/cib/cib_utils.c | 2 ++ lib/common/acl.c | 1 + lib/common/alerts.c | 1 + lib/common/attrs.c | 1 + lib/common/digest.c | 1 + lib/common/health.c | 3 ++- lib/common/ipc_controld.c | 1 + lib/common/nvpair.c | 1 + lib/common/options.c | 1 + lib/common/patchset.c | 1 + lib/common/scores.c | 4 +++- lib/common/tests/nvpair/crm_meta_name_test.c | 3 ++- lib/common/tests/nvpair/crm_meta_value_test.c | 3 ++- .../nvpair/pcmk_unpack_nvpair_blocks_test.c | 3 ++- lib/common/tests/scores/pcmk__add_scores_test.c | 3 ++- .../tests/scores/pcmk_readable_score_test.c | 3 ++- .../tests/scores/pcmk_str_is_infinity_test.c | 3 ++- .../scores/pcmk_str_is_minus_infinity_test.c | 3 ++- lib/common/xml_element.c | 2 ++ lib/fencing/st_client.c | 1 + lib/lrmd/lrmd_client.c | 1 + lib/pacemaker/pcmk_acl.c | 1 + lib/pacemaker/pcmk_graph_consumer.c | 2 ++ lib/pacemaker/pcmk_graph_producer.c | 1 + lib/pacemaker/pcmk_injections.c | 1 + lib/pacemaker/pcmk_output.c | 1 + lib/pacemaker/pcmk_sched_actions.c | 1 + lib/pacemaker/pcmk_sched_bundle.c | 1 + lib/pacemaker/pcmk_sched_clone.c | 2 ++ lib/pacemaker/pcmk_sched_colocation.c | 1 + lib/pacemaker/pcmk_sched_group.c | 1 + lib/pacemaker/pcmk_sched_instances.c | 1 + lib/pacemaker/pcmk_sched_location.c | 1 + lib/pacemaker/pcmk_sched_nodes.c | 1 + lib/pacemaker/pcmk_sched_ordering.c | 1 + lib/pacemaker/pcmk_sched_primitive.c | 2 ++ lib/pacemaker/pcmk_sched_promotable.c | 1 + lib/pacemaker/pcmk_sched_remote.c | 1 + lib/pacemaker/pcmk_sched_resource.c | 1 + lib/pacemaker/pcmk_sched_tickets.c | 1 + lib/pacemaker/pcmk_sched_utilization.c | 1 + lib/pacemaker/pcmk_scheduler.c | 1 + lib/pacemaker/pcmk_simulate.c | 2 ++ lib/pengine/bundle.c | 2 ++ lib/pengine/clone.c | 1 + lib/pengine/complex.c | 1 + lib/pengine/failcounts.c | 1 + lib/pengine/native.c | 1 + lib/pengine/pe_digest.c | 1 + lib/pengine/pe_health.c | 3 ++- lib/pengine/pe_notif.c | 2 ++ lib/pengine/remote.c | 1 + lib/pengine/unpack.c | 1 + lib/pengine/utils.c | 2 ++ tools/cibadmin.c | 1 + tools/crm_resource_runtime.c | 1 + 78 files changed, 100 insertions(+), 28 deletions(-) diff --git a/daemons/attrd/attrd_utils.c b/daemons/attrd/attrd_utils.c index 8500e974a35..da70d4f4374 100644 --- a/daemons/attrd/attrd_utils.c +++ b/daemons/attrd/attrd_utils.c @@ -19,6 +19,7 @@ #include #include #include +#include // pcmk_parse_score(), etc. #include #include "pacemaker-attrd.h" diff --git a/daemons/controld/controld_callbacks.c b/daemons/controld/controld_callbacks.c index e1fdf53c511..571848eb826 100644 --- a/daemons/controld/controld_callbacks.c +++ b/daemons/controld/controld_callbacks.c @@ -17,6 +17,7 @@ #include #include +#include // PCMK_SCORE_INFINITY #include #include #include diff --git a/daemons/controld/controld_cib.c b/daemons/controld/controld_cib.c index 8690b086f78..cba30eddc8e 100644 --- a/daemons/controld/controld_cib.c +++ b/daemons/controld/controld_cib.c @@ -12,6 +12,7 @@ #include /* sleep */ #include +#include // crm_meta_value() #include #include #include diff --git a/daemons/controld/controld_control.c b/daemons/controld/controld_control.c index 07bbbfe49da..0cc422230a0 100644 --- a/daemons/controld/controld_control.c +++ b/daemons/controld/controld_control.c @@ -14,6 +14,7 @@ #include #include +#include // pcmk_unpack_nvpair_blocks() #include #include #include diff --git a/daemons/controld/controld_execd.c b/daemons/controld/controld_execd.c index b0a092419c7..8892a568878 100644 --- a/daemons/controld/controld_execd.c +++ b/daemons/controld/controld_execd.c @@ -17,6 +17,7 @@ #include #include // lrmd_event_data_t, lrmd_rsc_info_t, etc. #include +#include // crm_meta_name() #include #include diff --git a/daemons/controld/controld_execd_state.c b/daemons/controld/controld_execd_state.c index 8a318620118..2223a265e87 100644 --- a/daemons/controld/controld_execd_state.c +++ b/daemons/controld/controld_execd_state.c @@ -13,6 +13,7 @@ #include #include +#include // pcmk_unpack_nvpair_blocks() #include #include diff --git a/daemons/controld/controld_fencing.c b/daemons/controld/controld_fencing.c index 51590abaada..b9947453cb1 100644 --- a/daemons/controld/controld_fencing.c +++ b/daemons/controld/controld_fencing.c @@ -9,6 +9,8 @@ #include #include +#include // crm_meta_value() +#include // PCMK_SCORE_INFINITY #include #include #include diff --git a/daemons/controld/controld_join_dc.c b/daemons/controld/controld_join_dc.c index ba2b751be84..043e6873fd4 100644 --- a/daemons/controld/controld_join_dc.c +++ b/daemons/controld/controld_join_dc.c @@ -19,6 +19,7 @@ #include +#include // PCMK_SCORE_INFINITY #include #include diff --git a/daemons/controld/controld_membership.c b/daemons/controld/controld_membership.c index e5175f093a9..c69bee24519 100644 --- a/daemons/controld/controld_membership.c +++ b/daemons/controld/controld_membership.c @@ -13,6 +13,7 @@ #include #include +#include // PCMK_SCORE_INFINITY #include #include #include diff --git a/daemons/controld/controld_te_actions.c b/daemons/controld/controld_te_actions.c index 22b00406711..ccbb6909c89 100644 --- a/daemons/controld/controld_te_actions.c +++ b/daemons/controld/controld_te_actions.c @@ -13,6 +13,7 @@ #include #include #include // lrmd_event_data_t, lrmd_free_event() +#include // crm_meta_value() #include #include diff --git a/daemons/controld/controld_te_callbacks.c b/daemons/controld/controld_te_callbacks.c index 68e6a6add6c..e1a51e266f0 100644 --- a/daemons/controld/controld_te_callbacks.c +++ b/daemons/controld/controld_te_callbacks.c @@ -12,6 +12,7 @@ #include #include +#include // PCMK_SCORE_INFINITY #include #include diff --git a/daemons/controld/controld_te_events.c b/daemons/controld/controld_te_events.c index b3f774633dd..11dd4e13526 100644 --- a/daemons/controld/controld_te_events.c +++ b/daemons/controld/controld_te_events.c @@ -15,6 +15,8 @@ #include #include +#include // crm_meta_value() +#include // PCMK_SCORE_INFINITY #include #include diff --git a/daemons/controld/controld_te_utils.c b/daemons/controld/controld_te_utils.c index 4cbbae7c1f4..974b2023b8e 100644 --- a/daemons/controld/controld_te_utils.c +++ b/daemons/controld/controld_te_utils.c @@ -9,6 +9,7 @@ #include #include +#include // PCMK_SCORE_INFINITY #include #include diff --git a/daemons/controld/controld_transition.c b/daemons/controld/controld_transition.c index e59f72b072c..b30b37ce2e4 100644 --- a/daemons/controld/controld_transition.c +++ b/daemons/controld/controld_transition.c @@ -10,6 +10,7 @@ #include #include +#include // PCMK_SCORE_INFINITY #include #include diff --git a/daemons/execd/cts-exec-helper.c b/daemons/execd/cts-exec-helper.c index 47ab5bbe382..fcfb1561ac8 100644 --- a/daemons/execd/cts-exec-helper.c +++ b/daemons/execd/cts-exec-helper.c @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the Pacemaker project contributors + * Copyright 2012-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -16,6 +16,7 @@ #include #include #include +#include // crm_meta_name() #include #include diff --git a/daemons/execd/execd_alerts.c b/daemons/execd/execd_alerts.c index 9685e8d0b99..b1c15eb1f87 100644 --- a/daemons/execd/execd_alerts.c +++ b/daemons/execd/execd_alerts.c @@ -18,6 +18,7 @@ #include #include #include +#include // xml2list() #include #include "pacemaker-execd.h" diff --git a/daemons/execd/execd_commands.c b/daemons/execd/execd_commands.c index cd34021f61c..b146068d14f 100644 --- a/daemons/execd/execd_commands.c +++ b/daemons/execd/execd_commands.c @@ -29,6 +29,7 @@ #include #include #include +#include // hash2smartfield() #include #include "pacemaker-execd.h" diff --git a/daemons/fenced/fenced_commands.c b/daemons/fenced/fenced_commands.c index b5dbdd5c667..ce2b61b8303 100644 --- a/daemons/fenced/fenced_commands.c +++ b/daemons/fenced/fenced_commands.c @@ -30,6 +30,7 @@ #include #include #include +#include // hash2field(), xml2list() #include #include diff --git a/daemons/fenced/fenced_scheduler.c b/daemons/fenced/fenced_scheduler.c index 58dc064ba67..10f12e5da8b 100644 --- a/daemons/fenced/fenced_scheduler.c +++ b/daemons/fenced/fenced_scheduler.c @@ -13,6 +13,7 @@ #include #include +#include // pcmk_readable_score() #include #include diff --git a/include/crm/common/strings.h b/include/crm/common/strings.h index eb753d1f093..fd4fba8fba3 100644 --- a/include/crm/common/strings.h +++ b/include/crm/common/strings.h @@ -10,7 +10,7 @@ #ifndef PCMK__CRM_COMMON_STRINGS__H #define PCMK__CRM_COMMON_STRINGS__H -#include // gboolean, guint, G_GNUC_PRINTF +#include // guint #ifdef __cplusplus extern "C" { diff --git a/include/crm/common/util.h b/include/crm/common/util.h index c5746f03e7f..86759f9d227 100644 --- a/include/crm/common/util.h +++ b/include/crm/common/util.h @@ -10,22 +10,6 @@ #ifndef PCMK__CRM_COMMON_UTIL__H #define PCMK__CRM_COMMON_UTIL__H -#include // gid_t, mode_t, size_t, time_t, uid_t -#include -#include -#include // uint32_t -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - #ifdef __cplusplus extern "C" { #endif diff --git a/lib/cib/cib_attrs.c b/lib/cib/cib_attrs.c index 81f05dff7ca..26b13582b7a 100644 --- a/lib/cib/cib_attrs.c +++ b/lib/cib/cib_attrs.c @@ -22,6 +22,7 @@ #include #include +#include // crm_create_nvpair_xml() #include #include #include diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c index 094dd5b470e..9c28128c75d 100644 --- a/lib/cib/cib_utils.c +++ b/lib/cib/cib_utils.c @@ -19,7 +19,9 @@ #include #include +#include // pcmk_acl_required(), etc. #include +#include // pcmk_unpack_nvpair_blocks() #include #include diff --git a/lib/common/acl.c b/lib/common/acl.c index 113679deba3..a004efd1ef8 100644 --- a/lib/common/acl.c +++ b/lib/common/acl.c @@ -21,6 +21,7 @@ #include // xmlXPathObject, etc. #include +#include // pcmk_acl_required(), etc. #include #include #include "crmcommon_private.h" diff --git a/lib/common/alerts.c b/lib/common/alerts.c index abf1552453a..73f4d5037a1 100644 --- a/lib/common/alerts.c +++ b/lib/common/alerts.c @@ -10,6 +10,7 @@ #include #include #include +#include // pcmk_unpack_nvpair_blocks(), etc. #include #include #include diff --git a/lib/common/attrs.c b/lib/common/attrs.c index e02b9bc33ef..b8b16fe33a3 100644 --- a/lib/common/attrs.c +++ b/lib/common/attrs.c @@ -11,6 +11,7 @@ #include +#include // crm_meta_name() #include #include #include diff --git a/lib/common/digest.c b/lib/common/digest.c index 657544b525f..690a1f16ecd 100644 --- a/lib/common/digest.c +++ b/lib/common/digest.c @@ -20,6 +20,7 @@ #include // gnutls_strerror() #include +#include // crm_meta_name() #include #include "crmcommon_private.h" diff --git a/lib/common/health.c b/lib/common/health.c index 97e4118fd11..01760a54d0c 100644 --- a/lib/common/health.c +++ b/lib/common/health.c @@ -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,6 +13,7 @@ #include // pcmk_scheduler_t #include // pcmk_scheduler_t private data +#include // pcmk_parse_score(), etc. /*! * \internal diff --git a/lib/common/ipc_controld.c b/lib/common/ipc_controld.c index 77f6e04164d..28f4b5d82cf 100644 --- a/lib/common/ipc_controld.c +++ b/lib/common/ipc_controld.c @@ -18,6 +18,7 @@ #include #include +#include // crm_meta_name() #include #include #include diff --git a/lib/common/nvpair.c b/lib/common/nvpair.c index b8596b21122..816a9533e0b 100644 --- a/lib/common/nvpair.c +++ b/lib/common/nvpair.c @@ -19,6 +19,7 @@ #include #include +#include // pcmk_nvpair_t, etc. #include #include #include "crmcommon_private.h" diff --git a/lib/common/options.c b/lib/common/options.c index 4e43976491c..a105729c0ef 100644 --- a/lib/common/options.c +++ b/lib/common/options.c @@ -16,6 +16,7 @@ #include #include +#include // pcmk_str_is_infinity(), etc. #include void diff --git a/lib/common/patchset.c b/lib/common/patchset.c index aebfcfc17ff..adbaad86030 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -21,6 +21,7 @@ #include // xmlNode #include +#include // xml_acl_disable() #include #include #include // CRM_XML_LOG_BASE, etc. diff --git a/lib/common/scores.c b/lib/common/scores.c index 5c36fc70374..8e165ed8053 100644 --- a/lib/common/scores.c +++ b/lib/common/scores.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. * @@ -13,6 +13,8 @@ #include // strcpy(), strdup() #include // size_t +#include // pcmk_parse_score(), etc. + int pcmk__score_red = 0; int pcmk__score_green = 0; int pcmk__score_yellow = 0; diff --git a/lib/common/tests/nvpair/crm_meta_name_test.c b/lib/common/tests/nvpair/crm_meta_name_test.c index 7c6c32b6816..377d3743ca8 100644 --- a/lib/common/tests/nvpair/crm_meta_name_test.c +++ b/lib/common/tests/nvpair/crm_meta_name_test.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. * @@ -9,6 +9,7 @@ #include +#include // crm_meta_value() #include #include diff --git a/lib/common/tests/nvpair/crm_meta_value_test.c b/lib/common/tests/nvpair/crm_meta_value_test.c index ffe9619c546..59f46d7acf3 100644 --- a/lib/common/tests/nvpair/crm_meta_value_test.c +++ b/lib/common/tests/nvpair/crm_meta_value_test.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. * @@ -9,6 +9,7 @@ #include +#include // crm_meta_value() #include #include diff --git a/lib/common/tests/nvpair/pcmk_unpack_nvpair_blocks_test.c b/lib/common/tests/nvpair/pcmk_unpack_nvpair_blocks_test.c index 1792c00332a..4454439fadd 100644 --- a/lib/common/tests/nvpair/pcmk_unpack_nvpair_blocks_test.c +++ b/lib/common/tests/nvpair/pcmk_unpack_nvpair_blocks_test.c @@ -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. * @@ -15,6 +15,7 @@ #include #include +#include // pcmk_unpack_nvpair_blocks() #include /* The test XML is designed so that: diff --git a/lib/common/tests/scores/pcmk__add_scores_test.c b/lib/common/tests/scores/pcmk__add_scores_test.c index 952cf978adb..830f8426bb5 100644 --- a/lib/common/tests/scores/pcmk__add_scores_test.c +++ b/lib/common/tests/scores/pcmk__add_scores_test.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. * @@ -9,6 +9,7 @@ #include +#include // PCMK_SCORE_INFINITY #include static void diff --git a/lib/common/tests/scores/pcmk_readable_score_test.c b/lib/common/tests/scores/pcmk_readable_score_test.c index c3d66f6ab1f..8f6b939579e 100644 --- a/lib/common/tests/scores/pcmk_readable_score_test.c +++ b/lib/common/tests/scores/pcmk_readable_score_test.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. * @@ -9,6 +9,7 @@ #include +#include // pcmk_readable_score() #include static void diff --git a/lib/common/tests/scores/pcmk_str_is_infinity_test.c b/lib/common/tests/scores/pcmk_str_is_infinity_test.c index fff58ab170a..06ff1d3b2de 100644 --- a/lib/common/tests/scores/pcmk_str_is_infinity_test.c +++ b/lib/common/tests/scores/pcmk_str_is_infinity_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2020-2021 the Pacemaker project contributors + * Copyright 2020-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -9,6 +9,7 @@ #include +#include // pcmk_str_is_infinity() #include static void diff --git a/lib/common/tests/scores/pcmk_str_is_minus_infinity_test.c b/lib/common/tests/scores/pcmk_str_is_minus_infinity_test.c index 477b0550216..9223eb260b7 100644 --- a/lib/common/tests/scores/pcmk_str_is_minus_infinity_test.c +++ b/lib/common/tests/scores/pcmk_str_is_minus_infinity_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2020-2021 the Pacemaker project contributors + * Copyright 2020-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -9,6 +9,7 @@ #include +#include // pcmk_str_is_minus_infinity() #include static void diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index 8f1d927c129..188226116ea 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -22,6 +22,7 @@ #include #include // pcmk_rc_ok, etc. +#include // pcmk_parse_score() #include #include "crmcommon_private.h" @@ -1551,6 +1552,7 @@ pcmk__xe_attr_is_true(const xmlNode *node, const char *name) #include // gboolean, GSList +#include // pcmk_free_nvpairs() #include // pcmk_xml_attrs2nvpairs(), etc. #include // crm_xml_sanitize_id() #include diff --git a/lib/fencing/st_client.c b/lib/fencing/st_client.c index 87f26702641..084eca16094 100644 --- a/lib/fencing/st_client.c +++ b/lib/fencing/st_client.c @@ -24,6 +24,7 @@ #include #include #include +#include // hash2field() #include #include diff --git a/lib/lrmd/lrmd_client.c b/lib/lrmd/lrmd_client.c index b293f0a82ec..806f73d4cb6 100644 --- a/lib/lrmd/lrmd_client.c +++ b/lib/lrmd/lrmd_client.c @@ -30,6 +30,7 @@ #include #include #include +#include // hash2smartfield(), xml2list() #include #include #include diff --git a/lib/pacemaker/pcmk_acl.c b/lib/pacemaker/pcmk_acl.c index d500aa24734..0036d6fd10a 100644 --- a/lib/pacemaker/pcmk_acl.c +++ b/lib/pacemaker/pcmk_acl.c @@ -24,6 +24,7 @@ #include #include +#include // pcmk_acl_required() #include #include #include diff --git a/lib/pacemaker/pcmk_graph_consumer.c b/lib/pacemaker/pcmk_graph_consumer.c index d9c6d220cf2..097689acf31 100644 --- a/lib/pacemaker/pcmk_graph_consumer.c +++ b/lib/pacemaker/pcmk_graph_consumer.c @@ -13,6 +13,8 @@ #include #include +#include // crm_meta_value() +#include // PCMK_SCORE_INFINITY #include #include #include diff --git a/lib/pacemaker/pcmk_graph_producer.c b/lib/pacemaker/pcmk_graph_producer.c index 1bfa6faeb57..92135549bc8 100644 --- a/lib/pacemaker/pcmk_graph_producer.c +++ b/lib/pacemaker/pcmk_graph_producer.c @@ -12,6 +12,7 @@ #include #include #include +#include // hash2field(), etc. #include #include diff --git a/lib/pacemaker/pcmk_injections.c b/lib/pacemaker/pcmk_injections.c index 019421d1044..5199fca47cd 100644 --- a/lib/pacemaker/pcmk_injections.c +++ b/lib/pacemaker/pcmk_injections.c @@ -23,6 +23,7 @@ #include #include #include +#include // crm_create_nvpair_xml() #include #include #include diff --git a/lib/pacemaker/pcmk_output.c b/lib/pacemaker/pcmk_output.c index 38978346ce0..f200fd09435 100644 --- a/lib/pacemaker/pcmk_output.c +++ b/lib/pacemaker/pcmk_output.c @@ -10,6 +10,7 @@ #include #include #include +#include // pcmk_readable_score() #include #include #include // stonith__* diff --git a/lib/pacemaker/pcmk_sched_actions.c b/lib/pacemaker/pcmk_sched_actions.c index 0e8c5fd5c7b..70933ee857b 100644 --- a/lib/pacemaker/pcmk_sched_actions.c +++ b/lib/pacemaker/pcmk_sched_actions.c @@ -17,6 +17,7 @@ #include // xmlNode #include +#include // crm_meta_value() #include #include #include "libpacemaker_private.h" diff --git a/lib/pacemaker/pcmk_sched_bundle.c b/lib/pacemaker/pcmk_sched_bundle.c index fafa1372c28..caecd032998 100644 --- a/lib/pacemaker/pcmk_sched_bundle.c +++ b/lib/pacemaker/pcmk_sched_bundle.c @@ -13,6 +13,7 @@ #include // xmlNode +#include // PCMK_SCORE_INFINITY #include #include diff --git a/lib/pacemaker/pcmk_sched_clone.c b/lib/pacemaker/pcmk_sched_clone.c index eb52560a5ac..283f6750499 100644 --- a/lib/pacemaker/pcmk_sched_clone.c +++ b/lib/pacemaker/pcmk_sched_clone.c @@ -9,6 +9,8 @@ #include +#include // crm_meta_name() +#include // PCMK_SCORE_INFINITY #include #include diff --git a/lib/pacemaker/pcmk_sched_colocation.c b/lib/pacemaker/pcmk_sched_colocation.c index 2388d39618f..23a0c6f0f05 100644 --- a/lib/pacemaker/pcmk_sched_colocation.c +++ b/lib/pacemaker/pcmk_sched_colocation.c @@ -15,6 +15,7 @@ #include #include #include +#include // PCMK_SCORE_INFINITY #include #include diff --git a/lib/pacemaker/pcmk_sched_group.c b/lib/pacemaker/pcmk_sched_group.c index a46c163e034..ab9256a07ea 100644 --- a/lib/pacemaker/pcmk_sched_group.c +++ b/lib/pacemaker/pcmk_sched_group.c @@ -13,6 +13,7 @@ #include // QB_ABS() +#include // PCMK_SCORE_INFINITY #include #include diff --git a/lib/pacemaker/pcmk_sched_instances.c b/lib/pacemaker/pcmk_sched_instances.c index ed8cc8c2e24..0ca9c727271 100644 --- a/lib/pacemaker/pcmk_sched_instances.c +++ b/lib/pacemaker/pcmk_sched_instances.c @@ -12,6 +12,7 @@ */ #include +#include // PCMK_SCORE_INFINITY #include #include #include "libpacemaker_private.h" diff --git a/lib/pacemaker/pcmk_sched_location.c b/lib/pacemaker/pcmk_sched_location.c index f66c9a5b8ee..bf6b4d33abb 100644 --- a/lib/pacemaker/pcmk_sched_location.c +++ b/lib/pacemaker/pcmk_sched_location.c @@ -14,6 +14,7 @@ #include #include +#include // pcmk_parse_score(), etc. #include #include diff --git a/lib/pacemaker/pcmk_sched_nodes.c b/lib/pacemaker/pcmk_sched_nodes.c index 643e4da2807..48587ed3f57 100644 --- a/lib/pacemaker/pcmk_sched_nodes.c +++ b/lib/pacemaker/pcmk_sched_nodes.c @@ -8,6 +8,7 @@ */ #include +#include // PCMK_SCORE_INFINITY #include #include #include diff --git a/lib/pacemaker/pcmk_sched_ordering.c b/lib/pacemaker/pcmk_sched_ordering.c index fa9f3289a2c..8899d9dd87a 100644 --- a/lib/pacemaker/pcmk_sched_ordering.c +++ b/lib/pacemaker/pcmk_sched_ordering.c @@ -14,6 +14,7 @@ #include #include +#include // pcmk_parse_score() #include #include "libpacemaker_private.h" diff --git a/lib/pacemaker/pcmk_sched_primitive.c b/lib/pacemaker/pcmk_sched_primitive.c index 61cc519bc9e..67e658f8248 100644 --- a/lib/pacemaker/pcmk_sched_primitive.c +++ b/lib/pacemaker/pcmk_sched_primitive.c @@ -12,6 +12,8 @@ #include #include // uint8_t, uint32_t +#include // crm_meta_name() +#include // PCMK_SCORE_INFINITY #include #include diff --git a/lib/pacemaker/pcmk_sched_promotable.c b/lib/pacemaker/pcmk_sched_promotable.c index 608aab3d8a7..ab095468db5 100644 --- a/lib/pacemaker/pcmk_sched_promotable.c +++ b/lib/pacemaker/pcmk_sched_promotable.c @@ -11,6 +11,7 @@ #include // bool, true, false +#include // PCMK_SCORE_INFINITY #include #include diff --git a/lib/pacemaker/pcmk_sched_remote.c b/lib/pacemaker/pcmk_sched_remote.c index e5c5be0a9ec..1733bd1f93f 100644 --- a/lib/pacemaker/pcmk_sched_remote.c +++ b/lib/pacemaker/pcmk_sched_remote.c @@ -13,6 +13,7 @@ #include #include +#include // hash2metafield() #include #include diff --git a/lib/pacemaker/pcmk_sched_resource.c b/lib/pacemaker/pcmk_sched_resource.c index e9a0c2849e7..7277bbe4cf4 100644 --- a/lib/pacemaker/pcmk_sched_resource.c +++ b/lib/pacemaker/pcmk_sched_resource.c @@ -11,6 +11,7 @@ #include #include +#include // PCMK_SCORE_INFINITY #include #include diff --git a/lib/pacemaker/pcmk_sched_tickets.c b/lib/pacemaker/pcmk_sched_tickets.c index d3001a6f8ac..656beb83dd3 100644 --- a/lib/pacemaker/pcmk_sched_tickets.c +++ b/lib/pacemaker/pcmk_sched_tickets.c @@ -15,6 +15,7 @@ #include #include #include +#include // PCMK_SCORE_INFINITY #include #include diff --git a/lib/pacemaker/pcmk_sched_utilization.c b/lib/pacemaker/pcmk_sched_utilization.c index e2aa3df9656..f27ef133087 100644 --- a/lib/pacemaker/pcmk_sched_utilization.c +++ b/lib/pacemaker/pcmk_sched_utilization.c @@ -11,6 +11,7 @@ #include // INT_MIN, INT_MAX +#include // PCMK_SCORE_INFINITY #include #include diff --git a/lib/pacemaker/pcmk_scheduler.c b/lib/pacemaker/pcmk_scheduler.c index 87649c85f2a..a6b69b7592c 100644 --- a/lib/pacemaker/pcmk_scheduler.c +++ b/lib/pacemaker/pcmk_scheduler.c @@ -12,6 +12,7 @@ #include #include #include +#include // PCMK_SCORE_INFINITY #include #include #include diff --git a/lib/pacemaker/pcmk_simulate.c b/lib/pacemaker/pcmk_simulate.c index bde26a74fff..c46d0e239e5 100644 --- a/lib/pacemaker/pcmk_simulate.c +++ b/lib/pacemaker/pcmk_simulate.c @@ -9,8 +9,10 @@ #include #include +#include // crm_meta_value() #include #include +#include // PCMK_SCORE_INFINITY #include #include #include diff --git a/lib/pengine/bundle.c b/lib/pengine/bundle.c index d8f1b8e6995..8896e0341a3 100644 --- a/lib/pengine/bundle.c +++ b/lib/pengine/bundle.c @@ -15,6 +15,8 @@ #include #include +#include // crm_create_nvpair_xml() +#include // PCMK_SCORE_INFINITY #include #include #include diff --git a/lib/pengine/clone.c b/lib/pengine/clone.c index 841f0672606..cb316e9fe53 100644 --- a/lib/pengine/clone.c +++ b/lib/pengine/clone.c @@ -15,6 +15,7 @@ #include #include #include +#include // PCMK_SCORE_INFINITY #include #include #include diff --git a/lib/pengine/complex.c b/lib/pengine/complex.c index beedfa643a4..6210966aca8 100644 --- a/lib/pengine/complex.c +++ b/lib/pengine/complex.c @@ -12,6 +12,7 @@ #include // xmlNode #include +#include // pcmk_parse_score() #include #include #include diff --git a/lib/pengine/failcounts.c b/lib/pengine/failcounts.c index ddd8acf4fef..40cfa929ce8 100644 --- a/lib/pengine/failcounts.c +++ b/lib/pengine/failcounts.c @@ -14,6 +14,7 @@ #include // xmlXPathObject, etc. #include +#include // pcmk_parse_score() #include #include #include diff --git a/lib/pengine/native.c b/lib/pengine/native.c index 4a7eb4f14f7..855e3d05679 100644 --- a/lib/pengine/native.c +++ b/lib/pengine/native.c @@ -13,6 +13,7 @@ #include // uint32_t #include +#include // PCMK_SCORE_INFINITY #include #include #include diff --git a/lib/pengine/pe_digest.c b/lib/pengine/pe_digest.c index 39e9b07bc44..af5adcfd2d9 100644 --- a/lib/pengine/pe_digest.c +++ b/lib/pengine/pe_digest.c @@ -13,6 +13,7 @@ #include #include +#include // hash2field(), hash2metafield() #include #include #include diff --git a/lib/pengine/pe_health.c b/lib/pengine/pe_health.c index f90a21d26f9..f94c2321999 100644 --- a/lib/pengine/pe_health.c +++ b/lib/pengine/pe_health.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. * @@ -9,6 +9,7 @@ #include +#include // pcmk_parse_score(), etc. #include #include #include "pe_status_private.h" diff --git a/lib/pengine/pe_notif.c b/lib/pengine/pe_notif.c index 812ad55b024..4cb997ae0f8 100644 --- a/lib/pengine/pe_notif.c +++ b/lib/pengine/pe_notif.c @@ -8,6 +8,8 @@ */ #include +#include // pcmk_free_nvpairs(), etc. +#include // PCMK_SCORE_INFINITY #include #include diff --git a/lib/pengine/remote.c b/lib/pengine/remote.c index 2da45d961a4..bfdf1bf9970 100644 --- a/lib/pengine/remote.c +++ b/lib/pengine/remote.c @@ -8,6 +8,7 @@ */ #include +#include // crm_create_nvpair_xml() #include #include #include diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c index 0afbfae2aef..2d4c94c3c42 100644 --- a/lib/pengine/unpack.c +++ b/lib/pengine/unpack.c @@ -19,6 +19,7 @@ #include #include +#include // PCMK_SCORE_INFINITY #include #include diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c index 20908456d41..87fcb34586c 100644 --- a/lib/pengine/utils.c +++ b/lib/pengine/utils.c @@ -13,6 +13,8 @@ #include #include +#include // pcmk_unpack_nvpair_blocks() +#include // PCMK_SCORE_INFINITY #include #include diff --git a/tools/cibadmin.c b/tools/cibadmin.c index 05f02571571..96c1b4d17a7 100644 --- a/tools/cibadmin.c +++ b/tools/cibadmin.c @@ -10,6 +10,7 @@ #include #include #include +#include // pcmk_acl_required() #include #include #include diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c index 6a6be825075..bf9b52506d5 100644 --- a/tools/crm_resource_runtime.c +++ b/tools/crm_resource_runtime.c @@ -20,6 +20,7 @@ #include #include #include +#include // crm_meta_name(), etc. #include #include From b677105437cb17c17f25dd782cae92323622ffa8 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Tue, 25 Mar 2025 02:48:38 -0700 Subject: [PATCH 148/186] Refactor: libcrmcommon: Drop unused include from schemas.h Signed-off-by: Reid Wahl --- include/crm/common/schemas.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/include/crm/common/schemas.h b/include/crm/common/schemas.h index 338311ba75b..c892010b0c0 100644 --- a/include/crm/common/schemas.h +++ b/include/crm/common/schemas.h @@ -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. * @@ -10,7 +10,6 @@ #ifndef PCMK__CRM_COMMON_SCHEMAS__H #define PCMK__CRM_COMMON_SCHEMAS__H -#include // bool #include // xmlNode #ifdef __cplusplus From baa59c826f08caeb0f9fb972e11de251761024fd Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Tue, 25 Mar 2025 02:56:29 -0700 Subject: [PATCH 149/186] Refactor: libcrmcommon: Remove a few more unused includes from headers Signed-off-by: Reid Wahl --- include/crm/common/actions.h | 3 +-- include/crm/common/nodes.h | 4 ++-- include/crm/common/nvpair.h | 5 ++--- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/include/crm/common/actions.h b/include/crm/common/actions.h index 63e2eac6aa5..7c457656865 100644 --- a/include/crm/common/actions.h +++ b/include/crm/common/actions.h @@ -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. * @@ -11,7 +11,6 @@ #define PCMK__CRM_COMMON_ACTIONS__H #include // bool -#include // strcasecmp() #include // gboolean, guint #include // xmlNode diff --git a/include/crm/common/nodes.h b/include/crm/common/nodes.h index c4acb91c4b8..fc200becfeb 100644 --- a/include/crm/common/nodes.h +++ b/include/crm/common/nodes.h @@ -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. * @@ -11,7 +11,7 @@ #define PCMK__CRM_COMMON_NODES__H #include // bool -#include // gboolean, GList, GHashTable +#include // gboolean, GList #include // xmlNode #include // pcmk_resource_t, pcmk_scheduler_t diff --git a/include/crm/common/nvpair.h b/include/crm/common/nvpair.h index f8018b3090f..938357fc5ea 100644 --- a/include/crm/common/nvpair.h +++ b/include/crm/common/nvpair.h @@ -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. * @@ -10,8 +10,7 @@ #ifndef PCMK__CRM_COMMON_NVPAIR__H #define PCMK__CRM_COMMON_NVPAIR__H -#include // struct timeval -#include // gpointer, gboolean, guint, GHashTable +#include // gpointer, GHashTable #include // xmlNode #include From aea5aa0e7897fd09beab4d79d257b9deb6699eb1 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 26 Mar 2025 18:09:06 -0700 Subject: [PATCH 150/186] Refactor: libcrmcommon: Replace qb_logt() with qb_log() The tags argument is always 0, so they're equivalent: define qb_log(priority, fmt, args...) qb_logt(priority, 0, fmt, ##args) Signed-off-by: Reid Wahl --- include/crm/common/logging.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/include/crm/common/logging.h b/include/crm/common/logging.h index 56f42107e9d..2aac5f2db05 100644 --- a/include/crm/common/logging.h +++ b/include/crm/common/logging.h @@ -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. * @@ -352,19 +352,19 @@ pcmk__clip_log_level(int level) } \ } while (0) -#define crm_emerg(fmt, args...) qb_log(LOG_EMERG, fmt , ##args) -#define crm_crit(fmt, args...) qb_logt(LOG_CRIT, 0, fmt , ##args) +#define crm_emerg(fmt, args...) qb_log(LOG_EMERG, fmt , ##args) +#define crm_crit(fmt, args...) qb_log(LOG_CRIT, fmt , ##args) // NOTE: sbd (as of at least 1.5.2) uses this -#define crm_err(fmt, args...) qb_logt(LOG_ERR, 0, fmt , ##args) +#define crm_err(fmt, args...) qb_log(LOG_ERR, fmt , ##args) // NOTE: sbd (as of at least 1.5.2) uses this -#define crm_warn(fmt, args...) qb_logt(LOG_WARNING, 0, fmt , ##args) +#define crm_warn(fmt, args...) qb_log(LOG_WARNING, fmt , ##args) // NOTE: sbd (as of at least 1.5.2) uses this -#define crm_notice(fmt, args...) qb_logt(LOG_NOTICE, 0, fmt , ##args) +#define crm_notice(fmt, args...) qb_log(LOG_NOTICE, fmt , ##args) -#define crm_info(fmt, args...) qb_logt(LOG_INFO, 0, fmt , ##args) +#define crm_info(fmt, args...) qb_log(LOG_INFO, fmt , ##args) // // NOTE: sbd (as of at least 1.5.2) uses this #define crm_debug(fmt, args...) do_crm_log_unlikely(LOG_DEBUG, fmt , ##args) From 5689b1e062c143a381fa0a9c67b5e7341cc96a5c Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 26 Mar 2025 18:22:04 -0700 Subject: [PATCH 151/186] Refactor: libcrmcommon, executor: Drop space before variadic arg comma See the removed comment for more info on why these gratuitous spaces were present in logging.h and cts-exec-helper.c. We don't use the extra space in other files that use '##args' (scheduler_internal.h, cib_utils.c, and output_log.c). And gcc fixed that bug in version 3.0.0, which was released in 2001. We should be okay. Details: https://gcc.gnu.org/onlinedocs/gcc-4.2.2/cpp/Differences-from-previous-versions.html#Differences-from-previous-versions https://gcc.gnu.org/gcc-3.0/ Signed-off-by: Reid Wahl --- daemons/execd/cts-exec-helper.c | 2 +- include/crm/common/logging.h | 38 ++++++++++++++------------------- 2 files changed, 17 insertions(+), 23 deletions(-) diff --git a/daemons/execd/cts-exec-helper.c b/daemons/execd/cts-exec-helper.c index fcfb1561ac8..ed1a134f363 100644 --- a/daemons/execd/cts-exec-helper.c +++ b/daemons/execd/cts-exec-helper.c @@ -172,7 +172,7 @@ test_exit(crm_exit_t exit_code) #define print_result(fmt, args...) \ if (!options.quiet) { \ - printf(fmt "\n" , ##args); \ + printf(fmt "\n", ##args); \ } #define report_event(event) \ diff --git a/include/crm/common/logging.h b/include/crm/common/logging.h index 2aac5f2db05..83e47ed4f0f 100644 --- a/include/crm/common/logging.h +++ b/include/crm/common/logging.h @@ -99,11 +99,6 @@ void pcmk_log_xml_as(const char *file, const char *function, uint32_t line, uint32_t tags, uint8_t level, const char *text, const xmlNode *xml); -/* - * Throughout the macros below, note the leading, pre-comma, space in the - * various ' , ##args' occurrences to aid portability across versions of 'gcc'. - * https://gcc.gnu.org/onlinedocs/cpp/Variadic-Macros.html#Variadic-Macros - */ #if defined(__clang__) #define CRM_TRACE_INIT_DATA(name) #else @@ -151,13 +146,13 @@ pcmk__clip_log_level(int level) \ switch (_level) { \ case LOG_STDOUT: \ - printf(fmt "\n" , ##args); \ + printf(fmt "\n", ##args); \ break; \ case LOG_NEVER: \ break; \ default: \ qb_log_from_external_source(__func__, __FILE__, fmt, \ - _level, __LINE__, 0 , ##args); \ + _level, __LINE__, 0, ##args); \ break; \ } \ } while (0) @@ -185,7 +180,7 @@ pcmk__clip_log_level(int level) } \ if (crm_is_callsite_active(trace_cs, _level, 0)) { \ qb_log_from_external_source(__func__, __FILE__, fmt, \ - _level, __LINE__, 0 , \ + _level, __LINE__, 0, \ ##args); \ } \ } \ @@ -270,13 +265,13 @@ pcmk__clip_log_level(int level) \ switch (_level) { \ case LOG_STDOUT: \ - printf(fmt "\n" , ##args); \ + printf(fmt "\n" ,##args); \ break; \ case LOG_NEVER: \ break; \ default: \ qb_log_from_external_source(function, file, fmt, _level, \ - line, 0 , ##args); \ + line, 0 ,##args); \ break; \ } \ } while (0) @@ -305,13 +300,12 @@ pcmk__clip_log_level(int level) default: { \ const char *err = strerror(errno); \ if (_level <= crm_log_level) { \ - fprintf(stderr, fmt ": %s (%d)\n" , ##args, err, \ - errno); \ + fprintf(stderr, fmt ": %s (%d)\n", ##args, err, errno); \ } \ /* Pass original level arg since do_crm_log() also declares \ * _level \ */ \ - do_crm_log((level), fmt ": %s (%d)" , ##args, err, errno); \ + do_crm_log((level), fmt ": %s (%d)", ##args, err, errno); \ } \ break; \ } \ @@ -346,30 +340,30 @@ pcmk__clip_log_level(int level) converted_tag)) { \ qb_log_from_external_source(__func__, __FILE__, fmt, \ _level, __LINE__, \ - converted_tag , ##args); \ + converted_tag, ##args); \ } \ } \ } \ } while (0) -#define crm_emerg(fmt, args...) qb_log(LOG_EMERG, fmt , ##args) -#define crm_crit(fmt, args...) qb_log(LOG_CRIT, fmt , ##args) +#define crm_emerg(fmt, args...) qb_log(LOG_EMERG, fmt, ##args) +#define crm_crit(fmt, args...) qb_log(LOG_CRIT, fmt, ##args) // NOTE: sbd (as of at least 1.5.2) uses this -#define crm_err(fmt, args...) qb_log(LOG_ERR, fmt , ##args) +#define crm_err(fmt, args...) qb_log(LOG_ERR, fmt, ##args) // NOTE: sbd (as of at least 1.5.2) uses this -#define crm_warn(fmt, args...) qb_log(LOG_WARNING, fmt , ##args) +#define crm_warn(fmt, args...) qb_log(LOG_WARNING, fmt, ##args) // NOTE: sbd (as of at least 1.5.2) uses this -#define crm_notice(fmt, args...) qb_log(LOG_NOTICE, fmt , ##args) +#define crm_notice(fmt, args...) qb_log(LOG_NOTICE, fmt, ##args) -#define crm_info(fmt, args...) qb_log(LOG_INFO, fmt , ##args) +#define crm_info(fmt, args...) qb_log(LOG_INFO, fmt, ##args) // // NOTE: sbd (as of at least 1.5.2) uses this -#define crm_debug(fmt, args...) do_crm_log_unlikely(LOG_DEBUG, fmt , ##args) +#define crm_debug(fmt, args...) do_crm_log_unlikely(LOG_DEBUG, fmt ,##args) -#define crm_trace(fmt, args...) do_crm_log_unlikely(LOG_TRACE, fmt , ##args) +#define crm_trace(fmt, args...) do_crm_log_unlikely(LOG_TRACE, fmt ,##args) #define crm_log_xml_crit(xml, text) do_crm_log_xml(LOG_CRIT, text, xml) #define crm_log_xml_err(xml, text) do_crm_log_xml(LOG_ERR, text, xml) From 777e97a928979ec36a95f633079aefc1aa2c20d6 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 26 Mar 2025 18:34:10 -0700 Subject: [PATCH 152/186] Refactor: libcrmcommon: New pcmk__emerg() To replace crm_emerg(). Signed-off-by: Reid Wahl --- include/crm/common/logging_internal.h | 9 +++++++ lib/common/watchdog.c | 37 ++++++++++++++------------- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/include/crm/common/logging_internal.h b/include/crm/common/logging_internal.h index 29e804eea37..390892f08b7 100644 --- a/include/crm/common/logging_internal.h +++ b/include/crm/common/logging_internal.h @@ -20,6 +20,15 @@ extern "C" { #endif +/*! + * \internal + * \brief Log a message at \c LOG_EMERG level + * + * \param[in] fmt \c printf() format string for log message + * \param[in] args Format string arguments + */ +#define pcmk__emerg(fmt, args...) qb_log(LOG_EMERG, fmt, ##args) + /* Some warnings are too noisy when logged every time a given function is called * (for example, using a deprecated feature). As an alternative, we allow * warnings to be logged once per invocation of the calling program. Each of diff --git a/lib/common/watchdog.c b/lib/common/watchdog.c index 5c46cc770b3..c4b504e8af9 100644 --- a/lib/common/watchdog.c +++ b/lib/common/watchdog.c @@ -34,22 +34,23 @@ static void panic_local_nonroot(pid_t ppid) { if (ppid > 1) { // pacemakerd is still our parent - crm_emerg("Escalating panic to " PCMK__SERVER_PACEMAKERD "[%lld]", - (long long) ppid); + pcmk__emerg("Escalating panic to " PCMK__SERVER_PACEMAKERD "[%lld]", + (long long) ppid); } else { // Signal (non-parent) pacemakerd if possible ppid = pcmk__procfs_pid_of(PCMK__SERVER_PACEMAKERD); if (ppid > 0) { union sigval signal_value; - crm_emerg("Signaling " PCMK__SERVER_PACEMAKERD "[%lld] to panic", - (long long) ppid); + pcmk__emerg("Signaling " PCMK__SERVER_PACEMAKERD "[%lld] to panic", + (long long) ppid); memset(&signal_value, 0, sizeof(signal_value)); if (sigqueue(ppid, SIGQUIT, signal_value) < 0) { - crm_emerg("Exiting after signal failure: %s", strerror(errno)); + pcmk__emerg("Exiting after signal failure: %s", + strerror(errno)); } } else { - crm_emerg("Exiting with no known " PCMK__SERVER_PACEMAKERD - "process"); + pcmk__emerg("Exiting with no known " PCMK__SERVER_PACEMAKERD + "process"); } } crm_exit(CRM_EX_PANIC); @@ -101,7 +102,7 @@ panic_local(void) reboot(reboot_cmd); // Even reboot failed, nothing left to do but exit - crm_emerg("Exiting after reboot failed: %s", strerror(errno)); + pcmk__emerg("Exiting after reboot failed: %s", strerror(errno)); if (getppid() > 1) { // pacemakerd is parent process crm_exit(CRM_EX_PANIC); } else { // This is pacemakerd, or an orphaned subdaemon @@ -122,7 +123,7 @@ panic_sbd(void) memset(&signal_value, 0, sizeof(signal_value)); /* TODO: Arrange for a slightly less brutal option? */ if(sigqueue(sbd_pid, SIGKILL, signal_value) < 0) { - crm_emerg("Panicking directly because couldn't signal sbd"); + pcmk__emerg("Panicking directly because couldn't signal sbd"); panic_local(); } @@ -148,12 +149,12 @@ void pcmk__panic(const char *reason) { if (pcmk__locate_sbd() > 1) { - crm_emerg("Signaling sbd[%lld] to panic the system: %s", - (long long) sbd_pid, reason); + pcmk__emerg("Signaling sbd[%lld] to panic the system: %s", + (long long) sbd_pid, reason); panic_sbd(); } else { - crm_emerg("Panicking the system directly: %s", reason); + pcmk__emerg("Panicking the system directly: %s", reason); panic_local(); } } @@ -280,9 +281,9 @@ pcmk__valid_stonith_watchdog_timeout(const char *value) value? value : "default"); } else if (pcmk__locate_sbd() == 0) { - crm_emerg("Shutting down: " PCMK_OPT_STONITH_WATCHDOG_TIMEOUT - " configured (%s) but SBD not active", - pcmk__s(value, "auto")); + pcmk__emerg("Shutting down: " PCMK_OPT_STONITH_WATCHDOG_TIMEOUT + " configured (%s) but SBD not active", + pcmk__s(value, "auto")); crm_exit(CRM_EX_FATAL); return false; @@ -293,9 +294,9 @@ pcmk__valid_stonith_watchdog_timeout(const char *value) /* Passed-in value for PCMK_OPT_STONITH_WATCHDOG_TIMEOUT was * parsable, positive, and less than the SBD_WATCHDOG_TIMEOUT */ - crm_emerg("Shutting down: " PCMK_OPT_STONITH_WATCHDOG_TIMEOUT - " (%s) too short (must be >%ldms)", - value, sbd_timeout); + pcmk__emerg("Shutting down: " PCMK_OPT_STONITH_WATCHDOG_TIMEOUT + " (%s) too short (must be >%ldms)", + value, sbd_timeout); crm_exit(CRM_EX_FATAL); return false; } From a08dd297162a7e1944b70d0171ddf2b2f547ea0c Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 26 Mar 2025 18:36:14 -0700 Subject: [PATCH 153/186] API: libcrmcommon: Deprecate crm_emerg() Pacemaker should not be used for general-purpose logging. Ref T622 Signed-off-by: Reid Wahl --- include/crm/common/logging.h | 1 - include/crm/common/logging_compat.h | 5 ++++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/include/crm/common/logging.h b/include/crm/common/logging.h index 83e47ed4f0f..2275b855770 100644 --- a/include/crm/common/logging.h +++ b/include/crm/common/logging.h @@ -346,7 +346,6 @@ pcmk__clip_log_level(int level) } \ } while (0) -#define crm_emerg(fmt, args...) qb_log(LOG_EMERG, fmt, ##args) #define crm_crit(fmt, args...) qb_log(LOG_CRIT, fmt, ##args) // NOTE: sbd (as of at least 1.5.2) uses this diff --git a/include/crm/common/logging_compat.h b/include/crm/common/logging_compat.h index 4864c2b4231..616a56dea00 100644 --- a/include/crm/common/logging_compat.h +++ b/include/crm/common/logging_compat.h @@ -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. * @@ -22,6 +22,9 @@ extern "C" { //! \deprecated Use qb_log_ctl() directly instead #define crm_extended_logging(t, e) qb_log_ctl((t), QB_LOG_CONF_EXTENDED, (e)) +//! \deprecated Do not use +#define crm_emerg(fmt, args...) qb_log(LOG_EMERG, fmt, ##args) + #ifdef __cplusplus } #endif From d31b16a9024819eb0f4fb3f90242448d2b724a65 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 26 Mar 2025 18:53:29 -0700 Subject: [PATCH 154/186] Refactor: libcrmcommon: New pcmk__crit() To replace crm_crit(). Signed-off-by: Reid Wahl --- daemons/attrd/attrd_cib.c | 2 +- daemons/attrd/attrd_corosync.c | 2 +- daemons/attrd/pacemaker-attrd.c | 4 +- daemons/based/based_io.c | 3 +- daemons/based/pacemaker-based.c | 12 +++--- daemons/controld/controld_cib.c | 2 +- daemons/controld/controld_corosync.c | 2 +- daemons/controld/controld_execd.c | 2 +- daemons/controld/controld_fencing.c | 4 +- daemons/controld/controld_join_dc.c | 10 ++--- daemons/controld/controld_messages.c | 9 +++-- daemons/controld/controld_schedulerd.c | 7 ++-- daemons/controld/pacemaker-controld.c | 4 +- daemons/execd/cts-exec-helper.c | 2 +- daemons/execd/pacemaker-execd.c | 2 +- daemons/fenced/fenced_cib.c | 6 +-- daemons/fenced/pacemaker-fenced.c | 8 ++-- daemons/pacemakerd/pcmkd_corosync.c | 55 +++++++++++++------------- daemons/pacemakerd/pcmkd_subdaemons.c | 34 ++++++++-------- include/crm/common/logging_internal.h | 9 +++++ lib/cluster/corosync.c | 6 +-- lib/cluster/membership.c | 10 ++--- lib/common/ipc_server.c | 6 +-- lib/pacemaker/pcmk_acl.c | 2 +- lib/pacemaker/pcmk_graph_producer.c | 12 +++--- lib/services/dbus.c | 9 +++-- lib/services/services.c | 13 +++--- 27 files changed, 128 insertions(+), 109 deletions(-) diff --git a/daemons/attrd/attrd_cib.c b/daemons/attrd/attrd_cib.c index a92bfe223bf..d1ce2b20ab6 100644 --- a/daemons/attrd/attrd_cib.c +++ b/daemons/attrd/attrd_cib.c @@ -39,7 +39,7 @@ attrd_cib_destroy_cb(gpointer user_data) } else { // @TODO This should trigger a reconnect, not a shutdown - crm_crit("Lost connection to the CIB manager, shutting down"); + pcmk__crit("Lost connection to the CIB manager, shutting down"); attrd_exit_status = CRM_EX_DISCONNECT; attrd_shutdown(0); } diff --git a/daemons/attrd/attrd_corosync.c b/daemons/attrd/attrd_corosync.c index b9ae186f74e..27c9a58e53b 100644 --- a/daemons/attrd/attrd_corosync.c +++ b/daemons/attrd/attrd_corosync.c @@ -133,7 +133,7 @@ attrd_cpg_destroy(gpointer unused) crm_info("Disconnected from Corosync process group"); } else { - crm_crit("Lost connection to Corosync process group, shutting down"); + pcmk__crit("Lost connection to Corosync process group, shutting down"); attrd_exit_status = CRM_EX_DISCONNECT; attrd_shutdown(0); } diff --git a/daemons/attrd/pacemaker-attrd.c b/daemons/attrd/pacemaker-attrd.c index 3c31bcd932e..b4d3583dad8 100644 --- a/daemons/attrd/pacemaker-attrd.c +++ b/daemons/attrd/pacemaker-attrd.c @@ -1,5 +1,5 @@ /* - * Copyright 2013-2024 the Pacemaker project contributors + * Copyright 2013-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -142,7 +142,7 @@ main(int argc, char **argv) g_set_error(&error, PCMK__EXITC_ERROR, attrd_exit_status, "Aborting start-up because an attribute manager " "instance is already active"); - crm_crit("%s", error->message); + pcmk__crit("%s", error->message); goto done; } diff --git a/daemons/based/based_io.c b/daemons/based/based_io.c index e00b14c727e..0d611a0f709 100644 --- a/daemons/based/based_io.c +++ b/daemons/based/based_io.c @@ -312,7 +312,8 @@ activateCibXml(xmlNode * new_cib, gboolean to_disk, const char *op) if (the_cib) { crm_warn("Reverting to last known CIB"); } else { - crm_crit("Could not write out new CIB and no saved version to revert to"); + pcmk__crit("Could not write out new CIB and no saved version to revert " + "to"); } return -ENODATA; } diff --git a/daemons/based/pacemaker-based.c b/daemons/based/pacemaker-based.c index c556d758c2a..4e7deb4aa42 100644 --- a/daemons/based/pacemaker-based.c +++ b/daemons/based/pacemaker-based.c @@ -241,8 +241,8 @@ main(int argc, char **argv) /* IPC end-point already up */ crm_ipc_close(old_instance); crm_ipc_destroy(old_instance); - crm_crit("Aborting start-up because another CIB manager instance is " - "already active"); + pcmk__crit("Aborting start-up because another CIB manager instance is " + "already active"); goto done; } else { /* not up or not authentic, we'll proceed either way */ @@ -343,8 +343,8 @@ cib_cs_destroy(gpointer user_data) if (cib_shutdown_flag) { crm_info("Corosync disconnection complete"); } else { - crm_crit("Exiting immediately after losing connection " - "to cluster layer"); + pcmk__crit("Exiting immediately after losing connection to cluster " + "layer"); terminate_cib(CRM_EX_DISCONNECT); } } @@ -386,7 +386,7 @@ cib_init(void) config_hash = pcmk__strkey_table(free, free); if (startCib("cib.xml") == FALSE) { - crm_crit("Cannot start CIB... terminating"); + pcmk__crit("Cannot start CIB... terminating"); crm_exit(CRM_EX_NOINPUT); } @@ -394,7 +394,7 @@ cib_init(void) pcmk__cluster_set_status_callback(&cib_peer_update_callback); if (pcmk_cluster_connect(crm_cluster) != pcmk_rc_ok) { - crm_crit("Cannot sign in to the cluster... terminating"); + pcmk__crit("Cannot sign in to the cluster... terminating"); crm_exit(CRM_EX_FATAL); } } diff --git a/daemons/controld/controld_cib.c b/daemons/controld/controld_cib.c index cba30eddc8e..58c79fd9cf8 100644 --- a/daemons/controld/controld_cib.c +++ b/daemons/controld/controld_cib.c @@ -38,7 +38,7 @@ handle_cib_disconnect(gpointer user_data) if (pcmk__is_set(controld_globals.fsa_input_register, R_CIB_CONNECTED)) { // @TODO This should trigger a reconnect, not a shutdown - crm_crit("Lost connection to the CIB manager, shutting down"); + pcmk__crit("Lost connection to the CIB manager, shutting down"); register_fsa_input(C_FSA_INTERNAL, I_ERROR, NULL); controld_clear_fsa_input_flags(R_CIB_CONNECTED); diff --git a/daemons/controld/controld_corosync.c b/daemons/controld/controld_corosync.c index d5eef3710f7..d04a47e7ee8 100644 --- a/daemons/controld/controld_corosync.c +++ b/daemons/controld/controld_corosync.c @@ -79,7 +79,7 @@ static void crmd_cs_destroy(gpointer user_data) { if (!pcmk__is_set(controld_globals.fsa_input_register, R_HA_DISCONNECTED)) { - crm_crit("Lost connection to cluster layer, shutting down"); + pcmk__crit("Lost connection to cluster layer, shutting down"); crmd_exit(CRM_EX_DISCONNECT); } } diff --git a/daemons/controld/controld_execd.c b/daemons/controld/controld_execd.c index 8892a568878..dfff2082ed2 100644 --- a/daemons/controld/controld_execd.c +++ b/daemons/controld/controld_execd.c @@ -51,7 +51,7 @@ static void lrm_connection_destroy(void) { if (pcmk__is_set(controld_globals.fsa_input_register, R_LRM_CONNECTED)) { - crm_crit("Lost connection to local executor"); + pcmk__crit("Lost connection to local executor"); register_fsa_input(C_FSA_INTERNAL, I_ERROR, NULL); controld_clear_fsa_input_flags(R_LRM_CONNECTED); } diff --git a/daemons/controld/controld_fencing.c b/daemons/controld/controld_fencing.c index b9947453cb1..e87256a7f5f 100644 --- a/daemons/controld/controld_fencing.c +++ b/daemons/controld/controld_fencing.c @@ -544,8 +544,8 @@ handle_fence_notification(stonith_t *st, stonith_event_t *event) * set our status to lost because of the fencing callback and discard * our subsequent election votes as "not part of our cluster". */ - crm_crit("We were allegedly just fenced by %s for %s!", - executioner, event->origin); // Dumps blackbox if enabled + pcmk__crit("We were allegedly just fenced by %s for %s!", executioner, + event->origin); // Dumps blackbox if enabled if (fence_reaction_panic) { pcmk__panic("Notified of own fencing"); } else { diff --git a/daemons/controld/controld_join_dc.c b/daemons/controld/controld_join_dc.c index 043e6873fd4..f3412fab9b6 100644 --- a/daemons/controld/controld_join_dc.c +++ b/daemons/controld/controld_join_dc.c @@ -744,9 +744,9 @@ join_node_state_commit_callback(xmlNode *msg, int call_id, int rc, if (rc != pcmk_ok) { fsa_data_t *msg_data = NULL; // for register_fsa_error() macro - crm_crit("join-%d node history update (via CIB call %d) for node %s " - "failed: %s", - current_join_id, call_id, node, pcmk_strerror(rc)); + pcmk__crit("join-%d node history update (via CIB call %d) for node %s " + "failed: %s", + current_join_id, call_id, node, pcmk_strerror(rc)); crm_log_xml_debug(msg, "failed"); register_fsa_error(C_FSA_INTERNAL, I_ERROR, NULL); } @@ -887,8 +887,8 @@ do_dc_join_ack(long long action, done: if (rc != pcmk_ok) { - crm_crit("join-%d node history update for node %s failed: %s", - current_join_id, join_from, pcmk_strerror(rc)); + pcmk__crit("join-%d node history update for node %s failed: %s", + current_join_id, join_from, pcmk_strerror(rc)); register_fsa_error(C_FSA_INTERNAL, I_ERROR, NULL); } free(join_from); diff --git a/daemons/controld/controld_messages.c b/daemons/controld/controld_messages.c index 32a43d01889..bb0d7d0a9b5 100644 --- a/daemons/controld/controld_messages.c +++ b/daemons/controld/controld_messages.c @@ -140,8 +140,8 @@ register_fsa_input_adv(enum crmd_fsa_cause cause, enum crmd_fsa_input input, case C_SHUTDOWN: case C_UNKNOWN: case C_STARTUP: - crm_crit("Copying %s data (from %s) is not yet implemented", - fsa_cause2string(cause), raised_from); + pcmk__crit("Copying %s data (from %s) is not yet implemented", + fsa_cause2string(cause), raised_from); crmd_exit(CRM_EX_SOFTWARE); break; } @@ -267,8 +267,9 @@ fsa_typed_data_adv(fsa_data_t * fsa_data, enum fsa_data_type a_type, const char crm_err("%s: No message data available. Origin: %s", caller, fsa_data->origin); } else if (fsa_data->data_type != a_type) { - crm_crit("%s: Message data was the wrong type! %d vs. requested=%d. Origin: %s", - caller, fsa_data->data_type, a_type, fsa_data->origin); + pcmk__crit("%s: Message data was the wrong type! %d vs. requested=%d. " + "Origin: %s", + caller, fsa_data->data_type, a_type, fsa_data->origin); pcmk__assert(fsa_data->data_type == a_type); } else { ret_val = fsa_data->data; diff --git a/daemons/controld/controld_schedulerd.c b/daemons/controld/controld_schedulerd.c index 76279ab2cad..1d6c9667a69 100644 --- a/daemons/controld/controld_schedulerd.c +++ b/daemons/controld/controld_schedulerd.c @@ -93,9 +93,10 @@ handle_disconnect(void) int rc = pcmk_ok; char *uuid_str = pcmk__generate_uuid(); - crm_crit("Lost connection to the scheduler " - QB_XS " CIB will be saved to " PCMK_SCHEDULER_INPUT_DIR "/pe-core-%s.bz2", - uuid_str); + pcmk__crit("Lost connection to the scheduler " + QB_XS " CIB will be saved to " + PCMK_SCHEDULER_INPUT_DIR "/pe-core-%s.bz2", + uuid_str); /* * The scheduler died... diff --git a/daemons/controld/pacemaker-controld.c b/daemons/controld/pacemaker-controld.c index 1891d4d1d68..73ede8db092 100644 --- a/daemons/controld/pacemaker-controld.c +++ b/daemons/controld/pacemaker-controld.c @@ -134,8 +134,8 @@ main(int argc, char **argv) /* IPC end-point already up */ crm_ipc_close(old_instance); crm_ipc_destroy(old_instance); - crm_crit("Aborting start-up because another controller instance is " - "already active"); + pcmk__crit("Aborting start-up because another controller instance is " + "already active"); initialize = false; goto done; diff --git a/daemons/execd/cts-exec-helper.c b/daemons/execd/cts-exec-helper.c index ed1a134f363..a9489953177 100644 --- a/daemons/execd/cts-exec-helper.c +++ b/daemons/execd/cts-exec-helper.c @@ -470,7 +470,7 @@ generate_params(void) // Calculate cluster status scheduler = pcmk_new_scheduler(); if (scheduler == NULL) { - crm_crit("Could not allocate scheduler data"); + pcmk__crit("Could not allocate scheduler data"); return ENOMEM; } pcmk__set_scheduler_flags(scheduler, pcmk__sched_no_counts); diff --git a/daemons/execd/pacemaker-execd.c b/daemons/execd/pacemaker-execd.c index b355cd805d1..090f2785b3d 100644 --- a/daemons/execd/pacemaker-execd.c +++ b/daemons/execd/pacemaker-execd.c @@ -327,7 +327,7 @@ lrmd_shutdown(int nsig) crm_info("Sending shutdown request to cluster"); if (ipc_proxy_shutdown_req(ipc_proxy) < 0) { - crm_crit("Shutdown request failed, exiting immediately"); + pcmk__crit("Shutdown request failed, exiting immediately"); } else { /* We requested a shutdown. Now, we need to wait for an diff --git a/daemons/fenced/fenced_cib.c b/daemons/fenced/fenced_cib.c index 20ea4a5f4d7..147c4f92683 100644 --- a/daemons/fenced/fenced_cib.c +++ b/daemons/fenced/fenced_cib.c @@ -332,8 +332,8 @@ watchdog_device_update(void) if (rc != pcmk_ok) { rc = pcmk_legacy2rc(rc); exit_code = CRM_EX_FATAL; - crm_crit("Cannot register watchdog pseudo fence agent: %s", - pcmk_rc_str(rc)); + pcmk__crit("Cannot register watchdog pseudo fence agent: %s", + pcmk_rc_str(rc)); stonith_shutdown(0); } } @@ -557,7 +557,7 @@ cib_connection_destroy(gpointer user_data) crm_info("Connection to the CIB manager closed"); return; } else { - crm_crit("Lost connection to the CIB manager, shutting down"); + pcmk__crit("Lost connection to the CIB manager, shutting down"); } if (cib_api) { cib_api->cmds->signoff(cib_api); diff --git a/daemons/fenced/pacemaker-fenced.c b/daemons/fenced/pacemaker-fenced.c index e0d20787118..6bd492942b7 100644 --- a/daemons/fenced/pacemaker-fenced.c +++ b/daemons/fenced/pacemaker-fenced.c @@ -221,7 +221,7 @@ handle_cpg_message(cpg_handle_t handle, const struct cpg_name *groupName, static void stonith_peer_cs_destroy(gpointer user_data) { - crm_crit("Lost connection to cluster layer, shutting down"); + pcmk__crit("Lost connection to cluster layer, shutting down"); stonith_shutdown(0); } #endif @@ -591,8 +591,8 @@ main(int argc, char **argv) // IPC endpoint already up crm_ipc_close(old_instance); crm_ipc_destroy(old_instance); - crm_crit("Aborting start-up because another fencer instance is " - "already active"); + pcmk__crit("Aborting start-up because another fencer instance is " + "already active"); goto done; } else { // Not up or not authentic, we'll proceed either way @@ -626,7 +626,7 @@ main(int argc, char **argv) if (pcmk_cluster_connect(cluster) != pcmk_rc_ok) { exit_code = CRM_EX_FATAL; - crm_crit("Cannot sign in to the cluster... terminating"); + pcmk__crit("Cannot sign in to the cluster... terminating"); goto done; } fenced_set_local_node(cluster->priv->node_name); diff --git a/daemons/pacemakerd/pcmkd_corosync.c b/daemons/pacemakerd/pcmkd_corosync.c index 74bc5299bd2..4cf3e2df277 100644 --- a/daemons/pacemakerd/pcmkd_corosync.c +++ b/daemons/pacemakerd/pcmkd_corosync.c @@ -151,37 +151,37 @@ cluster_connect_cfg(void) cs_repeat(retries, 30, rc = corosync_cfg_initialize(&cfg_handle, &cfg_callbacks)); if (rc != CS_OK) { - crm_crit("Could not connect to Corosync CFG: %s " QB_XS " rc=%d", - cs_strerror(rc), rc); + pcmk__crit("Could not connect to Corosync CFG: %s " QB_XS " rc=%d", + cs_strerror(rc), rc); return FALSE; } rc = corosync_cfg_fd_get(cfg_handle, &fd); if (rc != CS_OK) { - crm_crit("Could not get Corosync CFG descriptor: %s " QB_XS " rc=%d", - cs_strerror(rc), rc); + pcmk__crit("Could not get Corosync CFG descriptor: %s " QB_XS " rc=%d", + cs_strerror(rc), rc); goto bail; } /* CFG provider run as root (in given user namespace, anyway)? */ if (!(rv = crm_ipc_is_authentic_process(fd, (uid_t) 0,(gid_t) 0, &found_pid, &found_uid, &found_gid))) { - crm_crit("Rejecting Corosync CFG provider because process %lld " - "is running as uid %lld gid %lld, not root", - (long long) PCMK__SPECIAL_PID_AS_0(found_pid), - (long long) found_uid, (long long) found_gid); + pcmk__crit("Rejecting Corosync CFG provider because process %lld " + "is running as uid %lld gid %lld, not root", + (long long) PCMK__SPECIAL_PID_AS_0(found_pid), + (long long) found_uid, (long long) found_gid); goto bail; } else if (rv < 0) { - crm_crit("Could not authenticate Corosync CFG provider: %s " - QB_XS " rc=%d", strerror(-rv), -rv); + pcmk__crit("Could not authenticate Corosync CFG provider: %s " + QB_XS " rc=%d", strerror(-rv), -rv); goto bail; } retries = 0; cs_repeat(retries, 30, rc = corosync_cfg_local_get(cfg_handle, &nodeid)); if (rc != CS_OK) { - crm_crit("Could not get local node ID from Corosync: %s " - QB_XS " rc=%d", cs_strerror(rc), rc); + pcmk__crit("Could not get local node ID from Corosync: %s " + QB_XS " rc=%d", cs_strerror(rc), rc); goto bail; } crm_debug("Corosync reports local node ID is %lu", (unsigned long) nodeid); @@ -190,8 +190,9 @@ cluster_connect_cfg(void) retries = 0; cs_repeat(retries, 30, rc = corosync_cfg_trackstart(cfg_handle, 0)); if (rc != CS_OK) { - crm_crit("Could not enable Corosync CFG shutdown tracker: %s " QB_XS " rc=%d", - cs_strerror(rc), rc); + pcmk__crit("Could not enable Corosync CFG shutdown tracker: %s " + QB_XS " rc=%d", + cs_strerror(rc), rc); goto bail; } #endif @@ -291,15 +292,15 @@ pacemakerd_read_config(void) } while (retries < 5); if (rc != CS_OK) { - crm_crit("Could not connect to Corosync CMAP: %s " - QB_XS " rc=%d", cs_strerror(rc), rc); + pcmk__crit("Could not connect to Corosync CMAP: %s " + QB_XS " rc=%d", cs_strerror(rc), rc); return FALSE; } rc = cmap_fd_get(local_handle, &fd); if (rc != CS_OK) { - crm_crit("Could not get Corosync CMAP descriptor: %s " QB_XS " rc=%d", - cs_strerror(rc), rc); + pcmk__crit("Could not get Corosync CMAP descriptor: %s " QB_XS " rc=%d", + cs_strerror(rc), rc); cmap_finalize(local_handle); return FALSE; } @@ -307,15 +308,15 @@ pacemakerd_read_config(void) /* CMAP provider run as root (in given user namespace, anyway)? */ if (!(rv = crm_ipc_is_authentic_process(fd, (uid_t) 0,(gid_t) 0, &found_pid, &found_uid, &found_gid))) { - crm_crit("Rejecting Corosync CMAP provider because process %lld " - "is running as uid %lld gid %lld, not root", - (long long) PCMK__SPECIAL_PID_AS_0(found_pid), - (long long) found_uid, (long long) found_gid); + pcmk__crit("Rejecting Corosync CMAP provider because process %lld " + "is running as uid %lld gid %lld, not root", + (long long) PCMK__SPECIAL_PID_AS_0(found_pid), + (long long) found_uid, (long long) found_gid); cmap_finalize(local_handle); return FALSE; } else if (rv < 0) { - crm_crit("Could not authenticate Corosync CMAP provider: %s " - QB_XS " rc=%d", strerror(-rv), -rv); + pcmk__crit("Could not authenticate Corosync CMAP provider: %s " + QB_XS " rc=%d", strerror(-rv), -rv); cmap_finalize(local_handle); return FALSE; } @@ -324,9 +325,9 @@ pacemakerd_read_config(void) cluster_layer_s = pcmk_cluster_layer_text(cluster_layer); if (cluster_layer != pcmk_cluster_layer_corosync) { - crm_crit("Expected Corosync cluster layer but detected %s " - QB_XS " cluster_layer=%d", - cluster_layer_s, cluster_layer); + pcmk__crit("Expected Corosync cluster layer but detected %s " + QB_XS " cluster_layer=%d", + cluster_layer_s, cluster_layer); return FALSE; } diff --git a/daemons/pacemakerd/pcmkd_subdaemons.c b/daemons/pacemakerd/pcmkd_subdaemons.c index f7bdab17c24..45361ed5d9d 100644 --- a/daemons/pacemakerd/pcmkd_subdaemons.c +++ b/daemons/pacemakerd/pcmkd_subdaemons.c @@ -151,10 +151,10 @@ check_next_subdaemon(gpointer user_data) case pcmk_rc_ipc_pid_only: // Child was previously OK if (++(child->check_count) >= PCMK_PROCESS_CHECK_RETRIES) { // cts-lab looks for this message - crm_crit("Subdaemon %s[%lld] is unresponsive to IPC " - "after %d attempt%s and will now be killed", - name, pid, child->check_count, - pcmk__plural_s(child->check_count)); + pcmk__crit("Subdaemon %s[%lld] is unresponsive to IPC " + "after %d attempt%s and will now be killed", + name, pid, child->check_count, + pcmk__plural_s(child->check_count)); stop_child(child, SIGKILL); if (pcmk__is_set(child->flags, child_respawn)) { // Respawn limit hasn't been reached, so retry another round @@ -536,7 +536,7 @@ start_child(pcmkd_child_t * child) free(path); } - crm_crit("Could not execute subdaemon %s: %s", name, strerror(errno)); + pcmk__crit("Could not execute subdaemon %s: %s", name, strerror(errno)); crm_exit(CRM_EX_FATAL); return pcmk_rc_ok; // Never reached } @@ -729,10 +729,11 @@ find_and_track_existing_processes(void) pcmk__env_option(PCMK__ENV_FAIL_FAST); if (pcmk__is_true(fail_fast)) { - crm_crit("Cannot reliably track pre-existing" - " authentic process behind %s IPC on this" - " platform and PCMK_" PCMK__ENV_FAIL_FAST - " requested", ipc_name); + pcmk__crit("Cannot reliably track pre-existing " + "authentic process behind %s IPC on " + "this platform and " + "PCMK_" PCMK__ENV_FAIL_FAST " requested", + ipc_name); return EOPNOTSUPP; } else if (pcmk_children[i].respawn_count == WAIT_TRIES) { crm_notice("Assuming pre-existing authentic, though" @@ -771,11 +772,12 @@ find_and_track_existing_processes(void) break; case pcmk_rc_ipc_pid_only: if (pcmk_children[i].respawn_count == WAIT_TRIES) { - crm_crit("%s IPC endpoint for existing authentic" - " process %lld did not (re)appear", - ipc_name, - (long long) PCMK__SPECIAL_PID_AS_0( - pcmk_children[i].pid)); + pid_t child_pid = + PCMK__SPECIAL_PID_AS_0(pcmk_children[i].pid); + + pcmk__crit("%s IPC endpoint for existing authentic" + " process %lld did not (re)appear", + ipc_name, (long long) child_pid); return rc; } wait_in_progress = true; @@ -788,8 +790,8 @@ find_and_track_existing_processes(void) WAIT_TRIES - pcmk_children[i].respawn_count); continue; default: - crm_crit("Checked liveness of %s: %s " QB_XS " rc=%d", - name, pcmk_rc_str(rc), rc); + pcmk__crit("Checked liveness of %s: %s " QB_XS " rc=%d", + name, pcmk_rc_str(rc), rc); return rc; } } diff --git a/include/crm/common/logging_internal.h b/include/crm/common/logging_internal.h index 390892f08b7..68a7da4eda6 100644 --- a/include/crm/common/logging_internal.h +++ b/include/crm/common/logging_internal.h @@ -29,6 +29,15 @@ extern "C" { */ #define pcmk__emerg(fmt, args...) qb_log(LOG_EMERG, fmt, ##args) +/*! + * \internal + * \brief Log a message at \c LOG_CRIT level + * + * \param[in] fmt \c printf() format string for log message + * \param[in] args Format string arguments + */ +#define pcmk__crit(fmt, args...) qb_log(LOG_CRIT, fmt, ##args) + /* Some warnings are too noisy when logged every time a given function is called * (for example, using a deprecated feature). As an alternative, we allow * warnings to be logged once per invocation of the calling program. Each of diff --git a/lib/cluster/corosync.c b/lib/cluster/corosync.c index bf336136512..20e6b4e23b1 100644 --- a/lib/cluster/corosync.c +++ b/lib/cluster/corosync.c @@ -637,9 +637,9 @@ pcmk__corosync_add_nodes(xmlNode *xml_parent) && (node->cluster_layer_id != nodeid) && pcmk__str_eq(node->name, name, pcmk__str_casei)) { - crm_crit("Nodes %" PRIu32 " and %" PRIu32 " share the " - "same name '%s': shutting down", - node->cluster_layer_id, nodeid, name); + pcmk__crit("Nodes %" PRIu32 " and %" PRIu32 " share the " + "same name '%s': shutting down", + node->cluster_layer_id, nodeid, name); crm_exit(CRM_EX_FATAL); } } diff --git a/lib/cluster/membership.c b/lib/cluster/membership.c index c134ef60a9f..269c11d0321 100644 --- a/lib/cluster/membership.c +++ b/lib/cluster/membership.c @@ -740,8 +740,8 @@ search_cluster_member_cache(unsigned int id, const char *uname, if (id && by_name->cluster_layer_id) { dump_peer_hash(LOG_WARNING, __func__); - crm_crit("Nodes %u and %" PRIu32 " share the same name '%s'", - id, by_name->cluster_layer_id, uname); + pcmk__crit("Nodes %u and %" PRIu32 " share the same name '%s'", + id, by_name->cluster_layer_id, uname); node = NULL; /* Create a new one */ } else { @@ -753,9 +753,9 @@ search_cluster_member_cache(unsigned int id, const char *uname, if ((uname != NULL) && (by_id->name != NULL)) { dump_peer_hash(LOG_WARNING, __func__); - crm_crit("Nodes '%s' and '%s' share the same cluster nodeid %u: " - "assuming '%s' is correct", - uname, by_id->name, id, uname); + pcmk__crit("Nodes '%s' and '%s' share the same cluster nodeid %u: " + "assuming '%s' is correct", + uname, by_id->name, id, uname); } } else if ((uname != NULL) && (by_id->name != NULL)) { diff --git a/lib/common/ipc_server.c b/lib/common/ipc_server.c index d29c049c92a..81467034531 100644 --- a/lib/common/ipc_server.c +++ b/lib/common/ipc_server.c @@ -936,9 +936,9 @@ pcmk__serve_attrd_ipc(qb_ipcs_service_t **ipcs, *ipcs = mainloop_add_ipc_server(PCMK__VALUE_ATTRD, QB_IPC_NATIVE, cb); if (*ipcs == NULL) { - crm_crit("Exiting fatally because unable to serve " PCMK__SERVER_ATTRD - " IPC (verify pacemaker and pacemaker_remote are not both " - "enabled)"); + pcmk__crit("Exiting fatally because unable to serve " PCMK__SERVER_ATTRD + " IPC (verify pacemaker and pacemaker_remote are not both" + " enabled)"); crm_exit(CRM_EX_FATAL); } } diff --git a/lib/pacemaker/pcmk_acl.c b/lib/pacemaker/pcmk_acl.c index 0036d6fd10a..37c031d207e 100644 --- a/lib/pacemaker/pcmk_acl.c +++ b/lib/pacemaker/pcmk_acl.c @@ -335,7 +335,7 @@ pcmk__acl_evaled_render(xmlDoc *annotated_doc, enum pcmk__acl_render_how how, xslt = xsltParseStylesheetDoc(xslt_doc); /* acquires xslt_doc! */ if (xslt == NULL) { - crm_crit("Problem in parsing %s", sfile); + pcmk__crit("Problem in parsing %s", sfile); rc = EINVAL; goto done; } diff --git a/lib/pacemaker/pcmk_graph_producer.c b/lib/pacemaker/pcmk_graph_producer.c index 92135549bc8..b8168e29b2e 100644 --- a/lib/pacemaker/pcmk_graph_producer.c +++ b/lib/pacemaker/pcmk_graph_producer.c @@ -1085,16 +1085,18 @@ pcmk__create_graph(pcmk_scheduler_t *scheduler) */ if (pcmk__is_set(scheduler->flags, pcmk__sched_quorate) || (scheduler->no_quorum_policy == pcmk_no_quorum_ignore)) { + + const bool unclean = action->node->details->unclean; const bool managed = pcmk__is_set(action->rsc->flags, pcmk__rsc_managed); const bool failed = pcmk__is_set(action->rsc->flags, pcmk__rsc_failed); - crm_crit("Cannot %s %s because of %s:%s%s (%s)", - action->node->details->unclean? "fence" : "shut down", - pcmk__node_name(action->node), action->rsc->id, - (managed? " blocked" : " unmanaged"), - (failed? " failed" : ""), action->uuid); + pcmk__crit("Cannot %s %s because of %s:%s%s (%s)", + (unclean? "fence" : "shut down"), + pcmk__node_name(action->node), action->rsc->id, + (managed? " blocked" : " unmanaged"), + (failed? " failed" : ""), action->uuid); } } diff --git a/lib/services/dbus.c b/lib/services/dbus.c index 9033d3cea64..3b6994bc117 100644 --- a/lib/services/dbus.c +++ b/lib/services/dbus.c @@ -1,5 +1,5 @@ /* - * Copyright 2014-2024 the Pacemaker project contributors + * Copyright 2014-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -130,7 +130,8 @@ dispatch_fd_data(gpointer userdata) } if (oom) { - crm_crit("Could not dispatch DBus file descriptor data: Out of memory"); + pcmk__crit("Could not dispatch DBus file descriptor data: Out of " + "memory"); } else { dispatch_messages(); } @@ -728,8 +729,8 @@ pcmk_dbus_get_property(DBusConnection *connection, const char *target, query_data = malloc(sizeof(struct property_query)); if (query_data == NULL) { - crm_crit("DBus query for %s property '%s' failed: Out of memory", - obj, name); + pcmk__crit("DBus query for %s property '%s' failed: Out of memory", obj, + name); dbus_message_unref(msg); return NULL; } diff --git a/lib/services/services.c b/lib/services/services.c index 566fcc226bc..2b55e4115cd 100644 --- a/lib/services/services.c +++ b/lib/services/services.c @@ -263,7 +263,7 @@ services__create_resource_action(const char *name, const char *standard, op = new_action(); if (op == NULL) { - crm_crit("Cannot prepare action: %s", strerror(ENOMEM)); + pcmk__crit("Cannot prepare action: %s", strerror(ENOMEM)); if (params != NULL) { g_hash_table_destroy(params); } @@ -295,8 +295,8 @@ services__create_resource_action(const char *name, const char *standard, if (copy_action_arguments(op, ra_caps, name, standard, provider, agent, action) != pcmk_rc_ok) { - crm_crit("Cannot prepare %s action for %s: %s", - action, name, strerror(ENOMEM)); + pcmk__crit("Cannot prepare %s action for %s: %s", action, name, + strerror(ENOMEM)); services__handle_exec_error(op, ENOMEM); return op; } @@ -356,7 +356,8 @@ services_action_create_generic(const char *exec, const char *args[]) op->opaque->exec = strdup(exec); op->opaque->args[0] = strdup(exec); if ((op->opaque->exec == NULL) || (op->opaque->args[0] == NULL)) { - crm_crit("Cannot prepare action for '%s': %s", exec, strerror(ENOMEM)); + pcmk__crit("Cannot prepare action for '%s': %s", exec, + strerror(ENOMEM)); services__set_result(op, PCMK_OCF_UNKNOWN_ERROR, PCMK_EXEC_ERROR, strerror(ENOMEM)); return op; @@ -378,8 +379,8 @@ services_action_create_generic(const char *exec, const char *args[]) op->opaque->args[cur_arg] = strdup(args[cur_arg - 1]); if (op->opaque->args[cur_arg] == NULL) { - crm_crit("Cannot prepare action for '%s': %s", - exec, strerror(ENOMEM)); + pcmk__crit("Cannot prepare action for '%s': %s", exec, + strerror(ENOMEM)); services__set_result(op, PCMK_OCF_UNKNOWN_ERROR, PCMK_EXEC_ERROR, strerror(ENOMEM)); break; From cfd307d1e03195c553295e26cf156daef503f0d3 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 26 Mar 2025 18:54:40 -0700 Subject: [PATCH 155/186] API: libcrmcommon: Deprecate crm_crit() Pacemaker should not be used for general-purpose logging. Ref T622 Signed-off-by: Reid Wahl --- include/crm/common/logging.h | 2 -- include/crm/common/logging_compat.h | 3 +++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/include/crm/common/logging.h b/include/crm/common/logging.h index 2275b855770..4ef5dc0b33b 100644 --- a/include/crm/common/logging.h +++ b/include/crm/common/logging.h @@ -346,8 +346,6 @@ pcmk__clip_log_level(int level) } \ } while (0) -#define crm_crit(fmt, args...) qb_log(LOG_CRIT, fmt, ##args) - // NOTE: sbd (as of at least 1.5.2) uses this #define crm_err(fmt, args...) qb_log(LOG_ERR, fmt, ##args) diff --git a/include/crm/common/logging_compat.h b/include/crm/common/logging_compat.h index 616a56dea00..8deedd1dfd5 100644 --- a/include/crm/common/logging_compat.h +++ b/include/crm/common/logging_compat.h @@ -25,6 +25,9 @@ extern "C" { //! \deprecated Do not use #define crm_emerg(fmt, args...) qb_log(LOG_EMERG, fmt, ##args) +//! \deprecated Do not use +#define crm_crit(fmt, args...) qb_log(LOG_CRIT, fmt, ##args) + #ifdef __cplusplus } #endif From c446a7497e88d50222ae6598089ca8f6cbfce514 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 26 Mar 2025 19:27:49 -0700 Subject: [PATCH 156/186] Refactor: libcrmcommon: New pcmk__err() To replace crm_err(). Signed-off-by: Reid Wahl --- daemons/attrd/attrd_cib.c | 27 ++-- daemons/attrd/attrd_corosync.c | 6 +- daemons/attrd/attrd_ipc.c | 3 +- daemons/attrd/attrd_messages.c | 8 +- daemons/attrd/attrd_sync.c | 4 +- daemons/based/based_callbacks.c | 17 +-- daemons/based/based_io.c | 26 ++-- daemons/based/based_messages.c | 6 +- daemons/based/based_notify.c | 6 +- daemons/based/based_remote.c | 16 +-- daemons/based/based_transaction.c | 6 +- daemons/based/pacemaker-based.c | 6 +- daemons/controld/controld_attrd.c | 15 +- daemons/controld/controld_cib.c | 27 ++-- daemons/controld/controld_cib.h | 6 +- daemons/controld/controld_control.c | 25 ++-- daemons/controld/controld_corosync.c | 2 +- daemons/controld/controld_election.c | 6 +- daemons/controld/controld_execd.c | 87 ++++++----- daemons/controld/controld_execd_state.c | 7 +- daemons/controld/controld_fencing.c | 45 +++--- daemons/controld/controld_fsa.c | 17 +-- daemons/controld/controld_join_client.c | 13 +- daemons/controld/controld_join_dc.c | 58 ++++---- daemons/controld/controld_membership.c | 17 ++- daemons/controld/controld_messages.c | 48 ++++--- daemons/controld/controld_remote_ra.c | 14 +- daemons/controld/controld_schedulerd.c | 33 +++-- daemons/controld/controld_te_actions.c | 19 ++- daemons/controld/controld_te_callbacks.c | 18 +-- daemons/controld/controld_te_events.c | 7 +- daemons/controld/controld_throttle.c | 2 +- daemons/controld/controld_timers.c | 10 +- daemons/controld/controld_transition.c | 6 +- daemons/controld/controld_utils.c | 12 +- daemons/controld/pacemaker-controld.c | 13 +- daemons/execd/cts-exec-helper.c | 2 +- daemons/execd/execd_commands.c | 19 +-- daemons/execd/pacemaker-execd.c | 33 +++-- daemons/execd/remoted_pidone.c | 4 +- daemons/execd/remoted_proxy.c | 9 +- daemons/execd/remoted_schemas.c | 29 ++-- daemons/execd/remoted_tls.c | 18 +-- daemons/fenced/cts-fence-helper.c | 32 +++-- daemons/fenced/fenced_cib.c | 11 +- daemons/fenced/fenced_commands.c | 44 +++--- daemons/fenced/fenced_remote.c | 30 ++-- daemons/fenced/pacemaker-fenced.c | 4 +- daemons/pacemakerd/pacemakerd.c | 6 +- daemons/pacemakerd/pcmkd_subdaemons.c | 32 ++--- daemons/schedulerd/pacemaker-schedulerd.c | 5 +- include/crm/common/logging_internal.h | 11 +- include/crm/common/scheduler_internal.h | 2 +- lib/cib/cib_attrs.c | 2 +- lib/cib/cib_client.c | 8 +- lib/cib/cib_file.c | 36 ++--- lib/cib/cib_native.c | 20 +-- lib/cib/cib_ops.c | 15 +- lib/cib/cib_remote.c | 27 ++-- lib/cib/cib_utils.c | 40 +++--- lib/cluster/cluster.c | 20 +-- lib/cluster/corosync.c | 84 +++++------ lib/cluster/cpg.c | 115 ++++++++------- lib/cluster/election.c | 2 +- lib/cluster/membership.c | 24 ++-- lib/common/acl.c | 3 +- lib/common/actions.c | 6 +- lib/common/cib_secrets.c | 22 +-- lib/common/digest.c | 8 +- lib/common/io.c | 20 +-- lib/common/ipc_client.c | 60 ++++---- lib/common/ipc_common.c | 9 +- lib/common/ipc_controld.c | 13 +- lib/common/ipc_server.c | 29 ++-- lib/common/iso8601.c | 168 ++++++++++++---------- lib/common/mainloop.c | 38 ++--- lib/common/options.c | 18 +-- lib/common/output.c | 10 +- lib/common/patchset.c | 20 +-- lib/common/patchset_display.c | 4 +- lib/common/pid.c | 8 +- lib/common/procfs.c | 2 +- lib/common/remote.c | 45 +++--- lib/common/results.c | 13 +- lib/common/schemas.c | 14 +- lib/common/strings.c | 7 +- lib/common/tls.c | 32 ++--- lib/common/utils.c | 10 +- lib/common/xml.c | 4 +- lib/common/xml_element.c | 4 +- lib/common/xml_io.c | 8 +- lib/common/xpath.c | 7 +- lib/fencing/st_client.c | 46 +++--- lib/fencing/st_lha.c | 4 +- lib/fencing/st_rhcs.c | 2 +- lib/lrmd/lrmd_alerts.c | 4 +- lib/lrmd/lrmd_client.c | 91 ++++++------ lib/lrmd/proxy_common.c | 17 ++- lib/pacemaker/pcmk_graph_consumer.c | 28 ++-- lib/pacemaker/pcmk_graph_producer.c | 8 +- lib/pacemaker/pcmk_injections.c | 11 +- lib/pacemaker/pcmk_output.c | 8 +- lib/pacemaker/pcmk_sched_actions.c | 2 +- lib/pacemaker/pcmk_sched_instances.c | 4 +- lib/pacemaker/pcmk_sched_promotable.c | 5 +- lib/pacemaker/pcmk_simulate.c | 4 +- lib/services/dbus.c | 43 +++--- lib/services/services.c | 2 +- lib/services/services_linux.c | 24 ++-- lib/services/systemd.c | 39 ++--- tools/cibadmin.c | 8 +- tools/crm_mon.c | 8 +- tools/crm_resource_runtime.c | 2 +- 113 files changed, 1205 insertions(+), 1059 deletions(-) diff --git a/daemons/attrd/attrd_cib.c b/daemons/attrd/attrd_cib.c index d1ce2b20ab6..854e385e3e9 100644 --- a/daemons/attrd/attrd_cib.c +++ b/daemons/attrd/attrd_cib.c @@ -124,8 +124,8 @@ attrd_cib_connect(int max_retry) } while ((rc != pcmk_ok) && (attempts < max_retry)); if (rc != pcmk_ok) { - crm_err("Connection to the CIB manager failed: %s " QB_XS " rc=%d", - pcmk_strerror(rc), rc); + pcmk__err("Connection to the CIB manager failed: %s " QB_XS " rc=%d", + pcmk_strerror(rc), rc); goto cleanup; } @@ -133,7 +133,7 @@ attrd_cib_connect(int max_retry) rc = the_cib->cmds->set_connection_dnotify(the_cib, attrd_cib_destroy_cb); if (rc != pcmk_ok) { - crm_err("Could not set disconnection callback"); + pcmk__err("Could not set disconnection callback"); goto cleanup; } @@ -141,7 +141,7 @@ attrd_cib_connect(int max_retry) PCMK__VALUE_CIB_DIFF_NOTIFY, attrd_cib_updated_cb); if (rc != pcmk_ok) { - crm_err("Could not set CIB notification callback"); + pcmk__err("Could not set CIB notification callback"); goto cleanup; } @@ -171,8 +171,9 @@ attrd_erase_cb(xmlNode *msg, int call_id, int rc, xmlNode *output, if (rc == pcmk_ok) { crm_info("Cleared transient node attributes for %s from CIB", node); } else { - crm_err("Unable to clear transient node attributes for %s from CIB: %s", - node, pcmk_strerror(rc)); + pcmk__err("Unable to clear transient node attributes for %s from CIB: " + "%s", + node, pcmk_strerror(rc)); } } @@ -533,9 +534,9 @@ write_attribute(attribute_t *a, bool ignore_delay) the_cib->cmds->set_user(the_cib, a->user); rc = the_cib->cmds->init_transaction(the_cib); if (rc != pcmk_ok) { - crm_err("Failed to write %s (set %s): Could not initiate " - "CIB transaction", - a->id, pcmk__s(a->set_id, "unspecified")); + pcmk__err("Failed to write %s (set %s): Could not initiate " + "CIB transaction", + a->id, pcmk__s(a->set_id, "unspecified")); goto done; } } @@ -606,10 +607,10 @@ write_attribute(attribute_t *a, bool ignore_delay) // Update this value as part of the CIB transaction we're building rc = add_attr_update(a, v->current, node_xml_id); if (rc != pcmk_rc_ok) { - crm_err("Couldn't add %s[%s]='%s' to CIB transaction: %s " - QB_XS " node XML ID %s", - a->id, v->nodename, v->current, pcmk_rc_str(rc), - node_xml_id); + pcmk__err("Couldn't add %s[%s]='%s' to CIB transaction: %s " + QB_XS " node XML ID %s", + a->id, v->nodename, v->current, pcmk_rc_str(rc), + node_xml_id); continue; } diff --git a/daemons/attrd/attrd_corosync.c b/daemons/attrd/attrd_corosync.c index 27c9a58e53b..48d86d9162f 100644 --- a/daemons/attrd/attrd_corosync.c +++ b/daemons/attrd/attrd_corosync.c @@ -114,8 +114,8 @@ attrd_cpg_dispatch(cpg_handle_t handle, xml = pcmk__xml_parse(data); if (xml == NULL) { - crm_err("Bad message received from %s[%u]: '%.120s'", - from, nodeid, data); + pcmk__err("Bad message received from %s[%u]: '%.120s'", from, nodeid, + data); } else { attrd_peer_message(pcmk__get_node(nodeid, from, NULL, pcmk__node_search_cluster_member), @@ -427,7 +427,7 @@ attrd_cluster_connect(void) rc = pcmk_cluster_connect(attrd_cluster); rc = pcmk_rc2legacy(rc); if (rc != pcmk_ok) { - crm_err("Cluster connection failed"); + pcmk__err("Cluster connection failed"); return rc; } return pcmk_ok; diff --git a/daemons/attrd/attrd_ipc.c b/daemons/attrd/attrd_ipc.c index 0f07d81e013..f5fda14a5ee 100644 --- a/daemons/attrd/attrd_ipc.c +++ b/daemons/attrd/attrd_ipc.c @@ -313,7 +313,8 @@ handle_regexes(pcmk__request_t *request) pcmk__client_name(request->ipc_client)); } else if (rc == pcmk_rc_bad_nvpair) { - crm_err("Update request did not specify attribute or regular expression"); + pcmk__err("Update request did not specify attribute or regular " + "expression"); pcmk__format_result(&request->result, CRM_EX_ERROR, PCMK_EXEC_ERROR, "Client %s update request did not specify attribute or regular expression", pcmk__client_name(request->ipc_client)); diff --git a/daemons/attrd/attrd_messages.c b/daemons/attrd/attrd_messages.c index 12497f2e240..027247f691a 100644 --- a/daemons/attrd/attrd_messages.c +++ b/daemons/attrd/attrd_messages.c @@ -55,9 +55,9 @@ remove_unsupported_sync_points(pcmk__request_t *request) static xmlNode * handle_unknown_request(pcmk__request_t *request) { - crm_err("Unknown IPC request %s from %s %s", - request->op, pcmk__request_origin_type(request), - pcmk__request_origin(request)); + pcmk__err("Unknown IPC request %s from %s %s", request->op, + pcmk__request_origin_type(request), + pcmk__request_origin(request)); pcmk__format_result(&request->result, CRM_EX_PROTOCOL, PCMK_EXEC_INVALID, "Unknown request type '%s' (bug?)", request->op); return NULL; @@ -276,7 +276,7 @@ attrd_handle_request(pcmk__request_t *request) pcmk__ipc_send_xml(request->ipc_client, request->ipc_id, reply, request->ipc_flags); } else { - crm_err("Not sending CPG reply to client"); + pcmk__err("Not sending CPG reply to client"); } pcmk__xml_free(reply); diff --git a/daemons/attrd/attrd_sync.c b/daemons/attrd/attrd_sync.c index cabbb79f5eb..dbdbaafe8ca 100644 --- a/daemons/attrd/attrd_sync.c +++ b/daemons/attrd/attrd_sync.c @@ -486,12 +486,12 @@ attrd_expect_confirmations(pcmk__request_t *request, attrd_confirmation_action_f if (pcmk__xe_get_int(request->xml, PCMK__XA_CALL_ID, &callid) != pcmk_rc_ok) { - crm_err("Could not get callid from xml"); + pcmk__err("Could not get callid from xml"); return; } if (pcmk__intkey_table_lookup(expected_confirmations, callid)) { - crm_err("Already waiting on confirmations for call id %d", callid); + pcmk__err("Already waiting on confirmations for call id %d", callid); return; } diff --git a/daemons/based/based_callbacks.c b/daemons/based/based_callbacks.c index 5e695eefff1..e2c538b03a7 100644 --- a/daemons/based/based_callbacks.c +++ b/daemons/based/based_callbacks.c @@ -798,13 +798,13 @@ cib_process_request(xmlNode *request, gboolean privileged, rc = pcmk_rc2legacy(rc); if (rc != pcmk_ok) { /* TODO: construct error reply? */ - crm_err("Pre-processing of command failed: %s", pcmk_strerror(rc)); + pcmk__err("Pre-processing of command failed: %s", pcmk_strerror(rc)); return rc; } op_function = based_get_op_function(operation); if (op_function == NULL) { - crm_err("Operation %s not supported by CIB manager", op); + pcmk__err("Operation %s not supported by CIB manager", op); return -EOPNOTSUPP; } @@ -851,8 +851,9 @@ cib_process_request(xmlNode *request, gboolean privileged, if (cib_status != pcmk_ok) { rc = cib_status; - crm_err("Ignoring request because cluster configuration is invalid " - "(please repair and restart): %s", pcmk_strerror(rc)); + pcmk__err("Ignoring request because cluster configuration is invalid " + "(please repair and restart): %s", + pcmk_strerror(rc)); op_reply = create_cib_reply(op, call_id, client_id, call_options, rc, the_cib); @@ -911,7 +912,7 @@ cib_process_request(xmlNode *request, gboolean privileged, } if (op_reply == NULL && (needs_reply || local_notify)) { - crm_err("Unexpected NULL reply to message"); + pcmk__err("Unexpected NULL reply to message"); crm_log_xml_err(request, "null reply"); needs_reply = FALSE; local_notify = FALSE; @@ -1130,7 +1131,7 @@ cib_process_command(xmlNode *request, const cib__operation_t *operation, rc = activateCibXml(result_cib, config_changed, op); if (rc != pcmk_ok) { - crm_err("Failed to activate new CIB: %s", pcmk_strerror(rc)); + pcmk__err("Failed to activate new CIB: %s", pcmk_strerror(rc)); } } @@ -1243,8 +1244,8 @@ disconnect_remote_client(gpointer key, gpointer value, gpointer user_data) { pcmk__client_t *a_client = value; - crm_err("Can't disconnect client %s: Not implemented", - pcmk__client_name(a_client)); + pcmk__err("Can't disconnect client %s: Not implemented", + pcmk__client_name(a_client)); } static void diff --git a/daemons/based/based_io.c b/daemons/based/based_io.c index 0d611a0f709..1b998f72179 100644 --- a/daemons/based/based_io.c +++ b/daemons/based/based_io.c @@ -49,11 +49,12 @@ cib_rename(const char *old) new_fd = mkstemp(new); if ((new_fd < 0) || (rename(old, new) < 0)) { - crm_err("Couldn't archive unusable file %s (disabling disk writes and continuing)", - old); + pcmk__err("Couldn't archive unusable file %s (disabling disk writes " + "and continuing)", + old); cib_writes_enabled = FALSE; } else { - crm_err("Archived unusable file %s as %s", old, new); + pcmk__err("Archived unusable file %s as %s", old, new); } if (new_fd > 0) { @@ -186,8 +187,8 @@ readCibXmlFile(const char *dir, const char *file, gboolean discard_status) if (root == NULL) { lpc = scandir(cib_root, &namelist, cib_archive_filter, cib_archive_sort); if (lpc < 0) { - crm_err("Could not check for CIB backups in %s: %s", - cib_root, pcmk_rc_str(errno)); + pcmk__err("Could not check for CIB backups in %s: %s", cib_root, + pcmk_rc_str(errno)); } } @@ -226,7 +227,7 @@ readCibXmlFile(const char *dir, const char *file, gboolean discard_status) || (strstr(use_valgrind, PCMK__SERVER_BASED) != NULL))) { cib_writes_enabled = FALSE; - crm_err("*** Disabling disk writes to avoid confusing Valgrind ***"); + pcmk__err("*** Disabling disk writes to avoid confusing Valgrind ***"); } status = pcmk__xe_first_child(root, PCMK_XE_STATUS, NULL, NULL); @@ -308,7 +309,7 @@ activateCibXml(xmlNode * new_cib, gboolean to_disk, const char *op) return pcmk_ok; } - crm_err("Ignoring invalid CIB"); + pcmk__err("Ignoring invalid CIB"); if (the_cib) { crm_warn("Reverting to last known CIB"); } else { @@ -332,12 +333,12 @@ cib_diskwrite_complete(mainloop_child_t * p, pid_t pid, int core, int signo, int crm_trace("Disk write [%d] succeeded", (int) pid); } else if (signo == 0) { - crm_err("%s: process %d exited %d", errmsg, (int) pid, exitcode); + pcmk__err("%s: process %d exited %d", errmsg, (int) pid, exitcode); } else { - crm_err("%s: process %d terminated with signal %d (%s)%s", - errmsg, (int) pid, signo, strsignal(signo), - (core? " and dumped core" : "")); + pcmk__err("%s: process %d terminated with signal %d (%s)%s", + errmsg, (int) pid, signo, strsignal(signo), + ((core != 0)? " and dumped core" : "")); } mainloop_trigger_complete(cib_writer); @@ -368,7 +369,8 @@ write_cib_contents(gpointer p) pid = fork(); if (pid < 0) { - crm_err("Disabling disk writes after fork failure: %s", pcmk_rc_str(errno)); + pcmk__err("Disabling disk writes after fork failure: %s", + pcmk_rc_str(errno)); cib_writes_enabled = FALSE; return FALSE; } diff --git a/daemons/based/based_messages.c b/daemons/based/based_messages.c index b8f836b3337..15dbc8e9f97 100644 --- a/daemons/based/based_messages.c +++ b/daemons/based/based_messages.c @@ -54,7 +54,7 @@ cib_process_shutdown_req(const char *op, int options, const char *section, xmlNo } if (cib_shutdown_flag == FALSE) { - crm_err("Peer %s mistakenly thinks we wanted to shut down", host); + pcmk__err("Peer %s mistakenly thinks we wanted to shut down", host); return -EINVAL; } @@ -472,8 +472,8 @@ cib_process_commit_transaction(const char *op, int options, const char *section, if (rc != pcmk_rc_ok) { char *source = based_transaction_source_str(client, origin); - crm_err("Could not commit transaction for %s: %s", - source, pcmk_rc_str(rc)); + pcmk__err("Could not commit transaction for %s: %s", source, + pcmk_rc_str(rc)); free(source); } return pcmk_rc2legacy(rc); diff --git a/daemons/based/based_notify.c b/daemons/based/based_notify.c index 5332f166e01..000528e8027 100644 --- a/daemons/based/based_notify.c +++ b/daemons/based/based_notify.c @@ -94,9 +94,9 @@ cib_notify_send_one(gpointer key, gpointer value, gpointer user_data) pcmk__remote_send_xml(client->remote, update->msg); break; default: - crm_err("Unknown transport for client %s " - QB_XS " flags=%#016" PRIx64, - pcmk__client_name(client), client->flags); + pcmk__err("Unknown transport for client %s " + QB_XS " flags=%#016" PRIx64, + pcmk__client_name(client), client->flags); } } } diff --git a/daemons/based/based_remote.c b/daemons/based/based_remote.c index ea9fe3f9914..6aae2a20d87 100644 --- a/daemons/based/based_remote.c +++ b/daemons/based/based_remote.c @@ -110,7 +110,7 @@ init_remote_listener(int port, gboolean encrypted) ssock = pcmk__assert_alloc(1, sizeof(int)); *ssock = socket(AF_INET, SOCK_STREAM, 0); if (*ssock == -1) { - crm_err("Listener socket creation failed: %s", pcmk_rc_str(errno)); + pcmk__err("Listener socket creation failed: %s", pcmk_rc_str(errno)); free(ssock); return -1; } @@ -119,8 +119,8 @@ init_remote_listener(int port, gboolean encrypted) optval = 1; rc = setsockopt(*ssock, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)); if (rc < 0) { - crm_err("Local address reuse not allowed on listener socket: %s", - pcmk_rc_str(errno)); + pcmk__err("Local address reuse not allowed on listener socket: %s", + pcmk_rc_str(errno)); } /* bind server socket */ @@ -129,13 +129,13 @@ init_remote_listener(int port, gboolean encrypted) saddr.sin_addr.s_addr = INADDR_ANY; saddr.sin_port = htons(port); if (bind(*ssock, (struct sockaddr *)&saddr, sizeof(saddr)) == -1) { - crm_err("Cannot bind to listener socket: %s", pcmk_rc_str(errno)); + pcmk__err("Cannot bind to listener socket: %s", pcmk_rc_str(errno)); close(*ssock); free(ssock); return -2; } if (listen(*ssock, 10) == -1) { - crm_err("Cannot listen on socket: %s", pcmk_rc_str(errno)); + pcmk__err("Cannot listen on socket: %s", pcmk_rc_str(errno)); close(*ssock); free(ssock); return -3; @@ -169,7 +169,7 @@ check_group_membership(const char *usr, const char *grp) group = getgrnam(grp); if (group == NULL) { - crm_err("Rejecting remote client: '%s' is not a valid group", grp); + pcmk__err("Rejecting remote client: '%s' is not a valid group", grp); return FALSE; } @@ -242,7 +242,7 @@ remote_auth_timeout_cb(gpointer data) } mainloop_del_fd(client->remote->source); - crm_err("Remote client authentication timed out"); + pcmk__err("Remote client authentication timed out"); return FALSE; } @@ -550,7 +550,7 @@ construct_pam_passwd(int num_msg, const struct pam_message **msg, /* In theory we should show msg[0]->msg, but that might * contain the password, which we don't want in the logs */ - crm_err("PAM reported an error"); + pcmk__err("PAM reported an error"); data = NULL; break; default: diff --git a/daemons/based/based_transaction.c b/daemons/based/based_transaction.c index 8bdc621d1dc..d4e9b4ff3de 100644 --- a/daemons/based/based_transaction.c +++ b/daemons/based/based_transaction.c @@ -81,9 +81,9 @@ process_transaction_requests(xmlNodePtr transaction, } if (rc != pcmk_rc_ok) { - crm_err("Aborting CIB transaction for %s due to failed %s request: " - "%s", - source, op, pcmk_rc_str(rc)); + pcmk__err("Aborting CIB transaction for %s due to failed %s " + "request: %s", + source, op, pcmk_rc_str(rc)); crm_log_xml_info(request, "Failed request"); return rc; } diff --git a/daemons/based/pacemaker-based.c b/daemons/based/pacemaker-based.c index 4e7deb4aa42..c164a01d357 100644 --- a/daemons/based/pacemaker-based.c +++ b/daemons/based/pacemaker-based.c @@ -231,7 +231,7 @@ main(int argc, char **argv) old_instance = crm_ipc_new(PCMK__SERVER_BASED_RO, 0); if (old_instance == NULL) { /* crm_ipc_new() will have already logged an error message with - * crm_err() + * pcmk__err() */ exit_code = CRM_EX_FATAL; goto done; @@ -265,7 +265,7 @@ main(int argc, char **argv) if (!pcmk__daemon_can_write(cib_root, NULL)) { exit_code = CRM_EX_FATAL; - crm_err("Terminating due to bad permissions on %s", cib_root); + pcmk__err("Terminating due to bad permissions on %s", cib_root); g_set_error(&error, PCMK__EXITC_ERROR, exit_code, "Bad permissions on %s (see logs for details)", cib_root); goto done; @@ -326,7 +326,7 @@ cib_cs_dispatch(cpg_handle_t handle, xml = pcmk__xml_parse(data); if (xml == NULL) { - crm_err("Invalid XML: '%.120s'", data); + pcmk__err("Invalid XML: '%.120s'", data); free(data); return; } diff --git a/daemons/controld/controld_attrd.c b/daemons/controld/controld_attrd.c index ea2bbf80aea..815e502f1a0 100644 --- a/daemons/controld/controld_attrd.c +++ b/daemons/controld/controld_attrd.c @@ -120,9 +120,9 @@ update_attrd_remote_node_removed(const char *host, const char *user_name) rc = pcmk__attrd_api_purge(attrd_api, host, true); } if (rc != pcmk_rc_ok) { - crm_err("Could not purge Pacemaker Remote node %s " - "in attribute manager%s: %s " QB_XS " rc=%d", - host, when(), pcmk_rc_str(rc), rc); + pcmk__err("Could not purge Pacemaker Remote node %s in attribute " + "manager%s: %s " QB_XS " rc=%d", + host, when(), pcmk_rc_str(rc), rc); } } @@ -150,9 +150,10 @@ update_attrd_clear_failures(const char *host, const char *rsc, const char *op, if (op != NULL) { interval_desc = pcmk__s(interval_spec, "nonrecurring"); } - crm_err("Could not clear failure of %s %s for %s on %s node %s%s: %s " - QB_XS " rc=%d", interval_desc, pcmk__s(op, "operations"), - pcmk__s(rsc, "all resources"), node_type(is_remote_node), host, - when(), pcmk_rc_str(rc), rc); + pcmk__err("Could not clear failure of %s %s for %s on %s node %s%s: %s " + QB_XS " rc=%d", + interval_desc, pcmk__s(op, "operations"), + pcmk__s(rsc, "all resources"), node_type(is_remote_node), + host, when(), pcmk_rc_str(rc), rc); } } diff --git a/daemons/controld/controld_cib.c b/daemons/controld/controld_cib.c index 58c79fd9cf8..986b84301dd 100644 --- a/daemons/controld/controld_cib.c +++ b/daemons/controld/controld_cib.c @@ -151,8 +151,8 @@ do_cib_control(long long action, } if (cur_state == S_STOPPING) { - crm_err("Ignoring request to connect to the CIB manager after " - "shutdown"); + pcmk__err("Ignoring request to connect to the CIB manager after " + "shutdown"); return; } @@ -171,12 +171,12 @@ do_cib_control(long long action, } else if (cib_conn->cmds->set_connection_dnotify(cib_conn, dnotify_fn) != pcmk_ok) { - crm_err("Could not set dnotify callback"); + pcmk__err("Could not set dnotify callback"); } else if (cib_conn->cmds->add_notify_callback(cib_conn, PCMK__VALUE_CIB_DIFF_NOTIFY, update_cb) != pcmk_ok) { - crm_err("Could not set CIB notification callback (update)"); + pcmk__err("Could not set CIB notification callback (update)"); } else { controld_set_fsa_input_flags(R_CIB_CONNECTED); @@ -193,8 +193,9 @@ do_cib_control(long long action, crmd_fsa_stall(FALSE); } else { - crm_err("Could not complete CIB registration %d times... " - "hard error", cib_retries); + pcmk__err("Could not complete CIB registration %d times... hard " + "error", + cib_retries); register_fsa_error(C_FSA_INTERNAL, I_ERROR, NULL); } } @@ -408,7 +409,7 @@ controld_delete_resource_history(const char *rsc_id, const char *node, desc = pcmk__assert_asprintf("resource history for %s on %s", rsc_id, node); if (cib == NULL) { - crm_err("Unable to clear %s: no CIB connection", desc); + pcmk__err("Unable to clear %s: no CIB connection", desc); free(desc); return ENOTCONN; } @@ -422,10 +423,10 @@ controld_delete_resource_history(const char *rsc_id, const char *node, if (rc < 0) { rc = pcmk_legacy2rc(rc); - crm_err("Could not delete resource status of %s on %s%s%s: %s " - QB_XS " rc=%d", rsc_id, node, - (user_name? " for user " : ""), (user_name? user_name : ""), - pcmk_rc_str(rc), rc); + pcmk__err("Could not delete resource status of %s on %s%s%s: %s " + QB_XS " rc=%d", + rsc_id, node, ((user_name != NULL)? " for user " : ""), + pcmk__s(user_name, ""), pcmk_rc_str(rc), rc); free(desc); free(xpath); return rc; @@ -836,8 +837,8 @@ controld_update_cib(const char *section, xmlNode *data, int options, if (callback == NULL) { if (cib_rc < 0) { - crm_err("Failed to update CIB %s section: %s", - section, pcmk_rc_str(pcmk_legacy2rc(cib_rc))); + pcmk__err("Failed to update CIB %s section: %s", section, + pcmk_rc_str(pcmk_legacy2rc(cib_rc))); } } else { diff --git a/daemons/controld/controld_cib.h b/daemons/controld/controld_cib.h index b8622d52280..90418945203 100644 --- a/daemons/controld/controld_cib.h +++ b/daemons/controld/controld_cib.h @@ -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. * @@ -22,7 +22,7 @@ static inline void fsa_cib_anon_update(const char *section, xmlNode *data) { if (controld_globals.cib_conn == NULL) { - crm_err("No CIB connection available"); + pcmk__err("No CIB connection available"); } else { controld_globals.cib_conn->cmds->modify(controld_globals.cib_conn, section, data, cib_can_create); @@ -32,7 +32,7 @@ fsa_cib_anon_update(const char *section, xmlNode *data) { static inline void fsa_cib_anon_update_discard_reply(const char *section, xmlNode *data) { if (controld_globals.cib_conn == NULL) { - crm_err("No CIB connection available"); + pcmk__err("No CIB connection available"); } else { controld_globals.cib_conn->cmds->modify(controld_globals.cib_conn, section, data, diff --git a/daemons/controld/controld_control.c b/daemons/controld/controld_control.c index 0cc422230a0..e21927296d1 100644 --- a/daemons/controld/controld_control.c +++ b/daemons/controld/controld_control.c @@ -73,7 +73,7 @@ do_ha_control(long long action, pcmk__str_copy(pcmk__cluster_get_xml_id(node)); if (controld_globals.our_uuid == NULL) { - crm_err("Could not obtain local uuid"); + pcmk__err("Could not obtain local uuid"); registered = FALSE; } } @@ -90,8 +90,8 @@ do_ha_control(long long action, } if (action & ~(A_HA_CONNECT | A_HA_DISCONNECT)) { - crm_err("Unexpected action %s in %s", fsa_action2string(action), - __func__); + pcmk__err("Unexpected action %s in %s", fsa_action2string(action), + __func__); } } @@ -139,7 +139,7 @@ crmd_fast_exit(crm_exit_t exit_code) } else if ((exit_code == CRM_EX_OK) && pcmk__is_set(controld_globals.fsa_input_register, R_IN_RECOVERY)) { - crm_err("Could not recover from internal error"); + pcmk__err("Could not recover from internal error"); exit_code = CRM_EX_ERROR; } @@ -331,7 +331,7 @@ do_exit(long long action, if (pcmk__is_set(action, A_EXIT_1)) { exit_code = CRM_EX_ERROR; - crm_err("Exiting now due to errors"); + pcmk__err("Exiting now due to errors"); } verify_stopped(cur_state, LOG_ERR); crmd_exit(exit_code); @@ -457,7 +457,7 @@ do_started(long long action, }; if (cur_state != S_STARTING) { - crm_err("Start cancelled... %s", fsa_state2string(cur_state)); + pcmk__err("Start cancelled... %s", fsa_state2string(cur_state)); return; } else if (!pcmk__is_set(controld_globals.fsa_input_register, @@ -498,7 +498,8 @@ do_started(long long action, crm_debug("Init server comms"); ipcs = pcmk__serve_controld_ipc(&crmd_callbacks); if (ipcs == NULL) { - crm_err("Failed to create IPC server: shutting down and inhibiting respawn"); + pcmk__err("Failed to create IPC server: shutting down and inhibiting " + "respawn"); register_fsa_error(C_FSA_INTERNAL, I_ERROR, NULL); } else { crm_notice("Pacemaker controller successfully started and accepting connections"); @@ -537,11 +538,13 @@ config_query_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, void if (rc != pcmk_ok) { fsa_data_t *msg_data = NULL; - crm_err("Local CIB query resulted in an error: %s", pcmk_strerror(rc)); + pcmk__err("Local CIB query resulted in an error: %s", + pcmk_strerror(rc)); register_fsa_error(C_FSA_INTERNAL, I_ERROR, NULL); if (rc == -EACCES || rc == -pcmk_err_schema_validation) { - crm_err("The cluster is mis-configured - shutting down and staying down"); + pcmk__err("The cluster is mis-configured - shutting down and " + "staying down"); controld_set_fsa_input_flags(R_STAYDOWN); } goto bail; @@ -555,7 +558,7 @@ config_query_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, void if (!crmconfig) { fsa_data_t *msg_data = NULL; - crm_err("Local CIB query for " PCMK_XE_CRM_CONFIG " section failed"); + pcmk__err("Local CIB query for " PCMK_XE_CRM_CONFIG " section failed"); register_fsa_error(C_FSA_INTERNAL, I_ERROR, NULL); goto bail; } @@ -678,7 +681,7 @@ crm_shutdown(int nsig) } if (pcmk__is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { - crm_err("Escalating shutdown"); + pcmk__err("Escalating shutdown"); register_fsa_input_before(C_SHUTDOWN, I_ERROR, NULL); return; } diff --git a/daemons/controld/controld_corosync.c b/daemons/controld/controld_corosync.c index d04a47e7ee8..e9cf8d8b5a0 100644 --- a/daemons/controld/controld_corosync.c +++ b/daemons/controld/controld_corosync.c @@ -44,7 +44,7 @@ crmd_cs_dispatch(cpg_handle_t handle, const struct cpg_name *groupName, xml = pcmk__xml_parse(data); if (xml == NULL) { - crm_err("Could not parse message content: %.100s", data); + pcmk__err("Could not parse message content: %.100s", data); free(data); return; } diff --git a/daemons/controld/controld_election.c b/daemons/controld/controld_election.c index 14833ddae8f..499252f9845 100644 --- a/daemons/controld/controld_election.c +++ b/daemons/controld/controld_election.c @@ -89,7 +89,7 @@ do_election_vote(long long action, case S_RELEASE_DC: break; default: - crm_err("Broken? Voting in state %s", fsa_state2string(cur_state)); + pcmk__err("Broken? Voting in state %s", fsa_state2string(cur_state)); break; } @@ -138,7 +138,7 @@ do_election_count_vote(long long action, if (pcmk__peer_cache == NULL) { if (!pcmk__is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { - crm_err("Internal error, no peer cache"); + pcmk__err("Internal error, no peer cache"); } return; } @@ -272,7 +272,7 @@ do_dc_release(long long action, register_fsa_input(C_FSA_INTERNAL, I_RELEASE_SUCCESS, NULL); } else { - crm_err("Unknown DC action %s", fsa_action2string(action)); + pcmk__err("Unknown DC action %s", fsa_action2string(action)); } crm_trace("Am I still the DC? %s", pcmk__btoa(AM_I_DC)); diff --git a/daemons/controld/controld_execd.c b/daemons/controld/controld_execd.c index dfff2082ed2..de8d406b47a 100644 --- a/daemons/controld/controld_execd.c +++ b/daemons/controld/controld_execd.c @@ -336,10 +336,10 @@ try_local_executor_connect(long long action, fsa_data_t *msg_data, } // Otherwise give up - crm_err("Failed to connect to the executor the max allowed " - "%d time%s: %s", lrm_state->num_lrm_register_fails, - pcmk__plural_s(lrm_state->num_lrm_register_fails), - pcmk_rc_str(rc)); + pcmk__err("Failed to connect to the executor the max allowed %d time%s: %s", + lrm_state->num_lrm_register_fails, + pcmk__plural_s(lrm_state->num_lrm_register_fails), + pcmk_rc_str(rc)); register_fsa_error(C_FSA_INTERNAL, I_ERROR, NULL); } @@ -384,8 +384,8 @@ do_lrm_control(long long action, } if (action & ~(A_LRM_CONNECT | A_LRM_DISCONNECT)) { - crm_err("Unexpected action %s in %s", fsa_action2string(action), - __func__); + pcmk__err("Unexpected action %s in %s", fsa_action2string(action), + __func__); } } @@ -488,8 +488,8 @@ lrm_state_verify_stopped(lrm_state_t * lrm_state, enum crmd_fsa_state cur_state, } if (counter) { - crm_err("%d resource%s active at %s", - counter, (counter == 1)? " was" : "s were", when); + pcmk__err("%d resource%s active at %s", + counter, ((counter == 1)? " was" : "s were"), when); } return rc; @@ -581,7 +581,7 @@ controld_query_executor_state(void) lrm_state_t *lrm_state = controld_get_executor_state(NULL, false); if (!lrm_state) { - crm_err("Could not get executor state for local node"); + pcmk__err("Could not get executor state for local node"); return NULL; } @@ -944,9 +944,9 @@ get_lrm_resource(lrm_state_t *lrm_state, const xmlNode *rsc_xml, if (rc != pcmk_ok) { fsa_data_t *msg_data = NULL; - crm_err("Could not register resource %s with the executor on %s: %s " - QB_XS " rc=%d", - id, lrm_state->node_name, pcmk_strerror(rc), rc); + pcmk__err("Could not register resource %s with the executor on %s: " + "%s " QB_XS " rc=%d", + id, lrm_state->node_name, pcmk_strerror(rc), rc); /* Register this as an internal error if this involves the local * executor. Otherwise, we're likely dealing with an unresponsive @@ -1181,8 +1181,8 @@ fail_lrm_resource(xmlNode *xml, lrm_state_t *lrm_state, const char *user_name, op->interval_ms = 0; if (user_name && !pcmk__is_privileged(user_name)) { - crm_err("%s does not have permission to fail %s", - user_name, pcmk__xe_id(xml_rsc)); + pcmk__err("%s does not have permission to fail %s", user_name, + pcmk__xe_id(xml_rsc)); fake_op_status(lrm_state, op, PCMK_EXEC_ERROR, PCMK_OCF_INSUFFICIENT_PRIV, "Unprivileged user cannot fail resources"); @@ -1409,8 +1409,9 @@ do_lrm_invoke(long long action, lrm_state = controld_get_executor_state(target_node, false); if ((lrm_state == NULL) && is_remote_node) { - crm_err("Failing action because local node has never had connection to remote node %s", - target_node); + pcmk__err("Failing action because local node has never had connection " + "to remote node %s", + target_node); synthesize_lrmd_failure(NULL, input->xml, PCMK_EXEC_NOT_CONNECTED, PCMK_OCF_UNKNOWN_ERROR, "Local node has no connection to remote"); @@ -1490,7 +1491,8 @@ do_lrm_invoke(long long action, } else if (rc == -EINVAL) { // Resource operation on malformed resource - crm_err("Invalid resource definition for %s", pcmk__xe_id(xml_rsc)); + pcmk__err("Invalid resource definition for %s", + pcmk__xe_id(xml_rsc)); crm_log_xml_warn(input->msg, "invalid resource"); synthesize_lrmd_failure(lrm_state, input->xml, PCMK_EXEC_ERROR, PCMK_OCF_NOT_CONFIGURED, // fatal error @@ -1499,9 +1501,9 @@ do_lrm_invoke(long long action, } else if (rc < 0) { // Error communicating with the executor - crm_err("Could not register resource '%s' with executor: %s " - QB_XS " rc=%d", - pcmk__xe_id(xml_rsc), pcmk_strerror(rc), rc); + pcmk__err("Could not register resource '%s' with executor: %s " + QB_XS " rc=%d", + pcmk__xe_id(xml_rsc), pcmk_strerror(rc), rc); crm_log_xml_warn(input->msg, "failed registration"); synthesize_lrmd_failure(lrm_state, input->xml, PCMK_EXEC_ERROR, PCMK_OCF_INVALID_PARAM, // hard error @@ -1566,8 +1568,8 @@ do_lrm_invoke(long long action, lrmd_free_rsc_info(rsc); } else { - crm_err("Invalid execution request: unknown command '%s' (bug?)", - crm_op); + pcmk__err("Invalid execution request: unknown command '%s' (bug?)", + crm_op); register_fsa_error(C_FSA_INTERNAL, I_ERROR, NULL); } } @@ -1688,8 +1690,8 @@ construct_op(const lrm_state_t *lrm_state, const xmlNode *rsc_op, if (op->interval_ms != 0) { if (pcmk__strcase_any_of(operation, PCMK_ACTION_START, PCMK_ACTION_STOP, NULL)) { - crm_err("Start and Stop actions cannot have an interval: %u", - op->interval_ms); + pcmk__err("Start and stop actions cannot have an interval: %u", + op->interval_ms); op->interval_ms = 0; } } @@ -1914,9 +1916,9 @@ do_lrm_rsc_op(lrm_state_t *lrm_state, lrmd_rsc_info_t *rsc, xmlNode *msg, if (lrm_state == NULL) { // This shouldn't be possible, but provide a failsafe just in case - crm_err("Cannot execute %s of %s: No executor connection " - QB_XS " transition_key=%s", - operation, rsc->id, pcmk__s(transition, "")); + pcmk__err("Cannot execute %s of %s: No executor connection " + QB_XS " transition_key=%s", + operation, rsc->id, pcmk__s(transition, "")); synthesize_lrmd_failure(NULL, msg, PCMK_EXEC_INVALID, PCMK_OCF_UNKNOWN_ERROR, "No executor connection"); @@ -2026,17 +2028,19 @@ do_lrm_rsc_op(lrm_state_t *lrm_state, lrmd_rsc_info_t *rsc, xmlNode *msg, op->params = NULL; } else if (lrm_state_is_local(lrm_state)) { - crm_err("Could not initiate %s action for resource %s locally: %s " - QB_XS " rc=%d", operation, rsc->id, pcmk_rc_str(rc), rc); + pcmk__err("Could not initiate %s action for resource %s locally: %s " + QB_XS " rc=%d", + operation, rsc->id, pcmk_rc_str(rc), rc); fake_op_status(lrm_state, op, PCMK_EXEC_NOT_CONNECTED, PCMK_OCF_UNKNOWN_ERROR, pcmk_rc_str(rc)); process_lrm_event(lrm_state, op, NULL, NULL); register_fsa_error(C_FSA_INTERNAL, I_FAIL, NULL); } else { - crm_err("Could not initiate %s action for resource %s remotely on %s: " - "%s " QB_XS " rc=%d", - operation, rsc->id, lrm_state->node_name, pcmk_rc_str(rc), rc); + pcmk__err("Could not initiate %s action for resource %s remotely on " + "%s: %s " QB_XS " rc=%d", + operation, rsc->id, lrm_state->node_name, pcmk_rc_str(rc), + rc); fake_op_status(lrm_state, op, PCMK_EXEC_NOT_CONNECTED, PCMK_OCF_UNKNOWN_ERROR, pcmk_rc_str(rc)); process_lrm_event(lrm_state, op, NULL, NULL); @@ -2226,8 +2230,9 @@ process_lrm_event(lrm_state_t *lrm_state, lrmd_event_data_t *op, (provider? ":" : ""), (provider? provider : ""), type); rsc = lrmd_new_rsc_info(op->rsc_id, standard, provider, type); } else { - crm_err("Can't process %s result because %s agent information not cached or in XML", - op_key, op->rsc_id); + pcmk__err("Can't process %s result because %s agent information " + "not cached or in XML", + op_key, op->rsc_id); } } @@ -2288,8 +2293,13 @@ process_lrm_event(lrm_state_t *lrm_state, lrmd_event_data_t *op, * resource deleted, but we couldn't find resource or node * information. */ - crm_err("Unable to record %s result in CIB: %s", op_key, - (node_name? "No resource information" : "No node name")); + const char *missing = "node name"; + + if (node_name != NULL) { + missing = "resource information"; + } + pcmk__err("Unable to record %s result in CIB: No %s", op_key, + missing); } } @@ -2309,8 +2319,9 @@ process_lrm_event(lrm_state_t *lrm_state, lrmd_event_data_t *op, /* This recurring operation was cancelled and pending, but we don't * have a transition key. This should never happen. */ - crm_err("Recurring operation %s was cancelled without transition information", - op_key); + pcmk__err("Recurring operation %s was cancelled without transition " + "information", + op_key); } else if (pcmk__is_set(pending->flags, active_op_remove)) { /* This recurring operation was cancelled (by us) and pending, and we diff --git a/daemons/controld/controld_execd_state.c b/daemons/controld/controld_execd_state.c index 2223a265e87..a614871bd00 100644 --- a/daemons/controld/controld_execd_state.c +++ b/daemons/controld/controld_execd_state.c @@ -109,7 +109,7 @@ lrm_state_create(const char *node_name) lrm_state_t *state = NULL; if (!node_name) { - crm_err("No node name given for lrm state object"); + pcmk__err("No node name given for lrm state object"); return NULL; } @@ -465,10 +465,11 @@ static void remote_config_check(xmlNode * msg, int call_id, int rc, xmlNode * output, void *user_data) { if (rc != pcmk_ok) { - crm_err("Query resulted in an error: %s", pcmk_strerror(rc)); + pcmk__err("Query resulted in an error: %s", pcmk_strerror(rc)); if (rc == -EACCES || rc == -pcmk_err_schema_validation) { - crm_err("The cluster is mis-configured - shutting down and staying down"); + pcmk__err("The cluster is mis-configured - shutting down and " + "staying down"); } } else { diff --git a/daemons/controld/controld_fencing.c b/daemons/controld/controld_fencing.c index e87256a7f5f..eb196604034 100644 --- a/daemons/controld/controld_fencing.c +++ b/daemons/controld/controld_fencing.c @@ -198,8 +198,8 @@ cib_fencing_updated(xmlNode *msg, int call_id, int rc, xmlNode *output, void *user_data) { if (rc < pcmk_ok) { - crm_err("Fencing update %d for %s: failed - %s (%d)", - call_id, (char *)user_data, pcmk_strerror(rc), rc); + pcmk__err("Fencing update %d for %s: failed - %s (%d)", + call_id, (char *)user_data, pcmk_strerror(rc), rc); crm_log_xml_warn(msg, "Failed update"); abort_transition(PCMK_SCORE_INFINITY, pcmk__graph_shutdown, "CIB update failed", NULL); @@ -449,7 +449,7 @@ tengine_stonith_connection_destroy(stonith_t *st, stonith_event_t *e) te_cleanup_stonith_history_sync(st, FALSE); if (pcmk__is_set(controld_globals.fsa_input_register, R_ST_REQUIRED)) { - crm_err("Lost fencer connection (will attempt to reconnect)"); + pcmk__err("Lost fencer connection (will attempt to reconnect)"); if (!mainloop_timer_running(controld_fencer_connect_timer)) { mainloop_timer_start(controld_fencer_connect_timer); } @@ -495,7 +495,7 @@ handle_fence_notification(stonith_t *st, stonith_event_t *event) } if (event == NULL) { - crm_err("Notify data not found"); + pcmk__err("Notify data not found"); return; } @@ -524,12 +524,12 @@ handle_fence_notification(stonith_t *st, stonith_event_t *event) crm_notice("%s was unfenced by %s at the request of %s@%s", event->target, executioner, client, event->origin); } else { - crm_err("Unfencing of %s by %s failed (%s%s%s) with exit status %d", - event->target, executioner, - pcmk_exec_status_str(exec_status), - ((reason == NULL)? "" : ": "), - ((reason == NULL)? "" : reason), - stonith__event_exit_status(event)); + pcmk__err("Unfencing of %s by %s failed (%s%s%s) with exit status " + "%d", + event->target, executioner, + pcmk_exec_status_str(exec_status), + ((reason == NULL)? "" : ": "), + pcmk__s(reason, ""), stonith__event_exit_status(event)); } return; } @@ -664,7 +664,8 @@ controld_timer_fencer_connect(gpointer user_data) if (stonith_api == NULL) { stonith_api = stonith_api_new(); if (stonith_api == NULL) { - crm_err("Could not connect to fencer: API memory allocation failed"); + pcmk__err("Could not connect to fencer: API memory allocation " + "failed"); return G_SOURCE_REMOVE; } } @@ -678,8 +679,9 @@ controld_timer_fencer_connect(gpointer user_data) // Blocking (retry failures now until successful) rc = stonith_api_connect_retry(stonith_api, crm_system_name, 30); if (rc != pcmk_ok) { - crm_err("Could not connect to fencer in 30 attempts: %s " - QB_XS " rc=%d", pcmk_strerror(rc), rc); + pcmk__err("Could not connect to fencer in 30 attempts: %s " + QB_XS " rc=%d", + pcmk_strerror(rc), rc); } } else { // Non-blocking (retry failures later in main loop) @@ -785,9 +787,9 @@ tengine_stonith_callback(stonith_t *stonith, stonith_callback_data_t *data) const char *target = NULL; if ((data == NULL) || (data->userdata == NULL)) { - crm_err("Ignoring fence operation %d result: " - "No transition key given (bug?)", - ((data == NULL)? -1 : data->call_id)); + pcmk__err("Ignoring fence operation %d result: No transition key given " + "(bug?)", + ((data == NULL)? -1 : data->call_id)); return; } @@ -822,17 +824,16 @@ tengine_stonith_callback(stonith_t *stonith, stonith_callback_data_t *data) action = controld_get_action(stonith_id); if (action == NULL) { - crm_err("Ignoring fence operation %d result: " - "Action %d not found in transition graph (bug?) " - QB_XS " uuid=%s transition=%d", - data->call_id, stonith_id, uuid, transition_id); + pcmk__err("Ignoring fence operation %d result: Action %d not found in " + "transition graph (bug?) " QB_XS " uuid=%s transition=%d", + data->call_id, stonith_id, uuid, transition_id); goto bail; } target = pcmk__xe_get(action->xml, PCMK__META_ON_NODE); if (target == NULL) { - crm_err("Ignoring fence operation %d result: No target given (bug?)", - data->call_id); + pcmk__err("Ignoring fence operation %d result: No target given (bug?)", + data->call_id); goto bail; } diff --git a/daemons/controld/controld_fsa.c b/daemons/controld/controld_fsa.c index 573a0040bea..a7002868155 100644 --- a/daemons/controld/controld_fsa.c +++ b/daemons/controld/controld_fsa.c @@ -454,9 +454,9 @@ s_crmd_fsa_actions(fsa_data_t * fsa_data) /* Error checking and reporting */ } else { - crm_err("Action %s not supported " QB_XS " %" PRIx64, - fsa_action2string(controld_globals.fsa_actions), - controld_globals.fsa_actions); + pcmk__err("Action %s not supported " QB_XS " %" PRIx64, + fsa_action2string(controld_globals.fsa_actions), + controld_globals.fsa_actions); register_fsa_error_adv(C_FSA_INTERNAL, I_ERROR, fsa_data, NULL, __func__); } @@ -491,8 +491,8 @@ check_join_counts(fsa_data_t *msg_data) count = crmd_join_phase_count(controld_join_finalized); if (count > 0) { - crm_err("%d cluster node%s failed to confirm join", - count, pcmk__plural_s(count)); + pcmk__err("%d cluster node%s failed to confirm join", count, + pcmk__plural_s(count)); crmd_join_phase_log(LOG_NOTICE); return; } @@ -507,8 +507,9 @@ check_join_counts(fsa_data_t *msg_data) } } else if (count > npeers) { - crm_err("New election needed because more nodes confirmed join " - "than are in membership (%d > %u)", count, npeers); + pcmk__err("New election needed because more nodes confirmed join " + "than are in membership (%d > %u)", + count, npeers); register_fsa_input(C_FSA_INTERNAL, I_ELECTION, NULL); } else if (controld_globals.membership_id != controld_globals.peer_seq) { @@ -609,7 +610,7 @@ do_state_transition(enum crmd_fsa_state cur_state, } CRM_LOG_ASSERT(controld_globals.dc_name != NULL); if (controld_globals.dc_name == NULL) { - crm_err("Reached S_NOT_DC without a DC" " being recorded"); + pcmk__err("Reached S_NOT_DC without a DC" " being recorded"); } break; diff --git a/daemons/controld/controld_join_client.c b/daemons/controld/controld_join_client.c index 0abeb7ae1fd..1c8caae8935 100644 --- a/daemons/controld/controld_join_client.c +++ b/daemons/controld/controld_join_client.c @@ -159,8 +159,8 @@ join_query_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, void * query_call_id = 0; if(rc != pcmk_ok || output == NULL) { - crm_err("Could not retrieve version details for join-%s: %s (%d)", - join_id, pcmk_strerror(rc), rc); + pcmk__err("Could not retrieve version details for join-%s: %s (%d)", + join_id, pcmk_strerror(rc), rc); register_fsa_error_adv(C_FSA_INTERNAL, I_ERROR, NULL, NULL, __func__); } else if (controld_globals.dc_name == NULL) { @@ -281,8 +281,9 @@ do_cl_join_finalize_respond(long long action, pcmk__xe_get_int(input->msg, PCMK__XA_JOIN_ID, &join_id); if (was_nack) { - crm_err("Shutting down because cluster join with leader %s failed " - QB_XS " join-%d NACK'd", welcome_from, join_id); + pcmk__err("Shutting down because cluster join with leader %s failed " + QB_XS " join-%d NACK'd", + welcome_from, join_id); register_fsa_error(C_FSA_INTERNAL, I_ERROR, NULL); controld_set_fsa_input_flags(R_STAYDOWN); return; @@ -366,8 +367,8 @@ do_cl_join_finalize_respond(long long action, } } else { - crm_err("Could not confirm join-%d with %s: Local operation history " - "failed", join_id, controld_globals.dc_name); + pcmk__err("Could not confirm join-%d with %s: Local operation history " + "failed", join_id, controld_globals.dc_name); register_fsa_error(C_FSA_INTERNAL, I_FAIL, NULL); } } diff --git a/daemons/controld/controld_join_dc.c b/daemons/controld/controld_join_dc.c index f3412fab9b6..176e7c270fd 100644 --- a/daemons/controld/controld_join_dc.c +++ b/daemons/controld/controld_join_dc.c @@ -369,7 +369,7 @@ do_dc_join_offer_one(long long action, join_to = pcmk__xe_get(welcome->msg, PCMK__XA_SRC); if (join_to == NULL) { - crm_err("Can't make join-%d offer to unknown node", current_join_id); + pcmk__err("Can't make join-%d offer to unknown node", current_join_id); return; } member = pcmk__get_node(0, join_to, NULL, pcmk__node_search_cluster_member); @@ -459,7 +459,7 @@ do_dc_join_filter_offer(long long action, pcmk__node_status_t *join_node = NULL; if (join_from == NULL) { - crm_err("Ignoring invalid join request without node name"); + pcmk__err("Ignoring invalid join request without node name"); return; } join_node = pcmk__get_node(0, join_from, NULL, @@ -502,9 +502,9 @@ do_dc_join_filter_offer(long long action, } if (lookup_failed_sync_node(join_from, &value) == pcmk_rc_ok) { - crm_err("Rejecting join-%d request from node %s because we failed to " - "sync its CIB in join-%d " QB_XS " ref=%s", - join_id, join_from, value, ref); + pcmk__err("Rejecting join-%d request from node %s because we failed to " + "sync its CIB in join-%d " QB_XS " ref=%s", + join_id, join_from, value, ref); ack_nack_bool = FALSE; } else if (!pcmk__cluster_is_node_active(join_node)) { @@ -518,23 +518,24 @@ do_dc_join_filter_offer(long long action, crm_debug("Rejecting join-%d request from inactive node %s " QB_XS " ref=%s", join_id, join_from, ref); } else { - crm_err("Rejecting join-%d request from inactive node %s " - QB_XS " ref=%s", join_id, join_from, ref); + pcmk__err("Rejecting join-%d request from inactive node %s " + QB_XS " ref=%s", + join_id, join_from, ref); } ack_nack_bool = FALSE; } else if (generation == NULL) { - crm_err("Rejecting invalid join-%d request from node %s " - "missing CIB generation " QB_XS " ref=%s", - join_id, join_from, ref); + pcmk__err("Rejecting invalid join-%d request from node %s missing CIB " + "generation " QB_XS " ref=%s", + join_id, join_from, ref); ack_nack_bool = FALSE; } else if ((join_version == NULL) || !feature_set_compatible(CRM_FEATURE_SET, join_version)) { - crm_err("Rejecting join-%d request from node %s because feature set %s" - " is incompatible with ours (%s) " QB_XS " ref=%s", - join_id, join_from, (join_version? join_version : "pre-3.1.0"), - CRM_FEATURE_SET, ref); + pcmk__err("Rejecting join-%d request from node %s because feature set " + "%s is incompatible with ours (%s) " QB_XS " ref=%s", + join_id, join_from, pcmk__s(join_version, "pre-3.1.0"), + CRM_FEATURE_SET, ref); ack_nack_bool = FALSE; } else if (max_generation_xml == NULL) { @@ -542,11 +543,12 @@ do_dc_join_filter_offer(long long action, PCMK_XA_VALIDATE_WITH); if (pcmk__get_schema(validation) == NULL) { - crm_err("Rejecting join-%d request from %s (with first CIB " - "generation) due to %s schema version %s " QB_XS " ref=%s", - join_id, join_from, - ((validation == NULL)? "missing" : "unknown"), - pcmk__s(validation, ""), ref); + pcmk__err("Rejecting join-%d request from %s (with first CIB " + "generation) due to %s schema version %s " + QB_XS " ref=%s", + join_id, join_from, + ((validation == NULL)? "missing" : "unknown"), + pcmk__s(validation, ""), ref); ack_nack_bool = FALSE; } else { @@ -563,12 +565,12 @@ do_dc_join_filter_offer(long long action, PCMK_XA_VALIDATE_WITH); if (pcmk__get_schema(validation) == NULL) { - crm_err("Rejecting join-%d request from %s (with better CIB " - "generation than current best from %s) due to %s " - "schema version %s " QB_XS " ref=%s", - join_id, join_from, max_generation_from, - ((validation == NULL)? "missing" : "unknown"), - pcmk__s(validation, ""), ref); + pcmk__err("Rejecting join-%d request from %s (with better CIB " + "generation than current best from %s) due to %s schema " + "version %s " QB_XS " ref=%s", + join_id, join_from, max_generation_from, + ((validation == NULL)? "missing" : "unknown"), + pcmk__s(validation, ""), ref); ack_nack_bool = FALSE; } else { @@ -814,9 +816,9 @@ do_dc_join_ack(long long action, } if (join_id != current_join_id) { - crm_err("Rejecting join-%d confirmation from %s " - "because currently on join-%d", - join_id, join_from, current_join_id); + pcmk__err("Rejecting join-%d confirmation from %s because currently on " + "join-%d", + join_id, join_from, current_join_id); crm_update_peer_join(__func__, peer, controld_join_nack); goto done; } diff --git a/daemons/controld/controld_membership.c b/daemons/controld/controld_membership.c index c69bee24519..6d051e1009c 100644 --- a/daemons/controld/controld_membership.c +++ b/daemons/controld/controld_membership.c @@ -37,7 +37,7 @@ reap_dead_nodes(gpointer key, gpointer value, gpointer user_data) if ((node != NULL) && (node->name != NULL)) { if (controld_is_local_node(node->name)) { - crm_err("We're not part of the cluster anymore"); + pcmk__err("We're not part of the cluster anymore"); register_fsa_input(C_FSA_INTERNAL, I_ERROR, NULL); } else if (!AM_I_DC @@ -100,12 +100,14 @@ crmd_node_update_complete(xmlNode * msg, int call_id, int rc, xmlNode * output, crm_trace("Node update %d complete", call_id); } else if(call_id < pcmk_ok) { - crm_err("Node update failed: %s (%d)", pcmk_strerror(call_id), call_id); + pcmk__err("Node update failed: %s (%d)", pcmk_strerror(call_id), + call_id); crm_log_xml_debug(msg, "failed"); register_fsa_error(C_FSA_INTERNAL, I_ERROR, NULL); } else { - crm_err("Node update %d failed: %s (%d)", call_id, pcmk_strerror(rc), rc); + pcmk__err("Node update %d failed: %s (%d)", call_id, pcmk_strerror(rc), + rc); crm_log_xml_debug(msg, "failed"); register_fsa_error(C_FSA_INTERNAL, I_ERROR, NULL); } @@ -296,12 +298,14 @@ node_list_update_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, fsa_data_t *msg_data = NULL; if(call_id < pcmk_ok) { - crm_err("Node list update failed: %s (%d)", pcmk_strerror(call_id), call_id); + pcmk__err("Node list update failed: %s (%d)", pcmk_strerror(call_id), + call_id); crm_log_xml_debug(msg, "update:failed"); register_fsa_error(C_FSA_INTERNAL, I_ERROR, NULL); } else if(rc < pcmk_ok) { - crm_err("Node update %d failed: %s (%d)", call_id, pcmk_strerror(rc), rc); + pcmk__err("Node update %d failed: %s (%d)", call_id, pcmk_strerror(rc), + rc); crm_log_xml_debug(msg, "update:failed"); register_fsa_error(C_FSA_INTERNAL, I_ERROR, NULL); } @@ -409,7 +413,8 @@ cib_quorum_update_complete(xmlNode * msg, int call_id, int rc, xmlNode * output, crm_trace("Quorum update %d complete", call_id); } else { - crm_err("Quorum update %d failed: %s (%d)", call_id, pcmk_strerror(rc), rc); + pcmk__err("Quorum update %d failed: %s (%d)", call_id, + pcmk_strerror(rc), rc); crm_log_xml_debug(msg, "failed"); register_fsa_error(C_FSA_INTERNAL, I_ERROR, NULL); } diff --git a/daemons/controld/controld_messages.c b/daemons/controld/controld_messages.c index bb0d7d0a9b5..5d0471fc30c 100644 --- a/daemons/controld/controld_messages.c +++ b/daemons/controld/controld_messages.c @@ -69,7 +69,7 @@ register_fsa_input_adv(enum crmd_fsa_cause cause, enum crmd_fsa_input input, if (input == I_NULL && with_actions == A_NOTHING /* && data == NULL */ ) { /* no point doing anything */ - crm_err("Cannot add entry to queue: no input and no action"); + pcmk__err("Cannot add entry to queue: no input and no action"); return; } @@ -122,7 +122,7 @@ register_fsa_input_adv(enum crmd_fsa_cause cause, enum crmd_fsa_input input, case C_IPC_MESSAGE: case C_HA_MESSAGE: CRM_CHECK(((ha_msg_input_t *) data)->msg != NULL, - crm_err("Bogus data from %s", raised_from)); + pcmk__err("Bogus data from %s", raised_from)); crm_trace("Copying %s data from %s as cluster message data", fsa_cause2string(cause), raised_from); fsa_data->data = copy_ha_msg_input(data); @@ -162,7 +162,7 @@ register_fsa_input_adv(enum crmd_fsa_cause cause, enum crmd_fsa_input input, /* fsa_dump_queue(LOG_TRACE); */ if (old_len == g_list_length(controld_globals.fsa_message_queue)) { - crm_err("Couldn't add message to the queue"); + pcmk__err("Couldn't add message to the queue"); } if (input != I_WAIT_FOR_EVENT) { @@ -230,8 +230,9 @@ delete_fsa_input(fsa_data_t * fsa_data) case fsa_dt_none: if (fsa_data->data != NULL) { - crm_err("Don't know how to free %s data from %s", - fsa_cause2string(fsa_data->fsa_cause), fsa_data->origin); + pcmk__err("Don't know how to free %s data from %s", + fsa_cause2string(fsa_data->fsa_cause), + fsa_data->origin); crmd_exit(CRM_EX_SOFTWARE); } break; @@ -261,10 +262,11 @@ fsa_typed_data_adv(fsa_data_t * fsa_data, enum fsa_data_type a_type, const char void *ret_val = NULL; if (fsa_data == NULL) { - crm_err("%s: No FSA data available", caller); + pcmk__err("%s: No FSA data available", caller); } else if (fsa_data->data == NULL) { - crm_err("%s: No message data available. Origin: %s", caller, fsa_data->origin); + pcmk__err("%s: No message data available. Origin: %s", caller, + fsa_data->origin); } else if (fsa_data->data_type != a_type) { pcmk__crit("%s: Message data was the wrong type! %d vs. requested=%d. " @@ -982,8 +984,8 @@ verify_feature_set(xmlNode *msg) crm_trace("Local feature set (%s) is compatible with DC's (%s)", CRM_FEATURE_SET, dc_version); } else { - crm_err("Local feature set (%s) is incompatible with DC's (%s)", - CRM_FEATURE_SET, dc_version); + pcmk__err("Local feature set (%s) is incompatible with DC's (%s)", + CRM_FEATURE_SET, dc_version); // Nothing is likely to improve without administrator involvement controld_set_fsa_input_flags(R_STAYDOWN); @@ -1005,16 +1007,16 @@ handle_shutdown_self_ack(xmlNode *stored_msg) if (pcmk__str_eq(host_from, controld_globals.dc_name, pcmk__str_casei)) { // Must be logic error -- DC confirming its own unrequested shutdown - crm_err("Shutting down controller immediately due to " - "unexpected shutdown confirmation"); + pcmk__err("Shutting down controller immediately due to unexpected " + "shutdown confirmation"); return I_TERMINATE; } if (controld_globals.fsa_state != S_STOPPING) { // Shouldn't happen -- non-DC confirming unrequested shutdown - crm_err("Starting new DC election because %s is " - "confirming shutdown we did not request", - (host_from? host_from : "another node")); + pcmk__err("Starting new DC election because %s is confirming shutdown " + "we did not request", + pcmk__s(host_from, "another node")); return I_ELECTION; } @@ -1042,8 +1044,9 @@ handle_shutdown_ack(xmlNode *stored_msg) crm_info("Shutting down controller after confirmation from %s", host_from); } else { - crm_err("Shutting down controller after unexpected " - "shutdown request from %s", host_from); + pcmk__err("Shutting down controller after unexpected " + "shutdown request from %s", + host_from); controld_set_fsa_input_flags(R_STAYDOWN); } return I_STOP; @@ -1182,7 +1185,9 @@ handle_request(xmlNode *stored_msg, enum crmd_fsa_cause cause) CRM_SYSTEM_CRMD, CRM_OP_RM_NODE_CACHE, NULL); if (!pcmk__cluster_send_message(NULL, pcmk_ipc_controld, msg)) { - crm_err("Could not instruct peers to remove references to node %s/%u", name, id); + pcmk__err("Could not instruct peers to remove references to " + "node %s/%u", + name, id); } else { crm_notice("Instructing peers to remove references to node %s/%u", name, id); } @@ -1216,7 +1221,8 @@ handle_request(xmlNode *stored_msg, enum crmd_fsa_cause cause) } } else { - crm_err("Unexpected request (%s) sent to %s", op, AM_I_DC ? "the DC" : "non-DC node"); + pcmk__err("Unexpected request (%s) sent to %s", op, + (AM_I_DC ? "the DC" : "non-DC node")); crm_log_xml_err(stored_msg, "Unexpected"); } @@ -1237,7 +1243,7 @@ handle_response(xmlNode *stored_msg) const char *msg_ref = pcmk__xe_get(stored_msg, PCMK_XA_REFERENCE); if (msg_ref == NULL) { - crm_err("%s - Ignoring calculation with no reference", op); + pcmk__err("%s - Ignoring calculation with no reference", op); } else if (pcmk__str_eq(msg_ref, controld_globals.fsa_pe_ref, pcmk__str_none)) { @@ -1257,8 +1263,8 @@ handle_response(xmlNode *stored_msg) } else { const char *host_from = pcmk__xe_get(stored_msg, PCMK__XA_SRC); - crm_err("Unexpected response (op=%s, src=%s) sent to the %s", - op, host_from, AM_I_DC ? "DC" : "controller"); + pcmk__err("Unexpected response (op=%s, src=%s) sent to the %s", op, + host_from, (AM_I_DC ? "DC" : "controller")); } } diff --git a/daemons/controld/controld_remote_ra.c b/daemons/controld/controld_remote_ra.c index 84cee77c695..74f5886dcbb 100644 --- a/daemons/controld/controld_remote_ra.c +++ b/daemons/controld/controld_remote_ra.c @@ -677,8 +677,9 @@ remote_lrm_op_callback(lrmd_event_data_t * op) lrm_remote_set_flags(lrm_state, takeover_complete); } else { - crm_err("Disconnecting from Pacemaker Remote node %s due to " - "unexpected client takeover", op->remote_nodename); + pcmk__err("Disconnecting from Pacemaker Remote node %s due to " + "unexpected client takeover", + op->remote_nodename); /* In this case, lrmd_tls_connection_destroy() will be called under the control of mainloop. */ /* Do not free lrm_state->conn yet. */ /* It'll be freed in the following stop action. */ @@ -704,8 +705,8 @@ remote_lrm_op_callback(lrmd_event_data_t * op) lrm_state->node_name); } else if (!remote_ra_is_in_maintenance(lrm_state)) { - crm_err("Lost connection to Pacemaker Remote node %s", - lrm_state->node_name); + pcmk__err("Lost connection to Pacemaker Remote node %s", + lrm_state->node_name); ra_data->recurring_cmds = fail_all_monitor_cmds(ra_data->recurring_cmds); ra_data->cmds = fail_all_monitor_cmds(ra_data->cmds); @@ -807,8 +808,9 @@ remote_lrm_op_callback(lrmd_event_data_t * op) "Remote connection unexpectedly dropped " "during monitor"); report_remote_ra_result(cmd); - crm_err("Remote connection to %s unexpectedly dropped during monitor", - lrm_state->node_name); + pcmk__err("Remote connection to %s unexpectedly dropped during " + "monitor", + lrm_state->node_name); } cmd_handled = TRUE; diff --git a/daemons/controld/controld_schedulerd.c b/daemons/controld/controld_schedulerd.c index 1d6c9667a69..df69247cb54 100644 --- a/daemons/controld/controld_schedulerd.c +++ b/daemons/controld/controld_schedulerd.c @@ -69,8 +69,9 @@ save_cib_contents(xmlNode *msg, int call_id, int rc, xmlNode *output, id); if (pcmk__xml_write_file(output, filename, true) != pcmk_rc_ok) { - crm_err("Could not save Cluster Information Base to %s after scheduler crash", - filename); + pcmk__err("Could not save Cluster Information Base to %s after " + "scheduler crash", + filename); } else { crm_notice("Saved Cluster Information Base to %s after scheduler crash", filename); @@ -130,7 +131,7 @@ handle_reply(pcmk_schedulerd_api_reply_t *reply) msg_ref = reply->data.graph.reference; if (msg_ref == NULL) { - crm_err("%s - Ignoring calculation with no reference", CRM_OP_PECALC); + pcmk__err(CRM_OP_PECALC " - Ignoring calculation with no reference"); } else if (pcmk__str_eq(msg_ref, controld_globals.fsa_pe_ref, pcmk__str_none)) { @@ -194,7 +195,7 @@ new_schedulerd_ipc_connection(void) rc = pcmk_new_ipc_api(&schedulerd_api, pcmk_ipc_schedulerd); if (rc != pcmk_rc_ok) { - crm_err("Error connecting to the scheduler: %s", pcmk_rc_str(rc)); + pcmk__err("Error connecting to the scheduler: %s", pcmk_rc_str(rc)); return false; } } @@ -203,8 +204,8 @@ new_schedulerd_ipc_connection(void) rc = pcmk__connect_ipc(schedulerd_api, pcmk_ipc_dispatch_main, 3); if (rc != pcmk_rc_ok) { - crm_err("Error connecting to %s: %s", - pcmk_ipc_name(schedulerd_api, true), pcmk_rc_str(rc)); + pcmk__err("Error connecting to %s: %s", + pcmk_ipc_name(schedulerd_api, true), pcmk_rc_str(rc)); return false; } @@ -332,14 +333,14 @@ do_pe_invoke(long long action, cib_t *cib_conn = controld_globals.cib_conn; if (AM_I_DC == FALSE) { - crm_err("Not invoking scheduler because not DC: %s", - fsa_action2string(action)); + pcmk__err("Not invoking scheduler because not DC: %s", + fsa_action2string(action)); return; } if (!pcmk__is_set(controld_globals.fsa_input_register, R_PE_CONNECTED)) { if (pcmk__is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { - crm_err("Cannot shut down gracefully without the scheduler"); + pcmk__err("Cannot shut down gracefully without the scheduler"); register_fsa_input_before(C_FSA_INTERNAL, I_TERMINATE, NULL); } else { @@ -357,7 +358,8 @@ do_pe_invoke(long long action, return; } if (!pcmk__is_set(controld_globals.fsa_input_register, R_HAVE_CIB)) { - crm_err("Attempted to invoke scheduler without consistent Cluster Information Base!"); + pcmk__err("Attempted to invoke scheduler without consistent Cluster " + "Information Base!"); /* start the join from scratch */ register_fsa_input_before(C_FSA_INTERNAL, I_ELECTION, NULL); @@ -384,7 +386,7 @@ force_local_option(xmlNode *xml, const char *attr_name, const char *attr_value) xpath_base = pcmk_cib_xpath_for(PCMK_XE_CRM_CONFIG); if (xpath_base == NULL) { - crm_err(PCMK_XE_CRM_CONFIG " CIB element not known (bug?)"); + pcmk__err(PCMK_XE_CRM_CONFIG " CIB element not known (bug?)"); return; } @@ -455,8 +457,9 @@ do_pe_invoke_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, void pid_t watchdog = pcmk__locate_sbd(); if (rc != pcmk_ok) { - crm_err("Could not retrieve the Cluster Information Base: %s " - QB_XS " rc=%d call=%d", pcmk_strerror(rc), rc, call_id); + pcmk__err("Could not retrieve the Cluster Information Base: %s " + QB_XS " rc=%d call=%d", + pcmk_strerror(rc), rc, call_id); register_fsa_error_adv(C_FSA_INTERNAL, I_ERROR, NULL, NULL, __func__); return; @@ -507,8 +510,8 @@ do_pe_invoke_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, void rc = pcmk_schedulerd_api_graph(schedulerd_api, output, &ref); if (rc != pcmk_rc_ok) { free(ref); - crm_err("Could not contact the scheduler: %s " QB_XS " rc=%d", - pcmk_rc_str(rc), rc); + pcmk__err("Could not contact the scheduler: %s " QB_XS " rc=%d", + pcmk_rc_str(rc), rc); register_fsa_error_adv(C_FSA_INTERNAL, I_ERROR, NULL, NULL, __func__); } else { pcmk__assert(ref != NULL); diff --git a/daemons/controld/controld_te_actions.c b/daemons/controld/controld_te_actions.c index ccbb6909c89..f4fe9dc07a4 100644 --- a/daemons/controld/controld_te_actions.c +++ b/daemons/controld/controld_te_actions.c @@ -181,7 +181,7 @@ execute_cluster_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) pcmk__xml_free(cmd); if (rc == FALSE) { - crm_err("Action %d failed: send", action->id); + pcmk__err("Action %d failed: send", action->id); return ECOMM; } else if (no_wait) { @@ -189,8 +189,10 @@ execute_cluster_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) } else { if (action->timeout <= 0) { - crm_err("Action %d: %s on %s had an invalid timeout (%dms). Using %ums instead", - action->id, task, on_node, action->timeout, graph->network_delay); + pcmk__err("Action %d: %s on %s had an invalid timeout (%dms). " + "Using %ums instead", + action->id, task, on_node, action->timeout, + graph->network_delay); action->timeout = (int) graph->network_delay; } te_start_action_timer(graph, action); @@ -438,7 +440,7 @@ execute_rsc_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) pcmk__set_graph_action_flags(action, pcmk__graph_action_executed); if (rc == FALSE) { - crm_err("Action %d failed: send", action->id); + pcmk__err("Action %d failed: send", action->id); return ECOMM; } else if (no_wait) { @@ -455,8 +457,10 @@ execute_rsc_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) action->id, task, task_uuid, on_node, action->timeout); } else { if (action->timeout <= 0) { - crm_err("Action %d: %s %s on %s had an invalid timeout (%dms). Using %ums instead", - action->id, task, task_uuid, on_node, action->timeout, graph->network_delay); + pcmk__err("Action %d: %s %s on %s had an invalid timeout (%dms). " + "Using %ums instead", + action->id, task, task_uuid, on_node, action->timeout, + graph->network_delay); action->timeout = (int) graph->network_delay; } te_update_job_count(action, 1); @@ -741,7 +745,8 @@ notify_crmd(pcmk__graph_t *graph) event = I_STOP; } else { - crm_err("We didn't ask to be shut down, yet the scheduler is telling us to"); + pcmk__err("We didn't ask to be shut down, yet the scheduler is " + "telling us to"); event = I_TERMINATE; } } diff --git a/daemons/controld/controld_te_callbacks.c b/daemons/controld/controld_te_callbacks.c index e1a51e266f0..95fe37116f3 100644 --- a/daemons/controld/controld_te_callbacks.c +++ b/daemons/controld/controld_te_callbacks.c @@ -131,7 +131,7 @@ abort_unless_down(const char *xpath, const char *op, xmlNode *change, node_uuid = extract_node_uuid(xpath); if(node_uuid == NULL) { - crm_err("Could not extract node ID from %s", xpath); + pcmk__err("Could not extract node ID from %s", xpath); abort_transition(PCMK_SCORE_INFINITY, pcmk__graph_restart, reason, change); return; @@ -449,7 +449,7 @@ process_te_message(xmlNode * msg, xmlNode * xml_data) xpathObj = pcmk__xpath_search(xml_data->doc, "//" PCMK__XE_LRM_RSC_OP); nmatches = pcmk__xpath_num_results(xpathObj); if (nmatches == 0) { - crm_err("Received transition request with no results (bug?)"); + pcmk__err("Received transition request with no results (bug?)"); } else { for (int lpc = 0; lpc < nmatches; lpc++) { xmlNode *rsc_op = pcmk__xpath_result(xpathObj, lpc); @@ -468,7 +468,7 @@ void cib_action_updated(xmlNode * msg, int call_id, int rc, xmlNode * output, void *user_data) { if (rc < pcmk_ok) { - crm_err("Update %d FAILED: %s", call_id, pcmk_strerror(rc)); + pcmk__err("Update %d FAILED: %s", call_id, pcmk_strerror(rc)); } } @@ -503,12 +503,12 @@ action_timer_callback(gpointer data) } else { /* fail the action */ - crm_err("Node %s did not send %s result (via %s) within %dms " - "(action timeout plus " PCMK_OPT_CLUSTER_DELAY ")", - (on_node? on_node : ""), (task? task : "unknown action"), - (via_node? via_node : "controller"), - (action->timeout - + controld_globals.transition_graph->network_delay)); + pcmk__err("Node %s did not send %s result (via %s) within %dms " + "(action timeout plus " PCMK_OPT_CLUSTER_DELAY ")", + pcmk__s(on_node, ""), pcmk__s(task, "unknown action"), + pcmk__s(via_node, "controller"), + (action->timeout + + controld_globals.transition_graph->network_delay)); pcmk__log_graph_action(LOG_ERR, action); pcmk__set_graph_action_flags(action, pcmk__graph_action_failed); diff --git a/daemons/controld/controld_te_events.c b/daemons/controld/controld_te_events.c index 11dd4e13526..626ae574a35 100644 --- a/daemons/controld/controld_te_events.c +++ b/daemons/controld/controld_te_events.c @@ -205,7 +205,7 @@ update_failcount(const xmlNode *event, const char *event_node_uuid, int rc, /* Sanity check */ CRM_CHECK(on_uname != NULL, return TRUE); CRM_CHECK(parse_op_key(id, &rsc_id, &task, &interval_ms), - crm_err("Couldn't parse: %s", pcmk__xe_id(event)); goto bail); + pcmk__err("Couldn't parse: %s", pcmk__xe_id(event)); goto bail); /* Decide whether update is necessary and what value to use */ if ((interval_ms > 0) @@ -464,8 +464,9 @@ process_graph_event(xmlNode *event, const char *event_node) if (decode_transition_key(magic, &update_te_uuid, &transition_num, &action_num, &target_rc) == FALSE) { // decode_transition_key() already logged the bad key - crm_err("Can't process action %s result: Incompatible versions? " - QB_XS " call-id=%d", id, callid); + pcmk__err("Can't process action %s result: Incompatible versions? " + QB_XS " call-id=%d", + id, callid); abort_transition(PCMK_SCORE_INFINITY, pcmk__graph_restart, "Bad event", event); return; diff --git a/daemons/controld/controld_throttle.c b/daemons/controld/controld_throttle.c index e042f4cf8eb..3f4bd968be2 100644 --- a/daemons/controld/controld_throttle.c +++ b/daemons/controld/controld_throttle.c @@ -373,7 +373,7 @@ throttle_get_job_limit(const char *node) jobs = QB_MAX(1, r->max); break; default: - crm_err("Unknown throttle mode %.4x on %s", r->mode, node); + pcmk__err("Unknown throttle mode %.4x on %s", r->mode, node); break; } return jobs; diff --git a/daemons/controld/controld_timers.c b/daemons/controld/controld_timers.c index 0ac17bfc633..b64340455f0 100644 --- a/daemons/controld/controld_timers.c +++ b/daemons/controld/controld_timers.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. * @@ -174,10 +174,10 @@ crm_timer_popped(gpointer data) fsa_timer_t *timer = (fsa_timer_t *) data; if (timer->log_error) { - crm_err("%s just popped in state %s! " QB_XS " input=%s time=%ums", - get_timer_desc(timer), - fsa_state2string(controld_globals.fsa_state), - fsa_input2string(timer->fsa_input), timer->period_ms); + pcmk__err("%s just popped in state %s! " QB_XS " input=%s time=%ums", + get_timer_desc(timer), + fsa_state2string(controld_globals.fsa_state), + fsa_input2string(timer->fsa_input), timer->period_ms); } else { crm_info("%s just popped " QB_XS " input=%s time=%ums", get_timer_desc(timer), fsa_input2string(timer->fsa_input), diff --git a/daemons/controld/controld_transition.c b/daemons/controld/controld_transition.c index b30b37ce2e4..91404b6dc89 100644 --- a/daemons/controld/controld_transition.c +++ b/daemons/controld/controld_transition.c @@ -69,13 +69,13 @@ do_te_control(long long action, } if (cib_conn == NULL) { - crm_err("Could not set CIB callbacks"); + pcmk__err("Could not set CIB callbacks"); init_ok = FALSE; } else if (cib_conn->cmds->add_notify_callback(cib_conn, PCMK__VALUE_CIB_DIFF_NOTIFY, te_update_diff) != pcmk_ok) { - crm_err("Could not set CIB notification callback"); + pcmk__err("Could not set CIB notification callback"); init_ok = FALSE; } @@ -159,7 +159,7 @@ do_te_invoke(long long action, } CRM_CHECK(graph_data != NULL, - crm_err("Input raised by %s is invalid", msg_data->origin); + pcmk__err("Input raised by %s is invalid", msg_data->origin); crm_log_xml_err(input->msg, "Bad command"); return); diff --git a/daemons/controld/controld_utils.c b/daemons/controld/controld_utils.c index 196b106a446..c18ad7e7de5 100644 --- a/daemons/controld/controld_utils.c +++ b/daemons/controld/controld_utils.c @@ -154,7 +154,7 @@ fsa_input2string(enum crmd_fsa_input input) } if (inputAsText == NULL) { - crm_err("Input %d is unknown", input); + pcmk__err("Input %d is unknown", input); inputAsText = ""; } @@ -215,7 +215,7 @@ fsa_state2string(enum crmd_fsa_state state) } if (stateAsText == NULL) { - crm_err("State %d is unknown", state); + pcmk__err("State %d is unknown", state); stateAsText = ""; } @@ -258,7 +258,7 @@ fsa_cause2string(enum crmd_fsa_cause cause) } if (causeAsText == NULL) { - crm_err("Cause %d is unknown", cause); + pcmk__err("Cause %d is unknown", cause); causeAsText = ""; } @@ -459,7 +459,7 @@ fsa_action2string(long long action) } if (actionAsText == NULL) { - crm_err("Action %.16llx is unknown", action); + pcmk__err("Action %.16llx is unknown", action); actionAsText = ""; } @@ -729,8 +729,8 @@ update_dc(xmlNode * msg) if (invalid) { if (AM_I_DC) { - crm_err("Not updating DC to %s (%s): we are also a DC", - welcome_from, dc_version); + pcmk__err("Not updating DC to %s (%s): we are also a DC", + welcome_from, dc_version); } else { crm_warn("New DC %s is not %s", welcome_from, controld_globals.dc_name); diff --git a/daemons/controld/pacemaker-controld.c b/daemons/controld/pacemaker-controld.c index 73ede8db092..0b2db48f120 100644 --- a/daemons/controld/pacemaker-controld.c +++ b/daemons/controld/pacemaker-controld.c @@ -125,7 +125,9 @@ main(int argc, char **argv) old_instance = crm_ipc_new(CRM_SYSTEM_CRMD, 0); if (old_instance == NULL) { - /* crm_ipc_new will have already printed an error message with crm_err. */ + /* crm_ipc_new() will have already logged an error message with + * pcmk__err() + */ exit_code = CRM_EX_FATAL; goto done; } @@ -147,7 +149,8 @@ main(int argc, char **argv) if (pcmk__daemon_can_write(PCMK_SCHEDULER_INPUT_DIR, NULL) == FALSE) { exit_code = CRM_EX_FATAL; - crm_err("Terminating due to bad permissions on " PCMK_SCHEDULER_INPUT_DIR); + pcmk__err("Terminating due to bad permissions on " + PCMK_SCHEDULER_INPUT_DIR); g_set_error(&error, PCMK__EXITC_ERROR, exit_code, "Bad permissions on " PCMK_SCHEDULER_INPUT_DIR " (see logs for details)"); @@ -155,7 +158,7 @@ main(int argc, char **argv) } else if (pcmk__daemon_can_write(CRM_CONFIG_DIR, NULL) == FALSE) { exit_code = CRM_EX_FATAL; - crm_err("Terminating due to bad permissions on " CRM_CONFIG_DIR); + pcmk__err("Terminating due to bad permissions on " CRM_CONFIG_DIR); g_set_error(&error, PCMK__EXITC_ERROR, exit_code, "Bad permissions on " CRM_CONFIG_DIR " (see logs for details)"); @@ -191,8 +194,8 @@ main(int argc, char **argv) pcmk__cluster_init_node_caches(); state = s_crmd_fsa(C_STARTUP); if ((state != S_PENDING) && (state != S_STARTING)) { - crm_err("Controller startup failed " QB_XS " FSA state %s", - crm_system_name, fsa_state2string(state)); + pcmk__err("Controller startup failed " QB_XS " FSA state %s", + crm_system_name, fsa_state2string(state)); crmd_fast_exit(CRM_EX_ERROR); // Does not return } diff --git a/daemons/execd/cts-exec-helper.c b/daemons/execd/cts-exec-helper.c index a9489953177..55bff333398 100644 --- a/daemons/execd/cts-exec-helper.c +++ b/daemons/execd/cts-exec-helper.c @@ -484,7 +484,7 @@ generate_params(void) pcmk_rsc_match_history |pcmk_rsc_match_basename); if (rsc == NULL) { - crm_err("Resource does not exist in config"); + pcmk__err("Resource does not exist in config"); pcmk_free_scheduler(scheduler); return EINVAL; } diff --git a/daemons/execd/execd_commands.c b/daemons/execd/execd_commands.c index b146068d14f..c83f5698a7d 100644 --- a/daemons/execd/execd_commands.c +++ b/daemons/execd/execd_commands.c @@ -835,8 +835,9 @@ action_complete(svc_action_t * action) #endif if (!cmd) { - crm_err("Completed executor action (%s) does not match any known operations", - action->id); + pcmk__err("Completed executor action (%s) does not match any known " + "operations", + action->id); return; } @@ -1116,8 +1117,8 @@ static void lrmd_stonith_callback(stonith_t * stonith, stonith_callback_data_t * data) { if ((data == NULL) || (data->userdata == NULL)) { - crm_err("Ignoring fence action result: " - "Invalid callback arguments (bug?)"); + pcmk__err("Ignoring fence action result: Invalid callback arguments " + "(bug?)"); } else { stonith_action_complete((lrmd_cmd_t *) data->userdata, stonith__exit_status(data), @@ -1515,8 +1516,10 @@ process_lrmd_signon(pcmk__client_t *client, xmlNode *request, int call_id, if (pcmk__compare_versions(protocol_version, LRMD_COMPATIBLE_PROTOCOL) < 0) { - crm_err("Cluster API version must be greater than or equal to %s, not %s", - LRMD_COMPATIBLE_PROTOCOL, protocol_version); + + pcmk__err("Cluster API version must be greater than or equal to " + LRMD_COMPATIBLE_PROTOCOL " , not %s", + protocol_version); rc = -EPROTO; } @@ -1971,8 +1974,8 @@ process_lrmd_message(pcmk__client_t *client, uint32_t id, xmlNode *request) } else { rc = -EOPNOTSUPP; do_reply = 1; - crm_err("Unknown IPC request '%s' from client %s", - op, pcmk__client_name(client)); + pcmk__err("Unknown IPC request '%s' from client %s", op, + pcmk__client_name(client)); } if (rc == -EACCES) { diff --git a/daemons/execd/pacemaker-execd.c b/daemons/execd/pacemaker-execd.c index 090f2785b3d..f3979c978b3 100644 --- a/daemons/execd/pacemaker-execd.c +++ b/daemons/execd/pacemaker-execd.c @@ -76,13 +76,15 @@ get_stonith_connection(void) stonith_api = stonith_api_new(); if (stonith_api == NULL) { - crm_err("Could not connect to fencer: API memory allocation failed"); + pcmk__err("Could not connect to fencer: API memory allocation " + "failed"); return NULL; } rc = stonith_api_connect_retry(stonith_api, crm_system_name, 10); if (rc != pcmk_ok) { - crm_err("Could not connect to fencer in 10 attempts: %s " - QB_XS " rc=%d", pcmk_strerror(rc), rc); + pcmk__err("Could not connect to fencer in 10 attempts: %s " + QB_XS " rc=%d", + pcmk_strerror(rc), rc); stonith_api_delete(stonith_api); stonith_api = NULL; } else { @@ -127,12 +129,13 @@ lrmd_ipc_dispatch(qb_ipcs_connection_t * c, void *data, size_t size) pcmk__client_t *client = pcmk__find_client(c); xmlNode *request = pcmk__client_data2xml(client, data, &id, &flags); - CRM_CHECK(client != NULL, crm_err("Invalid client"); + CRM_CHECK(client != NULL, pcmk__err("Invalid client"); return FALSE); - CRM_CHECK(client->id != NULL, crm_err("Invalid client: %p", client); + CRM_CHECK(client->id != NULL, pcmk__err("Invalid client: %p", client); return FALSE); - CRM_CHECK(flags & crm_ipc_client_response, crm_err("Invalid client request: %p", client); + CRM_CHECK(pcmk__is_set(flags, crm_ipc_client_response), + pcmk__err("Invalid client request: %p", client); return FALSE); if (!request) { @@ -235,9 +238,9 @@ lrmd_server_send_reply(pcmk__client_t *client, uint32_t id, xmlNode *reply) return lrmd__remote_send_xml(client->remote, reply, id, "reply"); #endif default: - crm_err("Could not send reply: unknown type for client %s " - QB_XS " flags=%#llx", - pcmk__client_name(client), client->flags); + pcmk__err("Could not send reply: unknown type for client %s " + QB_XS " flags=%#llx", + pcmk__client_name(client), client->flags); } return ENOTCONN; } @@ -264,9 +267,9 @@ lrmd_server_send_notify(pcmk__client_t *client, xmlNode *msg) } #endif default: - crm_err("Could not notify client %s with unknown transport " - QB_XS " flags=%#llx", - pcmk__client_name(client), client->flags); + pcmk__err("Could not notify client %s with unknown transport " + QB_XS " flags=%#llx", + pcmk__client_name(client), client->flags); } return ENOTCONN; } @@ -532,14 +535,16 @@ main(int argc, char **argv, char **envp) rsc_list = pcmk__strkey_table(NULL, free_rsc); ipcs = mainloop_add_ipc_server(CRM_SYSTEM_LRMD, QB_IPC_SHM, &lrmd_ipc_callbacks); if (ipcs == NULL) { - crm_err("Failed to create IPC server: shutting down and inhibiting respawn"); + pcmk__err("Failed to create IPC server: shutting down and inhibiting " + "respawn"); exit_code = CRM_EX_FATAL; goto done; } #ifdef PCMK__COMPILE_REMOTE if (lrmd_init_remote_tls_server() < 0) { - crm_err("Failed to create TLS listener: shutting down and staying down"); + pcmk__err("Failed to create TLS listener: shutting down and staying " + "down"); exit_code = CRM_EX_FATAL; goto done; } diff --git a/daemons/execd/remoted_pidone.c b/daemons/execd/remoted_pidone.c index 187de51d04e..4267fcd7577 100644 --- a/daemons/execd/remoted_pidone.c +++ b/daemons/execd/remoted_pidone.c @@ -1,5 +1,5 @@ /* - * Copyright 2017-2024 the Pacemaker project contributors + * Copyright 2017-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -247,7 +247,7 @@ remoted_spawn_pidone(int argc, char **argv, char **envp) // Child remains as pacemaker-remoted return; case -1: - crm_err("fork failed: %s", pcmk_rc_str(errno)); + pcmk__err("fork failed: %s", pcmk_rc_str(errno)); } /* Parent becomes the reaper of zombie processes */ diff --git a/daemons/execd/remoted_proxy.c b/daemons/execd/remoted_proxy.c index b65130ecc2d..a4e8dded538 100644 --- a/daemons/execd/remoted_proxy.c +++ b/daemons/execd/remoted_proxy.c @@ -216,7 +216,7 @@ ipc_proxy_forward_client(pcmk__client_t *ipc_proxy, xmlNode *xml) qb_ipcs_disconnect(ipc_client->ipcs); } else { - crm_err("Unknown ipc proxy msg type %s" , msg_type); + pcmk__err("Unknown ipc proxy msg type %s" , msg_type); } if (rc != pcmk_rc_ok) { @@ -260,9 +260,9 @@ ipc_proxy_dispatch(qb_ipcs_connection_t * c, void *data, size_t size) return 0; } - CRM_CHECK(client != NULL, crm_err("Invalid client"); + CRM_CHECK(client != NULL, pcmk__err("Invalid client"); pcmk__xml_free(request); return FALSE); - CRM_CHECK(client->id != NULL, crm_err("Invalid client: %p", client); + CRM_CHECK(client->id != NULL, pcmk__err("Invalid client: %p", client); pcmk__xml_free(request); return FALSE); /* This ensures that synced request/responses happen over the event channel @@ -456,7 +456,8 @@ ipc_proxy_init(void) pcmk__serve_pacemakerd_ipc(&pacemakerd_ipcs, &pacemakerd_proxy_callbacks); crmd_ipcs = pcmk__serve_controld_ipc(&crmd_proxy_callbacks); if (crmd_ipcs == NULL) { - crm_err("Failed to create controller: exiting and inhibiting respawn"); + pcmk__err("Failed to create controller: exiting and inhibiting " + "respawn"); crm_warn("Verify pacemaker and pacemaker_remote are not both enabled"); crm_exit(CRM_EX_FATAL); } diff --git a/daemons/execd/remoted_schemas.c b/daemons/execd/remoted_schemas.c index eb551fe4316..ef59368f37a 100644 --- a/daemons/execd/remoted_schemas.c +++ b/daemons/execd/remoted_schemas.c @@ -34,7 +34,7 @@ rm_files(const char *pathname, const struct stat *sbuf, int type, struct FTW *ft if (remove(pathname) != 0) { int rc = errno; - crm_err("Could not remove %s: %s", pathname, pcmk_rc_str(rc)); + pcmk__err("Could not remove %s: %s", pathname, pcmk_rc_str(rc)); return -1; } @@ -55,21 +55,22 @@ clean_up_extra_schema_files(void) /* If the directory doesn't exist, try to make it first. */ if (mkdir(remote_schema_dir, 0755) != 0) { rc = errno; - crm_err("Could not create directory for schemas: %s", - pcmk_rc_str(rc)); + pcmk__err("Could not create directory for schemas: %s", + pcmk_rc_str(rc)); } } else { rc = errno; - crm_err("Could not create directory for schemas: %s", - pcmk_rc_str(rc)); + pcmk__err("Could not create directory for schemas: %s", + pcmk_rc_str(rc)); } } else if (!S_ISDIR(sb.st_mode)) { /* If something exists with the same name that's not a directory, that's * an error. */ - crm_err("%s already exists but is not a directory", remote_schema_dir); + pcmk__err("%s already exists but is not a directory", + remote_schema_dir); } else { /* It's a directory - clear it out so we can download potentially new @@ -78,7 +79,8 @@ clean_up_extra_schema_files(void) rc = nftw(remote_schema_dir, rm_files, 10, FTW_DEPTH|FTW_MOUNT|FTW_PHYS); if (rc != 0) { - crm_err("Could not remove %s: %s", remote_schema_dir, pcmk_rc_str(rc)); + pcmk__err("Could not remove %s: %s", remote_schema_dir, + pcmk_rc_str(rc)); } } } @@ -145,7 +147,7 @@ get_schema_files(void) rc = cib->cmds->signon(cib, crm_system_name, cib_query); rc = pcmk_legacy2rc(rc); if (rc != pcmk_rc_ok) { - crm_err("Could not connect to the CIB manager: %s", pcmk_rc_str(rc)); + pcmk__err("Could not connect to the CIB manager: %s", pcmk_rc_str(rc)); pcmk_common_cleanup(); _exit(pcmk_rc2exitc(rc)); } @@ -153,7 +155,7 @@ get_schema_files(void) rc = cib->cmds->fetch_schemas(cib, &reply, pcmk__highest_schema_name(), cib_sync_call); if (rc != pcmk_ok) { - crm_err("Could not get schema files: %s", pcmk_strerror(rc)); + pcmk__err("Could not get schema files: %s", pcmk_strerror(rc)); rc = pcmk_legacy2rc(rc); } else if (reply->children != NULL) { @@ -215,12 +217,13 @@ get_schema_files_complete(mainloop_child_t *p, pid_t pid, int core, int signo, i } else { if (signo == 0) { - crm_err("%s: process %d exited %d", errmsg, (int) pid, exitcode); + pcmk__err("%s: process %lld exited %d", errmsg, (long long) pid, + exitcode); } else { - crm_err("%s: process %d terminated with signal %d (%s)%s", - errmsg, (int) pid, signo, strsignal(signo), - (core? " and dumped core" : "")); + pcmk__err("%s: process %lld terminated with signal %d (%s)%s", + errmsg, (long long) pid, signo, strsignal(signo), + ((core != 0)? " and dumped core" : "")); } /* Clean up any incomplete schema data we might have been downloading diff --git a/daemons/execd/remoted_tls.c b/daemons/execd/remoted_tls.c index 675eb1aa88b..c6345d05d4c 100644 --- a/daemons/execd/remoted_tls.c +++ b/daemons/execd/remoted_tls.c @@ -196,7 +196,7 @@ lrmd_auth_timeout_cb(gpointer data) mainloop_del_fd(client->remote->source); client->remote->source = NULL; - crm_err("Remote client authentication timed out"); + pcmk__err("Remote client authentication timed out"); return FALSE; } @@ -273,7 +273,7 @@ bind_and_listen(struct addrinfo *addr) fd = socket(addr->ai_family, addr->ai_socktype, addr->ai_protocol); if (fd < 0) { rc = errno; - crm_err("Listener socket creation failed: %", pcmk_rc_str(rc)); + pcmk__err("Listener socket creation failed: %", pcmk_rc_str(rc)); return -rc; } @@ -282,7 +282,8 @@ bind_and_listen(struct addrinfo *addr) rc = setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval)); if (rc < 0) { rc = errno; - crm_err("Local address reuse not allowed on %s: %s", buffer, pcmk_rc_str(rc)); + pcmk__err("Local address reuse not allowed on %s: %s", buffer, + pcmk_rc_str(rc)); close(fd); return -rc; } @@ -292,7 +293,8 @@ bind_and_listen(struct addrinfo *addr) rc = setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &optval, sizeof(optval)); if (rc < 0) { rc = errno; - crm_err("Couldn't disable IPV6-only on %s: %s", buffer, pcmk_rc_str(rc)); + pcmk__err("Couldn't disable IPV6-only on %s: %s", buffer, + pcmk_rc_str(rc)); close(fd); return -rc; } @@ -300,14 +302,14 @@ bind_and_listen(struct addrinfo *addr) if (bind(fd, addr->ai_addr, addr->ai_addrlen) != 0) { rc = errno; - crm_err("Cannot bind to %s: %s", buffer, pcmk_rc_str(rc)); + pcmk__err("Cannot bind to %s: %s", buffer, pcmk_rc_str(rc)); close(fd); return -rc; } if (listen(fd, 10) == -1) { rc = errno; - crm_err("Cannot listen on %s: %s", buffer, pcmk_rc_str(rc)); + pcmk__err("Cannot listen on %s: %s", buffer, pcmk_rc_str(rc)); close(fd); return -rc; } @@ -332,8 +334,8 @@ get_address_info(const char *bind_name, int port, struct addrinfo **res) rc = pcmk__gaierror2rc(rc); if (rc != pcmk_rc_ok) { - crm_err("Unable to get IP address(es) for %s: %s", - (bind_name? bind_name : "local node"), pcmk_rc_str(rc)); + pcmk__err("Unable to get IP address(es) for %s: %s", + pcmk__s(bind_name, "local node"), pcmk_rc_str(rc)); return rc; } diff --git a/daemons/fenced/cts-fence-helper.c b/daemons/fenced/cts-fence-helper.c index 1424a316230..cd1aac23150 100644 --- a/daemons/fenced/cts-fence-helper.c +++ b/daemons/fenced/cts-fence-helper.c @@ -1,5 +1,5 @@ /* - * Copyright 2009-2024 the Pacemaker project contributors + * Copyright 2009-2025 the Pacemaker project contributors * * This source code is licensed under the GNU General Public License version 2 * or later (GPLv2+) WITHOUT ANY WARRANTY. @@ -100,8 +100,8 @@ mainloop_test_done(const char *origin, bool pass) result.execution_status = PCMK_EXEC_DONE; result.exit_status = CRM_EX_OK; } else { - crm_err("FAILURE - %s (%d: %s)", origin, result.exit_status, - pcmk_exec_status_str(result.execution_status)); + pcmk__err("FAILURE - %s (%d: %s)", origin, result.exit_status, + pcmk_exec_status_str(result.execution_status)); crm_exit(CRM_EX_ERROR); } } @@ -185,11 +185,14 @@ passive_test(void) dispatch_helper(500); \ } \ if (rc != expected_rc) { \ - crm_err("FAILURE - expected rc %d != %d(%s) for cmd - %s", expected_rc, rc, pcmk_strerror(rc), str); \ + pcmk__err("FAILURE - expected rc %d != %d(%s) for cmd - %s", \ + expected_rc, rc, pcmk_strerror(rc), str); \ crm_exit(CRM_EX_ERROR); \ } else if (expected_notifications) { \ - crm_err("FAILURE - expected %d notifications, got only %d for cmd - %s", \ - num_notifications, num_notifications - expected_notifications, str); \ + pcmk__err("FAILURE - expected %d notifications, got only %d for " \ + "cmd - %s", \ + num_notifications, \ + (num_notifications - expected_notifications), str); \ crm_exit(CRM_EX_ERROR); \ } else { \ if (verbose) { \ @@ -440,7 +443,7 @@ test_async_fence_pass(int check_event) rc = st->cmds->fence(st, 0, "true_1_node1", PCMK_ACTION_OFF, MAINLOOP_DEFAULT_TIMEOUT, 0); if (rc < 0) { - crm_err("fence failed with rc %d", rc); + pcmk__err("fence failed with rc %d", rc); mainloop_test_done(__func__, false); } register_callback_helper(rc); @@ -460,9 +463,10 @@ test_async_fence_custom_timeout(int check_event) if (result.execution_status != PCMK_EXEC_TIMEOUT) { mainloop_test_done(__func__, false); } else if (diff < CUSTOM_TIMEOUT_ADDITION + MAINLOOP_DEFAULT_TIMEOUT) { - crm_err - ("Custom timeout test failed, callback expiration should be updated to %d, actual timeout was %d", - CUSTOM_TIMEOUT_ADDITION + MAINLOOP_DEFAULT_TIMEOUT, diff); + pcmk__err("Custom timeout test failed, callback expiration should " + "be updated to %d, actual timeout was %d", + (CUSTOM_TIMEOUT_ADDITION + MAINLOOP_DEFAULT_TIMEOUT), + diff); mainloop_test_done(__func__, false); } else { mainloop_test_done(__func__, true); @@ -474,7 +478,7 @@ test_async_fence_custom_timeout(int check_event) rc = st->cmds->fence(st, 0, "custom_timeout_node1", PCMK_ACTION_OFF, MAINLOOP_DEFAULT_TIMEOUT, 0); if (rc < 0) { - crm_err("fence failed with rc %d", rc); + pcmk__err("fence failed with rc %d", rc); mainloop_test_done(__func__, false); } register_callback_helper(rc); @@ -495,7 +499,7 @@ test_async_fence_timeout(int check_event) rc = st->cmds->fence(st, 0, "false_1_node2", PCMK_ACTION_OFF, MAINLOOP_DEFAULT_TIMEOUT, 0); if (rc < 0) { - crm_err("fence failed with rc %d", rc); + pcmk__err("fence failed with rc %d", rc); mainloop_test_done(__func__, false); } register_callback_helper(rc); @@ -514,7 +518,7 @@ test_async_monitor(int check_event) rc = st->cmds->monitor(st, 0, "false_1", MAINLOOP_DEFAULT_TIMEOUT); if (rc < 0) { - crm_err("monitor failed with rc %d", rc); + pcmk__err("monitor failed with rc %d", rc); mainloop_test_done(__func__, false); } @@ -564,7 +568,7 @@ try_mainloop_connect(int check_event) mainloop_test_done(__func__, true); return; } - crm_err("API CONNECTION FAILURE"); + pcmk__err("API CONNECTION FAILURE"); mainloop_test_done(__func__, false); } diff --git a/daemons/fenced/fenced_cib.c b/daemons/fenced/fenced_cib.c index 147c4f92683..71ff00bcaa4 100644 --- a/daemons/fenced/fenced_cib.c +++ b/daemons/fenced/fenced_cib.c @@ -361,8 +361,8 @@ fenced_query_cib(void) if (rc == pcmk_rc_ok) { pcmk__assert(local_cib != NULL); } else { - crm_err("Couldn't retrieve the CIB: %s " QB_XS " rc=%d", - pcmk_rc_str(rc), rc); + pcmk__err("Couldn't retrieve the CIB: %s " QB_XS " rc=%d", + pcmk_rc_str(rc), rc); } return rc; } @@ -588,7 +588,7 @@ setup_cib(void) cib_api = cib_new(); if (cib_api == NULL) { - crm_err("No connection to the CIB manager"); + pcmk__err("No connection to the CIB manager"); return; } @@ -598,7 +598,8 @@ setup_cib(void) } while (rc == -ENOTCONN && ++retries < 5); if (rc != pcmk_ok) { - crm_err("Could not connect to the CIB manager: %s (%d)", pcmk_strerror(rc), rc); + pcmk__err("Could not connect to the CIB manager: %s (%d)", + pcmk_strerror(rc), rc); return; } @@ -606,7 +607,7 @@ setup_cib(void) PCMK__VALUE_CIB_DIFF_NOTIFY, update_cib_cache_cb); if (rc != pcmk_ok) { - crm_err("Could not set CIB notification callback"); + pcmk__err("Could not set CIB notification callback"); return; } diff --git a/daemons/fenced/fenced_commands.c b/daemons/fenced/fenced_commands.c index ce2b61b8303..42c47c4082a 100644 --- a/daemons/fenced/fenced_commands.c +++ b/daemons/fenced/fenced_commands.c @@ -170,7 +170,7 @@ get_action_delay_base(const stonith_device_t *device, const char *action, char *mapval = strchr(val, ':'); if (mapval == NULL || mapval[1] == 0) { - crm_err("pcmk_delay_base: empty value in mapping", val); + pcmk__err("pcmk_delay_base: empty value in mapping", val); continue; } @@ -578,9 +578,9 @@ stonith_device_execute(stonith_device_t * device) "despite being unable to load CIB secrets (%s)", device->id, pcmk_rc_str(exec_rc)); } else { - crm_err("Considering %s unconfigured " - "because unable to load CIB secrets: %s", - device->id, pcmk_rc_str(exec_rc)); + pcmk__err("Considering %s unconfigured because unable to load CIB " + "secrets: %s", + device->id, pcmk_rc_str(exec_rc)); report_internal_result(cmd, CRM_EX_ERROR, PCMK_EXEC_NO_SECRETS, "Failed to get CIB secrets"); goto done; @@ -908,7 +908,8 @@ get_agent_metadata(const char *agent, xmlNode ** metadata) NULL, &buffer, 10); stonith_api_delete(st); if (rc || !buffer) { - crm_err("Could not retrieve metadata for fencing agent %s", agent); + pcmk__err("Could not retrieve metadata for fencing agent %s", + agent); return EAGAIN; } g_hash_table_replace(metadata_cache, pcmk__str_copy(agent), buffer); @@ -1350,22 +1351,22 @@ stonith_device_register(xmlNode *dev, gboolean from_cib) pcmk__str_any_of(device->agent, STONITH_WATCHDOG_AGENT, STONITH_WATCHDOG_AGENT_INTERNAL, NULL)) do { if (stonith_watchdog_timeout_ms <= 0) { - crm_err("Ignoring watchdog fence device without " - PCMK_OPT_STONITH_WATCHDOG_TIMEOUT " set."); + pcmk__err("Ignoring watchdog fence device without " + PCMK_OPT_STONITH_WATCHDOG_TIMEOUT " set"); rv = -ENODEV; /* fall through to cleanup & return */ } else if (!pcmk__str_any_of(device->agent, STONITH_WATCHDOG_AGENT, STONITH_WATCHDOG_AGENT_INTERNAL, NULL)) { - crm_err("Ignoring watchdog fence device with unknown " - "agent '%s' unequal '" STONITH_WATCHDOG_AGENT "'.", - device->agent?device->agent:""); + pcmk__err("Ignoring watchdog fence device with unknown agent '%s' " + "unequal to '" STONITH_WATCHDOG_AGENT "'", + pcmk__s(device->agent, "")); rv = -ENODEV; /* fall through to cleanup & return */ } else if (!pcmk__str_eq(device->id, STONITH_WATCHDOG_ID, pcmk__str_none)) { - crm_err("Ignoring watchdog fence device " - "named %s !='"STONITH_WATCHDOG_ID"'.", - device->id?device->id:""); + pcmk__err("Ignoring watchdog fence device named " + "'%s' != '" STONITH_WATCHDOG_ID "'", + pcmk__s(device->id, "")); rv = -ENODEV; /* fall through to cleanup & return */ } else { @@ -2195,7 +2196,8 @@ can_fence_host_with_device(stonith_device_t *dev, /* we'll respond to this search request async in the cb */ return; } else { - crm_err("Invalid value for " PCMK_STONITH_HOST_CHECK ": %s", check_type); + pcmk__err("Invalid value for " PCMK_STONITH_HOST_CHECK ": %s", + check_type); check_type = "Invalid " PCMK_STONITH_HOST_CHECK; } @@ -2880,7 +2882,7 @@ fence_locally(xmlNode *msg, pcmk__action_result_t *result) if (device_id != NULL) { device = g_hash_table_lookup(device_list, device_id); if (device == NULL) { - crm_err("Requested device '%s' is not available", device_id); + pcmk__err("Requested device '%s' is not available", device_id); pcmk__format_result(result, CRM_EX_ERROR, PCMK_EXEC_NO_FENCE_DEVICE, "Requested device '%s' not found", device_id); return; @@ -3504,9 +3506,9 @@ handle_cache_request(pcmk__request_t *request) static xmlNode * handle_unknown_request(pcmk__request_t *request) { - crm_err("Unknown IPC request %s from %s %s", - request->op, pcmk__request_origin_type(request), - pcmk__request_origin(request)); + pcmk__err("Unknown IPC request %s from %s %s", request->op, + pcmk__request_origin_type(request), + pcmk__request_origin(request)); pcmk__format_result(&request->result, CRM_EX_PROTOCOL, PCMK_EXEC_INVALID, "Unknown IPC request type '%s' (bug?)", request->op); return fenced_construct_reply(request->xml, NULL, &request->result); @@ -3595,9 +3597,9 @@ handle_reply(pcmk__client_t *client, xmlNode *request, const char *remote_peer) fenced_process_fencing_reply(request); } else { - crm_err("Ignoring unknown %s reply from %s %s", - pcmk__s(op, "untyped"), ((client == NULL)? "peer" : "client"), - ((client == NULL)? remote_peer : pcmk__client_name(client))); + pcmk__err("Ignoring unknown %s reply from %s %s", + pcmk__s(op, "untyped"), ((client != NULL)? "client" : "peer"), + ((client != NULL)? pcmk__client_name(client) : remote_peer)); crm_log_xml_warn(request, "UnknownOp"); free(op); return; diff --git a/daemons/fenced/fenced_remote.c b/daemons/fenced/fenced_remote.c index f4c0034de60..51519b6bb94 100644 --- a/daemons/fenced/fenced_remote.c +++ b/daemons/fenced/fenced_remote.c @@ -506,10 +506,10 @@ finalize_op_duplicates(remote_fencing_op_t *op, xmlNode *data) } else { // Possible if (for example) it timed out already - crm_err("Skipping duplicate notification for %s@%s " - QB_XS " state=%s id=%.8s", - other->client_name, other->originator, - stonith_op_state_str(other->state), other->id); + pcmk__err("Skipping duplicate notification for %s@%s " + QB_XS " state=%s id=%.8s", + other->client_name, other->originator, + stonith_op_state_str(other->state), other->id); } } } @@ -2025,8 +2025,9 @@ request_peer_fencing(remote_fencing_op_t *op, peer_device_info_t *peer) return; } else if (op->owner == FALSE) { - crm_err("Fencing (%s) targeting %s for client %s is not ours to control", - op->action, op->target, op->client_name); + pcmk__err("Fencing (%s) targeting %s for client %s is not ours to " + "control", + op->action, op->target, op->client_name); } else if (op->query_timer == 0) { /* We've exhausted all available peers */ @@ -2313,8 +2314,8 @@ add_result(remote_fencing_op_t *op, const char *host, int ndevices, peer->ndevices = g_hash_table_size(peer->devices); CRM_CHECK(ndevices == peer->ndevices, - crm_err("Query claimed to have %d device%s but %d found", - ndevices, pcmk__plural_s(ndevices), peer->ndevices)); + pcmk__err("Query claimed to have %d device%s but %d found", + ndevices, pcmk__plural_s(ndevices), peer->ndevices)); op->query_results = g_list_insert_sorted(op->query_results, peer, sort_peers); return peer; @@ -2487,9 +2488,10 @@ fenced_process_fencing_reply(xmlNode *msg) op->result = result; // The operation takes ownership of the result if (op->devices && device && !pcmk__str_eq(op->devices->data, device, pcmk__str_casei)) { - crm_err("Received outdated reply for device %s (instead of %s) to " - "fence (%s) %s. Operation already timed out at peer level.", - device, (const char *) op->devices->data, op->action, op->target); + pcmk__err("Received outdated reply for device %s (instead of %s) to " + "fence (%s) %s. Operation already timed out at peer level.", + device, (const char *) op->devices->data, op->action, + op->target); return; } @@ -2508,9 +2510,9 @@ fenced_process_fencing_reply(xmlNode *msg) pcmk__str_casei)) { /* If this isn't a remote level broadcast, and we are not the * originator of the operation, we should not be receiving this msg. */ - crm_err("Received non-broadcast fencing result for operation %.8s " - "we do not own (device %s targeting %s)", - op->id, device, op->target); + pcmk__err("Received non-broadcast fencing result for operation %.8s we " + "do not own (device %s targeting %s)", + op->id, device, op->target); return; } diff --git a/daemons/fenced/pacemaker-fenced.c b/daemons/fenced/pacemaker-fenced.c index 6bd492942b7..779f8be6ed0 100644 --- a/daemons/fenced/pacemaker-fenced.c +++ b/daemons/fenced/pacemaker-fenced.c @@ -207,7 +207,7 @@ handle_cpg_message(cpg_handle_t handle, const struct cpg_name *groupName, xml = pcmk__xml_parse(data); if (xml == NULL) { - crm_err("Invalid XML: '%.120s'", data); + pcmk__err("Invalid XML: '%.120s'", data); free(data); return; } @@ -581,7 +581,7 @@ main(int argc, char **argv) old_instance = crm_ipc_new("stonith-ng", 0); if (old_instance == NULL) { /* crm_ipc_new() will have already logged an error message with - * crm_err() + * pcmk__err() */ exit_code = CRM_EX_FATAL; goto done; diff --git a/daemons/pacemakerd/pacemakerd.c b/daemons/pacemakerd/pacemakerd.c index cf4ee2d1d73..6786804a3a4 100644 --- a/daemons/pacemakerd/pacemakerd.c +++ b/daemons/pacemakerd/pacemakerd.c @@ -162,8 +162,8 @@ create_pcmk_dirs(void) }; if (pcmk__daemon_user(&pcmk_uid, &pcmk_gid) != pcmk_rc_ok) { - crm_err("Cluster user " CRM_DAEMON_USER " does not exist, aborting " - "Pacemaker startup"); + pcmk__err("Cluster user " CRM_DAEMON_USER " does not exist, aborting " + "Pacemaker startup"); crm_exit(CRM_EX_NOUSER); } @@ -379,7 +379,7 @@ main(int argc, char **argv) } else if (old_instance_connected) { pcmk_free_ipc_api(old_instance); - crm_err("Aborting start-up because active Pacemaker instance found"); + pcmk__err("Aborting start-up because active Pacemaker instance found"); exit_code = CRM_EX_FATAL; goto done; } diff --git a/daemons/pacemakerd/pcmkd_subdaemons.c b/daemons/pacemakerd/pcmkd_subdaemons.c index 45361ed5d9d..5e7257bbfd6 100644 --- a/daemons/pacemakerd/pcmkd_subdaemons.c +++ b/daemons/pacemakerd/pcmkd_subdaemons.c @@ -196,7 +196,7 @@ check_next_subdaemon(gpointer user_data) } if (pcmk__is_set(child->flags, child_respawn)) { // cts-lab looks for this message - crm_err("Subdaemon %s[%lld] terminated", name, pid); + pcmk__err("Subdaemon %s[%lld] terminated", name, pid); } else { /* orderly shutdown */ crm_notice("Subdaemon %s[%lld] terminated", name, pid); @@ -225,8 +225,8 @@ escalate_shutdown(gpointer data) } else if (child->pid != 0) { /* Use SIGSEGV instead of SIGKILL to create a core so we can see what it was up to */ - crm_err("Subdaemon %s not terminating in a timely manner, forcing", - pcmk__server_name(child->server)); + pcmk__err("Subdaemon %s not terminating in a timely manner, forcing", + pcmk__server_name(child->server)); stop_child(child, SIGSEGV); } return FALSE; @@ -279,8 +279,8 @@ pcmk_child_exit(mainloop_child_t * p, pid_t pid, int core, int signo, int exitco default: // cts-lab looks for this message - crm_err("%s[%d] exited with status %d (%s)", - name, pid, exitcode, crm_exit_str(exitcode)); + pcmk__err("%s[%d] exited with status %d (%s)", name, pid, + exitcode, crm_exit_str(exitcode)); break; } } @@ -298,7 +298,7 @@ pcmk_process_exit(pcmkd_child_t * child) child->respawn_count += 1; if (child->respawn_count > MAX_RESPAWN) { - crm_err("Subdaemon %s exceeded maximum respawn count", name); + pcmk__err("Subdaemon %s exceeded maximum respawn count", name); child->flags &= ~child_respawn; } @@ -447,8 +447,8 @@ start_child(pcmkd_child_t * child) int rc = pcmk__daemon_user(&uid, &gid); if (rc != pcmk_rc_ok) { - crm_err("User " CRM_DAEMON_USER " not found for subdaemon %s: %s", - name, pcmk_rc_str(rc)); + pcmk__err("User " CRM_DAEMON_USER " not found for subdaemon %s: %s", + name, pcmk_rc_str(rc)); return rc; } } @@ -508,9 +508,9 @@ start_child(pcmkd_child_t * child) * @TODO initgroups() is not portable (not part of any standard). */ if (initgroups(user, gid) < 0) { - crm_err("Cannot initialize system groups for subdaemon %s: %s " - QB_XS " errno=%d", - name, strerror(errno), errno); + pcmk__err("Cannot initialize system groups for subdaemon %s: %s " + QB_XS " errno=%d", + name, strerror(errno), errno); } } @@ -583,9 +583,9 @@ child_liveness(pcmkd_child_t *child) rc = pcmk__daemon_user(&cl_uid, &cl_gid); if (rc != pcmk_rc_ok) { - crm_err("Could not find user and group IDs for user " - CRM_DAEMON_USER ": %s " QB_XS " rc=%d", - pcmk_rc_str(rc), rc); + pcmk__err("Could not find user and group IDs for user " + CRM_DAEMON_USER ": %s " QB_XS " rc=%d", + pcmk_rc_str(rc), rc); return rc; } } @@ -896,8 +896,8 @@ stop_child(pcmkd_child_t *child, int signal) QB_XS " via signal %d to process %lld", name, signal, (long long) child->pid); } else { - crm_err("Could not stop subdaemon %s[%lld] with signal %d: %s", - name, (long long) child->pid, signal, strerror(errno)); + pcmk__err("Could not stop subdaemon %s[%lld] with signal %d: %s", + name, (long long) child->pid, signal, strerror(errno)); } return TRUE; diff --git a/daemons/schedulerd/pacemaker-schedulerd.c b/daemons/schedulerd/pacemaker-schedulerd.c index f7ddc9c128f..3ce758656f3 100644 --- a/daemons/schedulerd/pacemaker-schedulerd.c +++ b/daemons/schedulerd/pacemaker-schedulerd.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. * @@ -139,7 +139,8 @@ main(int argc, char **argv) crm_notice("Starting Pacemaker scheduler"); if (pcmk__daemon_can_write(PCMK_SCHEDULER_INPUT_DIR, NULL) == FALSE) { - crm_err("Terminating due to bad permissions on " PCMK_SCHEDULER_INPUT_DIR); + pcmk__err("Terminating due to bad permissions on " + PCMK_SCHEDULER_INPUT_DIR); exit_code = CRM_EX_FATAL; g_set_error(&error, PCMK__EXITC_ERROR, exit_code, "ERROR: Bad permissions on %s (see logs for details)", diff --git a/include/crm/common/logging_internal.h b/include/crm/common/logging_internal.h index 68a7da4eda6..a9f8c780bdb 100644 --- a/include/crm/common/logging_internal.h +++ b/include/crm/common/logging_internal.h @@ -38,6 +38,15 @@ extern "C" { */ #define pcmk__crit(fmt, args...) qb_log(LOG_CRIT, fmt, ##args) +/*! + * \internal + * \brief Log a message at \c LOG_ERR level + * + * \param[in] fmt \c printf() format string for log message + * \param[in] args Format string arguments + */ +#define pcmk__err(fmt, args...) qb_log(LOG_ERR, fmt, ##args) + /* Some warnings are too noisy when logged every time a given function is called * (for example, using a deprecated feature). As an alternative, we allow * warnings to be logged once per invocation of the calling program. Each of @@ -114,7 +123,7 @@ extern bool pcmk__config_has_warning; #define pcmk__config_err(fmt...) do { \ pcmk__config_has_error = true; \ if (pcmk__config_error_handler == NULL) { \ - crm_err(fmt); \ + pcmk__err(fmt); \ } else { \ pcmk__config_error_handler(pcmk__config_error_context, fmt); \ } \ diff --git a/include/crm/common/scheduler_internal.h b/include/crm/common/scheduler_internal.h index 82805ac4acd..6055b2c23a5 100644 --- a/include/crm/common/scheduler_internal.h +++ b/include/crm/common/scheduler_internal.h @@ -240,7 +240,7 @@ extern uint32_t pcmk__warnings; #define pcmk__sched_err(scheduler, fmt...) do { \ pcmk__set_scheduler_flags((scheduler), \ pcmk__sched_processing_error); \ - crm_err(fmt); \ + pcmk__err(fmt); \ } while (0) /*! diff --git a/lib/cib/cib_attrs.c b/lib/cib/cib_attrs.c index 26b13582b7a..76e292f9ff8 100644 --- a/lib/cib/cib_attrs.c +++ b/lib/cib/cib_attrs.c @@ -43,7 +43,7 @@ new_output_object(const char *ty) pcmk__register_formats(NULL, formats); rc = pcmk__output_new(&out, ty, NULL, (char**)argv); if ((rc != pcmk_rc_ok) || (out == NULL)) { - crm_err("Can't out due to internal error: %s", pcmk_rc_str(rc)); + pcmk__err("Can't out due to internal error: %s", pcmk_rc_str(rc)); return NULL; } diff --git a/lib/cib/cib_client.c b/lib/cib/cib_client.c index b133fd487e2..2abbb02ac5b 100644 --- a/lib/cib/cib_client.c +++ b/lib/cib/cib_client.c @@ -350,8 +350,8 @@ cib_client_init_transaction(cib_t *cib) const char *client_id = NULL; cib->cmds->client_id(cib, NULL, &client_id); - crm_err("Failed to initialize CIB transaction for client %s: %s", - client_id, pcmk_rc_str(rc)); + pcmk__err("Failed to initialize CIB transaction for client %s: %s", + client_id, pcmk_rc_str(rc)); } return pcmk_rc2legacy(rc); } @@ -373,8 +373,8 @@ cib_client_end_transaction(cib_t *cib, bool commit, int call_options) if (cib->transaction == NULL) { rc = pcmk_rc_no_transaction; - crm_err("Failed to commit transaction for CIB client %s: %s", - client_id, pcmk_rc_str(rc)); + pcmk__err("Failed to commit transaction for CIB client %s: %s", + client_id, pcmk_rc_str(rc)); return pcmk_rc2legacy(rc); } rc = cib_internal_op(cib, PCMK__CIB_REQUEST_COMMIT_TRANSACT, NULL, NULL, diff --git a/lib/cib/cib_file.c b/lib/cib/cib_file.c index 57e8fa3e7b1..35a4d8d2ef4 100644 --- a/lib/cib/cib_file.c +++ b/lib/cib/cib_file.c @@ -317,7 +317,7 @@ cib_file_perform_op_delegate(cib_t *cib, const char *op, const char *host, if (file_get_op_function(operation) == NULL) { // @COMPAT: At compatibility break, use EOPNOTSUPP - crm_err("Operation %s is not supported by CIB file clients", op); + pcmk__err("Operation %s is not supported by CIB file clients", op); return -EPROTONOSUPPORT; } @@ -561,7 +561,7 @@ cib_file_signoff(cib_t *cib) crm_info("Wrote CIB to %s", private->filename); cib_clear_file_flags(private, cib_file_flag_dirty); } else { - crm_err("Could not write CIB to %s", private->filename); + pcmk__err("Could not write CIB to %s", private->filename); } } @@ -714,7 +714,7 @@ cib_file_verify_digest(xmlNode *root, const char *sigfile) switch (rc) { case pcmk_rc_ok: if (expected == NULL) { - crm_err("On-disk digest at %s is empty", sigfile); + pcmk__err("On-disk digest at %s is empty", sigfile); return FALSE; } break; @@ -722,8 +722,8 @@ cib_file_verify_digest(xmlNode *root, const char *sigfile) crm_warn("No on-disk digest present at %s", sigfile); return TRUE; default: - crm_err("Could not read on-disk digest from %s: %s", - sigfile, pcmk_rc_str(rc)); + pcmk__err("Could not read on-disk digest from %s: %s", sigfile, + pcmk_rc_str(rc)); return FALSE; } passed = pcmk__verify_digest(root, expected); @@ -862,8 +862,8 @@ cib_file_backup(const char *cib_dirname, const char *cib_filename) rc2 = pcmk__chown_series_sequence(cib_dirname, CIB_SERIES, cib_file_owner, cib_file_group); if (rc2 != pcmk_rc_ok) { - crm_err("Could not set owner of sequence file in %s: %s", - cib_dirname, pcmk_rc_str(rc2)); + pcmk__err("Could not set owner of sequence file in %s: %s", + cib_dirname, pcmk_rc_str(rc2)); rc = -1; } } @@ -942,8 +942,8 @@ cib_file_write_with_digest(xmlNode *cib_root, const char *cib_dirname, crm_trace("Reading cluster configuration file %s", cib_path); rc = cib_file_read_and_verify(cib_path, NULL, NULL); if ((rc != pcmk_ok) && (rc != -ENOENT)) { - crm_err("%s was manually modified while the cluster was active!", - cib_path); + pcmk__err("%s was manually modified while the cluster was active!", + cib_path); exit_rc = pcmk_err_cib_modified; goto cleanup; } @@ -983,7 +983,7 @@ cib_file_write_with_digest(xmlNode *cib_root, const char *cib_dirname, /* Write out the CIB */ if (pcmk__xml_write_fd(cib_root, tmp_cib, fd) != pcmk_rc_ok) { - crm_err("Changes couldn't be written to %s", tmp_cib); + pcmk__err("Changes couldn't be written to %s", tmp_cib); exit_rc = pcmk_err_cib_save; goto cleanup; } @@ -1010,8 +1010,8 @@ cib_file_write_with_digest(xmlNode *cib_root, const char *cib_dirname, } rc = pcmk__write_sync(fd, digest); if (rc != pcmk_rc_ok) { - crm_err("Could not write digest to %s: %s", - tmp_digest, pcmk_rc_str(rc)); + pcmk__err("Could not write digest to %s: %s", tmp_digest, + pcmk_rc_str(rc)); exit_rc = pcmk_err_cib_save; close(fd); goto cleanup; @@ -1076,9 +1076,9 @@ cib_file_process_transaction_requests(cib_t *cib, xmlNode *transaction) rc = pcmk_legacy2rc(rc); if (rc != pcmk_rc_ok) { - crm_err("Aborting transaction for CIB file client (%s) on file " - "'%s' due to failed %s request: %s", - private->id, private->filename, op, pcmk_rc_str(rc)); + pcmk__err("Aborting transaction for CIB file client (%s) on file " + "'%s' due to failed %s request: %s", + private->id, private->filename, op, pcmk_rc_str(rc)); crm_log_xml_info(request, "Failed request"); return rc; } @@ -1173,9 +1173,9 @@ cib_file_process_commit_transaction(const char *op, int options, if (rc != pcmk_rc_ok) { cib_file_opaque_t *private = cib->variant_opaque; - crm_err("Could not commit transaction for CIB file client (%s) on " - "file '%s': %s", - private->id, private->filename, pcmk_rc_str(rc)); + pcmk__err("Could not commit transaction for CIB file client (%s) on " + "file '%s': %s", + private->id, private->filename, pcmk_rc_str(rc)); } return pcmk_rc2legacy(rc); } diff --git a/lib/cib/cib_native.c b/lib/cib/cib_native.c index 18099b90139..d113920bb68 100644 --- a/lib/cib/cib_native.c +++ b/lib/cib/cib_native.c @@ -57,7 +57,7 @@ cib_native_perform_op_delegate(cib_t *cib, const char *op, const char *host, } if (op == NULL) { - crm_err("No operation specified"); + pcmk__err("No operation specified"); return -EINVAL; } @@ -80,8 +80,8 @@ cib_native_perform_op_delegate(cib_t *cib, const char *op, const char *host, rc = crm_ipc_send(native->ipc, op_msg, ipc_flags, cib->call_timeout * 1000, &op_reply); if (rc < 0) { - crm_err("Couldn't perform %s operation (timeout=%ds): %s (%d)", op, - cib->call_timeout, pcmk_strerror(rc), rc); + pcmk__err("Couldn't perform %s operation (timeout=%ds): %s (%d)", op, + cib->call_timeout, pcmk_strerror(rc), rc); rc = -ECOMM; goto done; } @@ -115,13 +115,13 @@ cib_native_perform_op_delegate(cib_t *cib, const char *op, const char *host, } } else if (reply_id <= 0) { - crm_err("Received bad reply: No id set"); + pcmk__err("Received bad reply: No id set"); crm_log_xml_err(op_reply, "Bad reply"); rc = -ENOMSG; goto done; } else { - crm_err("Received bad reply: %d (wanted %d)", reply_id, cib->call_id); + pcmk__err("Received bad reply: %d (wanted %d)", reply_id, cib->call_id); crm_log_xml_err(op_reply, "Old reply"); rc = -ENOMSG; goto done; @@ -147,7 +147,7 @@ cib_native_perform_op_delegate(cib_t *cib, const char *op, const char *host, /* These indicate internal problems */ case -EPROTO: case -ENOMSG: - crm_err("Call failed: %s", pcmk_strerror(rc)); + pcmk__err("Call failed: %s", pcmk_strerror(rc)); if (op_reply) { crm_log_xml_err(op_reply, "Invalid reply"); } @@ -161,7 +161,7 @@ cib_native_perform_op_delegate(cib_t *cib, const char *op, const char *host, done: if (!crm_ipc_connected(native->ipc)) { - crm_err("The CIB manager disconnected"); + pcmk__err("The CIB manager disconnected"); cib->state = cib_disconnected; } @@ -182,7 +182,7 @@ cib_native_dispatch_internal(const char *buffer, ssize_t length, crm_trace("dispatching %p", userdata); if (cib == NULL) { - crm_err("No CIB!"); + pcmk__err("No CIB!"); return 0; } @@ -205,7 +205,7 @@ cib_native_dispatch_internal(const char *buffer, ssize_t length, g_list_foreach(cib->notify_list, cib_native_notify, msg); } else { - crm_err("Unknown message type: %s", type); + pcmk__err("Unknown message type: %s", type); } pcmk__xml_free(msg); @@ -403,7 +403,7 @@ cib_native_set_connection_dnotify(cib_t *cib, cib_native_opaque_t *native = NULL; if (cib == NULL) { - crm_err("No CIB!"); + pcmk__err("No CIB!"); return FALSE; } diff --git a/lib/cib/cib_ops.c b/lib/cib/cib_ops.c index be0bfa6082d..28a71312980 100644 --- a/lib/cib/cib_ops.c +++ b/lib/cib/cib_ops.c @@ -159,7 +159,7 @@ cib__get_operation(const char *op, const cib__operation_t **operation) *operation = g_hash_table_lookup(operation_table, op); if (*operation == NULL) { - crm_err("Operation %s is invalid", op); + pcmk__err("Operation %s is invalid", op); return EINVAL; } return pcmk_rc_ok; @@ -204,7 +204,7 @@ cib_process_query(const char *op, int options, const char *section, xmlNode * re } if (result == pcmk_ok && *answer == NULL) { - crm_err("Error creating query response"); + pcmk__err("Error creating query response"); result = -ENOMSG; } @@ -346,8 +346,9 @@ cib_process_replace(const char *op, int options, const char *section, xmlNode * char *digest_verify = pcmk__digest_xml(input, true); if (!pcmk__str_eq(digest_verify, digest, pcmk__str_casei)) { - crm_err("Digest mis-match on replace from %s: %s vs. %s (expected)", peer, - digest_verify, digest); + pcmk__err("Digest mis-match on replace from %s: %s vs. %s " + "(expected)", + peer, digest_verify, digest); reason = "digest mismatch"; } else { @@ -436,7 +437,7 @@ cib_process_delete(const char *op, int options, const char *section, xmlNode * r } if (input == NULL) { - crm_err("Cannot perform modification with no data"); + pcmk__err("Cannot perform modification with no data"); return -EINVAL; } @@ -465,7 +466,7 @@ cib_process_modify(const char *op, int options, const char *section, xmlNode * r } if (input == NULL) { - crm_err("Cannot perform modification with no data"); + pcmk__err("Cannot perform modification with no data"); return -EINVAL; } @@ -598,7 +599,7 @@ cib_process_create(const char *op, int options, const char *section, xmlNode * r CRM_CHECK(strcmp(op, PCMK__CIB_REQUEST_CREATE) == 0, return -EINVAL); if (input == NULL) { - crm_err("Cannot perform modification with no data"); + pcmk__err("Cannot perform modification with no data"); return -EINVAL; } diff --git a/lib/cib/cib_remote.c b/lib/cib/cib_remote.c index ec7e1ac71eb..e5ab4311d78 100644 --- a/lib/cib/cib_remote.c +++ b/lib/cib/cib_remote.c @@ -75,7 +75,7 @@ cib_remote_perform_op(cib_t *cib, const char *op, const char *host, } if (op == NULL) { - crm_err("No operation specified"); + pcmk__err("No operation specified"); return -EINVAL; } @@ -139,7 +139,8 @@ cib_remote_perform_op(cib_t *cib, const char *op, const char *host, crm_debug("Received old reply: %d (wanted %d)", reply_id, msg_id); crm_log_xml_trace(op_reply, "Old reply"); } else { - crm_err("Received a __future__ reply:" " %d (wanted %d)", reply_id, msg_id); + pcmk__err("Received a __future__ reply:" " %d (wanted %d)", + reply_id, msg_id); } pcmk__xml_free(op_reply); @@ -150,10 +151,10 @@ cib_remote_perform_op(cib_t *cib, const char *op, const char *host, } if (rc == ENOTCONN) { - crm_err("Disconnected while waiting for reply."); + pcmk__err("Disconnected while waiting for reply"); return -ENOTCONN; } else if (op_reply == NULL) { - crm_err("No reply message - empty"); + pcmk__err("No reply message - empty"); return -ENOMSG; } @@ -173,7 +174,7 @@ cib_remote_perform_op(cib_t *cib, const char *op, const char *host, crm_log_xml_debug(op_reply, "passed"); } else { - crm_err("Call failed: %s", pcmk_strerror(rc)); + pcmk__err("Call failed: %s", pcmk_strerror(rc)); crm_log_xml_warn(op_reply, "failed"); } @@ -254,7 +255,7 @@ cib_remote_callback_dispatch(gpointer user_data) } else if (pcmk__str_eq(type, PCMK__VALUE_CIB_NOTIFY, pcmk__str_none)) { g_list_foreach(cib->notify_list, cib_native_notify, msg); } else { - crm_err("Unknown message type: %s", type); + pcmk__err("Unknown message type: %s", type); } pcmk__xml_free(msg); @@ -289,7 +290,7 @@ cib_remote_command_dispatch(gpointer user_data) free(private->command.buffer); private->command.buffer = NULL; - crm_err("received late reply for remote cib connection, discarding"); + pcmk__err("Received late reply for remote cib connection, discarding"); if (rc != pcmk_rc_ok) { crm_info("Error reading from CIB manager connection: %s", @@ -345,7 +346,7 @@ cib_tls_close(cib_t *cib) static void cib_remote_connection_destroy(gpointer user_data) { - crm_err("Connection destroyed"); + pcmk__err("Connection destroyed"); cib_tls_close(user_data); } @@ -393,9 +394,11 @@ cib_tls_signon(cib_t *cib, pcmk__remote_t *connection, gboolean event_channel) rc = pcmk__tls_client_handshake(connection, TLS_HANDSHAKE_TIMEOUT, &tls_rc); if (rc != pcmk_rc_ok) { - crm_err("Remote CIB session creation for %s:%d failed: %s", - private->server, private->port, - (rc == EPROTO)? gnutls_strerror(tls_rc) : pcmk_rc_str(rc)); + const bool proto_err = (rc == EPROTO); + + pcmk__err("Remote CIB session creation for %s:%d failed: %s", + private->server, private->port, + (proto_err? gnutls_strerror(tls_rc) : pcmk_rc_str(rc))); gnutls_deinit(connection->tls_session); connection->tls_session = NULL; cib_tls_close(cib); @@ -437,7 +440,7 @@ cib_tls_signon(cib_t *cib, pcmk__remote_t *connection, gboolean event_channel) const char *tmp_ticket = pcmk__xe_get(answer, PCMK__XA_CIB_CLIENTID); if (!pcmk__str_eq(msg_type, CRM_OP_REGISTER, pcmk__str_casei)) { - crm_err("Invalid registration message: %s", msg_type); + pcmk__err("Invalid registration message: %s", msg_type); rc = -EPROTO; } else if (tmp_ticket == NULL) { diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c index 9c28128c75d..6eb594d1afa 100644 --- a/lib/cib/cib_utils.c +++ b/lib/cib/cib_utils.c @@ -81,7 +81,7 @@ cib__get_notify_patchset(const xmlNode *msg, const xmlNode **patchset) *patchset = NULL; if (msg == NULL) { - crm_err("CIB diff notification received with no XML"); + pcmk__err("CIB diff notification received with no XML"); return ENOMSG; } @@ -98,7 +98,7 @@ cib__get_notify_patchset(const xmlNode *msg, const xmlNode **patchset) *patchset = pcmk__xe_first_child(wrapper, NULL, NULL, NULL); if (*patchset == NULL) { - crm_err("CIB diff notification received with no patchset"); + pcmk__err("CIB diff notification received with no patchset"); return ENOMSG; } return pcmk_rc_ok; @@ -378,8 +378,9 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, rc = pcmk__check_feature_set(new_version); if (rc != pcmk_rc_ok) { - crm_err("Discarding update with feature set '%s' greater than " - "our own '%s'", new_version, CRM_FEATURE_SET); + pcmk__err("Discarding update with feature set '%s' greater than " + "our own '%s'", + new_version, CRM_FEATURE_SET); rc = pcmk_rc2legacy(rc); goto done; } @@ -393,8 +394,8 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, pcmk__xe_get_int(patchset_cib, PCMK_XA_ADMIN_EPOCH, &old); if (old > new) { - crm_err("%s went backwards: %d -> %d (Opts: %#x)", - PCMK_XA_ADMIN_EPOCH, old, new, call_options); + pcmk__err("%s went backwards: %d -> %d (Opts: %#x)", + PCMK_XA_ADMIN_EPOCH, old, new, call_options); crm_log_xml_warn(req, "Bad Op"); crm_log_xml_warn(input, "Bad Data"); rc = -pcmk_err_old_data; @@ -403,8 +404,8 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, pcmk__xe_get_int(scratch, PCMK_XA_EPOCH, &new); pcmk__xe_get_int(patchset_cib, PCMK_XA_EPOCH, &old); if (old > new) { - crm_err("%s went backwards: %d -> %d (Opts: %#x)", - PCMK_XA_EPOCH, old, new, call_options); + pcmk__err("%s went backwards: %d -> %d (Opts: %#x)", + PCMK_XA_EPOCH, old, new, call_options); crm_log_xml_warn(req, "Bad Op"); crm_log_xml_warn(input, "Bad Data"); rc = -pcmk_err_old_data; @@ -461,10 +462,10 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, NULL); pcmk__xml_write_temp_file(local_diff, "PatchApply:diff", NULL); - crm_err("v%d patchset error, patch failed to apply: %s " - "(%d)", - format, pcmk_rc_str(pcmk_legacy2rc(test_rc)), - test_rc); + pcmk__err("v%d patchset error, patch failed to apply: %s " + "(%d)", + format, pcmk_rc_str(pcmk_legacy2rc(test_rc)), + test_rc); } pcmk__xml_free(cib_copy); }, @@ -619,14 +620,14 @@ validate_transaction_request(const xmlNode *request) } if (!pcmk__is_set(operation->flags, cib__op_attr_transaction)) { - crm_err("Operation %s is not supported in CIB transactions", op); + pcmk__err("Operation %s is not supported in CIB transactions", op); return EOPNOTSUPP; } if (host != NULL) { - crm_err("Operation targeting a specific node (%s) is not supported in " - "a CIB transaction", - host); + pcmk__err("Operation targeting a specific node (%s) is not supported " + "in a CIB transaction", + host); return EOPNOTSUPP; } return pcmk_rc_ok; @@ -662,8 +663,9 @@ cib__extend_transaction(cib_t *cib, xmlNode *request) const char *client_id = NULL; cib->cmds->client_id(cib, NULL, &client_id); - crm_err("Failed to add '%s' operation to transaction for client %s: %s", - op, pcmk__s(client_id, "(unidentified)"), pcmk_rc_str(rc)); + pcmk__err("Failed to add '%s' operation to transaction for client %s: " + "%s", + op, pcmk__s(client_id, "(unidentified)"), pcmk_rc_str(rc)); crm_log_xml_info(request, "failed"); } return pcmk_rc2legacy(rc); @@ -863,7 +865,7 @@ cib_apply_patch_event(xmlNode *event, xmlNode *input, xmlNode **output, if (out != NULL) { \ out->err(out, fmt, ##args); \ } else { \ - crm_err(fmt, ##args); \ + pcmk__err(fmt, ##args); \ } \ } while (0) diff --git a/lib/cluster/cluster.c b/lib/cluster/cluster.c index e296c51a6f5..69bcc6da82d 100644 --- a/lib/cluster/cluster.c +++ b/lib/cluster/cluster.c @@ -64,8 +64,8 @@ pcmk__cluster_get_xml_id(pcmk__node_status_t *node) #endif // SUPPORT_COROSYNC default: - crm_err("Unsupported cluster layer %s", - pcmk_cluster_layer_text(cluster_layer)); + pcmk__err("Unsupported cluster layer %s", + pcmk_cluster_layer_text(cluster_layer)); return NULL; } } @@ -101,8 +101,8 @@ pcmk_cluster_connect(pcmk_cluster_t *cluster) break; } - crm_err("Failed to connect to unsupported cluster layer %s", - cluster_layer_s); + pcmk__err("Failed to connect to unsupported cluster layer %s", + cluster_layer_s); return EPROTONOSUPPORT; } @@ -133,8 +133,8 @@ pcmk_cluster_disconnect(pcmk_cluster_t *cluster) break; } - crm_err("Failed to disconnect from unsupported cluster layer %s", - cluster_layer_s); + pcmk__err("Failed to disconnect from unsupported cluster layer %s", + cluster_layer_s); return EPROTONOSUPPORT; } @@ -252,7 +252,7 @@ pcmk__cluster_node_name(uint32_t nodeid) #endif // SUPPORT_COROSYNC default: - crm_err("Unsupported cluster layer: %s", cluster_layer_s); + pcmk__err("Unsupported cluster layer: %s", cluster_layer_s); break; } @@ -265,7 +265,7 @@ pcmk__cluster_node_name(uint32_t nodeid) if (uname(&hostinfo) < 0) { // @TODO Maybe let the caller decide what to do - crm_err("Failed to get the local hostname"); + pcmk__err("Failed to get the local hostname"); crm_exit(CRM_EX_FATAL); } return pcmk__str_copy(hostinfo.nodename); @@ -365,7 +365,7 @@ pcmk_cluster_layer_text(enum pcmk_cluster_layer layer) case pcmk_cluster_layer_invalid: return "invalid"; default: - crm_err("Invalid cluster layer: %d", layer); + pcmk__err("Invalid cluster layer: %d", layer); return "invalid"; } } @@ -463,7 +463,7 @@ name_for_cluster_type(enum cluster_type_e type) case pcmk_cluster_invalid: return "invalid"; } - crm_err("Invalid cluster type: %d", type); + pcmk__err("Invalid cluster type: %d", type); return "invalid"; } diff --git a/lib/cluster/corosync.c b/lib/cluster/corosync.c index 20e6b4e23b1..830ef30d97e 100644 --- a/lib/cluster/corosync.c +++ b/lib/cluster/corosync.c @@ -143,22 +143,22 @@ pcmk__corosync_name(uint64_t /*cmap_handle_t */ cmap_handle, uint32_t nodeid) rc = cmap_fd_get(cmap_handle, &fd); if (rc != CS_OK) { - crm_err("Could not obtain the CMAP API connection: %s (%d)", - cs_strerror(rc), rc); + pcmk__err("Could not obtain the CMAP API connection: %s (%d)", + cs_strerror(rc), rc); goto bail; } /* CMAP provider run as root (in given user namespace, anyway)? */ if (!(rv = crm_ipc_is_authentic_process(fd, (uid_t) 0,(gid_t) 0, &found_pid, &found_uid, &found_gid))) { - crm_err("CMAP provider is not authentic:" - " process %lld (uid: %lld, gid: %lld)", - (long long) PCMK__SPECIAL_PID_AS_0(found_pid), - (long long) found_uid, (long long) found_gid); + pcmk__err("CMAP provider is not authentic: process %lld " + "(uid: %lld, gid: %lld)", + (long long) PCMK__SPECIAL_PID_AS_0(found_pid), + (long long) found_uid, (long long) found_gid); goto bail; } else if (rv < 0) { - crm_err("Could not verify authenticity of CMAP provider: %s (%d)", - strerror(-rv), -rv); + pcmk__err("Could not verify authenticity of CMAP provider: %s (%d)", + strerror(-rv), -rv); goto bail; } } @@ -245,7 +245,7 @@ quorum_dispatch_cb(gpointer user_data) int rc = quorum_dispatch(pcmk_quorum_handle, CS_DISPATCH_ALL); if (rc < 0) { - crm_err("Connection to the Quorum API failed: %d", rc); + pcmk__err("Connection to the Quorum API failed: %d", rc); quorum_finalize(pcmk_quorum_handle); pcmk_quorum_handle = 0; return -1; @@ -385,41 +385,41 @@ pcmk__corosync_quorum_connect(gboolean (*dispatch)(unsigned long long, } if (rc != CS_OK) { - crm_err("Could not connect to the Quorum API: %s (%d)", - cs_strerror(rc), rc); + pcmk__err("Could not connect to the Quorum API: %s (%d)", + cs_strerror(rc), rc); goto bail; } else if (quorum_type != QUORUM_SET) { - crm_err("Corosync quorum is not configured"); + pcmk__err("Corosync quorum is not configured"); goto bail; } rc = quorum_fd_get(pcmk_quorum_handle, &fd); if (rc != CS_OK) { - crm_err("Could not obtain the Quorum API connection: %s (%d)", - strerror(rc), rc); + pcmk__err("Could not obtain the Quorum API connection: %s (%d)", + strerror(rc), rc); goto bail; } /* Quorum provider run as root (in given user namespace, anyway)? */ if (!(rv = crm_ipc_is_authentic_process(fd, (uid_t) 0,(gid_t) 0, &found_pid, &found_uid, &found_gid))) { - crm_err("Quorum provider is not authentic:" - " process %lld (uid: %lld, gid: %lld)", - (long long) PCMK__SPECIAL_PID_AS_0(found_pid), - (long long) found_uid, (long long) found_gid); + pcmk__err("Quorum provider is not authentic: process %lld " + "(uid: %lld, gid: %lld)", + (long long) PCMK__SPECIAL_PID_AS_0(found_pid), + (long long) found_uid, (long long) found_gid); rc = CS_ERR_ACCESS; goto bail; } else if (rv < 0) { - crm_err("Could not verify authenticity of Quorum provider: %s (%d)", - strerror(-rv), -rv); + pcmk__err("Could not verify authenticity of Quorum provider: %s (%d)", + strerror(-rv), -rv); rc = CS_ERR_ACCESS; goto bail; } rc = quorum_getquorate(pcmk_quorum_handle, &quorate); if (rc != CS_OK) { - crm_err("Could not obtain the current Quorum API state: %d", rc); + pcmk__err("Could not obtain the current Quorum API state: %d", rc); goto bail; } @@ -433,7 +433,7 @@ pcmk__corosync_quorum_connect(gboolean (*dispatch)(unsigned long long, rc = quorum_trackstart(pcmk_quorum_handle, CS_TRACK_CHANGES | CS_TRACK_CURRENT); if (rc != CS_OK) { - crm_err("Could not setup Quorum API notifications: %d", rc); + pcmk__err("Could not setup Quorum API notifications: %d", rc); goto bail; } @@ -466,8 +466,8 @@ pcmk__corosync_connect(pcmk_cluster_t *cluster) pcmk__cluster_init_node_caches(); if (cluster_layer != pcmk_cluster_layer_corosync) { - crm_err("Invalid cluster layer: %s " QB_XS " cluster_layer=%d", - cluster_layer_s, cluster_layer); + pcmk__err("Invalid cluster layer: %s " QB_XS " cluster_layer=%d", + cluster_layer_s, cluster_layer); return EINVAL; } @@ -480,13 +480,13 @@ pcmk__corosync_connect(pcmk_cluster_t *cluster) cluster->priv->node_id = pcmk__cpg_local_nodeid(0); if (cluster->priv->node_id == 0) { - crm_err("Could not determine local node ID"); + pcmk__err("Could not determine local node ID"); return ENXIO; } cluster->priv->node_name = pcmk__cluster_node_name(0); if (cluster->priv->node_name == NULL) { - crm_err("Could not determine local node name"); + pcmk__err("Could not determine local node name"); return ENXIO; } @@ -591,22 +591,22 @@ pcmk__corosync_add_nodes(xmlNode *xml_parent) rc = cmap_fd_get(cmap_handle, &fd); if (rc != CS_OK) { - crm_err("Could not obtain the CMAP API connection: %s (%d)", - cs_strerror(rc), rc); + pcmk__err("Could not obtain the CMAP API connection: %s (%d)", + cs_strerror(rc), rc); goto bail; } /* CMAP provider run as root (in given user namespace, anyway)? */ if (!(rv = crm_ipc_is_authentic_process(fd, (uid_t) 0,(gid_t) 0, &found_pid, &found_uid, &found_gid))) { - crm_err("CMAP provider is not authentic:" - " process %lld (uid: %lld, gid: %lld)", - (long long) PCMK__SPECIAL_PID_AS_0(found_pid), - (long long) found_uid, (long long) found_gid); + pcmk__err("CMAP provider is not authentic: process %lld " + "(uid: %lld, gid: %lld)", + (long long) PCMK__SPECIAL_PID_AS_0(found_pid), + (long long) found_uid, (long long) found_gid); goto bail; } else if (rv < 0) { - crm_err("Could not verify authenticity of CMAP provider: %s (%d)", - strerror(-rv), -rv); + pcmk__err("Could not verify authenticity of CMAP provider: %s (%d)", + strerror(-rv), -rv); goto bail; } @@ -695,22 +695,22 @@ pcmk__corosync_cluster_name(void) rc = cmap_fd_get(handle, &fd); if (rc != CS_OK) { - crm_err("Could not obtain the CMAP API connection: %s (%d)", - cs_strerror(rc), rc); + pcmk__err("Could not obtain the CMAP API connection: %s (%d)", + cs_strerror(rc), rc); goto bail; } /* CMAP provider run as root (in given user namespace, anyway)? */ if (!(rv = crm_ipc_is_authentic_process(fd, (uid_t) 0,(gid_t) 0, &found_pid, &found_uid, &found_gid))) { - crm_err("CMAP provider is not authentic:" - " process %lld (uid: %lld, gid: %lld)", - (long long) PCMK__SPECIAL_PID_AS_0(found_pid), - (long long) found_uid, (long long) found_gid); + pcmk__err("CMAP provider is not authentic: process %lld " + "(uid: %lld, gid: %lld)", + (long long) PCMK__SPECIAL_PID_AS_0(found_pid), + (long long) found_uid, (long long) found_gid); goto bail; } else if (rv < 0) { - crm_err("Could not verify authenticity of CMAP provider: %s (%d)", - strerror(-rv), -rv); + pcmk__err("Could not verify authenticity of CMAP provider: %s (%d)", + strerror(-rv), -rv); goto bail; } diff --git a/lib/cluster/cpg.c b/lib/cluster/cpg.c index d1208b9b6ba..01ddc8f0a9f 100644 --- a/lib/cluster/cpg.c +++ b/lib/cluster/cpg.c @@ -127,15 +127,15 @@ pcmk__cpg_local_nodeid(cpg_handle_t handle) (cpg_model_data_t *) &cpg_model_info, NULL)); if (rc != CS_OK) { - crm_err("Could not connect to the CPG API: %s (%d)", - cs_strerror(rc), rc); + pcmk__err("Could not connect to the CPG API: %s (%d)", + cs_strerror(rc), rc); return 0; } rc = cpg_fd_get(local_handle, &fd); if (rc != CS_OK) { - crm_err("Could not obtain the CPG API connection: %s (%d)", - cs_strerror(rc), rc); + pcmk__err("Could not obtain the CPG API connection: %s (%d)", + cs_strerror(rc), rc); goto bail; } @@ -143,15 +143,15 @@ pcmk__cpg_local_nodeid(cpg_handle_t handle) rv = crm_ipc_is_authentic_process(fd, (uid_t) 0, (gid_t) 0, &found_pid, &found_uid, &found_gid); if (rv == 0) { - crm_err("CPG provider is not authentic:" - " process %lld (uid: %lld, gid: %lld)", - (long long) PCMK__SPECIAL_PID_AS_0(found_pid), - (long long) found_uid, (long long) found_gid); + pcmk__err("CPG provider is not authentic: process %lld " + "(uid: %lld, gid: %lld)", + (long long) PCMK__SPECIAL_PID_AS_0(found_pid), + (long long) found_uid, (long long) found_gid); goto bail; } else if (rv < 0) { - crm_err("Could not verify authenticity of CPG provider: %s (%d)", - strerror(-rv), -rv); + pcmk__err("Could not verify authenticity of CPG provider: %s (%d)", + strerror(-rv), -rv); goto bail; } } @@ -163,8 +163,8 @@ pcmk__cpg_local_nodeid(cpg_handle_t handle) } if (rc != CS_OK) { - crm_err("Could not get local node id from the CPG API: %s (%d)", - pcmk__cs_err_str(rc), rc); + pcmk__err("Could not get local node id from the CPG API: %s (%d)", + pcmk__cs_err_str(rc), rc); } bail: @@ -216,7 +216,7 @@ crm_cs_flush(gpointer data) queue_len = g_list_length(cs_message_queue); if (((queue_len % 1000) == 0) && (queue_len > 1)) { - crm_err("CPG queue has grown to %d", queue_len); + pcmk__err("CPG queue has grown to %d", queue_len); } else if (queue_len == CS_SEND_MAX) { crm_warn("CPG queue has grown to %d", queue_len); @@ -276,14 +276,14 @@ pcmk_cpg_dispatch(gpointer user_data) rc = cpg_dispatch(cluster->priv->cpg_handle, CS_DISPATCH_ONE); if (rc != CS_OK) { - crm_err("Connection to the CPG API failed: %s (%d)", - pcmk__cs_err_str(rc), rc); + pcmk__err("Connection to the CPG API failed: %s (%d)", + pcmk__cs_err_str(rc), rc); cpg_finalize(cluster->priv->cpg_handle); cluster->priv->cpg_handle = 0; return -1; } else if (cpg_evicted) { - crm_err("Evicted from CPG membership"); + pcmk__err("Evicted from CPG membership"); return -1; } return 0; @@ -317,38 +317,36 @@ check_message_sanity(const pcmk__cpg_msg_t *msg) int32_t payload_size = msg->header.size - sizeof(pcmk__cpg_msg_t); if (payload_size < 1) { - crm_err("%sCPG message %d from %s invalid: " - "Claimed size of %d bytes is too small " - QB_XS " from %s[%u] to %s@%s", - (msg->is_compressed? "Compressed " : ""), - msg->id, ais_dest(&(msg->sender)), - (int) msg->header.size, - msg_type2text(msg->sender.type), msg->sender.pid, - msg_type2text(msg->host.type), ais_dest(&(msg->host))); + pcmk__err("%sCPG message %d from %s invalid: Claimed size of %d bytes " + "is too small " QB_XS " from %s[%u] to %s@%s", + (msg->is_compressed? "Compressed " : ""), + msg->id, ais_dest(&(msg->sender)), + (int) msg->header.size, + msg_type2text(msg->sender.type), msg->sender.pid, + msg_type2text(msg->host.type), ais_dest(&(msg->host))); return false; } if (msg->header.error != CS_OK) { - crm_err("%sCPG message %d from %s invalid: " - "Sender indicated error %d " - QB_XS " from %s[%u] to %s@%s", - (msg->is_compressed? "Compressed " : ""), - msg->id, ais_dest(&(msg->sender)), - msg->header.error, - msg_type2text(msg->sender.type), msg->sender.pid, - msg_type2text(msg->host.type), ais_dest(&(msg->host))); + pcmk__err("%sCPG message %d from %s invalid: Sender indicated error %d " + QB_XS " from %s[%u] to %s@%s", + (msg->is_compressed? "Compressed " : ""), + msg->id, ais_dest(&(msg->sender)), + msg->header.error, + msg_type2text(msg->sender.type), msg->sender.pid, + msg_type2text(msg->host.type), ais_dest(&(msg->host))); return false; } if (msg_data_len(msg) != payload_size) { - crm_err("%sCPG message %d from %s invalid: " - "Total size %d inconsistent with payload size %d " - QB_XS " from %s[%u] to %s@%s", - (msg->is_compressed? "Compressed " : ""), - msg->id, ais_dest(&(msg->sender)), - (int) msg->header.size, (int) msg_data_len(msg), - msg_type2text(msg->sender.type), msg->sender.pid, - msg_type2text(msg->host.type), ais_dest(&(msg->host))); + pcmk__err("%sCPG message %d from %s invalid: Total size %d " + "inconsistent with payload size %d " + QB_XS " from %s[%u] to %s@%s", + (msg->is_compressed? "Compressed " : ""), + msg->id, ais_dest(&(msg->sender)), + (int) msg->header.size, (int) msg_data_len(msg), + msg_type2text(msg->sender.type), msg->sender.pid, + msg_type2text(msg->host.type), ais_dest(&(msg->host))); return false; } @@ -358,12 +356,11 @@ check_message_sanity(const pcmk__cpg_msg_t *msg) */ (((msg->size > 1) && (msg->data[msg->size - 2] == '\0')) || (msg->data[msg->size - 1] != '\0'))) { - crm_err("CPG message %d from %s invalid: " - "Payload does not end at byte %" PRIu32 " " - QB_XS " from %s[%u] to %s@%s", - msg->id, ais_dest(&(msg->sender)), msg->size, - msg_type2text(msg->sender.type), msg->sender.pid, - msg_type2text(msg->host.type), ais_dest(&(msg->host))); + pcmk__err("CPG message %d from %s invalid: Payload does not end at " + "byte %" PRIu32 " " QB_XS " from %s[%u] to %s@%s", + msg->id, ais_dest(&(msg->sender)), msg->size, + msg_type2text(msg->sender.type), msg->sender.pid, + msg_type2text(msg->host.type), ais_dest(&(msg->host))); return false; } @@ -725,7 +722,7 @@ pcmk__cpg_confchg_cb(cpg_handle_t handle, } if (!found) { - crm_err("Local node was evicted from group %s", group_name->value); + pcmk__err("Local node was evicted from group %s", group_name->value); cpg_evicted = true; } @@ -822,37 +819,37 @@ pcmk__cpg_connect(pcmk_cluster_t *cluster) cs_repeat(rc, retries, 30, cpg_model_initialize(&handle, CPG_MODEL_V1, (cpg_model_data_t *)&cpg_model_info, NULL)); if (rc != CS_OK) { - crm_err("Could not connect to the CPG API: %s (%d)", - cs_strerror(rc), rc); + pcmk__err("Could not connect to the CPG API: %s (%d)", + cs_strerror(rc), rc); goto bail; } rc = cpg_fd_get(handle, &fd); if (rc != CS_OK) { - crm_err("Could not obtain the CPG API connection: %s (%d)", - cs_strerror(rc), rc); + pcmk__err("Could not obtain the CPG API connection: %s (%d)", + cs_strerror(rc), rc); goto bail; } /* CPG provider run as root (in given user namespace, anyway)? */ if (!(rv = crm_ipc_is_authentic_process(fd, (uid_t) 0,(gid_t) 0, &found_pid, &found_uid, &found_gid))) { - crm_err("CPG provider is not authentic:" - " process %lld (uid: %lld, gid: %lld)", - (long long) PCMK__SPECIAL_PID_AS_0(found_pid), - (long long) found_uid, (long long) found_gid); + pcmk__err("CPG provider is not authentic: process %lld " + "(uid: %lld, gid: %lld)", + (long long) PCMK__SPECIAL_PID_AS_0(found_pid), + (long long) found_uid, (long long) found_gid); rc = CS_ERR_ACCESS; goto bail; } else if (rv < 0) { - crm_err("Could not verify authenticity of CPG provider: %s (%d)", - strerror(-rv), -rv); + pcmk__err("Could not verify authenticity of CPG provider: %s (%d)", + strerror(-rv), -rv); rc = CS_ERR_ACCESS; goto bail; } id = pcmk__cpg_local_nodeid(handle); if (id == 0) { - crm_err("Could not get local node id from the CPG API"); + pcmk__err("Could not get local node id from the CPG API"); goto bail; } @@ -861,7 +858,7 @@ pcmk__cpg_connect(pcmk_cluster_t *cluster) retries = 0; cs_repeat(rc, retries, 30, cpg_join(handle, &cluster->priv->group)); if (rc != CS_OK) { - crm_err("Could not join the CPG group '%s': %d", cpg_group_name, rc); + pcmk__err("Could not join the CPG group '%s': %d", cpg_group_name, rc); goto bail; } diff --git a/lib/cluster/election.c b/lib/cluster/election.c index b3c2c7fd249..f7855db0d77 100644 --- a/lib/cluster/election.c +++ b/lib/cluster/election.c @@ -285,7 +285,7 @@ election_vote(pcmk_cluster_t *cluster) CRM_CHECK((cluster != NULL) && (cluster->priv->election != NULL), return); if (cluster->priv->node_name == NULL) { - crm_err("Cannot start an election: Local node name unknown"); + pcmk__err("Cannot start an election: Local node name unknown"); return; } diff --git a/lib/cluster/membership.c b/lib/cluster/membership.c index 269c11d0321..acb9f5ef6eb 100644 --- a/lib/cluster/membership.c +++ b/lib/cluster/membership.c @@ -390,8 +390,8 @@ pcmk__cluster_is_node_active(const pcmk__node_status_t *node) break; } - crm_err("Unhandled cluster layer: %s", - pcmk_cluster_layer_text(cluster_layer)); + pcmk__err("Unhandled cluster layer: %s", + pcmk_cluster_layer_text(cluster_layer)); return false; } @@ -1038,9 +1038,10 @@ static void update_peer_uname(pcmk__node_status_t *node, const char *uname) { CRM_CHECK(uname != NULL, - crm_err("Bug: can't update node name without name"); return); + pcmk__err("Bug: can't update node name without name"); return); CRM_CHECK(node != NULL, - crm_err("Bug: can't update node name to %s without node", uname); + pcmk__err("Bug: can't update node name to %s without node", + uname); return); if (pcmk__str_eq(uname, node->name, pcmk__str_casei)) { @@ -1118,9 +1119,10 @@ crm_update_peer_proc(const char *source, pcmk__node_status_t *node, uint32_t last = 0; gboolean changed = FALSE; - CRM_CHECK(node != NULL, crm_err("%s: Could not set %s to %s for NULL", - source, proc2text(flag), status); - return NULL); + CRM_CHECK(node != NULL, + pcmk__err("%s: Could not set %s to %s for NULL", source, + proc2text(flag), status); + return NULL); /* Pacemaker doesn't spawn processes on remote nodes */ if (pcmk__is_set(node->flags, pcmk__node_status_remote)) { @@ -1215,7 +1217,8 @@ pcmk__update_peer_expected(const char *source, pcmk__node_status_t *node, char *last = NULL; gboolean changed = FALSE; - CRM_CHECK(node != NULL, crm_err("%s: Could not set 'expected' to %s", source, expected); + CRM_CHECK(node != NULL, + pcmk__err("%s: Could not set 'expected' to %s", source, expected); return); /* Remote nodes don't participate in joins */ @@ -1263,8 +1266,9 @@ update_peer_state_iter(const char *source, pcmk__node_status_t *node, gboolean is_member; CRM_CHECK(node != NULL, - crm_err("Could not set state for unknown host to %s " - QB_XS " source=%s", state, source); + pcmk__err("Could not set state for unknown host to %s " + QB_XS " source=%s", + state, source); return NULL); is_member = pcmk__str_eq(state, PCMK_VALUE_MEMBER, pcmk__str_none); diff --git a/lib/common/acl.c b/lib/common/acl.c index a004efd1ef8..13ba6dfd6a5 100644 --- a/lib/common/acl.c +++ b/lib/common/acl.c @@ -852,7 +852,8 @@ pcmk__update_acl_user(xmlNode *request, const char *field, effective_user = pcmk__uid2username(geteuid()); if (effective_user == NULL) { effective_user = pcmk__str_copy("#unprivileged"); - crm_err("Unable to determine effective user, assuming unprivileged for ACLs"); + pcmk__err("Unable to determine effective user, assuming " + "unprivileged for ACLs"); } } diff --git a/lib/common/actions.c b/lib/common/actions.c index 25a9dc4cdf9..7ece426359d 100644 --- a/lib/common/actions.c +++ b/lib/common/actions.c @@ -407,8 +407,8 @@ decode_transition_magic(const char *magic, char **uuid, int *transition_id, int res = sscanf(magic, "%d:%d;%s", &local_op_status, &local_op_rc, key); #endif if (res == EOF) { - crm_err("Could not decode transition information '%s': %s", - magic, pcmk_rc_str(errno)); + pcmk__err("Could not decode transition information '%s': %s", magic, + pcmk_rc_str(errno)); result = FALSE; } else if (res < 3) { crm_warn("Transition information '%s' incomplete (%d of 3 expected items)", @@ -476,7 +476,7 @@ decode_transition_key(const char *key, char **uuid, int *transition_id, int *act CRM_CHECK(key != NULL, return FALSE); if (sscanf(key, "%d:%d:%d:%36s", &local_action_id, &local_transition_id, &local_target_rc, local_uuid) != 4) { - crm_err("Invalid transition key '%s'", key); + pcmk__err("Invalid transition key '%s'", key); return FALSE; } if (strlen(local_uuid) != 36) { diff --git a/lib/common/cib_secrets.c b/lib/common/cib_secrets.c index ad9010ebf5a..44affe84fb3 100644 --- a/lib/common/cib_secrets.c +++ b/lib/common/cib_secrets.c @@ -45,13 +45,13 @@ read_file_trimmed(const char *filename) int rc = pcmk__file_contents(filename, &buf); if (rc != pcmk_rc_ok) { - crm_err("Failed to read %s: %s", filename, pcmk_rc_str(rc)); + pcmk__err("Failed to read %s: %s", filename, pcmk_rc_str(rc)); free(buf); return NULL; } if (buf == NULL) { - crm_err("File %s is empty", filename); + pcmk__err("File %s is empty", filename); return NULL; } @@ -83,9 +83,9 @@ validate_hash(const char *filename, const char *secret_value, stored = read_file_trimmed(filename); if (stored == NULL) { - crm_err("Could not read md5 sum for resource %s parameter '%s' from " - "file '%s'", - rsc_id, param, filename); + pcmk__err("Could not read md5 sum for resource %s parameter '%s' from " + "file '%s'", + rsc_id, param, filename); rc = ENOENT; goto done; } @@ -100,9 +100,9 @@ validate_hash(const char *filename, const char *secret_value, crm_trace("Stored hash: %s, calculated hash: %s", stored, calculated); if (!pcmk__str_eq(stored, calculated, pcmk__str_casei)) { - crm_err("Calculated md5 sum for resource %s parameter '%s' does not " - "match stored md5 sum", - rsc_id, param); + pcmk__err("Calculated md5 sum for resource %s parameter '%s' does not " + "match stored md5 sum", + rsc_id, param); rc = pcmk_rc_cib_corrupt; } @@ -169,9 +169,9 @@ pcmk__substitute_secrets(const char *rsc_id, GHashTable *params) g_string_append(filename, param); secret_value = read_file_trimmed(filename->str); if (secret_value == NULL) { - crm_err("Secret value for resource %s parameter '%s' not found in " - PCMK__CIB_SECRETS_DIR, - rsc_id, param); + pcmk__err("Secret value for resource %s parameter '%s' not found " + "in " PCMK__CIB_SECRETS_DIR, + rsc_id, param); rc = ENOENT; continue; } diff --git a/lib/common/digest.c b/lib/common/digest.c index 690a1f16ecd..38e0b49c847 100644 --- a/lib/common/digest.c +++ b/lib/common/digest.c @@ -103,7 +103,7 @@ pcmk__md5sum(const char *input) checksum_g = g_compute_checksum_for_string(G_CHECKSUM_MD5, input, -1); if (checksum_g == NULL) { - crm_err("Failed to compute MD5 checksum for %s", input); + pcmk__err("Failed to compute MD5 checksum for %s", input); } checksum = pcmk__str_copy(checksum_g); @@ -268,8 +268,8 @@ pcmk__verify_digest(const xmlNode *input, const char *expected) if (passed) { crm_trace("Digest comparison passed: %s", calculated); } else { - crm_err("Digest comparison failed: expected %s, calculated %s", - expected, calculated); + pcmk__err("Digest comparison failed: expected %s, calculated %s", + expected, calculated); } free(calculated); return passed; @@ -423,7 +423,7 @@ crm_md5sum(const char *buffer) raw_digest = g_compute_checksum_for_string(G_CHECKSUM_MD5, buffer, -1); if (raw_digest == NULL) { - crm_err("Failed to calculate hash"); + pcmk__err("Failed to calculate hash"); return NULL; } diff --git a/lib/common/io.c b/lib/common/io.c index 2f11d436dbc..e311c111c7e 100644 --- a/lib/common/io.c +++ b/lib/common/io.c @@ -204,7 +204,7 @@ pcmk__write_series_sequence(const char *directory, const char *series, } } else { - crm_err("Cannot open series file %s for writing", series_file); + pcmk__err("Cannot open series file %s for writing", series_file); } if (file_strm != NULL) { @@ -342,8 +342,8 @@ pcmk__daemon_can_write(const char *dir, const char *file) target = NULL; } else if (S_ISREG(buf.st_mode) == FALSE) { - crm_err("%s must be a regular file " QB_XS " st_mode=0%lo", - target, (unsigned long) buf.st_mode); + pcmk__err("%s must be a regular file " QB_XS " st_mode=0%lo", + target, (unsigned long) buf.st_mode); free(full_file); return false; } @@ -354,12 +354,12 @@ pcmk__daemon_can_write(const char *dir, const char *file) target = dir; s_res = stat(dir, &buf); if (s_res < 0) { - crm_err("%s not found: %s", dir, pcmk_rc_str(errno)); + pcmk__err("%s not found: %s", dir, pcmk_rc_str(errno)); return false; } else if (S_ISDIR(buf.st_mode) == FALSE) { - crm_err("%s must be a directory " QB_XS " st_mode=0%lo", - dir, (unsigned long) buf.st_mode); + pcmk__err("%s must be a directory " QB_XS " st_mode=0%lo", + dir, (unsigned long) buf.st_mode); return false; } } @@ -367,10 +367,10 @@ pcmk__daemon_can_write(const char *dir, const char *file) if (!pcmk__daemon_user_can_write(target, &buf) && !pcmk__daemon_group_can_write(target, &buf)) { - crm_err("%s must be owned and writable by either user %s or group %s " - QB_XS " st_mode=0%lo", - target, CRM_DAEMON_USER, CRM_DAEMON_GROUP, - (unsigned long) buf.st_mode); + pcmk__err("%s must be owned and writable by either user " + CRM_DAEMON_USER " or group " CRM_DAEMON_GROUP " " + QB_XS " st_mode=0%lo", + target, (unsigned long) buf.st_mode); free(full_file); return false; } diff --git a/lib/common/ipc_client.c b/lib/common/ipc_client.c index 425a04415a3..30632b1ccd4 100644 --- a/lib/common/ipc_client.c +++ b/lib/common/ipc_client.c @@ -563,8 +563,8 @@ pcmk_connect_ipc(pcmk_ipc_api_t *api, enum pcmk_ipc_dispatch dispatch_type) int rc = pcmk__connect_ipc(api, dispatch_type, 2); if (rc != pcmk_rc_ok) { - crm_err("Connection to %s failed: %s", - pcmk_ipc_name(api, true), pcmk_rc_str(rc)); + pcmk__err("Connection to %s failed: %s", pcmk_ipc_name(api, true), + pcmk_rc_str(rc)); } return rc; } @@ -854,22 +854,22 @@ crm_ipc_new(const char *name, size_t max_size) client = calloc(1, sizeof(crm_ipc_t)); if (client == NULL) { - crm_err("Could not create IPC connection: %s", strerror(errno)); + pcmk__err("Could not create IPC connection: %s", strerror(errno)); return NULL; } client->server_name = strdup(name); if (client->server_name == NULL) { - crm_err("Could not create %s IPC connection: %s", - name, strerror(errno)); + pcmk__err("Could not create %s IPC connection: %s", name, + strerror(errno)); free(client); return NULL; } client->buf_size = pcmk__ipc_buffer_size(max_size); client->buffer = malloc(client->buf_size); if (client->buffer == NULL) { - crm_err("Could not create %s IPC connection: %s", - name, strerror(errno)); + pcmk__err("Could not create %s IPC connection: %s", name, + strerror(errno)); free(client->server_name); free(client); return NULL; @@ -1022,8 +1022,8 @@ crm_ipc_get_fd(crm_ipc_t * client) int fd = -1; if (pcmk__ipc_fd(client, &fd) != pcmk_rc_ok) { - crm_err("Could not obtain file descriptor for %s IPC", - ((client == NULL)? "unspecified" : client->server_name)); + pcmk__err("Could not obtain file descriptor for %s IPC", + ((client == NULL)? "unspecified" : client->server_name)); errno = EINVAL; return -EINVAL; } @@ -1099,8 +1099,8 @@ crm_ipc_decompress(crm_ipc_t * client) rc = pcmk__bzlib2rc(rc); if (rc != pcmk_rc_ok) { - crm_err("Decompression failed: %s " QB_XS " rc=%d", - pcmk_rc_str(rc), rc); + pcmk__err("Decompression failed: %s " QB_XS " rc=%d", + pcmk_rc_str(rc), rc); free(uncompressed); return rc; } @@ -1158,7 +1158,7 @@ crm_ipc_read(crm_ipc_t * client) } if (!crm_ipc_connected(client) || client->msg_size == -ENOTCONN) { - crm_err("Connection to %s IPC failed", client->server_name); + pcmk__err("Connection to %s IPC failed", client->server_name); } if (header) { @@ -1223,8 +1223,9 @@ internal_ipc_get_reply(crm_ipc_t *client, int request_id, int ms_timeout, if (*bytes <= 0) { if (!crm_ipc_connected(client)) { - crm_err("%s IPC provider disconnected while waiting for message %d", - client->server_name, request_id); + pcmk__err("%s IPC provider disconnected while waiting for " + "message %d", + client->server_name, request_id); break; } @@ -1246,10 +1247,12 @@ internal_ipc_get_reply(crm_ipc_t *client, int request_id, int ms_timeout, xml = pcmk__xml_parse(crm_ipc_buffer(client)); if (hdr->qb.id < request_id) { - crm_err("Discarding old reply %d (need %d)", hdr->qb.id, request_id); + pcmk__err("Discarding old reply %d (need %d)", hdr->qb.id, + request_id); crm_log_xml_notice(xml, "OldIpcReply"); } else if (hdr->qb.id > request_id) { - crm_err("Discarding newer reply %d (need %d)", hdr->qb.id, request_id); + pcmk__err("Discarding newer reply %d (need %d)", hdr->qb.id, + request_id); crm_log_xml_notice(xml, "ImpossibleReply"); pcmk__assert(hdr->qb.id <= request_id); } @@ -1608,26 +1611,27 @@ pcmk__ipc_is_authentic_process_active(const char *name, uid_t refuid, qb_rc = qb_ipcc_fd_get(c, &fd); if (qb_rc != 0) { rc = (int) -qb_rc; // System errno - crm_err("Could not get fd from %s IPC: %s " QB_XS " rc=%d", - name, pcmk_rc_str(rc), rc); + pcmk__err("Could not get fd from %s IPC: %s " QB_XS " rc=%d", + name, pcmk_rc_str(rc), rc); goto bail; } auth_rc = is_ipc_provider_expected(c, fd, refuid, refgid, &found_pid, &found_uid, &found_gid); if (auth_rc == pcmk_rc_ipc_unauthorized) { - crm_err("Daemon (IPC %s) effectively blocked with unauthorized" - " process %lld (uid: %lld, gid: %lld)", - name, (long long) PCMK__SPECIAL_PID_AS_0(found_pid), - (long long) found_uid, (long long) found_gid); + pcmk__err("Daemon (IPC %s) effectively blocked with unauthorized " + "process %lld (uid: %lld, gid: %lld)", + name, (long long) PCMK__SPECIAL_PID_AS_0(found_pid), + (long long) found_uid, (long long) found_gid); rc = pcmk_rc_ipc_unauthorized; goto bail; } if (auth_rc != pcmk_rc_ok) { rc = auth_rc; - crm_err("Could not get peer credentials from %s IPC: %s " - QB_XS " rc=%d", name, pcmk_rc_str(rc), rc); + pcmk__err("Could not get peer credentials from %s IPC: %s " + QB_XS " rc=%d", + name, pcmk_rc_str(rc), rc); goto bail; } @@ -1678,12 +1682,12 @@ crm_ipc_connect(crm_ipc_t *client) crm_debug("Could not establish %s IPC connection: %s (%d)", client->server_name, pcmk_rc_str(errno), errno); } else if (rc == pcmk_rc_ipc_unauthorized) { - crm_err("%s IPC provider authentication failed", - (client == NULL)? "Pacemaker" : client->server_name); + pcmk__err("%s IPC provider authentication failed", + (client == NULL)? "Pacemaker" : client->server_name); errno = ECONNABORTED; } else { - crm_err("Could not verify authenticity of %s IPC provider", - (client == NULL)? "Pacemaker" : client->server_name); + pcmk__err("Could not verify authenticity of %s IPC provider", + (client == NULL)? "Pacemaker" : client->server_name); errno = ENOTCONN; } return false; diff --git a/lib/common/ipc_common.c b/lib/common/ipc_common.c index df932f670f3..c1a1a16cb76 100644 --- a/lib/common/ipc_common.c +++ b/lib/common/ipc_common.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. * @@ -107,12 +107,13 @@ bool pcmk__valid_ipc_header(const pcmk__ipc_header_t *header) { if (header == NULL) { - crm_err("IPC message without header"); + pcmk__err("IPC message without header"); return false; } else if (header->version > PCMK__IPC_VERSION) { - crm_err("Filtering incompatible v%d IPC message (only versions <= %d supported)", - header->version, PCMK__IPC_VERSION); + pcmk__err("Filtering incompatible v%d IPC message (only versions <= %d " + "supported)", + header->version, PCMK__IPC_VERSION); return false; } return true; diff --git a/lib/common/ipc_controld.c b/lib/common/ipc_controld.c index 28f4b5d82cf..f3fcbff8553 100644 --- a/lib/common/ipc_controld.c +++ b/lib/common/ipc_controld.c @@ -642,10 +642,10 @@ create_hello_message(const char *uuid, const char *client_name, if (pcmk__str_empty(uuid) || pcmk__str_empty(client_name) || pcmk__str_empty(major_version) || pcmk__str_empty(minor_version)) { - crm_err("Could not create IPC hello message from %s (UUID %s): " - "missing information", - client_name? client_name : "unknown client", - uuid? uuid : "unknown"); + pcmk__err("Could not create IPC hello message from %s (UUID %s): " + "missing information", + pcmk__s(client_name, "unknown client"), + pcmk__s(uuid, "unknown")); return NULL; } @@ -663,8 +663,9 @@ create_hello_message(const char *uuid, const char *client_name, free(sender_system); pcmk__xml_free(hello_node); if (hello == NULL) { - crm_err("Could not create IPC hello message from %s (UUID %s): " - "Request creation failed", client_name, uuid); + pcmk__err("Could not create IPC hello message from %s (UUID %s): " + "Request creation failed", + client_name, uuid); return NULL; } diff --git a/lib/common/ipc_server.c b/lib/common/ipc_server.c index 81467034531..375ec7abee8 100644 --- a/lib/common/ipc_server.c +++ b/lib/common/ipc_server.c @@ -169,8 +169,9 @@ client_from_connection(qb_ipcs_connection_t *c, void *key, uid_t uid_client) client->user = pcmk__uid2username(uid_client); if (client->user == NULL) { client->user = pcmk__str_copy("#unprivileged"); - crm_err("Unable to enforce ACLs for user ID %d, assuming unprivileged", - uid_client); + pcmk__err("Unable to enforce ACLs for user ID %d, assuming " + "unprivileged", + uid_client); } client->ipcs = c; pcmk__set_client_flags(client, pcmk__client_ipc); @@ -434,8 +435,8 @@ pcmk__client_data2xml(pcmk__client_t *c, void *data, uint32_t *id, rc = pcmk__bzlib2rc(rc); if (rc != pcmk_rc_ok) { - crm_err("Decompression failed: %s " QB_XS " rc=%d", - pcmk_rc_str(rc), rc); + pcmk__err("Decompression failed: %s " QB_XS " rc=%d", + pcmk_rc_str(rc), rc); free(uncompressed); return NULL; } @@ -556,8 +557,9 @@ crm_ipcs_flush_events(pcmk__client_t *c) crm_warn("Client with process ID %u has a backlog of %u messages " QB_XS " %p", c->pid, queue_len, c->ipcs); } else { - crm_err("Evicting client with process ID %u due to backlog of %u messages " - QB_XS " %p", c->pid, queue_len, c->ipcs); + pcmk__err("Evicting client with process ID %u due to backlog " + "of %u messages " QB_XS " %p", + c->pid, queue_len, c->ipcs); c->queue_backlog = 0; qb_ipcs_disconnect(c->ipcs); return rc; @@ -653,10 +655,10 @@ pcmk__ipc_prepare_iov(uint32_t request, const xmlNode *message, crm_log_xml_trace(message, "EMSGSIZE"); biggest = QB_MAX(header->size_uncompressed, biggest); - crm_err("Could not compress %u-byte message into less than IPC " - "limit of %u bytes; set PCMK_ipc_buffer to higher value " - "(%u bytes suggested)", - header->size_uncompressed, max_send_size, 4 * biggest); + pcmk__err("Could not compress %u-byte message into less than IPC " + "limit of %u bytes; set PCMK_ipc_buffer to higher value " + "(%u bytes suggested)", + header->size_uncompressed, max_send_size, (4 * biggest)); free(compressed); pcmk_free_ipc_event(iov); @@ -879,7 +881,8 @@ void pcmk__serve_based_ipc(qb_ipcs_service_t **ipcs_ro, QB_IPC_SHM, rw_cb); if (*ipcs_ro == NULL || *ipcs_rw == NULL || *ipcs_shm == NULL) { - crm_err("Failed to create the CIB manager: exiting and inhibiting respawn"); + pcmk__err("Failed to create the CIB manager: exiting and inhibiting " + "respawn"); crm_warn("Verify pacemaker and pacemaker_remote are not both enabled"); crm_exit(CRM_EX_FATAL); } @@ -960,7 +963,7 @@ pcmk__serve_fenced_ipc(qb_ipcs_service_t **ipcs, QB_LOOP_HIGH); if (*ipcs == NULL) { - crm_err("Failed to create fencer: exiting and inhibiting respawn."); + pcmk__err("Failed to create fencer: exiting and inhibiting respawn"); crm_warn("Verify pacemaker and pacemaker_remote are not both enabled."); crm_exit(CRM_EX_FATAL); } @@ -982,7 +985,7 @@ pcmk__serve_pacemakerd_ipc(qb_ipcs_service_t **ipcs, *ipcs = mainloop_add_ipc_server(CRM_SYSTEM_MCP, QB_IPC_NATIVE, cb); if (*ipcs == NULL) { - crm_err("Couldn't start pacemakerd IPC server"); + pcmk__err("Couldn't start pacemakerd IPC server"); crm_warn("Verify pacemaker and pacemaker_remote are not both enabled."); /* sub-daemons are observed by pacemakerd. Thus we exit CRM_EX_FATAL * if we want to prevent pacemakerd from restarting them. diff --git a/lib/common/iso8601.c b/lib/common/iso8601.c index a04e6f8157c..088d64a2ece 100644 --- a/lib/common/iso8601.c +++ b/lib/common/iso8601.c @@ -748,7 +748,7 @@ crm_time_parse_sec(const char *time_str, int *result) &hour, &minute, &second); } if (rc == 0) { - crm_err("%s is not a valid ISO 8601 time specification", time_str); + pcmk__err("%s is not a valid ISO 8601 time specification", time_str); errno = EINVAL; return FALSE; } @@ -759,20 +759,23 @@ crm_time_parse_sec(const char *time_str, int *result) if ((hour == 24) && (minute == 0) && (second == 0)) { // Equivalent to 00:00:00 of next day, return number of seconds in day } else if (hour >= 24) { - crm_err("%s is not a valid ISO 8601 time specification " - "because %" PRIu32 " is not a valid hour", time_str, hour); + pcmk__err("%s is not a valid ISO 8601 time specification " + "because %" PRIu32 " is not a valid hour", + time_str, hour); errno = EINVAL; return FALSE; } if (minute >= 60) { - crm_err("%s is not a valid ISO 8601 time specification " - "because %" PRIu32 " is not a valid minute", time_str, minute); + pcmk__err("%s is not a valid ISO 8601 time specification " + "because %" PRIu32 " is not a valid minute", + time_str, minute); errno = EINVAL; return FALSE; } if (second >= 60) { - crm_err("%s is not a valid ISO 8601 time specification " - "because %" PRIu32 " is not a valid second", time_str, second); + pcmk__err("%s is not a valid ISO 8601 time specification " + "because %" PRIu32 " is not a valid second", + time_str, second); errno = EINVAL; return FALSE; } @@ -900,7 +903,7 @@ parse_date(const char *date_str) int rc = 0; if (pcmk__str_empty(date_str)) { - crm_err("No ISO 8601 date/time specification given"); + pcmk__err("No ISO 8601 date/time specification given"); goto invalid; } @@ -938,20 +941,20 @@ parse_date(const char *date_str) } if (rc == 3) { if ((month < 1U) || (month > 12U)) { - crm_err("'%s' is not a valid ISO 8601 date/time specification " - "because '%" PRIu32 "' is not a valid month", - date_str, month); + pcmk__err("'%s' is not a valid ISO 8601 date/time specification " + "because '%" PRIu32 "' is not a valid month", + date_str, month); goto invalid; } else if ((year < 1U) || (year > INT_MAX)) { - crm_err("'%s' is not a valid ISO 8601 date/time specification " - "because '%" PRIu32 "' is not a valid year", - date_str, year); + pcmk__err("'%s' is not a valid ISO 8601 date/time specification " + "because '%" PRIu32 "' is not a valid year", + date_str, year); goto invalid; } else if ((day < 1) || (day > INT_MAX) || (day > crm_time_days_in_month(month, year))) { - crm_err("'%s' is not a valid ISO 8601 date/time specification " - "because '%" PRIu32 "' is not a valid day of the month", - date_str, day); + pcmk__err("'%s' is not a valid ISO 8601 date/time specification " + "because '%" PRIu32 "' is not a valid day of the month", + date_str, day); goto invalid; } else { dt->years = year; @@ -966,15 +969,15 @@ parse_date(const char *date_str) rc = sscanf(date_str, "%" SCNu32 "-%" SCNu32, &year, &day); if (rc == 2) { if ((year < 1U) || (year > INT_MAX)) { - crm_err("'%s' is not a valid ISO 8601 date/time specification " - "because '%" PRIu32 "' is not a valid year", - date_str, year); + pcmk__err("'%s' is not a valid ISO 8601 date/time specification " + "because '%" PRIu32 "' is not a valid year", + date_str, year); goto invalid; } else if ((day < 1U) || (day > INT_MAX) || (day > year_days(year))) { - crm_err("'%s' is not a valid ISO 8601 date/time specification " - "because '%" PRIu32 "' is not a valid day of year %" - PRIu32 " (1-%d)", - date_str, day, year, year_days(year)); + pcmk__err("'%s' is not a valid ISO 8601 date/time specification " + "because '%" PRIu32 "' is not a valid day of year %" + PRIu32 " (1-%d)", + date_str, day, year, year_days(year)); goto invalid; } crm_trace("Parsed ordinal year %d and days %d from date string '%s'", @@ -989,15 +992,15 @@ parse_date(const char *date_str) &year, &week, &day); if (rc == 3) { if ((week < 1U) || (week > crm_time_weeks_in_year(year))) { - crm_err("'%s' is not a valid ISO 8601 date/time specification " - "because '%" PRIu32 "' is not a valid week of year %" - PRIu32 " (1-%d)", - date_str, week, year, crm_time_weeks_in_year(year)); + pcmk__err("'%s' is not a valid ISO 8601 date/time specification " + "because '%" PRIu32 "' is not a valid week of year %" + PRIu32 " (1-%d)", + date_str, week, year, crm_time_weeks_in_year(year)); goto invalid; } else if ((day < 1U) || (day > 7U)) { - crm_err("'%s' is not a valid ISO 8601 date/time specification " - "because '%" PRIu32 "' is not a valid day of the week", - date_str, day); + pcmk__err("'%s' is not a valid ISO 8601 date/time specification " + "because '%" PRIu32 "' is not a valid day of the week", + date_str, day); goto invalid; } else { /* @@ -1031,7 +1034,7 @@ parse_date(const char *date_str) goto parse_time; } - crm_err("'%s' is not a valid ISO 8601 date/time specification", date_str); + pcmk__err("'%s' is not a valid ISO 8601 date/time specification", date_str); goto invalid; parse_time: @@ -1050,8 +1053,8 @@ parse_date(const char *date_str) crm_time_log(LOG_TRACE, "Unpacked", dt, crm_time_log_date | crm_time_log_timeofday); if (crm_time_check(dt) == FALSE) { - crm_err("'%s' is not a valid ISO 8601 date/time specification", - date_str); + pcmk__err("'%s' is not a valid ISO 8601 date/time specification", + date_str); goto invalid; } return dt; @@ -1124,17 +1127,19 @@ crm_time_parse_duration(const char *period_s) crm_time_t *diff = NULL; if (pcmk__str_empty(period_s)) { - crm_err("No ISO 8601 time duration given"); + pcmk__err("No ISO 8601 time duration given"); goto invalid; } if (period_s[0] != 'P') { - crm_err("'%s' is not a valid ISO 8601 time duration " - "because it does not start with a 'P'", period_s); + pcmk__err("'%s' is not a valid ISO 8601 time duration because it does " + "not start with a 'P'", + period_s); goto invalid; } if ((period_s[1] == '\0') || isspace(period_s[1])) { - crm_err("'%s' is not a valid ISO 8601 time duration " - "because nothing follows 'P'", period_s); + pcmk__err("'%s' is not a valid ISO 8601 time duration because nothing " + "follows 'P'", + period_s); goto invalid; } @@ -1159,8 +1164,9 @@ crm_time_parse_duration(const char *period_s) // An integer must be next rc = parse_int(current, &an_int); if (rc == 0) { - crm_err("'%s' is not a valid ISO 8601 time duration " - "because no valid integer at '%s'", period_s, current); + pcmk__err("'%s' is not a valid ISO 8601 time duration because no " + "valid integer at '%s'", + period_s, current); goto invalid; } current += rc; @@ -1177,10 +1183,10 @@ crm_time_parse_duration(const char *period_s) } else { // Minutes result = diff->seconds + an_int * 60LL; if ((result < INT_MIN) || (result > INT_MAX)) { - crm_err("'%s' is not a valid ISO 8601 time duration " - "because integer at '%s' is too %s", - period_s, current - rc, - ((result > 0)? "large" : "small")); + pcmk__err("'%s' is not a valid ISO 8601 time duration " + "because integer at '%s' is too %s", + period_s, (current - rc), + ((result > 0)? "large" : "small")); goto invalid; } else { diff->seconds = (int) result; @@ -1192,10 +1198,10 @@ crm_time_parse_duration(const char *period_s) case 'W': result = diff->days + an_int * 7LL; if ((result < INT_MIN) || (result > INT_MAX)) { - crm_err("'%s' is not a valid ISO 8601 time duration " - "because integer at '%s' is too %s", - period_s, current - rc, - ((result > 0)? "large" : "small")); + pcmk__err("'%s' is not a valid ISO 8601 time duration " + "because integer at '%s' is too %s", + period_s, (current - rc), + ((result > 0)? "large" : "small")); goto invalid; } else { diff->days = (int) result; @@ -1205,10 +1211,10 @@ crm_time_parse_duration(const char *period_s) case 'D': result = diff->days + (long long) an_int; if ((result < INT_MIN) || (result > INT_MAX)) { - crm_err("'%s' is not a valid ISO 8601 time duration " - "because integer at '%s' is too %s", - period_s, current - rc, - ((result > 0)? "large" : "small")); + pcmk__err("'%s' is not a valid ISO 8601 time duration " + "because integer at '%s' is too %s", + period_s, (current - rc), + ((result > 0)? "large" : "small")); goto invalid; } else { diff->days = (int) result; @@ -1218,10 +1224,10 @@ crm_time_parse_duration(const char *period_s) case 'H': result = diff->seconds + (long long) an_int * HOUR_SECONDS; if ((result < INT_MIN) || (result > INT_MAX)) { - crm_err("'%s' is not a valid ISO 8601 time duration " - "because integer at '%s' is too %s", - period_s, current - rc, - ((result > 0)? "large" : "small")); + pcmk__err("'%s' is not a valid ISO 8601 time duration " + "because integer at '%s' is too %s", + period_s, (current - rc), + ((result > 0)? "large" : "small")); goto invalid; } else { diff->seconds = (int) result; @@ -1231,10 +1237,10 @@ crm_time_parse_duration(const char *period_s) case 'S': result = diff->seconds + (long long) an_int; if ((result < INT_MIN) || (result > INT_MAX)) { - crm_err("'%s' is not a valid ISO 8601 time duration " - "because integer at '%s' is too %s", - period_s, current - rc, - ((result > 0)? "large" : "small")); + pcmk__err("'%s' is not a valid ISO 8601 time duration " + "because integer at '%s' is too %s", + period_s, (current - rc), + ((result > 0)? "large" : "small")); goto invalid; } else { diff->seconds = (int) result; @@ -1242,21 +1248,23 @@ crm_time_parse_duration(const char *period_s) break; case '\0': - crm_err("'%s' is not a valid ISO 8601 time duration " - "because no units after %d", period_s, an_int); + pcmk__err("'%s' is not a valid ISO 8601 time duration because " + "no units after %d", + period_s, an_int); goto invalid; default: - crm_err("'%s' is not a valid ISO 8601 time duration " - "because '%c' is not a valid time unit", - period_s, current[0]); + pcmk__err("'%s' is not a valid ISO 8601 time duration because " + "'%c' is not a valid time unit", + period_s, current[0]); goto invalid; } } if (!crm_time_is_defined(diff)) { - crm_err("'%s' is not a valid ISO 8601 time duration " - "because no amounts and units given", period_s); + pcmk__err("'%s' is not a valid ISO 8601 time duration because no " + "amounts and units given", + period_s); goto invalid; } @@ -1286,7 +1294,7 @@ crm_time_parse_period(const char *period_str) crm_time_period_t *period = NULL; if (pcmk__str_empty(period_str)) { - crm_err("No ISO 8601 time period given"); + pcmk__err("No ISO 8601 time period given"); goto invalid; } @@ -1310,9 +1318,9 @@ crm_time_parse_period(const char *period_str) ++period_str; if (period_str[0] == 'P') { if (period->diff != NULL) { - crm_err("'%s' is not a valid ISO 8601 time period " - "because it has two durations", - original); + pcmk__err("'%s' is not a valid ISO 8601 time period because it " + "has two durations", + original); goto invalid; } period->diff = crm_time_parse_duration(period_str); @@ -1332,9 +1340,9 @@ crm_time_parse_period(const char *period_str) } else { // Only start given - crm_err("'%s' is not a valid ISO 8601 time period " - "because it has no duration or ending time", - original); + pcmk__err("'%s' is not a valid ISO 8601 time period because it has no " + "duration or ending time", + original); goto invalid; } @@ -1346,13 +1354,15 @@ crm_time_parse_period(const char *period_str) } if (crm_time_check(period->start) == FALSE) { - crm_err("'%s' is not a valid ISO 8601 time period " - "because the start is invalid", period_str); + pcmk__err("'%s' is not a valid ISO 8601 time period because the start " + "is invalid", + period_str); goto invalid; } if (crm_time_check(period->end) == FALSE) { - crm_err("'%s' is not a valid ISO 8601 time period " - "because the end is invalid", period_str); + pcmk__err("'%s' is not a valid ISO 8601 time period because the end is " + "invalid", + period_str); goto invalid; } return period; diff --git a/lib/common/mainloop.c b/lib/common/mainloop.c index 76ecbbb6fb7..f619e989e07 100644 --- a/lib/common/mainloop.c +++ b/lib/common/mainloop.c @@ -308,8 +308,8 @@ crm_signal_handler(int sig, sighandler_t dispatch) struct sigaction old; if (sigemptyset(&mask) < 0) { - crm_err("Could not set handler for signal %d: %s", - sig, pcmk_rc_str(errno)); + pcmk__err("Could not set handler for signal %d: %s", sig, + pcmk_rc_str(errno)); return SIG_ERR; } @@ -319,8 +319,8 @@ crm_signal_handler(int sig, sighandler_t dispatch) sa.sa_mask = mask; if (sigaction(sig, &sa, &old) < 0) { - crm_err("Could not set handler for signal %d: %s", - sig, pcmk_rc_str(errno)); + pcmk__err("Could not set handler for signal %d: %s", sig, + pcmk_rc_str(errno)); return SIG_ERR; } return old.sa_handler; @@ -364,7 +364,7 @@ mainloop_add_signal(int sig, void (*dispatch) (int sig)) } if (sig >= NSIG || sig < 0) { - crm_err("Signal %d is out of range", sig); + pcmk__err("Signal %d is out of range", sig); return FALSE; } else if (crm_signals[sig] != NULL && crm_signals[sig]->handler == dispatch) { @@ -372,7 +372,7 @@ mainloop_add_signal(int sig, void (*dispatch) (int sig)) return TRUE; } else if (crm_signals[sig] != NULL) { - crm_err("Different signal handler for %d is already installed", sig); + pcmk__err("Different signal handler for %d is already installed", sig); return FALSE; } @@ -397,7 +397,7 @@ gboolean mainloop_destroy_signal(int sig) { if (sig >= NSIG || sig < 0) { - crm_err("Signal %d is out of range", sig); + pcmk__err("Signal %d is out of range", sig); return FALSE; } else if (crm_signal_handler(sig, NULL) == SIG_ERR) { @@ -514,25 +514,25 @@ gio_poll_dispatch_update(enum qb_loop_priority p, int32_t fd, int32_t evts, res = qb_array_index(gio_map, fd, (void **)&adaptor); if (res < 0) { - crm_err("Array lookup failed for fd=%d: %d", fd, res); + pcmk__err("Array lookup failed for fd=%d: %d", fd, res); return res; } crm_trace("Adding fd=%d to mainloop as adaptor %p", fd, adaptor); if (add && adaptor->source) { - crm_err("Adaptor for descriptor %d is still in-use", fd); + pcmk__err("Adaptor for descriptor %d is still in-use", fd); return -EEXIST; } if (!add && !adaptor->is_used) { - crm_err("Adaptor for descriptor %d is not in-use", fd); + pcmk__err("Adaptor for descriptor %d is not in-use", fd); return -ENOENT; } /* channel is created with ref_count = 1 */ channel = g_io_channel_unix_new(fd); if (!channel) { - crm_err("No memory left to add fd=%d", fd); + pcmk__err("No memory left to add fd=%d", fd); return -ENOMEM; } @@ -655,8 +655,8 @@ mainloop_add_ipc_server_with_prio(const char *name, enum qb_ipc_type type, server = qb_ipcs_create(name, 0, pick_ipc_type(type), callbacks); if (server == NULL) { - crm_err("Could not create %s IPC server: %s (%d)", - name, pcmk_rc_str(errno), errno); + pcmk__err("Could not create %s IPC server: %s (%d)", name, + pcmk_rc_str(errno), errno); return NULL; } @@ -670,7 +670,8 @@ mainloop_add_ipc_server_with_prio(const char *name, enum qb_ipc_type type, rc = qb_ipcs_run(server); if (rc < 0) { - crm_err("Could not start %s IPC server: %s (%d)", name, pcmk_strerror(rc), rc); + pcmk__err("Could not start %s IPC server: %s (%d)", name, + pcmk_strerror(rc), rc); return NULL; // qb_ipcs_run() destroys server on failure } @@ -756,8 +757,8 @@ mainloop_gio_callback(GIOChannel *gio, GIOCondition condition, gpointer data) } if (client->ipc && !crm_ipc_connected(client->ipc)) { - crm_err("Connection to %s closed " QB_XS " client=%p condition=%d", - client->name, client, condition); + pcmk__err("Connection to %s closed " QB_XS " client=%p condition=%d", + client->name, client, condition); rc = G_SOURCE_REMOVE; } else if (condition & (G_IO_HUP | G_IO_NVAL | G_IO_ERR)) { @@ -793,7 +794,7 @@ mainloop_gio_callback(GIOChannel *gio, GIOCondition condition, gpointer data) G_IO_HUP Hung up (the connection has been broken, usually for pipes and sockets). G_IO_NVAL Invalid request. The file descriptor is not open. */ - crm_err("Strange condition: %d", condition); + pcmk__err("Strange condition: %d", condition); } /* G_SOURCE_REMOVE results in mainloop_gio_destroy() being called @@ -1146,8 +1147,7 @@ child_waitpid(mainloop_child_t *child, int flags) #ifdef WCOREDUMP // AIX, SunOS, maybe others } else if (WCOREDUMP(status)) { core = 1; - crm_err("Child process %d (%s) dumped core", - child->pid, child->desc); + pcmk__err("Child process %d (%s) dumped core", child->pid, child->desc); #endif } else { // flags must contain WUNTRACED and/or WCONTINUED to reach this diff --git a/lib/common/options.c b/lib/common/options.c index a105729c0ef..f77e9da309d 100644 --- a/lib/common/options.c +++ b/lib/common/options.c @@ -1085,8 +1085,8 @@ pcmk__env_option(const char *option) int rv = snprintf(env_name, NAME_MAX, "%s%s", prefixes[i], option); if (rv < 0) { - crm_err("Failed to write %s%s to buffer: %s", prefixes[i], option, - strerror(errno)); + pcmk__err("Failed to write %s%s to buffer: %s", prefixes[i], option, + strerror(errno)); return NULL; } @@ -1136,8 +1136,8 @@ pcmk__set_env_option(const char *option, const char *value, bool compat) int rv = snprintf(env_name, NAME_MAX, "%s%s", prefixes[i], option); if (rv < 0) { - crm_err("Failed to write %s%s to buffer: %s", prefixes[i], option, - strerror(errno)); + pcmk__err("Failed to write %s%s to buffer: %s", prefixes[i], option, + strerror(errno)); return; } @@ -1155,8 +1155,8 @@ pcmk__set_env_option(const char *option, const char *value, bool compat) } if (rv < 0) { - crm_err("Failed to %sset %s: %s", (value != NULL)? "" : "un", - env_name, strerror(errno)); + pcmk__err("Failed to %sset %s: %s", (value != NULL)? "" : "un", + env_name, strerror(errno)); } if (!compat && (value != NULL)) { @@ -1376,8 +1376,8 @@ cluster_option_value(GHashTable *table, const pcmk__cluster_option_t *option) } CRM_CHECK((option->is_valid == NULL) || option->is_valid(value), - crm_err("Bug: default value for cluster option '%s' is invalid", - option->name); + pcmk__err("Bug: default value for cluster option '%s' is invalid", + option->name); return NULL); crm_trace("Using default value '%s' for cluster option '%s'", @@ -1407,7 +1407,7 @@ pcmk__cluster_option(GHashTable *options, const char *name) return cluster_option_value(options, option); } } - CRM_CHECK(FALSE, crm_err("Bug: looking for unknown option '%s'", name)); + CRM_CHECK(FALSE, pcmk__err("Bug: looking for unknown option '%s'", name)); return NULL; } diff --git a/lib/common/output.c b/lib/common/output.c index 6ba9c16169c..6b3dde34e9b 100644 --- a/lib/common/output.c +++ b/lib/common/output.c @@ -1,5 +1,5 @@ /* - * Copyright 2019-2024 the Pacemaker project contributors + * Copyright 2019-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -302,8 +302,8 @@ pcmk__log_output_new(pcmk__output_t **out) pcmk__register_formats(NULL, formats); rc = pcmk__output_new(out, "log", NULL, (char **) argv); if ((rc != pcmk_rc_ok) || (*out == NULL)) { - crm_err("Can't log certain messages due to internal error: %s", - pcmk_rc_str(rc)); + pcmk__err("Can't log certain messages due to internal error: %s", + pcmk_rc_str(rc)); return rc; } return pcmk_rc_ok; @@ -331,8 +331,8 @@ pcmk__text_output_new(pcmk__output_t **out, const char *filename) pcmk__register_formats(NULL, formats); rc = pcmk__output_new(out, "text", filename, (char **) argv); if ((rc != pcmk_rc_ok) || (*out == NULL)) { - crm_err("Can't create text output object to internal error: %s", - pcmk_rc_str(rc)); + pcmk__err("Can't create text output object to internal error: %s", + pcmk_rc_str(rc)); return rc; } return pcmk_rc_ok; diff --git a/lib/common/patchset.c b/lib/common/patchset.c index adbaad86030..5f9a374166f 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -253,7 +253,7 @@ xml_create_patchset(int format, xmlNode *source, xmlNode *target, format = 2; } if (format != 2) { - crm_err("Unknown patch format: %d", format); + pcmk__err("Unknown patch format: %d", format); return NULL; } @@ -344,7 +344,7 @@ pcmk__xml_patchset_versions(const xmlNode *patchset, int source[3], pcmk__xe_get_int(patchset, PCMK_XA_FORMAT, &format); if (format != 2) { - crm_err("Unknown patch format: %d", format); + pcmk__err("Unknown patch format: %d", format); return EINVAL; } @@ -656,7 +656,7 @@ apply_v2_patchset(xmlNode *xml, const xmlNode *patchset) continue; } else if (match == NULL) { - crm_err("No %s match for %s in %p", op, xpath, xml->doc); + pcmk__err("No %s match for %s in %p", op, xpath, xml->doc); rc = pcmk_rc_diff_failed; continue; @@ -704,7 +704,7 @@ apply_v2_patchset(xmlNode *xml, const xmlNode *patchset) } } else { - crm_err("Unknown operation: %s", op); + pcmk__err("Unknown operation: %s", op); rc = pcmk_rc_diff_failed; } } @@ -789,10 +789,10 @@ apply_v2_patchset(xmlNode *xml, const xmlNode *patchset) } if (position != pcmk__xml_position(match, pcmk__xf_skip)) { - crm_err("Moved %s.%s to position %d instead of %d (%p)", - match->name, pcmk__xe_id(match), - pcmk__xml_position(match, pcmk__xf_skip), - position, match->prev); + pcmk__err("Moved %s.%s to position %d instead of %d (%p)", + match->name, pcmk__xe_id(match), + pcmk__xml_position(match, pcmk__xf_skip), + position, match->prev); rc = pcmk_rc_diff_failed; } } @@ -835,7 +835,7 @@ xml_apply_patchset(xmlNode *xml, const xmlNode *patchset, bool check_version) pcmk__xe_get_int(patchset, PCMK_XA_FORMAT, &format); if (format != 2) { - crm_err("Unknown patch format: %d", format); + pcmk__err("Unknown patch format: %d", format); rc = -EINVAL; } else { @@ -957,7 +957,7 @@ xml_patch_versions(const xmlNode *patchset, int add[3], int del[3]) pcmk__xe_get_int(patchset, PCMK_XA_FORMAT, &format); if (format != 2) { - crm_err("Unknown patch format: %d", format); + pcmk__err("Unknown patch format: %d", format); return true; } diff --git a/lib/common/patchset_display.c b/lib/common/patchset_display.c index a8194b2dc54..a5bab26b95c 100644 --- a/lib/common/patchset_display.c +++ b/lib/common/patchset_display.c @@ -210,7 +210,7 @@ xml_patchset_default(pcmk__output_t *out, va_list args) pcmk__xe_get_int(patchset, PCMK_XA_FORMAT, &format); if (format != 2) { - crm_err("Unknown patch format: %d", format); + pcmk__err("Unknown patch format: %d", format); return pcmk_rc_bad_xml_patch; } @@ -265,7 +265,7 @@ xml_patchset_log(pcmk__output_t *out, va_list args) pcmk__xe_get_int(patchset, PCMK_XA_FORMAT, &format); if (format != 2) { - crm_err("Unknown patch format: %d", format); + pcmk__err("Unknown patch format: %d", format); return pcmk_rc_bad_xml_patch; } diff --git a/lib/common/pid.c b/lib/common/pid.c index a82d7949aa3..352ef05afdf 100644 --- a/lib/common/pid.c +++ b/lib/common/pid.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. * @@ -63,9 +63,9 @@ pcmk__pid_active(pid_t pid, const char *daemon) QB_XS " rc=%d", (long long) pid, pcmk_rc_str(rc), rc); } else { - crm_err("Could not get executable for PID %lld: %s " - QB_XS " rc=%d", - (long long) pid, pcmk_rc_str(rc), rc); + pcmk__err("Could not get executable for PID %lld: %s " + QB_XS " rc=%d", + (long long) pid, pcmk_rc_str(rc), rc); } last_asked_pid = pid; } diff --git a/lib/common/procfs.c b/lib/common/procfs.c index 2cc1bc0de75..ecddb0cde63 100644 --- a/lib/common/procfs.c +++ b/lib/common/procfs.c @@ -396,7 +396,7 @@ pcmk__throttle_cib_load(const char *server, float *load) free(comm); if (rc != 15) { - crm_err("Only %d of 15 fields found in %s", rc, loadfile); + pcmk__err("Only %d of 15 fields found in %s", rc, loadfile); fclose(stream); return false; diff --git a/lib/common/remote.c b/lib/common/remote.c index 1cb9522a61a..d5fe0587256 100644 --- a/lib/common/remote.c +++ b/lib/common/remote.c @@ -105,9 +105,9 @@ localized_remote_header(pcmk__remote_t *remote) CRM_LOG_ASSERT(endian == ENDIAN_LOCAL); if(endian != ENDIAN_LOCAL) { - crm_err("Invalid message detected, endian mismatch: %" PRIx32 - " is neither %" PRIx32 " nor the swab'd %" PRIx32, - ENDIAN_LOCAL, header->endian, endian); + pcmk__err("Invalid message detected, endian mismatch: %" PRIx32 + " is neither %" PRIx32 " nor the swab'd %" PRIx32, + ENDIAN_LOCAL, header->endian, endian); return NULL; } @@ -270,8 +270,8 @@ pcmk__remote_send_xml(pcmk__remote_t *remote, const xmlNode *msg) rc = remote_send_iovs(remote, iov, 2); if (rc != pcmk_rc_ok) { - crm_err("Could not send remote message: %s " QB_XS " rc=%d", - pcmk_rc_str(rc), rc); + pcmk__err("Could not send remote message: %s " QB_XS " rc=%d", + pcmk_rc_str(rc), rc); } free(iov[0].iov_base); @@ -320,8 +320,8 @@ pcmk__remote_message_xml(pcmk__remote_t *remote) return NULL; } else if (rc != pcmk_rc_ok) { - crm_err("Decompression failed: %s " QB_XS " rc=%d", - pcmk_rc_str(rc), rc); + pcmk__err("Decompression failed: %s " QB_XS " rc=%d", + pcmk_rc_str(rc), rc); free(uncompressed); return NULL; } @@ -347,7 +347,8 @@ pcmk__remote_message_xml(pcmk__remote_t *remote) header->version, REMOTE_MSG_VERSION); } else if (xml == NULL) { - crm_err("Couldn't parse: '%.120s'", remote->buffer + header->payload_offset); + pcmk__err("Couldn't parse: '%.120s'", + remote->buffer + header->payload_offset); } crm_log_xml_trace(xml, "[remote msg]"); @@ -363,7 +364,7 @@ get_remote_socket(const pcmk__remote_t *remote) if (remote->tcp_socket >= 0) { return remote->tcp_socket; } - crm_err("Remote connection type undetermined (bug?)"); + pcmk__err("Remote connection type undetermined (bug?)"); return -1; } @@ -471,7 +472,7 @@ pcmk__read_available_remote_data(pcmk__remote_t *remote) rc = errno; } } else { - crm_err("Remote connection type undetermined (bug?)"); + pcmk__err("Remote connection type undetermined (bug?)"); return ESOCKTNOSUPPORT; } @@ -544,8 +545,8 @@ pcmk__read_remote_message(pcmk__remote_t *remote, int timeout_ms) rc = pcmk__remote_ready(remote, remaining_timeout); if (rc == ETIME) { - crm_err("Timed out (%d ms) while waiting for remote data", - remaining_timeout); + pcmk__err("Timed out (%d ms) while waiting for remote data", + remaining_timeout); return rc; } else if (rc != pcmk_rc_ok) { @@ -826,13 +827,13 @@ pcmk__connect_remote(const char *host, int port, int timeout, int *timer_id, rc = pcmk__gaierror2rc(rc); if (rc != pcmk_rc_ok) { - crm_err("Unable to get IP address info for %s: %s", - server, pcmk_rc_str(rc)); + pcmk__err("Unable to get IP address info for %s: %s", server, + pcmk_rc_str(rc)); goto async_cleanup; } if (!res || !res->ai_addr) { - crm_err("Unable to get IP address info for %s: no result", server); + pcmk__err("Unable to get IP address info for %s: no result", server); rc = ENOTCONN; goto async_cleanup; } @@ -952,8 +953,9 @@ pcmk__accept_remote_connection(int ssock, int *csock) *csock = accept(ssock, (struct sockaddr *)&addr, &laddr); if (*csock == -1) { rc = errno; - crm_err("Could not accept remote client connection: %s " - QB_XS " rc=%d", pcmk_rc_str(rc), rc); + pcmk__err("Could not accept remote client connection: %s " + QB_XS " rc=%d", + pcmk_rc_str(rc), rc); return rc; } pcmk__sockaddr2str(&addr, addr_str); @@ -961,8 +963,8 @@ pcmk__accept_remote_connection(int ssock, int *csock) rc = pcmk__set_nonblocking(*csock); if (rc != pcmk_rc_ok) { - crm_err("Could not set socket non-blocking: %s " QB_XS " rc=%d", - pcmk_rc_str(rc), rc); + pcmk__err("Could not set socket non-blocking: %s " QB_XS " rc=%d", + pcmk_rc_str(rc), rc); close(*csock); *csock = -1; return rc; @@ -979,8 +981,9 @@ pcmk__accept_remote_connection(int ssock, int *csock) &optval, sizeof(optval)); if (rc < 0) { rc = errno; - crm_err("Could not set TCP timeout to %d ms on remote connection: " - "%s " QB_XS " rc=%d", optval, pcmk_rc_str(rc), rc); + pcmk__err("Could not set TCP timeout to %d ms on remote " + "connection: %s " QB_XS " rc=%d", + optval, pcmk_rc_str(rc), rc); close(*csock); *csock = -1; return rc; diff --git a/lib/common/results.c b/lib/common/results.c index 568b8d448fb..d14143686ff 100644 --- a/lib/common/results.c +++ b/lib/common/results.c @@ -130,8 +130,8 @@ log_assertion_as(const char *file, const char *function, int line, if (!pcmk__is_daemon) { crm_enable_stderr(TRUE); // Make sure command-line user sees message } - crm_err("%s: Triggered fatal assertion at %s:%d : %s", - function, file, line, assert_condition); + pcmk__err("%s: Triggered fatal assertion at %s:%d : %s", function, file, + line, assert_condition); } /* coverity[+kill] */ @@ -190,8 +190,9 @@ fail_assert_as(const char *file, const char *function, int line, break; default: // Parent process: wait for child - crm_err("%s: Forked child [%d] to record non-fatal assertion at " - "%s:%d : %s", function, pid, file, line, assert_condition); + pcmk__err("%s: Forked child [%d] to record non-fatal assertion at " + "%s:%d : %s", + function, pid, file, line, assert_condition); crm_write_blackbox(SIGTRAP, NULL); do { if (waitpid(pid, &status, 0) == pid) { @@ -203,8 +204,8 @@ fail_assert_as(const char *file, const char *function, int line, crm_trace("Cannot wait on forked child [%d] " "(SIGCHLD is probably ignored)", pid); } else { - crm_err("Cannot wait on forked child [%d]: %s", - pid, pcmk_rc_str(errno)); + pcmk__err("Cannot wait on forked child [%d]: %s", pid, + pcmk_rc_str(errno)); } break; } diff --git a/lib/common/schemas.c b/lib/common/schemas.c index 57be3ce4378..87232d6df1d 100644 --- a/lib/common/schemas.c +++ b/lib/common/schemas.c @@ -586,7 +586,7 @@ validate_with_relaxng(xmlDocPtr doc, xmlRelaxNGValidityErrorFunc error_handler, ctx->rng = xmlRelaxNGParse(ctx->parser); CRM_CHECK(ctx->rng != NULL, - crm_err("Could not find/parse %s", relaxng_file); + pcmk__err("Could not find/parse %s", relaxng_file); goto cleanup); ctx->valid = xmlRelaxNGNewValidCtxt(ctx->rng); @@ -610,7 +610,7 @@ validate_with_relaxng(xmlDocPtr doc, xmlRelaxNGValidityErrorFunc error_handler, valid = false; } else if (rc < 0) { - crm_err("Internal libxml error during validation"); + pcmk__err("Internal libxml error during validation"); } cleanup: @@ -771,7 +771,7 @@ validate_with(xmlNode *xml, pcmk__schema_t *schema, valid = validate_with_relaxng(xml->doc, error_handler, error_handler_context, file, cache); break; default: - crm_err("Unknown validator type: %d", schema->validator); + pcmk__err("Unknown validator type: %d", schema->validator); break; } @@ -1051,7 +1051,7 @@ apply_upgrade(const xmlNode *input_xml, int schema_index, gboolean to_logs) pcmk__xml_free(old_xml); if (new_xml == NULL) { - crm_err("XSL transform %s failed, aborting upgrade", transform); + pcmk__err("XSL transform %s failed, aborting upgrade", transform); return NULL; } input_xml = new_xml; @@ -1064,9 +1064,9 @@ apply_upgrade(const xmlNode *input_xml, int schema_index, gboolean to_logs) // Ensure result validates with its new schema if (!validate_with(new_xml, upgraded_schema, error_handler, GUINT_TO_POINTER(LOG_ERR))) { - crm_err("Schema upgrade from %s to %s failed: " - "XSL transform pipeline produced an invalid configuration", - schema->name, upgraded_schema->name); + pcmk__err("Schema upgrade from %s to %s failed: XSL transform pipeline " + "produced an invalid configuration", + schema->name, upgraded_schema->name); crm_log_xml_debug(new_xml, "bad-transform-result"); pcmk__xml_free(new_xml); return NULL; diff --git a/lib/common/strings.c b/lib/common/strings.c index dd362391366..e9e374a95ef 100644 --- a/lib/common/strings.c +++ b/lib/common/strings.c @@ -740,8 +740,8 @@ pcmk__compress(const char *data, unsigned int length, unsigned int max, free(uncompressed); if (rc != pcmk_rc_ok) { - crm_err("Compression of %d bytes failed: %s " QB_XS " rc=%d", - length, pcmk_rc_str(rc), rc); + pcmk__err("Compression of %d bytes failed: %s " QB_XS " rc=%d", length, + pcmk_rc_str(rc), rc); free(compressed); return rc; } @@ -1215,7 +1215,8 @@ pcmk__strcmp(const char *s1, const char *s2, uint32_t flags) regcomp_rc = regcomp(&r_patt, s2, reg_flags); if (regcomp_rc != 0) { rc = 1; - crm_err("Bad regex '%s' for update: %s", s2, strerror(regcomp_rc)); + pcmk__err("Bad regex '%s' for update: %s", s2, + strerror(regcomp_rc)); } else { rc = regexec(&r_patt, s1, 0, NULL, 0); regfree(&r_patt); diff --git a/lib/common/tls.c b/lib/common/tls.c index 1229adbf383..c9e3374c789 100644 --- a/lib/common/tls.c +++ b/lib/common/tls.c @@ -67,7 +67,7 @@ tls_load_x509_data(pcmk__tls_t *tls) tls->ca_file, GNUTLS_X509_FMT_PEM); if (rc <= 0) { - crm_err("Failed to set X509 CA file: %s", gnutls_strerror(rc)); + pcmk__err("Failed to set X509 CA file: %s", gnutls_strerror(rc)); return ENODATA; } @@ -79,8 +79,7 @@ tls_load_x509_data(pcmk__tls_t *tls) tls->crl_file, GNUTLS_X509_FMT_PEM); if (rc < 0) { - crm_err("Failed to set X509 CRL file: %s", - gnutls_strerror(rc)); + pcmk__err("Failed to set X509 CRL file: %s", gnutls_strerror(rc)); return ENODATA; } } @@ -93,8 +92,7 @@ tls_load_x509_data(pcmk__tls_t *tls) GNUTLS_X509_FMT_PEM, NULL, GNUTLS_PKCS_PLAIN); if (rc < 0) { - crm_err("Failed to set X509 cert/key pair: %s", - gnutls_strerror(rc)); + pcmk__err("Failed to set X509 cert/key pair: %s", gnutls_strerror(rc)); return ENODATA; } @@ -123,7 +121,7 @@ verify_peer_cert(gnutls_session_t session) * to check status to see whether the cert is valid or not. */ if (rc != GNUTLS_E_SUCCESS) { - crm_err("Failed to verify peer certificate: %s", gnutls_strerror(rc)); + pcmk__err("Failed to verify peer certificate: %s", gnutls_strerror(rc)); return -1; } @@ -134,7 +132,7 @@ verify_peer_cert(gnutls_session_t session) type = gnutls_certificate_type_get(session); gnutls_certificate_verification_status_print(status, type, &out, 0); - crm_err("Peer certificate invalid: %s", out.data); + pcmk__err("Peer certificate invalid: %s", out.data); gnutls_free(out.data); return GNUTLS_E_CERTIFICATE_VERIFICATION_ERROR; } @@ -308,8 +306,9 @@ pcmk__init_tls_dh(gnutls_dh_params_t *dh_params) return pcmk_rc_ok; error: - crm_err("Could not initialize Diffie-Hellman parameters for TLS: %s " - QB_XS " rc=%d", gnutls_strerror(rc), rc); + pcmk__err("Could not initialize Diffie-Hellman parameters for TLS: %s " + QB_XS " rc=%d", + gnutls_strerror(rc), rc); return EPROTO; } @@ -364,7 +363,7 @@ pcmk__new_tls_session(pcmk__tls_t *tls, int csock) } else if (tls->cred_type == GNUTLS_CRD_PSK) { rc = gnutls_credentials_set(session, tls->cred_type, tls->credentials.psk_c); } else { - crm_err("Unknown credential type: %d", tls->cred_type); + pcmk__err("Unknown credential type: %d", tls->cred_type); rc = EINVAL; goto error; } @@ -392,10 +391,11 @@ pcmk__new_tls_session(pcmk__tls_t *tls, int csock) return session; error: - crm_err("Could not initialize %s TLS %s session: %s " QB_XS " rc=%d priority='%s'", - tls_cred_str(tls->cred_type), - (conn_type == GNUTLS_SERVER)? "server" : "client", - gnutls_strerror(rc), rc, prio); + pcmk__err("Could not initialize %s TLS %s session: %s " + QB_XS " rc=%d priority='%s'", + tls_cred_str(tls->cred_type), + ((conn_type == GNUTLS_SERVER)? "server" : "client"), + gnutls_strerror(rc), rc, prio); free(prio); if (session != NULL) { gnutls_deinit(session); @@ -443,8 +443,8 @@ pcmk__read_handshake_data(const pcmk__client_t *client) */ return EAGAIN; } else if (rc != GNUTLS_E_SUCCESS) { - crm_err("TLS handshake with remote client failed: %s " - QB_XS " rc=%d", gnutls_strerror(rc), rc); + pcmk__err("TLS handshake with remote client failed: %s " QB_XS " rc=%d", + gnutls_strerror(rc), rc); return EPROTO; } return pcmk_rc_ok; diff --git a/lib/common/utils.c b/lib/common/utils.c index 62d664b4416..281e9f4844d 100644 --- a/lib/common/utils.c +++ b/lib/common/utils.c @@ -290,8 +290,8 @@ pcmk__daemonize(const char *name, const char *pidfile) /* Check before we even try... */ rc = pcmk__pidfile_matches(pidfile, 1, name, &pid); if ((rc != pcmk_rc_ok) && (rc != ENOENT)) { - crm_err("%s: already running [pid %lld in %s]", - name, (long long) pid, pidfile); + pcmk__err("%s: already running [pid %lld in %s]", name, (long long) pid, + pidfile); printf("%s: already running [pid %lld in %s]\n", name, (long long) pid, pidfile); crm_exit(CRM_EX_ERROR); @@ -309,8 +309,8 @@ pcmk__daemonize(const char *name, const char *pidfile) rc = pcmk__lock_pidfile(pidfile, name); if (rc != pcmk_rc_ok) { - crm_err("Could not lock '%s' for %s: %s " QB_XS " rc=%d", - pidfile, name, pcmk_rc_str(rc), rc); + pcmk__err("Could not lock '%s' for %s: %s " QB_XS " rc=%d", pidfile, + name, pcmk_rc_str(rc), rc); printf("Could not lock '%s' for %s: %s (%d)\n", pidfile, name, pcmk_rc_str(rc), rc); crm_exit(CRM_EX_ERROR); @@ -601,7 +601,7 @@ version_helper(const char *text, const char **end_text) atoi_result = (int) strtol(text, (char **) end_text, 10); if (errno == EINVAL) { - crm_err("Conversion of '%s' %c failed", text, text[0]); + pcmk__err("Conversion of '%s' %c failed", text, text[0]); atoi_result = -1; } } diff --git a/lib/common/xml.c b/lib/common/xml.c index 4b85af10c69..a6b2826c3db 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -1703,7 +1703,7 @@ pcmk__xml_artefact_root(enum pcmk__xml_artefact_ns ns) ret = pcmk__assert_asprintf("%s/base", base); break; default: - crm_err("XML artefact family specified as %u not recognized", ns); + pcmk__err("XML artefact family specified as %u not recognized", ns); } return ret; } @@ -1731,7 +1731,7 @@ find_artefact(enum pcmk__xml_artefact_ns ns, const char *path, const char *files } break; default: - crm_err("XML artefact family specified as %u not recognized", ns); + pcmk__err("XML artefact family specified as %u not recognized", ns); } return ret; diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index 188226116ea..2777f754823 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -1656,12 +1656,12 @@ crm_element_value(const xmlNode *data, const char *name) xmlAttr *attr = NULL; if (data == NULL) { - crm_err("Couldn't find %s in NULL", name ? name : ""); + pcmk__err("Couldn't find %s in NULL", pcmk__s(name, "")); CRM_LOG_ASSERT(data != NULL); return NULL; } else if (name == NULL) { - crm_err("Couldn't find NULL in %s", data->name); + pcmk__err("Couldn't find NULL in %s", data->name); return NULL; } diff --git a/lib/common/xml_io.c b/lib/common/xml_io.c index 8d21d60f385..dc3ac2c7bc6 100644 --- a/lib/common/xml_io.c +++ b/lib/common/xml_io.c @@ -53,8 +53,8 @@ decompress_file(const char *filename) bz_file = BZ2_bzReadOpen(&rc, input, 0, 0, NULL, 0); rc = pcmk__bzlib2rc(rc); if (rc != pcmk_rc_ok) { - crm_err("Could not prepare to read compressed %s: %s " - QB_XS " rc=%d", filename, pcmk_rc_str(rc), rc); + pcmk__err("Could not prepare to read compressed %s: %s " QB_XS " rc=%d", + filename, pcmk_rc_str(rc), rc); goto done; } @@ -73,8 +73,8 @@ decompress_file(const char *filename) rc = pcmk__bzlib2rc(rc); if (rc != pcmk_rc_ok) { rc = pcmk__bzlib2rc(rc); - crm_err("Could not read compressed %s: %s " QB_XS " rc=%d", - filename, pcmk_rc_str(rc), rc); + pcmk__err("Could not read compressed %s: %s " QB_XS " rc=%d", filename, + pcmk_rc_str(rc), rc); free(buffer); buffer = NULL; } else { diff --git a/lib/common/xpath.c b/lib/common/xpath.c index 317114c1b1d..2e3c4f6466e 100644 --- a/lib/common/xpath.c +++ b/lib/common/xpath.c @@ -118,8 +118,9 @@ pcmk__xpath_match_element(xmlNode *match) // Probably an attribute; return parent element instead return match->parent; } - crm_err("Cannot get element from XPath expression match of type %s", - pcmk__xml_element_type_text(match->type)); + pcmk__err("Cannot get element from XPath expression match of type " + "%s", + pcmk__xml_element_type_text(match->type)); return NULL; } } @@ -407,7 +408,7 @@ getXpathResult(xmlXPathObjectPtr xpathObj, int index) CRM_CHECK(xpathObj != NULL, return NULL); if (index >= max) { - crm_err("Requested index %d of only %d items", index, max); + pcmk__err("Requested index %d of only %d items", index, max); return NULL; } else if(xpathObj->nodesetval->nodeTab[index] == NULL) { diff --git a/lib/fencing/st_client.c b/lib/fencing/st_client.c index 084eca16094..ec5937315d7 100644 --- a/lib/fencing/st_client.c +++ b/lib/fencing/st_client.c @@ -183,7 +183,8 @@ stonith__watchdog_fencing_enabled_for_node_api(stonith_t *st, const char *node) int rc = stonith_api->cmds->connect(stonith_api, "stonith-api", NULL); if (rc != pcmk_ok) { - crm_err("Failed connecting to Stonith-API for watchdog-fencing-query."); + pcmk__err("Failed connecting to Stonith-API for " + "watchdog-fencing-query"); } } @@ -223,7 +224,7 @@ stonith__watchdog_fencing_enabled_for_node_api(stonith_t *st, const char *node) stonith_api_delete(stonith_api); } } else { - crm_err("Stonith-API for watchdog-fencing-query couldn't be created."); + pcmk__err("Stonith-API for watchdog-fencing-query couldn't be created"); } crm_trace("Pacemaker assumes node %s %sto do watchdog-fencing.", node, rv?"":"not "); @@ -488,7 +489,7 @@ stonith_api_device_list(stonith_t *stonith, int call_options, enum stonith_namespace ns = stonith_text2namespace(namespace_s); if (devices == NULL) { - crm_err("Parameter error: stonith_api_device_list"); + pcmk__err("Parameter error: stonith_api_device_list"); return -EFAULT; } @@ -536,8 +537,8 @@ stonith_api_device_metadata(stonith_t *stonith, int call_options, #endif default: - crm_err("Can't get fence agent '%s' meta-data: No such agent", - agent); + pcmk__err("Can't get fence agent '%s' meta-data: No such agent", + agent); break; } return -ENODEV; @@ -800,12 +801,12 @@ stonithlib_GCompareFunc(gconstpointer a, gconstpointer b) return 0; } else if (((long)a_client->notify) < ((long)b_client->notify)) { - crm_err("callbacks for %s are not equal: %p vs. %p", - a_client->event, a_client->notify, b_client->notify); + pcmk__err("callbacks for %s are not equal: %p vs. %p", + a_client->event, a_client->notify, b_client->notify); return -1; } - crm_err("callbacks for %s are not equal: %p vs. %p", - a_client->event, a_client->notify, b_client->notify); + pcmk__err("callbacks for %s are not equal: %p vs. %p", + a_client->event, a_client->notify, b_client->notify); return 1; } return rc; @@ -996,7 +997,8 @@ stonith_async_timeout_handler(gpointer data) { struct timer_rec_s *timer = data; - crm_err("Async call %d timed out after %dms", timer->call_id, timer->timeout); + pcmk__err("Async call %d timed out after %dms", timer->call_id, + timer->timeout); invoke_registered_callbacks(timer->stonith, NULL, timer->call_id); /* Always return TRUE, never remove the handler @@ -1088,7 +1090,7 @@ stonith_dispatch_internal(const char *buffer, ssize_t length, gpointer userdata) update_callback_timeout(call_id, timeout, st); } else { - crm_err("Unknown message type: %s", type); + pcmk__err("Unknown message type: %s", type); crm_log_xml_warn(blob.xml, "BadReply"); } @@ -1443,7 +1445,7 @@ xml_to_event(xmlNode *msg) xmlNode *data = get_event_data_xml(msg, event->operation); if (data == NULL) { - crm_err("No data for %s event", event->operation); + pcmk__err("No data for %s event", event->operation); crm_log_xml_notice(msg, "BadEvent"); } else { event->origin = pcmk__xe_get_copy(data, PCMK__XA_ST_ORIGIN); @@ -1463,7 +1465,7 @@ xml_to_event(xmlNode *msg) xmlNode *data = get_event_data_xml(msg, event->operation); if (data == NULL) { - crm_err("No data for %s event", event->operation); + pcmk__err("No data for %s event", event->operation); crm_log_xml_notice(msg, "BadEvent"); } else { event->device = pcmk__xe_get_copy(data, PCMK__XA_ST_DEVICE_ID); @@ -1640,14 +1642,15 @@ stonith_send_command(stonith_t * stonith, const char *op, xmlNode * data, xmlNod } } else if (reply_id <= 0) { - crm_err("Received bad reply: No id set"); + pcmk__err("Received bad reply: No id set"); crm_log_xml_err(op_reply, "Bad reply"); pcmk__xml_free(op_reply); op_reply = NULL; rc = -ENOMSG; } else { - crm_err("Received bad reply: %d (wanted %d)", reply_id, stonith->call_id); + pcmk__err("Received bad reply: %d (wanted %d)", reply_id, + stonith->call_id); crm_log_xml_err(op_reply, "Old reply"); pcmk__xml_free(op_reply); op_reply = NULL; @@ -1656,7 +1659,7 @@ stonith_send_command(stonith_t * stonith, const char *op, xmlNode * data, xmlNod done: if (!crm_ipc_connected(native->ipc)) { - crm_err("Fencer disconnected"); + pcmk__err("Fencer disconnected"); free(native->token); native->token = NULL; stonith->state = stonith_disconnected; } @@ -1684,7 +1687,7 @@ stonith_dispatch(stonith_t * st) } if (!crm_ipc_connected(private->ipc)) { - crm_err("Connection closed"); + pcmk__err("Connection closed"); stay_connected = FALSE; } } @@ -1720,7 +1723,8 @@ stonith_api_free(stonith_t * stonith) free(stonith); } else { - crm_err("Not free'ing active connection: %s (%d)", pcmk_strerror(rc), rc); + pcmk__err("Not free'ing active connection: %s (%d)", pcmk_strerror(rc), + rc); } return rc; @@ -1808,7 +1812,7 @@ stonith__validate(stonith_t *st, int call_options, const char *rsc_id, *error_output = pcmk__assert_asprintf("Agent %s not found", agent); } else { - crm_err("Agent %s not found", agent); + pcmk__err("Agent %s not found", agent); } break; @@ -1822,7 +1826,7 @@ stonith__validate(stonith_t *st, int call_options, const char *rsc_id, "support validation", agent); } else { - crm_err("Agent %s does not support validation", agent); + pcmk__err("Agent %s does not support validation", agent); } break; @@ -2124,7 +2128,7 @@ stonith_agent_exists(const char *agent, int timeout) st = stonith_api_new(); if (st == NULL) { - crm_err("Could not list fence agents: API memory allocation failed"); + pcmk__err("Could not list fence agents: API memory allocation failed"); return FALSE; } st->cmds->list_agents(st, st_opt_sync_call, NULL, &devices, timeout == 0 ? 120 : timeout); diff --git a/lib/fencing/st_lha.c b/lib/fencing/st_lha.c index 0b85e929815..2f0b08ddd55 100644 --- a/lib/fencing/st_lha.c +++ b/lib/fencing/st_lha.c @@ -67,14 +67,14 @@ find_library_function(void **handle, const char *lib, const char *fn) if (*handle == NULL) { *handle = dlopen(lib, RTLD_LAZY); if ((*handle) == NULL) { - crm_err("Could not open %s: %s", lib, dlerror()); + pcmk__err("Could not open %s: %s", lib, dlerror()); return NULL; } } a_function = dlsym(*handle, fn); if (a_function == NULL) { - crm_err("Could not find %s in %s: %s", fn, lib, dlerror()); + pcmk__err("Could not find %s in %s: %s", fn, lib, dlerror()); } return a_function; diff --git a/lib/fencing/st_rhcs.c b/lib/fencing/st_rhcs.c index 27a0bad6ebc..c3f1584d50c 100644 --- a/lib/fencing/st_rhcs.c +++ b/lib/fencing/st_rhcs.c @@ -75,7 +75,7 @@ stonith__list_rhcs_agents(stonith_key_value_t **devices) if (file_num < 0) { int rc = errno; - crm_err("Could not list " PCMK__FENCE_BINDIR ": %s", pcmk_rc_str(rc)); + pcmk__err("Could not list " PCMK__FENCE_BINDIR ": %s", pcmk_rc_str(rc)); free(namelist); return 0; } diff --git a/lib/lrmd/lrmd_alerts.c b/lib/lrmd/lrmd_alerts.c index 1737f3cd041..9e3630d38c3 100644 --- a/lib/lrmd/lrmd_alerts.c +++ b/lib/lrmd/lrmd_alerts.c @@ -195,8 +195,8 @@ exec_alert_list(lrmd_t *lrmd, const GList *alert_list, rc = lrmd->cmds->exec_alert(lrmd, entry->id, entry->path, entry->timeout, copy_params); if (rc < 0) { - crm_err("Could not execute alert %s: %s " QB_XS " rc=%d", - entry->id, pcmk_strerror(rc), rc); + pcmk__err("Could not execute alert %s: %s " QB_XS " rc=%d", + entry->id, pcmk_strerror(rc), rc); any_failure = TRUE; } else { any_success = TRUE; diff --git a/lib/lrmd/lrmd_client.c b/lib/lrmd/lrmd_client.c index 806f73d4cb6..73ef2cde9d1 100644 --- a/lib/lrmd/lrmd_client.c +++ b/lib/lrmd/lrmd_client.c @@ -402,7 +402,7 @@ handle_remote_msg(xmlNode *xml, lrmd_t *lrmd) pcmk__xe_get_int(xml, PCMK__XA_LRMD_CALLID, &reply_id); /* if this happens, we want to know about it */ - crm_err("Got outdated Pacemaker Remote reply %d", reply_id); + pcmk__err("Got outdated Pacemaker Remote reply %d", reply_id); } } } @@ -509,8 +509,8 @@ lrmd_poll(lrmd_t * lrmd, int timeout) } } default: - crm_err("Unsupported executor connection type (bug?): %d", - native->type); + pcmk__err("Unsupported executor connection type (bug?): %d", + native->type); return -EPROTONOSUPPORT; } } @@ -538,12 +538,12 @@ lrmd_dispatch(lrmd_t * lrmd) lrmd_tls_dispatch(lrmd); break; default: - crm_err("Unsupported executor connection type (bug?): %d", - private->type); + pcmk__err("Unsupported executor connection type (bug?): %d", + private->type); } if (lrmd_api_is_connected(lrmd) == FALSE) { - crm_err("Connection closed"); + pcmk__err("Connection closed"); return FALSE; } @@ -590,8 +590,8 @@ lrmd_ipc_connection_destroy(gpointer userdata) native->remote_nodename); break; default: - crm_err("Unsupported executor connection type %d (bug?)", - native->type); + pcmk__err("Unsupported executor connection type %d (bug?)", + native->type); } /* Prevent these from being cleaned up in lrmd_api_disconnect() */ @@ -712,7 +712,7 @@ read_remote_reply(lrmd_t *lrmd, int total_timeout, int expected_reply_id, msg_type = pcmk__xe_get(*reply, PCMK__XA_LRMD_REMOTE_MSG_TYPE); if (!msg_type) { - crm_err("Empty msg type received while waiting for reply"); + pcmk__err("Empty msg type received while waiting for reply"); pcmk__xml_free(*reply); *reply = NULL; } else if (pcmk__str_eq(msg_type, "notify", pcmk__str_casei)) { @@ -726,14 +726,15 @@ read_remote_reply(lrmd_t *lrmd, int total_timeout, int expected_reply_id, *reply = NULL; } else if (!pcmk__str_eq(msg_type, "reply", pcmk__str_casei)) { /* msg isn't a reply, make some noise */ - crm_err("Expected a reply, got %s", msg_type); + pcmk__err("Expected a reply, got %s", msg_type); pcmk__xml_free(*reply); *reply = NULL; } else if (reply_id != expected_reply_id) { if (native->expected_late_replies > 0) { native->expected_late_replies--; } else { - crm_err("Got outdated reply, expected id %d got id %d", expected_reply_id, reply_id); + pcmk__err("Got outdated reply, expected id %d got id %d", + expected_reply_id, reply_id); } pcmk__xml_free(*reply); *reply = NULL; @@ -762,8 +763,9 @@ send_remote_message(lrmd_t *lrmd, xmlNode *msg) rc = lrmd__remote_send_xml(native->remote, msg, global_remote_msg_id, "request"); if (rc != pcmk_rc_ok) { - crm_err("Disconnecting because TLS message could not be sent to " - "Pacemaker Remote: %s", pcmk_rc_str(rc)); + pcmk__err("Disconnecting because TLS message could not be sent to " + "Pacemaker Remote: %s", + pcmk_rc_str(rc)); lrmd_tls_disconnect(lrmd); } return rc; @@ -786,9 +788,9 @@ lrmd_tls_send_recv(lrmd_t * lrmd, xmlNode * msg, int timeout, xmlNode ** reply) rc = read_remote_reply(lrmd, timeout, global_remote_msg_id, &xml); if (rc != pcmk_rc_ok) { - crm_err("Disconnecting remote after request %d reply not received: %s " - QB_XS " rc=%d timeout=%dms", - global_remote_msg_id, pcmk_rc_str(rc), rc, timeout); + pcmk__err("Disconnecting remote after request %d reply not received: " + "%s " QB_XS " rc=%d timeout=%dms", + global_remote_msg_id, pcmk_rc_str(rc), rc, timeout); lrmd_tls_disconnect(lrmd); } @@ -815,8 +817,8 @@ lrmd_send_xml(lrmd_t * lrmd, xmlNode * msg, int timeout, xmlNode ** reply) rc = lrmd_tls_send_recv(lrmd, msg, timeout, reply); break; default: - crm_err("Unsupported executor connection type (bug?): %d", - native->type); + pcmk__err("Unsupported executor connection type (bug?): %d", + native->type); rc = -EPROTONOSUPPORT; } @@ -844,8 +846,8 @@ lrmd_send_xml_no_reply(lrmd_t * lrmd, xmlNode * msg) rc = pcmk_rc2legacy(rc); break; default: - crm_err("Unsupported executor connection type (bug?): %d", - native->type); + pcmk__err("Unsupported executor connection type (bug?): %d", + native->type); rc = -EPROTONOSUPPORT; } @@ -863,8 +865,8 @@ lrmd_api_is_connected(lrmd_t * lrmd) case pcmk__client_tls: return remote_executor_connected(lrmd); default: - crm_err("Unsupported executor connection type (bug?): %d", - native->type); + pcmk__err("Unsupported executor connection type (bug?): %d", + native->type); return 0; } } @@ -902,7 +904,7 @@ lrmd_send_command(lrmd_t *lrmd, const char *op, xmlNode *data, } if (op == NULL) { - crm_err("No operation specified"); + pcmk__err("No operation specified"); return -EINVAL; } @@ -947,7 +949,7 @@ lrmd_send_command(lrmd_t *lrmd, const char *op, xmlNode *data, done: if (lrmd_api_is_connected(lrmd) == FALSE) { - crm_err("Executor disconnected"); + pcmk__err("Executor disconnected"); } pcmk__xml_free(op_msg); @@ -1035,15 +1037,16 @@ process_lrmd_handshake_reply(xmlNode *reply, lrmd_private_t *native) } if (rc == EPROTO) { - crm_err("Executor protocol version mismatch between client (%s) and server (%s)", - LRMD_PROTOCOL_VERSION, version); + pcmk__err("Executor protocol version mismatch between client " + "(" LRMD_PROTOCOL_VERSION ") and server (%s)", + version); crm_log_xml_err(reply, "Protocol Error"); } else if (!pcmk__str_eq(msg_type, CRM_OP_REGISTER, pcmk__str_casei)) { - crm_err("Invalid registration message: %s", msg_type); + pcmk__err("Invalid registration message: %s", msg_type); crm_log_xml_err(reply, "Bad reply"); rc = EPROTO; } else if (tmp_ticket == NULL) { - crm_err("No registration token provided"); + pcmk__err("No registration token provided"); crm_log_xml_err(reply, "Bad reply"); rc = EPROTO; } else { @@ -1070,7 +1073,7 @@ lrmd_handshake(lrmd_t * lrmd, const char *name) crm_perror(LOG_DEBUG, "Couldn't complete registration with the executor API: %d", rc); rc = ECOMM; } else if (reply == NULL) { - crm_err("Did not receive registration reply"); + pcmk__err("Did not receive registration reply"); rc = EPROTO; } else { rc = process_lrmd_handshake_reply(reply, native); @@ -1127,7 +1130,7 @@ lrmd_ipc_connect(lrmd_t * lrmd, int *fd) rc = pcmk__ipc_fd(native->ipc, fd); } if (rc != pcmk_rc_ok) { - crm_err("Connection to executor failed: %s", pcmk_rc_str(rc)); + pcmk__err("Connection to executor failed: %s", pcmk_rc_str(rc)); rc = -ENOTCONN; } } @@ -1689,8 +1692,8 @@ lrmd_api_connect(lrmd_t * lrmd, const char *name, int *fd) rc = pcmk_rc2legacy(rc); break; default: - crm_err("Unsupported executor connection type (bug?): %d", - native->type); + pcmk__err("Unsupported executor connection type (bug?): %d", + native->type); rc = -EPROTONOSUPPORT; } @@ -1724,8 +1727,8 @@ lrmd_api_connect_async(lrmd_t * lrmd, const char *name, int timeout) rc = pcmk_rc2legacy(rc); break; default: - crm_err("Unsupported executor connection type (bug?): %d", - native->type); + pcmk__err("Unsupported executor connection type (bug?): %d", + native->type); rc = -EPROTONOSUPPORT; } @@ -1802,8 +1805,8 @@ lrmd_api_disconnect(lrmd_t * lrmd) lrmd_tls_disconnect(lrmd); break; default: - crm_err("Unsupported executor connection type (bug?): %d", - native->type); + pcmk__err("Unsupported executor connection type (bug?): %d", + native->type); rc = -EPROTONOSUPPORT; } @@ -1978,7 +1981,8 @@ lrmd_api_get_recurring_ops(lrmd_t *lrmd, const char *rsc_id, int timeout_ms, rsc_id = pcmk__xe_get(rsc_xml, PCMK__XA_LRMD_RSC_ID); if (rsc_id == NULL) { - crm_err("Could not parse recurring operation information from executor"); + pcmk__err("Could not parse recurring operation information from " + "executor"); continue; } for (const xmlNode *op_xml = pcmk__xe_first_child(rsc_xml, @@ -2055,7 +2059,8 @@ stonith_get_metadata(const char *provider, const char *type, char **output) stonith_t *stonith_api = stonith_api_new(); if (stonith_api == NULL) { - crm_err("Could not get fence agent meta-data: API memory allocation failed"); + pcmk__err("Could not get fence agent meta-data: API memory allocation " + "failed"); return -ENOMEM; } @@ -2115,15 +2120,15 @@ lrmd_api_get_metadata_params(lrmd_t *lrmd, const char *standard, } if (!services_action_sync(action)) { - crm_err("Failed to retrieve meta-data for %s:%s:%s", - standard, provider, type); + pcmk__err("Failed to retrieve meta-data for %s:%s:%s", standard, + provider, type); services_action_free(action); return -EIO; } if (!action->stdout_data) { - crm_err("Failed to receive meta-data for %s:%s:%s", - standard, provider, type); + pcmk__err("Failed to receive meta-data for %s:%s:%s", standard, + provider, type); services_action_free(action); return -EIO; } @@ -2217,7 +2222,7 @@ list_stonith_agents(lrmd_list_t ** resources) stonith_key_value_t *dIter = NULL; if (stonith_api == NULL) { - crm_err("Could not list fence agents: API memory allocation failed"); + pcmk__err("Could not list fence agents: API memory allocation failed"); return -ENOMEM; } stonith_api->cmds->list_agents(stonith_api, st_opt_sync_call, NULL, diff --git a/lib/lrmd/proxy_common.c b/lib/lrmd/proxy_common.c index c2156bf33d3..d55b1031216 100644 --- a/lib/lrmd/proxy_common.c +++ b/lib/lrmd/proxy_common.c @@ -180,7 +180,7 @@ remote_proxy_new(lrmd_t *lrmd, struct ipc_client_callbacks *proxy_callbacks, remote_proxy_t *proxy = NULL; if(channel == NULL) { - crm_err("No channel specified to proxy"); + pcmk__err("No channel specified to proxy"); remote_proxy_notify_destroy(lrmd, session_id); return NULL; } @@ -290,8 +290,11 @@ remote_proxy_cb(lrmd_t *lrmd, const char *node_name, xmlNode *msg) if(rc < 0) { xmlNode *op_reply = pcmk__xe_create(NULL, PCMK__XE_NACK); - crm_err("Could not relay %s request %d from %s to %s for %s: %s (%d)", - op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name, pcmk_strerror(rc), rc); + pcmk__err("Could not relay %s request %d from %s to %s for %s: " + "%s (%d)", + op, msg_id, proxy->node_name, + crm_ipc_name(proxy->ipc), name, pcmk_strerror(rc), + rc); /* Send a n'ack so the caller doesn't block */ pcmk__xe_set(op_reply, PCMK_XA_FUNCTION, __func__); @@ -316,8 +319,10 @@ remote_proxy_cb(lrmd_t *lrmd, const char *node_name, xmlNode *msg) rc = crm_ipc_send(proxy->ipc, request, flags, 10000, &op_reply); if(rc < 0) { - crm_err("Could not relay %s request %d from %s to %s for %s: %s (%d)", - op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name, pcmk_strerror(rc), rc); + pcmk__err("Could not relay %s request %d from %s to %s for %s: " + "%s (%d)", + op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), + name, pcmk_strerror(rc), rc); } else { crm_trace("Relayed %s request %d from %s to %s for %s", op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name); @@ -329,6 +334,6 @@ remote_proxy_cb(lrmd_t *lrmd, const char *node_name, xmlNode *msg) } } } else { - crm_err("Unknown proxy operation: %s", op); + pcmk__err("Unknown proxy operation: %s", op); } } diff --git a/lib/pacemaker/pcmk_graph_consumer.c b/lib/pacemaker/pcmk_graph_consumer.c index 097689acf31..9994fa63b88 100644 --- a/lib/pacemaker/pcmk_graph_consumer.c +++ b/lib/pacemaker/pcmk_graph_consumer.c @@ -320,9 +320,9 @@ initiate_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) return graph_fns->cluster(graph, action); default: - crm_err("Unsupported graph action type <%s " PCMK_XA_ID "='%s'> " - "(bug?)", - action->xml->name, id); + pcmk__err("Unsupported graph action type <%s " PCMK_XA_ID "='%s'> " + "(bug?)", + action->xml->name, id); return EINVAL; } } @@ -345,10 +345,10 @@ fire_synapse(pcmk__graph_t *graph, pcmk__graph_synapse_t *synapse) int rc = initiate_action(graph, action); if (rc != pcmk_rc_ok) { - crm_err("Failed initiating <%s " PCMK_XA_ID "=%d> in synapse %d: " - "%s", - action->xml->name, action->id, synapse->id, - pcmk_rc_str(rc)); + pcmk__err("Failed initiating <%s " PCMK_XA_ID "=%d> in synapse %d: " + "%s", + action->xml->name, action->id, synapse->id, + pcmk_rc_str(rc)); pcmk__set_synapse_flags(synapse, pcmk__synapse_confirmed); pcmk__set_graph_action_flags(action, pcmk__graph_action_confirmed @@ -387,7 +387,8 @@ pseudo_action_dummy(pcmk__graph_t *graph, pcmk__graph_action_t *action) } if (action->id == fail) { - crm_err("Dummy event handler: pretending action %d failed", action->id); + pcmk__err("Dummy event handler: pretending action %d failed", + action->id); pcmk__set_graph_action_flags(action, pcmk__graph_action_failed); graph->abort_priority = PCMK_SCORE_INFINITY; } else { @@ -472,7 +473,7 @@ pcmk__execute_graph(pcmk__graph_t *graph) } else if (should_fire_synapse(graph, synapse)) { graph->fired++; if (fire_synapse(graph, synapse) != pcmk_rc_ok) { - crm_err("Synapse %d failed to fire", synapse->id); + pcmk__err("Synapse %d failed to fire", synapse->id); log_level = LOG_ERR; graph->abort_priority = PCMK_SCORE_INFINITY; graph->incomplete++; @@ -543,8 +544,8 @@ unpack_action(pcmk__graph_synapse_t *parent, xmlNode *xml_action) const char *value = pcmk__xe_id(xml_action); if (value == NULL) { - crm_err("Ignoring transition graph action without " PCMK_XA_ID - " (bug?)"); + pcmk__err("Ignoring transition graph action without " PCMK_XA_ID + " (bug?)"); crm_log_xml_trace(xml_action, "invalid"); return NULL; } @@ -559,8 +560,9 @@ unpack_action(pcmk__graph_synapse_t *parent, xmlNode *xml_action) action_type = pcmk__cluster_graph_action; } else { - crm_err("Ignoring transition graph action of unknown type '%s' (bug?)", - xml_action->name); + pcmk__err("Ignoring transition graph action of unknown type '%s' " + "(bug?)", + xml_action->name); crm_log_xml_trace(xml_action, "invalid"); return NULL; } diff --git a/lib/pacemaker/pcmk_graph_producer.c b/lib/pacemaker/pcmk_graph_producer.c index b8168e29b2e..92e377b5c13 100644 --- a/lib/pacemaker/pcmk_graph_producer.c +++ b/lib/pacemaker/pcmk_graph_producer.c @@ -946,10 +946,10 @@ pcmk__log_transition_summary(const pcmk_scheduler_t *scheduler, { if (pcmk__is_set(scheduler->flags, pcmk__sched_processing_error) || pcmk__config_has_error) { - crm_err("Calculated transition %d (with errors)%s%s", - transition_id, - (filename == NULL)? "" : ", saving inputs in ", - (filename == NULL)? "" : filename); + pcmk__err("Calculated transition %d (with errors)%s%s", + transition_id, + ((filename != NULL)? ", saving inputs in " : ""), + ((filename != NULL)? filename : "")); } else if (pcmk__is_set(scheduler->flags, pcmk__sched_processing_warning) || pcmk__config_has_warning) { diff --git a/lib/pacemaker/pcmk_injections.c b/lib/pacemaker/pcmk_injections.c index 5199fca47cd..08f5e5af891 100644 --- a/lib/pacemaker/pcmk_injections.c +++ b/lib/pacemaker/pcmk_injections.c @@ -271,9 +271,9 @@ pcmk__inject_node(cib_t *cib_conn, const char *node, const char *uuid) cib_xpath|cib_sync_call); if ((cib_object != NULL) && (pcmk__xe_id(cib_object) == NULL)) { - crm_err("Detected multiple " PCMK__XE_NODE_STATE " entries for " - "xpath=%s, bailing", - xpath); + pcmk__err("Detected multiple " PCMK__XE_NODE_STATE " entries for " + "xpath=%s, bailing", + xpath); duplicate = true; goto done; } @@ -296,8 +296,9 @@ pcmk__inject_node(cib_t *cib_conn, const char *node, const char *uuid) cib_xpath|cib_sync_call); if ((cib_object != NULL) && (pcmk__xe_id(cib_object) == NULL)) { - crm_err("Can't inject node state for %s because multiple " - "state entries found for ID %s", node, found_uuid); + pcmk__err("Can't inject node state for %s because multiple " + "state entries found for ID %s", + node, found_uuid); duplicate = true; free(xpath_by_uuid); goto done; diff --git a/lib/pacemaker/pcmk_output.c b/lib/pacemaker/pcmk_output.c index f200fd09435..ed6a413b044 100644 --- a/lib/pacemaker/pcmk_output.c +++ b/lib/pacemaker/pcmk_output.c @@ -1085,12 +1085,12 @@ digests_xml(pcmk__output_t *out, va_list args) if ((current != NULL) && current->details->unclean) { \ /* It will be a pseudo op */ \ } else if (stop == NULL) { \ - crm_err("%s:%d: No stop action exists for %s", \ - __func__, lineno, rsc->id); \ + pcmk__err("%s:%d: No stop action exists for %s", \ + __func__, lineno, rsc->id); \ pcmk__assert(stop != NULL); \ } else if (pcmk__is_set(stop->flags, pcmk__action_optional)) { \ - crm_err("%s:%d: Action %s is still optional", \ - __func__, lineno, stop->uuid); \ + pcmk__err("%s:%d: Action %s is still optional", \ + __func__, lineno, stop->uuid); \ pcmk__assert(!pcmk__is_set(stop->flags, \ pcmk__action_optional)); \ } \ diff --git a/lib/pacemaker/pcmk_sched_actions.c b/lib/pacemaker/pcmk_sched_actions.c index 70933ee857b..7c219a25403 100644 --- a/lib/pacemaker/pcmk_sched_actions.c +++ b/lib/pacemaker/pcmk_sched_actions.c @@ -137,7 +137,7 @@ action_uuid_for_ordering(const char *first_uuid, case pcmk__action_fence: break; default: - crm_err("Unknown action '%s' in ordering", first_task_str); + pcmk__err("Unknown action '%s' in ordering", first_task_str); break; } diff --git a/lib/pacemaker/pcmk_sched_instances.c b/lib/pacemaker/pcmk_sched_instances.c index 0ca9c727271..e9873ca5049 100644 --- a/lib/pacemaker/pcmk_sched_instances.c +++ b/lib/pacemaker/pcmk_sched_instances.c @@ -1335,8 +1335,8 @@ find_instance_action(const pcmk_action_t *action, const pcmk_resource_t *instanc } else if (pcmk__is_down_action(action_name)) { crm_trace("No %s action found for %s", action_name, instance->id); } else { - crm_err("No %s action found for %s to interleave (bug?)", - action_name, instance->id); + pcmk__err("No %s action found for %s to interleave (bug?)", + action_name, instance->id); } return NULL; } diff --git a/lib/pacemaker/pcmk_sched_promotable.c b/lib/pacemaker/pcmk_sched_promotable.c index ab095468db5..6da093bb5c0 100644 --- a/lib/pacemaker/pcmk_sched_promotable.c +++ b/lib/pacemaker/pcmk_sched_promotable.c @@ -1003,8 +1003,9 @@ set_instance_priority(gpointer data, gpointer user_data) break; default: - CRM_CHECK(FALSE, crm_err("Unknown resource role %d for %s", - next_role, instance->id)); + CRM_CHECK(FALSE, + pcmk__err("Unknown resource role %d for %s", next_role, + instance->id)); } // Add relevant location constraint scores for promoted role diff --git a/lib/pacemaker/pcmk_simulate.c b/lib/pacemaker/pcmk_simulate.c index c46d0e239e5..9e46504ad2a 100644 --- a/lib/pacemaker/pcmk_simulate.c +++ b/lib/pacemaker/pcmk_simulate.c @@ -646,8 +646,8 @@ simulate_resource_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) resource_config_name, rclass, rtype, rprovider); if (cib_resource == NULL) { - crm_err("Could not simulate action %d history for resource %s", - action->id, resource); + pcmk__err("Could not simulate action %d history for resource %s", + action->id, resource); free(node); pcmk__xml_free(cib_node); return EINVAL; diff --git a/lib/services/dbus.c b/lib/services/dbus.c index 3b6994bc117..197b2186f80 100644 --- a/lib/services/dbus.c +++ b/lib/services/dbus.c @@ -265,7 +265,7 @@ pcmk_dbus_connect(void) dbus_error_init(&err); connection = dbus_bus_get(DBUS_BUS_SYSTEM, &err); if (dbus_error_is_set(&err)) { - crm_err("Could not connect to DBus: %s", err.message); + pcmk__err("Could not connect to DBus: %s", err.message); dbus_error_free(&err); return NULL; } @@ -492,12 +492,12 @@ pcmk_dbus_send(DBusMessage *msg, DBusConnection *connection, // send message and get a handle for a reply if (!dbus_connection_send_with_reply(connection, msg, &pending, timeout)) { - crm_err("Could not send DBus %s message: failed", method); + pcmk__err("Could not send DBus %s message: failed", method); return NULL; } else if (pending == NULL) { - crm_err("Could not send DBus %s message: connection may be closed", - method); + pcmk__err("Could not send DBus %s message: connection may be closed", + method); return NULL; } @@ -599,8 +599,8 @@ handle_query_result(DBusMessage *reply, struct property_query *data) // First, check if the reply contains an error if (pcmk_dbus_find_error((void*)&error, reply, &error)) { - crm_err("DBus query for %s property '%s' failed: %s", - data->object, data->name, error.message); + pcmk__err("DBus query for %s property '%s' failed: %s", data->object, + data->name, error.message); dbus_error_free(&error); goto cleanup; } @@ -609,8 +609,9 @@ handle_query_result(DBusMessage *reply, struct property_query *data) dbus_message_iter_init(reply, &args); if (!pcmk_dbus_type_check(reply, &args, DBUS_TYPE_VARIANT, __func__, __LINE__)) { - crm_err("DBus query for %s property '%s' failed: Unexpected reply type", - data->object, data->name); + pcmk__err("DBus query for %s property '%s' failed: Unexpected reply " + "type", + data->object, data->name); goto cleanup; } @@ -618,8 +619,9 @@ handle_query_result(DBusMessage *reply, struct property_query *data) dbus_message_iter_recurse(&args, &variant_iter); if (!pcmk_dbus_type_check(reply, &variant_iter, DBUS_TYPE_STRING, __func__, __LINE__)) { - crm_err("DBus query for %s property '%s' failed: " - "Unexpected variant type", data->object, data->name); + pcmk__err("DBus query for %s property '%s' failed: Unexpected variant " + "type", + data->object, data->name); goto cleanup; } dbus_message_iter_get_basic(&variant_iter, &value); @@ -627,15 +629,16 @@ handle_query_result(DBusMessage *reply, struct property_query *data) // There should be no more arguments (in variant or reply) dbus_message_iter_next(&variant_iter); if (dbus_message_iter_get_arg_type(&variant_iter) != DBUS_TYPE_INVALID) { - crm_err("DBus query for %s property '%s' failed: " - "Too many arguments in reply", - data->object, data->name); + pcmk__err("DBus query for %s property '%s' failed: Too many arguments " + "in reply", + data->object, data->name); goto cleanup; } dbus_message_iter_next(&args); if (dbus_message_iter_get_arg_type(&args) != DBUS_TYPE_INVALID) { - crm_err("DBus query for %s property '%s' failed: " - "Too many arguments in reply", data->object, data->name); + pcmk__err("DBus query for %s property '%s' failed: TOo many arguments " + "in reply", + data->object, data->name); goto cleanup; } @@ -711,8 +714,9 @@ pcmk_dbus_get_property(DBusConnection *connection, const char *target, // Create a new message to use to invoke method msg = dbus_message_new_method_call(target, obj, BUS_PROPERTY_IFACE, "Get"); if (msg == NULL) { - crm_err("DBus query for %s property '%s' failed: " - "Unable to create message", obj, name); + pcmk__err("DBus query for %s property '%s' failed: Unable to create " + "message", + obj, name); return NULL; } @@ -721,8 +725,9 @@ pcmk_dbus_get_property(DBusConnection *connection, const char *target, DBUS_TYPE_STRING, &iface, DBUS_TYPE_STRING, &name, DBUS_TYPE_INVALID)) { - crm_err("DBus query for %s property '%s' failed: " - "Could not append arguments", obj, name); + pcmk__err("DBus query for %s property '%s' failed: Could not append " + "arguments", + obj, name); dbus_message_unref(msg); return NULL; } diff --git a/lib/services/services.c b/lib/services/services.c index 2b55e4115cd..4062d957d84 100644 --- a/lib/services/services.c +++ b/lib/services/services.c @@ -682,7 +682,7 @@ services_action_cancel(const char *name, const char *action, guint interval_ms) id, op->pid); cancelled = mainloop_child_kill(op->pid); if (cancelled == FALSE) { - crm_err("Termination of %s[%d] failed", id, op->pid); + pcmk__err("Termination of %s[%d] failed", id, op->pid); } goto done; } diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c index 309ad9987d6..acf25308368 100644 --- a/lib/services/services_linux.c +++ b/lib/services/services_linux.c @@ -990,9 +990,9 @@ action_launch_child(svc_action_t *op) "despite being unable to load CIB secrets (%s)", op->rsc, pcmk_rc_str(rc)); } else { - crm_err("Considering %s unconfigured " - "because unable to load CIB secrets: %s", - op->rsc, pcmk_rc_str(rc)); + pcmk__err("Considering %s unconfigured because unable to load CIB " + "secrets: %s", + op->rsc, pcmk_rc_str(rc)); exit_child(op, services__configuration_error(op, false), "Unable to load CIB secrets"); } @@ -1006,9 +1006,9 @@ action_launch_child(svc_action_t *op) // If requested, set effective group if (op->opaque->gid && (setgid(op->opaque->gid) < 0)) { - crm_err("Considering %s unauthorized because could not set " - "child group to %d: %s", - op->id, op->opaque->gid, strerror(errno)); + pcmk__err("Considering %s unauthorized because could not set child " + "group to %d: %s", + op->id, op->opaque->gid, strerror(errno)); exit_child(op, services__authorization_error(op), "Could not set group for child process"); } @@ -1016,16 +1016,18 @@ action_launch_child(svc_action_t *op) // Erase supplementary group list // (We could do initgroups() if we kept a copy of the username) if (setgroups(0, NULL) < 0) { - crm_err("Considering %s unauthorized because could not " - "clear supplementary groups: %s", op->id, strerror(errno)); + pcmk__err("Considering %s unauthorized because could not clear " + "supplementary groups: %s", + op->id, strerror(errno)); exit_child(op, services__authorization_error(op), "Could not clear supplementary groups for child process"); } // Set effective user if (setuid(op->opaque->uid) < 0) { - crm_err("Considering %s unauthorized because could not set user " - "to %d: %s", op->id, op->opaque->uid, strerror(errno)); + pcmk__err("Considering %s unauthorized because could not set user " + "to %d: %s", + op->id, op->opaque->uid, strerror(errno)); exit_child(op, services__authorization_error(op), "Could not set user for child process"); } @@ -1037,7 +1039,7 @@ action_launch_child(svc_action_t *op) // An earlier stat() should have avoided most possible errors rc = errno; services__handle_exec_error(op, rc); - crm_err("Unable to execute %s: %s", op->id, strerror(rc)); + pcmk__err("Unable to execute %s: %s", op->id, strerror(rc)); exit_child(op, op->rc, "Child process was unable to execute file"); } diff --git a/lib/services/systemd.c b/lib/services/systemd.c index 417f209cd07..8d7105c93f9 100644 --- a/lib/services/systemd.c +++ b/lib/services/systemd.c @@ -120,7 +120,7 @@ systemd_call_simple_method(const char *method) msg = systemd_new_method(method); if (msg == NULL) { - crm_err("Could not create message to send %s to systemd", method); + pcmk__err("Could not create message to send %s to systemd", method); return NULL; } @@ -129,13 +129,13 @@ systemd_call_simple_method(const char *method) dbus_message_unref(msg); if (dbus_error_is_set(&error)) { - crm_err("Could not send %s to systemd: %s (%s)", - method, error.message, error.name); + pcmk__err("Could not send %s to systemd: %s (%s)", method, + error.message, error.name); dbus_error_free(&error); return NULL; } else if (reply == NULL) { - crm_err("Could not send %s to systemd: no reply received", method); + pcmk__err("Could not send %s to systemd: no reply received", method); return NULL; } @@ -169,8 +169,9 @@ subscribe_to_signals(void) dbus_bus_add_match(systemd_proxy, match_rule, &error); if (dbus_error_is_set(&error)) { - crm_err("Could not listen for systemd DBus signals: %s " QB_XS " (%s)", - error.message, error.name); + pcmk__err("Could not listen for systemd DBus signals: %s " + QB_XS " (%s)", + error.message, error.name); dbus_error_free(&error); return ECOMM; } @@ -616,13 +617,15 @@ systemd_unit_listall(void) return NULL; } if (!dbus_message_iter_init(reply, &args)) { - crm_err("Could not list systemd unit files: systemd reply has no arguments"); + pcmk__err("Could not list systemd unit files: systemd reply has no " + "arguments"); dbus_message_unref(reply); return NULL; } if (!pcmk_dbus_type_check(reply, &args, DBUS_TYPE_ARRAY, __func__, __LINE__)) { - crm_err("Could not list systemd unit files: systemd reply has invalid arguments"); + pcmk__err("Could not list systemd unit files: systemd reply has " + "invalid arguments"); dbus_message_unref(reply); return NULL; } @@ -890,8 +893,8 @@ job_removed_filter(DBusConnection *connection, DBusMessage *message, DBUS_TYPE_STRING, &unit_name, DBUS_TYPE_STRING, &result, DBUS_TYPE_INVALID)) { - crm_err("Could not interpret systemd DBus signal: %s " QB_XS " (%s)", - error.message, error.name); + pcmk__err("Could not interpret systemd DBus signal: %s " QB_XS " (%s)", + error.message, error.name); dbus_error_free(&error); return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } @@ -987,7 +990,7 @@ unit_method_complete(DBusPendingCall *pending, void *user_data) finalize_async_action_dbus)) { return; } - crm_err("Could not add D-Bus filter for systemd JobRemoved signals"); + pcmk__err("Could not add D-Bus filter for systemd JobRemoved signals"); services__set_result(op, PCMK_OCF_UNKNOWN_ERROR, PCMK_EXEC_ERROR, "Failed to add D-Bus filter for systemd " "JobRemoved signal"); @@ -1074,8 +1077,8 @@ systemd_create_override(const char *agent, int timeout) filename = get_override_dir(unit_name); rc = pcmk__build_path(filename->str, 0755); if (rc != pcmk_rc_ok) { - crm_err("Could not create systemd override directory %s: %s", - filename->str, pcmk_rc_str(rc)); + pcmk__err("Could not create systemd override directory %s: %s", + filename->str, pcmk_rc_str(rc)); goto done; } @@ -1083,8 +1086,8 @@ systemd_create_override(const char *agent, int timeout) fp = fopen(filename->str, "w"); if (fp == NULL) { rc = errno; - crm_err("Cannot open systemd override file %s for writing: %s", - filename->str, pcmk_rc_str(rc)); + pcmk__err("Cannot open systemd override file %s for writing: %s", + filename->str, pcmk_rc_str(rc)); goto done; } @@ -1092,8 +1095,8 @@ systemd_create_override(const char *agent, int timeout) fd = fileno(fp); if ((fd < 0) || (fchmod(fd, S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH) < 0)) { rc = errno; - crm_err("Failed to set permissions on systemd override file %s: %s", - filename->str, pcmk_rc_str(rc)); + pcmk__err("Failed to set permissions on systemd override file %s: %s", + filename->str, pcmk_rc_str(rc)); goto done; } @@ -1105,7 +1108,7 @@ systemd_create_override(const char *agent, int timeout) if (fputs(override->str, fp) == EOF) { rc = EIO; - crm_err("Cannot write to systemd override file %s", filename->str); + pcmk__err("Cannot write to systemd override file %s", filename->str); } done: diff --git a/tools/cibadmin.c b/tools/cibadmin.c index 96c1b4d17a7..42fe9a245ba 100644 --- a/tools/cibadmin.c +++ b/tools/cibadmin.c @@ -767,8 +767,8 @@ main(int argc, char **argv) rc = pcmk_legacy2rc(rc); exit_code = pcmk_rc2exitc(rc); - crm_err("Init failed, could not perform requested operations: %s", - pcmk_rc_str(rc)); + pcmk__err("Init failed, could not perform requested operations: %s", + pcmk_rc_str(rc)); g_set_error(&error, PCMK__EXITC_ERROR, exit_code, "Init failed, could not perform requested operations: %s", pcmk_rc_str(rc)); @@ -784,7 +784,7 @@ main(int argc, char **argv) report_schema_unchanged(); } else if (rc != pcmk_rc_ok) { - crm_err("Call failed: %s", pcmk_rc_str(rc)); + pcmk__err("Call failed: %s", pcmk_rc_str(rc)); fprintf(stderr, "Call failed: %s\n", pcmk_rc_str(rc)); exit_code = pcmk_rc2exitc(rc); @@ -891,7 +891,7 @@ do_init(void) the_cib = cib_new(); rc = cib__signon_attempts(the_cib, cib_command, 5); if (rc != pcmk_ok) { - crm_err("Could not connect to the CIB: %s", pcmk_strerror(rc)); + pcmk__err("Could not connect to the CIB: %s", pcmk_strerror(rc)); fprintf(stderr, "Could not connect to the CIB: %s\n", pcmk_strerror(rc)); } diff --git a/tools/crm_mon.c b/tools/crm_mon.c index 30d0f532b69..52b728b7857 100644 --- a/tools/crm_mon.c +++ b/tools/crm_mon.c @@ -1757,12 +1757,12 @@ handle_rsc_op(xmlNode *xml, void *userdata) if (!decode_transition_magic(magic, NULL, NULL, NULL, &status, &rc, &target_rc)) { - crm_err("Invalid event %s detected for %s", magic, id); + pcmk__err("Invalid event %s detected for %s", magic, id); return pcmk_rc_ok; } if (parse_op_key(id, &rsc, &task, NULL) == FALSE) { - crm_err("Invalid event detected for %s", id); + pcmk__err("Invalid event detected for %s", id); goto bail; } @@ -1785,7 +1785,7 @@ handle_rsc_op(xmlNode *xml, void *userdata) } if (node == NULL) { - crm_err("No node detected for event %s (%s)", magic, id); + pcmk__err("No node detected for event %s (%s)", magic, id); goto bail; } @@ -1972,7 +1972,7 @@ crm_diff_update(const char *event, xmlNode * msg) pcmk__xe_foreach_child(diff, NULL, crm_diff_update_element, NULL); } else { - crm_err("Unknown patch format: %d", format); + pcmk__err("Unknown patch format: %d", format); } } diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c index bf9b52506d5..b425494c404 100644 --- a/tools/crm_resource_runtime.c +++ b/tools/crm_resource_runtime.c @@ -130,7 +130,7 @@ find_resource_attr(pcmk__output_t *out, cib_t * the_cib, const char *attr, xpath_base = pcmk_cib_xpath_for(PCMK_XE_RESOURCES); if (xpath_base == NULL) { - crm_err(PCMK_XE_RESOURCES " CIB element not known (bug?)"); + pcmk__err(PCMK_XE_RESOURCES " CIB element not known (bug?)"); return ENOMSG; } From eb02cb62374f2924244747d5cb9611513ae252da Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 26 Mar 2025 20:36:22 -0700 Subject: [PATCH 157/186] API: libcrmcommon: Deprecate crm_err() Pacemaker should not be used for general-purpose logging. Ref T622 Signed-off-by: Reid Wahl --- include/crm/common/logging.h | 3 --- include/crm/common/logging_compat.h | 4 ++++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/include/crm/common/logging.h b/include/crm/common/logging.h index 4ef5dc0b33b..9958e1f8dfe 100644 --- a/include/crm/common/logging.h +++ b/include/crm/common/logging.h @@ -346,9 +346,6 @@ pcmk__clip_log_level(int level) } \ } while (0) -// NOTE: sbd (as of at least 1.5.2) uses this -#define crm_err(fmt, args...) qb_log(LOG_ERR, fmt, ##args) - // NOTE: sbd (as of at least 1.5.2) uses this #define crm_warn(fmt, args...) qb_log(LOG_WARNING, fmt, ##args) diff --git a/include/crm/common/logging_compat.h b/include/crm/common/logging_compat.h index 8deedd1dfd5..2e3005265cc 100644 --- a/include/crm/common/logging_compat.h +++ b/include/crm/common/logging_compat.h @@ -28,6 +28,10 @@ extern "C" { //! \deprecated Do not use #define crm_crit(fmt, args...) qb_log(LOG_CRIT, fmt, ##args) +// NOTE: sbd (as of at least 1.5.2) uses this +//! \deprecated Do not use +#define crm_err(fmt, args...) qb_log(LOG_ERR, fmt, ##args) + #ifdef __cplusplus } #endif From 60d99bf84f02ca9503833ab6e5168581412494d5 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 26 Mar 2025 21:28:41 -0700 Subject: [PATCH 158/186] Refactor: libcrmcommon: New pcmk__warn() To replace crm_warn() Signed-off-by: Reid Wahl --- daemons/attrd/attrd_attributes.c | 18 ++--- daemons/attrd/attrd_corosync.c | 2 +- daemons/attrd/attrd_messages.c | 7 +- daemons/attrd/attrd_sync.c | 2 +- daemons/based/based_callbacks.c | 30 ++++---- daemons/based/based_io.c | 20 +++--- daemons/based/based_messages.c | 8 +-- daemons/based/based_notify.c | 8 +-- daemons/based/based_remote.c | 67 ++++++++++-------- daemons/controld/controld_callbacks.c | 4 +- daemons/controld/controld_cib.c | 27 +++---- daemons/controld/controld_control.c | 6 +- daemons/controld/controld_corosync.c | 6 +- daemons/controld/controld_election.c | 3 +- daemons/controld/controld_execd.c | 16 +++-- daemons/controld/controld_execd_state.c | 15 ++-- daemons/controld/controld_fencing.c | 17 ++--- daemons/controld/controld_fsa.c | 16 +++-- daemons/controld/controld_join_client.c | 23 +++--- daemons/controld/controld_join_dc.c | 36 +++++----- daemons/controld/controld_membership.c | 2 +- daemons/controld/controld_messages.c | 46 ++++++------ daemons/controld/controld_metadata.c | 29 ++++---- daemons/controld/controld_schedulerd.c | 2 +- daemons/controld/controld_te_actions.c | 4 +- daemons/controld/controld_te_callbacks.c | 22 +++--- daemons/controld/controld_te_utils.c | 10 +-- daemons/controld/controld_throttle.c | 6 +- daemons/controld/controld_utils.c | 4 +- daemons/execd/execd_commands.c | 21 +++--- daemons/execd/pacemaker-execd.c | 5 +- daemons/execd/remoted_proxy.c | 12 ++-- daemons/execd/remoted_schemas.c | 13 ++-- daemons/execd/remoted_tls.c | 3 +- daemons/fenced/fenced_cib.c | 9 +-- daemons/fenced/fenced_commands.c | 90 +++++++++++++----------- daemons/fenced/fenced_history.c | 7 +- daemons/fenced/fenced_remote.c | 52 +++++++------- daemons/fenced/pacemaker-fenced.c | 17 ++--- daemons/pacemakerd/pacemakerd.c | 19 ++--- daemons/pacemakerd/pcmkd_corosync.c | 19 ++--- daemons/pacemakerd/pcmkd_messages.c | 6 +- daemons/pacemakerd/pcmkd_subdaemons.c | 88 +++++++++++------------ daemons/schedulerd/schedulerd_messages.c | 2 +- include/crm/common/logging_internal.h | 13 +++- include/crm/common/scheduler_internal.h | 2 +- lib/cib/cib_attrs.c | 2 +- lib/cib/cib_client.c | 4 +- lib/cib/cib_file.c | 11 +-- lib/cib/cib_native.c | 4 +- lib/cib/cib_ops.c | 8 ++- lib/cib/cib_remote.c | 2 +- lib/cib/cib_utils.c | 12 ++-- lib/cluster/corosync.c | 50 +++++++------ lib/cluster/cpg.c | 42 +++++------ lib/cluster/election.c | 29 ++++---- lib/cluster/membership.c | 23 +++--- lib/common/acl.c | 2 +- lib/common/actions.c | 7 +- lib/common/health.c | 4 +- lib/common/ipc_client.c | 36 +++++----- lib/common/ipc_common.c | 12 ++-- lib/common/ipc_pacemakerd.c | 6 +- lib/common/ipc_server.c | 22 +++--- lib/common/logging.c | 25 +++---- lib/common/mainloop.c | 3 +- lib/common/messages.c | 3 +- lib/common/patchset.c | 2 +- lib/common/procfs.c | 8 +-- lib/common/remote.c | 36 +++++----- lib/common/results.c | 4 +- lib/common/rules.c | 10 +-- lib/common/schemas.c | 11 +-- lib/common/strings.c | 38 +++++----- lib/common/watchdog.c | 13 ++-- lib/common/xml_element.c | 26 +++---- lib/common/xml_io.c | 22 +++--- lib/common/xpath.c | 2 +- lib/fencing/st_client.c | 38 +++++----- lib/fencing/st_lha.c | 6 +- lib/fencing/st_rhcs.c | 17 ++--- lib/lrmd/lrmd_client.c | 33 ++++----- lib/lrmd/proxy_common.c | 7 +- lib/pacemaker/pcmk_graph_consumer.c | 2 +- lib/pacemaker/pcmk_graph_producer.c | 19 ++--- lib/pacemaker/pcmk_sched_actions.c | 5 +- lib/pacemaker/pcmk_sched_instances.c | 4 +- lib/pacemaker/pcmk_sched_location.c | 8 +-- lib/pacemaker/pcmk_sched_ordering.c | 7 +- lib/pacemaker/pcmk_sched_primitive.c | 6 +- lib/pacemaker/pcmk_sched_promotable.c | 6 +- lib/pengine/failcounts.c | 8 +-- lib/pengine/pe_health.c | 15 ++-- lib/pengine/unpack.c | 48 +++++++------ lib/services/services.c | 8 +-- lib/services/services_linux.c | 44 ++++++------ lib/services/systemd.c | 14 ++-- tools/crm_attribute.c | 2 +- tools/crm_mon.c | 8 +-- tools/stonith_admin.c | 2 +- 100 files changed, 859 insertions(+), 761 deletions(-) diff --git a/daemons/attrd/attrd_attributes.c b/daemons/attrd/attrd_attributes.c index aa2e3b9f3b4..f3f7903c8a6 100644 --- a/daemons/attrd/attrd_attributes.c +++ b/daemons/attrd/attrd_attributes.c @@ -42,8 +42,8 @@ attrd_create_attribute(xmlNode *xml) if (!is_private && !pcmk__str_any_of(set_type, PCMK_XE_INSTANCE_ATTRIBUTES, PCMK_XE_UTILIZATION, NULL)) { - crm_warn("Ignoring attribute %s with invalid set type %s", - pcmk__s(name, "(unidentified)"), set_type); + pcmk__warn("Ignoring attribute %s with invalid set type %s", + pcmk__s(name, "(unidentified)"), set_type); return NULL; } @@ -61,8 +61,8 @@ attrd_create_attribute(xmlNode *xml) if (dampen_s != NULL) { if ((pcmk__parse_ms(dampen_s, &dampen) != pcmk_rc_ok) || (dampen < 0)) { - crm_warn("Ignoring invalid delay %s for attribute %s", dampen_s, - a->id); + pcmk__warn("Ignoring invalid delay %s for attribute %s", dampen_s, + a->id); } else if (dampen > 0) { a->timeout_ms = (int) QB_MIN(dampen, INT_MAX); @@ -86,14 +86,14 @@ attrd_update_dampening(attribute_t *a, xmlNode *xml, const char *attr) long long dampen = 0; if (dvalue == NULL) { - crm_warn("Could not update %s: peer did not specify value for delay", - attr); + pcmk__warn("Could not update %s: peer did not specify value for delay", + attr); return EINVAL; } if ((pcmk__parse_ms(dvalue, &dampen) != pcmk_rc_ok) || (dampen < 0)) { - crm_warn("Could not update %s: invalid delay value %dms (%s)", - attr, dampen, dvalue); + pcmk__warn("Could not update %s: invalid delay value %dms (%s)", attr, + dampen, dvalue); return EINVAL; } @@ -203,7 +203,7 @@ attrd_populate_attribute(xmlNode *xml, const char *attr) } } else { - crm_warn("Could not update %s: attribute not found", attr); + pcmk__warn("Could not update %s: attribute not found", attr); return NULL; } } diff --git a/daemons/attrd/attrd_corosync.c b/daemons/attrd/attrd_corosync.c index 48d86d9162f..9e2363a09fa 100644 --- a/daemons/attrd/attrd_corosync.c +++ b/daemons/attrd/attrd_corosync.c @@ -340,7 +340,7 @@ attrd_peer_update_one(const pcmk__node_status_t *peer, xmlNode *xml, const char *host = pcmk__xe_get(xml, PCMK__XA_ATTR_HOST); if (attr == NULL) { - crm_warn("Could not update attribute: peer did not specify name"); + pcmk__warn("Could not update attribute: peer did not specify name"); return; } diff --git a/daemons/attrd/attrd_messages.c b/daemons/attrd/attrd_messages.c index 027247f691a..7c38ec6b9f9 100644 --- a/daemons/attrd/attrd_messages.c +++ b/daemons/attrd/attrd_messages.c @@ -46,8 +46,9 @@ remove_unsupported_sync_points(pcmk__request_t *request) { if (request->xml->children != NULL && !ATTRD_SUPPORTS_MULTI_MESSAGE(minimum_protocol_version) && attrd_request_has_sync_point(request->xml)) { - crm_warn("Ignoring sync point in request from %s because not all nodes support it", - pcmk__request_origin(request)); + pcmk__warn("Ignoring sync point in request from %s because not all " + "nodes support it", + pcmk__request_origin(request)); remove_sync_point_attribute(request->xml, NULL); } } @@ -294,7 +295,7 @@ attrd_handle_request(pcmk__request_t *request) (reason == NULL)? "" : ")"); if (!pcmk__result_ok(&request->result)) { - crm_warn("%s", log_msg); + pcmk__warn("%s", log_msg); } else { crm_debug("%s", log_msg); } diff --git a/daemons/attrd/attrd_sync.c b/daemons/attrd/attrd_sync.c index dbdbaafe8ca..6691cff667d 100644 --- a/daemons/attrd/attrd_sync.c +++ b/daemons/attrd/attrd_sync.c @@ -241,7 +241,7 @@ attrd_ack_waitlist_clients(enum attrd_sync_point sync_point, const xmlNode *xml) } if (pcmk__xe_get_int(xml, PCMK__XA_CALL_ID, &callid) != pcmk_rc_ok) { - crm_warn("Could not get callid from request XML"); + pcmk__warn("Could not get callid from request XML"); return; } diff --git a/daemons/based/based_callbacks.c b/daemons/based/based_callbacks.c index e2c538b03a7..da5137eab86 100644 --- a/daemons/based/based_callbacks.c +++ b/daemons/based/based_callbacks.c @@ -209,12 +209,12 @@ do_local_notify(const xmlNode *notify_src, const char *client_id, (from_peer? " (originator of delegated request)" : ""), (sync_reply? "synchronously" : "asynchronously"), msg_id); } else { - crm_warn("Could not notify %s client %s%s %s of call %d result: %s", - pcmk__client_type_str(PCMK__CLIENT_TYPE(client_obj)), - pcmk__client_name(client_obj), - (from_peer? " (originator of delegated request)" : ""), - (sync_reply? "synchronously" : "asynchronously"), msg_id, - pcmk_rc_str(rc)); + pcmk__warn("Could not notify %s client %s%s %s of call %d result: %s", + pcmk__client_type_str(PCMK__CLIENT_TYPE(client_obj)), + pcmk__client_name(client_obj), + (from_peer? " (originator of delegated request)" : ""), + (sync_reply? "synchronously" : "asynchronously"), msg_id, + pcmk_rc_str(rc)); } } @@ -229,7 +229,7 @@ cib_common_callback_worker(uint32_t id, uint32_t flags, xmlNode * op_request, rc = pcmk__xe_get_flags(op_request, PCMK__XA_CIB_CALLOPT, &call_options, cib_none); if (rc != pcmk_rc_ok) { - crm_warn("Couldn't parse options from request: %s", pcmk_rc_str(rc)); + pcmk__warn("Couldn't parse options from request: %s", pcmk_rc_str(rc)); } /* Requests with cib_transaction set should not be sent to based directly @@ -312,8 +312,8 @@ cib_common_callback(qb_ipcs_connection_t * c, void *data, size_t size, gboolean rc = pcmk__xe_get_flags(op_request, PCMK__XA_CIB_CALLOPT, &call_options, cib_none); if (rc != pcmk_rc_ok) { - crm_warn("Couldn't parse options from request: %s", - pcmk_rc_str(rc)); + pcmk__warn("Couldn't parse options from request: %s", + pcmk_rc_str(rc)); } } @@ -505,9 +505,9 @@ parse_local_options(const pcmk__client_t *cib_client, if (!pcmk__str_eq(host, OUR_NODENAME, pcmk__str_casei|pcmk__str_null_matches)) { - crm_warn("Operation '%s' is always local but its target host is " - "set to '%s'", - op, host); + pcmk__warn("Operation '%s' is always local but its target host is " + "set to '%s'", + op, host); } return; } @@ -776,7 +776,7 @@ cib_process_request(xmlNode *request, gboolean privileged, rc = pcmk__xe_get_flags(request, PCMK__XA_CIB_CALLOPT, &call_options, cib_none); if (rc != pcmk_rc_ok) { - crm_warn("Couldn't parse options from request: %s", pcmk_rc_str(rc)); + pcmk__warn("Couldn't parse options from request: %s", pcmk_rc_str(rc)); } if ((host != NULL) && (*host == '\0')) { @@ -1061,7 +1061,7 @@ cib_process_command(xmlNode *request, const cib__operation_t *operation, rc = pcmk__xe_get_flags(request, PCMK__XA_CIB_CALLOPT, &call_options, cib_none); if (rc != pcmk_rc_ok) { - crm_warn("Couldn't parse options from request: %s", pcmk_rc_str(rc)); + pcmk__warn("Couldn't parse options from request: %s", pcmk_rc_str(rc)); } if (!privileged @@ -1226,7 +1226,7 @@ cib_peer_callback(xmlNode * msg, void *private_data) if (reason) { const char *op = pcmk__xe_get(msg, PCMK__XA_CIB_OP); - crm_warn("Discarding %s message from %s: %s", op, originator, reason); + pcmk__warn("Discarding %s message from %s: %s", op, originator, reason); } } diff --git a/daemons/based/based_io.c b/daemons/based/based_io.c index 1b998f72179..d095c0e801d 100644 --- a/daemons/based/based_io.c +++ b/daemons/based/based_io.c @@ -76,8 +76,8 @@ retrieveCib(const char *filename, const char *sigfile) if (rc == pcmk_ok) { crm_info("Loaded CIB from %s (with digest %s)", filename, sigfile); } else { - crm_warn("Continuing but NOT using CIB from %s (with digest %s): %s", - filename, sigfile, pcmk_strerror(rc)); + pcmk__warn("Continuing but NOT using CIB from %s (with digest %s): %s", + filename, sigfile, pcmk_strerror(rc)); if (rc == -pcmk_err_cib_modified) { // Archive the original files so the contents are not lost cib_rename(filename); @@ -206,9 +206,9 @@ readCibXmlFile(const char *dir, const char *file, gboolean discard_status) crm_notice("Loaded CIB from last valid backup %s (with digest %s)", filename, sigfile); } else { - crm_warn("Not using next most recent CIB backup from %s " - "(with digest %s): %s", - filename, sigfile, pcmk_strerror(rc)); + pcmk__warn("Not using next most recent CIB backup from %s (with " + "digest %s): %s", + filename, sigfile, pcmk_strerror(rc)); } free(namelist[lpc]); @@ -219,7 +219,7 @@ readCibXmlFile(const char *dir, const char *file, gboolean discard_status) if (root == NULL) { root = createEmptyCib(0); - crm_warn("Continuing with an empty configuration"); + pcmk__warn("Continuing with an empty configuration"); } if (cib_writes_enabled && (use_valgrind != NULL) @@ -245,9 +245,9 @@ readCibXmlFile(const char *dir, const char *file, gboolean discard_status) /* fill in some defaults */ value = pcmk__xe_get(root, PCMK_XA_ADMIN_EPOCH); if (value == NULL) { // Not possible with schema validation enabled - crm_warn("Defaulting missing " PCMK_XA_ADMIN_EPOCH " to 0, but " - "cluster may get confused about which node's configuration " - "is most recent"); + pcmk__warn("Defaulting missing " PCMK_XA_ADMIN_EPOCH " to 0, but " + "cluster may get confused about which node's configuration " + "is most recent"); pcmk__xe_set_int(root, PCMK_XA_ADMIN_EPOCH, 0); } @@ -311,7 +311,7 @@ activateCibXml(xmlNode * new_cib, gboolean to_disk, const char *op) pcmk__err("Ignoring invalid CIB"); if (the_cib) { - crm_warn("Reverting to last known CIB"); + pcmk__warn("Reverting to last known CIB"); } else { pcmk__crit("Could not write out new CIB and no saved version to revert " "to"); diff --git a/daemons/based/based_messages.c b/daemons/based/based_messages.c index 15dbc8e9f97..6daa6413484 100644 --- a/daemons/based/based_messages.c +++ b/daemons/based/based_messages.c @@ -272,7 +272,7 @@ cib_process_upgrade_server(const char *op, int options, const char *section, xml pcmk__xe_set(up, PCMK__XA_CIB_CALLID, call_id); pcmk__xe_set_int(up, PCMK__XA_CIB_UPGRADE_RC, rc); if (!pcmk__cluster_send_message(origin, pcmk_ipc_based, up)) { - crm_warn("Could not send CIB upgrade result to %s", host); + pcmk__warn("Could not send CIB upgrade result to %s", host); } pcmk__xml_free(up); } @@ -337,7 +337,7 @@ cib_server_process_diff(const char *op, int options, const char *section, xmlNod } else if (rc == -pcmk_err_diff_resync) { rc = -pcmk_err_diff_failed; if (options & cib_force_diff) { - crm_warn("Not requesting full refresh in R/W mode"); + pcmk__warn("Not requesting full refresh in R/W mode"); } } @@ -496,13 +496,13 @@ cib_process_schemas(const char *op, int options, const char *section, xmlNode *r wrapper = pcmk__xe_first_child(req, PCMK__XE_CIB_CALLDATA, NULL, NULL); data = pcmk__xe_first_child(wrapper, NULL, NULL, NULL); if (data == NULL) { - crm_warn("No data specified in request"); + pcmk__warn("No data specified in request"); return -EPROTO; } after_ver = pcmk__xe_get(data, PCMK_XA_VERSION); if (after_ver == NULL) { - crm_warn("No version specified in request"); + pcmk__warn("No version specified in request"); return -EPROTO; } diff --git a/daemons/based/based_notify.c b/daemons/based/based_notify.c index 000528e8027..6e9ece33b26 100644 --- a/daemons/based/based_notify.c +++ b/daemons/based/based_notify.c @@ -48,7 +48,7 @@ cib_notify_send_one(gpointer key, gpointer value, gpointer user_data) struct cib_notification_s *update = user_data; if (client->ipcs == NULL && client->remote == NULL) { - crm_warn("Skipping client with NULL channel"); + pcmk__warn("Skipping client with NULL channel"); return; } @@ -82,9 +82,9 @@ cib_notify_send_one(gpointer key, gpointer value, gpointer user_data) rc = pcmk__ipc_send_iov(client, update->iov, crm_ipc_server_event); if (rc != pcmk_rc_ok) { - crm_warn("Could not notify client %s: %s " QB_XS " id=%s", - pcmk__client_name(client), pcmk_rc_str(rc), - client->id); + pcmk__warn("Could not notify client %s: %s " QB_XS " id=%s", + pcmk__client_name(client), pcmk_rc_str(rc), + client->id); } break; case pcmk__client_tls: diff --git a/daemons/based/based_remote.c b/daemons/based/based_remote.c index 6aae2a20d87..d042ad09e21 100644 --- a/daemons/based/based_remote.c +++ b/daemons/based/based_remote.c @@ -99,11 +99,11 @@ init_remote_listener(int port, gboolean encrypted) return -1; } } else { - crm_warn("Starting plain-text listener on port %d", port); + pcmk__warn("Starting plain-text listener on port %d", port); } #ifndef HAVE_PAM - crm_warn("This build does not support remote administrators " - "because PAM support is not available"); + pcmk__warn("This build does not support remote administrators because PAM " + "support is not available"); #endif /* create server socket */ @@ -201,16 +201,18 @@ cib_remote_auth(xmlNode * login) } if (!pcmk__xe_is(login, PCMK__XE_CIB_COMMAND)) { - crm_warn("Rejecting remote client: Unrecognizable message " - "(element '%s' not '" PCMK__XE_CIB_COMMAND "')", login->name); + pcmk__warn("Rejecting remote client: Unrecognizable message (element " + "'%s' not '" PCMK__XE_CIB_COMMAND "')", + login->name); crm_log_xml_debug(login, "bad"); return FALSE; } tmp = pcmk__xe_get(login, PCMK_XA_OP); if (!pcmk__str_eq(tmp, "authenticate", pcmk__str_casei)) { - crm_warn("Rejecting remote client: Unrecognizable message " - "(operation '%s' not 'authenticate')", tmp); + pcmk__warn("Rejecting remote client: Unrecognizable message (operation " + "'%s' not 'authenticate')", + tmp); crm_log_xml_debug(login, "bad"); return FALSE; } @@ -218,8 +220,8 @@ cib_remote_auth(xmlNode * login) user = pcmk__xe_get(login, PCMK_XA_USER); pass = pcmk__xe_get(login, PCMK__XA_PASSWORD); if (!user || !pass) { - crm_warn("Rejecting remote client: No %s given", - ((user == NULL)? "username" : "password")); + pcmk__warn("Rejecting remote client: No %s given", + ((user == NULL)? "username" : "password")); crm_log_xml_debug(login, "bad"); return FALSE; } @@ -269,7 +271,8 @@ cib_remote_listen(gpointer data) memset(&addr, 0, sizeof(addr)); csock = accept(ssock, (struct sockaddr *)&addr, &laddr); if (csock == -1) { - crm_warn("Could not accept remote connection: %s", pcmk_rc_str(errno)); + pcmk__warn("Could not accept remote connection: %s", + pcmk_rc_str(errno)); return TRUE; } @@ -277,9 +280,9 @@ cib_remote_listen(gpointer data) rc = pcmk__set_nonblocking(csock); if (rc != pcmk_rc_ok) { - crm_warn("Dropping remote connection from %s because " - "it could not be set to non-blocking: %s", - ipstr, pcmk_rc_str(rc)); + pcmk__warn("Dropping remote connection from %s because it could not be " + "set to non-blocking: %s", + ipstr, pcmk_rc_str(rc)); close(csock); return TRUE; } @@ -351,9 +354,9 @@ cib_remote_connection_destroy(gpointer user_data) } break; default: - crm_warn("Unknown transport for client %s " - QB_XS " flags=%#016" PRIx64, - pcmk__client_name(client), client->flags); + pcmk__warn("Unknown transport for client %s " + QB_XS " flags=%#016" PRIx64, + pcmk__client_name(client), client->flags); } if (csock >= 0) { @@ -554,8 +557,8 @@ construct_pam_passwd(int num_msg, const struct pam_message **msg, data = NULL; break; default: - crm_warn("Ignoring PAM message of unrecognized type %d", - msg[0]->msg_style); + pcmk__warn("Ignoring PAM message of unrecognized type %d", + msg[0]->msg_style); return PAM_CONV_ERR; } @@ -603,9 +606,9 @@ authenticate_user(const char *user, const char *passwd) rc = pam_start(pam_name, user, &p_conv, &pam_h); if (rc != PAM_SUCCESS) { - crm_warn("Rejecting remote client for user %s " - "because PAM initialization failed: %s", - user, pam_strerror(pam_h, rc)); + pcmk__warn("Rejecting remote client for user %s because PAM " + "initialization failed: %s", + user, pam_strerror(pam_h, rc)); goto bail; } @@ -623,22 +626,23 @@ authenticate_user(const char *user, const char *passwd) */ rc = pam_get_item(pam_h, PAM_USER, &p_user); if (rc != PAM_SUCCESS) { - crm_warn("Rejecting remote client for user %s " - "because PAM failed to return final user name: %s", - user, pam_strerror(pam_h, rc)); + pcmk__warn("Rejecting remote client for user %s because PAM failed to " + "return final user name: %s", + user, pam_strerror(pam_h, rc)); goto bail; } if (p_user == NULL) { - crm_warn("Rejecting remote client for user %s " - "because PAM returned no final user name", user); + pcmk__warn("Rejecting remote client for user %s because PAM returned " + "no final user name", + user); goto bail; } // @TODO Why do we require these to match? if (!pcmk__str_eq(p_user, user, pcmk__str_none)) { - crm_warn("Rejecting remote client for user %s " - "because PAM returned different final user name %s", - user, p_user); + pcmk__warn("Rejecting remote client for user %s because PAM returned " + "different final user name %s", + user, p_user); goto bail; } @@ -656,8 +660,9 @@ authenticate_user(const char *user, const char *passwd) return pass; #else // @TODO Implement for non-PAM environments - crm_warn("Rejecting remote user %s because this build does not have " - "PAM support", user); + pcmk__warn("Rejecting remote user %s because this build does not have PAM " + "support", + user); return false; #endif } diff --git a/daemons/controld/controld_callbacks.c b/daemons/controld/controld_callbacks.c index 571848eb826..945f55985c1 100644 --- a/daemons/controld/controld_callbacks.c +++ b/daemons/controld/controld_callbacks.c @@ -329,8 +329,8 @@ peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, crm_info("Stonith/shutdown of node %s is unknown to the " "current DC", node->name); } else { - crm_warn("Stonith/shutdown of node %s was not expected", - node->name); + pcmk__warn("Stonith/shutdown of node %s was not expected", + node->name); } if (!is_remote) { crm_update_peer_join(__func__, node, controld_join_none); diff --git a/daemons/controld/controld_cib.c b/daemons/controld/controld_cib.c index 986b84301dd..7a73a1337de 100644 --- a/daemons/controld/controld_cib.c +++ b/daemons/controld/controld_cib.c @@ -187,8 +187,9 @@ do_cib_control(long long action, cib_retries++; if (cib_retries < 30) { - crm_warn("Couldn't complete CIB registration %d times... " - "pause and retry", cib_retries); + pcmk__warn("Couldn't complete CIB registration %d times... pause " + "and retry", + cib_retries); controld_start_wait_timer(); crmd_fsa_stall(FALSE); @@ -257,8 +258,9 @@ cib_delete_callback(xmlNode *msg, int call_id, int rc, xmlNode *output, if (rc == 0) { crm_debug("Deletion of %s (via CIB call %d) succeeded", desc, call_id); } else { - crm_warn("Deletion of %s (via CIB call %d) failed: %s " QB_XS " rc=%d", - desc, call_id, pcmk_strerror(rc), rc); + pcmk__warn("Deletion of %s (via CIB call %d) failed: %s " + QB_XS " rc=%d", + desc, call_id, pcmk_strerror(rc), rc); } } @@ -683,9 +685,9 @@ controld_add_resource_history_xml_as(const char *func, xmlNode *parent, lrm_state = controld_get_executor_state(node_name, false); if (lrm_state == NULL) { - crm_warn("Cannot calculate digests for operation " PCMK__OP_FMT - " because we have no connection to executor for %s", - op->rsc_id, op->op_type, op->interval_ms, node_name); + pcmk__warn("Cannot calculate digests for operation " PCMK__OP_FMT + " because we have no connection to executor for %s", + op->rsc_id, op->op_type, op->interval_ms, node_name); return; } @@ -770,11 +772,12 @@ cib_rsc_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, void *use break; default: if (call_id > 0) { - crm_warn("Resource history update %d failed: %s " - QB_XS " rc=%d", call_id, pcmk_strerror(rc), rc); + pcmk__warn("Resource history update %d failed: %s " + QB_XS " rc=%d", + call_id, pcmk_strerror(rc), rc); } else { - crm_warn("Resource history update failed: %s " QB_XS " rc=%d", - pcmk_strerror(rc), rc); + pcmk__warn("Resource history update failed: %s " QB_XS " rc=%d", + pcmk_strerror(rc), rc); } } @@ -881,7 +884,7 @@ controld_update_resource_history(const char *node_name, CRM_CHECK((node_name != NULL) && (op != NULL), return); if (rsc == NULL) { - crm_warn("Resource %s no longer exists in the executor", op->rsc_id); + pcmk__warn("Resource %s no longer exists in the executor", op->rsc_id); controld_ack_event_directly(NULL, NULL, rsc, op, op->rsc_id); return; } diff --git a/daemons/controld/controld_control.c b/daemons/controld/controld_control.c index e21927296d1..a175d491779 100644 --- a/daemons/controld/controld_control.c +++ b/daemons/controld/controld_control.c @@ -132,8 +132,8 @@ void crmd_fast_exit(crm_exit_t exit_code) { if (pcmk__is_set(controld_globals.fsa_input_register, R_STAYDOWN)) { - crm_warn("Inhibiting respawn " QB_XS " remapping exit code %d to %d", - exit_code, CRM_EX_FATAL); + pcmk__warn("Inhibiting respawn " QB_XS " remapping exit code %d to %d", + exit_code, CRM_EX_FATAL); exit_code = CRM_EX_FATAL; } else if ((exit_code == CRM_EX_OK) @@ -518,7 +518,7 @@ do_recover(long long action, enum crmd_fsa_state cur_state, enum crmd_fsa_input current_input, fsa_data_t * msg_data) { controld_set_fsa_input_flags(R_IN_RECOVERY); - crm_warn("Fast-tracking shutdown in response to errors"); + pcmk__warn("Fast-tracking shutdown in response to errors"); register_fsa_input(C_FSA_INTERNAL, I_TERMINATE, NULL); } diff --git a/daemons/controld/controld_corosync.c b/daemons/controld/controld_corosync.c index e9cf8d8b5a0..de80f714485 100644 --- a/daemons/controld/controld_corosync.c +++ b/daemons/controld/controld_corosync.c @@ -56,9 +56,9 @@ crmd_cs_dispatch(cpg_handle_t handle, const struct cpg_name *groupName, /* If we can still talk to our peer process on that node, then it must * be part of the corosync membership */ - crm_warn("Receiving messages from a node we think is dead: " - "%s[%" PRIu32 "]", - peer->name, peer->cluster_layer_id); + pcmk__warn("Receiving messages from a node we think is dead: " + "%s[%" PRIu32 "]", + peer->name, peer->cluster_layer_id); crm_update_peer_proc(__func__, peer, crm_proc_cpg, PCMK_VALUE_ONLINE); } diff --git a/daemons/controld/controld_election.c b/daemons/controld/controld_election.c index 499252f9845..99071a5322b 100644 --- a/daemons/controld/controld_election.c +++ b/daemons/controld/controld_election.c @@ -81,7 +81,8 @@ do_election_vote(long long action, case S_RECOVERY: case S_STOPPING: case S_TERMINATE: - crm_warn("Not voting in election, we're in state %s", fsa_state2string(cur_state)); + pcmk__warn("Not voting in election, we're in state %s", + fsa_state2string(cur_state)); not_voting = TRUE; break; case S_ELECTION: diff --git a/daemons/controld/controld_execd.c b/daemons/controld/controld_execd.c index de8d406b47a..9534573e742 100644 --- a/daemons/controld/controld_execd.c +++ b/daemons/controld/controld_execd.c @@ -326,10 +326,11 @@ try_local_executor_connect(long long action, fsa_data_t *msg_data, // Otherwise, if we can try again, set a timer to do so if (lrm_state->num_lrm_register_fails < MAX_LRM_REG_FAILS) { - crm_warn("Failed to connect to the local executor %d time%s " - "(%d max): %s", lrm_state->num_lrm_register_fails, - pcmk__plural_s(lrm_state->num_lrm_register_fails), - MAX_LRM_REG_FAILS, pcmk_rc_str(rc)); + pcmk__warn("Failed to connect to the local executor %d time%s " + "(%d max): %s", + lrm_state->num_lrm_register_fails, + pcmk__plural_s(lrm_state->num_lrm_register_fails), + MAX_LRM_REG_FAILS, pcmk_rc_str(rc)); controld_start_wait_timer(); crmd_fsa_stall(FALSE); return; @@ -992,9 +993,10 @@ delete_resource(lrm_state_t *lrm_state, const char *id, lrmd_rsc_info_t *rsc, } return; } else { - crm_warn("Could not delete '%s' from executor for %s%s%s: %s " - QB_XS " rc=%d", id, sys, (user? " as " : ""), - (user? user : ""), pcmk_strerror(rc), rc); + pcmk__warn("Could not delete '%s' from executor for %s%s%s: %s " + QB_XS " rc=%d", + id, sys, ((user != NULL)? " as " : ""), pcmk__s(user, ""), + pcmk_strerror(rc), rc); } delete_rsc_entry(lrm_state, request, id, iter, rc, user, from_cib); diff --git a/daemons/controld/controld_execd_state.c b/daemons/controld/controld_execd_state.c index a614871bd00..4db4d6fca4a 100644 --- a/daemons/controld/controld_execd_state.c +++ b/daemons/controld/controld_execd_state.c @@ -538,8 +538,9 @@ crmd_remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg) remote_proxy_ack_shutdown(lrmd); - crm_warn("Reconnection attempts to %s may result in failures that must be cleared", - lrm_state->node_name); + pcmk__warn("Reconnection attempts to %s may result in failures " + "that must be cleared", + lrm_state->node_name); } else { remote_proxy_nack_shutdown(lrmd); @@ -584,8 +585,9 @@ crmd_remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg) rc = pcmk__xe_get_flags(msg, PCMK__XA_LRMD_IPC_MSG_FLAGS, &flags, 0U); if (rc != pcmk_rc_ok) { - crm_warn("Couldn't parse controller flags from remote request: %s", - pcmk_rc_str(rc)); + pcmk__warn("Couldn't parse controller flags from remote request: " + "%s", + pcmk_rc_str(rc)); } if (pcmk__is_set(flags, crm_ipc_client_response)) { int msg_id = 0; @@ -618,8 +620,9 @@ controld_connect_remote_executor(lrm_state_t *lrm_state, const char *server, rc = lrmd__new(&api, lrm_state->node_name, server, port); if (rc != pcmk_rc_ok) { - crm_warn("Pacemaker Remote connection to %s:%s failed: %s " - QB_XS " rc=%d", server, port, pcmk_rc_str(rc), rc); + pcmk__warn("Pacemaker Remote connection to %s:%s failed: %s " + QB_XS " rc=%d", + server, port, pcmk_rc_str(rc), rc); return rc; } diff --git a/daemons/controld/controld_fencing.c b/daemons/controld/controld_fencing.c index eb196604034..a8b6e1ce49d 100644 --- a/daemons/controld/controld_fencing.c +++ b/daemons/controld/controld_fencing.c @@ -74,8 +74,9 @@ set_fence_reaction(const char *reaction_s) } else { if (!pcmk__str_eq(reaction_s, PCMK_VALUE_STOP, pcmk__str_casei)) { - crm_warn("Invalid value '%s' for %s, using 'stop'", - reaction_s, PCMK_OPT_FENCE_REACTION); + pcmk__warn("Invalid value '%s' for " PCMK_OPT_FENCE_REACTION + ", using '" PCMK_VALUE_STOP "'", + reaction_s); } fence_reaction_panic = false; } @@ -129,8 +130,8 @@ too_many_st_failures(const char *target) return FALSE; too_many: - crm_warn("Too many failures (%d) to fence %s, giving up", - value->count, target); + pcmk__warn("Too many failures (%d) to fence %s, giving up", value->count, + target); return TRUE; } @@ -435,7 +436,7 @@ fail_incompletable_stonith(pcmk__graph_t *graph) } if (last_action != NULL) { - crm_warn("Fencer failure resulted in unrunnable actions"); + pcmk__warn("Fencer failure resulted in unrunnable actions"); abort_for_stonith_failure(pcmk__graph_restart, NULL, last_action); return TRUE; } @@ -903,9 +904,9 @@ tengine_stonith_callback(stonith_t *stonith, stonith_callback_data_t *data) * checking again, so don't start a new transition in that case. */ if (status == PCMK_EXEC_NO_FENCE_DEVICE) { - crm_warn("Fence operation %d for %s failed: %s " - "(aborting transition and giving up for now)", - data->call_id, target, reason); + pcmk__warn("Fence operation %d for %s failed: %s (aborting " + "transition and giving up for now)", + data->call_id, target, reason); abort_action = pcmk__graph_wait; } else { crm_notice("Fence operation %d for %s failed: %s " diff --git a/daemons/controld/controld_fsa.c b/daemons/controld/controld_fsa.c index a7002868155..492bb3b48a6 100644 --- a/daemons/controld/controld_fsa.c +++ b/daemons/controld/controld_fsa.c @@ -518,9 +518,10 @@ check_join_counts(fsa_data_t *msg_data) register_fsa_input_before(C_FSA_INTERNAL, I_NODE_JOIN, NULL); } else { - crm_warn("Only %d of %u active cluster nodes fully joined " - "(%d did not respond to offer)", - count, npeers, crmd_join_phase_count(controld_join_welcomed)); + pcmk__warn("Only %d of %u active cluster nodes fully joined (%d did " + "not respond to offer)", + count, npeers, + crmd_join_phase_count(controld_join_welcomed)); } } @@ -621,13 +622,14 @@ do_state_transition(enum crmd_fsa_state cur_state, case S_FINALIZE_JOIN: CRM_LOG_ASSERT(AM_I_DC); if (cause == C_TIMER_POPPED) { - crm_warn("Progressed to state %s after %s", - fsa_state2string(next_state), fsa_cause2string(cause)); + pcmk__warn("Progressed to state %s after %s", + fsa_state2string(next_state), + fsa_cause2string(cause)); } count = crmd_join_phase_count(controld_join_welcomed); if (count > 0) { - crm_warn("%d cluster node%s failed to respond to join offer", - count, pcmk__plural_s(count)); + pcmk__warn("%d cluster node%s failed to respond to join offer", + count, pcmk__plural_s(count)); crmd_join_phase_log(LOG_NOTICE); } else { diff --git a/daemons/controld/controld_join_client.c b/daemons/controld/controld_join_client.c index 1c8caae8935..5512ae54ee4 100644 --- a/daemons/controld/controld_join_client.c +++ b/daemons/controld/controld_join_client.c @@ -73,8 +73,8 @@ do_cl_join_announce(long long action, { /* don't announce if we're in one of these states */ if (cur_state != S_PENDING) { - crm_warn("Not announcing cluster join because in state %s", - fsa_state2string(cur_state)); + pcmk__warn("Not announcing cluster join because in state %s", + fsa_state2string(cur_state)); return; } @@ -91,7 +91,8 @@ do_cl_join_announce(long long action, } else { /* Delay announce until we have finished local startup */ - crm_warn("Delaying announce of cluster join until local startup is complete"); + pcmk__warn("Delaying announce of cluster join until local startup is " + "complete"); return; } } @@ -127,8 +128,8 @@ do_cl_join_offer_respond(long long action, } if (update_dc(input->msg) == FALSE) { - crm_warn("Discarding cluster join offer from node %s (expected %s)", - welcome_from, controld_globals.dc_name); + pcmk__warn("Discarding cluster join offer from node %s (expected %s)", + welcome_from, controld_globals.dc_name); return; } @@ -219,9 +220,9 @@ set_join_state(const char *start_state, const char *node_name, const char *node_ crm_debug("Not forcing a starting state on node %s", node_name); } else { - crm_warn("Unrecognized start state '%s', using " - "'" PCMK_VALUE_DEFAULT "' (%s)", - start_state, node_name); + pcmk__warn("Unrecognized start state '%s', using " + "'" PCMK_VALUE_DEFAULT "' (%s)", + start_state, node_name); } } @@ -290,13 +291,13 @@ do_cl_join_finalize_respond(long long action, } if (!AM_I_DC && controld_is_local_node(welcome_from)) { - crm_warn("Discarding our own welcome - we're no longer the DC"); + pcmk__warn("Discarding our own welcome - we're no longer the DC"); return; } if (update_dc(input->msg) == FALSE) { - crm_warn("Discarding %s from node %s (expected from %s)", - op, welcome_from, controld_globals.dc_name); + pcmk__warn("Discarding %s from node %s (expected from %s)", op, + welcome_from, controld_globals.dc_name); return; } diff --git a/daemons/controld/controld_join_dc.c b/daemons/controld/controld_join_dc.c index 176e7c270fd..31d4005d5e5 100644 --- a/daemons/controld/controld_join_dc.c +++ b/daemons/controld/controld_join_dc.c @@ -192,10 +192,10 @@ crm_update_peer_join(const char *source, pcmk__node_status_t *node, return; } - crm_warn("Rejecting join-%d phase update for node %s because can't go from " - "%s to %s " QB_XS " nodeid=%" PRIu32 " source=%s", - current_join_id, node->name, join_phase_text(last), - join_phase_text(phase), node->cluster_layer_id, source); + pcmk__warn("Rejecting join-%d phase update for node %s because can't go " + "from %s to %s " QB_XS " nodeid=%" PRIu32 " source=%s", + current_join_id, node->name, join_phase_text(last), + join_phase_text(phase), node->cluster_layer_id, source); } static void @@ -416,14 +416,16 @@ compare_int_fields(xmlNode * left, xmlNode * right, const char *field) rc = pcmk__scan_ll(elem_l, &int_elem_l, -1LL); if (rc != pcmk_rc_ok) { // Shouldn't be possible - crm_warn("Comparing current CIB %s as -1 " - "because '%s' is not an integer", field, elem_l); + pcmk__warn("Comparing current CIB %s as -1 because '%s' is not an " + "integer", + field, elem_l); } rc = pcmk__scan_ll(elem_r, &int_elem_r, -1LL); if (rc != pcmk_rc_ok) { // Shouldn't be possible - crm_warn("Comparing joining node's CIB %s as -1 " - "because '%s' is not an integer", field, elem_r); + pcmk__warn("Comparing joining node's CIB %s as -1 because '%s' is not " + "an integer", + field, elem_r); } if (int_elem_l < int_elem_r) { @@ -650,8 +652,8 @@ do_dc_join_finalize(long long action, } if (!controld_globals.transition_graph->complete) { - crm_warn("Delaying join-%d finalization while transition in progress", - current_join_id); + pcmk__warn("Delaying join-%d finalization while transition in progress", + current_join_id); crmd_join_phase_log(LOG_DEBUG); crmd_fsa_stall(FALSE); return; @@ -784,11 +786,11 @@ do_dc_join_ack(long long action, // Sanity checks if (join_from == NULL) { - crm_warn("Ignoring message received without node identification"); + pcmk__warn("Ignoring message received without node identification"); goto done; } if (op == NULL) { - crm_warn("Ignoring message received from %s without task", join_from); + pcmk__warn("Ignoring message received from %s without task", join_from); goto done; } @@ -800,8 +802,8 @@ do_dc_join_ack(long long action, if (pcmk__xe_get_int(join_ack->msg, PCMK__XA_JOIN_ID, &join_id) != pcmk_rc_ok) { - crm_warn("Ignoring join confirmation from %s without valid join ID", - join_from); + pcmk__warn("Ignoring join confirmation from %s without valid join ID", + join_from); goto done; } @@ -860,9 +862,9 @@ do_dc_join_ack(long long action, state = execd_state; } else { - crm_warn("Updating local node history from join-%d confirmation " - "because query failed", - current_join_id); + pcmk__warn("Updating local node history from join-%d confirmation " + "because query failed", + current_join_id); } } else { diff --git a/daemons/controld/controld_membership.c b/daemons/controld/controld_membership.c index 6d051e1009c..748463ba2c5 100644 --- a/daemons/controld/controld_membership.c +++ b/daemons/controld/controld_membership.c @@ -43,7 +43,7 @@ reap_dead_nodes(gpointer key, gpointer value, gpointer user_data) } else if (!AM_I_DC && pcmk__str_eq(node->name, controld_globals.dc_name, pcmk__str_casei)) { - crm_warn("Our DC node (%s) left the cluster", node->name); + pcmk__warn("Our DC node (%s) left the cluster", node->name); register_fsa_input(C_FSA_INTERNAL, I_ELECTION, NULL); } } diff --git a/daemons/controld/controld_messages.c b/daemons/controld/controld_messages.c index 5d0471fc30c..c66d036cafc 100644 --- a/daemons/controld/controld_messages.c +++ b/daemons/controld/controld_messages.c @@ -372,17 +372,17 @@ relay_message(xmlNode * msg, gboolean originated_locally) // Require message type (set by pcmk__new_request()) if (!pcmk__str_eq(type, PCMK__VALUE_CRMD, pcmk__str_none)) { - crm_warn("Ignoring invalid message %s with type '%s' " - "(not '" PCMK__VALUE_CRMD "')", - ref, pcmk__s(type, "")); + pcmk__warn("Ignoring invalid message %s with type '%s' " + "(not '" PCMK__VALUE_CRMD "')", + ref, pcmk__s(type, "")); crm_log_xml_trace(msg, "ignored"); return TRUE; } // Require a destination subsystem (also set by pcmk__new_request()) if (sys_to == NULL) { - crm_warn("Ignoring invalid message %s with no " PCMK__XA_CRM_SYS_TO, - ref); + pcmk__warn("Ignoring invalid message %s with no " PCMK__XA_CRM_SYS_TO, + ref); crm_log_xml_trace(msg, "ignored"); return TRUE; } @@ -508,8 +508,8 @@ relay_message(xmlNode * msg, gboolean originated_locally) node_to = pcmk__search_node_caches(0, host_to, NULL, pcmk__node_search_cluster_member); if (node_to == NULL) { - crm_warn("Ignoring message %s because node %s is unknown", - ref, host_to); + pcmk__warn("Ignoring message %s because node %s is unknown", + ref, host_to); crm_log_xml_trace(msg, "ignored"); return TRUE; } @@ -533,10 +533,10 @@ authorize_version(xmlNode *message_data, const char *field, if ((pcmk__scan_ll(version, &version_num, -1LL) != pcmk_rc_ok) || (version_num < 0LL)) { - crm_warn("Rejected IPC hello from %s: '%s' is not a valid protocol %s " - QB_XS " ref=%s uuid=%s", - client_name, ((version == NULL)? "" : version), - field, (ref? ref : "none"), uuid); + pcmk__warn("Rejected IPC hello from %s: '%s' is not a valid protocol %s " + QB_XS " ref=%s uuid=%s", + client_name, pcmk__s(version, ""), field, + pcmk__s(ref, "none"), uuid); return false; } return true; @@ -569,8 +569,9 @@ controld_authorize_ipc_message(const xmlNode *client_msg, pcmk__client_t *curr_c const char *uuid = (curr_client? curr_client->id : proxy_session); if (uuid == NULL) { - crm_warn("IPC message from client rejected: No client identifier " - QB_XS " ref=%s", (ref? ref : "none")); + pcmk__warn("IPC message from client rejected: No client identifier " + QB_XS " ref=%s", + pcmk__s(ref, "none")); goto rejected; } @@ -584,8 +585,9 @@ controld_authorize_ipc_message(const xmlNode *client_msg, pcmk__client_t *curr_c client_name = pcmk__xe_get(message_data, PCMK__XA_CLIENT_NAME); if (pcmk__str_empty(client_name)) { - crm_warn("IPC hello from client rejected: No client name", - QB_XS " ref=%s uuid=%s", (ref? ref : "none"), uuid); + pcmk__warn("IPC hello from client rejected: No client name", + QB_XS " ref=%s uuid=%s", + pcmk__s(ref, "none"), uuid); goto rejected; } if (!authorize_version(message_data, PCMK__XA_MAJOR_VERSION, client_name, @@ -630,8 +632,8 @@ handle_message(xmlNode *msg, enum crmd_fsa_cause cause) return I_NULL; } - crm_warn("Ignoring message with unknown " PCMK__XA_SUBT" '%s'", - pcmk__s(type, "")); + pcmk__warn("Ignoring message with unknown " PCMK__XA_SUBT" '%s'", + pcmk__s(type, "")); crm_log_xml_trace(msg, "bad"); return I_NULL; } @@ -1033,7 +1035,7 @@ handle_shutdown_ack(xmlNode *stored_msg) const char *host_from = pcmk__xe_get(stored_msg, PCMK__XA_SRC); if (host_from == NULL) { - crm_warn("Ignoring shutdown request without origin specified"); + pcmk__warn("Ignoring shutdown request without origin specified"); return I_NULL; } @@ -1052,8 +1054,8 @@ handle_shutdown_ack(xmlNode *stored_msg) return I_STOP; } - crm_warn("Ignoring shutdown request from %s because DC is %s", - host_from, controld_globals.dc_name); + pcmk__warn("Ignoring shutdown request from %s because DC is %s", + host_from, controld_globals.dc_name); return I_NULL; } @@ -1067,7 +1069,7 @@ handle_request(xmlNode *stored_msg, enum crmd_fsa_cause cause) crm_log_xml_trace(stored_msg, "request"); if (op == NULL) { - crm_warn("Ignoring request without " PCMK__XA_CRM_TASK); + pcmk__warn("Ignoring request without " PCMK__XA_CRM_TASK); return I_NULL; } @@ -1236,7 +1238,7 @@ handle_response(xmlNode *stored_msg) crm_log_xml_trace(stored_msg, "reply"); if (op == NULL) { - crm_warn("Ignoring reply without " PCMK__XA_CRM_TASK); + pcmk__warn("Ignoring reply without " PCMK__XA_CRM_TASK); } else if (AM_I_DC && strcmp(op, CRM_OP_PECALC) == 0) { // Check whether scheduler answer been superseded by subsequent request diff --git a/daemons/controld/controld_metadata.c b/daemons/controld/controld_metadata.c index 8c6f3805097..54e338fdaca 100644 --- a/daemons/controld/controld_metadata.c +++ b/daemons/controld/controld_metadata.c @@ -95,12 +95,13 @@ static void log_ra_ocf_version(const char *ra_key, const char *ra_ocf_version) { if (pcmk__str_empty(ra_ocf_version)) { - crm_warn("%s does not advertise OCF version supported", ra_key); + pcmk__warn("%s does not advertise OCF version supported", ra_key); } else if (pcmk__compare_versions(ra_ocf_version, "2") >= 0) { - crm_warn("%s supports OCF version %s (this Pacemaker version supports " - PCMK_OCF_VERSION " and might not work properly with agent)", - ra_key, ra_ocf_version); + pcmk__warn("%s supports OCF version %s (this Pacemaker version " + "supports " PCMK_OCF_VERSION " and might not work properly " + "with agent)", + ra_key, ra_ocf_version); } else if (pcmk__compare_versions(ra_ocf_version, PCMK_OCF_VERSION) > 0) { crm_info("%s supports OCF version %s (this Pacemaker version supports " @@ -187,8 +188,9 @@ controld_cache_metadata(GHashTable *mdc, const lrmd_rsc_info_t *rsc, const char *param_name = pcmk__xe_get(match, PCMK_XA_NAME); if (param_name == NULL) { - crm_warn("Metadata for %s:%s:%s has parameter without a " - PCMK_XA_NAME, rsc->standard, rsc->provider, rsc->type); + pcmk__warn("Metadata for %s:%s:%s has parameter without a " + PCMK_XA_NAME, + rsc->standard, rsc->provider, rsc->type); } else { struct ra_param_s *p = ra_param_from_xml(match); @@ -224,9 +226,9 @@ controld_cache_metadata(GHashTable *mdc, const lrmd_rsc_info_t *rsc, return md; err: - crm_warn("Unable to update metadata for %s (%s%s%s:%s): %s", - rsc->id, rsc->standard, ((rsc->provider == NULL)? "" : ":"), - pcmk__s(rsc->provider, ""), rsc->type, reason); + pcmk__warn("Unable to update metadata for %s (%s%s%s:%s): %s", rsc->id, + rsc->standard, ((rsc->provider == NULL)? "" : ":"), + pcmk__s(rsc->provider, ""), rsc->type, reason); free(key); pcmk__xml_free(metadata); metadata_free(md); @@ -297,11 +299,10 @@ controld_get_rsc_metadata(lrm_state_t *lrm_state, const lrmd_rsc_info_t *rsc, rc = lrm_state_get_metadata(lrm_state, rsc->standard, rsc->provider, rsc->type, &metadata_str, 0); if (rc != pcmk_ok) { - crm_warn("Failed to get metadata for %s (%s%s%s:%s): %s", - rsc->id, rsc->standard, - ((rsc->provider == NULL)? "" : ":"), - ((rsc->provider == NULL)? "" : rsc->provider), - rsc->type, pcmk_strerror(rc)); + pcmk__warn("Failed to get metadata for %s (%s%s%s:%s): %s", rsc->id, + rsc->standard, ((rsc->provider == NULL)? "" : ":"), + ((rsc->provider == NULL)? "" : rsc->provider), rsc->type, + pcmk_strerror(rc)); return NULL; } diff --git a/daemons/controld/controld_schedulerd.c b/daemons/controld/controld_schedulerd.c index df69247cb54..7f9401e8c9f 100644 --- a/daemons/controld/controld_schedulerd.c +++ b/daemons/controld/controld_schedulerd.c @@ -235,7 +235,7 @@ do_pe_control(long long action, crm_info("Ignoring request to connect to scheduler while shutting down"); } else if (!new_schedulerd_ipc_connection()) { - crm_warn("Could not connect to scheduler"); + pcmk__warn("Could not connect to scheduler"); register_fsa_error(C_FSA_INTERNAL, I_FAIL, NULL); } } diff --git a/daemons/controld/controld_te_actions.c b/daemons/controld/controld_te_actions.c index f4fe9dc07a4..dba8d34cdd0 100644 --- a/daemons/controld/controld_te_actions.c +++ b/daemons/controld/controld_te_actions.c @@ -329,8 +329,8 @@ controld_record_action_timeout(pcmk__graph_action_t *action) int target_rc = get_target_rc(action); - crm_warn("%s %d: %s on %s timed out", - action->xml->name, action->id, task_uuid, target); + pcmk__warn("%s %d: %s on %s timed out", action->xml->name, action->id, + task_uuid, target); op = synthesize_timeout_event(action, target_rc); controld_record_action_event(action, op); diff --git a/daemons/controld/controld_te_callbacks.c b/daemons/controld/controld_te_callbacks.c index 95fe37116f3..07cce71cc42 100644 --- a/daemons/controld/controld_te_callbacks.c +++ b/daemons/controld/controld_te_callbacks.c @@ -162,8 +162,8 @@ process_op_deletion(const char *xpath, xmlNode *change) key = strrchr(mutable_key, '\''); } if (key == NULL) { - crm_warn("Ignoring malformed CIB update (resource deletion of %s)", - xpath); + pcmk__warn("Ignoring malformed CIB update (resource deletion of %s)", + xpath); free(mutable_key); return; } @@ -274,8 +274,9 @@ te_update_diff_element(xmlNode *change, void *userdata) } else if (!pcmk__str_any_of(op, PCMK_VALUE_DELETE, PCMK_VALUE_MOVE, NULL)) { - crm_warn("Ignoring malformed CIB update (%s operation on %s is unrecognized)", - op, xpath); + pcmk__warn("Ignoring malformed CIB update (%s operation on %s is " + "unrecognized)", + op, xpath); return pcmk_rc_ok; } @@ -312,8 +313,8 @@ te_update_diff_element(xmlNode *change, void *userdata) process_delete_diff(xpath, op, change); } else if (name == NULL) { - crm_warn("Ignoring malformed CIB update (%s at %s has no result)", - op, xpath); + pcmk__warn("Ignoring malformed CIB update (%s at %s has no result)", op, + xpath); } else if (strcmp(name, PCMK_XE_CIB) == 0) { process_cib_diff(match, change, op, xpath); @@ -347,8 +348,9 @@ te_update_diff_element(xmlNode *change, void *userdata) free(local_node); } else { - crm_warn("Ignoring malformed CIB update (%s at %s has unrecognized result %s)", - op, xpath, name); + pcmk__warn("Ignoring malformed CIB update (%s at %s has unrecognized " + "result %s)", + op, xpath, name); } return pcmk_rc_ok; @@ -402,8 +404,8 @@ te_update_diff(const char *event, xmlNode * msg) pcmk__xe_foreach_child(diff, NULL, te_update_diff_element, NULL); } else { - crm_warn("Ignoring malformed CIB update (unknown patch format %d)", - format); + pcmk__warn("Ignoring malformed CIB update (unknown patch format %d)", + format); } controld_remove_all_outside_events(); } diff --git a/daemons/controld/controld_te_utils.c b/daemons/controld/controld_te_utils.c index 974b2023b8e..2ec55e6ac18 100644 --- a/daemons/controld/controld_te_utils.c +++ b/daemons/controld/controld_te_utils.c @@ -80,8 +80,8 @@ te_graph_trigger(gpointer user_data) } if (graph_rc != pcmk__graph_complete) { - crm_warn("Transition failed: %s", - pcmk__graph_status2text(graph_rc)); + pcmk__warn("Transition failed: %s", + pcmk__graph_status2text(graph_rc)); pcmk__log_graph(LOG_NOTICE, controld_globals.transition_graph); } } @@ -192,9 +192,9 @@ node_pending_timer_popped(gpointer key) return FALSE; } - crm_warn("Node with " PCMK_XA_ID " '%s' pending timed out (%us) " - "on joining the process group", - (const char *) key, controld_globals.node_pending_timeout); + pcmk__warn("Node with " PCMK_XA_ID " '%s' pending timed out (%us) on " + "joining the process group", + (const char *) key, controld_globals.node_pending_timeout); if (controld_globals.node_pending_timeout > 0) { abort_timer_popped(node_pending_timer); diff --git a/daemons/controld/controld_throttle.c b/daemons/controld/controld_throttle.c index 3f4bd968be2..abd58791046 100644 --- a/daemons/controld/controld_throttle.c +++ b/daemons/controld/controld_throttle.c @@ -238,9 +238,9 @@ throttle_update_job_max(const char *preference) int rc = pcmk__scan_ll(env_limit, &max, 0LL); if (rc != pcmk_rc_ok) { - crm_warn("Ignoring local option PCMK_" PCMK__ENV_NODE_ACTION_LIMIT - " because '%s' is not a valid value: %s", - env_limit, pcmk_rc_str(rc)); + pcmk__warn("Ignoring local option PCMK_" PCMK__ENV_NODE_ACTION_LIMIT + " because '%s' is not a valid value: %s", + env_limit, pcmk_rc_str(rc)); env_limit = NULL; } } diff --git a/daemons/controld/controld_utils.c b/daemons/controld/controld_utils.c index c18ad7e7de5..5b62576e911 100644 --- a/daemons/controld/controld_utils.c +++ b/daemons/controld/controld_utils.c @@ -732,8 +732,8 @@ update_dc(xmlNode * msg) pcmk__err("Not updating DC to %s (%s): we are also a DC", welcome_from, dc_version); } else { - crm_warn("New DC %s is not %s", - welcome_from, controld_globals.dc_name); + pcmk__warn("New DC %s is not %s", welcome_from, + controld_globals.dc_name); } controld_set_fsa_action_flags(A_CL_JOIN_QUERY | A_DC_TIMER_START); diff --git a/daemons/execd/execd_commands.c b/daemons/execd/execd_commands.c index c83f5698a7d..207378da399 100644 --- a/daemons/execd/execd_commands.c +++ b/daemons/execd/execd_commands.c @@ -483,10 +483,10 @@ merge_recurring_duplicate(lrmd_rsc_t * rsc, lrmd_cmd_t * cmd) /* This should not occur. If it does, we need to investigate how something * like this is possible in the controller. */ - crm_warn("Duplicate recurring op entry detected (" PCMK__OP_FMT - "), merging with previous op entry", - rsc->rsc_id, normalize_action_name(rsc, dup->action), - dup->interval_ms); + pcmk__warn("Duplicate recurring op entry detected (" PCMK__OP_FMT "), " + "merging with previous op entry", + rsc->rsc_id, normalize_action_name(rsc, dup->action), + dup->interval_ms); // Merge new action's call ID and user data into existing action dup->first_notify_sent = false; @@ -1133,8 +1133,8 @@ stonith_connection_failed(void) GHashTableIter iter; lrmd_rsc_t *rsc = NULL; - crm_warn("Connection to fencer lost (any pending operations for " - "fence devices will be considered failed)"); + pcmk__warn("Connection to fencer lost (any pending operations for fence " + "devices will be considered failed)"); g_hash_table_iter_init(&iter, rsc_list); while (g_hash_table_iter_next(&iter, NULL, (gpointer *) &rsc)) { @@ -1979,8 +1979,8 @@ process_lrmd_message(pcmk__client_t *client, uint32_t id, xmlNode *request) } if (rc == -EACCES) { - crm_warn("Rejecting IPC request '%s' from unprivileged client %s", - op, pcmk__client_name(client)); + pcmk__warn("Rejecting IPC request '%s' from unprivileged client %s", op, + pcmk__client_name(client)); } crm_debug("Processed %s operation from %s: rc=%d, reply=%d, notify=%d", @@ -1995,8 +1995,9 @@ process_lrmd_message(pcmk__client_t *client, uint32_t id, xmlNode *request) send_rc = lrmd_server_send_reply(client, id, reply); pcmk__xml_free(reply); if (send_rc != pcmk_rc_ok) { - crm_warn("Reply to client %s failed: %s " QB_XS " rc=%d", - pcmk__client_name(client), pcmk_rc_str(send_rc), send_rc); + pcmk__warn("Reply to client %s failed: %s " QB_XS " rc=%d", + pcmk__client_name(client), pcmk_rc_str(send_rc), + send_rc); } } diff --git a/daemons/execd/pacemaker-execd.c b/daemons/execd/pacemaker-execd.c index f3979c978b3..d8c0f6b00b5 100644 --- a/daemons/execd/pacemaker-execd.c +++ b/daemons/execd/pacemaker-execd.c @@ -527,8 +527,9 @@ main(int argc, char **argv, char **envp) int rc = pcmk__build_path(PCMK__OCF_TMP_DIR, 0755); if (rc != pcmk_rc_ok) { - crm_warn("Could not create resource agent temporary directory " - PCMK__OCF_TMP_DIR ": %s", pcmk_rc_str(rc)); + pcmk__warn("Could not create resource agent temporary directory " + PCMK__OCF_TMP_DIR ": %s", + pcmk_rc_str(rc)); } } diff --git a/daemons/execd/remoted_proxy.c b/daemons/execd/remoted_proxy.c index a4e8dded538..43a06267fa9 100644 --- a/daemons/execd/remoted_proxy.c +++ b/daemons/execd/remoted_proxy.c @@ -77,8 +77,9 @@ ipc_proxy_accept(qb_ipcs_connection_t * c, uid_t uid, gid_t gid, const char *ipc xmlNode *msg; if (ipc_proxy == NULL) { - crm_warn("Cannot proxy IPC connection from uid %d gid %d to %s " - "because not connected to cluster", uid, gid, ipc_channel); + pcmk__warn("Cannot proxy IPC connection from uid %d gid %d to %s " + "because not connected to cluster", + uid, gid, ipc_channel); return -EREMOTEIO; } @@ -220,8 +221,8 @@ ipc_proxy_forward_client(pcmk__client_t *ipc_proxy, xmlNode *xml) } if (rc != pcmk_rc_ok) { - crm_warn("Could not proxy IPC to client %s: %s " QB_XS " rc=%d", - ipc_client->id, pcmk_rc_str(rc), rc); + pcmk__warn("Could not proxy IPC to client %s: %s " QB_XS " rc=%d", + ipc_client->id, pcmk_rc_str(rc), rc); } } @@ -458,7 +459,8 @@ ipc_proxy_init(void) if (crmd_ipcs == NULL) { pcmk__err("Failed to create controller: exiting and inhibiting " "respawn"); - crm_warn("Verify pacemaker and pacemaker_remote are not both enabled"); + pcmk__warn("Verify pacemaker and pacemaker_remote are not both " + "enabled"); crm_exit(CRM_EX_FATAL); } } diff --git a/daemons/execd/remoted_schemas.c b/daemons/execd/remoted_schemas.c index ef59368f37a..12141b0daf7 100644 --- a/daemons/execd/remoted_schemas.c +++ b/daemons/execd/remoted_schemas.c @@ -95,7 +95,7 @@ write_extra_schema_file(xmlNode *xml, void *user_data) file = pcmk__xe_get(xml, PCMK_XA_PATH); if (file == NULL) { - crm_warn("No destination path given in schema request"); + pcmk__warn("No destination path given in schema request"); return; } @@ -114,12 +114,14 @@ write_extra_schema_file(xmlNode *xml, void *user_data) stream = fopen(path, "w+"); if (stream == NULL) { - crm_warn("Could not write schema file %s: %s", path, strerror(errno)); + pcmk__warn("Could not write schema file %s: %s", path, + strerror(errno)); } else { rc = fprintf(stream, "%s", child->content); if (rc < 0) { - crm_warn("Could not write schema file %s: %s", path, strerror(errno)); + pcmk__warn("Could not write schema file %s: %s", path, + strerror(errno)); } fclose(stream); @@ -248,7 +250,7 @@ remoted_request_cib_schema_files(void) */ if (schema_fetch_pid != 0) { if (mainloop_child_kill(schema_fetch_pid) == FALSE) { - crm_warn("Unable to kill pre-existing schema-fetch process"); + pcmk__warn("Unable to kill pre-existing schema-fetch process"); return; } @@ -273,7 +275,8 @@ remoted_request_cib_schema_files(void) switch (pid) { case -1: { rc = errno; - crm_warn("Could not spawn process to get schema files: %s", pcmk_rc_str(rc)); + pcmk__warn("Could not spawn process to get schema files: %s", + pcmk_rc_str(rc)); break; } diff --git a/daemons/execd/remoted_tls.c b/daemons/execd/remoted_tls.c index c6345d05d4c..36317379b7d 100644 --- a/daemons/execd/remoted_tls.c +++ b/daemons/execd/remoted_tls.c @@ -378,7 +378,8 @@ lrmd_init_remote_tls_server(void) * going to be added later. */ if (lrmd__init_remote_key(&psk_key) != pcmk_rc_ok) { - crm_warn("A cluster connection will not be possible until the key is available"); + pcmk__warn("A cluster connection will not be possible until the " + "key is available"); } gnutls_free(psk_key.data); diff --git a/daemons/fenced/fenced_cib.c b/daemons/fenced/fenced_cib.c index 71ff00bcaa4..2b39431ec20 100644 --- a/daemons/fenced/fenced_cib.c +++ b/daemons/fenced/fenced_cib.c @@ -242,7 +242,7 @@ update_cib_stonith_devices(const char *event, xmlNode * msg) pcmk__xe_get_int(patchset, PCMK_XA_FORMAT, &format); if (format != 2) { - crm_warn("Unknown patch format: %d", format); + pcmk__warn("Unknown patch format: %d", format); return; } @@ -283,7 +283,7 @@ update_cib_stonith_devices(const char *event, xmlNode * msg) /* watchdog_device_update called afterwards to fall back to implicit definition if needed */ } else { - crm_warn("Ignoring malformed CIB update (resource deletion)"); + pcmk__warn("Ignoring malformed CIB update (resource deletion)"); } free(mutable); @@ -383,7 +383,7 @@ update_fencing_topology(const char *event, xmlNode *msg) pcmk__xe_get_int(patchset, PCMK_XA_FORMAT, &format); if (format != 2) { - crm_warn("Unknown patch format: %d", format); + pcmk__warn("Unknown patch format: %d", format); return; } @@ -503,7 +503,8 @@ update_cib_cache_cb(const char *event, xmlNode * msg) local_cib = NULL; break; default: - crm_warn("[%s] ABORTED: %s (%d)", event, pcmk_strerror(rc), rc); + pcmk__warn("[%s] ABORTED: %s (%d)", event, pcmk_strerror(rc), + rc); pcmk__xml_free(local_cib); local_cib = NULL; } diff --git a/daemons/fenced/fenced_commands.c b/daemons/fenced/fenced_commands.c index 42c47c4082a..4a5d498f6f7 100644 --- a/daemons/fenced/fenced_commands.c +++ b/daemons/fenced/fenced_commands.c @@ -386,7 +386,7 @@ create_async_command(xmlNode *msg) rc = pcmk__xe_get_flags(msg, PCMK__XA_ST_CALLOPT, &(cmd->options), st_opt_none); if (rc != pcmk_rc_ok) { - crm_warn("Couldn't parse options from request: %s", pcmk_rc_str(rc)); + pcmk__warn("Couldn't parse options from request: %s", pcmk_rc_str(rc)); } cmd->origin = pcmk__xe_get_copy(msg, PCMK__XA_SRC); @@ -705,10 +705,10 @@ schedule_stonith_command(async_command_t * cmd, stonith_device_t * device) delay_max = delay_base; } if (delay_max < delay_base) { - crm_warn(PCMK_STONITH_DELAY_BASE " (%ds) is larger than " - PCMK_STONITH_DELAY_MAX " (%ds) for %s using %s " - "(limiting to maximum delay)", - delay_base, delay_max, cmd->action, device->id); + pcmk__warn(PCMK_STONITH_DELAY_BASE " (%ds) is larger than " + PCMK_STONITH_DELAY_MAX " (%ds) for %s using %s (limiting to " + "maximum delay)", + delay_base, delay_max, cmd->action, device->id); delay_base = delay_max; } if (delay_max > 0) { @@ -743,7 +743,8 @@ free_device(gpointer data) for (gIter = device->pending_ops; gIter != NULL; gIter = gIter->next) { async_command_t *cmd = gIter->data; - crm_warn("Removal of device '%s' purged operation '%s'", device->id, cmd->action); + pcmk__warn("Removal of device '%s' purged operation '%s'", device->id, + cmd->action); report_internal_result(cmd, CRM_EX_ERROR, PCMK_EXEC_NO_FENCE_DEVICE, "Device was removed before action could be executed"); } @@ -900,8 +901,8 @@ get_agent_metadata(const char *agent, xmlNode ** metadata) int rc; if (st == NULL) { - crm_warn("Could not get agent meta-data: " - "API memory allocation failed"); + pcmk__warn("Could not get agent meta-data: API memory allocation " + "failed"); return EAGAIN; } rc = st->cmds->metadata(st, st_opt_sync_call, agent, @@ -1166,13 +1167,14 @@ status_search_cb(int pid, const pcmk__action_result_t *result, void *user_data) mainloop_set_trigger(dev->work); if (result->execution_status != PCMK_EXEC_DONE) { - crm_warn("Assuming %s cannot fence %s " - "because status could not be executed: %s%s%s%s", - dev->id, search->host, - pcmk_exec_status_str(result->execution_status), - ((result->exit_reason == NULL)? "" : " ("), - ((result->exit_reason == NULL)? "" : result->exit_reason), - ((result->exit_reason == NULL)? "" : ")")); + const char *reason = result->exit_reason; + + pcmk__warn("Assuming %s cannot fence %s because status could not be " + "executed: %s%s%s%s", + dev->id, search->host, + pcmk_exec_status_str(result->execution_status), + ((reason != NULL)? " (" : ""), pcmk__s(reason, ""), + ((reason != NULL)? ")" : "")); search_devices_record_result(search, dev->id, FALSE); return; } @@ -1189,9 +1191,9 @@ status_search_cb(int pid, const pcmk__action_result_t *result, void *user_data) break; default: - crm_warn("Assuming %s cannot fence %s " - "(status returned unknown code %d)", - dev->id, search->host, result->exit_status); + pcmk__warn("Assuming %s cannot fence %s (status returned unknown " + "code %d)", + dev->id, search->host, result->exit_status); break; } search_devices_record_result(search, dev->id, can); @@ -1242,17 +1244,18 @@ dynamic_list_search_cb(int pid, const pcmk__action_result_t *result, } else { // We have never successfully executed list if (result->execution_status == PCMK_EXEC_DONE) { - crm_warn("Assuming %s cannot fence %s " - "because list returned error code %d", - dev->id, search->host, result->exit_status); + pcmk__warn("Assuming %s cannot fence %s because list returned " + "error code %d", + dev->id, search->host, result->exit_status); } else { - crm_warn("Assuming %s cannot fence %s " - "because list could not be executed: %s%s%s%s", - dev->id, search->host, - pcmk_exec_status_str(result->execution_status), - ((result->exit_reason == NULL)? "" : " ("), - ((result->exit_reason == NULL)? "" : result->exit_reason), - ((result->exit_reason == NULL)? "" : ")")); + const char *reason = result->exit_reason; + + pcmk__warn("Assuming %s cannot fence %s because list could not be " + "executed: %s%s%s%s", + dev->id, search->host, + pcmk_exec_status_str(result->execution_status), + ((reason != NULL)? " (" : ""), pcmk__s(reason, ""), + ((reason != NULL)? ")" : "")); } /* Fall back to pcmk_host_check=PCMK_VALUE_STATUS if the user didn't @@ -1704,7 +1707,7 @@ fenced_register_level(xmlNode *msg, char **desc, pcmk__action_result_t *result) // Ensure an ID was given (even the client API adds an ID) if (pcmk__str_empty(pcmk__xe_id(level))) { - crm_warn("Ignoring registration for topology level without ID"); + pcmk__warn("Ignoring registration for topology level without ID"); free(target); crm_log_xml_trace(level, "Bad level"); pcmk__format_result(result, CRM_EX_INVALID_PARAM, PCMK_EXEC_INVALID, @@ -1714,8 +1717,9 @@ fenced_register_level(xmlNode *msg, char **desc, pcmk__action_result_t *result) // Ensure a valid target was specified if (mode == fenced_target_by_unknown) { - crm_warn("Ignoring registration for topology level '%s' " - "without valid target", pcmk__xe_id(level)); + pcmk__warn("Ignoring registration for topology level '%s' without " + "valid target", + pcmk__xe_id(level)); free(target); crm_log_xml_trace(level, "Bad level"); pcmk__format_result(result, CRM_EX_INVALID_PARAM, PCMK_EXEC_INVALID, @@ -1726,8 +1730,9 @@ fenced_register_level(xmlNode *msg, char **desc, pcmk__action_result_t *result) // Ensure level ID is in allowed range if ((id < ST__LEVEL_MIN) || (id > ST__LEVEL_MAX)) { - crm_warn("Ignoring topology registration for %s with invalid level %d", - target, id); + pcmk__warn("Ignoring topology registration for %s with invalid level " + "%d", + target, id); free(target); crm_log_xml_trace(level, "Bad level"); pcmk__format_result(result, CRM_EX_INVALID_PARAM, PCMK_EXEC_INVALID, @@ -1810,8 +1815,9 @@ fenced_unregister_level(xmlNode *msg, char **desc, // Ensure level ID is in allowed range if ((id < 0) || (id >= ST__LEVEL_COUNT)) { - crm_warn("Ignoring topology unregistration for %s with invalid level %d", - target, id); + pcmk__warn("Ignoring topology unregistration for %s with invalid level " + "%d", + target, id); free(target); crm_log_xml_trace(level, "Bad level"); pcmk__format_result(result, CRM_EX_INVALID_PARAM, PCMK_EXEC_INVALID, @@ -2947,9 +2953,9 @@ fenced_construct_reply(const xmlNode *request, xmlNode *data, * * @TODO Maybe synchronize this information at start-up? */ - crm_warn("Missing request information for client notifications for " - "operation with result '%s' (initiated before we came up?)", - pcmk_exec_status_str(result->execution_status)); + pcmk__warn("Missing request information for client notifications for " + "operation with result '%s' (initiated before we came up?)", + pcmk_exec_status_str(result->execution_status)); } else { const char *name = NULL; @@ -3051,7 +3057,7 @@ check_alternate_host(const char *target) return entry->name; } } - crm_warn("Will handle own fencing because no peer can"); + pcmk__warn("Will handle own fencing because no peer can"); } return NULL; } @@ -3133,8 +3139,8 @@ is_privileged(const pcmk__client_t *c, const char *op) if ((c == NULL) || pcmk__is_set(c->flags, pcmk__client_privileged)) { return true; } else { - crm_warn("Rejecting IPC request '%s' from unprivileged client %s", - pcmk__s(op, ""), pcmk__client_name(c)); + pcmk__warn("Rejecting IPC request '%s' from unprivileged client %s", + pcmk__s(op, ""), pcmk__client_name(c)); return false; } } @@ -3638,7 +3644,7 @@ stonith_command(pcmk__client_t *client, uint32_t id, uint32_t flags, rc = pcmk__xe_get_flags(message, PCMK__XA_ST_CALLOPT, &call_options, st_opt_none); if (rc != pcmk_rc_ok) { - crm_warn("Couldn't parse options from message: %s", pcmk_rc_str(rc)); + pcmk__warn("Couldn't parse options from message: %s", pcmk_rc_str(rc)); } crm_debug("Processing %ssynchronous %s %s %u from %s %s", diff --git a/daemons/fenced/fenced_history.c b/daemons/fenced/fenced_history.c index 4a82ca0d27d..07a836a3fab 100644 --- a/daemons/fenced/fenced_history.c +++ b/daemons/fenced/fenced_history.c @@ -253,7 +253,7 @@ stonith_xml_history_to_list(const xmlNode *history) int execution_status = PCMK_EXEC_DONE; if (!id) { - crm_warn("Malformed fencing history received from peer"); + pcmk__warn("Malformed fencing history received from peer"); continue; } @@ -402,8 +402,9 @@ stonith_local_history_diff_and_merge(GHashTable *remote_history, pcmk__str_eq(op->originator, fenced_get_local_node(), pcmk__str_casei)) { - crm_warn("Failing pending operation %.8s originated by us but " - "known only from peer history", op->id); + pcmk__warn("Failing pending operation %.8s originated by us " + "but known only from peer history", + op->id); op->state = st_failed; set_fencing_completed(op); diff --git a/daemons/fenced/fenced_remote.c b/daemons/fenced/fenced_remote.c index 51519b6bb94..65d199512ac 100644 --- a/daemons/fenced/fenced_remote.c +++ b/daemons/fenced/fenced_remote.c @@ -1237,8 +1237,8 @@ create_remote_stonith_op(const char *client, xmlNode *request, gboolean peer) rc = pcmk__xe_get_flags(request, PCMK__XA_ST_CALLOPT, &(op->call_options), 0U); if (rc != pcmk_rc_ok) { - crm_warn("Couldn't parse options from request %s: %s", - op->id, pcmk_rc_str(rc)); + pcmk__warn("Couldn't parse options from request %s: %s", op->id, + pcmk_rc_str(rc)); } pcmk__xe_get_int(request, PCMK__XA_ST_CALLID, &(op->client_callid)); @@ -1266,7 +1266,8 @@ create_remote_stonith_op(const char *client, xmlNode *request, gboolean peer) pcmk__str_update(&(op->target), node->name); } else { - crm_warn("Could not expand nodeid '%s' into a host name", op->target); + pcmk__warn("Could not expand nodeid '%s' into a host name", + op->target); } } @@ -1329,8 +1330,9 @@ initiate_remote_stonith_op(const pcmk__client_t *client, xmlNode *request, // advance_topology_level() exhausted levels pcmk__set_result(&op->result, CRM_EX_ERROR, PCMK_EXEC_ERROR, "All topology levels failed"); - crm_warn("Could not request peer fencing (%s) targeting %s " - QB_XS " id=%.8s", op->action, op->target, op->id); + pcmk__warn("Could not request peer fencing (%s) targeting %s " + QB_XS " id=%.8s", + op->action, op->target, op->id); finalize_op(op, NULL, false); return op; @@ -1518,17 +1520,17 @@ valid_fencing_timeout(int specified_timeout, bool action_specific, if (timeout > specified_timeout) { if (action_specific) { - crm_warn("pcmk_%s_timeout %ds for %s is too short (must be >= " - PCMK_OPT_STONITH_WATCHDOG_TIMEOUT " %ds), using %ds " - "instead", - op->action, specified_timeout, device? device : "watchdog", - timeout, timeout); + pcmk__warn("pcmk_%s_timeout %ds for %s is too short (must be >= " + PCMK_OPT_STONITH_WATCHDOG_TIMEOUT " %ds), using %ds " + "instead", + op->action, specified_timeout, + pcmk__s(device, "watchdog"), timeout, timeout); } else { - crm_warn("Fencing timeout %ds is too short (must be >= " - PCMK_OPT_STONITH_WATCHDOG_TIMEOUT " %ds), using %ds " - "instead", - specified_timeout, timeout, timeout); + pcmk__warn("Fencing timeout %ds is too short (must be >= " + PCMK_OPT_STONITH_WATCHDOG_TIMEOUT " %ds), using %ds " + "instead", + specified_timeout, timeout, timeout); } } @@ -2019,8 +2021,9 @@ request_peer_fencing(remote_fencing_op_t *op, peer_device_info_t *peer) /* A remapped "on" cannot be executed, but the node was already * turned off successfully, so ignore the error and continue. */ - crm_warn("Ignoring %s 'on' failure (no capable peers) targeting %s " - "after successful 'off'", device, op->target); + pcmk__warn("Ignoring %s 'on' failure (no capable peers) targeting %s " + "after successful 'off'", + device, op->target); advance_topology_device_in_level(op, device, NULL); return; @@ -2255,8 +2258,9 @@ add_device_properties(const xmlNode *xml, remote_fencing_op_t *op, &(props->device_support_flags), st_device_supports_on); if (rc != pcmk_rc_ok) { - crm_warn("Couldn't determine device support for %s " - "(assuming unfencing): %s", device, pcmk_rc_str(rc)); + pcmk__warn("Couldn't determine device support for %s " + "(assuming unfencing): %s", + device, pcmk_rc_str(rc)); } /* Parse action-specific device properties */ @@ -2533,12 +2537,12 @@ fenced_process_fencing_reply(xmlNode *msg) /* A remapped "on" failed, but the node was already turned off * successfully, so ignore the error and continue. */ - crm_warn("Ignoring %s 'on' failure (%s%s%s) targeting %s " - "after successful 'off'", - device, pcmk_exec_status_str(op->result.execution_status), - (reason == NULL)? "" : ": ", - (reason == NULL)? "" : reason, - op->target); + pcmk__warn("Ignoring %s 'on' failure (%s%s%s) targeting %s after " + "successful 'off'", + device, + pcmk_exec_status_str(op->result.execution_status), + ((reason != NULL)? ": " : ""), pcmk__s(reason, ""), + op->target); pcmk__set_result(&op->result, CRM_EX_OK, PCMK_EXEC_DONE, NULL); } else { crm_notice("Action '%s' targeting %s%s%s on behalf of %s@%s: " diff --git a/daemons/fenced/pacemaker-fenced.c b/daemons/fenced/pacemaker-fenced.c index 779f8be6ed0..19756a4e313 100644 --- a/daemons/fenced/pacemaker-fenced.c +++ b/daemons/fenced/pacemaker-fenced.c @@ -130,8 +130,8 @@ st_ipc_dispatch(qb_ipcs_connection_t * qbc, void *data, size_t size) rc = pcmk__xe_get_flags(request, PCMK__XA_ST_CALLOPT, &call_options, st_opt_none); if (rc != pcmk_rc_ok) { - crm_warn("Couldn't parse options from IPC request: %s", - pcmk_rc_str(rc)); + pcmk__warn("Couldn't parse options from IPC request: %s", + pcmk_rc_str(rc)); } crm_trace("Flags %#08" PRIx32 "/%#08x for command %" PRIu32 @@ -247,9 +247,9 @@ do_local_reply(const xmlNode *notify_src, pcmk__client_t *client, crm_trace("Sent response %d to client %s", rid, pcmk__client_name(client)); } else { - crm_warn("%synchronous reply to client %s failed: %s", - (pcmk__is_set(call_options, st_opt_sync_call)? "S" : "As"), - pcmk__client_name(client), pcmk_rc_str(local_rc)); + pcmk__warn("%synchronous reply to client %s failed: %s", + (pcmk__is_set(call_options, st_opt_sync_call)? "S" : "As"), + pcmk__client_name(client), pcmk_rc_str(local_rc)); } } @@ -301,9 +301,10 @@ stonith_notify_client(gpointer key, gpointer value, gpointer user_data) crm_ipc_server_event); if (rc != pcmk_rc_ok) { - crm_warn("%s notification of client %s failed: %s " - QB_XS " id=%.8s rc=%d", type, pcmk__client_name(client), - pcmk_rc_str(rc), client->id, rc); + pcmk__warn("%s notification of client %s failed: %s " + QB_XS " id=%.8s rc=%d", + type, pcmk__client_name(client), pcmk_rc_str(rc), + client->id, rc); } else { crm_trace("Sent %s notification to client %s", type, pcmk__client_name(client)); diff --git a/daemons/pacemakerd/pacemakerd.c b/daemons/pacemakerd/pacemakerd.c index 6786804a3a4..d8a497a2a1c 100644 --- a/daemons/pacemakerd/pacemakerd.c +++ b/daemons/pacemakerd/pacemakerd.c @@ -140,8 +140,9 @@ pacemakerd_chown(const char *path, uid_t uid, gid_t gid) int rc = chown(path, uid, gid); if (rc < 0) { - crm_warn("Cannot change the ownership of %s to user %s and gid %d: %s", - path, CRM_DAEMON_USER, gid, pcmk_rc_str(errno)); + pcmk__warn("Cannot change the ownership of %s to user " CRM_DAEMON_USER + " and gid %d: %s", + path, gid, pcmk_rc_str(errno)); } } @@ -169,8 +170,8 @@ create_pcmk_dirs(void) // Used by some resource agents if ((mkdir(CRM_STATE_DIR, 0750) < 0) && (errno != EEXIST)) { - crm_warn("Could not create directory " CRM_STATE_DIR ": %s", - pcmk_rc_str(errno)); + pcmk__warn("Could not create directory " CRM_STATE_DIR ": %s", + pcmk_rc_str(errno)); } else { pacemakerd_chown(CRM_STATE_DIR, pcmk_uid, pcmk_gid); } @@ -179,8 +180,8 @@ create_pcmk_dirs(void) int rc = pcmk__build_path(dirs[i], 0750); if (rc != pcmk_rc_ok) { - crm_warn("Could not create directory %s: %s", - dirs[i], pcmk_rc_str(rc)); + pcmk__warn("Could not create directory %s: %s", dirs[i], + pcmk_rc_str(rc)); } else { pacemakerd_chown(dirs[i], pcmk_uid, pcmk_gid); } @@ -449,9 +450,9 @@ main(int argc, char **argv) startup_trigger = mainloop_add_trigger(G_PRIORITY_HIGH, init_children_processes, NULL); } else { if (running_with_sbd) { - crm_warn("Enabling SBD_SYNC_RESOURCE_STARTUP would (if supported " - "by your SBD version) improve reliability of " - "interworking between SBD & pacemaker."); + pcmk__warn("Enabling SBD_SYNC_RESOURCE_STARTUP would (if supported " + "by your SBD version) improve reliability of " + "interworking between SBD & pacemaker."); } pacemakerd_state = PCMK__VALUE_STARTING_DAEMONS; init_children_processes(NULL); diff --git a/daemons/pacemakerd/pcmkd_corosync.c b/daemons/pacemakerd/pcmkd_corosync.c index 4cf3e2df277..2656d5869bb 100644 --- a/daemons/pacemakerd/pcmkd_corosync.c +++ b/daemons/pacemakerd/pcmkd_corosync.c @@ -101,8 +101,8 @@ cluster_reconnect_cb(gpointer data) static void cfg_connection_destroy(gpointer user_data) { - crm_warn("Lost connection to cluster layer " - "(connection will be reattempted once per second)"); + pcmk__warn("Lost connection to cluster layer (connection will be " + "reattempted once per second)"); corosync_cfg_finalize(cfg_handle); cfg_handle = 0; reconnect_timer = mainloop_timer_add("corosync reconnect", 1000, TRUE, cluster_reconnect_cb, NULL); @@ -211,7 +211,7 @@ pcmkd_shutdown_corosync(void) cs_error_t rc; if (cfg_handle == 0) { - crm_warn("Unable to shut down Corosync: No connection"); + pcmk__warn("Unable to shut down Corosync: No connection"); return; } crm_info("Asking Corosync to shut down"); @@ -220,8 +220,8 @@ pcmkd_shutdown_corosync(void) if (rc == CS_OK) { close_cfg(); } else { - crm_warn("Corosync shutdown failed: %s " QB_XS " rc=%d", - cs_strerror(rc), rc); + pcmk__warn("Corosync shutdown failed: %s " QB_XS " rc=%d", + cs_strerror(rc), rc); } } @@ -357,16 +357,17 @@ pacemakerd_read_config(void) if(local_handle){ gid_t gid = 0; if (pcmk__daemon_user(NULL, &gid) != pcmk_rc_ok) { - crm_warn("Could not authorize group with Corosync " QB_XS - " No group found for user %s", CRM_DAEMON_USER); + pcmk__warn("Could not authorize group with Corosync " + QB_XS " No group found for user " CRM_DAEMON_USER); } else { char key[PATH_MAX]; snprintf(key, PATH_MAX, "uidgid.gid.%u", gid); rc = cmap_set_uint8(local_handle, key, 1); if (rc != CS_OK) { - crm_warn("Could not authorize group with Corosync: %s " QB_XS - " group=%u rc=%d", pcmk__cs_err_str(rc), gid, rc); + pcmk__warn("Could not authorize group with Corosync: %s " + QB_XS " group=%u rc=%d", + pcmk__cs_err_str(rc), gid, rc); } } } diff --git a/daemons/pacemakerd/pcmkd_messages.c b/daemons/pacemakerd/pcmkd_messages.c index 0edd3834005..39bb40b98a3 100644 --- a/daemons/pacemakerd/pcmkd_messages.c +++ b/daemons/pacemakerd/pcmkd_messages.c @@ -118,8 +118,8 @@ handle_shutdown_request(pcmk__request_t *request) pcmk__xe_get(msg, PCMK_XA_ORIGIN)); pcmk__xe_set_int(shutdown, PCMK__XA_OP_STATUS, CRM_EX_OK); } else { - crm_warn("Ignoring shutdown request from unprivileged client %s", - pcmk__client_name(request->ipc_client)); + pcmk__warn("Ignoring shutdown request from unprivileged client %s", + pcmk__client_name(request->ipc_client)); pcmk__xe_set_int(shutdown, PCMK__XA_OP_STATUS, CRM_EX_INSUFFICIENT_PRIV); } @@ -264,7 +264,7 @@ pcmk_ipc_dispatch(qb_ipcs_connection_t * qbc, void *data, size_t size) (reason == NULL)? "" : ")"); if (!pcmk__result_ok(&request.result)) { - crm_warn("%s", log_msg); + pcmk__warn("%s", log_msg); } else { crm_debug("%s", log_msg); } diff --git a/daemons/pacemakerd/pcmkd_subdaemons.c b/daemons/pacemakerd/pcmkd_subdaemons.c index 5e7257bbfd6..7b8c7df4f22 100644 --- a/daemons/pacemakerd/pcmkd_subdaemons.c +++ b/daemons/pacemakerd/pcmkd_subdaemons.c @@ -253,8 +253,9 @@ pcmk_child_exit(mainloop_child_t * p, pid_t pid, int core, int signo, int exitco break; case CRM_EX_FATAL: - crm_warn("Shutting cluster down because %s[%d] had fatal failure", - name, pid); + pcmk__warn("Shutting cluster down because %s[%d] had fatal " + "failure", + name, pid); child->flags &= ~child_respawn; fatal_error = TRUE; pcmk_shutdown(SIGTERM); @@ -313,8 +314,8 @@ pcmk_process_exit(pcmkd_child_t * child) pcmk__panic("Subdaemon failed"); } else if (child_liveness(child) == pcmk_rc_ok) { - crm_warn("Not respawning subdaemon %s because IPC endpoint %s is OK", - name, pcmk__server_ipc_name(child->server)); + pcmk__warn("Not respawning subdaemon %s because IPC endpoint %s is OK", + name, pcmk__server_ipc_name(child->server)); } else if (pcmk__is_set(child->flags, child_needs_cluster) && !pcmkd_cluster_connected()) { @@ -348,12 +349,12 @@ pcmk_shutdown_worker(gpointer user_data) if (pcmk__is_set(child->flags, child_respawn)) { if (child->pid == PCMK__SPECIAL_PID) { - crm_warn("Subdaemon %s cannot be terminated (shutdown " - "will be escalated after %ld seconds if it does " - "not terminate on its own; set PCMK_" - PCMK__ENV_FAIL_FAST "=1 to exit immediately " - "instead)", - name, (long) SHUTDOWN_ESCALATION_PERIOD); + pcmk__warn("Subdaemon %s cannot be terminated (shutdown " + "will be escalated after %ld seconds if it does " + "not terminate on its own; set PCMK_" + PCMK__ENV_FAIL_FAST "=1 to exit immediately " + "instead)", + name, (long) SHUTDOWN_ESCALATION_PERIOD); } next_log = now + 30; child->flags &= ~child_respawn; @@ -438,8 +439,9 @@ start_child(pcmkd_child_t * child) } if (use_valgrind && strlen(PCMK__VALGRIND_EXEC) == 0) { - crm_warn("Cannot enable valgrind for subdaemon %s: valgrind not found", - name); + pcmk__warn("Cannot enable valgrind for subdaemon %s: valgrind not " + "found", + name); use_valgrind = FALSE; } @@ -498,8 +500,8 @@ start_child(pcmkd_child_t * child) if (gid != 0) { // Drop root group access if not needed if (!need_root_group && (setgid(gid) < 0)) { - crm_warn("Could not set subdaemon %s group to %lld: %s", name, - (long long) gid, strerror(errno)); + pcmk__warn("Could not set subdaemon %s group to %lld: %s", name, + (long long) gid, strerror(errno)); } /* Initialize supplementary groups to those where the user is a member, @@ -515,9 +517,9 @@ start_child(pcmkd_child_t * child) } if ((uid != 0) && (setuid(uid) < 0)) { - crm_warn("Could not set subdaemon %s user to %s: %s " - QB_XS " uid=%lld errno=%d", - name, strerror(errno), user, (long long) uid, errno); + pcmk__warn("Could not set subdaemon %s user to %s: %s " + QB_XS " uid=%lld errno=%d", + name, strerror(errno), user, (long long) uid, errno); } pcmk__close_fds_in_child(true); @@ -705,6 +707,8 @@ find_and_track_existing_processes(void) for (i = 0; i < PCMK__NELEM(pcmk_children); i++) { const char *name = pcmk__server_name(pcmk_children[i].server); const char *ipc_name = NULL; + const long long child_pid = + (long long) PCMK__SPECIAL_PID_AS_0(pcmk_children[i].pid); if (pcmk_children[i].respawn_count < 0) { continue; @@ -745,49 +749,45 @@ find_and_track_existing_processes(void) " less optimal IPC liveness monitoring" " (not very suitable for heavy load)", name, WAIT_TRIES - 1); - crm_warn("The process behind %s IPC cannot be" - " terminated, so the overall shutdown" - " will get delayed implicitly (%ld s)," - " which serves as a graceful period for" - " its native termination if it vitally" - " depends on some other daemons going" - " down in a controlled way already", - name, (long) SHUTDOWN_ESCALATION_PERIOD); + pcmk__warn("The process behind %s IPC cannot be" + " terminated, so the overall shutdown" + " will get delayed implicitly (%ld s)," + " which serves as a graceful period for" + " its native termination if it vitally" + " depends on some other daemons going" + " down in a controlled way already", + name, (long) SHUTDOWN_ESCALATION_PERIOD); } else { + const int remaining = + (WAIT_TRIES - pcmk_children[i].respawn_count); + wait_in_progress = true; - crm_warn("Cannot reliably track pre-existing" - " authentic process behind %s IPC on this" - " platform, can still disappear in %d" - " attempt(s)", ipc_name, - WAIT_TRIES - pcmk_children[i].respawn_count); + pcmk__warn("Cannot reliably track pre-existing" + " authentic process behind %s IPC on" + " this platform, can still disappear in" + " %d attempt(s)", + ipc_name, remaining); continue; } } crm_notice("Tracking existing %s process (pid=%lld)", - name, - (long long) PCMK__SPECIAL_PID_AS_0( - pcmk_children[i].pid)); + name, child_pid); pcmk_children[i].respawn_count = -1; /* 0~keep watching */ pcmk_children[i].flags |= child_active_before_startup; break; case pcmk_rc_ipc_pid_only: if (pcmk_children[i].respawn_count == WAIT_TRIES) { - pid_t child_pid = - PCMK__SPECIAL_PID_AS_0(pcmk_children[i].pid); - pcmk__crit("%s IPC endpoint for existing authentic" " process %lld did not (re)appear", - ipc_name, (long long) child_pid); + ipc_name, child_pid); return rc; } wait_in_progress = true; - crm_warn("Cannot find %s IPC endpoint for existing" - " authentic process %lld, can still (re)appear" - " in %d attempts (?)", - ipc_name, - (long long) PCMK__SPECIAL_PID_AS_0( - pcmk_children[i].pid), - WAIT_TRIES - pcmk_children[i].respawn_count); + pcmk__warn("Cannot find %s IPC endpoint for existing" + " authentic process %lld, can still (re)appear" + " in %d attempts (?)", + ipc_name, child_pid, + (WAIT_TRIES - pcmk_children[i].respawn_count)); continue; default: pcmk__crit("Checked liveness of %s: %s " QB_XS " rc=%d", diff --git a/daemons/schedulerd/schedulerd_messages.c b/daemons/schedulerd/schedulerd_messages.c index 75ba676396e..4a9105f87e2 100644 --- a/daemons/schedulerd/schedulerd_messages.c +++ b/daemons/schedulerd/schedulerd_messages.c @@ -294,7 +294,7 @@ pe_ipc_dispatch(qb_ipcs_connection_t * qbc, void *data, size_t size) (reason == NULL)? "" : ")"); if (!pcmk__result_ok(&request.result)) { - crm_warn("%s", log_msg); + pcmk__warn("%s", log_msg); } else { crm_debug("%s", log_msg); } diff --git a/include/crm/common/logging_internal.h b/include/crm/common/logging_internal.h index a9f8c780bdb..2b86eb0f444 100644 --- a/include/crm/common/logging_internal.h +++ b/include/crm/common/logging_internal.h @@ -47,6 +47,15 @@ extern "C" { */ #define pcmk__err(fmt, args...) qb_log(LOG_ERR, fmt, ##args) +/*! + * \internal + * \brief Log a message at \c LOG_WARN level + * + * \param[in] fmt \c printf() format string for log message + * \param[in] args Format string arguments + */ +#define pcmk__warn(fmt, args...) qb_log(LOG_WARNING, fmt, ##args) + /* Some warnings are too noisy when logged every time a given function is called * (for example, using a deprecated feature). As an alternative, we allow * warnings to be logged once per invocation of the calling program. Each of @@ -78,7 +87,7 @@ enum pcmk__warnings { #define pcmk__warn_once(wo_flag, fmt...) do { \ if (!pcmk__is_set(pcmk__warnings, wo_flag)) { \ if (wo_flag == pcmk__wo_blind) { \ - crm_warn(fmt); \ + pcmk__warn(fmt); \ } else { \ pcmk__config_warn(fmt); \ } \ @@ -138,7 +147,7 @@ extern bool pcmk__config_has_warning; #define pcmk__config_warn(fmt...) do { \ pcmk__config_has_warning = true; \ if (pcmk__config_warning_handler == NULL) { \ - crm_warn(fmt); \ + pcmk__warn(fmt); \ } else { \ pcmk__config_warning_handler(pcmk__config_warning_context, fmt);\ } \ diff --git a/include/crm/common/scheduler_internal.h b/include/crm/common/scheduler_internal.h index 6055b2c23a5..433505ccb07 100644 --- a/include/crm/common/scheduler_internal.h +++ b/include/crm/common/scheduler_internal.h @@ -253,7 +253,7 @@ extern uint32_t pcmk__warnings; #define pcmk__sched_warn(scheduler, fmt...) do { \ pcmk__set_scheduler_flags((scheduler), \ pcmk__sched_processing_warning); \ - crm_warn(fmt); \ + pcmk__warn(fmt); \ } while (0) /*! diff --git a/lib/cib/cib_attrs.c b/lib/cib/cib_attrs.c index 76e292f9ff8..4ef721a6e8d 100644 --- a/lib/cib/cib_attrs.c +++ b/lib/cib/cib_attrs.c @@ -90,7 +90,7 @@ find_attr(cib_t *cib, const char *section, const char *node_uuid, xpath_base = pcmk_cib_xpath_for(section); if (xpath_base == NULL) { - crm_warn("%s CIB section not known", section); + pcmk__warn("%s CIB section not known", section); return ENOMSG; } diff --git a/lib/cib/cib_client.c b/lib/cib/cib_client.c index 2abbb02ac5b..dea020dfdfe 100644 --- a/lib/cib/cib_client.c +++ b/lib/cib/cib_client.c @@ -73,7 +73,7 @@ cib_client_add_notify_callback(cib_t * cib, const char *event, ciblib_GCompareFunc); if (list_item != NULL) { - crm_warn("Callback already present"); + pcmk__warn("Callback already present"); free(new_client); return -EINVAL; @@ -177,7 +177,7 @@ cib_client_register_callback_full(cib_t *cib, int call_id, int timeout, if (only_success == FALSE) { callback(NULL, call_id, call_id, NULL, user_data); } else { - crm_warn("CIB call failed: %s", pcmk_strerror(call_id)); + pcmk__warn("CIB call failed: %s", pcmk_strerror(call_id)); } if (user_data && free_func) { free_func(user_data); diff --git a/lib/cib/cib_file.c b/lib/cib/cib_file.c index 35a4d8d2ef4..e490f1c87a9 100644 --- a/lib/cib/cib_file.c +++ b/lib/cib/cib_file.c @@ -239,7 +239,7 @@ cib_file_process_request(cib_t *cib, xmlNode *request, xmlNode **output) rc = pcmk__xe_get_flags(request, PCMK__XA_CIB_CALLOPT, &call_options, cib_none); if (rc != pcmk_rc_ok) { - crm_warn("Couldn't parse options from request: %s", pcmk_rc_str(rc)); + pcmk__warn("Couldn't parse options from request: %s", pcmk_rc_str(rc)); } read_only = !pcmk__is_set(operation->flags, cib__op_attr_modifies); @@ -719,7 +719,7 @@ cib_file_verify_digest(xmlNode *root, const char *sigfile) } break; case ENOENT: - crm_warn("No on-disk digest present at %s", sigfile); + pcmk__warn("No on-disk digest present at %s", sigfile); return TRUE; default: pcmk__err("Could not read on-disk digest from %s: %s", sigfile, @@ -765,14 +765,17 @@ cib_file_read_and_verify(const char *filename, const char *sigfile, xmlNode **ro crm_perror(LOG_WARNING, "Could not verify cluster configuration file %s", filename); return -errno; } else if (buf.st_size == 0) { - crm_warn("Cluster configuration file %s is corrupt (size is zero)", filename); + pcmk__warn("Cluster configuration file %s is corrupt (size is zero)", + filename); return -pcmk_err_cib_corrupt; } /* Parse XML */ local_root = pcmk__xml_read(filename); if (local_root == NULL) { - crm_warn("Cluster configuration file %s is corrupt (unparseable as XML)", filename); + pcmk__warn("Cluster configuration file %s is corrupt (unparseable as " + "XML)", + filename); return -pcmk_err_cib_corrupt; } diff --git a/lib/cib/cib_native.c b/lib/cib/cib_native.c index d113920bb68..c3f0fca5f53 100644 --- a/lib/cib/cib_native.c +++ b/lib/cib/cib_native.c @@ -155,7 +155,7 @@ cib_native_perform_op_delegate(cib_t *cib, const char *op, const char *host, default: if (!pcmk__str_eq(op, PCMK__CIB_REQUEST_QUERY, pcmk__str_none)) { - crm_warn("Call failed: %s", pcmk_strerror(rc)); + pcmk__warn("Call failed: %s", pcmk_strerror(rc)); } } @@ -189,7 +189,7 @@ cib_native_dispatch_internal(const char *buffer, ssize_t length, msg = pcmk__xml_parse(buffer); if (msg == NULL) { - crm_warn("Received a NULL message from the CIB manager"); + pcmk__warn("Received a NULL message from the CIB manager"); return 0; } diff --git a/lib/cib/cib_ops.c b/lib/cib/cib_ops.c index 28a71312980..072761fbd92 100644 --- a/lib/cib/cib_ops.c +++ b/lib/cib/cib_ops.c @@ -569,8 +569,8 @@ update_results(xmlNode *failed, xmlNode *target, const char *operation, pcmk__xe_set(xml_node, PCMK_XA_OPERATION, operation); pcmk__xe_set(xml_node, PCMK_XA_REASON, error_msg); - crm_warn("Action %s failed: %s (cde=%d)", - operation, error_msg, return_code); + pcmk__warn("Action %s failed: %s (cde=%d)", operation, error_msg, + return_code); } return was_error; @@ -739,7 +739,9 @@ cib_process_xpath(const char *op, int options, const char *section, if (pcmk__str_eq(op, PCMK__CIB_REQUEST_DELETE, pcmk__str_none)) { if (match == *result_cib) { /* Attempting to delete the whole "/cib" */ - crm_warn("Cannot perform %s for %s: The xpath is addressing the whole /cib", op, section); + pcmk__warn("Cannot perform %s for %s: The xpath is addressing " + "the whole /cib", + op, section); rc = -EINVAL; break; } diff --git a/lib/cib/cib_remote.c b/lib/cib/cib_remote.c index e5ab4311d78..71553820550 100644 --- a/lib/cib/cib_remote.c +++ b/lib/cib/cib_remote.c @@ -534,7 +534,7 @@ cib_remote_free(cib_t *cib) { int rc = pcmk_ok; - crm_warn("Freeing CIB"); + pcmk__warn("Freeing CIB"); if (cib->state != cib_disconnected) { rc = cib_remote_signoff(cib); if (rc == pcmk_ok) { diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c index 6eb594d1afa..13b9ff5393f 100644 --- a/lib/cib/cib_utils.c +++ b/lib/cib/cib_utils.c @@ -88,8 +88,8 @@ cib__get_notify_patchset(const xmlNode *msg, const xmlNode **patchset) if ((pcmk__xe_get_int(msg, PCMK__XA_CIB_RC, &rc) != pcmk_rc_ok) || (rc != pcmk_ok)) { - crm_warn("Ignore failed CIB update: %s " QB_XS " rc=%d", - pcmk_strerror(rc), rc); + pcmk__warn("Ignore failed CIB update: %s " QB_XS " rc=%d", + pcmk_strerror(rc), rc); crm_log_xml_debug(msg, "failed"); return pcmk_legacy2rc(rc); } @@ -707,7 +707,7 @@ cib_native_callback(cib_t * cib, xmlNode * msg, int call_id, int rc) blob->callback(msg, call_id, rc, output, blob->user_data); } else if ((cib != NULL) && (rc != pcmk_ok)) { - crm_warn("CIB command failed: %s", pcmk_strerror(rc)); + pcmk__warn("CIB command failed: %s", pcmk_strerror(rc)); crm_log_xml_debug(msg, "Failed CIB Update"); } @@ -727,18 +727,18 @@ cib_native_notify(gpointer data, gpointer user_data) const char *event = NULL; if (msg == NULL) { - crm_warn("Skipping callback - NULL message"); + pcmk__warn("Skipping callback - NULL message"); return; } event = pcmk__xe_get(msg, PCMK__XA_SUBT); if (entry == NULL) { - crm_warn("Skipping callback - NULL callback client"); + pcmk__warn("Skipping callback - NULL callback client"); return; } else if (entry->callback == NULL) { - crm_warn("Skipping callback - NULL callback"); + pcmk__warn("Skipping callback - NULL callback"); return; } else if (!pcmk__str_eq(entry->event, event, pcmk__str_casei)) { diff --git a/lib/cluster/corosync.c b/lib/cluster/corosync.c index 830ef30d97e..487b8f13aa4 100644 --- a/lib/cluster/corosync.c +++ b/lib/cluster/corosync.c @@ -132,8 +132,9 @@ pcmk__corosync_name(uint64_t /*cmap_handle_t */ cmap_handle, uint32_t nodeid) } while (retries < 5 && rc != CS_OK); if (rc != CS_OK) { - crm_warn("Could not connect to Cluster Configuration Database API, error %s", - cs_strerror(rc)); + pcmk__warn("Could not connect to Cluster Configuration Database " + "API, error %s", + cs_strerror(rc)); local_handle = 0; } } @@ -283,8 +284,9 @@ quorum_notification_cb(quorum_handle_t handle, uint32_t quorate, pcmk__cluster_set_quorum(true); } else if (!is_quorate && was_quorate) { - crm_warn("Quorum lost " QB_XS " membership=%" PRIu64 " members=" PRIu32, - ring_id, view_list_entries); + pcmk__warn("Quorum lost " QB_XS " membership=%" PRIu64 + " members=%" PRIu32, + ring_id, view_list_entries); pcmk__cluster_set_quorum(false); } else { @@ -426,7 +428,7 @@ pcmk__corosync_quorum_connect(gboolean (*dispatch)(unsigned long long, if (quorate) { crm_notice("Quorum acquired"); } else { - crm_warn("No quorum"); + pcmk__warn("No quorum"); } quorum_app_callback = dispatch; pcmk__cluster_set_quorum(quorate != 0); @@ -585,7 +587,9 @@ pcmk__corosync_add_nodes(xmlNode *xml_parent) } while (retries < 5 && rc != CS_OK); if (rc != CS_OK) { - crm_warn("Could not connect to Cluster Configuration Database API, error %d", rc); + pcmk__warn("Could not connect to Cluster Configuration Database API, " + "error %d", + rc); return false; } @@ -765,18 +769,18 @@ pcmk__corosync_has_nodelist(void) } } while ((retries < 5) && (cs_rc != CS_OK)); if (cs_rc != CS_OK) { - crm_warn("Assuming Corosync does not have node list: " - "CMAP connection failed (%s) " QB_XS " rc=%d", - cs_strerror(cs_rc), cs_rc); + pcmk__warn("Assuming Corosync does not have node list: CMAP connection " + "failed (%s) " QB_XS " rc=%d", + cs_strerror(cs_rc), cs_rc); return false; } // Get CMAP connection file descriptor cs_rc = cmap_fd_get(cmap_handle, &fd); if (cs_rc != CS_OK) { - crm_warn("Assuming Corosync does not have node list: " - "CMAP unusable (%s) " QB_XS " rc=%d", - cs_strerror(cs_rc), cs_rc); + pcmk__warn("Assuming Corosync does not have node list: CMAP unusable " + "(%s) " QB_XS " rc=%d", + cs_strerror(cs_rc), cs_rc); goto bail; } @@ -784,25 +788,25 @@ pcmk__corosync_has_nodelist(void) rc = crm_ipc_is_authentic_process(fd, (uid_t) 0, (gid_t) 0, &found_pid, &found_uid, &found_gid); if (rc == 0) { - crm_warn("Assuming Corosync does not have node list: " - "CMAP provider is inauthentic " - QB_XS " pid=%lld uid=%lld gid=%lld", - (long long) PCMK__SPECIAL_PID_AS_0(found_pid), - (long long) found_uid, (long long) found_gid); + pcmk__warn("Assuming Corosync does not have node list: CMAP provider " + "is inauthentic " + QB_XS " pid=%lld uid=%lld gid=%lld", + (long long) PCMK__SPECIAL_PID_AS_0(found_pid), + (long long) found_uid, (long long) found_gid); goto bail; } else if (rc < 0) { - crm_warn("Assuming Corosync does not have node list: " - "Could not verify CMAP authenticity (%s) " QB_XS " rc=%d", - pcmk_strerror(rc), rc); + pcmk__warn("Assuming Corosync does not have node list: Could not " + "verify CMAP authenticity (%s) " QB_XS " rc=%d", + pcmk_strerror(rc), rc); goto bail; } // Check whether nodelist section is presetn cs_rc = cmap_iter_init(cmap_handle, "nodelist", &iter_handle); if (cs_rc != CS_OK) { - crm_warn("Assuming Corosync does not have node list: " - "CMAP not readable (%s) " QB_XS " rc=%d", - cs_strerror(cs_rc), cs_rc); + pcmk__warn("Assuming Corosync does not have node list: CMAP not " + "readable (%s) " QB_XS " rc=%d", + cs_strerror(cs_rc), cs_rc); goto bail; } diff --git a/lib/cluster/cpg.c b/lib/cluster/cpg.c index 01ddc8f0a9f..1b76d1d37d3 100644 --- a/lib/cluster/cpg.c +++ b/lib/cluster/cpg.c @@ -219,7 +219,7 @@ crm_cs_flush(gpointer data) pcmk__err("CPG queue has grown to %d", queue_len); } else if (queue_len == CS_SEND_MAX) { - crm_warn("CPG queue has grown to %d", queue_len); + pcmk__warn("CPG queue has grown to %d", queue_len); } if (cs_message_timer != 0) { @@ -407,9 +407,9 @@ pcmk__cpg_message_data(cpg_handle_t handle, uint32_t sender_id, uint32_t pid, if (msg->sender.id == 0) { msg->sender.id = sender_id; } else if (msg->sender.id != sender_id) { - crm_warn("Ignoring CPG message from ID %" PRIu32 " PID %" PRIu32 - ": claimed ID %" PRIu32, - sender_id, pid, msg->sender.id); + pcmk__warn("Ignoring CPG message from ID %" PRIu32 " PID %" PRIu32 + ": claimed ID %" PRIu32, + sender_id, pid, msg->sender.id); return NULL; } @@ -473,10 +473,10 @@ pcmk__cpg_message_data(cpg_handle_t handle, uint32_t sender_id, uint32_t pid, } if (rc != pcmk_rc_ok) { free(uncompressed); - crm_warn("Ignoring compressed CPG message %d from %s (ID %" PRIu32 - " PID %" PRIu32 "): %s", - msg->id, ais_dest(&(msg->sender)), sender_id, pid, - pcmk_rc_str(rc)); + pcmk__warn("Ignoring compressed CPG message %d from %s (ID %" PRIu32 + " PID %" PRIu32 "): %s", + msg->id, ais_dest(&(msg->sender)), sender_id, pid, + pcmk_rc_str(rc)); return NULL; } data = uncompressed; @@ -603,15 +603,15 @@ node_left(const char *cpg_group_name, int event_counter, PCMK_VALUE_OFFLINE); } } else if (cpg_peer->nodeid == local_nodeid) { - crm_warn("Group %s event %d: duplicate local pid %u left%s", - cpg_group_name, event_counter, - cpg_peer->pid, cpgreason2str(cpg_peer->reason)); + pcmk__warn("Group %s event %d: duplicate local pid %u left%s", + cpg_group_name, event_counter, + cpg_peer->pid, cpgreason2str(cpg_peer->reason)); } else { - crm_warn("Group %s event %d: " - "%s (node %u) duplicate pid %u left%s (%u remains)", - cpg_group_name, event_counter, peer_name(peer), - cpg_peer->nodeid, cpg_peer->pid, - cpgreason2str(cpg_peer->reason), (*rival)->pid); + pcmk__warn("Group %s event %d: %s (node %u) duplicate pid %u left%s " + "(%u remains)", + cpg_group_name, event_counter, peer_name(peer), + cpg_peer->nodeid, cpg_peer->pid, + cpgreason2str(cpg_peer->reason), (*rival)->pid); } } @@ -679,8 +679,8 @@ pcmk__cpg_confchg_cb(cpg_handle_t handle, if (member_list[i].nodeid == local_nodeid && member_list[i].pid != getpid()) { // See the note in node_left() - crm_warn("Group %s event %d: detected duplicate local pid %u", - group_name->value, counter, member_list[i].pid); + pcmk__warn("Group %s event %d: detected duplicate local pid %u", + group_name->value, counter, member_list[i].pid); continue; } crm_info("Group %s event %d: %s (node %u pid %u) is member", @@ -709,9 +709,9 @@ pcmk__cpg_confchg_cb(cpg_handle_t handle, } else if (now > (peer->when_lost + 60)) { // If it persists for more than a minute, update the state - crm_warn("Node %u is member of group %s but was believed " - "offline", - member_list[i].nodeid, group_name->value); + pcmk__warn("Node %u is member of group %s but was believed " + "offline", + member_list[i].nodeid, group_name->value); pcmk__update_peer_state(__func__, peer, PCMK_VALUE_MEMBER, 0); } } diff --git a/lib/cluster/election.c b/lib/cluster/election.c index f7855db0d77..2b6ff272144 100644 --- a/lib/cluster/election.c +++ b/lib/cluster/election.c @@ -370,17 +370,17 @@ election_check(pcmk_cluster_t *cluster) const pcmk__node_status_t *node = NULL; char *key = NULL; - crm_warn("Received too many votes in election"); + pcmk__warn("Received too many votes in election"); g_hash_table_iter_init(&gIter, pcmk__peer_cache); while (g_hash_table_iter_next(&gIter, NULL, (gpointer *) & node)) { if (pcmk__cluster_is_node_active(node)) { - crm_warn("* expected vote: %s", node->name); + pcmk__warn("* expected vote: %s", node->name); } } g_hash_table_iter_init(&gIter, cluster->priv->election->voted); while (g_hash_table_iter_next(&gIter, (gpointer *) & key, NULL)) { - crm_warn("* actual vote: %s", key); + pcmk__warn("* actual vote: %s", key); } } @@ -439,9 +439,8 @@ parse_election_message(const xmlNode *message, struct vote *vote) if ((vote->op == NULL) || (vote->from == NULL) || (vote->version == NULL) || (vote->election_owner == NULL) || (vote->election_id < 0)) { - crm_warn("Invalid %s message from %s", - pcmk__s(vote->op, "election"), - pcmk__s(vote->from, "unspecified node")); + pcmk__warn("Invalid %s message from %s", pcmk__s(vote->op, "election"), + pcmk__s(vote->from, "unspecified node")); crm_log_xml_trace(message, "bad-vote"); return FALSE; } @@ -457,9 +456,9 @@ parse_election_message(const xmlNode *message, struct vote *vote) &(vote->age)) != pcmk_rc_ok) || (vote->age.tv_sec < 0) || (vote->age.tv_usec < 0)) { - crm_warn("Cannot count election %s from %s because uptime is " - "missing or invalid", - vote->op, vote->from); + pcmk__warn("Cannot count election %s from %s because uptime is " + "missing or invalid", + vote->op, vote->from); return FALSE; } @@ -582,10 +581,10 @@ election_count_vote(pcmk_cluster_t *cluster, const xmlNode *message, * for us to win */ if (!we_are_owner) { - crm_warn("Cannot count election round %d %s from %s " - "because we did not start election (node ID %s did)", - vote.election_id, vote.op, vote.from, - vote.election_owner); + pcmk__warn("Cannot count election round %d %s from %s because we " + "did not start election (node ID %s did)", + vote.election_id, vote.op, vote.from, + vote.election_owner); return election_error; } if (cluster->priv->election->state != election_in_progress) { @@ -640,8 +639,8 @@ election_count_vote(pcmk_cluster_t *cluster, const xmlNode *message, */ cluster->priv->election->election_wins++; if (cluster->priv->election->election_wins > (peers * peers)) { - crm_warn("Election storm detected: %d wins in %d seconds", - cluster->priv->election->election_wins, STORM_INTERVAL); + pcmk__warn("Election storm detected: %d wins in %d seconds", + cluster->priv->election->election_wins, STORM_INTERVAL); cluster->priv->election->election_wins = 0; cluster->priv->election->expires = tm_now + STORM_INTERVAL; if (!(cluster->priv->election->wrote_blackbox)) { diff --git a/lib/cluster/membership.c b/lib/cluster/membership.c index acb9f5ef6eb..d35ffdd1ce8 100644 --- a/lib/cluster/membership.c +++ b/lib/cluster/membership.c @@ -768,16 +768,18 @@ search_cluster_member_cache(unsigned int id, const char *uname, by_name); } else { - crm_warn("Nodes '%s' and '%s' share the same cluster nodeid: %u %s", - by_id->name, by_name->name, id, uname); + pcmk__warn("Nodes '%s' and '%s' share the same cluster nodeid: %u " + "%s", + by_id->name, by_name->name, id, uname); dump_peer_hash(LOG_INFO, __func__); crm_abort(__FILE__, __func__, __LINE__, "member weirdness", TRUE, TRUE); } } else if ((id > 0) && (by_name->cluster_layer_id > 0)) { - crm_warn("Nodes %" PRIu32 " and %" PRIu32 " share the same name: '%s'", - by_id->cluster_layer_id, by_name->cluster_layer_id, uname); + pcmk__warn("Nodes %" PRIu32 " and %" PRIu32 " share the same name: " + "'%s'", + by_id->cluster_layer_id, by_name->cluster_layer_id, uname); } else { /* Simple merge */ @@ -912,10 +914,10 @@ remove_conflicting_peer(pcmk__node_status_t *node) continue; } - crm_warn("Removing cached offline node %" PRIu32 "/%s which has " - "conflicting name with %" PRIu32, - existing_node->cluster_layer_id, existing_node->name, - node->cluster_layer_id); + pcmk__warn("Removing cached offline node %" PRIu32 "/%s which has " + "conflicting name with %" PRIu32, + existing_node->cluster_layer_id, existing_node->name, + node->cluster_layer_id); g_hash_table_iter_remove(&iter); matches++; @@ -1051,8 +1053,9 @@ update_peer_uname(pcmk__node_status_t *node, const char *uname) for (const char *c = uname; *c; ++c) { if ((*c >= 'A') && (*c <= 'Z')) { - crm_warn("Node names with capitals are discouraged, consider changing '%s'", - uname); + pcmk__warn("Node names with capitals are discouraged, consider " + "changing '%s'", + uname); break; } } diff --git a/lib/common/acl.c b/lib/common/acl.c index 13ba6dfd6a5..172d742b4a2 100644 --- a/lib/common/acl.c +++ b/lib/common/acl.c @@ -139,7 +139,7 @@ parse_acl_entry(const xmlNode *acl_top, const xmlNode *acl_entry, GList *acls) acls = create_acl(child, acls, pcmk__xf_acl_deny); } else { - crm_warn("Ignoring unknown ACL kind '%s'", kind); + pcmk__warn("Ignoring unknown ACL kind '%s'", kind); } } else if (pcmk__xe_is(child, PCMK_XE_ROLE)) { diff --git a/lib/common/actions.c b/lib/common/actions.c index 7ece426359d..c7b09ef5e1b 100644 --- a/lib/common/actions.c +++ b/lib/common/actions.c @@ -411,8 +411,9 @@ decode_transition_magic(const char *magic, char **uuid, int *transition_id, int pcmk_rc_str(errno)); result = FALSE; } else if (res < 3) { - crm_warn("Transition information '%s' incomplete (%d of 3 expected items)", - magic, res); + pcmk__warn("Transition information '%s' incomplete (%d of 3 expected " + "items)", + magic, res); result = FALSE; } else { if (op_status) { @@ -480,7 +481,7 @@ decode_transition_key(const char *key, char **uuid, int *transition_id, int *act return FALSE; } if (strlen(local_uuid) != 36) { - crm_warn("Invalid UUID '%s' in transition key '%s'", local_uuid, key); + pcmk__warn("Invalid UUID '%s' in transition key '%s'", local_uuid, key); } if (uuid) { *uuid = pcmk__str_copy(local_uuid); diff --git a/lib/common/health.c b/lib/common/health.c index 01760a54d0c..fa98b0174fb 100644 --- a/lib/common/health.c +++ b/lib/common/health.c @@ -91,8 +91,8 @@ pcmk__health_score(const char *option, const pcmk_scheduler_t *scheduler) value = pcmk__cluster_option(scheduler->priv->options, option); rc = pcmk_parse_score(value, &score, 0); if (rc != pcmk_rc_ok) { - crm_warn("Using 0 for %s because '%s' is invalid: %s", - option, value, pcmk_rc_str(rc)); + pcmk__warn("Using 0 for %s because '%s' is invalid: %s", + option, value, pcmk_rc_str(rc)); } return score; } diff --git a/lib/common/ipc_client.c b/lib/common/ipc_client.c index 30632b1ccd4..3af25ca22e3 100644 --- a/lib/common/ipc_client.c +++ b/lib/common/ipc_client.c @@ -323,15 +323,15 @@ dispatch_ipc_data(const char *buffer, pcmk_ipc_api_t *api) xmlNode *msg; if (buffer == NULL) { - crm_warn("Empty message received from %s IPC", - pcmk_ipc_name(api, true)); + pcmk__warn("Empty message received from %s IPC", + pcmk_ipc_name(api, true)); return ENOMSG; } msg = pcmk__xml_parse(buffer); if (msg == NULL) { - crm_warn("Malformed message received from %s IPC", - pcmk_ipc_name(api, true)); + pcmk__warn("Malformed message received from %s IPC", + pcmk_ipc_name(api, true)); return EPROTO; } @@ -1325,8 +1325,8 @@ crm_ipc_send(crm_ipc_t *client, const xmlNode *message, if (client->need_reply) { qb_rc = qb_ipcc_recv(client->ipc, client->buffer, client->buf_size, ms_timeout); if (qb_rc < 0) { - crm_warn("Sending %s IPC disabled until pending reply received", - client->server_name); + pcmk__warn("Sending %s IPC disabled until pending reply received", + client->server_name); return -EALREADY; } else { @@ -1340,8 +1340,8 @@ crm_ipc_send(crm_ipc_t *client, const xmlNode *message, CRM_LOG_ASSERT(id != 0); /* Crude wrap-around detection */ rc = pcmk__ipc_prepare_iov(id, message, client->max_buf_size, &iov, &bytes); if (rc != pcmk_rc_ok) { - crm_warn("Couldn't prepare %s IPC request: %s " QB_XS " rc=%d", - client->server_name, pcmk_rc_str(rc), rc); + pcmk__warn("Couldn't prepare %s IPC request: %s " QB_XS " rc=%d", + client->server_name, pcmk_rc_str(rc), rc); return pcmk_rc2legacy(rc); } @@ -1414,15 +1414,15 @@ crm_ipc_send(crm_ipc_t *client, const xmlNode *message, QB_XS " rc=%d", client->server_name, header->qb.id, rc); } else if (rc == -ETIMEDOUT) { - crm_warn("%s IPC request %d failed: %s after %dms " QB_XS " rc=%d", - client->server_name, header->qb.id, pcmk_strerror(rc), - ms_timeout, rc); + pcmk__warn("%s IPC request %d failed: %s after %dms " QB_XS " rc=%d", + client->server_name, header->qb.id, pcmk_strerror(rc), + ms_timeout, rc); crm_write_blackbox(0, NULL); } else if (rc <= 0) { - crm_warn("%s IPC request %d failed: %s " QB_XS " rc=%d", - client->server_name, header->qb.id, - ((rc == 0)? "No bytes sent" : pcmk_strerror(rc)), rc); + pcmk__warn("%s IPC request %d failed: %s " QB_XS " rc=%d", + client->server_name, header->qb.id, + ((rc == 0)? "No bytes sent" : pcmk_strerror(rc)), rc); } pcmk_free_ipc_event(iov); @@ -1643,10 +1643,10 @@ pcmk__ipc_is_authentic_process_active(const char *name, uid_t refuid, if ((found_uid != refuid || found_gid != refgid) && strncmp(last_asked_name, name, sizeof(last_asked_name))) { if ((found_uid == 0) && (refuid != 0)) { - crm_warn("Daemon (IPC %s) runs as root, whereas the expected" - " credentials are %lld:%lld, hazard of violating" - " the least privilege principle", - name, (long long) refuid, (long long) refgid); + pcmk__warn("Daemon (IPC %s) runs as root, whereas the expected " + "credentials are %lld:%lld, hazard of violating the " + "least privilege principle", + name, (long long) refuid, (long long) refgid); } else { crm_notice("Daemon (IPC %s) runs as %lld:%lld, whereas the" " expected credentials are %lld:%lld, which may" diff --git a/lib/common/ipc_common.c b/lib/common/ipc_common.c index c1a1a16cb76..6d67510749b 100644 --- a/lib/common/ipc_common.c +++ b/lib/common/ipc_common.c @@ -39,16 +39,16 @@ pcmk__ipc_buffer_size(unsigned int max) if (rc != pcmk_rc_ok) { env_value = MAX_MSG_SIZE; max = QB_MAX(max, env_value); - crm_warn("Using %u as IPC buffer size because '%s' is not " - "a valid value for PCMK_" PCMK__ENV_IPC_BUFFER ": %s", - max, env_value_s, pcmk_rc_str(rc)); + pcmk__warn("Using %u as IPC buffer size because '%s' is not " + "a valid value for PCMK_" PCMK__ENV_IPC_BUFFER ": %s", + max, env_value_s, pcmk_rc_str(rc)); } else if (env_value <= 0LL) { env_value = MAX_MSG_SIZE; max = QB_MAX(max, env_value); - crm_warn("Using %u as IPC buffer size because PCMK_" - PCMK__ENV_IPC_BUFFER " (%s) is not a positive integer", - max, env_value_s); + pcmk__warn("Using %u as IPC buffer size because PCMK_" + PCMK__ENV_IPC_BUFFER " (%s) is not a positive integer", + max, env_value_s); } else if (env_value < MIN_MSG_SIZE) { env_value = MIN_MSG_SIZE; diff --git a/lib/common/ipc_pacemakerd.c b/lib/common/ipc_pacemakerd.c index a78451c9fa1..1063d8234bc 100644 --- a/lib/common/ipc_pacemakerd.c +++ b/lib/common/ipc_pacemakerd.c @@ -207,9 +207,9 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) int rc = pcmk__scan_ll(status, &ack_status, CRM_EX_OK); if (rc != pcmk_rc_ok) { - crm_warn("Ack reply from %s has invalid " PCMK_XA_STATUS - " '%s' (bug?)", - pcmk_ipc_name(api, true), pcmk__s(status, "")); + pcmk__warn("Ack reply from %s has invalid " PCMK_XA_STATUS " '%s' " + "(bug?)", + pcmk_ipc_name(api, true), pcmk__s(status, "")); } return ack_status == CRM_EX_INDETERMINATE; } diff --git a/lib/common/ipc_server.c b/lib/common/ipc_server.c index 375ec7abee8..b7a786b23ca 100644 --- a/lib/common/ipc_server.c +++ b/lib/common/ipc_server.c @@ -118,8 +118,8 @@ pcmk__client_cleanup(void) int active = g_hash_table_size(client_connections); if (active > 0) { - crm_warn("Exiting with %d active IPC client%s", - active, pcmk__plural_s(active)); + pcmk__warn("Exiting with %d active IPC client%s", active, + pcmk__plural_s(active)); } g_hash_table_destroy(client_connections); client_connections = NULL; @@ -220,8 +220,8 @@ pcmk__new_client(qb_ipcs_connection_t *c, uid_t uid_client, gid_t gid_client) static bool need_log = true; if (need_log) { - crm_warn("Could not find user and group IDs for user " - CRM_DAEMON_USER); + pcmk__warn("Could not find user and group IDs for user " + CRM_DAEMON_USER); need_log = false; } } @@ -554,8 +554,9 @@ crm_ipcs_flush_events(pcmk__client_t *c) if (queue_len > QB_MAX(c->queue_max, PCMK_IPC_DEFAULT_QUEUE_MAX)) { if ((c->queue_backlog <= 1) || (queue_len < c->queue_backlog)) { /* Don't evict for a new or shrinking backlog */ - crm_warn("Client with process ID %u has a backlog of %u messages " - QB_XS " %p", c->pid, queue_len, c->ipcs); + pcmk__warn("Client with process ID %u has a backlog of %u " + "messages " QB_XS " %p", + c->pid, queue_len, c->ipcs); } else { pcmk__err("Evicting client with process ID %u due to backlog " "of %u messages " QB_XS " %p", @@ -883,7 +884,8 @@ void pcmk__serve_based_ipc(qb_ipcs_service_t **ipcs_ro, if (*ipcs_ro == NULL || *ipcs_rw == NULL || *ipcs_shm == NULL) { pcmk__err("Failed to create the CIB manager: exiting and inhibiting " "respawn"); - crm_warn("Verify pacemaker and pacemaker_remote are not both enabled"); + pcmk__warn("Verify pacemaker and pacemaker_remote are not both " + "enabled"); crm_exit(CRM_EX_FATAL); } } @@ -964,7 +966,8 @@ pcmk__serve_fenced_ipc(qb_ipcs_service_t **ipcs, if (*ipcs == NULL) { pcmk__err("Failed to create fencer: exiting and inhibiting respawn"); - crm_warn("Verify pacemaker and pacemaker_remote are not both enabled."); + pcmk__warn("Verify pacemaker and pacemaker_remote are not both " + "enabled"); crm_exit(CRM_EX_FATAL); } } @@ -986,7 +989,8 @@ pcmk__serve_pacemakerd_ipc(qb_ipcs_service_t **ipcs, if (*ipcs == NULL) { pcmk__err("Couldn't start pacemakerd IPC server"); - crm_warn("Verify pacemaker and pacemaker_remote are not both enabled."); + pcmk__warn("Verify pacemaker and pacemaker_remote are not both " + "enabled"); /* sub-daemons are observed by pacemakerd. Thus we exit CRM_EX_FATAL * if we want to prevent pacemakerd from restarting them. * With pacemakerd we leave the exit-code shown to e.g. systemd diff --git a/lib/common/logging.c b/lib/common/logging.c index 9400e4c1ac6..9cc60c98052 100644 --- a/lib/common/logging.c +++ b/lib/common/logging.c @@ -236,8 +236,9 @@ chown_logfile(const char *filename, int logfd) rc = pcmk__daemon_user(&pcmk_uid, &pcmk_gid); if (rc != pcmk_rc_ok) { - crm_warn("Not changing '%s' ownership because user information " - "unavailable: %s", filename, pcmk_rc_str(rc)); + pcmk__warn("Not changing '%s' ownership because user information " + "unavailable: %s", + filename, pcmk_rc_str(rc)); return pcmk_rc_ok; } if ((st.st_gid == pcmk_gid) @@ -245,8 +246,8 @@ chown_logfile(const char *filename, int logfd) return pcmk_rc_ok; } if (fchown(logfd, pcmk_uid, pcmk_gid) < 0) { - crm_warn("Couldn't change '%s' ownership to user %s gid %d: %s", - filename, CRM_DAEMON_USER, pcmk_gid, strerror(errno)); + pcmk__warn("Couldn't change '%s' ownership to user %s gid %d: %s", + filename, CRM_DAEMON_USER, pcmk_gid, strerror(errno)); } return pcmk_rc_ok; } @@ -266,8 +267,8 @@ chmod_logfile(const char *filename, int logfd) } } if ((filemode != 0) && (fchmod(logfd, filemode) < 0)) { - crm_warn("Couldn't change '%s' mode to %04o: %s", - filename, filemode, strerror(errno)); + pcmk__warn("Couldn't change '%s' mode to %04o: %s", filename, filemode, + strerror(errno)); } } @@ -365,15 +366,15 @@ pcmk__add_logfile(const char *filename) logfile = fopen(filename, "a"); if (logfile == NULL) { rc = errno; - crm_warn("Logging to '%s' is disabled: %s " QB_XS " uid=%u gid=%u", - filename, strerror(rc), geteuid(), getegid()); + pcmk__warn("Logging to '%s' is disabled: %s " QB_XS " uid=%u gid=%u", + filename, strerror(rc), geteuid(), getegid()); return rc; } rc = set_logfile_permissions(filename, logfile); if (rc != pcmk_rc_ok) { - crm_warn("Logging to '%s' is disabled: %s " QB_XS " permissions", - filename, strerror(rc)); + pcmk__warn("Logging to '%s' is disabled: %s " QB_XS " permissions", + filename, strerror(rc)); fclose(logfile); return rc; } @@ -382,8 +383,8 @@ pcmk__add_logfile(const char *filename) fclose(logfile); fd = qb_log_file_open(filename); if (fd < 0) { - crm_warn("Logging to '%s' is disabled: %s " QB_XS " qb_log_file_open", - filename, strerror(-fd)); + pcmk__warn("Logging to '%s' is disabled: %s " QB_XS " qb_log_file_open", + filename, strerror(-fd)); return -fd; // == +errno } diff --git a/lib/common/mainloop.c b/lib/common/mainloop.c index f619e989e07..7a5f0fdde4a 100644 --- a/lib/common/mainloop.c +++ b/lib/common/mainloop.c @@ -1086,7 +1086,8 @@ child_timeout_callback(gpointer p) child->timerid = 0; if (child->timeout) { - crm_warn("%s process (PID %d) will not die!", child->desc, (int)child->pid); + pcmk__warn("%s process (PID %lld) will not die!", child->desc, + (long long) child->pid); return FALSE; } diff --git a/lib/common/messages.c b/lib/common/messages.c index 7ce999e17bc..005afc9b6e9 100644 --- a/lib/common/messages.c +++ b/lib/common/messages.c @@ -146,7 +146,8 @@ pcmk__new_reply_as(const char *origin, const xmlNode *original_request, } if (type == NULL) { - crm_warn("Cannot reply to invalid message: No message type specified"); + pcmk__warn("Cannot reply to invalid message: No message type " + "specified"); return NULL; } diff --git a/lib/common/patchset.c b/lib/common/patchset.c index 5f9a374166f..67fc8818866 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -896,7 +896,7 @@ pcmk__cib_element_in_patchset(const xmlNode *patchset, const char *element) pcmk__xe_get_int(patchset, PCMK_XA_FORMAT, &format); if (format != 2) { - crm_warn("Unknown patch format: %d", format); + pcmk__warn("Unknown patch format: %d", format); return false; } diff --git a/lib/common/procfs.c b/lib/common/procfs.c index ecddb0cde63..95d899ae0cf 100644 --- a/lib/common/procfs.c +++ b/lib/common/procfs.c @@ -289,7 +289,7 @@ pcmk__sysrq_trigger(char t) FILE *procf = fopen("/proc/sysrq-trigger", "a"); if (procf == NULL) { - crm_warn("Could not open sysrq-trigger: %s", strerror(errno)); + pcmk__warn("Could not open sysrq-trigger: %s", strerror(errno)); } else { fprintf(procf, "%c\n", t); fclose(procf); @@ -366,7 +366,7 @@ pcmk__throttle_cib_load(const char *server, float *load) loadfile = find_cib_loadfile(server); if (loadfile == NULL) { - crm_warn("Couldn't find CIB load file"); + pcmk__warn("Couldn't find CIB load file"); return false; } @@ -378,7 +378,7 @@ pcmk__throttle_cib_load(const char *server, float *load) if (stream == NULL) { int rc = errno; - crm_warn("Couldn't read %s: %s (%d)", loadfile, pcmk_rc_str(rc), rc); + pcmk__warn("Couldn't read %s: %s (%d)", loadfile, pcmk_rc_str(rc), rc); free(loadfile); loadfile = NULL; return false; @@ -445,7 +445,7 @@ pcmk__throttle_load_avg(float *load) stream = fopen(loadfile, "r"); if (stream == NULL) { int rc = errno; - crm_warn("Couldn't read %s: %s (%d)", loadfile, pcmk_rc_str(rc), rc); + pcmk__warn("Couldn't read %s: %s (%d)", loadfile, pcmk_rc_str(rc), rc); return false; } diff --git a/lib/common/remote.c b/lib/common/remote.c index d5fe0587256..18636ae1355 100644 --- a/lib/common/remote.c +++ b/lib/common/remote.c @@ -314,8 +314,9 @@ pcmk__remote_message_xml(pcmk__remote_t *remote) rc = pcmk__bzlib2rc(rc); if (rc != pcmk_rc_ok && header->version > REMOTE_MSG_VERSION) { - crm_warn("Couldn't decompress v%d message, we only understand v%d", - header->version, REMOTE_MSG_VERSION); + pcmk__warn("Couldn't decompress v%d message, we only understand " + "v%d", + header->version, REMOTE_MSG_VERSION); free(uncompressed); return NULL; @@ -343,8 +344,8 @@ pcmk__remote_message_xml(pcmk__remote_t *remote) xml = pcmk__xml_parse(remote->buffer + header->payload_offset); if (xml == NULL && header->version > REMOTE_MSG_VERSION) { - crm_warn("Couldn't parse v%d message, we only understand v%d", - header->version, REMOTE_MSG_VERSION); + pcmk__warn("Couldn't parse v%d message, we only understand v%d", + header->version, REMOTE_MSG_VERSION); } else if (xml == NULL) { pcmk__err("Couldn't parse: '%.120s'", @@ -697,8 +698,8 @@ connect_socket_retry(int sock, const struct sockaddr *addr, socklen_t addrlen, rc = pcmk__set_nonblocking(sock); if (rc != pcmk_rc_ok) { - crm_warn("Could not set socket non-blocking: %s " QB_XS " rc=%d", - pcmk_rc_str(rc), rc); + pcmk__warn("Could not set socket non-blocking: %s " QB_XS " rc=%d", + pcmk_rc_str(rc), rc); return rc; } @@ -712,8 +713,8 @@ connect_socket_retry(int sock, const struct sockaddr *addr, socklen_t addrlen, break; default: - crm_warn("Could not connect socket: %s " QB_XS " rc=%d", - pcmk_rc_str(rc), rc); + pcmk__warn("Could not connect socket: %s " QB_XS " rc=%d", + pcmk_rc_str(rc), rc); return rc; } } @@ -771,15 +772,15 @@ connect_socket_once(int sock, const struct sockaddr *addr, socklen_t addrlen) if (rc < 0) { rc = errno; - crm_warn("Could not connect socket: %s " QB_XS " rc=%d", - pcmk_rc_str(rc), rc); + pcmk__warn("Could not connect socket: %s " QB_XS " rc=%d", + pcmk_rc_str(rc), rc); return rc; } rc = pcmk__set_nonblocking(sock); if (rc != pcmk_rc_ok) { - crm_warn("Could not set socket non-blocking: %s " QB_XS " rc=%d", - pcmk_rc_str(rc), rc); + pcmk__warn("Could not set socket non-blocking: %s " QB_XS " rc=%d", + pcmk_rc_str(rc), rc); return rc; } @@ -854,8 +855,9 @@ pcmk__connect_remote(const char *host, int port, int timeout, int *timer_id, sock = socket(rp->ai_family, SOCK_STREAM, IPPROTO_TCP); if (sock == -1) { rc = errno; - crm_warn("Could not create socket for remote connection to %s:%d: " - "%s " QB_XS " rc=%d", server, port, pcmk_rc_str(rc), rc); + pcmk__warn("Could not create socket for remote connection to " + "%s:%d: %s " QB_XS " rc=%d", + server, port, pcmk_rc_str(rc), rc); continue; } @@ -1011,9 +1013,9 @@ crm_default_remote_port(void) errno = 0; port = strtol(env, NULL, 10); if (errno || (port < 1) || (port > 65535)) { - crm_warn("Environment variable PCMK_" PCMK__ENV_REMOTE_PORT - " has invalid value '%s', using %d instead", - env, DEFAULT_REMOTE_PORT); + pcmk__warn("Environment variable PCMK_" PCMK__ENV_REMOTE_PORT + " has invalid value '%s', using %d instead", + env, DEFAULT_REMOTE_PORT); port = DEFAULT_REMOTE_PORT; } } else { diff --git a/lib/common/results.c b/lib/common/results.c index d14143686ff..395b67824fd 100644 --- a/lib/common/results.c +++ b/lib/common/results.c @@ -181,8 +181,8 @@ fail_assert_as(const char *file, const char *function, int line, pid = fork(); switch (pid) { case -1: // Fork failed - crm_warn("%s: Cannot dump core for non-fatal assertion at %s:%d " - ": %s", function, file, line, assert_condition); + pcmk__warn("%s: Cannot dump core for non-fatal assertion at %s:%d " + ": %s", function, file, line, assert_condition); break; case 0: // Child process: just abort to dump core diff --git a/lib/common/rules.c b/lib/common/rules.c index 66891c1c9c2..fa1bfbb4fdf 100644 --- a/lib/common/rules.c +++ b/lib/common/rules.c @@ -761,8 +761,9 @@ pcmk__cmp_by_type(const char *value1, const char *value2, enum pcmk__type type) if ((pcmk__scan_ll(value1, &integer1, 0LL) != pcmk_rc_ok) || (pcmk__scan_ll(value2, &integer2, 0LL) != pcmk_rc_ok)) { - crm_warn("Comparing '%s' and '%s' as strings because " - "invalid as integers", value1, value2); + pcmk__warn("Comparing '%s' and '%s' as strings because " + "invalid as integers", + value1, value2); return strcasecmp(value1, value2); } return (integer1 < integer2)? -1 : (integer1 > integer2)? 1 : 0; @@ -777,8 +778,9 @@ pcmk__cmp_by_type(const char *value1, const char *value2, enum pcmk__type type) if ((pcmk__scan_double(value1, &num1, NULL, NULL) != pcmk_rc_ok) || (pcmk__scan_double(value2, &num2, NULL, NULL) != pcmk_rc_ok)) { - crm_warn("Comparing '%s' and '%s' as strings because invalid as " - "numbers", value1, value2); + pcmk__warn("Comparing '%s' and '%s' as strings because " + "invalid as numbers", + value1, value2); return strcasecmp(value1, value2); } return (num1 < num2)? -1 : (num1 > num2)? 1 : 0; diff --git a/lib/common/schemas.c b/lib/common/schemas.c index 87232d6df1d..8c43fdf0b7f 100644 --- a/lib/common/schemas.c +++ b/lib/common/schemas.c @@ -373,7 +373,8 @@ load_transforms_from_dir(const char *dir) if (num_matches < 0) { int rc = errno; - crm_warn("Could not load transforms from %s: %s", dir, pcmk_rc_str(rc)); + pcmk__warn("Could not load transforms from %s: %s", dir, + pcmk_rc_str(rc)); goto done; } @@ -428,7 +429,7 @@ pcmk__load_schemas_from_dir(const char *dir) if (max < 0) { int rc = errno; - crm_warn("Could not load schemas from %s: %s", dir, pcmk_rc_str(rc)); + pcmk__warn("Could not load schemas from %s: %s", dir, pcmk_rc_str(rc)); goto done; } @@ -460,8 +461,8 @@ pcmk__load_schemas_from_dir(const char *dir) } else { // Shouldn't be possible, but makes static analysis happy - crm_warn("Skipping schema '%s': could not parse version", - namelist[lpc]->d_name); + pcmk__warn("Skipping schema '%s': could not parse version", + namelist[lpc]->d_name); } } @@ -1445,7 +1446,7 @@ add_schema_file_to_xml(xmlNode *parent, const char *file, GList **already_includ rc = read_file_contents(path, &contents); if (rc != pcmk_rc_ok || contents == NULL) { - crm_warn("Could not read schema file %s: %s", file, pcmk_rc_str(rc)); + pcmk__warn("Could not read schema file %s: %s", file, pcmk_rc_str(rc)); free(path); return; } diff --git a/lib/common/strings.c b/lib/common/strings.c index e9e374a95ef..9e52b081d55 100644 --- a/lib/common/strings.c +++ b/lib/common/strings.c @@ -122,11 +122,12 @@ pcmk__scan_min_int(const char *text, int *result, int minimum) rc = pcmk__scan_ll(text, &result_ll, (long long) minimum); if (result_ll < (long long) minimum) { - crm_warn("Clipped '%s' to minimum acceptable value %d", text, minimum); + pcmk__warn("Clipped '%s' to minimum acceptable value %d", text, + minimum); result_ll = (long long) minimum; } else if (result_ll > INT_MAX) { - crm_warn("Clipped '%s' to maximum integer %d", text, INT_MAX); + pcmk__warn("Clipped '%s' to maximum integer %d", text, INT_MAX); result_ll = (long long) INT_MAX; rc = EOVERFLOW; } @@ -154,12 +155,13 @@ pcmk__scan_port(const char *text, int *port) int rc = pcmk__scan_ll(text, &port_ll, -1LL); if (rc != pcmk_rc_ok) { - crm_warn("'%s' is not a valid port: %s", text, pcmk_rc_str(rc)); + pcmk__warn("'%s' is not a valid port: %s", text, pcmk_rc_str(rc)); } else if ((text != NULL) // wasn't default or invalid && ((port_ll < 0LL) || (port_ll > 65535LL))) { - crm_warn("Ignoring port specification '%s' " - "not in valid range (0-65535)", text); + pcmk__warn("Ignoring port specification '%s' not in valid range " + "(0-65535)", + text); rc = (port_ll < 0LL)? pcmk_rc_before_range : pcmk_rc_after_range; port_ll = -1LL; } @@ -321,14 +323,16 @@ pcmk__guint_from_hash(GHashTable *table, const char *key, guint default_val, rc = pcmk__scan_ll(value, &value_ll, 0LL); if (rc != pcmk_rc_ok) { - crm_warn("Using default (%u) for %s because '%s' is not a " - "valid integer: %s", default_val, key, value, pcmk_rc_str(rc)); + pcmk__warn("Using default (%u) for %s because '%s' is not a valid " + "integer: %s", + default_val, key, value, pcmk_rc_str(rc)); return rc; } if ((value_ll < 0) || (value_ll > G_MAXUINT)) { - crm_warn("Using default (%u) for %s because '%s' is not in valid range", - default_val, key, value); + pcmk__warn("Using default (%u) for %s because '%s' is not in valid " + "range", + default_val, key, value); return ERANGE; } @@ -376,8 +380,8 @@ pcmk_parse_interval_spec(const char *input, guint *result_ms) } if (msec < 0) { - crm_warn("Using 0 instead of invalid interval specification '%s'", - input); + pcmk__warn("Using 0 instead of invalid interval specification '%s'", + input); msec = 0; if (rc == pcmk_rc_ok) { @@ -971,7 +975,7 @@ pcmk__parse_ms(const char *input, long long *result) } if (rc == ERANGE) { - crm_warn("'%s' will be clipped to %lld", input, local_result); + pcmk__warn("'%s' will be clipped to %lld", input, local_result); /* Continue through rest of body before returning ERANGE * @@ -980,8 +984,8 @@ pcmk__parse_ms(const char *input, long long *result) */ } else if (rc != pcmk_rc_ok) { - crm_warn("'%s' is not a valid time duration: %s", input, - pcmk_rc_str(rc)); + pcmk__warn("'%s' is not a valid time duration: %s", input, + pcmk_rc_str(rc)); return rc; } @@ -1402,11 +1406,11 @@ crm_get_msec(const char *input) rc = scan_ll(input, &msec, PCMK__PARSE_INT_DEFAULT, &units); if ((rc == ERANGE) && (msec > 0)) { - crm_warn("'%s' will be clipped to %lld", input, msec); + pcmk__warn("'%s' will be clipped to %lld", input, msec); } else if ((rc != pcmk_rc_ok) || (msec < 0)) { - crm_warn("'%s' is not a valid time duration: %s", - input, ((rc == pcmk_rc_ok)? "Negative" : pcmk_rc_str(rc))); + pcmk__warn("'%s' is not a valid time duration: %s", input, + ((rc == pcmk_rc_ok)? "Negative" : pcmk_rc_str(rc))); return PCMK__PARSE_INT_DEFAULT; } diff --git a/lib/common/watchdog.c b/lib/common/watchdog.c index c4b504e8af9..e2d6fb8b778 100644 --- a/lib/common/watchdog.c +++ b/lib/common/watchdog.c @@ -92,9 +92,10 @@ panic_local(void) reboot_cmd = RB_POWEROFF; #endif } else { - crm_warn("Using default '" PCMK_VALUE_REBOOT "' for local option PCMK_" - PCMK__ENV_PANIC_ACTION " because '%s' is not a valid value", - full_panic_action); + pcmk__warn("Using default '" PCMK_VALUE_REBOOT "' for local option " + "PCMK_" PCMK__ENV_PANIC_ACTION " because '%s' is not a " + "valid value", + full_panic_action); pcmk__sysrq_trigger('b'); } @@ -234,9 +235,9 @@ pcmk__get_sbd_sync_resource_startup(void) } else if (pcmk__parse_bool(sync_env, &sync_resource_startup) != pcmk_rc_ok) { - crm_warn("Defaulting to %sstart-up synchronization with sbd " - "because environment value '%s' is invalid", - (PCMK__SBD_SYNC_DEFAULT? "" : "no "), sync_env); + pcmk__warn("Defaulting to %sstart-up synchronization with sbd " + "because environment value '%s' is invalid", + (PCMK__SBD_SYNC_DEFAULT? "" : "no "), sync_env); } checked_sync_resource_startup = true; } diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index 2777f754823..4df3d7f77be 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -1694,9 +1694,9 @@ crm_element_value_ll(const xmlNode *data, const char *name, long long *dest) if (rc == pcmk_rc_ok) { return 0; } - crm_warn("Using default for %s " - "because '%s' is not a valid integer: %s", - name, value, pcmk_rc_str(rc)); + pcmk__warn("Using default for %s because '%s' is not a valid integer: " + "%s", + name, value, pcmk_rc_str(rc)); } return -1; } @@ -1759,14 +1759,14 @@ crm_element_value_ms(const xmlNode *data, const char *name, guint *dest) value = crm_element_value(data, name); rc = pcmk__scan_ll(value, &value_ll, 0LL); if (rc != pcmk_rc_ok) { - crm_warn("Using default for %s " - "because '%s' is not valid milliseconds: %s", - name, value, pcmk_rc_str(rc)); + pcmk__warn("Using default for %s because '%s' is not valid " + "milliseconds: %s", + name, value, pcmk_rc_str(rc)); return -1; } if ((value_ll < 0) || (value_ll > G_MAXUINT)) { - crm_warn("Using default for %s because '%s' is out of range", - name, value); + pcmk__warn("Using default for %s because '%s' is out of range", name, + value); return -1; } *dest = (guint) value_ll; @@ -1786,12 +1786,12 @@ crm_element_value_int(const xmlNode *data, const char *name, int *dest) *dest = PCMK__PARSE_INT_DEFAULT; if (rc != pcmk_rc_ok) { - crm_warn("Using default for %s " - "because '%s' is not a valid integer: %s", - name, value, pcmk_rc_str(rc)); + pcmk__warn("Using default for %s because '%s' is not a valid " + "integer: %s", + name, value, pcmk_rc_str(rc)); } else if ((value_ll < INT_MIN) || (value_ll > INT_MAX)) { - crm_warn("Using default for %s because '%s' is out of range", - name, value); + pcmk__warn("Using default for %s because '%s' is out of range", + name, value); } else { *dest = (int) value_ll; return 0; diff --git a/lib/common/xml_io.c b/lib/common/xml_io.c index dc3ac2c7bc6..0af639c9703 100644 --- a/lib/common/xml_io.c +++ b/lib/common/xml_io.c @@ -395,8 +395,8 @@ pcmk__xml_string(const xmlNode *data, uint32_t options, GString *buffer, dump_xml_cdata(data, options, buffer, depth); break; default: - crm_warn("Cannot convert XML %s node to text " QB_XS " type=%d", - pcmk__xml_element_type_text(data->type), data->type); + pcmk__warn("Cannot convert XML %s node to text " QB_XS " type=%d", + pcmk__xml_element_type_text(data->type), data->type); break; } } @@ -424,18 +424,18 @@ write_compressed_stream(char *text, const char *filename, FILE *stream, rc = pcmk__bzlib2rc(rc); if (rc != pcmk_rc_ok) { - crm_warn("Not compressing %s: could not prepare file stream: %s " - QB_XS " rc=%d", - filename, pcmk_rc_str(rc), rc); + pcmk__warn("Not compressing %s: could not prepare file stream: %s " + QB_XS " rc=%d", + filename, pcmk_rc_str(rc), rc); goto done; } BZ2_bzWrite(&rc, bz_file, text, strlen(text)); rc = pcmk__bzlib2rc(rc); if (rc != pcmk_rc_ok) { - crm_warn("Not compressing %s: could not compress data: %s " - QB_XS " rc=%d errno=%d", - filename, pcmk_rc_str(rc), rc, errno); + pcmk__warn("Not compressing %s: could not compress data: %s " + QB_XS " rc=%d errno=%d", + filename, pcmk_rc_str(rc), rc, errno); goto done; } @@ -443,9 +443,9 @@ write_compressed_stream(char *text, const char *filename, FILE *stream, bz_file = NULL; rc = pcmk__bzlib2rc(rc); if (rc != pcmk_rc_ok) { - crm_warn("Not compressing %s: could not write compressed data: %s " - QB_XS " rc=%d errno=%d", - filename, pcmk_rc_str(rc), rc, errno); + pcmk__warn("Not compressing %s: could not write compressed data: %s " + QB_XS " rc=%d errno=%d", + filename, pcmk_rc_str(rc), rc, errno); goto done; } diff --git a/lib/common/xpath.c b/lib/common/xpath.c index 2e3c4f6466e..f2c7a0a9307 100644 --- a/lib/common/xpath.c +++ b/lib/common/xpath.c @@ -436,7 +436,7 @@ getXpathResult(xmlXPathObjectPtr xpathObj, int index) && (match->parent->type == XML_ELEMENT_NODE)) { return match->parent; } - crm_warn("Unsupported XPath match type %d (bug?)", match->type); + pcmk__warn("Unsupported XPath match type %d (bug?)", match->type); return NULL; } } diff --git a/lib/fencing/st_client.c b/lib/fencing/st_client.c index ec5937315d7..c3994a36ff3 100644 --- a/lib/fencing/st_client.c +++ b/lib/fencing/st_client.c @@ -201,8 +201,8 @@ stonith__watchdog_fencing_enabled_for_node_api(stonith_t *st, const char *node) if (rc == -ENODEV) { crm_notice("Cluster does not have watchdog fencing device"); } else { - crm_warn("Could not check for watchdog fencing device: %s", - pcmk_strerror(rc)); + pcmk__warn("Could not check for watchdog fencing device: %s", + pcmk_strerror(rc)); } } else if (list[0] == '\0') { rv = TRUE; @@ -972,11 +972,12 @@ invoke_registered_callbacks(stonith_t *stonith, const xmlNode *msg, int call_id) cb_info->user_data, cb_info->callback); } else if ((private->op_callback == NULL) && !pcmk__result_ok(&result)) { - crm_warn("Fencing action without registered callback failed: %d (%s%s%s)", - result.exit_status, - pcmk_exec_status_str(result.execution_status), - ((result.exit_reason == NULL)? "" : ": "), - ((result.exit_reason == NULL)? "" : result.exit_reason)); + pcmk__warn("Fencing action without registered callback failed: %d " + "(%s%s%s)", + result.exit_status, + pcmk_exec_status_str(result.execution_status), + ((result.exit_reason != NULL)? ": " : ""), + pcmk__s(result.exit_reason, "")); crm_log_xml_debug(msg, "Failed fence update"); } @@ -1066,7 +1067,7 @@ stonith_dispatch_internal(const char *buffer, ssize_t length, gpointer userdata) blob.stonith = st; blob.xml = pcmk__xml_parse(buffer); if (blob.xml == NULL) { - crm_warn("Received malformed message from fencer: %s", buffer); + pcmk__warn("Received malformed message from fencer: %s", buffer); return 0; } @@ -1246,7 +1247,7 @@ stonith_api_add_notification(stonith_t * stonith, const char *event, list_item = g_list_find_custom(private->notify_list, new_client, stonithlib_GCompareFunc); if (list_item != NULL) { - crm_warn("Callback already present"); + pcmk__warn("Callback already present"); free(new_client); return -ENOTUNIQ; @@ -1341,7 +1342,7 @@ stonith_api_add_callback(stonith_t * stonith, int call_id, int timeout, int opti invoke_fence_action_callback(stonith, call_id, &result, user_data, callback); } else { - crm_warn("Fencer call failed: %s", pcmk_strerror(call_id)); + pcmk__warn("Fencer call failed: %s", pcmk_strerror(call_id)); } return FALSE; } @@ -1502,14 +1503,14 @@ stonith_send_notification(gpointer data, gpointer user_data) const char *event = NULL; if (blob->xml == NULL) { - crm_warn("Skipping callback - NULL message"); + pcmk__warn("Skipping callback - NULL message"); return; } event = pcmk__xe_get(blob->xml, PCMK__XA_SUBT); if (entry == NULL) { - crm_warn("Skipping callback - NULL callback client"); + pcmk__warn("Skipping callback - NULL callback client"); return; } else if (entry->delete) { @@ -1517,7 +1518,7 @@ stonith_send_notification(gpointer data, gpointer user_data) return; } else if (entry->notify == NULL) { - crm_warn("Skipping callback - NULL callback"); + pcmk__warn("Skipping callback - NULL callback"); return; } else if (!pcmk__str_eq(entry->event, event, pcmk__str_none)) { @@ -1770,8 +1771,9 @@ stonith__validate(stonith_t *st, int call_options, const char *rsc_id, #if PCMK__ENABLE_CIBSECRETS rc = pcmk__substitute_secrets(rsc_id, params); if (rc != pcmk_rc_ok) { - crm_warn("Could not replace secret parameters for validation of %s: %s", - agent, pcmk_rc_str(rc)); + pcmk__warn("Could not replace secret parameters for validation of %s: " + "%s", + agent, pcmk_rc_str(rc)); // rc is standard return value, don't return it in this function } #endif @@ -2206,9 +2208,9 @@ parse_list_line(const char *line, int len, GList **output) */ rc = sscanf(line + entry_start, "%[a-zA-Z0-9_-.]", entry); if (rc != 1) { - crm_warn("Could not parse list output entry: %s " - QB_XS " entry_start=%d position=%d", - line + entry_start, entry_start, i); + pcmk__warn("Could not parse list output entry: %s " + QB_XS " entry_start=%d position=%d", + (line + entry_start), entry_start, i); free(entry); } else if (pcmk__strcase_any_of(entry, PCMK_ACTION_ON, diff --git a/lib/fencing/st_lha.c b/lib/fencing/st_lha.c index 2f0b08ddd55..d5ff496a0d7 100644 --- a/lib/fencing/st_lha.c +++ b/lib/fencing/st_lha.c @@ -221,21 +221,21 @@ stonith__lha_metadata(const char *agent, int timeout, char **output) meta_longdesc = pcmk__str_copy(st_info_fn(stonith_obj, ST_DEVICEDESCR)); if (meta_longdesc == NULL) { - crm_warn("no long description in %s's metadata.", agent); + pcmk__warn("No long description in %s's metadata", agent); meta_longdesc = pcmk__str_copy(no_parameter_info); } meta_shortdesc = pcmk__str_copy(st_info_fn(stonith_obj, ST_DEVICEID)); if (meta_shortdesc == NULL) { - crm_warn("no short description in %s's metadata.", agent); + pcmk__warn("No short description in %s's metadata", agent); meta_shortdesc = pcmk__str_copy(no_parameter_info); } meta_param = pcmk__str_copy(st_info_fn(stonith_obj, ST_CONF_XML)); if (meta_param == NULL) { - crm_warn("no list of parameters in %s's metadata.", agent); + pcmk__warn("No list of parameters in %s's metadata", agent); meta_param = pcmk__str_copy(no_parameter_info); } diff --git a/lib/fencing/st_rhcs.c b/lib/fencing/st_rhcs.c index c3f1584d50c..dd6c07d1755 100644 --- a/lib/fencing/st_rhcs.c +++ b/lib/fencing/st_rhcs.c @@ -137,31 +137,32 @@ stonith__rhcs_get_metadata(const char *agent, int timeout_sec, if (result == NULL) { if (rc < 0) { - crm_warn("Could not execute metadata action for %s: %s " - QB_XS " rc=%d", agent, pcmk_strerror(rc), rc); + pcmk__warn("Could not execute metadata action for %s: %s " + QB_XS " rc=%d", + agent, pcmk_strerror(rc), rc); } stonith__destroy_action(action); return rc; } if (result->execution_status != PCMK_EXEC_DONE) { - crm_warn("Could not execute metadata action for %s: %s", - agent, pcmk_exec_status_str(result->execution_status)); + pcmk__warn("Could not execute metadata action for %s: %s", agent, + pcmk_exec_status_str(result->execution_status)); rc = pcmk_rc2legacy(stonith__result2rc(result)); stonith__destroy_action(action); return rc; } if (!pcmk__result_ok(result)) { - crm_warn("Metadata action for %s returned error code %d", - agent, result->exit_status); + pcmk__warn("Metadata action for %s returned error code %d", agent, + result->exit_status); rc = pcmk_rc2legacy(stonith__result2rc(result)); stonith__destroy_action(action); return rc; } if (result->action_stdout == NULL) { - crm_warn("Metadata action for %s returned no data", agent); + pcmk__warn("Metadata action for %s returned no data", agent); stonith__destroy_action(action); return -ENODATA; } @@ -170,7 +171,7 @@ stonith__rhcs_get_metadata(const char *agent, int timeout_sec, stonith__destroy_action(action); if (xml == NULL) { - crm_warn("Metadata for %s is invalid", agent); + pcmk__warn("Metadata for %s is invalid", agent); return -pcmk_err_schema_validation; } diff --git a/lib/lrmd/lrmd_client.c b/lib/lrmd/lrmd_client.c index 73ef2cde9d1..3af8febd84c 100644 --- a/lib/lrmd/lrmd_client.c +++ b/lib/lrmd/lrmd_client.c @@ -1192,8 +1192,8 @@ read_gnutls_key(const char *location, gnutls_datum_t *key) if (next == EOF) { if (!feof(stream)) { - crm_warn("Pacemaker Remote key read was partially successful " - "(copy in memory may be corrupted)"); + pcmk__warn("Pacemaker Remote key read was partially successful " + "(copy in memory may be corrupted)"); } break; } @@ -1334,8 +1334,8 @@ lrmd__init_remote_key(gnutls_datum_t *key) return pcmk_rc_ok; } - crm_warn("Could not read Pacemaker Remote key from %s: %s", - env_location, pcmk_rc_str(rc)); + pcmk__warn("Could not read Pacemaker Remote key from %s: %s", + env_location, pcmk_rc_str(rc)); return ENOKEY; } @@ -1345,8 +1345,9 @@ lrmd__init_remote_key(gnutls_datum_t *key) return pcmk_rc_ok; } - crm_warn("Could not read Pacemaker Remote key from default location %s: %s", - DEFAULT_REMOTE_KEY_LOCATION, pcmk_rc_str(rc)); + pcmk__warn("Could not read Pacemaker Remote key from default location " + DEFAULT_REMOTE_KEY_LOCATION ": %s", + pcmk_rc_str(rc)); return ENOKEY; } @@ -1369,10 +1370,10 @@ tls_handshake_failed(lrmd_t *lrmd, int tls_rc, int rc) { lrmd_private_t *native = lrmd->lrmd_private; - crm_warn("Disconnecting after TLS handshake with " - "Pacemaker Remote server %s:%d failed: %s", - native->server, native->port, - (rc == EPROTO)? gnutls_strerror(tls_rc) : pcmk_rc_str(rc)); + pcmk__warn("Disconnecting after TLS handshake with Pacemaker Remote server " + "%s:%d failed: %s", + native->server, native->port, + ((rc == EPROTO)? gnutls_strerror(tls_rc) : pcmk_rc_str(rc))); report_async_connection_result(lrmd, pcmk_rc2legacy(rc)); gnutls_deinit(native->remote->tls_session); @@ -1607,9 +1608,9 @@ lrmd_tls_connect_async(lrmd_t * lrmd, int timeout /*ms */ ) rc = pcmk__connect_remote(native->server, native->port, timeout, &timer_id, &(native->sock), lrmd, lrmd_tcp_connect_cb); if (rc != pcmk_rc_ok) { - crm_warn("Pacemaker Remote connection to %s:%d failed: %s " - QB_XS " rc=%d", - native->server, native->port, pcmk_rc_str(rc), rc); + pcmk__warn("Pacemaker Remote connection to %s:%d failed: %s " + QB_XS " rc=%d", + native->server, native->port, pcmk_rc_str(rc), rc); return rc; } native->async_timer = timer_id; @@ -1627,9 +1628,9 @@ lrmd_tls_connect(lrmd_t * lrmd, int *fd) rc = pcmk__connect_remote(native->server, native->port, 0, NULL, &(native->sock), NULL, NULL); if (rc != pcmk_rc_ok) { - crm_warn("Pacemaker Remote connection to %s:%d failed: %s " - QB_XS " rc=%d", - native->server, native->port, pcmk_rc_str(rc), rc); + pcmk__warn("Pacemaker Remote connection to %s:%d failed: %s " + QB_XS " rc=%d", + native->server, native->port, pcmk_rc_str(rc), rc); lrmd_tls_connection_destroy(lrmd); return ENOTCONN; } diff --git a/lib/lrmd/proxy_common.c b/lib/lrmd/proxy_common.c index d55b1031216..960f9f76fd2 100644 --- a/lib/lrmd/proxy_common.c +++ b/lib/lrmd/proxy_common.c @@ -136,7 +136,7 @@ remote_proxy_dispatch(const char *buffer, ssize_t length, gpointer userdata) xml = pcmk__xml_parse(buffer); if (xml == NULL) { - crm_warn("Received a NULL msg from IPC service."); + pcmk__warn("Received a NULL msg from IPC service."); return 1; } @@ -264,8 +264,9 @@ remote_proxy_cb(lrmd_t *lrmd, const char *node_name, xmlNode *msg) rc = pcmk__xe_get_flags(msg, PCMK__XA_LRMD_IPC_MSG_FLAGS, &flags, 0U); if (rc != pcmk_rc_ok) { - crm_warn("Couldn't parse controller flags from remote request: %s", - pcmk_rc_str(rc)); + pcmk__warn("Couldn't parse controller flags from remote request: " + "%s", + pcmk_rc_str(rc)); } pcmk__assert(node_name != NULL); diff --git a/lib/pacemaker/pcmk_graph_consumer.c b/lib/pacemaker/pcmk_graph_consumer.c index 9994fa63b88..538ed76007a 100644 --- a/lib/pacemaker/pcmk_graph_consumer.c +++ b/lib/pacemaker/pcmk_graph_consumer.c @@ -37,7 +37,7 @@ free_graph_action(gpointer user_data) pcmk__graph_action_t *action = user_data; if (action->timer != 0) { - crm_warn("Cancelling timer for graph action %d", action->id); + pcmk__warn("Cancelling timer for graph action %d", action->id); g_source_remove(action->timer); } if (action->params != NULL) { diff --git a/lib/pacemaker/pcmk_graph_producer.c b/lib/pacemaker/pcmk_graph_producer.c index 92e377b5c13..f1bc247f8ed 100644 --- a/lib/pacemaker/pcmk_graph_producer.c +++ b/lib/pacemaker/pcmk_graph_producer.c @@ -733,9 +733,9 @@ should_add_input_to_graph(const pcmk_action_t *action, && !pcmk__is_set(input->action->rsc->flags, pcmk__rsc_managed) && pcmk__ends_with(input->action->uuid, "_stop_0") && pcmk__is_clone(action->rsc)) { - crm_warn("Ignoring requirement that %s complete before %s:" - " unmanaged failed resources cannot prevent clone shutdown", - input->action->uuid, action->uuid); + pcmk__warn("Ignoring requirement that %s complete before %s: unmanaged " + "failed resources cannot prevent clone shutdown", + input->action->uuid, action->uuid); return false; } else if (pcmk__is_set(input->action->flags, pcmk__action_optional) @@ -953,10 +953,10 @@ pcmk__log_transition_summary(const pcmk_scheduler_t *scheduler, } else if (pcmk__is_set(scheduler->flags, pcmk__sched_processing_warning) || pcmk__config_has_warning) { - crm_warn("Calculated transition %d (with warnings)%s%s", - transition_id, - (filename == NULL)? "" : ", saving inputs in ", - (filename == NULL)? "" : filename); + pcmk__warn("Calculated transition %d (with warnings)%s%s", + transition_id, + ((filename != NULL)? ", saving inputs in " : ""), + pcmk__s(filename, "")); } else { crm_notice("Calculated transition %d%s%s", @@ -1041,8 +1041,9 @@ pcmk__create_graph(pcmk_scheduler_t *scheduler) value = pcmk__cluster_option(config_hash, PCMK_OPT_MIGRATION_LIMIT); rc = pcmk__scan_ll(value, &limit, 0LL); if (rc != pcmk_rc_ok) { - crm_warn("Ignoring invalid value '%s' for " PCMK_OPT_MIGRATION_LIMIT - ": %s", value, pcmk_rc_str(rc)); + pcmk__warn("Ignoring invalid value '%s' for " PCMK_OPT_MIGRATION_LIMIT + ": %s", + value, pcmk_rc_str(rc)); } else if (limit > 0) { pcmk__xe_set(scheduler->priv->graph, PCMK_OPT_MIGRATION_LIMIT, value); } diff --git a/lib/pacemaker/pcmk_sched_actions.c b/lib/pacemaker/pcmk_sched_actions.c index 7c219a25403..d73aef5f655 100644 --- a/lib/pacemaker/pcmk_sched_actions.c +++ b/lib/pacemaker/pcmk_sched_actions.c @@ -195,8 +195,9 @@ action_for_ordering(pcmk_action_t *action) result = find_first_action(rsc->priv->actions, uuid, NULL, NULL); if (result == NULL) { - crm_warn("Not remapping %s to %s because %s does not have " - "remapped action", action->uuid, uuid, rsc->id); + pcmk__warn("Not remapping %s to %s because %s does not have " + "remapped action", + action->uuid, uuid, rsc->id); result = action; } free(uuid); diff --git a/lib/pacemaker/pcmk_sched_instances.c b/lib/pacemaker/pcmk_sched_instances.c index e9873ca5049..5dd46dc15f2 100644 --- a/lib/pacemaker/pcmk_sched_instances.c +++ b/lib/pacemaker/pcmk_sched_instances.c @@ -48,8 +48,8 @@ can_run_instance(const pcmk_resource_t *instance, const pcmk_node_t *node, allowed_node = pcmk__top_allowed_node(instance, node); if (allowed_node == NULL) { - crm_warn("%s cannot run on %s: node not allowed", - instance->id, pcmk__node_name(node)); + pcmk__warn("%s cannot run on %s: node not allowed", instance->id, + pcmk__node_name(node)); return false; } diff --git a/lib/pacemaker/pcmk_sched_location.c b/lib/pacemaker/pcmk_sched_location.c index bf6b4d33abb..24bcd1bb078 100644 --- a/lib/pacemaker/pcmk_sched_location.c +++ b/lib/pacemaker/pcmk_sched_location.c @@ -165,10 +165,10 @@ score_from_attr(const char *constraint_id, const char *attr_name, rc = pcmk_parse_score(score_s, score, 0); if (rc != pcmk_rc_ok) { - crm_warn("Ignoring location %s for node %s because node " - "attribute %s value '%s' is not a valid score: %s", - constraint_id, pcmk__node_name(node), attr_name, - score_s, pcmk_rc_str(rc)); + pcmk__warn("Ignoring location %s for node %s because node attribute " + "%s value '%s' is not a valid score: %s", + constraint_id, pcmk__node_name(node), attr_name, + score_s, pcmk_rc_str(rc)); return rc; } return pcmk_rc_ok; diff --git a/lib/pacemaker/pcmk_sched_ordering.c b/lib/pacemaker/pcmk_sched_ordering.c index 8899d9dd87a..84002ecbdbd 100644 --- a/lib/pacemaker/pcmk_sched_ordering.c +++ b/lib/pacemaker/pcmk_sched_ordering.c @@ -1272,9 +1272,10 @@ order_resource_actions_after(pcmk_action_t *first_action, order_actions(first_action, then_action_iter, flags); } else { pcmk__clear_action_flags(then_action_iter, pcmk__action_runnable); - crm_warn("%s of %s is unrunnable because there is no %s of %s " - "to order it after", then_action_iter->task, rsc->id, - order->task1, order->rsc1->id); + pcmk__warn("%s of %s is unrunnable because there is no %s of %s to " + "order it after", + then_action_iter->task, rsc->id, order->task1, + order->rsc1->id); } } diff --git a/lib/pacemaker/pcmk_sched_primitive.c b/lib/pacemaker/pcmk_sched_primitive.c index 67e658f8248..f8bdcb2179f 100644 --- a/lib/pacemaker/pcmk_sched_primitive.c +++ b/lib/pacemaker/pcmk_sched_primitive.c @@ -1622,9 +1622,9 @@ shutdown_time(pcmk_node_t *node) if (rc == pcmk_rc_ok) { result = (time_t) result_ll; } else { - crm_warn("Ignoring invalid value '%s' for %s " - PCMK__NODE_ATTR_SHUTDOWN " attribute: %s", - shutdown, pcmk__node_name(node), pcmk_rc_str(rc)); + pcmk__warn("Ignoring invalid value '%s' for %s " + PCMK__NODE_ATTR_SHUTDOWN " attribute: %s", + shutdown, pcmk__node_name(node), pcmk_rc_str(rc)); } } if (result == 0) { diff --git a/lib/pacemaker/pcmk_sched_promotable.c b/lib/pacemaker/pcmk_sched_promotable.c index 6da093bb5c0..00314befec9 100644 --- a/lib/pacemaker/pcmk_sched_promotable.c +++ b/lib/pacemaker/pcmk_sched_promotable.c @@ -772,9 +772,9 @@ promotion_score(const pcmk_resource_t *rsc, const pcmk_node_t *node, rc = pcmk_parse_score(attr_value, &score, 0); if (rc != pcmk_rc_ok) { - crm_warn("Using 0 as promotion score for %s on %s " - "because '%s' is not a valid score", - rsc->id, pcmk__node_name(node), attr_value); + pcmk__warn("Using 0 as promotion score for %s on %s because '%s' is " + "not a valid score", + rsc->id, pcmk__node_name(node), attr_value); } return score; } diff --git a/lib/pengine/failcounts.c b/lib/pengine/failcounts.c index 40cfa929ce8..1c0bad6b723 100644 --- a/lib/pengine/failcounts.c +++ b/lib/pengine/failcounts.c @@ -298,10 +298,10 @@ update_failcount_for_attr(gpointer key, gpointer value, gpointer user_data) int rc = pcmk_parse_score(value, &score, 0); if (rc != pcmk_rc_ok) { - crm_warn("Ignoring %s for %s " - "because '%s' is not a valid fail count: %s", - (const char *) key, pcmk__node_name(fc_data->node), - value, pcmk_rc_str(rc)); + pcmk__warn("Ignoring %s for %s because '%s' is not a valid fail " + "count: %s", + (const char *) key, pcmk__node_name(fc_data->node), + value, pcmk_rc_str(rc)); return; } fc_data->failcount = pcmk__add_scores(fc_data->failcount, score); diff --git a/lib/pengine/pe_health.c b/lib/pengine/pe_health.c index f94c2321999..65d1e8cdc72 100644 --- a/lib/pengine/pe_health.c +++ b/lib/pengine/pe_health.c @@ -86,9 +86,10 @@ add_node_health_value(gpointer key, gpointer value, gpointer user_data) int rc = pcmk_parse_score((const char *) value, &score, 0); if (rc != pcmk_rc_ok) { - crm_warn("Ignoring %s for %s because '%s' is not a valid value: %s", - (const char *) key, pcmk__node_name(health_sum->node), - (const char *) value, pcmk_rc_str(rc)); + pcmk__warn("Ignoring %s for %s because '%s' is not a valid value: " + "%s", + (const char *) key, pcmk__node_name(health_sum->node), + (const char *) value, pcmk_rc_str(rc)); return; } @@ -164,10 +165,10 @@ pe__node_health(pcmk_node_t *node) parse_rc = pcmk_parse_score(value, &score, 0); if (parse_rc != pcmk_rc_ok) { - crm_warn("Ignoring %s for %s " - "because '%s' is not a valid value: %s", - name, pcmk__node_name(node), value, - pcmk_rc_str(parse_rc)); + pcmk__warn("Ignoring %s for %s because '%s' is not a valid " + "value: %s", + name, pcmk__node_name(node), value, + pcmk_rc_str(parse_rc)); continue; } diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c index 2d4c94c3c42..d8a0fb45d3a 100644 --- a/lib/pengine/unpack.c +++ b/lib/pengine/unpack.c @@ -1024,10 +1024,10 @@ unpack_ticket_state(xmlNode *xml_ticket, void *userdata) int rc = pcmk__scan_ll(last_granted, &last_granted_ll, 0LL); if (rc != pcmk_rc_ok) { - crm_warn("Using %lld instead of invalid " PCMK_XA_LAST_GRANTED - " value '%s' in state for ticket %s: %s", - last_granted_ll, last_granted, ticket->id, - pcmk_rc_str(rc)); + pcmk__warn("Using %lld instead of invalid " PCMK_XA_LAST_GRANTED + " value '%s' in state for ticket %s: %s", + last_granted_ll, last_granted, ticket->id, + pcmk_rc_str(rc)); } ticket->last_granted = (time_t) last_granted_ll; } @@ -1486,8 +1486,9 @@ unpack_node_member(const xmlNode *node_state, pcmk_scheduler_t *scheduler) if ((pcmk__scan_ll(member_time, &when_member, 0LL) != pcmk_rc_ok) || (when_member < 0LL)) { - crm_warn("Unrecognized value '%s' for " PCMK__XA_IN_CCM - " in " PCMK__XE_NODE_STATE " entry", member_time); + pcmk__warn("Unrecognized value '%s' for " PCMK__XA_IN_CCM " in " + PCMK__XE_NODE_STATE " entry", + member_time); return -1LL; } return when_member; @@ -1532,8 +1533,9 @@ unpack_node_online(const xmlNode *node_state) if ((pcmk__scan_ll(peer_time, &when_online, 0LL) != pcmk_rc_ok) || (when_online < 0)) { - crm_warn("Unrecognized value '%s' for " PCMK_XA_CRMD " in " - PCMK__XE_NODE_STATE " entry, assuming offline", peer_time); + pcmk__warn("Unrecognized value '%s' for " PCMK_XA_CRMD " in " + PCMK__XE_NODE_STATE " entry, assuming offline", + peer_time); return 0LL; } return when_online; @@ -1568,9 +1570,9 @@ unpack_node_terminate(const pcmk_node_t *node, const xmlNode *node_state) if (rc == pcmk_rc_ok) { return (value_ll > 0); } - crm_warn("Ignoring unrecognized value '%s' for " PCMK_NODE_ATTR_TERMINATE - "node attribute for %s: %s", - value_s, pcmk__node_name(node), pcmk_rc_str(rc)); + pcmk__warn("Ignoring unrecognized value '%s' for " PCMK_NODE_ATTR_TERMINATE + "node attribute for %s: %s", + value_s, pcmk__node_name(node), pcmk_rc_str(rc)); return false; } @@ -4787,12 +4789,12 @@ unpack_rsc_op(pcmk_resource_t *rsc, pcmk_node_t *node, xmlNode *xml_op, case PCMK_EXEC_NOT_INSTALLED: unpack_failure_handling(&history, &failure_strategy, &fail_role); if (failure_strategy == pcmk__on_fail_ignore) { - crm_warn("Cannot ignore failed %s of %s on %s: " - "Resource agent doesn't exist " - QB_XS " status=%d rc=%d id=%s", - history.task, rsc->id, pcmk__node_name(node), - history.execution_status, history.exit_status, - history.id); + pcmk__warn("Cannot ignore failed %s of %s on %s: Resource " + "agent doesn't exist " + QB_XS " status=%d rc=%d id=%s", + history.task, rsc->id, pcmk__node_name(node), + history.execution_status, history.exit_status, + history.id); /* Also for printing it as "FAILED" by marking it as * pcmk__rsc_failed later */ @@ -4838,12 +4840,12 @@ unpack_rsc_op(pcmk_resource_t *rsc, pcmk_node_t *node, xmlNode *xml_op, char *last_change_s = last_change_str(xml_op); - crm_warn("Pretending failed %s (%s%s%s) of %s on %s at %s succeeded " - QB_XS " %s", - history.task, crm_exit_str(history.exit_status), - (pcmk__str_empty(history.exit_reason)? "" : ": "), - pcmk__s(history.exit_reason, ""), rsc->id, - pcmk__node_name(node), last_change_s, history.id); + pcmk__warn("Pretending failed %s (%s%s%s) of %s on %s at %s succeeded " + QB_XS " %s", + history.task, crm_exit_str(history.exit_status), + (pcmk__str_empty(history.exit_reason)? "" : ": "), + pcmk__s(history.exit_reason, ""), rsc->id, + pcmk__node_name(node), last_change_s, history.id); free(last_change_s); update_resource_state(&history, history.expected_exit_status, diff --git a/lib/services/services.c b/lib/services/services.c index 4062d957d84..11198327461 100644 --- a/lib/services/services.c +++ b/lib/services/services.c @@ -510,8 +510,8 @@ services_action_cleanup(svc_action_t * op) if(op->opaque->pending) { if (dbus_pending_call_get_completed(op->opaque->pending)) { // This should never be the case - crm_warn("Result of %s op %s was unhandled", - op->standard, op->id); + pcmk__warn("Result of %s op %s was unhandled", op->standard, + op->id); } else { crm_debug("Will ignore any result of canceled %s op %s", op->standard, op->id); @@ -561,8 +561,8 @@ services_result2ocf(const char *standard, const char *action, int exit_status) #endif } else { - crm_warn("Treating result from unknown standard '%s' as OCF", - ((standard == NULL)? "unspecified" : standard)); + pcmk__warn("Treating result from unknown standard '%s' as OCF", + pcmk__s(standard, "unspecified")); return services__ocf2ocf(exit_status); } } diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c index acf25308368..7cc32cf711f 100644 --- a/lib/services/services_linux.c +++ b/lib/services/services_linux.c @@ -135,14 +135,14 @@ sigchld_cleanup(struct sigchld_data_s *data) // Restore the original set of blocked signals if ((sigismember(&(data->old_mask), SIGCHLD) == 0) && (sigprocmask(SIG_UNBLOCK, &(data->mask), NULL) < 0)) { - crm_warn("Could not clean up after child process completion: %s", - pcmk_rc_str(errno)); + pcmk__warn("Could not clean up after child process completion: %s", + pcmk_rc_str(errno)); } // Resend any ignored SIGCHLD for other children so that they'll be handled. if (data->ignored && kill(getpid(), SIGCHLD) != 0) { - crm_warn("Could not resend ignored SIGCHLD to ourselves: %s", - pcmk_rc_str(errno)); + pcmk__warn("Could not resend ignored SIGCHLD to ourselves: %s", + pcmk_rc_str(errno)); } } @@ -245,16 +245,16 @@ sigchld_cleanup(struct sigchld_data_s *data) { // Restore the previous SIGCHLD handler if (sigaction(SIGCHLD, &(data->old_sa), NULL) < 0) { - crm_warn("Could not clean up after child process completion: %s", - pcmk_rc_str(errno)); + pcmk__warn("Could not clean up after child process completion: %s", + pcmk_rc_str(errno)); } close_pipe(data->pipe_fd); // Resend any ignored SIGCHLD for other children so that they'll be handled. if (data->ignored && kill(getpid(), SIGCHLD) != 0) { - crm_warn("Could not resend ignored SIGCHLD to ourselves: %s", - pcmk_rc_str(errno)); + pcmk__warn("Could not resend ignored SIGCHLD to ourselves: %s", + pcmk_rc_str(errno)); } } @@ -335,8 +335,8 @@ svc_read_output(int fd, svc_action_t * op, bool is_stderr) } while ((rc == buf_read_len) || (rc < 0)); if (discarded > 0) { - crm_warn("Truncated %s %s to %zu bytes (discarded %zu)", - op->id, out_type(is_stderr), len, discarded); + pcmk__warn("Truncated %s %s to %zu bytes (discarded %zu)", op->id, + out_type(is_stderr), len, discarded); } if (is_stderr) { @@ -1156,8 +1156,8 @@ wait_for_sync_result(svc_action_t *op, struct sigchld_data_s *data) This is to limit killing wrong target a bit more. */ if ((wait_rc == 0) && (waitpid(op->pid, &status, WNOHANG) == 0)) { if (kill(op->pid, SIGKILL)) { - crm_warn("Could not kill rogue child %s[%d]: %s", - op->id, op->pid, pcmk_rc_str(errno)); + pcmk__warn("Could not kill rogue child %s[%d]: %s", op->id, + op->pid, pcmk_rc_str(errno)); } /* Safe to skip WNOHANG here as we sent non-ignorable signal. */ while ((waitpid(op->pid, &status, 0) == (pid_t) -1) @@ -1182,7 +1182,7 @@ wait_for_sync_result(svc_action_t *op, struct sigchld_data_s *data) #ifdef WCOREDUMP if (WCOREDUMP(status)) { - crm_warn("%s[%d] dumped core", op->id, op->pid); + pcmk__warn("%s[%d] dumped core", op->id, op->pid); } #endif @@ -1296,26 +1296,26 @@ services__execute_file(svc_action_t *op) } if (STDOUT_FILENO != stdout_fd[1]) { if (dup2(stdout_fd[1], STDOUT_FILENO) != STDOUT_FILENO) { - crm_warn("Can't redirect output from '%s': %s " - QB_XS " errno=%d", - op->opaque->exec, pcmk_rc_str(errno), errno); + pcmk__warn("Can't redirect output from '%s': %s " + QB_XS " errno=%d", + op->opaque->exec, pcmk_rc_str(errno), errno); } close(stdout_fd[1]); } if (STDERR_FILENO != stderr_fd[1]) { if (dup2(stderr_fd[1], STDERR_FILENO) != STDERR_FILENO) { - crm_warn("Can't redirect error output from '%s': %s " - QB_XS " errno=%d", - op->opaque->exec, pcmk_rc_str(errno), errno); + pcmk__warn("Can't redirect error output from '%s': %s " + QB_XS " errno=%d", + op->opaque->exec, pcmk_rc_str(errno), errno); } close(stderr_fd[1]); } if ((stdin_fd[0] >= 0) && (STDIN_FILENO != stdin_fd[0])) { if (dup2(stdin_fd[0], STDIN_FILENO) != STDIN_FILENO) { - crm_warn("Can't redirect input to '%s': %s " - QB_XS " errno=%d", - op->opaque->exec, pcmk_rc_str(errno), errno); + pcmk__warn("Can't redirect input to '%s': %s " + QB_XS " errno=%d", + op->opaque->exec, pcmk_rc_str(errno), errno); } close(stdin_fd[0]); } diff --git a/lib/services/systemd.c b/lib/services/systemd.c index 8d7105c93f9..fb3cd422eb5 100644 --- a/lib/services/systemd.c +++ b/lib/services/systemd.c @@ -195,7 +195,7 @@ systemd_init(void) if (systemd_proxy && dbus_connection_get_is_connected(systemd_proxy) == FALSE) { - crm_warn("Connection to System DBus is closed. Reconnecting..."); + pcmk__warn("Connection to System DBus is closed. Reconnecting..."); pcmk_dbus_disconnect(systemd_proxy); systemd_proxy = NULL; need_init = 1; @@ -312,8 +312,8 @@ systemd_daemon_reload_complete(DBusPendingCall *pending, void *user_data) } if (pcmk_dbus_find_error(pending, reply, &error)) { - crm_warn("Could not issue systemd reload %d: %s", - reload_count, error.message); + pcmk__warn("Could not issue systemd reload %d: %s", reload_count, + error.message); dbus_error_free(&error); } else { @@ -640,13 +640,13 @@ systemd_unit_listall(void) char *basename = NULL; if(!pcmk_dbus_type_check(reply, &unit, DBUS_TYPE_STRUCT, __func__, __LINE__)) { - crm_warn("Skipping systemd reply argument with unexpected type"); + pcmk__warn("Skipping systemd reply argument with unexpected type"); continue; } dbus_message_iter_recurse(&unit, &elem); if(!pcmk_dbus_type_check(reply, &elem, DBUS_TYPE_STRING, __func__, __LINE__)) { - crm_warn("Skipping systemd reply argument with no string"); + pcmk__warn("Skipping systemd reply argument with no string"); continue; } @@ -1153,8 +1153,8 @@ systemd_remove_override(const char *agent, int timeout) if (rc != ENOENT) { // Stop may be called when already stopped, which is fine - crm_warn("Cannot remove systemd override file %s: %s", - filename->str, pcmk_rc_str(rc)); + pcmk__warn("Cannot remove systemd override file %s: %s", + filename->str, pcmk_rc_str(rc)); } } else { diff --git a/tools/crm_attribute.c b/tools/crm_attribute.c index 01deac23acd..ba61c6176ee 100644 --- a/tools/crm_attribute.c +++ b/tools/crm_attribute.c @@ -816,7 +816,7 @@ main(int argc, char **argv) } if (options.inhibit) { - crm_warn("Inhibiting notifications for this update"); + pcmk__warn("Inhibiting notifications for this update"); cib__set_call_options(cib_opts, crm_system_name, cib_inhibit_notify); } diff --git a/tools/crm_mon.c b/tools/crm_mon.c index 52b728b7857..7d30b69f4ea 100644 --- a/tools/crm_mon.c +++ b/tools/crm_mon.c @@ -1181,13 +1181,13 @@ avoid_zombies(void) memset(&sa, 0, sizeof(struct sigaction)); if (sigemptyset(&sa.sa_mask) < 0) { - crm_warn("Cannot avoid zombies: %s", pcmk_rc_str(errno)); + pcmk__warn("Cannot avoid zombies: %s", pcmk_rc_str(errno)); return; } sa.sa_handler = SIG_IGN; sa.sa_flags = SA_RESTART|SA_NOCLDWAIT; if (sigaction(SIGCHLD, &sa, NULL) < 0) { - crm_warn("Cannot avoid zombies: %s", pcmk_rc_str(errno)); + pcmk__warn("Cannot avoid zombies: %s", pcmk_rc_str(errno)); } } @@ -1799,11 +1799,11 @@ handle_rsc_op(xmlNode *xml, void *userdata) } else if (status == PCMK_EXEC_DONE) { desc = crm_exit_str(rc); - crm_warn("%s of %s on %s failed: %s", task, rsc, node, desc); + pcmk__warn("%s of %s on %s failed: %s", task, rsc, node, desc); } else { desc = pcmk_exec_status_str(status); - crm_warn("%s of %s on %s failed: %s", task, rsc, node, desc); + pcmk__warn("%s of %s on %s failed: %s", task, rsc, node, desc); } if (notify && options.external_agent) { diff --git a/tools/stonith_admin.c b/tools/stonith_admin.c index 978e6c7ecf4..8648cead3a9 100644 --- a/tools/stonith_admin.c +++ b/tools/stonith_admin.c @@ -278,7 +278,7 @@ add_tolerance(const gchar *option_name, const gchar *optarg, gpointer data, GErr || (tolerance_ms < 0)) { // @COMPAT Treat as an error and return FALSE? - crm_warn("Ignoring invalid tolerance '%s'", optarg); + pcmk__warn("Ignoring invalid tolerance '%s'", optarg); } else { options.tolerance_ms = (unsigned int) QB_MIN(tolerance_ms, UINT_MAX); } From d86c0807c49809926aa4bb6dd49d2c9737e24775 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Wed, 26 Mar 2025 23:45:11 -0700 Subject: [PATCH 159/186] API: libcrmcommon: Deprecate crm_warn() Pacemaker should not be used for general-purpose logging. Ref T622 Signed-off-by: Reid Wahl --- include/crm/common/logging.h | 3 --- include/crm/common/logging_compat.h | 4 ++++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/include/crm/common/logging.h b/include/crm/common/logging.h index 9958e1f8dfe..40e45878f97 100644 --- a/include/crm/common/logging.h +++ b/include/crm/common/logging.h @@ -346,9 +346,6 @@ pcmk__clip_log_level(int level) } \ } while (0) -// NOTE: sbd (as of at least 1.5.2) uses this -#define crm_warn(fmt, args...) qb_log(LOG_WARNING, fmt, ##args) - // NOTE: sbd (as of at least 1.5.2) uses this #define crm_notice(fmt, args...) qb_log(LOG_NOTICE, fmt, ##args) diff --git a/include/crm/common/logging_compat.h b/include/crm/common/logging_compat.h index 2e3005265cc..a8026735347 100644 --- a/include/crm/common/logging_compat.h +++ b/include/crm/common/logging_compat.h @@ -32,6 +32,10 @@ extern "C" { //! \deprecated Do not use #define crm_err(fmt, args...) qb_log(LOG_ERR, fmt, ##args) +// NOTE: sbd (as of at least 1.5.2) uses this +//! \deprecated Do not use +#define crm_warn(fmt, args...) qb_log(LOG_WARNING, fmt, ##args) + #ifdef __cplusplus } #endif From cc2f6bb7fe9f3bbdd964f863e054cca133017947 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 27 Mar 2025 00:28:19 -0700 Subject: [PATCH 160/186] Refactor: libcrmcommon: New pcmk__notice() To replace crm_notice() Signed-off-by: Reid Wahl --- daemons/attrd/attrd_alerts.c | 6 +- daemons/attrd/attrd_cib.c | 10 +- daemons/attrd/attrd_corosync.c | 30 +++--- daemons/attrd/attrd_elections.c | 16 +-- daemons/attrd/attrd_sync.c | 4 +- daemons/attrd/pacemaker-attrd.c | 7 +- daemons/based/based_callbacks.c | 23 +++-- daemons/based/based_io.c | 5 +- daemons/based/based_messages.c | 9 +- daemons/based/based_notify.c | 4 +- daemons/based/based_remote.c | 25 ++--- daemons/based/pacemaker-based.c | 7 +- daemons/controld/controld_callbacks.c | 11 +- daemons/controld/controld_cib.c | 6 +- daemons/controld/controld_control.c | 12 ++- daemons/controld/controld_election.c | 4 +- daemons/controld/controld_execd.c | 39 +++---- daemons/controld/controld_execd_state.c | 9 +- daemons/controld/controld_fencing.c | 62 +++++------ daemons/controld/controld_join_client.c | 10 +- daemons/controld/controld_join_dc.c | 20 ++-- daemons/controld/controld_membership.c | 9 +- daemons/controld/controld_messages.c | 6 +- daemons/controld/controld_metadata.c | 5 +- daemons/controld/controld_remote_ra.c | 4 +- daemons/controld/controld_schedulerd.c | 9 +- daemons/controld/controld_te_actions.c | 8 +- daemons/controld/controld_te_callbacks.c | 8 +- daemons/controld/controld_te_events.c | 31 +++--- daemons/controld/controld_te_utils.c | 8 +- daemons/controld/controld_throttle.c | 4 +- daemons/controld/controld_timers.c | 5 +- daemons/controld/controld_transition.c | 6 +- daemons/controld/pacemaker-controld.c | 2 +- daemons/execd/cts-exec-helper.c | 2 +- daemons/execd/execd_alerts.c | 16 ++- daemons/execd/execd_commands.c | 34 ++++--- daemons/execd/pacemaker-execd.c | 10 +- daemons/execd/remoted_tls.c | 8 +- daemons/fenced/cts-fence-helper.c | 9 +- daemons/fenced/fenced_cib.c | 3 +- daemons/fenced/fenced_commands.c | 84 +++++++-------- daemons/fenced/fenced_remote.c | 119 +++++++++++----------- daemons/fenced/pacemaker-fenced.c | 5 +- daemons/pacemakerd/pacemakerd.c | 23 +++-- daemons/pacemakerd/pcmkd_corosync.c | 2 +- daemons/pacemakerd/pcmkd_messages.c | 10 +- daemons/pacemakerd/pcmkd_subdaemons.c | 60 +++++------ daemons/schedulerd/pacemaker-schedulerd.c | 5 +- include/crm/common/logging_internal.h | 9 ++ lib/cluster/cluster.c | 22 ++-- lib/cluster/corosync.c | 10 +- lib/cluster/membership.c | 34 +++---- lib/common/acl.c | 10 +- lib/common/io.c | 42 ++++---- lib/common/ipc_client.c | 41 ++++---- lib/common/ipc_server.c | 16 +-- lib/common/logging.c | 16 +-- lib/common/mainloop.c | 10 +- lib/common/patchset.c | 4 +- lib/common/procfs.c | 3 +- lib/fencing/st_client.c | 13 +-- lib/lrmd/lrmd_client.c | 2 +- lib/pacemaker/pcmk_graph_producer.c | 11 +- lib/pacemaker/pcmk_output.c | 4 +- lib/pacemaker/pcmk_sched_bundle.c | 6 +- lib/pacemaker/pcmk_sched_clone.c | 5 +- lib/pacemaker/pcmk_sched_constraints.c | 4 +- lib/pacemaker/pcmk_sched_fencing.c | 7 +- lib/pacemaker/pcmk_sched_instances.c | 4 +- lib/pacemaker/pcmk_sched_primitive.c | 38 +++---- lib/pacemaker/pcmk_sched_promotable.c | 8 +- lib/pacemaker/pcmk_sched_recurring.c | 14 +-- lib/pacemaker/pcmk_sched_resource.c | 8 +- lib/pacemaker/pcmk_scheduler.c | 10 +- lib/pengine/failcounts.c | 4 +- lib/pengine/pe_actions.c | 5 +- lib/pengine/unpack.c | 80 ++++++++------- lib/pengine/utils.c | 5 +- tools/crm_mon.c | 8 +- tools/crm_resource_runtime.c | 4 +- 81 files changed, 669 insertions(+), 602 deletions(-) diff --git a/daemons/attrd/attrd_alerts.c b/daemons/attrd/attrd_alerts.c index 81d02d2ce2c..35b98910a8c 100644 --- a/daemons/attrd/attrd_alerts.c +++ b/daemons/attrd/attrd_alerts.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. * @@ -87,7 +87,7 @@ config_query_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, void crm_debug("Local CIB has no alerts section"); return; } else if (rc != pcmk_ok) { - crm_notice("Could not query local CIB: %s", pcmk_strerror(rc)); + pcmk__notice("Could not query local CIB: %s", pcmk_strerror(rc)); return; } @@ -96,7 +96,7 @@ config_query_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, void crmalerts = pcmk__xe_first_child(crmalerts, PCMK_XE_ALERTS, NULL, NULL); } if (!crmalerts) { - crm_notice("CIB query result has no " PCMK_XE_ALERTS " section"); + pcmk__notice("CIB query result has no " PCMK_XE_ALERTS " section"); return; } diff --git a/daemons/attrd/attrd_cib.c b/daemons/attrd/attrd_cib.c index 854e385e3e9..50e9d87253a 100644 --- a/daemons/attrd/attrd_cib.c +++ b/daemons/attrd/attrd_cib.c @@ -94,8 +94,8 @@ attrd_cib_updated_cb(const char *event, xmlNode *msg) if (client_name == NULL) { client_name = pcmk__xe_get(msg, PCMK__XA_CIB_CLIENTID); } - crm_notice("Updating all attributes after %s event triggered by %s", - event, pcmk__s(client_name, "unidentified client")); + pcmk__notice("Updating all attributes after %s event triggered by %s", + event, pcmk__s(client_name, "unidentified client")); attrd_write_attributes(attrd_write_all); } @@ -591,9 +591,9 @@ write_attribute(attribute_t *a, bool ignore_delay) // Defer write if this is a cluster node that's never been seen if (node_xml_id == NULL) { attrd_set_attr_flags(a, attrd_attr_node_unknown); - crm_notice("Cannot write %s[%s]='%s' to CIB because node's XML ID " - "is unknown (will retry if learned)", - a->id, v->nodename, v->current); + pcmk__notice("Cannot write %s[%s]='%s' to CIB because node's XML " + "ID is unknown (will retry if learned)", + a->id, v->nodename, v->current); continue; } diff --git a/daemons/attrd/attrd_corosync.c b/daemons/attrd/attrd_corosync.c index 9e2363a09fa..e154332e0f4 100644 --- a/daemons/attrd/attrd_corosync.c +++ b/daemons/attrd/attrd_corosync.c @@ -261,18 +261,24 @@ update_attr_on_host(attribute_t *a, const pcmk__node_status_t *peer, * kept in sync. */ v = g_hash_table_lookup(a->values, attrd_cluster->priv->node_name); - crm_notice("%s[%s]: local value '%s' takes priority over '%s' from %s", - attr, host, readable_value(v), value, peer->name); + pcmk__notice("%s[%s]: local value '%s' takes priority over '%s' from " + "%s", + attr, host, readable_value(v), value, peer->name); attrd_broadcast_value(a, v); } else if (changed) { - crm_notice("Setting %s[%s]%s%s: %s -> %s " - QB_XS " from %s with %s write delay and node XML ID %s", - attr, host, a->set_type ? " in " : "", - pcmk__s(a->set_type, ""), readable_value(v), - pcmk__s(value, "(unset)"), peer->name, - (a->timeout_ms == 0)? "no" : pcmk__readable_interval(a->timeout_ms), - pcmk__s(node_xml_id, "unknown")); + const char *timeout_s = "no"; + + if (a->timeout_ms != 0) { + timeout_s = pcmk__readable_interval(a->timeout_ms); + } + + pcmk__notice("Setting %s[%s]%s%s: %s -> %s " + QB_XS " from %s with %s write delay and node XML ID %s", + attr, host, ((a->set_type != NULL)? " in " : ""), + pcmk__s(a->set_type, ""), readable_value(v), + pcmk__s(value, "(unset)"), peer->name, timeout_s, + pcmk__s(node_xml_id, "unknown")); pcmk__str_update(&v->current, value); attrd_set_attr_flags(a, attrd_attr_changed); @@ -528,9 +534,9 @@ attrd_peer_remove(const char *host, bool uncache, const char *source) GHashTableIter aIter; CRM_CHECK(host != NULL, return); - crm_notice("Removing all %s attributes for node %s " - QB_XS " %s reaping node from cache", - host, source, (uncache? "and" : "without")); + pcmk__notice("Removing all %s attributes for node %s " + QB_XS " %s reaping node from cache", + host, source, (uncache? "and" : "without")); g_hash_table_iter_init(&aIter, attributes); while (g_hash_table_iter_next(&aIter, NULL, (gpointer *) & a)) { diff --git a/daemons/attrd/attrd_elections.c b/daemons/attrd/attrd_elections.c index 74e57ed377f..b597b1d80b1 100644 --- a/daemons/attrd/attrd_elections.c +++ b/daemons/attrd/attrd_elections.c @@ -113,14 +113,14 @@ attrd_check_for_new_writer(const pcmk__node_status_t *peer, const xmlNode *xml) if ((election_state(attrd_cluster) == election_won) && !pcmk__str_eq(peer->name, attrd_cluster->priv->node_name, pcmk__str_casei)) { - crm_notice("Detected another attribute writer (%s), starting new " - "election", - peer->name); + pcmk__notice("Detected another attribute writer (%s), starting new " + "election", + peer->name); election_vote(attrd_cluster); } else if (!pcmk__str_eq(peer->name, peer_writer, pcmk__str_casei)) { - crm_notice("Recorded new attribute writer: %s (was %s)", - peer->name, pcmk__s(peer_writer, "unset")); + pcmk__notice("Recorded new attribute writer: %s (was %s)", + peer->name, pcmk__s(peer_writer, "unset")); pcmk__str_update(&peer_writer, peer->name); } } @@ -130,8 +130,8 @@ attrd_check_for_new_writer(const pcmk__node_status_t *peer, const xmlNode *xml) void attrd_declare_winner(void) { - crm_notice("Recorded local node as attribute writer (was %s)", - (peer_writer? peer_writer : "unset")); + pcmk__notice("Recorded local node as attribute writer (was %s)", + pcmk__s(peer_writer, "unset")); pcmk__str_update(&peer_writer, attrd_cluster->priv->node_name); } @@ -144,7 +144,7 @@ attrd_remove_voter(const pcmk__node_status_t *peer) free(peer_writer); peer_writer = NULL; - crm_notice("Lost attribute writer %s", peer->name); + pcmk__notice("Lost attribute writer %s", peer->name); /* Clear any election dampening in effect. Otherwise, if the lost writer * had just won, the election could fizzle out with no new writer. diff --git a/daemons/attrd/attrd_sync.c b/daemons/attrd/attrd_sync.c index 6691cff667d..75847203027 100644 --- a/daemons/attrd/attrd_sync.c +++ b/daemons/attrd/attrd_sync.c @@ -254,8 +254,8 @@ attrd_ack_waitlist_clients(enum attrd_sync_point sync_point, const xmlNode *xml) return; } - crm_notice("Alerting client %s for reached %s sync point", - wl->client_id, sync_point_str(wl->sync_point)); + pcmk__notice("Alerting client %s for reached %s sync point", + wl->client_id, sync_point_str(wl->sync_point)); client = pcmk__find_client_by_id(wl->client_id); if (client == NULL) { diff --git a/daemons/attrd/pacemaker-attrd.c b/daemons/attrd/pacemaker-attrd.c index b4d3583dad8..2eab680a934 100644 --- a/daemons/attrd/pacemaker-attrd.c +++ b/daemons/attrd/pacemaker-attrd.c @@ -134,8 +134,8 @@ main(int argc, char **argv) pcmk__add_logfiles(log_files, out); crm_log_init(PCMK__VALUE_ATTRD, LOG_INFO, TRUE, FALSE, argc, argv, FALSE); - crm_notice("Starting Pacemaker node attribute manager%s", - stand_alone ? " in standalone mode" : ""); + pcmk__notice("Starting Pacemaker node attribute manager%s", + (stand_alone ? " in standalone mode" : "")); if (ipc_already_running()) { attrd_exit_status = CRM_EX_OK; @@ -187,7 +187,8 @@ main(int argc, char **argv) attrd_broadcast_protocol(); attrd_init_ipc(); - crm_notice("Pacemaker node attribute manager successfully started and accepting connections"); + pcmk__notice("Pacemaker node attribute manager successfully started and " + "accepting connections"); attrd_run_mainloop(); done: diff --git a/daemons/based/based_callbacks.c b/daemons/based/based_callbacks.c index da5137eab86..e669424f3c0 100644 --- a/daemons/based/based_callbacks.c +++ b/daemons/based/based_callbacks.c @@ -456,15 +456,16 @@ process_ping_reply(xmlNode *reply) num_updates_s = pcmk__xe_get(remote_cib, PCMK_XA_NUM_UPDATES); } - crm_notice("Local CIB %s.%s.%s.%s differs from %s: %s.%s.%s.%s %p", - pcmk__xe_get(the_cib, PCMK_XA_ADMIN_EPOCH), - pcmk__xe_get(the_cib, PCMK_XA_EPOCH), - pcmk__xe_get(the_cib, PCMK_XA_NUM_UPDATES), - ping_digest, host, - pcmk__s(admin_epoch_s, "_"), - pcmk__s(epoch_s, "_"), - pcmk__s(num_updates_s, "_"), - digest, remote_cib); + pcmk__notice("Local CIB %s.%s.%s.%s differs from %s: %s.%s.%s.%s " + "%p", + pcmk__xe_get(the_cib, PCMK_XA_ADMIN_EPOCH), + pcmk__xe_get(the_cib, PCMK_XA_EPOCH), + pcmk__xe_get(the_cib, PCMK_XA_NUM_UPDATES), + ping_digest, host, + pcmk__s(admin_epoch_s, "_"), + pcmk__s(epoch_s, "_"), + pcmk__s(num_updates_s, "_"), + digest, remote_cib); if(remote_cib && remote_cib->children) { // Additional debug @@ -1233,8 +1234,8 @@ cib_peer_callback(xmlNode * msg, void *private_data) static gboolean cib_force_exit(gpointer data) { - crm_notice("Exiting immediately after %s without shutdown acknowledgment", - pcmk__readable_interval(EXIT_ESCALATION_MS)); + pcmk__notice("Exiting immediately after %s without shutdown acknowledgment", + pcmk__readable_interval(EXIT_ESCALATION_MS)); terminate_cib(CRM_EX_ERROR); return FALSE; } diff --git a/daemons/based/based_io.c b/daemons/based/based_io.c index d095c0e801d..2099a4a4018 100644 --- a/daemons/based/based_io.c +++ b/daemons/based/based_io.c @@ -203,8 +203,9 @@ readCibXmlFile(const char *dir, const char *file, gboolean discard_status) rc = cib_file_read_and_verify(filename, sigfile, &root); if (rc == pcmk_ok) { - crm_notice("Loaded CIB from last valid backup %s (with digest %s)", - filename, sigfile); + pcmk__notice("Loaded CIB from last valid backup %s (with digest " + "%s)", + filename, sigfile); } else { pcmk__warn("Not using next most recent CIB backup from %s (with " "digest %s): %s", diff --git a/daemons/based/based_messages.c b/daemons/based/based_messages.c index 6daa6413484..c15f44ef0b4 100644 --- a/daemons/based/based_messages.c +++ b/daemons/based/based_messages.c @@ -231,7 +231,7 @@ cib_process_upgrade_server(const char *op, int options, const char *section, xml xmlNode *up = pcmk__xe_create(NULL, __func__); rc = pcmk_ok; - crm_notice("Upgrade request from %s verified", host); + pcmk__notice("Upgrade request from %s verified", host); pcmk__xe_set(up, PCMK__XA_T, PCMK__VALUE_CIB); pcmk__xe_set(up, PCMK__XA_CIB_OP, PCMK__CIB_REQUEST_UPGRADE); @@ -319,9 +319,10 @@ cib_server_process_diff(const char *op, int options, const char *section, xmlNod &diff_del_admin_epoch, &diff_del_epoch, &diff_del_updates); sync_in_progress++; - crm_notice("Not applying diff %d.%d.%d -> %d.%d.%d (sync in progress)", - diff_del_admin_epoch, diff_del_epoch, diff_del_updates, - diff_add_admin_epoch, diff_add_epoch, diff_add_updates); + pcmk__notice("Not applying diff %d.%d.%d -> %d.%d.%d (sync in " + "progress)", + diff_del_admin_epoch, diff_del_epoch, diff_del_updates, + diff_add_admin_epoch, diff_add_epoch, diff_add_updates); return -pcmk_err_diff_resync; } diff --git a/daemons/based/based_notify.c b/daemons/based/based_notify.c index 6e9ece33b26..27ac6b0c23a 100644 --- a/daemons/based/based_notify.c +++ b/daemons/based/based_notify.c @@ -117,8 +117,8 @@ cib_notify_send(const xmlNode *xml) pcmk__foreach_ipc_client(cib_notify_send_one, &update); } else { - crm_notice("Could not notify clients: %s " QB_XS " rc=%d", - pcmk_rc_str(rc), rc); + pcmk__notice("Could not notify clients: %s " QB_XS " rc=%d", + pcmk_rc_str(rc), rc); } pcmk_free_ipc_event(iov); } diff --git a/daemons/based/based_remote.c b/daemons/based/based_remote.c index d042ad09e21..e9078d9eb9c 100644 --- a/daemons/based/based_remote.c +++ b/daemons/based/based_remote.c @@ -92,7 +92,7 @@ init_remote_listener(int port, gboolean encrypted) if (encrypted) { bool use_cert = pcmk__x509_enabled(); - crm_notice("Starting TLS listener on port %d", port); + pcmk__notice("Starting TLS listener on port %d", port); rc = pcmk__init_tls(&tls, true, use_cert ? GNUTLS_CRD_CERTIFICATE : GNUTLS_CRD_ANON); if (rc != pcmk_rc_ok) { @@ -157,8 +157,8 @@ check_group_membership(const char *usr, const char *grp) rc = pcmk__lookup_user(usr, NULL, &gid); if (rc != pcmk_rc_ok) { - crm_notice("Rejecting remote client: could not find user '%s': %s", - usr, pcmk_rc_str(rc)); + pcmk__notice("Rejecting remote client: could not find user '%s': %s", + usr, pcmk_rc_str(rc)); return FALSE; } @@ -184,8 +184,9 @@ check_group_membership(const char *usr, const char *grp) } } - crm_notice("Rejecting remote client: User '%s' is not a member of " - "group '%s'", usr, grp); + pcmk__notice("Rejecting remote client: User '%s' is not a member of group " + "'%s'", + usr, grp); return FALSE; } @@ -492,9 +493,9 @@ cib_remote_msg(gpointer data) client->user = pcmk__str_copy(user); } - crm_notice("Remote connection accepted for authenticated user %s " - QB_XS " client %s", - pcmk__s(user, ""), client_name); + pcmk__notice("Remote connection accepted for authenticated user %s " + QB_XS " client %s", + pcmk__s(user, ""), client_name); /* send ACK */ reg = pcmk__xe_create(NULL, PCMK__XE_CIB_RESULT); @@ -615,8 +616,8 @@ authenticate_user(const char *user, const char *passwd) // Check user credentials rc = pam_authenticate(pam_h, PAM_SILENT); if (rc != PAM_SUCCESS) { - crm_notice("Access for remote user %s denied: %s", - user, pam_strerror(pam_h, rc)); + pcmk__notice("Access for remote user %s denied: %s", user, + pam_strerror(pam_h, rc)); goto bail; } @@ -649,8 +650,8 @@ authenticate_user(const char *user, const char *passwd) // Check user account restrictions (expiration, etc.) rc = pam_acct_mgmt(pam_h, PAM_SILENT); if (rc != PAM_SUCCESS) { - crm_notice("Access for remote user %s denied: %s", - user, pam_strerror(pam_h, rc)); + pcmk__notice("Access for remote user %s denied: %s", user, + pam_strerror(pam_h, rc)); goto bail; } pass = true; diff --git a/daemons/based/pacemaker-based.c b/daemons/based/pacemaker-based.c index c164a01d357..1654787e801 100644 --- a/daemons/based/pacemaker-based.c +++ b/daemons/based/pacemaker-based.c @@ -226,7 +226,7 @@ main(int argc, char **argv) pcmk__cli_init_logging(PCMK__SERVER_BASED, args->verbosity); crm_log_init(NULL, LOG_INFO, TRUE, FALSE, argc, argv, FALSE); - crm_notice("Starting Pacemaker CIB manager"); + pcmk__notice("Starting Pacemaker CIB manager"); old_instance = crm_ipc_new(PCMK__SERVER_BASED_RO, 0); if (old_instance == NULL) { @@ -260,7 +260,7 @@ main(int argc, char **argv) if (cib_root == NULL) { cib_root = g_strdup(CRM_CONFIG_DIR); } else { - crm_notice("Using custom config location: %s", cib_root); + pcmk__notice("Using custom config location: %s", cib_root); } if (!pcmk__daemon_can_write(cib_root, NULL)) { @@ -278,7 +278,8 @@ main(int argc, char **argv) // Run the main loop mainloop = g_main_loop_new(NULL, FALSE); - crm_notice("Pacemaker CIB manager successfully started and accepting connections"); + pcmk__notice("Pacemaker CIB manager successfully started and accepting " + "connections"); g_main_loop_run(mainloop); /* If main loop returned, clean up and exit. We disconnect in case diff --git a/daemons/controld/controld_callbacks.c b/daemons/controld/controld_callbacks.c index 945f55985c1..eb5d920d6d1 100644 --- a/daemons/controld/controld_callbacks.c +++ b/daemons/controld/controld_callbacks.c @@ -227,7 +227,7 @@ peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, if (!appeared && controld_is_local_node(node->name)) { /* Did we get evicted? */ - crm_notice("Our peer connection failed"); + pcmk__notice("Our peer connection failed"); register_fsa_input(C_CRMD_STATUS_CALLBACK, I_ERROR, NULL); } else if (pcmk__str_eq(node->name, controld_globals.dc_name, @@ -241,8 +241,8 @@ peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, * DC's expected state to down. This avoids fencing upon * deletion of its transient attributes. */ - crm_notice("Our peer on the DC (%s) is dead", - controld_globals.dc_name); + pcmk__notice("Our peer on the DC (%s) is dead", + controld_globals.dc_name); register_fsa_input(C_CRMD_STATUS_CALLBACK, I_ELECTION, NULL); controld_delete_node_state(node->name, controld_section_attrs, @@ -303,8 +303,9 @@ peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, crm_info("%s of peer %s is in progress " QB_XS " action=%d", task, node->name, down->id); } else { - crm_notice("%s of peer %s is complete " QB_XS " action=%d", - task, node->name, down->id); + pcmk__notice("%s of peer %s is complete " + QB_XS " action=%d", + task, node->name, down->id); pcmk__update_graph(controld_globals.transition_graph, down); trigger_graph(); } diff --git a/daemons/controld/controld_cib.c b/daemons/controld/controld_cib.c index 7a73a1337de..a2c603d4683 100644 --- a/daemons/controld/controld_cib.c +++ b/daemons/controld/controld_cib.c @@ -86,9 +86,9 @@ do_cib_updated(const char *event, xmlNode * msg) if (client_name == NULL) { client_name = pcmk__xe_get(msg, PCMK__XA_CIB_CLIENTID); } - crm_notice("Populating nodes and starting an election after %s event " - "triggered by %s", - event, pcmk__s(client_name, "(unidentified client)")); + pcmk__notice("Populating nodes and starting an election after %s event " + "triggered by %s", + event, pcmk__s(client_name, "(unidentified client)")); populate_cib_nodes(node_update_quick|node_update_all, __func__); register_fsa_input(C_FSA_INTERNAL, I_ELECTION, NULL); diff --git a/daemons/controld/controld_control.c b/daemons/controld/controld_control.c index a175d491779..a739451eeb1 100644 --- a/daemons/controld/controld_control.c +++ b/daemons/controld/controld_control.c @@ -165,8 +165,9 @@ crmd_exit(crm_exit_t exit_code) return exit_code; } else if(in_progress) { - crm_notice("Error during shutdown process, exiting now with status %d (%s)", - exit_code, crm_exit_str(exit_code)); + pcmk__notice("Error during shutdown process, exiting now with status " + "%d (%s)", + exit_code, crm_exit_str(exit_code)); crm_write_blackbox(SIGTRAP, NULL); crmd_fast_exit(exit_code); } @@ -202,8 +203,8 @@ crmd_exit(crm_exit_t exit_code) * to report on - allowing real errors stand out */ if (exit_code != CRM_EX_OK) { - crm_notice("Forcing immediate exit with status %d (%s)", - exit_code, crm_exit_str(exit_code)); + pcmk__notice("Forcing immediate exit with status %d (%s)", exit_code, + crm_exit_str(exit_code)); crm_write_blackbox(SIGTRAP, NULL); crmd_fast_exit(exit_code); } @@ -502,7 +503,8 @@ do_started(long long action, "respawn"); register_fsa_error(C_FSA_INTERNAL, I_ERROR, NULL); } else { - crm_notice("Pacemaker controller successfully started and accepting connections"); + pcmk__notice("Pacemaker controller successfully started and accepting " + "connections"); } controld_set_fsa_input_flags(R_ST_REQUIRED); controld_timer_fencer_connect(GINT_TO_POINTER(TRUE)); diff --git a/daemons/controld/controld_election.c b/daemons/controld/controld_election.c index 99071a5322b..026c9f13bdc 100644 --- a/daemons/controld/controld_election.c +++ b/daemons/controld/controld_election.c @@ -177,8 +177,8 @@ feature_update_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, vo if (rc != pcmk_ok) { fsa_data_t *msg_data = NULL; - crm_notice("Feature update failed: %s " QB_XS " rc=%d", - pcmk_strerror(rc), rc); + pcmk__notice("Feature update failed: %s " QB_XS " rc=%d", + pcmk_strerror(rc), rc); register_fsa_error(C_FSA_INTERNAL, I_ERROR, NULL); } } diff --git a/daemons/controld/controld_execd.c b/daemons/controld/controld_execd.c index 9534573e742..755afee2583 100644 --- a/daemons/controld/controld_execd.c +++ b/daemons/controld/controld_execd.c @@ -419,8 +419,9 @@ lrm_state_verify_stopped(lrm_state_t * lrm_state, enum crmd_fsa_state cur_state, guint nremaining = g_hash_table_size(lrm_state->active_ops); if (removed || nremaining) { - crm_notice("Stopped %u recurring operation%s at %s (%u remaining)", - removed, pcmk__plural_s(removed), when, nremaining); + pcmk__notice("Stopped %u recurring operation%s at %s (%u " + "remaining)", + removed, pcmk__plural_s(removed), when, nremaining); } } @@ -480,9 +481,11 @@ lrm_state_verify_stopped(lrm_state_t * lrm_state, enum crmd_fsa_state cur_state, g_hash_table_iter_init(&hIter, lrm_state->active_ops); while (g_hash_table_iter_next(&hIter, (gpointer*)&key, (gpointer*)&pending)) { if (pcmk__str_eq(entry->id, pending->rsc_id, pcmk__str_none)) { - crm_notice("%sction %s (%s) incomplete at %s", - pending->interval_ms == 0 ? "A" : "Recurring a", - key, pending->op_key, when); + const bool recurring = (pending->interval_ms != 0); + + pcmk__notice("%s %s (%s) incomplete at %s", + (recurring? "Recurring action" : "Action"), + key, pending->op_key, when); } } } @@ -1220,7 +1223,7 @@ handle_reprobe_op(lrm_state_t *lrm_state, xmlNode *msg, const char *from_sys, const char *from_host, const char *user_name, gboolean is_remote_node, bool reprobe_all_nodes) { - crm_notice("Forcing the status of all resources to be redetected"); + pcmk__notice("Forcing the status of all resources to be redetected"); force_reprobe(lrm_state, from_sys, from_host, user_name, is_remote_node, reprobe_all_nodes); @@ -1964,11 +1967,11 @@ do_lrm_rsc_op(lrm_state_t *lrm_state, lrmd_rsc_info_t *rsc, xmlNode *msg, nack_reason = should_nack_action(operation); if (nack_reason != NULL) { - crm_notice("Not requesting local execution of %s operation for %s on %s" - " in state %s: %s", - pcmk__readable_action(op->op_type, op->interval_ms), rsc->id, - lrm_state->node_name, - fsa_state2string(controld_globals.fsa_state), nack_reason); + pcmk__notice("Not requesting local execution of %s operation for %s on " + "%s in state %s: %s", + pcmk__readable_action(op->op_type, op->interval_ms), + rsc->id, lrm_state->node_name, + fsa_state2string(controld_globals.fsa_state), nack_reason); lrmd__set_result(op, PCMK_OCF_UNKNOWN_ERROR, PCMK_EXEC_INVALID, nack_reason); @@ -1978,10 +1981,10 @@ do_lrm_rsc_op(lrm_state_t *lrm_state, lrmd_rsc_info_t *rsc, xmlNode *msg, return; } - crm_notice("Requesting local execution of %s operation for %s on %s " - QB_XS " transition %s", - pcmk__readable_action(op->op_type, op->interval_ms), rsc->id, - lrm_state->node_name, pcmk__s(transition, "")); + pcmk__notice("Requesting local execution of %s operation for %s on %s " + QB_XS " transition %s", + pcmk__readable_action(op->op_type, op->interval_ms), rsc->id, + lrm_state->node_name, pcmk__s(transition, "")); controld_record_pending_op(lrm_state->node_name, rsc, op); @@ -2287,9 +2290,9 @@ process_lrm_event(lrm_state_t *lrm_state, lrmd_event_data_t *op, * refreshed, cleaned, or removed while this operation was * in flight). */ - crm_notice("Not recording %s result in CIB because " - "resource information was removed since it was initiated", - op_key); + pcmk__notice("Not recording %s result in CIB because resource " + "information was removed since it was initiated", + op_key); } else { /* This shouldn't be possible; the executor didn't consider the * resource deleted, but we couldn't find resource or node diff --git a/daemons/controld/controld_execd_state.c b/daemons/controld/controld_execd_state.c index 4db4d6fca4a..b81298cdbbe 100644 --- a/daemons/controld/controld_execd_state.c +++ b/daemons/controld/controld_execd_state.c @@ -527,8 +527,8 @@ crmd_remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg) } else if (pcmk__str_eq(op, LRMD_IPC_OP_SHUTDOWN_REQ, pcmk__str_casei)) { char *now_s = NULL; - crm_notice("%s requested shutdown of its remote connection", - lrm_state->node_name); + pcmk__notice("%s requested shutdown of its remote connection", + lrm_state->node_name); if (!remote_ra_is_in_maintenance(lrm_state)) { now_s = pcmk__ttoa(time(NULL)); @@ -544,8 +544,9 @@ crmd_remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg) } else { remote_proxy_nack_shutdown(lrmd); - crm_notice("Remote resource for %s is not managed so no ordered shutdown happening", - lrm_state->node_name); + pcmk__notice("Remote resource for %s is not managed so no ordered " + "shutdown happening", + lrm_state->node_name); } return; diff --git a/daemons/controld/controld_fencing.c b/daemons/controld/controld_fencing.c index a8b6e1ce49d..c0e11caa442 100644 --- a/daemons/controld/controld_fencing.c +++ b/daemons/controld/controld_fencing.c @@ -377,7 +377,9 @@ execute_stonith_cleanup(void) pcmk__get_node(0, target, NULL, pcmk__node_search_cluster_member); const char *uuid = pcmk__cluster_get_xml_id(target_node); - crm_notice("Marking %s, target of a previous stonith action, as clean", target); + pcmk__notice("Marking %s, target of a previous stonith action, as " + "clean", + target); update_node_state_after_fencing(target, uuid); free(target); } @@ -429,8 +431,8 @@ fail_incompletable_stonith(pcmk__graph_t *graph) pcmk__set_graph_action_flags(action, pcmk__graph_action_failed); last_action = action->xml; pcmk__update_graph(graph, action); - crm_notice("Failing action %d (%s): fencer terminated", - action->id, pcmk__xe_id(action->xml)); + pcmk__notice("Failing action %d (%s): fencer terminated", + action->id, pcmk__xe_id(action->xml)); } } } @@ -522,8 +524,8 @@ handle_fence_notification(stonith_t *st, stonith_event_t *event) if (pcmk__str_eq(PCMK_ACTION_ON, event->action, pcmk__str_none)) { // Unfencing doesn't need special handling, just a log message if (succeeded) { - crm_notice("%s was unfenced by %s at the request of %s@%s", - event->target, executioner, client, event->origin); + pcmk__notice("%s was unfenced by %s at the request of %s@%s", + event->target, executioner, client, event->origin); } else { pcmk__err("Unfencing of %s by %s failed (%s%s%s) with exit status " "%d", @@ -567,15 +569,13 @@ handle_fence_notification(stonith_t *st, stonith_event_t *event) } } - crm_notice("Peer %s was%s terminated (%s) by %s on behalf of %s@%s: " - "%s%s%s%s " QB_XS " event=%s", - event->target, (succeeded? "" : " not"), - event->action, executioner, client, event->origin, - (succeeded? "OK" : pcmk_exec_status_str(exec_status)), - ((reason == NULL)? "" : " ("), - ((reason == NULL)? "" : reason), - ((reason == NULL)? "" : ")"), - event->id); + pcmk__notice("Peer %s was%s terminated (%s) by %s on behalf of %s@%s: " + "%s%s%s%s " QB_XS " event=%s", + event->target, (succeeded? "" : " not"), event->action, + executioner, client, event->origin, + (succeeded? "OK" : pcmk_exec_status_str(exec_status)), + ((reason != NULL)? " (" : ""), pcmk__s(reason, ""), + ((reason != NULL)? ")" : ""), event->id); if (succeeded) { const uint32_t flags = pcmk__node_search_any @@ -619,10 +619,10 @@ handle_fence_notification(stonith_t *st, stonith_event_t *event) // Assume the target was our DC if we don't currently have one if (controld_globals.dc_name != NULL) { - crm_notice("Fencing target %s was our DC", event->target); + pcmk__notice("Fencing target %s was our DC", event->target); } else { - crm_notice("Fencing target %s may have been our DC", - event->target); + pcmk__notice("Fencing target %s may have been our DC", + event->target); } /* Given the CIB resyncing that occurs around elections, @@ -698,8 +698,9 @@ controld_timer_fencer_connect(gpointer user_data) if (rc != pcmk_ok) { if (pcmk__is_set(controld_globals.fsa_input_register, R_ST_REQUIRED)) { - crm_notice("Fencer connection failed (will retry): %s " - QB_XS " rc=%d", pcmk_strerror(rc), rc); + pcmk__notice("Fencer connection failed (will retry): %s " + QB_XS " rc=%d", + pcmk_strerror(rc), rc); if (!mainloop_timer_running(controld_fencer_connect_timer)) { mainloop_timer_start(controld_fencer_connect_timer); @@ -726,7 +727,7 @@ controld_timer_fencer_connect(gpointer user_data) PCMK__VALUE_ST_NOTIFY_HISTORY_SYNCED, tengine_stonith_history_synced); te_trigger_stonith_history_sync(TRUE); - crm_notice("Fencer successfully connected"); + pcmk__notice("Fencer successfully connected"); } return G_SOURCE_REMOVE; @@ -800,9 +801,9 @@ tengine_stonith_callback(stonith_t *stonith, stonith_callback_data_t *data) if (reason == NULL) { reason = pcmk_exec_status_str(stonith__execution_status(data)); } - crm_notice("Result of fence operation %d: %d (%s) " QB_XS " key=%s", - data->call_id, stonith__exit_status(data), reason, - (const char *) data->userdata); + pcmk__notice("Result of fence operation %d: %d (%s) " QB_XS " key=%s", + data->call_id, stonith__exit_status(data), reason, + (const char *) data->userdata); return; } @@ -909,8 +910,9 @@ tengine_stonith_callback(stonith_t *stonith, stonith_callback_data_t *data) data->call_id, target, reason); abort_action = pcmk__graph_wait; } else { - crm_notice("Fence operation %d for %s failed: %s " - "(aborting transition)", data->call_id, target, reason); + pcmk__notice("Fence operation %d for %s failed: %s (aborting " + "transition)", + data->call_id, target, reason); } /* Increment the fail count now, so abort_for_stonith_failure() can @@ -981,11 +983,11 @@ controld_execute_fence_action(pcmk__graph_t *graph, priority_delay = crm_meta_value(action->params, PCMK_OPT_PRIORITY_FENCING_DELAY); - crm_notice("Requesting fencing (%s) targeting node %s " - QB_XS " action=%s timeout=%i%s%s", - type, target, id, stonith_timeout, - priority_delay ? " priority_delay=" : "", - priority_delay ? priority_delay : ""); + pcmk__notice("Requesting fencing (%s) targeting node %s " + QB_XS " action=%s timeout=%i%s%s", + type, target, id, stonith_timeout, + ((priority_delay != NULL)? " priority_delay=" : ""), + pcmk__s(priority_delay, "")); /* Passing NULL means block until we can connect... */ controld_timer_fencer_connect(NULL); diff --git a/daemons/controld/controld_join_client.c b/daemons/controld/controld_join_client.c index 5512ae54ee4..cc6fe372f2a 100644 --- a/daemons/controld/controld_join_client.c +++ b/daemons/controld/controld_join_client.c @@ -197,8 +197,9 @@ set_join_state(const char *start_state, const char *node_name, const char *node_ bool remote) { if (pcmk__str_eq(start_state, PCMK_VALUE_STANDBY, pcmk__str_casei)) { - crm_notice("Forcing node %s to join in %s state per configured " - "environment", node_name, start_state); + pcmk__notice("Forcing node %s to join in %s state per configured " + "environment", + node_name, start_state); cib__update_node_attr(controld_globals.logger_out, controld_globals.cib_conn, cib_sync_call, PCMK_XE_NODES, node_uuid, @@ -207,8 +208,9 @@ set_join_state(const char *start_state, const char *node_name, const char *node_ (remote? PCMK_VALUE_REMOTE : NULL)); } else if (pcmk__str_eq(start_state, PCMK_VALUE_ONLINE, pcmk__str_casei)) { - crm_notice("Forcing node %s to join in %s state per configured " - "environment", node_name, start_state); + pcmk__notice("Forcing node %s to join in %s state per configured " + "environment", + node_name, start_state); cib__update_node_attr(controld_globals.logger_out, controld_globals.cib_conn, cib_sync_call, PCMK_XE_NODES, node_uuid, diff --git a/daemons/controld/controld_join_dc.c b/daemons/controld/controld_join_dc.c index 31d4005d5e5..9f2b6c41772 100644 --- a/daemons/controld/controld_join_dc.c +++ b/daemons/controld/controld_join_dc.c @@ -666,16 +666,16 @@ do_dc_join_finalize(long long action, // Ask for the agreed best CIB sync_from = pcmk__str_copy(max_generation_from); } - crm_notice("Finalizing join-%d for %d node%s (sync'ing CIB %s.%s.%s " - "with schema %s and feature set %s from %s)", - current_join_id, count_finalizable, - pcmk__plural_s(count_finalizable), - pcmk__xe_get(max_generation_xml, PCMK_XA_ADMIN_EPOCH), - pcmk__xe_get(max_generation_xml, PCMK_XA_EPOCH), - pcmk__xe_get(max_generation_xml, PCMK_XA_NUM_UPDATES), - pcmk__xe_get(max_generation_xml, PCMK_XA_VALIDATE_WITH), - pcmk__xe_get(max_generation_xml, PCMK_XA_CRM_FEATURE_SET), - sync_from); + pcmk__notice("Finalizing join-%d for %d node%s (sync'ing CIB %s.%s.%s with " + "schema %s and feature set %s from %s)", + current_join_id, count_finalizable, + pcmk__plural_s(count_finalizable), + pcmk__xe_get(max_generation_xml, PCMK_XA_ADMIN_EPOCH), + pcmk__xe_get(max_generation_xml, PCMK_XA_EPOCH), + pcmk__xe_get(max_generation_xml, PCMK_XA_NUM_UPDATES), + pcmk__xe_get(max_generation_xml, PCMK_XA_VALIDATE_WITH), + pcmk__xe_get(max_generation_xml, PCMK_XA_CRM_FEATURE_SET), + sync_from); crmd_join_phase_log(LOG_DEBUG); rc = controld_globals.cib_conn->cmds->sync_from(controld_globals.cib_conn, diff --git a/daemons/controld/controld_membership.c b/daemons/controld/controld_membership.c index 748463ba2c5..ca177088923 100644 --- a/daemons/controld/controld_membership.c +++ b/daemons/controld/controld_membership.c @@ -225,8 +225,8 @@ search_conflicting_node_callback(xmlNode * msg, int call_id, int rc, if (rc != pcmk_ok) { if (rc != -ENXIO) { - crm_notice("Searching conflicting nodes for %s failed: %s (%d)", - new_node_uuid, pcmk_strerror(rc), rc); + pcmk__notice("Searching conflicting nodes for %s failed: %s (%d)", + new_node_uuid, pcmk_strerror(rc), rc); } return; @@ -271,8 +271,9 @@ search_conflicting_node_callback(xmlNode * msg, int call_id, int rc, int delete_call_id = 0; xmlNode *node_state_xml = NULL; - crm_notice("Deleting unknown node %s/%s which has conflicting uname with %s", - node_uuid, node_uname, new_node_uuid); + pcmk__notice("Deleting unknown node %s/%s which has conflicting " + "uname with %s", + node_uuid, node_uname, new_node_uuid); delete_call_id = cib_conn->cmds->remove(cib_conn, PCMK_XE_NODES, node_xml, cib_none); diff --git a/daemons/controld/controld_messages.c b/daemons/controld/controld_messages.c index c66d036cafc..f3e9cbff6fe 100644 --- a/daemons/controld/controld_messages.c +++ b/daemons/controld/controld_messages.c @@ -842,7 +842,7 @@ create_ping_reply(const xmlNode *msg) // Add controller state value = fsa_state2string(controld_globals.fsa_state); pcmk__xe_set(ping, PCMK__XA_CRMD_STATE, value); - crm_notice("Current ping state: %s", value); // CTS needs this + pcmk__notice("Current ping state: %s", value); // CTS needs this // Add controller health // @TODO maybe do some checks to determine meaningful status @@ -1191,7 +1191,9 @@ handle_request(xmlNode *stored_msg, enum crmd_fsa_cause cause) "node %s/%u", name, id); } else { - crm_notice("Instructing peers to remove references to node %s/%u", name, id); + pcmk__notice("Instructing peers to remove references to node " + "%s/%u", + name, id); } pcmk__xml_free(msg); diff --git a/daemons/controld/controld_metadata.c b/daemons/controld/controld_metadata.c index 54e338fdaca..39ad07d818a 100644 --- a/daemons/controld/controld_metadata.c +++ b/daemons/controld/controld_metadata.c @@ -170,8 +170,9 @@ controld_cache_metadata(GHashTable *mdc, const lrmd_rsc_info_t *rsc, if (ocf1_1) { controld_set_ra_flags(md, key, ra_supports_reload_agent); } else { - crm_notice("reload-agent action will not be used with %s " - "because it does not support OCF 1.1 or later", key); + pcmk__notice("reload-agent action will not be used with %s " + "because it does not support OCF 1.1 or later", + key); } } else if (!ocf1_1 && pcmk__str_eq(action_name, PCMK_ACTION_RELOAD, diff --git a/daemons/controld/controld_remote_ra.c b/daemons/controld/controld_remote_ra.c index 74f5886dcbb..25e1fc67074 100644 --- a/daemons/controld/controld_remote_ra.c +++ b/daemons/controld/controld_remote_ra.c @@ -711,8 +711,8 @@ remote_lrm_op_callback(lrmd_event_data_t * op) ra_data->cmds = fail_all_monitor_cmds(ra_data->cmds); } else { - crm_notice("Unmanaged Pacemaker Remote node %s disconnected", - lrm_state->node_name); + pcmk__notice("Unmanaged Pacemaker Remote node %s disconnected", + lrm_state->node_name); /* Do roughly what a 'stop' on the remote-resource would do */ handle_remote_ra_stop(lrm_state, NULL); remote_node_down(lrm_state->node_name, DOWN_KEEP_LRM); diff --git a/daemons/controld/controld_schedulerd.c b/daemons/controld/controld_schedulerd.c index 7f9401e8c9f..eb74bccbb3c 100644 --- a/daemons/controld/controld_schedulerd.c +++ b/daemons/controld/controld_schedulerd.c @@ -73,8 +73,9 @@ save_cib_contents(xmlNode *msg, int call_id, int rc, xmlNode *output, "scheduler crash", filename); } else { - crm_notice("Saved Cluster Information Base to %s after scheduler crash", - filename); + pcmk__notice("Saved Cluster Information Base to %s after scheduler " + "crash", + filename); } free(filename); } @@ -353,8 +354,8 @@ do_pe_invoke(long long action, } if (cur_state != S_POLICY_ENGINE) { - crm_notice("Not invoking scheduler because in state %s", - fsa_state2string(cur_state)); + pcmk__notice("Not invoking scheduler because in state %s", + fsa_state2string(cur_state)); return; } if (!pcmk__is_set(controld_globals.fsa_input_register, R_HAVE_CIB)) { diff --git a/daemons/controld/controld_te_actions.c b/daemons/controld/controld_te_actions.c index dba8d34cdd0..6d86ad377d9 100644 --- a/daemons/controld/controld_te_actions.c +++ b/daemons/controld/controld_te_actions.c @@ -427,10 +427,10 @@ execute_rsc_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) pcmk__get_node(0, router_node, NULL, pcmk__node_search_cluster_member); - crm_notice("Asking %s to execute %s on %s%s " - QB_XS " transition %s action %d", - router_node, task_uuid, on_node, - (no_wait? " without waiting" : ""), counter, action->id); + pcmk__notice("Asking %s to execute %s on %s%s " + QB_XS " transition %s action %d", + router_node, task_uuid, on_node, + (no_wait? " without waiting" : ""), counter, action->id); rc = pcmk__cluster_send_message(node, pcmk_ipc_execd, cmd); } diff --git a/daemons/controld/controld_te_callbacks.c b/daemons/controld/controld_te_callbacks.c index 07cce71cc42..10461692e5e 100644 --- a/daemons/controld/controld_te_callbacks.c +++ b/daemons/controld/controld_te_callbacks.c @@ -498,10 +498,10 @@ action_timer_callback(gpointer data) via_node = pcmk__xe_get(action->xml, PCMK__XA_ROUTER_NODE); if (controld_globals.transition_graph->complete) { - crm_notice("Node %s did not send %s result (via %s) within %dms " - "(ignoring because transition not in progress)", - (on_node? on_node : ""), (task? task : "unknown action"), - (via_node? via_node : "controller"), action->timeout); + pcmk__notice("Node %s did not send %s result (via %s) within %dms " + "(ignoring because transition not in progress)", + pcmk__s(on_node, ""), pcmk__s(task, "unknown action"), + pcmk__s(via_node, "controller"), action->timeout); } else { /* fail the action */ diff --git a/daemons/controld/controld_te_events.c b/daemons/controld/controld_te_events.c index 626ae574a35..4f0e69dcf2d 100644 --- a/daemons/controld/controld_te_events.c +++ b/daemons/controld/controld_te_events.c @@ -141,11 +141,11 @@ fail_incompletable_actions(pcmk__graph_t *graph, const char *down_node) pcmk__update_graph(graph, action); if (pcmk__is_set(synapse->flags, pcmk__synapse_executed)) { - crm_notice("Action %d (%s) was pending on %s (offline)", - action->id, - pcmk__xe_get(action->xml, - PCMK__XA_OPERATION_KEY), - down_node); + pcmk__notice("Action %d (%s) was pending on %s (offline)", + action->id, + pcmk__xe_get(action->xml, + PCMK__XA_OPERATION_KEY), + down_node); } else { crm_info("Action %d (%s) is scheduled for %s (offline)", action->id, @@ -581,11 +581,12 @@ process_graph_event(xmlNode *event, const char *event_node) } else if (desc && update_failcount(event, event_node, rc, target_rc, (transition_num == -1), FALSE)) { - crm_notice("Transition %d action %d (%s on %s): expected '%s' but got '%s' " - QB_XS " target-rc=%d rc=%d call-id=%d event='%s'", - transition_num, action_num, id, uname, - crm_exit_str(target_rc), crm_exit_str(rc), - target_rc, rc, callid, desc); + pcmk__notice("Transition %d action %d (%s on %s): expected '%s' but " + "got '%s' " + QB_XS " target-rc=%d rc=%d call-id=%d event='%s'", + transition_num, action_num, id, uname, + crm_exit_str(target_rc), crm_exit_str(rc), + target_rc, rc, callid, desc); } else if (desc) { crm_info("Transition %d action %d (%s on %s): %s " @@ -602,11 +603,11 @@ process_graph_event(xmlNode *event, const char *event_node) } else { update_failcount(event, event_node, rc, target_rc, (transition_num == -1), ignore_failures); - crm_notice("Transition %d action %d (%s on %s): expected '%s' but got '%s' " - QB_XS " target-rc=%d rc=%d call-id=%d", - transition_num, action_num, id, uname, - crm_exit_str(target_rc), crm_exit_str(rc), - target_rc, rc, callid); + pcmk__notice("Transition %d action %d (%s on %s): expected '%s' but " + "got '%s' " QB_XS " target-rc=%d rc=%d call-id=%d", + transition_num, action_num, id, uname, + crm_exit_str(target_rc), crm_exit_str(rc), + target_rc, rc, callid); } bail: diff --git a/daemons/controld/controld_te_utils.c b/daemons/controld/controld_te_utils.c index 2ec55e6ac18..41e64a2f4ad 100644 --- a/daemons/controld/controld_te_utils.c +++ b/daemons/controld/controld_te_utils.c @@ -224,10 +224,10 @@ init_node_pending_timer(const pcmk__node_status_t *node, guint timeout) return; } - crm_notice("Waiting for pending %s with " PCMK_XA_ID " '%s' " - "to join the process group (timeout=%us)", - pcmk__s(node->name, "node"), node->xml_id, - controld_globals.node_pending_timeout); + pcmk__notice("Waiting for pending %s with " PCMK_XA_ID " '%s' to join the " + "process group (timeout=%us)", + pcmk__s(node->name, "node"), node->xml_id, + controld_globals.node_pending_timeout); key = pcmk__str_copy(node->xml_id); node_pending_timer = pcmk__assert_alloc(1, sizeof(struct abort_timer_s)); diff --git a/daemons/controld/controld_throttle.c b/daemons/controld/controld_throttle.c index abd58791046..a6d00e4c5dc 100644 --- a/daemons/controld/controld_throttle.c +++ b/daemons/controld/controld_throttle.c @@ -77,11 +77,11 @@ throttle_check_thresholds(float load, const char *desc, const float thresholds[4]) { if (load > thresholds[3]) { - crm_notice("Extreme %s detected: %f", desc, load); + pcmk__notice("Extreme %s detected: %f", desc, load); return throttle_extreme; } else if (load > thresholds[2]) { - crm_notice("High %s detected: %f", desc, load); + pcmk__notice("High %s detected: %f", desc, load); return throttle_high; } else if (load > thresholds[1]) { diff --git a/daemons/controld/controld_timers.c b/daemons/controld/controld_timers.c index b64340455f0..e82875a4515 100644 --- a/daemons/controld/controld_timers.c +++ b/daemons/controld/controld_timers.c @@ -186,7 +186,8 @@ crm_timer_popped(gpointer data) } if ((timer == election_timer) && (election_timer->counter > 5)) { - crm_notice("We appear to be in an election loop, something may be wrong"); + pcmk__notice("We appear to be in an election loop, something may be " + "wrong"); crm_write_blackbox(0, NULL); election_timer->counter = 0; } @@ -477,7 +478,7 @@ controld_shutdown_start_countdown(guint default_period_ms) shutdown_escalation_timer->period_ms = default_period_ms; } - crm_notice("Initiating controller shutdown sequence " QB_XS " limit=%ums", + pcmk__notice("Initiating controller shutdown sequence " QB_XS " limit=%ums", shutdown_escalation_timer->period_ms); controld_start_timer(shutdown_escalation_timer); } diff --git a/daemons/controld/controld_transition.c b/daemons/controld/controld_transition.c index 91404b6dc89..7c283807746 100644 --- a/daemons/controld/controld_transition.c +++ b/daemons/controld/controld_transition.c @@ -101,9 +101,9 @@ do_te_invoke(long long action, if (!AM_I_DC || ((controld_globals.fsa_state != S_TRANSITION_ENGINE) && pcmk__is_set(action, A_TE_INVOKE))) { - crm_notice("No need to invoke the TE (%s) in state %s", - fsa_action2string(action), - fsa_state2string(controld_globals.fsa_state)); + pcmk__notice("No need to invoke the TE (%s) in state %s", + fsa_action2string(action), + fsa_state2string(controld_globals.fsa_state)); return; } diff --git a/daemons/controld/pacemaker-controld.c b/daemons/controld/pacemaker-controld.c index 0b2db48f120..f27605f50b0 100644 --- a/daemons/controld/pacemaker-controld.c +++ b/daemons/controld/pacemaker-controld.c @@ -121,7 +121,7 @@ main(int argc, char **argv) pcmk__cli_init_logging(PCMK__SERVER_CONTROLD, args->verbosity); crm_log_init(NULL, LOG_INFO, TRUE, FALSE, argc, argv, FALSE); - crm_notice("Starting Pacemaker controller"); + pcmk__notice("Starting Pacemaker controller"); old_instance = crm_ipc_new(CRM_SYSTEM_CRMD, 0); if (old_instance == NULL) { diff --git a/daemons/execd/cts-exec-helper.c b/daemons/execd/cts-exec-helper.c index 55bff333398..944719ca1a7 100644 --- a/daemons/execd/cts-exec-helper.c +++ b/daemons/execd/cts-exec-helper.c @@ -242,7 +242,7 @@ connection_events(lrmd_event_data_t * event) } else { sleep(1); try_connect(); - crm_notice("Executor client connection failed"); + pcmk__notice("Executor client connection failed"); } } diff --git a/daemons/execd/execd_alerts.c b/daemons/execd/execd_alerts.c index b1c15eb1f87..b0a825f20fc 100644 --- a/daemons/execd/execd_alerts.c +++ b/daemons/execd/execd_alerts.c @@ -80,17 +80,15 @@ alert_complete(svc_action_t *action) if (action->status != PCMK_EXEC_DONE) { const char *reason = services__exit_reason(action); - crm_notice("Could not send alert: %s%s%s%s " QB_XS " client=%s", - pcmk_exec_status_str(action->status), - (reason == NULL)? "" : " (", - (reason == NULL)? "" : reason, - (reason == NULL)? "" : ")", - cb_data->client_id); + pcmk__notice("Could not send alert: %s%s%s%s " QB_XS " client=%s", + pcmk_exec_status_str(action->status), + (reason != NULL)? " (" : "", pcmk__s(reason, ""), + (reason != NULL)? ")" : "", cb_data->client_id); } else if (action->rc != 0) { - crm_notice("Alert [%d] completed but exited with status %d " - QB_XS " client=%s", - action->pid, action->rc, cb_data->client_id); + pcmk__notice("Alert [%d] completed but exited with status %d " + QB_XS " client=%s", + action->pid, action->rc, cb_data->client_id); } else { crm_debug("Alert [%d] completed " QB_XS " client=%s", diff --git a/daemons/execd/execd_commands.c b/daemons/execd/execd_commands.c index 207378da399..118b23463f5 100644 --- a/daemons/execd/execd_commands.c +++ b/daemons/execd/execd_commands.c @@ -938,10 +938,12 @@ action_complete(svc_action_t * action) int time_left = time(NULL) - (cmd->epoch_rcchange + (cmd->timeout_orig/1000)); if (time_left >= 0) { - crm_notice("Giving up on %s %s (rc=%d): monitor pending timeout " - "(first pending notification=%s timeout=%ds)", - cmd->rsc_id, cmd->action, cmd->result.exit_status, - pcmk__trim(ctime(&cmd->epoch_rcchange)), cmd->timeout_orig); + pcmk__notice("Giving up on %s %s (rc=%d): monitor pending " + "timeout (first pending notification=%s " + "timeout=%ds)", + cmd->rsc_id, cmd->action, cmd->result.exit_status, + pcmk__trim(ctime(&cmd->epoch_rcchange)), + cmd->timeout_orig); pcmk__set_result(&(cmd->result), PCMK_OCF_UNKNOWN_ERROR, PCMK_EXEC_TIMEOUT, "Investigate reason for timeout, and adjust " @@ -977,13 +979,13 @@ action_complete(svc_action_t * action) cmd->rsc_id, cmd->action, time_sum, timeout_left, delay); } else { - crm_notice("%s %s failed: %s: Re-scheduling (remaining " - "timeout %s) " QB_XS - " exitstatus=%d elapsed=%dms start_delay=%dms)", - cmd->rsc_id, cmd->action, - crm_exit_str(cmd->result.exit_status), - pcmk__readable_interval(timeout_left), - cmd->result.exit_status, time_sum, delay); + pcmk__notice("%s %s failed: %s: Re-scheduling (remaining timeout " + "%s) " + QB_XS " exitstatus=%d elapsed=%dms start_delay=%dms)", + cmd->rsc_id, cmd->action, + crm_exit_str(cmd->result.exit_status), + pcmk__readable_interval(timeout_left), + cmd->result.exit_status, time_sum, delay); } cmd_reset(cmd); @@ -996,10 +998,10 @@ action_complete(svc_action_t * action) return; } else { - crm_notice("Giving up on %s %s (rc=%d): timeout (elapsed=%dms, remaining=%dms)", - cmd->rsc_id, - (cmd->real_action? cmd->real_action : cmd->action), - cmd->result.exit_status, time_sum, timeout_left); + pcmk__notice("Giving up on %s %s (rc=%d): timeout (elapsed=%dms, " + "remaining=%dms)", + cmd->rsc_id, pcmk__s(cmd->real_action, cmd->action), + cmd->result.exit_status, time_sum, timeout_left); pcmk__set_result(&(cmd->result), PCMK_OCF_UNKNOWN_ERROR, PCMK_EXEC_TIMEOUT, "Investigate reason for timeout, and adjust " @@ -1581,7 +1583,7 @@ process_lrmd_rsc_register(pcmk__client_t *client, uint32_t id, xmlNode *request) pcmk__str_eq(rsc->class, dup->class, pcmk__str_casei) && pcmk__str_eq(rsc->provider, dup->provider, pcmk__str_casei) && pcmk__str_eq(rsc->type, dup->type, pcmk__str_casei)) { - crm_notice("Ignoring duplicate registration of '%s'", rsc->rsc_id); + pcmk__notice("Ignoring duplicate registration of '%s'", rsc->rsc_id); free_rsc(rsc); return rc; } diff --git a/daemons/execd/pacemaker-execd.c b/daemons/execd/pacemaker-execd.c index d8c0f6b00b5..cd165f95aa9 100644 --- a/daemons/execd/pacemaker-execd.c +++ b/daemons/execd/pacemaker-execd.c @@ -324,7 +324,8 @@ lrmd_shutdown(int nsig) */ if (ipc_proxy) { if (shutting_down) { - crm_notice("Waiting for cluster to stop resources before exiting"); + pcmk__notice("Waiting for cluster to stop resources before " + "exiting"); return; } @@ -514,7 +515,7 @@ main(int argc, char **argv, char **envp) start_time = time(NULL); - crm_notice("Starting Pacemaker " EXECD_TYPE " executor"); + pcmk__notice("Starting Pacemaker " EXECD_TYPE " executor"); /* The presence of this variable allegedly controls whether child * processes like httpd will try and use Systemd's sd_notify @@ -554,8 +555,9 @@ main(int argc, char **argv, char **envp) mainloop_add_signal(SIGTERM, lrmd_shutdown); mainloop = g_main_loop_new(NULL, FALSE); - crm_notice("Pacemaker " EXECD_TYPE " executor successfully started and accepting connections"); - crm_notice("OCF resource agent search path is %s", PCMK__OCF_RA_PATH); + pcmk__notice("Pacemaker " EXECD_TYPE " executor successfully started and " + "accepting connections"); + pcmk__notice("OCF resource agent search path is %s", PCMK__OCF_RA_PATH); g_main_loop_run(mainloop); /* should never get here */ diff --git a/daemons/execd/remoted_tls.c b/daemons/execd/remoted_tls.c index 36317379b7d..94e84182c17 100644 --- a/daemons/execd/remoted_tls.c +++ b/daemons/execd/remoted_tls.c @@ -63,7 +63,7 @@ remoted__read_handshake_data(pcmk__client_t *client) client->remote->auth_timeout = 0; pcmk__set_client_flags(client, pcmk__client_tls_handshake_complete); - crm_notice("Remote client connection accepted"); + pcmk__notice("Remote client connection accepted"); /* Now that the handshake is done, see if any client TLS certificate is * close to its expiration date and log if so. If a TLS certificate is not @@ -159,8 +159,8 @@ lrmd_remote_client_destroy(gpointer user_data) return; } - crm_notice("Cleaning up after remote client %s disconnected", - pcmk__client_name(client)); + pcmk__notice("Cleaning up after remote client %s disconnected", + pcmk__client_name(client)); ipc_proxy_remove_provider(client); @@ -248,7 +248,7 @@ lrmd_remote_listen(gpointer data) static void tls_server_dropped(gpointer user_data) { - crm_notice("TLS server session ended"); + pcmk__notice("TLS server session ended"); return; } diff --git a/daemons/fenced/cts-fence-helper.c b/daemons/fenced/cts-fence-helper.c index cd1aac23150..31eaf038397 100644 --- a/daemons/fenced/cts-fence-helper.c +++ b/daemons/fenced/cts-fence-helper.c @@ -136,7 +136,7 @@ st_callback(stonith_t * st, stonith_event_t * e) } desc = stonith__event_description(e); - crm_notice("%s", desc); + pcmk__notice("%s", desc); free(desc); if (expected_notifications) { @@ -147,10 +147,9 @@ st_callback(stonith_t * st, stonith_event_t * e) static void st_global_callback(stonith_t * stonith, stonith_callback_data_t * data) { - crm_notice("Call %d exited %d: %s (%s)", - data->call_id, stonith__exit_status(data), - stonith__execution_status(data), - pcmk__s(stonith__exit_reason(data), "unspecified reason")); + pcmk__notice("Call %d exited %d: %s (%s)", data->call_id, + stonith__exit_status(data), stonith__execution_status(data), + pcmk__s(stonith__exit_reason(data), "unspecified reason")); } static void diff --git a/daemons/fenced/fenced_cib.c b/daemons/fenced/fenced_cib.c index 2b39431ec20..abff8402c0f 100644 --- a/daemons/fenced/fenced_cib.c +++ b/daemons/fenced/fenced_cib.c @@ -498,7 +498,8 @@ update_cib_cache_cb(const char *event, xmlNode * msg) break; case -pcmk_err_diff_resync: case -pcmk_err_diff_failed: - crm_notice("[%s] Patch aborted: %s (%d)", event, pcmk_strerror(rc), rc); + pcmk__notice("[%s] Patch aborted: %s (%d)", event, + pcmk_strerror(rc), rc); pcmk__xml_free(local_cib); local_cib = NULL; break; diff --git a/daemons/fenced/fenced_commands.c b/daemons/fenced/fenced_commands.c index 4a5d498f6f7..e188d81031c 100644 --- a/daemons/fenced/fenced_commands.c +++ b/daemons/fenced/fenced_commands.c @@ -592,10 +592,10 @@ stonith_device_execute(stonith_device_t * device) if (pcmk__str_eq(cmd->action, PCMK_ACTION_REBOOT, pcmk__str_none) && !pcmk__is_set(device->flags, st_device_supports_reboot)) { - crm_notice("Remapping 'reboot' action%s%s using %s to 'off' " - "because agent '%s' does not support reboot", - ((cmd->target == NULL)? "" : " targeting "), - pcmk__s(cmd->target, ""), device->id, device->agent); + pcmk__notice("Remapping 'reboot' action%s%s using %s to 'off' because " + "agent '%s' does not support reboot", + ((cmd->target == NULL)? "" : " targeting "), + pcmk__s(cmd->target, ""), device->id, device->agent); action_str = PCMK_ACTION_OFF; } @@ -719,13 +719,11 @@ schedule_stonith_command(async_command_t * cmd, stonith_device_t * device) } if (cmd->start_delay > 0) { - crm_notice("Delaying '%s' action%s%s using %s for %ds " QB_XS - " timeout=%ds requested_delay=%ds base=%ds max=%ds", - cmd->action, - (cmd->target == NULL)? "" : " targeting ", - pcmk__s(cmd->target, ""), - device->id, cmd->start_delay, cmd->timeout, - requested_delay, delay_base, delay_max); + pcmk__notice("Delaying '%s' action%s%s using %s for %ds " + QB_XS " timeout=%ds requested_delay=%ds base=%ds max=%ds", + cmd->action, (cmd->target == NULL)? "" : " targeting ", + pcmk__s(cmd->target, ""), device->id, cmd->start_delay, + cmd->timeout, requested_delay, delay_base, delay_max); cmd->delay_id = pcmk__create_timer(cmd->start_delay * 1000, start_delay_helper, cmd); } @@ -1262,7 +1260,8 @@ dynamic_list_search_cb(int pid, const pcmk__action_result_t *result, * explicitly specify PCMK_VALUE_DYNAMIC_LIST */ if (g_hash_table_lookup(dev->params, PCMK_STONITH_HOST_CHECK) == NULL) { - crm_notice("Switching to pcmk_host_check='status' for %s", dev->id); + pcmk__notice("Switching to pcmk_host_check='status' for %s", + dev->id); pcmk__insert_dup(dev->params, PCMK_STONITH_HOST_CHECK, PCMK_VALUE_STATUS); } @@ -1431,8 +1430,8 @@ stonith_device_register(xmlNode *dev, gboolean from_cib) g_hash_table_replace(device_list, device->id, device); ndevices = g_hash_table_size(device_list); - crm_notice("Added '%s' to device list (%d active device%s)", - device->id, ndevices, pcmk__plural_s(ndevices)); + pcmk__notice("Added '%s' to device list (%d active device%s)", + device->id, ndevices, pcmk__plural_s(ndevices)); } if (from_cib) { @@ -2164,10 +2163,11 @@ can_fence_host_with_device(stonith_device_t *dev, search->per_device_timeout); if (device_timeout > search->per_device_timeout) { - crm_notice("Since the pcmk_list_timeout (%ds) parameter of %s " - "is larger than " PCMK_OPT_STONITH_TIMEOUT - " (%ds), timeout may occur", - device_timeout, dev_id, search->per_device_timeout); + pcmk__notice("Since the pcmk_list_timeout (%ds) parameter of " + "%s is larger than " PCMK_OPT_STONITH_TIMEOUT " " + "(%ds), timeout may occur", + device_timeout, dev_id, + search->per_device_timeout); } crm_trace("Running '%s' to check whether %s is eligible to fence %s (%s)", @@ -2189,10 +2189,10 @@ can_fence_host_with_device(stonith_device_t *dev, int device_timeout = get_action_timeout(dev, check_type, search->per_device_timeout); if (device_timeout > search->per_device_timeout) { - crm_notice("Since the pcmk_status_timeout (%ds) parameter of %s is " - "larger than " PCMK_OPT_STONITH_TIMEOUT " (%ds), " - "timeout may occur", - device_timeout, dev_id, search->per_device_timeout); + pcmk__notice("Since the pcmk_status_timeout (%ds) parameter of %s " + "is larger than " PCMK_OPT_STONITH_TIMEOUT " (%ds), " + "timeout may occur", + device_timeout, dev_id, search->per_device_timeout); } crm_trace("Running '%s' to check whether %s is eligible to fence %s (%s)", @@ -2715,12 +2715,12 @@ reply_to_duplicates(async_command_t *cmd, const pcmk__action_result_t *result, continue; } - crm_notice("Merging fencing action '%s'%s%s originating from " - "client %s with identical fencing request from client %s", - cmd_other->action, - (cmd_other->target == NULL)? "" : " targeting ", - pcmk__s(cmd_other->target, ""), cmd_other->client_name, - cmd->client_name); + pcmk__notice("Merging fencing action '%s'%s%s originating from client " + "%s with identical fencing request from client %s", + cmd_other->action, + (cmd_other->target == NULL)? "" : " targeting ", + pcmk__s(cmd_other->target, ""), cmd_other->client_name, + cmd->client_name); // Stop tracking the duplicate, send its result, and cancel it cmd_list = g_list_remove_link(cmd_list, iter); @@ -3052,8 +3052,8 @@ check_alternate_host(const char *target) while (g_hash_table_iter_next(&gIter, NULL, (void **)&entry)) { if (fencing_peer_active(entry) && !pcmk__str_eq(entry->name, target, pcmk__str_casei)) { - crm_notice("Forwarding self-fencing request to %s", - entry->name); + pcmk__notice("Forwarding self-fencing request to %s", + entry->name); return entry->name; } } @@ -3274,12 +3274,12 @@ handle_relay_request(pcmk__request_t *request) "//*[@" PCMK__XA_ST_TARGET "]", LOG_TRACE); - crm_notice("Received forwarded fencing request from " - "%s %s to fence (%s) peer %s", - pcmk__request_origin_type(request), - pcmk__request_origin(request), - pcmk__xe_get(dev, PCMK__XA_ST_DEVICE_ACTION), - pcmk__xe_get(dev, PCMK__XA_ST_TARGET)); + pcmk__notice("Received forwarded fencing request from %s %s to fence (%s) " + "peer %s", + pcmk__request_origin_type(request), + pcmk__request_origin(request), + pcmk__xe_get(dev, PCMK__XA_ST_DEVICE_ACTION), + pcmk__xe_get(dev, PCMK__XA_ST_TARGET)); if (initiate_remote_stonith_op(NULL, request->xml, FALSE) == NULL) { fenced_set_protocol_error(&request->result); @@ -3325,9 +3325,9 @@ handle_fence_request(pcmk__request_t *request) if (request->ipc_client != NULL) { int tolerance = 0; - crm_notice("Client %s wants to fence (%s) %s using %s", - pcmk__request_origin(request), action, - target, (device? device : "any device")); + pcmk__notice("Client %s wants to fence (%s) %s using %s", + pcmk__request_origin(request), action, + target, pcmk__s(device, "any device")); pcmk__xe_get_int(dev, PCMK__XA_ST_TOLERANCE, &tolerance); if (stonith_check_fence_tolerance(tolerance, target, action)) { pcmk__set_result(&request->result, CRM_EX_OK, PCMK_EXEC_DONE, @@ -3338,9 +3338,9 @@ handle_fence_request(pcmk__request_t *request) alternate_host = check_alternate_host(target); } else { - crm_notice("Peer %s wants to fence (%s) '%s' with device '%s'", - request->peer, action, target, - (device == NULL)? "(any)" : device); + pcmk__notice("Peer %s wants to fence (%s) '%s' with device '%s'", + request->peer, action, target, + pcmk__s(device, "(any)")); } if (alternate_host != NULL) { diff --git a/daemons/fenced/fenced_remote.c b/daemons/fenced/fenced_remote.c index 65d199512ac..ce752574f2f 100644 --- a/daemons/fenced/fenced_remote.c +++ b/daemons/fenced/fenced_remote.c @@ -559,14 +559,12 @@ finalize_op(remote_fencing_op_t *op, xmlNode *data, bool dup) if (op->notify_sent) { // Most likely, this is a timed-out action that eventually completed - crm_notice("Operation '%s'%s%s by %s for %s@%s%s: " - "Result arrived too late " QB_XS " id=%.8s", - op->action, (op->target? " targeting " : ""), - (op->target? op->target : ""), - (op->delegate? op->delegate : "unknown node"), - op->client_name, op->originator, - (op_merged? " (merged)" : ""), - op->id); + pcmk__notice("Operation '%s'%s%s by %s for %s@%s%s: Result arrive too " + "late " QB_XS " id=%.8s", + op->action, (op->target? " targeting " : ""), + pcmk__s(op->target, ""), + pcmk__s(op->delegate, "unknown node"), op->client_name, + op->originator, (op_merged? " (merged)" : ""), op->id); return; } @@ -662,9 +660,9 @@ remote_op_watchdog_done(gpointer userdata) op->op_timer_one = 0; - crm_notice("Self-fencing (%s) by %s for %s assumed complete " - QB_XS " id=%.8s", - op->action, op->target, op->client_name, op->id); + pcmk__notice("Self-fencing (%s) by %s for %s assumed complete " + QB_XS " id=%.8s", + op->action, op->target, op->client_name, op->id); op->state = st_done; pcmk__set_result(&op->result, CRM_EX_OK, PCMK_EXEC_DONE, NULL); finalize_op(op, NULL, false); @@ -678,8 +676,9 @@ remote_op_timeout_one(gpointer userdata) op->op_timer_one = 0; - crm_notice("Peer's '%s' action targeting %s for client %s timed out " QB_XS - " id=%.8s", op->action, op->target, op->client_name, op->id); + pcmk__notice("Peer's '%s' action targeting %s for client %s timed out " + QB_XS " id=%.8s", + op->action, op->target, op->client_name, op->id); pcmk__set_result(&op->result, CRM_EX_ERROR, PCMK_EXEC_TIMEOUT, "Peer did not return fence result within timeout"); @@ -877,7 +876,8 @@ topology_matches(const stonith_topology_t *tp, const char *node) * is received, then the topology will be unable to be used. */ if (node_has_attr(node, tp->target_attribute, tp->target_value)) { - crm_notice("Matched %s with %s by attribute", node, tp->target); + pcmk__notice("Matched %s with %s by attribute", node, + tp->target); return TRUE; } break; @@ -893,7 +893,8 @@ topology_matches(const stonith_topology_t *tp, const char *node) regfree(&r_patt); if (status == 0) { - crm_notice("Matched %s with %s by name", node, tp->target); + pcmk__notice("Matched %s with %s by name", node, + tp->target); return TRUE; } } @@ -1051,10 +1052,10 @@ merge_duplicates(remote_fencing_op_t *op) pcmk__node_search_cluster_member); if (!fencing_peer_active(node)) { - crm_notice("Failing action '%s' targeting %s originating from " - "client %s@%s: Originator is dead " QB_XS " id=%.8s", - other->action, other->target, other->client_name, - other->originator, other->id); + pcmk__notice("Failing action '%s' targeting %s originating from " + "client %s@%s: Originator is dead " QB_XS " id=%.8s", + other->action, other->target, other->client_name, + other->originator, other->id); crm_trace("%.8s not duplicate of %.8s: originator dead", op->id, other->id); other->state = st_failed; @@ -1078,12 +1079,12 @@ merge_duplicates(remote_fencing_op_t *op) crm_trace("Best guess as to timeout used for %.8s: %ds", other->id, other->total_timeout); } - crm_notice("Merging fencing action '%s' targeting %s originating from " - "client %s with identical request from %s@%s " - QB_XS " original=%.8s duplicate=%.8s total_timeout=%ds", - op->action, op->target, op->client_name, - other->client_name, other->originator, - op->id, other->id, other->total_timeout); + pcmk__notice("Merging fencing action '%s' targeting %s originating " + "from client %s with identical request from %s@%s " + QB_XS " original=%.8s duplicate=%.8s total_timeout=%ds", + op->action, op->target, op->client_name, + other->client_name, other->originator, + op->id, other->id, other->total_timeout); report_timeout_period(op, other->total_timeout); op->state = st_duplicate; } @@ -1123,9 +1124,9 @@ fenced_handle_manual_confirmation(const pcmk__client_t *client, xmlNode *msg) CRM_CHECK(dev != NULL, return EPROTO); - crm_notice("Received manual confirmation that %s has been fenced", - pcmk__s(pcmk__xe_get(dev, PCMK__XA_ST_TARGET), - "unknown target")); + pcmk__notice("Received manual confirmation that %s has been fenced", + pcmk__s(pcmk__xe_get(dev, PCMK__XA_ST_TARGET), + "unknown target")); op = initiate_remote_stonith_op(client, msg, TRUE); if (op == NULL) { return EPROTO; @@ -1342,10 +1343,10 @@ initiate_remote_stonith_op(const pcmk__client_t *client, xmlNode *request, return op; default: - crm_notice("Requesting peer fencing (%s) targeting %s " - QB_XS " id=%.8s state=%s base_timeout=%ds", - op->action, op->target, op->id, - stonith_op_state_str(op->state), op->base_timeout); + pcmk__notice("Requesting peer fencing (%s) targeting %s " + QB_XS " id=%.8s state=%s base_timeout=%ds", + op->action, op->target, op->id, + stonith_op_state_str(op->state), op->base_timeout); } query = stonith_create_op(op->client_callid, op->id, STONITH_OP_QUERY, @@ -1498,8 +1499,8 @@ stonith_choose_peer(remote_fencing_op_t * op) op->target); /* check_watchdog_fencing_and_wait will log additional info */ } else { - crm_notice("Couldn't find anyone to fence (%s) %s using %s", - op->action, op->target, (device? device : "any device")); + pcmk__notice("Couldn't find anyone to fence (%s) %s using %s", + op->action, op->target, pcmk__s(device, "any device")); } return NULL; } @@ -1837,10 +1838,10 @@ check_watchdog_fencing_and_wait(remote_fencing_op_t * op) if (node_does_watchdog_fencing(op->target)) { guint timeout_ms = QB_MIN(stonith_watchdog_timeout_ms, UINT_MAX); - crm_notice("Waiting %s for %s to self-fence (%s) for " - "client %s " QB_XS " id=%.8s", - pcmk__readable_interval(timeout_ms), op->target, op->action, - op->client_name, op->id); + pcmk__notice("Waiting %s for %s to self-fence (%s) for client %s " + QB_XS " id=%.8s", + pcmk__readable_interval(timeout_ms), op->target, + op->action, op->client_name, op->id); if (op->op_timer_one) { g_source_remove(op->op_timer_one); @@ -1965,19 +1966,19 @@ request_peer_fencing(remote_fencing_op_t *op, peer_device_info_t *peer) if (device) { timeout_one += TIMEOUT_MULTIPLY_FACTOR * get_device_timeout(op, peer, device, true); - crm_notice("Requesting that %s perform '%s' action targeting %s " - "using %s " QB_XS " for client %s (%ds)", - peer->host, op->action, op->target, device, - op->client_name, timeout_one); + pcmk__notice("Requesting that %s perform '%s' action targeting %s " + "using %s " QB_XS " for client %s (%ds)", + peer->host, op->action, op->target, device, + op->client_name, timeout_one); pcmk__xe_set(remote_op, PCMK__XA_ST_DEVICE_ID, device); } else { timeout_one += TIMEOUT_MULTIPLY_FACTOR * get_peer_timeout(op, peer); - crm_notice("Requesting that %s perform '%s' action targeting %s " - QB_XS " for client %s (%ds, %s)", - peer->host, op->action, op->target, op->client_name, - timeout_one, - pcmk__readable_interval(stonith_watchdog_timeout_ms)); + pcmk__notice("Requesting that %s perform '%s' action targeting %s " + QB_XS " for client %s (%ds, %s)", + peer->host, op->action, op->target, op->client_name, + timeout_one, + pcmk__readable_interval(stonith_watchdog_timeout_ms)); } op->state = st_exec; @@ -2545,17 +2546,14 @@ fenced_process_fencing_reply(xmlNode *msg) op->target); pcmk__set_result(&op->result, CRM_EX_OK, PCMK_EXEC_DONE, NULL); } else { - crm_notice("Action '%s' targeting %s%s%s on behalf of %s@%s: " - "%s%s%s%s", - op->action, op->target, - ((device == NULL)? "" : " using "), - ((device == NULL)? "" : device), - op->client_name, - op->originator, - pcmk_exec_status_str(op->result.execution_status), - (reason == NULL)? "" : " (", - (reason == NULL)? "" : reason, - (reason == NULL)? "" : ")"); + pcmk__notice("Action '%s' targeting %s%s%s on behalf of %s@%s: " + "%s%s%s%s", + op->action, op->target, + ((device == NULL)? "" : " using "), + pcmk__s(device, ""), op->client_name, op->originator, + pcmk_exec_status_str(op->result.execution_status), + ((reason != NULL)? " (" : ""), pcmk__s(reason, ""), + ((reason != NULL)? ")" : "")); } if (pcmk__result_ok(&op->result)) { @@ -2623,8 +2621,9 @@ stonith_check_fence_tolerance(int tolerance, const char *target, const char *act continue; } - crm_notice("Target %s was fenced (%s) less than %ds ago by %s on behalf of %s", - target, action, tolerance, rop->delegate, rop->originator); + pcmk__notice("Target %s was fenced (%s) less than %ds ago by %s on " + "behalf of %s", + target, action, tolerance, rop->delegate, rop->originator); return TRUE; } return FALSE; diff --git a/daemons/fenced/pacemaker-fenced.c b/daemons/fenced/pacemaker-fenced.c index 19756a4e313..848f6bc95df 100644 --- a/daemons/fenced/pacemaker-fenced.c +++ b/daemons/fenced/pacemaker-fenced.c @@ -577,7 +577,7 @@ main(int argc, char **argv) crm_log_init(NULL, LOG_INFO + args->verbosity, TRUE, (args->verbosity > 0), argc, argv, FALSE); - crm_notice("Starting Pacemaker fencer"); + pcmk__notice("Starting Pacemaker fencer"); old_instance = crm_ipc_new("stonith-ng", 0); if (old_instance == NULL) { @@ -643,7 +643,8 @@ main(int argc, char **argv) // Create the mainloop and run it... mainloop = g_main_loop_new(NULL, FALSE); - crm_notice("Pacemaker fencer successfully started and accepting connections"); + pcmk__notice("Pacemaker fencer successfully started and accepting " + "connections"); g_main_loop_run(mainloop); done: diff --git a/daemons/pacemakerd/pacemakerd.c b/daemons/pacemakerd/pacemakerd.c index d8a497a2a1c..128d9a3276d 100644 --- a/daemons/pacemakerd/pacemakerd.c +++ b/daemons/pacemakerd/pacemakerd.c @@ -195,16 +195,16 @@ remove_core_file_limit(void) // Get current limits if (getrlimit(RLIMIT_CORE, &cores) < 0) { - crm_notice("Unable to check system core file limits " - "(consider ensuring the size is unlimited): %s", - strerror(errno)); + pcmk__notice("Unable to check system core file limits (consider " + "ensuring the size is unlimited): %s", + strerror(errno)); return; } // Check whether core dumps are disabled if (cores.rlim_max == 0) { if (geteuid() != 0) { // Yes, and there's nothing we can do about it - crm_notice("Core dumps are disabled (consider enabling them)"); + pcmk__notice("Core dumps are disabled (consider enabling them)"); return; } cores.rlim_max = RLIM_INFINITY; // Yes, but we're root, so enable them @@ -214,9 +214,9 @@ remove_core_file_limit(void) if (cores.rlim_cur != cores.rlim_max) { cores.rlim_cur = cores.rlim_max; if (setrlimit(RLIMIT_CORE, &cores) < 0) { - crm_notice("Unable to raise system limit on core file size " - "(consider doing so manually): %s", - strerror(errno)); + pcmk__notice("Unable to raise system limit on core file size " + "(consider doing so manually): %s", + strerror(errno)); return; } } @@ -410,8 +410,8 @@ main(int argc, char **argv) } } - crm_notice("Starting Pacemaker %s " QB_XS " build=%s features:%s", - PACEMAKER_VERSION, BUILD_VERSION, CRM_FEATURES); + pcmk__notice("Starting Pacemaker " PACEMAKER_VERSION " " + QB_XS " build=" BUILD_VERSION " features:" CRM_FEATURES); mainloop = g_main_loop_new(NULL, FALSE); remove_core_file_limit(); @@ -445,7 +445,7 @@ main(int argc, char **argv) mainloop_add_signal(SIGINT, pcmk_shutdown); if ((running_with_sbd) && pcmk__get_sbd_sync_resource_startup()) { - crm_notice("Waiting for startup-trigger from SBD."); + pcmk__notice("Waiting for startup-trigger from SBD"); pacemakerd_state = PCMK__VALUE_WAIT_FOR_PING; startup_trigger = mainloop_add_trigger(G_PRIORITY_HIGH, init_children_processes, NULL); } else { @@ -458,7 +458,8 @@ main(int argc, char **argv) init_children_processes(NULL); } - crm_notice("Pacemaker daemon successfully started and accepting connections"); + pcmk__notice("Pacemaker daemon successfully started and accepting " + "connections"); g_main_loop_run(mainloop); if (ipcs) { diff --git a/daemons/pacemakerd/pcmkd_corosync.c b/daemons/pacemakerd/pcmkd_corosync.c index 2656d5869bb..3cc1aba6dc8 100644 --- a/daemons/pacemakerd/pcmkd_corosync.c +++ b/daemons/pacemakerd/pcmkd_corosync.c @@ -82,7 +82,7 @@ cluster_reconnect_cb(gpointer data) if (cluster_connect_cfg()) { mainloop_timer_del(reconnect_timer); reconnect_timer = NULL; - crm_notice("Cluster reconnect succeeded"); + pcmk__notice("Cluster reconnect succeeded"); pacemakerd_read_config(); restart_cluster_subdaemons(); return G_SOURCE_REMOVE; diff --git a/daemons/pacemakerd/pcmkd_messages.c b/daemons/pacemakerd/pcmkd_messages.c index 39bb40b98a3..8b5d699ccd7 100644 --- a/daemons/pacemakerd/pcmkd_messages.c +++ b/daemons/pacemakerd/pcmkd_messages.c @@ -76,14 +76,14 @@ handle_ping_request(pcmk__request_t *request) if (pcmk__str_eq(pacemakerd_state, PCMK__VALUE_SHUTDOWN_COMPLETE, pcmk__str_none)) { if (pcmk__get_sbd_sync_resource_startup()) { - crm_notice("Shutdown-complete-state passed to SBD."); + pcmk__notice("Shutdown-complete-state passed to SBD"); } shutdown_complete_state_reported_to = request->ipc_client->pid; } else if (pcmk__str_eq(pacemakerd_state, PCMK__VALUE_WAIT_FOR_PING, pcmk__str_none)) { - crm_notice("Received startup-trigger from SBD."); + pcmk__notice("Received startup-trigger from SBD"); pacemakerd_state = PCMK__VALUE_STARTING_DAEMONS; mainloop_set_trigger(startup_trigger); } @@ -113,9 +113,9 @@ handle_shutdown_request(pcmk__request_t *request) shutdown = pcmk__xe_create(NULL, PCMK__XE_SHUTDOWN); if (allowed) { - crm_notice("Shutting down in response to IPC request %s from %s", - pcmk__xe_get(msg, PCMK_XA_REFERENCE), - pcmk__xe_get(msg, PCMK_XA_ORIGIN)); + pcmk__notice("Shutting down in response to IPC request %s from %s", + pcmk__xe_get(msg, PCMK_XA_REFERENCE), + pcmk__xe_get(msg, PCMK_XA_ORIGIN)); pcmk__xe_set_int(shutdown, PCMK__XA_OP_STATUS, CRM_EX_OK); } else { pcmk__warn("Ignoring shutdown request from unprivileged client %s", diff --git a/daemons/pacemakerd/pcmkd_subdaemons.c b/daemons/pacemakerd/pcmkd_subdaemons.c index 7b8c7df4f22..9832c918ee4 100644 --- a/daemons/pacemakerd/pcmkd_subdaemons.c +++ b/daemons/pacemakerd/pcmkd_subdaemons.c @@ -161,10 +161,10 @@ check_next_subdaemon(gpointer user_data) child->check_count = 0; } } else { - crm_notice("Subdaemon %s[%lld] is unresponsive to IPC " - "after %d attempt%s (will recheck later)", - name, pid, child->check_count, - pcmk__plural_s(child->check_count)); + pcmk__notice("Subdaemon %s[%lld] is unresponsive to IPC after " + "%d attempt%s (will recheck later)", + name, pid, child->check_count, + pcmk__plural_s(child->check_count)); if (pcmk__is_set(child->flags, child_respawn)) { /* as long as the respawn-limit isn't reached and we haven't run out of connect retries @@ -199,7 +199,7 @@ check_next_subdaemon(gpointer user_data) pcmk__err("Subdaemon %s[%lld] terminated", name, pid); } else { /* orderly shutdown */ - crm_notice("Subdaemon %s[%lld] terminated", name, pid); + pcmk__notice("Subdaemon %s[%lld] terminated", name, pid); } pcmk_process_exit(child); break; @@ -319,12 +319,12 @@ pcmk_process_exit(pcmkd_child_t * child) } else if (pcmk__is_set(child->flags, child_needs_cluster) && !pcmkd_cluster_connected()) { - crm_notice("Not respawning subdaemon %s until cluster returns", name); + pcmk__notice("Not respawning subdaemon %s until cluster returns", name); child->flags |= child_needs_retry; } else { // cts-lab looks for this message - crm_notice("Respawning subdaemon %s after unexpected exit", name); + pcmk__notice("Respawning subdaemon %s after unexpected exit", name); start_child(child); } } @@ -336,7 +336,7 @@ pcmk_shutdown_worker(gpointer user_data) static time_t next_log = 0; if (phase == PCMK__NELEM(pcmk_children) - 1) { - crm_notice("Shutting down Pacemaker"); + pcmk__notice("Shutting down Pacemaker"); pacemakerd_state = PCMK__VALUE_SHUTTING_DOWN; } @@ -366,8 +366,9 @@ pcmk_shutdown_worker(gpointer user_data) } else if (now >= next_log) { next_log = now + 30; - crm_notice("Still waiting for subdaemon %s to terminate " - QB_XS " pid=%lld", name, (long long) child->pid); + pcmk__notice("Still waiting for subdaemon %s to terminate " + QB_XS " pid=%lld", + name, (long long) child->pid); } return TRUE; } @@ -377,19 +378,19 @@ pcmk_shutdown_worker(gpointer user_data) child->pid = 0; } - crm_notice("Shutdown complete"); + pcmk__notice("Shutdown complete"); pacemakerd_state = PCMK__VALUE_SHUTDOWN_COMPLETE; if (!fatal_error && running_with_sbd && pcmk__get_sbd_sync_resource_startup() && !shutdown_complete_state_reported_client_closed) { - crm_notice("Waiting for SBD to pick up shutdown-complete-state."); + pcmk__notice("Waiting for SBD to pick up shutdown-complete-state."); return TRUE; } g_main_loop_quit(mainloop); if (fatal_error) { - crm_notice("Shutting down and staying down after fatal error"); + pcmk__notice("Shutting down and staying down after fatal error"); #if SUPPORT_COROSYNC pcmkd_shutdown_corosync(); #endif @@ -740,15 +741,16 @@ find_and_track_existing_processes(void) ipc_name); return EOPNOTSUPP; } else if (pcmk_children[i].respawn_count == WAIT_TRIES) { - crm_notice("Assuming pre-existing authentic, though" - " on this platform untrackable, process" - " behind %s IPC is stable (was in %d" - " previous samples) so rather than" - " bailing out (PCMK_" PCMK__ENV_FAIL_FAST - " not requested), we just switch to a" - " less optimal IPC liveness monitoring" - " (not very suitable for heavy load)", - name, WAIT_TRIES - 1); + pcmk__notice("Assuming pre-existing authentic, " + "though on this platform untrackable, " + "process behind %s IPC is stable (was " + "in %d previous samples) so rather " + "than bailing out (PCMK_" + PCMK__ENV_FAIL_FAST " not requested), " + "we just switch to a less optimal IPC " + "liveness monitoring (not very " + "suitable for heavy load)", + name, (WAIT_TRIES - 1)); pcmk__warn("The process behind %s IPC cannot be" " terminated, so the overall shutdown" " will get delayed implicitly (%ld s)," @@ -770,8 +772,8 @@ find_and_track_existing_processes(void) continue; } } - crm_notice("Tracking existing %s process (pid=%lld)", - name, child_pid); + pcmk__notice("Tracking existing %s process (pid=%lld)", + name, child_pid); pcmk_children[i].respawn_count = -1; /* 0~keep watching */ pcmk_children[i].flags |= child_active_before_startup; break; @@ -858,8 +860,8 @@ restart_cluster_subdaemons(void) continue; } - crm_notice("Respawning cluster-based subdaemon %s", - pcmk__server_name(pcmk_children[i].server)); + pcmk__notice("Respawning cluster-based subdaemon %s", + pcmk__server_name(pcmk_children[i].server)); if (start_child(&pcmk_children[i])) { pcmk_children[i].flags &= ~child_needs_retry; } @@ -892,9 +894,9 @@ stop_child(pcmkd_child_t *child, int signal) errno = 0; if (kill(child->pid, signal) == 0) { - crm_notice("Stopping subdaemon %s " - QB_XS " via signal %d to process %lld", - name, signal, (long long) child->pid); + pcmk__notice("Stopping subdaemon %s " + QB_XS " via signal %d to process %lld", + name, signal, (long long) child->pid); } else { pcmk__err("Could not stop subdaemon %s[%lld] with signal %d: %s", name, (long long) child->pid, signal, strerror(errno)); diff --git a/daemons/schedulerd/pacemaker-schedulerd.c b/daemons/schedulerd/pacemaker-schedulerd.c index 3ce758656f3..9e28de5ef69 100644 --- a/daemons/schedulerd/pacemaker-schedulerd.c +++ b/daemons/schedulerd/pacemaker-schedulerd.c @@ -136,7 +136,7 @@ main(int argc, char **argv) pcmk__cli_init_logging(PCMK__SERVER_SCHEDULERD, args->verbosity); crm_log_init(NULL, LOG_INFO, TRUE, FALSE, argc, argv, FALSE); - crm_notice("Starting Pacemaker scheduler"); + pcmk__notice("Starting Pacemaker scheduler"); if (pcmk__daemon_can_write(PCMK_SCHEDULER_INPUT_DIR, NULL) == FALSE) { pcmk__err("Terminating due to bad permissions on " @@ -167,7 +167,8 @@ main(int argc, char **argv) /* Create the mainloop and run it... */ mainloop = g_main_loop_new(NULL, FALSE); - crm_notice("Pacemaker scheduler successfully started and accepting connections"); + pcmk__notice("Pacemaker scheduler successfully started and accepting " + "connections"); g_main_loop_run(mainloop); done: diff --git a/include/crm/common/logging_internal.h b/include/crm/common/logging_internal.h index 2b86eb0f444..5056a4c7fad 100644 --- a/include/crm/common/logging_internal.h +++ b/include/crm/common/logging_internal.h @@ -56,6 +56,15 @@ extern "C" { */ #define pcmk__warn(fmt, args...) qb_log(LOG_WARNING, fmt, ##args) +/*! + * \internal + * \brief Log a message at \c LOG_NOTICE level + * + * \param[in] fmt \c printf() format string for log message + * \param[in] args Format string arguments + */ +#define pcmk__notice(fmt, args...) qb_log(LOG_NOTICE, fmt, ##args) + /* Some warnings are too noisy when logged every time a given function is called * (for example, using a deprecated feature). As an alternative, we allow * warnings to be logged once per invocation of the calling program. Each of diff --git a/lib/cluster/cluster.c b/lib/cluster/cluster.c index 69bcc6da82d..36969773452 100644 --- a/lib/cluster/cluster.c +++ b/lib/cluster/cluster.c @@ -89,7 +89,7 @@ pcmk_cluster_connect(pcmk_cluster_t *cluster) } // cts-lab looks for this message - crm_notice("Connecting to %s cluster layer", cluster_layer_s); + pcmk__notice("Connecting to %s cluster layer", cluster_layer_s); switch (cluster_layer) { #if SUPPORT_COROSYNC @@ -259,9 +259,9 @@ pcmk__cluster_node_name(uint32_t nodeid) if (nodeid == 0) { struct utsname hostinfo; - crm_notice("Could not get local node name from %s cluster layer, " - "defaulting to local hostname", - cluster_layer_s); + pcmk__notice("Could not get local node name from %s cluster layer, " + "defaulting to local hostname", + cluster_layer_s); if (uname(&hostinfo) < 0) { // @TODO Maybe let the caller decide what to do @@ -271,9 +271,9 @@ pcmk__cluster_node_name(uint32_t nodeid) return pcmk__str_copy(hostinfo.nodename); } - crm_notice("Could not obtain a node name for node with " - PCMK_XA_ID "=" PRIu32, - nodeid); + pcmk__notice("Could not obtain a node name for node with " + PCMK_XA_ID "=" PRIu32, + nodeid); return NULL; } @@ -405,9 +405,9 @@ pcmk_get_cluster_layer(void) #endif // SUPPORT_COROSYNC if (cluster_layer == pcmk_cluster_layer_invalid) { - crm_notice("This installation does not support the '%s' cluster " - "infrastructure: terminating", - cluster); + pcmk__notice("This installation does not support the '%s' cluster " + "infrastructure: terminating", + cluster); crm_exit(CRM_EX_FATAL); } crm_info("Assuming an active '%s' cluster", cluster); @@ -422,7 +422,7 @@ pcmk_get_cluster_layer(void) #endif // SUPPORT_COROSYNC if (cluster_layer == pcmk_cluster_layer_unknown) { - crm_notice("Could not determine the current cluster layer"); + pcmk__notice("Could not determine the current cluster layer"); } else { crm_info("Detected an active '%s' cluster", pcmk_cluster_layer_text(cluster_layer)); diff --git a/lib/cluster/corosync.c b/lib/cluster/corosync.c index 487b8f13aa4..5e982b25f6e 100644 --- a/lib/cluster/corosync.c +++ b/lib/cluster/corosync.c @@ -229,7 +229,7 @@ pcmk__corosync_disconnect(pcmk_cluster_t *cluster) quorum_finalize(pcmk_quorum_handle); pcmk_quorum_handle = 0; } - crm_notice("Disconnected from Corosync"); + pcmk__notice("Disconnected from Corosync"); } /*! @@ -278,9 +278,9 @@ quorum_notification_cb(quorum_handle_t handle, uint32_t quorate, bool was_quorate = pcmk__cluster_has_quorum(); if (is_quorate && !was_quorate) { - crm_notice("Quorum acquired " QB_XS " membership=%" PRIu64 - " members=%" PRIu32, - ring_id, view_list_entries); + pcmk__notice("Quorum acquired " QB_XS " membership=%" PRIu64 + " members=%" PRIu32, + ring_id, view_list_entries); pcmk__cluster_set_quorum(true); } else if (!is_quorate && was_quorate) { @@ -426,7 +426,7 @@ pcmk__corosync_quorum_connect(gboolean (*dispatch)(unsigned long long, } if (quorate) { - crm_notice("Quorum acquired"); + pcmk__notice("Quorum acquired"); } else { pcmk__warn("No quorum"); } diff --git a/lib/cluster/membership.c b/lib/cluster/membership.c index d35ffdd1ce8..fdf868458d8 100644 --- a/lib/cluster/membership.c +++ b/lib/cluster/membership.c @@ -493,13 +493,13 @@ pcmk__cluster_forget_cluster_node(uint32_t id, const char *node_name) should_forget_cluster_node, &search); if (matches > 0) { if (criterion != NULL) { - crm_notice("Removed %u inactive node%s with %s from the membership " - "cache", - matches, pcmk__plural_s(matches), criterion); + pcmk__notice("Removed %u inactive node%s with %s from the " + "membership cache", + matches, pcmk__plural_s(matches), criterion); } else { - crm_notice("Removed all (%u) inactive cluster nodes from the " - "membership cache", - matches); + pcmk__notice("Removed all (%u) inactive cluster nodes from the " + "membership cache", + matches); } } else { @@ -760,10 +760,10 @@ search_cluster_member_cache(unsigned int id, const char *uname, } else if ((uname != NULL) && (by_id->name != NULL)) { if (pcmk__str_eq(uname, by_id->name, pcmk__str_casei)) { - crm_notice("Node '%s' has changed its cluster layer ID " - "from %" PRIu32 " to %" PRIu32, - by_id->name, by_name->cluster_layer_id, - by_id->cluster_layer_id); + pcmk__notice("Node '%s' has changed its cluster layer ID " + "from %" PRIu32 " to %" PRIu32, + by_id->name, by_name->cluster_layer_id, + by_id->cluster_layer_id); g_hash_table_foreach_remove(pcmk__peer_cache, hash_find_by_data, by_name); @@ -1293,10 +1293,10 @@ update_peer_state_iter(const char *source, pcmk__node_status_t *node, } node->state = strdup(state); - crm_notice("Node %s state is now %s " QB_XS - " nodeid=%" PRIu32 " previous=%s source=%s", - node->name, state, node->cluster_layer_id, - pcmk__s(last, "unknown"), source); + pcmk__notice("Node %s state is now %s " + QB_XS " nodeid=%" PRIu32 " previous=%s source=%s", + node->name, state, node->cluster_layer_id, + pcmk__s(last, "unknown"), source); if (peer_status_callback != NULL) { peer_status_callback(pcmk__node_update_state, node, last); } @@ -1309,9 +1309,9 @@ update_peer_state_iter(const char *source, pcmk__node_status_t *node, * refresh_remote_nodes(). */ if(iter) { - crm_notice("Purged 1 peer with cluster layer ID %" PRIu32 - "and/or name=%s from the membership cache", - node->cluster_layer_id, node->name); + pcmk__notice("Purged 1 peer with cluster layer ID %" PRIu32 + "and/or name=%s from the membership cache", + node->cluster_layer_id, node->name); g_hash_table_iter_remove(iter); } else { diff --git a/lib/common/acl.c b/lib/common/acl.c index 172d742b4a2..ce0fe9b51b8 100644 --- a/lib/common/acl.c +++ b/lib/common/acl.c @@ -653,10 +653,12 @@ pcmk__apply_creation_acl(xmlNode *xml, bool check_top) return; } else { - crm_notice("ACLs would disallow creation of %s<%s> with " - PCMK_XA_ID "=\"%s\"", - ((xml == xmlDocGetRootElement(xml->doc))? "root element " : ""), - xml->name, display_id(xml)); + const bool is_root = (xml == xmlDocGetRootElement(xml->doc)); + + pcmk__notice("ACLs would disallow creation of %s<%s> with " + PCMK_XA_ID "=\"%s\"", + (is_root? "root element " : ""), xml->name, + display_id(xml)); } } diff --git a/lib/common/io.c b/lib/common/io.c index e311c111c7e..2e84c4c976e 100644 --- a/lib/common/io.c +++ b/lib/common/io.c @@ -253,22 +253,22 @@ pcmk__daemon_user_can_write(const char *target_name, struct stat *target_stat) int rc = pcmk__daemon_user(&daemon_uid, NULL); if (rc != pcmk_rc_ok) { - crm_notice("Could not find user '" CRM_DAEMON_USER "': %s", - pcmk_rc_str(rc)); + pcmk__notice("Could not find user '" CRM_DAEMON_USER "': %s", + pcmk_rc_str(rc)); return FALSE; } if (target_stat->st_uid != daemon_uid) { - crm_notice("%s is not owned by user '" CRM_DAEMON_USER "' " - QB_XS " uid %lld != %lld", - target_name, (long long) daemon_uid, - (long long) target_stat->st_uid); + pcmk__notice("%s is not owned by user '" CRM_DAEMON_USER "' " + QB_XS " uid %lld != %lld", + target_name, (long long) daemon_uid, + (long long) target_stat->st_uid); return FALSE; } if ((target_stat->st_mode & (S_IRUSR | S_IWUSR)) == 0) { - crm_notice("%s is not readable and writable by user %s " - QB_XS " st_mode=0%lo", - target_name, CRM_DAEMON_USER, - (unsigned long) target_stat->st_mode); + pcmk__notice("%s is not readable and writable by user %s " + QB_XS " st_mode=0%lo", + target_name, CRM_DAEMON_USER, + (unsigned long) target_stat->st_mode); return FALSE; } return TRUE; @@ -281,24 +281,24 @@ pcmk__daemon_group_can_write(const char *target_name, struct stat *target_stat) int rc = pcmk__daemon_user(NULL, &daemon_gid); if (rc != pcmk_rc_ok) { - crm_notice("Could not find group '" CRM_DAEMON_GROUP "': %s", - pcmk_rc_str(rc)); + pcmk__notice("Could not find group '" CRM_DAEMON_GROUP "': %s", + pcmk_rc_str(rc)); return FALSE; } if (target_stat->st_gid != daemon_gid) { - crm_notice("%s is not owned by group '" CRM_DAEMON_GROUP "' " - QB_XS " gid %lld != %lld", - target_name, (long long) daemon_gid, - (long long) target_stat->st_gid); + pcmk__notice("%s is not owned by group '" CRM_DAEMON_GROUP "' " + QB_XS " gid %lld != %lld", + target_name, (long long) daemon_gid, + (long long) target_stat->st_gid); return FALSE; } if ((target_stat->st_mode & (S_IRGRP | S_IWGRP)) == 0) { - crm_notice("%s is not readable and writable by group %s " - QB_XS " st_mode=0%lo", - target_name, CRM_DAEMON_GROUP, - (unsigned long) target_stat->st_mode); + pcmk__notice("%s is not readable and writable by group %s " + QB_XS " st_mode=0%lo", + target_name, CRM_DAEMON_GROUP, + (unsigned long) target_stat->st_mode); return FALSE; } return TRUE; @@ -336,7 +336,7 @@ pcmk__daemon_can_write(const char *dir, const char *file) s_res = stat(full_file, &buf); if (s_res < 0) { - crm_notice("%s not found: %s", target, pcmk_rc_str(errno)); + pcmk__notice("%s not found: %s", target, pcmk_rc_str(errno)); free(full_file); full_file = NULL; target = NULL; diff --git a/lib/common/ipc_client.c b/lib/common/ipc_client.c index 3af25ca22e3..4d603162f1b 100644 --- a/lib/common/ipc_client.c +++ b/lib/common/ipc_client.c @@ -973,8 +973,8 @@ crm_ipc_destroy(crm_ipc_t * client) { if (client) { if (client->ipc && qb_ipcc_is_connected(client->ipc)) { - crm_notice("Destroying active %s IPC connection", - client->server_name); + pcmk__notice("Destroying active %s IPC connection", + client->server_name); /* The next line is basically unsafe * * If this connection was attached to mainloop and mainloop is active, @@ -1307,14 +1307,14 @@ crm_ipc_send(crm_ipc_t *client, const xmlNode *message, pcmk__ipc_header_t *header; if (client == NULL) { - crm_notice("Can't send IPC request without connection (bug?): %.100s", - message); + pcmk__notice("Can't send IPC request without connection (bug?): %.100s", + message); return -ENOTCONN; } else if (!crm_ipc_connected(client)) { /* Don't even bother */ - crm_notice("Can't send %s IPC requests: Connection closed", - client->server_name); + pcmk__notice("Can't send %s IPC requests: Connection closed", + client->server_name); return -ENOTCONN; } @@ -1330,8 +1330,9 @@ crm_ipc_send(crm_ipc_t *client, const xmlNode *message, return -EALREADY; } else { - crm_notice("Sending %s IPC re-enabled after pending reply received", - client->server_name); + pcmk__notice("Sending %s IPC re-enabled after pending reply " + "received", + client->server_name); client->need_reply = FALSE; } } @@ -1355,10 +1356,11 @@ crm_ipc_send(crm_ipc_t *client, const xmlNode *message, if(header->size_compressed) { if(factor < 10 && (client->max_buf_size / 10) < (bytes / factor)) { - crm_notice("Compressed message exceeds %d0%% of configured IPC " - "limit (%u bytes); consider setting PCMK_ipc_buffer to " - "%u or higher", - factor, client->max_buf_size, 2 * client->max_buf_size); + pcmk__notice("Compressed message exceeds %d0%% of configured IPC " + "limit (%u bytes); consider setting PCMK_ipc_buffer " + "to u or higher", + factor, client->max_buf_size, + (2 * client->max_buf_size)); factor++; } } @@ -1410,8 +1412,9 @@ crm_ipc_send(crm_ipc_t *client, const xmlNode *message, send_cleanup: if (!crm_ipc_connected(client)) { - crm_notice("Couldn't send %s IPC request %d: Connection closed " - QB_XS " rc=%d", client->server_name, header->qb.id, rc); + pcmk__notice("Couldn't send %s IPC request %d: Connection closed " + QB_XS " rc=%d", + client->server_name, header->qb.id, rc); } else if (rc == -ETIMEDOUT) { pcmk__warn("%s IPC request %d failed: %s after %dms " QB_XS " rc=%d", @@ -1648,11 +1651,11 @@ pcmk__ipc_is_authentic_process_active(const char *name, uid_t refuid, "least privilege principle", name, (long long) refuid, (long long) refgid); } else { - crm_notice("Daemon (IPC %s) runs as %lld:%lld, whereas the" - " expected credentials are %lld:%lld, which may" - " mean a different set of privileges than expected", - name, (long long) found_uid, (long long) found_gid, - (long long) refuid, (long long) refgid); + pcmk__notice("Daemon (IPC %s) runs as %lld:%lld, whereas the " + "expected credentials are %lld:%lld, which may " + "mean a different set of privileges than expected", + name, (long long) found_uid, (long long) found_gid, + (long long) refuid, (long long) refgid); } memccpy(last_asked_name, name, '\0', sizeof(last_asked_name)); } diff --git a/lib/common/ipc_server.c b/lib/common/ipc_server.c index b7a786b23ca..90e8d4585b0 100644 --- a/lib/common/ipc_server.c +++ b/lib/common/ipc_server.c @@ -143,8 +143,8 @@ pcmk__drop_all_clients(qb_ipcs_service_t *service) c = qb_ipcs_connection_next_get(service, last); /* There really shouldn't be anyone connected at this point */ - crm_notice("Disconnecting client %p, pid=%d...", - last, pcmk__client_pid(last)); + pcmk__notice("Disconnecting client %p, pid=%d...", last, + pcmk__client_pid(last)); qb_ipcs_disconnect(last); qb_ipcs_connection_unref(last); } @@ -736,10 +736,10 @@ pcmk__ipc_send_iov(pcmk__client_t *c, struct iovec *iov, uint32_t flags) if (qb_rc < 0) { rc = (int) -qb_rc; } - crm_notice("Response %" PRId32 " to pid %u failed: %s " - QB_XS " bytes=%" PRId32 " rc=%zd ipcs=%p", - header->qb.id, c->pid, pcmk_rc_str(rc), - header->qb.size, qb_rc, c->ipcs); + pcmk__notice("Response %" PRId32 " to pid %u failed: %s " + QB_XS " bytes=%" PRId32 " rc=%zd ipcs=%p", + header->qb.id, c->pid, pcmk_rc_str(rc), + header->qb.size, qb_rc, c->ipcs); } else { crm_trace("Response %" PRId32 " sent, %zd bytes to %p[%u]", @@ -780,8 +780,8 @@ pcmk__ipc_send_xml(pcmk__client_t *c, uint32_t request, const xmlNode *message, rc = pcmk__ipc_send_iov(c, iov, flags); } else { pcmk_free_ipc_event(iov); - crm_notice("IPC message to pid %d failed: %s " QB_XS " rc=%d", - c->pid, pcmk_rc_str(rc), rc); + pcmk__notice("IPC message to pid %d failed: %s " QB_XS " rc=%d", + c->pid, pcmk_rc_str(rc), rc); } return rc; } diff --git a/lib/common/logging.c b/lib/common/logging.c index 9cc60c98052..23a9e75755e 100644 --- a/lib/common/logging.c +++ b/lib/common/logging.c @@ -393,11 +393,11 @@ pcmk__add_logfile(const char *filename) setenv_logfile(filename); } else if (default_fd >= 0) { - crm_notice("Switching logging to %s", filename); + pcmk__notice("Switching logging to %s", filename); disable_logfile(default_fd); } - crm_notice("Additional logging available in %s", filename); + pcmk__notice("Additional logging available in %s", filename); enable_logfile(fd); have_logfile = true; return pcmk_rc_ok; @@ -464,7 +464,7 @@ crm_control_blackbox(int nsig, bool enable) qb_log_ctl(lpc, QB_LOG_CONF_FILE_SYNC, QB_TRUE); } - crm_notice("Initiated blackbox recorder: %s", blackbox_file_prefix); + pcmk__notice("Initiated blackbox recorder: %s", blackbox_file_prefix); /* Save to disk on abnormal termination */ crm_signal_handler(SIGSEGV, crm_trigger_blackbox); @@ -539,14 +539,18 @@ crm_write_blackbox(int nsig, const struct qb_log_callsite *cs) snprintf(buffer, NAME_MAX, "%s.%d", blackbox_file_prefix, counter++); if (nsig == SIGTRAP) { - crm_notice("Blackbox dump requested, please see %s for contents", buffer); + pcmk__notice("Blackbox dump requested, please see %s for " + "contents", + buffer); } else if (cs) { syslog(LOG_NOTICE, "Problem detected at %s:%d (%s), please see %s for additional details", cs->function, cs->lineno, cs->filename, buffer); } else { - crm_notice("Problem detected, please see %s for additional details", buffer); + pcmk__notice("Problem detected, please see %s for additional " + "details", + buffer); } last = now; @@ -1121,7 +1125,7 @@ crm_log_args(int argc, char **argv) } logged = true; arg_string = g_strjoinv(" ", argv); - crm_notice("Invoked: %s", arg_string); + pcmk__notice("Invoked: %s", arg_string); g_free(arg_string); } diff --git a/lib/common/mainloop.c b/lib/common/mainloop.c index 7a5f0fdde4a..b60f9605abb 100644 --- a/lib/common/mainloop.c +++ b/lib/common/mainloop.c @@ -251,9 +251,9 @@ crm_signal_dispatch(GSource *source, GSourceFunc callback, gpointer userdata) crm_signal_t *sig = (crm_signal_t *) source; if(sig->signal != SIGCHLD) { - crm_notice("Caught '%s' signal " QB_XS " %d (%s handler)", - strsignal(sig->signal), sig->signal, - (sig->handler? "invoking" : "no")); + pcmk__notice("Caught '%s' signal " QB_XS " %d (%s handler)", + strsignal(sig->signal), sig->signal, + ((sig->handler != NULL)? "invoking" : "no")); } sig->trigger.trigger = FALSE; @@ -1132,8 +1132,8 @@ child_waitpid(mainloop_child_t *child, int flags) */ signo = SIGCHLD; exitcode = 1; - crm_notice("Wait for child process %d (%s) interrupted: %s", - child->pid, child->desc, pcmk_rc_str(errno)); + pcmk__notice("Wait for child process %d (%s) interrupted: %s", + child->pid, child->desc, pcmk_rc_str(errno)); } else if (WIFEXITED(status)) { exitcode = WEXITSTATUS(status); diff --git a/lib/common/patchset.c b/lib/common/patchset.c index 67fc8818866..d168752c829 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -462,8 +462,8 @@ check_patchset_versions(const xmlNode *cib_root, const xmlNode *patchset) } } - crm_notice("Versions did not change in patch %d.%d.%d", - target[0], target[1], target[2]); + pcmk__notice("Versions did not change in patch %d.%d.%d", + target[0], target[1], target[2]); return pcmk_rc_old_data; } diff --git a/lib/common/procfs.c b/lib/common/procfs.c index 95d899ae0cf..218f5114969 100644 --- a/lib/common/procfs.c +++ b/lib/common/procfs.c @@ -137,7 +137,8 @@ pcmk__procfs_pid_of(const char *name) dp = opendir("/proc"); if (dp == NULL) { - crm_notice("Can not read /proc directory to track existing components"); + pcmk__notice("Can not read /proc directory to track existing " + "components"); return 0; } diff --git a/lib/fencing/st_client.c b/lib/fencing/st_client.c index c3994a36ff3..5a44dc5a9f0 100644 --- a/lib/fencing/st_client.c +++ b/lib/fencing/st_client.c @@ -199,7 +199,8 @@ stonith__watchdog_fencing_enabled_for_node_api(stonith_t *st, const char *node) * panic on that answer */ if (rc == -ENODEV) { - crm_notice("Cluster does not have watchdog fencing device"); + pcmk__notice("Cluster does not have watchdog fencing " + "device"); } else { pcmk__warn("Could not check for watchdog fencing device: %s", pcmk_strerror(rc)); @@ -1955,14 +1956,14 @@ stonith_api_connect_retry(stonith_t *st, const char *name, int max_attempts) if (rc == pcmk_ok) { return pcmk_ok; } else if (attempt < max_attempts) { - crm_notice("Fencer connection attempt %d of %d failed (retrying in 2s): %s " - QB_XS " rc=%d", - attempt, max_attempts, pcmk_strerror(rc), rc); + pcmk__notice("Fencer connection attempt %d of %d failed (retrying " + "in 2s): %s " QB_XS " rc=%d", + attempt, max_attempts, pcmk_strerror(rc), rc); sleep(2); } } - crm_notice("Could not connect to fencer: %s " QB_XS " rc=%d", - pcmk_strerror(rc), rc); + pcmk__notice("Could not connect to fencer: %s " QB_XS " rc=%d", + pcmk_strerror(rc), rc); return rc; } diff --git a/lib/lrmd/lrmd_client.c b/lib/lrmd/lrmd_client.c index 3af8febd84c..e6509c9a009 100644 --- a/lib/lrmd/lrmd_client.c +++ b/lib/lrmd/lrmd_client.c @@ -2274,7 +2274,7 @@ lrmd_api_list_agents(lrmd_t * lrmd, lrmd_list_t ** resources, const char *class, } } if (rc == 0) { - crm_notice("No agents found for class %s", class); + pcmk__notice("No agents found for class %s", class); rc = -EPROTONOSUPPORT; } return rc; diff --git a/lib/pacemaker/pcmk_graph_producer.c b/lib/pacemaker/pcmk_graph_producer.c index f1bc247f8ed..3ebf11d5380 100644 --- a/lib/pacemaker/pcmk_graph_producer.c +++ b/lib/pacemaker/pcmk_graph_producer.c @@ -959,14 +959,13 @@ pcmk__log_transition_summary(const pcmk_scheduler_t *scheduler, pcmk__s(filename, "")); } else { - crm_notice("Calculated transition %d%s%s", - transition_id, - (filename == NULL)? "" : ", saving inputs in ", - (filename == NULL)? "" : filename); + pcmk__notice("Calculated transition %d%s%s", transition_id, + ((filename != NULL)? ", saving inputs in " : ""), + pcmk__s(filename, "")); } if (pcmk__config_has_error) { - crm_notice("Configuration errors found during scheduler processing," - " please run \"crm_verify -L\" to identify issues"); + pcmk__notice("Configuration errors found during scheduler processing, " + "please run \"crm_verify -L\" to identify issues"); } } diff --git a/lib/pacemaker/pcmk_output.c b/lib/pacemaker/pcmk_output.c index ed6a413b044..9926008e8e6 100644 --- a/lib/pacemaker/pcmk_output.c +++ b/lib/pacemaker/pcmk_output.c @@ -1338,7 +1338,7 @@ node_action(pcmk__output_t *out, va_list args) } else if (reason) { out->list_item(out, NULL, "%s %s '%s'", task, node_name, reason); } else { - crm_notice(" * %s %s", task, node_name); + pcmk__notice(" * %s %s", task, node_name); } return pcmk_rc_ok; @@ -1361,7 +1361,7 @@ node_action_xml(pcmk__output_t *out, va_list args) PCMK_XA_REASON, reason, NULL); } else { - crm_notice(" * %s %s", task, node_name); + pcmk__notice(" * %s %s", task, node_name); } return pcmk_rc_ok; diff --git a/lib/pacemaker/pcmk_sched_bundle.c b/lib/pacemaker/pcmk_sched_bundle.c index caecd032998..15909173f0f 100644 --- a/lib/pacemaker/pcmk_sched_bundle.c +++ b/lib/pacemaker/pcmk_sched_bundle.c @@ -578,9 +578,9 @@ pcmk__bundle_apply_coloc_score(pcmk_resource_t *dependent, if (colocation->score >= PCMK_SCORE_INFINITY) { // Failure, and it's fatal - crm_notice("%s cannot run because there is no compatible " - "instance of %s to colocate with", - dependent->id, primary->id); + pcmk__notice("%s cannot run because there is no compatible " + "instance of %s to colocate with", + dependent->id, primary->id); pcmk__assign_resource(dependent, NULL, true, true); } else { // Failure, but we can ignore it diff --git a/lib/pacemaker/pcmk_sched_clone.c b/lib/pacemaker/pcmk_sched_clone.c index 283f6750499..329780dadb0 100644 --- a/lib/pacemaker/pcmk_sched_clone.c +++ b/lib/pacemaker/pcmk_sched_clone.c @@ -314,8 +314,9 @@ pcmk__clone_apply_coloc_score(pcmk_resource_t *dependent, } if (colocation->score >= PCMK_SCORE_INFINITY) { - crm_notice("%s cannot run because it cannot interleave with " - "any instance of %s", dependent->id, primary->id); + pcmk__notice("%s cannot run because it cannot interleave with " + "any instance of %s", + dependent->id, primary->id); pcmk__assign_resource(dependent, NULL, true, true); } else { diff --git a/lib/pacemaker/pcmk_sched_constraints.c b/lib/pacemaker/pcmk_sched_constraints.c index ac29dd444c4..3166a4e6097 100644 --- a/lib/pacemaker/pcmk_sched_constraints.c +++ b/lib/pacemaker/pcmk_sched_constraints.c @@ -120,7 +120,7 @@ find_constraint_tag(const pcmk_scheduler_t *scheduler, const char *id, if (g_hash_table_lookup_extended(scheduler->priv->templates, id, NULL, (gpointer *) tag)) { if (*tag == NULL) { - crm_notice("No resource is derived from template '%s'", id); + pcmk__notice("No resource is derived from template '%s'", id); return false; } return true; @@ -130,7 +130,7 @@ find_constraint_tag(const pcmk_scheduler_t *scheduler, const char *id, if (g_hash_table_lookup_extended(scheduler->priv->tags, id, NULL, (gpointer *) tag)) { if (*tag == NULL) { - crm_notice("No resource is tagged with '%s'", id); + pcmk__notice("No resource is tagged with '%s'", id); return false; } return true; diff --git a/lib/pacemaker/pcmk_sched_fencing.c b/lib/pacemaker/pcmk_sched_fencing.c index 5a52ef50007..90fe85d8185 100644 --- a/lib/pacemaker/pcmk_sched_fencing.c +++ b/lib/pacemaker/pcmk_sched_fencing.c @@ -168,9 +168,10 @@ order_stop_vs_fencing(pcmk_resource_t *rsc, pcmk_action_t *stonith_op) } if (pcmk__is_set(rsc->flags, pcmk__rsc_failed)) { - crm_notice("Stop of failed resource %s is implicit %s %s is fenced", - rsc->id, (order_implicit? "after" : "because"), - pcmk__node_name(target)); + pcmk__notice("Stop of failed resource %s is implicit %s %s is " + "fenced", + rsc->id, (order_implicit? "after" : "because"), + pcmk__node_name(target)); } else { crm_info("%s is implicit %s %s is fenced", action->uuid, (order_implicit? "after" : "because"), diff --git a/lib/pacemaker/pcmk_sched_instances.c b/lib/pacemaker/pcmk_sched_instances.c index 5dd46dc15f2..d3527d372a8 100644 --- a/lib/pacemaker/pcmk_sched_instances.c +++ b/lib/pacemaker/pcmk_sched_instances.c @@ -850,8 +850,8 @@ pcmk__assign_instances(pcmk_resource_t *collective, GList *instances, if (!pcmk__is_set(instance->flags, pcmk__rsc_managed)) { unmanaged = "Unmanaged resource "; } - crm_notice("%s%s is running on %s which is no longer allowed", - unmanaged, instance->id, pcmk__node_name(current)); + pcmk__notice("%s%s is running on %s which is no longer allowed", + unmanaged, instance->id, pcmk__node_name(current)); } } diff --git a/lib/pacemaker/pcmk_sched_primitive.c b/lib/pacemaker/pcmk_sched_primitive.c index f8bdcb2179f..0c891d8ddd6 100644 --- a/lib/pacemaker/pcmk_sched_primitive.c +++ b/lib/pacemaker/pcmk_sched_primitive.c @@ -490,10 +490,10 @@ pcmk__primitive_assign(pcmk_resource_t *rsc, const pcmk_node_t *prefer, } else if ((rsc->priv->next_role > rsc->priv->orig_role) && !pcmk__is_set(scheduler->flags, pcmk__sched_quorate) && (scheduler->no_quorum_policy == pcmk_no_quorum_freeze)) { - crm_notice("Resource %s cannot be elevated from %s to %s due to " - PCMK_OPT_NO_QUORUM_POLICY "=" PCMK_VALUE_FREEZE, - rsc->id, pcmk_role_text(rsc->priv->orig_role), - pcmk_role_text(rsc->priv->next_role)); + pcmk__notice("Resource %s cannot be elevated from %s to %s due to " + PCMK_OPT_NO_QUORUM_POLICY "=" PCMK_VALUE_FREEZE, + rsc->id, pcmk_role_text(rsc->priv->orig_role), + pcmk_role_text(rsc->priv->next_role)); pe__set_next_role(rsc, rsc->priv->orig_role, PCMK_OPT_NO_QUORUM_POLICY "=" PCMK_VALUE_FREEZE); } @@ -759,18 +759,18 @@ pcmk__primitive_create_actions(pcmk_resource_t *rsc) if (num_all_active > 2) { // The resource is migrating *and* multiply active! - crm_notice("Forcing recovery of %s because it is migrating " - "from %s to %s and possibly active elsewhere", - rsc->id, - pcmk__node_name(rsc->priv->partial_migration_source), - pcmk__node_name(migration_target)); + pcmk__notice("Forcing recovery of %s because it is migrating " + "from %s to %s and possibly active elsewhere", + rsc->id, + pcmk__node_name(rsc->priv->partial_migration_source), + pcmk__node_name(migration_target)); } else { // The migration source or target isn't available - crm_notice("Forcing recovery of %s because it can no longer " - "migrate from %s to %s", - rsc->id, - pcmk__node_name(rsc->priv->partial_migration_source), - pcmk__node_name(migration_target)); + pcmk__notice("Forcing recovery of %s because it can no longer " + "migrate from %s to %s", + rsc->id, + pcmk__node_name(rsc->priv->partial_migration_source), + pcmk__node_name(migration_target)); } need_stop = true; rsc->priv->partial_migration_source = NULL; @@ -798,9 +798,9 @@ pcmk__primitive_create_actions(pcmk_resource_t *rsc) "%s resource %s might be active on %u nodes (%s)", pcmk__s(class, "Untyped"), rsc->id, num_all_active, pcmk__multiply_active_text(rsc)); - crm_notice("For more information, see \"What are multiply active " - "resources?\" at " - "https://projects.clusterlabs.org/w/clusterlabs/faq/"); + pcmk__notice("For more information, see \"What are multiply active " + "resources?\" at " + "https://projects.clusterlabs.org/w/clusterlabs/faq/"); switch (rsc->priv->multiply_active_policy) { case pcmk__multiply_active_restart: @@ -1515,8 +1515,8 @@ pcmk__schedule_cleanup(pcmk_resource_t *rsc, const pcmk_node_t *node, return; } - crm_notice("Scheduling clean-up of %s on %s", - rsc->id, pcmk__node_name(node)); + pcmk__notice("Scheduling clean-up of %s on %s", rsc->id, + pcmk__node_name(node)); delete_action(rsc, node, optional); // stop -> clean-up -> start diff --git a/lib/pacemaker/pcmk_sched_promotable.c b/lib/pacemaker/pcmk_sched_promotable.c index 00314befec9..2042e1799a6 100644 --- a/lib/pacemaker/pcmk_sched_promotable.c +++ b/lib/pacemaker/pcmk_sched_promotable.c @@ -194,8 +194,8 @@ node_to_be_promoted_on(const pcmk_resource_t *rsc) } else if (!pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { if (rsc->priv->fns->state(rsc, true) == pcmk_role_promoted) { - crm_notice("Unmanaged instance %s will be left promoted on %s", - rsc->id, pcmk__node_name(node)); + pcmk__notice("Unmanaged instance %s will be left promoted on %s", + rsc->id, pcmk__node_name(node)); } else { pcmk__rsc_trace(rsc, "%s can't be promoted because it is unmanaged", rsc->id); @@ -1068,8 +1068,8 @@ set_instance_role(gpointer data, gpointer user_data) if ((instance->priv->orig_role < pcmk_role_promoted) && !pcmk__is_set(scheduler->flags, pcmk__sched_quorate) && (scheduler->no_quorum_policy == pcmk_no_quorum_freeze)) { - crm_notice("Clone instance %s cannot be promoted without quorum", - instance->id); + pcmk__notice("Clone instance %s cannot be promoted without quorum", + instance->id); set_next_role_unpromoted(instance, NULL); return; } diff --git a/lib/pacemaker/pcmk_sched_recurring.c b/lib/pacemaker/pcmk_sched_recurring.c index 0cfd93487d7..af286cab760 100644 --- a/lib/pacemaker/pcmk_sched_recurring.c +++ b/lib/pacemaker/pcmk_sched_recurring.c @@ -507,8 +507,9 @@ recurring_op_for_inactive(pcmk_resource_t *rsc, const pcmk_node_t *node, } if (!pcmk__is_set(rsc->flags, pcmk__rsc_unique)) { - crm_notice("Ignoring %s (recurring monitors for " PCMK_ROLE_STOPPED - " role are not supported for anonymous clones)", op->id); + pcmk__notice("Ignoring %s (recurring monitors for " PCMK_ROLE_STOPPED + " role are not supported for anonymous clones)", + op->id); return; // @TODO add support } @@ -566,10 +567,11 @@ recurring_op_for_inactive(pcmk_resource_t *rsc, const pcmk_node_t *node, if (pcmk__is_set(stopped_mon->flags, pcmk__action_runnable) && !pcmk__is_set(stopped_mon->flags, pcmk__action_optional)) { - crm_notice("Start recurring %s-interval %s for " - PCMK_ROLE_STOPPED " %s on %s", - pcmk__readable_interval(op->interval_ms), - stopped_mon->task, rsc->id, pcmk__node_name(stop_node)); + pcmk__notice("Start recurring %s-interval %s for " + PCMK_ROLE_STOPPED " %s on %s", + pcmk__readable_interval(op->interval_ms), + stopped_mon->task, rsc->id, + pcmk__node_name(stop_node)); } } } diff --git a/lib/pacemaker/pcmk_sched_resource.c b/lib/pacemaker/pcmk_sched_resource.c index 7277bbe4cf4..87af19dca0f 100644 --- a/lib/pacemaker/pcmk_sched_resource.c +++ b/lib/pacemaker/pcmk_sched_resource.c @@ -128,10 +128,10 @@ pcmk__rsc_agent_changed(pcmk_resource_t *rsc, pcmk_node_t *node, trigger_unfencing(rsc, node, "Device definition changed", NULL, rsc->priv->scheduler); if (active_on_node) { - crm_notice("Forcing restart of %s on %s " - "because %s changed from '%s' to '%s'", - rsc->id, pcmk__node_name(node), attr_list[i], - pcmk__s(old_value, ""), pcmk__s(value, "")); + pcmk__notice("Forcing restart of %s on %s because %s changed " + "from '%s' to '%s'", + rsc->id, pcmk__node_name(node), attr_list[i], + pcmk__s(old_value, ""), pcmk__s(value, "")); } } } diff --git a/lib/pacemaker/pcmk_scheduler.c b/lib/pacemaker/pcmk_scheduler.c index a6b69b7592c..bfeb7ccd26a 100644 --- a/lib/pacemaker/pcmk_scheduler.c +++ b/lib/pacemaker/pcmk_scheduler.c @@ -554,8 +554,8 @@ schedule_fencing_and_shutdowns(pcmk_scheduler_t *scheduler) crm_trace("Scheduling fencing and shutdowns as needed"); if (!have_managed) { - crm_notice("No fencing will be done until there are resources " - "to manage"); + pcmk__notice("No fencing will be done until there are resources to " + "manage"); } // Check each node for whether it needs fencing or shutdown @@ -611,9 +611,9 @@ schedule_fencing_and_shutdowns(pcmk_scheduler_t *scheduler) "and test fencing to correct this)"); } else if (!pcmk__is_set(scheduler->flags, pcmk__sched_quorate)) { - crm_notice("Unclean nodes will not be fenced until quorum is " - "attained or " PCMK_OPT_NO_QUORUM_POLICY " is set to " - PCMK_VALUE_IGNORE); + pcmk__notice("Unclean nodes will not be fenced until quorum is " + "attained or " PCMK_OPT_NO_QUORUM_POLICY " is set to " + PCMK_VALUE_IGNORE); } } diff --git a/lib/pengine/failcounts.c b/lib/pengine/failcounts.c index 1c0bad6b723..73034f8d732 100644 --- a/lib/pengine/failcounts.c +++ b/lib/pengine/failcounts.c @@ -479,7 +479,7 @@ pe__clear_failcount(pcmk_resource_t *rsc, const pcmk_node_t *node, clear = custom_action(rsc, key, PCMK_ACTION_CLEAR_FAILCOUNT, node, FALSE, scheduler); pcmk__insert_meta(clear, PCMK__META_OP_NO_WAIT, PCMK_VALUE_TRUE); - crm_notice("Clearing failure of %s on %s because %s " QB_XS " %s", - rsc->id, pcmk__node_name(node), reason, clear->uuid); + pcmk__notice("Clearing failure of %s on %s because %s " QB_XS " %s", + rsc->id, pcmk__node_name(node), reason, clear->uuid); return clear; } diff --git a/lib/pengine/pe_actions.c b/lib/pengine/pe_actions.c index c060d18126d..5595a436279 100644 --- a/lib/pengine/pe_actions.c +++ b/lib/pengine/pe_actions.c @@ -1276,8 +1276,9 @@ pe_fence_op(pcmk_node_t *node, const char *op, bool optional, scheduler); if (data->rc == pcmk__digest_mismatch) { optional = FALSE; - crm_notice("Unfencing node %s because the definition of " - "%s changed", pcmk__node_name(node), match->id); + pcmk__notice("Unfencing node %s because the definition of " + "%s changed", + pcmk__node_name(node), match->id); if (!pcmk__is_daemon && (scheduler->priv->out != NULL)) { pcmk__output_t *out = scheduler->priv->out; diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c index d8a0fb45d3a..ec0e5b7ddb0 100644 --- a/lib/pengine/unpack.c +++ b/lib/pengine/unpack.c @@ -125,10 +125,9 @@ pe_fence_node(pcmk_scheduler_t *scheduler, pcmk_node_t *node, if (!pcmk__is_set(rsc->flags, pcmk__rsc_failed)) { if (!pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { - crm_notice("Not fencing guest node %s " - "(otherwise would because %s): " - "its guest resource %s is unmanaged", - pcmk__node_name(node), reason, rsc->id); + pcmk__notice("Not fencing guest node %s (otherwise would " + "because %s): its guest resource %s is unmanaged", + pcmk__node_name(node), reason, rsc->id); } else { pcmk__sched_warn(scheduler, "Guest node %s will be fenced " @@ -157,9 +156,9 @@ pe_fence_node(pcmk_scheduler_t *scheduler, pcmk_node_t *node, pcmk_resource_t *rsc = node->priv->remote; if ((rsc != NULL) && !pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { - crm_notice("Not fencing remote node %s " - "(otherwise would because %s): connection is unmanaged", - pcmk__node_name(node), reason); + pcmk__notice("Not fencing remote node %s (otherwise would because " + "%s): connection is unmanaged", + pcmk__node_name(node), reason); } else if (!pcmk__is_set(node->priv->flags, pcmk__node_remote_reset)) { pcmk__set_node_flags(node, pcmk__node_remote_reset); pcmk__sched_warn(scheduler, "Remote node %s %s: %s", @@ -321,8 +320,9 @@ unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler) || pcmk__is_set(scheduler->flags, pcmk__sched_quorate)) { scheduler->no_quorum_policy = pcmk_no_quorum_fence; } else { - crm_notice("Resetting " PCMK_OPT_NO_QUORUM_POLICY - " to 'stop': cluster has never had quorum"); + pcmk__notice("Resetting " PCMK_OPT_NO_QUORUM_POLICY " to " + "'" PCMK_VALUE_STOP "': cluster has never had " + "quorum"); scheduler->no_quorum_policy = pcmk_no_quorum_stop; } } else { @@ -349,10 +349,10 @@ unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler) "Demote promotable resources and stop other resources"); break; case pcmk_no_quorum_fence: - crm_notice("On loss of quorum: Fence all remaining nodes"); + pcmk__notice("On loss of quorum: Fence all remaining nodes"); break; case pcmk_no_quorum_ignore: - crm_notice("On loss of quorum: Ignore"); + pcmk__notice("On loss of quorum: Ignore"); break; } @@ -1216,8 +1216,9 @@ unpack_node_state(const xmlNode *state, pcmk_scheduler_t *scheduler) this_node = pe_find_node_any(scheduler->nodes, id, uname); if (this_node == NULL) { - crm_notice("Ignoring recorded state for removed node with name %s and " - PCMK_XA_ID " %s", pcmk__s(uname, "unknown"), id); + pcmk__notice("Ignoring recorded state for removed node with name %s " + "and " PCMK_XA_ID " %s", + pcmk__s(uname, "unknown"), id); return; } @@ -2132,9 +2133,10 @@ find_anonymous_clone(pcmk_scheduler_t *scheduler, const pcmk_node_t *node, * numbers available. */ if (rsc->priv->active_nodes != NULL) { - crm_notice("Active (now-)anonymous clone %s has " - "multiple (orphan) instance histories on %s", - parent->id, pcmk__node_name(node)); + pcmk__notice("Active (now-)anonymous clone %s has " + "multiple (orphan) instance histories on " + "%s", + parent->id, pcmk__node_name(node)); skip_inactive = TRUE; rsc = NULL; } else { @@ -2514,13 +2516,14 @@ process_rsc_state(pcmk_resource_t *rsc, pcmk_node_t *node, if (known_active) { if (pcmk__is_set(rsc->flags, pcmk__rsc_removed)) { if (pcmk__is_set(rsc->flags, pcmk__rsc_managed)) { - crm_notice("Removed resource %s is active on %s and will be " - "stopped when possible", - rsc->id, pcmk__node_name(node)); + pcmk__notice("Removed resource %s is active on %s and will be " + "stopped when possible", + rsc->id, pcmk__node_name(node)); } else { - crm_notice("Removed resource %s must be stopped manually on %s " - "because " PCMK_OPT_STOP_ORPHAN_RESOURCES - " is set to false", rsc->id, pcmk__node_name(node)); + pcmk__notice("Removed resource %s must be stopped manually on " + "%s because " PCMK_OPT_STOP_ORPHAN_RESOURCES " is " + "set to false", + rsc->id, pcmk__node_name(node)); } } @@ -3588,7 +3591,7 @@ ban_from_all_nodes(pcmk_resource_t *rsc) } // Ban the resource from all nodes - crm_notice("%s will not be started under current conditions", rsc->id); + pcmk__notice("%s will not be started under current conditions", rsc->id); if (rsc->priv->allowed_nodes != NULL) { g_hash_table_destroy(rsc->priv->allowed_nodes); } @@ -3678,10 +3681,10 @@ unpack_rsc_op_failure(struct action_history *history, /* A failed (not just unexpected) probe result could mean the user * didn't know resources will be probed even where they can't run. */ - crm_notice("If it is not possible for %s to run on %s, see " - "the " PCMK_XA_RESOURCE_DISCOVERY " option for location " - "constraints", - history->rsc->id, pcmk__node_name(history->node)); + pcmk__notice("If it is not possible for %s to run on %s, see the " + PCMK_XA_RESOURCE_DISCOVERY " option for location " + "constraints", + history->rsc->id, pcmk__node_name(history->node)); } record_failed_op(history); @@ -4514,10 +4517,10 @@ process_expired_result(struct action_history *history, int orig_exit_status) } if (history->interval_ms == 0) { - crm_notice("Ignoring resource history entry %s for %s of %s on %s: " - "Expired failure", - history->id, history->task, history->rsc->id, - pcmk__node_name(history->node)); + pcmk__notice("Ignoring resource history entry %s for %s of %s on %s: " + "Expired failure", + history->id, history->task, history->rsc->id, + pcmk__node_name(history->node)); return pcmk_rc_ok; } @@ -4532,10 +4535,11 @@ process_expired_result(struct action_history *history, int orig_exit_status) * scheduler regression test doesn't, but that may not be a * realistic scenario in production). */ - crm_notice("Rescheduling %s-interval %s of %s on %s " - "after failure expired", - pcmk__readable_interval(history->interval_ms), history->task, - history->rsc->id, pcmk__node_name(history->node)); + pcmk__notice("Rescheduling %s-interval %s of %s on %s after failure " + "expired", + pcmk__readable_interval(history->interval_ms), + history->task, history->rsc->id, + pcmk__node_name(history->node)); pcmk__xe_set(history->xml, PCMK__XA_OP_RESTART_DIGEST, "calculated-failure-timeout"); return pcmk_rc_ok; @@ -4564,9 +4568,9 @@ mask_probe_failure(struct action_history *history, int orig_exit_status, ban_rsc = uber_parent(history->rsc); } - crm_notice("Treating probe result '%s' for %s on %s as 'not running'", - crm_exit_str(orig_exit_status), history->rsc->id, - pcmk__node_name(history->node)); + pcmk__notice("Treating probe result '%s' for %s on %s as 'not running'", + crm_exit_str(orig_exit_status), history->rsc->id, + pcmk__node_name(history->node)); update_resource_state(history, history->expected_exit_status, last_failure, on_fail); pcmk__xe_set(history->xml, PCMK_XA_UNAME, history->node->priv->name); diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c index 87fcb34586c..d3bc6f50a47 100644 --- a/lib/pengine/utils.c +++ b/lib/pengine/utils.c @@ -68,8 +68,9 @@ pe_can_fence(const pcmk_scheduler_t *scheduler, const pcmk_node_t *node) return false; } else if(node->details->online) { - crm_notice("We can fence %s without quorum because they're in our membership", - pcmk__node_name(node)); + pcmk__notice("We can fence %s without quorum because they're in our " + "membership", + pcmk__node_name(node)); return true; } diff --git a/tools/crm_mon.c b/tools/crm_mon.c index 7d30b69f4ea..bf1e766a039 100644 --- a/tools/crm_mon.c +++ b/tools/crm_mon.c @@ -1792,7 +1792,7 @@ handle_rsc_op(xmlNode *xml, void *userdata) /* look up where we expected it to be? */ desc = pcmk_rc_str(pcmk_rc_ok); if ((status == PCMK_EXEC_DONE) && (target_rc == rc)) { - crm_notice("%s of %s on %s completed: %s", task, rsc, node, desc); + pcmk__notice("%s of %s on %s completed: %s", task, rsc, node, desc); if (rc == PCMK_OCF_NOT_RUNNING) { notify = FALSE; } @@ -1941,14 +1941,16 @@ crm_diff_update(const char *event, xmlNode * msg) switch (rc) { case -pcmk_err_diff_resync: case -pcmk_err_diff_failed: - crm_notice("[%s] Patch aborted: %s (%d)", event, pcmk_strerror(rc), rc); + pcmk__notice("[%s] Patch aborted: %s (%d)", event, + pcmk_strerror(rc), rc); pcmk__xml_free(current_cib); current_cib = NULL; break; case pcmk_ok: cib_updated = TRUE; break; default: - crm_notice("[%s] ABORTED: %s (%d)", event, pcmk_strerror(rc), rc); + pcmk__notice("[%s] ABORTED: %s (%d)", event, pcmk_strerror(rc), + rc); pcmk__xml_free(current_cib); current_cib = NULL; } } diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c index b425494c404..6c408ae5b15 100644 --- a/tools/crm_resource_runtime.c +++ b/tools/crm_resource_runtime.c @@ -1277,7 +1277,7 @@ cli_resource_fail(pcmk_ipc_api_t *controld_api, pcmk_resource_t *rsc, rsc_id, pcmk__node_name(node)); return pcmk_rc_ok; } - crm_notice("Failing %s on %s", rsc_id, pcmk__node_name(node)); + pcmk__notice("Failing %s on %s", rsc_id, pcmk__node_name(node)); return send_lrm_rsc_op(controld_api, true, rsc, rsc_id, node); } @@ -2045,7 +2045,7 @@ actions_are_pending(const GList *actions) const pcmk_action_t *a = (const pcmk_action_t *) action->data; if (action_is_pending(a)) { - crm_notice("Waiting for %s (flags=%#.8x)", a->uuid, a->flags); + pcmk__notice("Waiting for %s (flags=%#.8x)", a->uuid, a->flags); return true; } } From c06f70166f00007d69996e6fbcc5590184210353 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 27 Mar 2025 00:28:49 -0700 Subject: [PATCH 161/186] API: libcrmcommon: Deprecate crm_notice() Pacemaker should not be used for general-purpose logging. Ref T622 Signed-off-by: Reid Wahl --- include/crm/common/logging.h | 3 --- include/crm/common/logging_compat.h | 4 ++++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/include/crm/common/logging.h b/include/crm/common/logging.h index 40e45878f97..ff26038daf8 100644 --- a/include/crm/common/logging.h +++ b/include/crm/common/logging.h @@ -346,9 +346,6 @@ pcmk__clip_log_level(int level) } \ } while (0) -// NOTE: sbd (as of at least 1.5.2) uses this -#define crm_notice(fmt, args...) qb_log(LOG_NOTICE, fmt, ##args) - #define crm_info(fmt, args...) qb_log(LOG_INFO, fmt, ##args) // // NOTE: sbd (as of at least 1.5.2) uses this diff --git a/include/crm/common/logging_compat.h b/include/crm/common/logging_compat.h index a8026735347..8287d35acf6 100644 --- a/include/crm/common/logging_compat.h +++ b/include/crm/common/logging_compat.h @@ -36,6 +36,10 @@ extern "C" { //! \deprecated Do not use #define crm_warn(fmt, args...) qb_log(LOG_WARNING, fmt, ##args) +// NOTE: sbd (as of at least 1.5.2) uses this +//! \deprecated Do not use +#define crm_notice(fmt, args...) qb_log(LOG_NOTICE, fmt, ##args) + #ifdef __cplusplus } #endif From 2db033824a27cd5345e97d4ab0efe9589d1d66b5 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 27 Mar 2025 01:21:39 -0700 Subject: [PATCH 162/186] Refactor: libcrmcommon: New pcmk__info() To replace crm_info() Signed-off-by: Reid Wahl --- daemons/attrd/attrd_alerts.c | 2 +- daemons/attrd/attrd_attributes.c | 6 +- daemons/attrd/attrd_cib.c | 33 ++++--- daemons/attrd/attrd_corosync.c | 10 +- daemons/attrd/attrd_elections.c | 4 +- daemons/attrd/attrd_ipc.c | 17 ++-- daemons/attrd/pacemaker-attrd.c | 6 +- daemons/based/based_callbacks.c | 19 ++-- daemons/based/based_io.c | 2 +- daemons/based/based_messages.c | 32 +++--- daemons/based/based_remote.c | 10 +- daemons/based/pacemaker-based.c | 6 +- daemons/controld/controld_callbacks.c | 30 +++--- daemons/controld/controld_cib.c | 21 ++-- daemons/controld/controld_control.c | 29 +++--- daemons/controld/controld_election.c | 4 +- daemons/controld/controld_execd.c | 75 +++++++------- daemons/controld/controld_fencing.c | 45 +++++---- daemons/controld/controld_fsa.c | 15 +-- daemons/controld/controld_join_dc.c | 41 ++++---- daemons/controld/controld_membership.c | 6 +- daemons/controld/controld_messages.c | 26 ++--- daemons/controld/controld_metadata.c | 7 +- daemons/controld/controld_remote_ra.c | 10 +- daemons/controld/controld_schedulerd.c | 7 +- daemons/controld/controld_te_actions.c | 10 +- daemons/controld/controld_te_callbacks.c | 15 +-- daemons/controld/controld_te_events.c | 43 ++++---- daemons/controld/controld_te_utils.c | 7 +- daemons/controld/controld_throttle.c | 6 +- daemons/controld/controld_timers.c | 12 +-- daemons/controld/controld_transition.c | 19 ++-- daemons/controld/controld_utils.c | 7 +- daemons/controld/pacemaker-controld.c | 2 +- daemons/execd/cts-exec-helper.c | 6 +- daemons/execd/execd_alerts.c | 2 +- daemons/execd/execd_commands.c | 22 +++-- daemons/execd/pacemaker-execd.c | 12 +-- daemons/execd/remoted_proxy.c | 5 +- daemons/execd/remoted_schemas.c | 4 +- daemons/execd/remoted_tls.c | 8 +- daemons/fenced/cts-fence-helper.c | 14 +-- daemons/fenced/fenced_cib.c | 34 +++---- daemons/fenced/fenced_commands.c | 107 ++++++++++---------- daemons/fenced/fenced_remote.c | 110 +++++++++++---------- daemons/fenced/fenced_scheduler.c | 25 ++--- daemons/fenced/pacemaker-fenced.c | 8 +- daemons/pacemakerd/pacemakerd.c | 2 +- daemons/pacemakerd/pcmkd_corosync.c | 31 ++++-- daemons/pacemakerd/pcmkd_subdaemons.c | 12 +-- daemons/schedulerd/schedulerd_messages.c | 9 +- include/crm/common/logging_internal.h | 9 ++ include/crm/common/strings_internal.h | 10 +- lib/cib/cib_attrs.c | 3 +- lib/cib/cib_file.c | 25 ++--- lib/cib/cib_native.c | 14 +-- lib/cib/cib_ops.c | 19 ++-- lib/cib/cib_remote.c | 28 +++--- lib/cluster/cluster.c | 10 +- lib/cluster/corosync.c | 28 +++--- lib/cluster/cpg.c | 18 ++-- lib/cluster/election.c | 22 +++-- lib/cluster/membership.c | 44 +++++---- lib/common/ipc_attrd.c | 11 ++- lib/common/ipc_client.c | 21 ++-- lib/common/ipc_controld.c | 18 ++-- lib/common/ipc_pacemakerd.c | 14 +-- lib/common/ipc_schedulerd.c | 19 ++-- lib/common/ipc_server.c | 6 +- lib/common/logging.c | 5 +- lib/common/messages.c | 6 +- lib/common/patchset.c | 14 +-- lib/common/pid.c | 10 +- lib/common/procfs.c | 3 +- lib/common/remote.c | 12 +-- lib/common/results.c | 6 +- lib/common/schemas.c | 15 ++- lib/common/tls.c | 4 +- lib/common/utils.c | 2 +- lib/common/watchdog.c | 6 +- lib/common/xml.c | 8 +- lib/common/xml_io.c | 4 +- lib/fencing/st_actions.c | 18 ++-- lib/fencing/st_client.c | 2 +- lib/lrmd/lrmd_alerts.c | 4 +- lib/lrmd/lrmd_client.c | 39 ++++---- lib/pacemaker/pcmk_injections.c | 4 +- lib/pacemaker/pcmk_sched_colocation.c | 10 +- lib/pacemaker/pcmk_sched_fencing.c | 34 +++---- lib/pacemaker/pcmk_sched_location.c | 12 +-- lib/pacemaker/pcmk_sched_nodes.c | 6 +- lib/pacemaker/pcmk_sched_recurring.c | 6 +- lib/pacemaker/pcmk_sched_resource.c | 12 +-- lib/pengine/failcounts.c | 5 +- lib/pengine/pe_actions.c | 4 +- lib/pengine/pe_notif.c | 3 +- lib/pengine/status.c | 4 +- lib/pengine/unpack.c | 84 ++++++++-------- lib/pengine/utils.c | 4 +- lib/services/dbus.c | 2 +- lib/services/services.c | 54 +++++----- lib/services/services_linux.c | 119 ++++++++++++----------- lib/services/systemd.c | 27 ++--- tools/cibadmin.c | 2 +- tools/crm_attribute.c | 10 +- tools/crm_mon.c | 4 +- tools/crm_resource.c | 2 +- tools/crm_resource_runtime.c | 10 +- tools/stonith_admin.c | 8 +- 109 files changed, 1006 insertions(+), 892 deletions(-) diff --git a/daemons/attrd/attrd_alerts.c b/daemons/attrd/attrd_alerts.c index 35b98910a8c..087464b8018 100644 --- a/daemons/attrd/attrd_alerts.c +++ b/daemons/attrd/attrd_alerts.c @@ -26,7 +26,7 @@ attrd_lrmd_callback(lrmd_event_data_t * op) CRM_CHECK(op != NULL, return); switch (op->type) { case lrmd_event_disconnect: - crm_info("Lost connection to executor"); + pcmk__info("Lost connection to executor"); attrd_lrmd_disconnect(); break; default: diff --git a/daemons/attrd/attrd_attributes.c b/daemons/attrd/attrd_attributes.c index f3f7903c8a6..ba3ff42d954 100644 --- a/daemons/attrd/attrd_attributes.c +++ b/daemons/attrd/attrd_attributes.c @@ -102,11 +102,11 @@ attrd_update_dampening(attribute_t *a, xmlNode *xml, const char *attr) a->timeout_ms = (int) QB_MIN(dampen, INT_MAX); if (dampen > 0) { a->timer = attrd_add_timer(attr, a->timeout_ms, a); - crm_info("Update attribute %s delay to %dms (%s)", - attr, dampen, dvalue); + pcmk__info("Update attribute %s delay to %dms (%s)", + attr, dampen, dvalue); } else { a->timer = NULL; - crm_info("Update attribute %s to remove delay", attr); + pcmk__info("Update attribute %s to remove delay", attr); } /* If dampening changed, do an immediate write-out, diff --git a/daemons/attrd/attrd_cib.c b/daemons/attrd/attrd_cib.c index 50e9d87253a..b4c484272da 100644 --- a/daemons/attrd/attrd_cib.c +++ b/daemons/attrd/attrd_cib.c @@ -35,7 +35,7 @@ attrd_cib_destroy_cb(gpointer user_data) cib->cmds->signoff(cib); if (attrd_shutting_down(false)) { - crm_info("Disconnected from the CIB manager"); + pcmk__info("Disconnected from the CIB manager"); } else { // @TODO This should trigger a reconnect, not a shutdown @@ -169,7 +169,7 @@ attrd_erase_cb(xmlNode *msg, int call_id, int rc, xmlNode *output, const char *node = pcmk__s((const char *) user_data, "a node"); if (rc == pcmk_ok) { - crm_info("Cleared transient node attributes for %s from CIB", node); + pcmk__info("Cleared transient node attributes for %s from CIB", node); } else { pcmk__err("Unable to clear transient node attributes for %s from CIB: " "%s", @@ -256,7 +256,7 @@ attrd_cib_callback(xmlNode *msg, int call_id, int rc, xmlNode *output, void *use attribute_t *a = g_hash_table_lookup(attributes, name); if(a == NULL) { - crm_info("Attribute %s no longer exists", name); + pcmk__info("Attribute %s no longer exists", name); return; } @@ -291,8 +291,8 @@ attrd_cib_callback(xmlNode *msg, int call_id, int rc, xmlNode *output, void *use g_hash_table_iter_init(&iter, a->values); while (g_hash_table_iter_next(&iter, (gpointer *) & peer, (gpointer *) & v)) { if (rc == pcmk_ok) { - crm_info("* Wrote %s[%s]=%s", - a->id, peer, pcmk__s(v->requested, "(unset)")); + pcmk__info("* Wrote %s[%s]=%s", a->id, peer, + pcmk__s(v->requested, "(unset)")); pcmk__str_update(&(v->requested), NULL); } else { do_crm_log(level, "* Could not write %s[%s]=%s", @@ -510,13 +510,14 @@ write_attribute(attribute_t *a, bool ignore_delay) if (should_write) { /* Defer the write if now's not a good time */ if (a->update && (a->update < last_cib_op_done)) { - crm_info("Write out of '%s' continuing: update %d considered lost", - a->id, a->update); + pcmk__info("Write out of '%s' continuing: update %d considered " + "lost", + a->id, a->update); a->update = 0; // Don't log this message again } else if (a->update) { - crm_info("Write out of '%s' delayed: update %d in progress", - a->id, a->update); + pcmk__info("Write out of '%s' delayed: update %d in progress", + a->id, a->update); goto done; } else if (mainloop_timer_running(a->timer)) { @@ -524,7 +525,7 @@ write_attribute(attribute_t *a, bool ignore_delay) mainloop_timer_stop(a->timer); crm_debug("Overriding '%s' write delay", a->id); } else { - crm_info("Delaying write of '%s'", a->id); + pcmk__info("Delaying write of '%s'", a->id); goto done; } } @@ -627,9 +628,9 @@ write_attribute(attribute_t *a, bool ignore_delay) } if (private_updates) { - crm_info("Processed %d private change%s for %s (set %s)", - private_updates, pcmk__plural_s(private_updates), - a->id, pcmk__s(a->set_id, "unspecified")); + pcmk__info("Processed %d private change%s for %s (set %s)", + private_updates, pcmk__plural_s(private_updates), + a->id, pcmk__s(a->set_id, "unspecified")); } if (cib_updates > 0) { char *id = pcmk__str_copy(a->id); @@ -637,9 +638,9 @@ write_attribute(attribute_t *a, bool ignore_delay) // Commit transaction a->update = the_cib->cmds->end_transaction(the_cib, true, cib_none); - crm_info("Sent CIB request %d with %d change%s for %s (set %s)", - a->update, cib_updates, pcmk__plural_s(cib_updates), - a->id, pcmk__s(a->set_id, "unspecified")); + pcmk__info("Sent CIB request %d with %d change%s for %s (set %s)", + a->update, cib_updates, pcmk__plural_s(cib_updates), + a->id, pcmk__s(a->set_id, "unspecified")); if (the_cib->cmds->register_callback_full(the_cib, a->update, CIB_OP_TIMEOUT_S, FALSE, id, diff --git a/daemons/attrd/attrd_corosync.c b/daemons/attrd/attrd_corosync.c index e154332e0f4..baf041f42fb 100644 --- a/daemons/attrd/attrd_corosync.c +++ b/daemons/attrd/attrd_corosync.c @@ -130,7 +130,7 @@ static void attrd_cpg_destroy(gpointer unused) { if (attrd_shutting_down(false)) { - crm_info("Disconnected from Corosync process group"); + pcmk__info("Disconnected from Corosync process group"); } else { pcmk__crit("Lost connection to Corosync process group, shutting down"); @@ -459,8 +459,8 @@ attrd_peer_clear_failure(pcmk__request_t *request) pcmk_parse_interval_spec(interval_spec, &interval_ms); if (attrd_failure_regex(®ex, rsc, op, interval_ms) != pcmk_ok) { - crm_info("Ignoring invalid request to clear failures for %s", - pcmk__s(rsc, "all resources")); + pcmk__info("Ignoring invalid request to clear failures for %s", + pcmk__s(rsc, "all resources")); return; } @@ -493,8 +493,8 @@ void attrd_peer_sync_response(const pcmk__node_status_t *peer, bool peer_won, xmlNode *xml) { - crm_info("Processing " PCMK__ATTRD_CMD_SYNC_RESPONSE " from %s", - peer->name); + pcmk__info("Processing " PCMK__ATTRD_CMD_SYNC_RESPONSE " from %s", + peer->name); if (peer_won) { /* Initialize the "seen" flag for all attributes to cleared, so we can diff --git a/daemons/attrd/attrd_elections.c b/daemons/attrd/attrd_elections.c index b597b1d80b1..8e66428dc12 100644 --- a/daemons/attrd/attrd_elections.c +++ b/daemons/attrd/attrd_elections.c @@ -43,7 +43,7 @@ attrd_start_election_if_needed(void) && (election_state(attrd_cluster) != election_in_progress) && !attrd_shutting_down(false)) { - crm_info("Starting an election to determine the writer"); + pcmk__info("Starting an election to determine the writer"); election_vote(attrd_cluster); } } @@ -98,7 +98,7 @@ attrd_handle_election_op(const pcmk__node_status_t *peer, xmlNode *xml) break; default: - crm_info("Ignoring election op from %s due to error", peer->name); + pcmk__info("Ignoring election op from %s due to error", peer->name); break; } } diff --git a/daemons/attrd/attrd_ipc.c b/daemons/attrd/attrd_ipc.c index f5fda14a5ee..a4a4691e2ca 100644 --- a/daemons/attrd/attrd_ipc.c +++ b/daemons/attrd/attrd_ipc.c @@ -171,13 +171,14 @@ attrd_client_peer_remove(pcmk__request_t *request) } if (host) { - crm_info("Client %s is requesting all values for %s be removed", - pcmk__client_name(request->ipc_client), host); + pcmk__info("Client %s is requesting all values for %s be removed", + pcmk__client_name(request->ipc_client), host); attrd_send_message(NULL, xml, false); /* ends up at attrd_peer_message() */ free(host_alloc); } else { - crm_info("Ignoring request by client %s to remove all peer values without specifying peer", - pcmk__client_name(request->ipc_client)); + pcmk__info("Ignoring request by client %s to remove all peer values " + "without specifying peer", + pcmk__client_name(request->ipc_client)); } pcmk__set_result(&request->result, CRM_EX_OK, PCMK_EXEC_DONE, NULL); @@ -220,7 +221,7 @@ attrd_client_query(pcmk__request_t *request) xmlNode * attrd_client_refresh(pcmk__request_t *request) { - crm_info("Updating all attributes"); + pcmk__info("Updating all attributes"); attrd_send_ack(request->ipc_client, request->ipc_id, request->ipc_flags); attrd_write_attributes(attrd_write_all|attrd_write_no_delay); @@ -344,7 +345,7 @@ handle_value_expansion(const char **value, xmlNode *xml, const char *op, int_value = attrd_expand_value(*value, (v? v->current : NULL)); - crm_info("Expanded %s=%s to %d", attr, *value, int_value); + pcmk__info("Expanded %s=%s to %d", attr, *value, int_value); pcmk__xe_set_int(xml, PCMK__XA_ATTR_VALUE, int_value); /* Replacing the value frees the previous memory, so re-query it */ @@ -493,8 +494,8 @@ attrd_ipc_accept(qb_ipcs_connection_t *c, uid_t uid, gid_t gid) { crm_trace("New client connection %p", c); if (attrd_shutting_down(false)) { - crm_info("Ignoring new connection from pid %d during shutdown", - pcmk__client_pid(c)); + pcmk__info("Ignoring new connection from pid %d during shutdown", + pcmk__client_pid(c)); return -ECONNREFUSED; } diff --git a/daemons/attrd/pacemaker-attrd.c b/daemons/attrd/pacemaker-attrd.c index 2eab680a934..b1d4c8c4019 100644 --- a/daemons/attrd/pacemaker-attrd.c +++ b/daemons/attrd/pacemaker-attrd.c @@ -161,7 +161,7 @@ main(int argc, char **argv) "Could not connect to the CIB"); goto done; } - crm_info("CIB connection active"); + pcmk__info("CIB connection active"); } if (attrd_cluster_connect() != pcmk_ok) { @@ -170,7 +170,7 @@ main(int argc, char **argv) "Could not connect to the cluster"); goto done; } - crm_info("Cluster connection active"); + pcmk__info("Cluster connection active"); // Initialization that requires the cluster to be connected attrd_election_init(); @@ -193,7 +193,7 @@ main(int argc, char **argv) done: if (initialized) { - crm_info("Shutting down attribute manager"); + pcmk__info("Shutting down attribute manager"); attrd_ipc_fini(); attrd_lrmd_disconnect(); diff --git a/daemons/based/based_callbacks.c b/daemons/based/based_callbacks.c index e669424f3c0..d8fd00cef3e 100644 --- a/daemons/based/based_callbacks.c +++ b/daemons/based/based_callbacks.c @@ -51,8 +51,8 @@ static int32_t cib_ipc_accept(qb_ipcs_connection_t * c, uid_t uid, gid_t gid) { if (cib_shutdown_flag) { - crm_info("Ignoring new IPC client [%d] during shutdown", - pcmk__client_pid(c)); + pcmk__info("Ignoring new IPC client [%d] during shutdown", + pcmk__client_pid(c)); return -ECONNREFUSED; } @@ -616,7 +616,7 @@ parse_peer_options(const cib__operation_t *operation, xmlNode *request, } } else if (pcmk__xe_attr_is_true(request, PCMK__XA_CIB_UPDATE)) { - crm_info("Detected legacy %s global update from %s", op, originator); + pcmk__info("Detected legacy %s global update from %s", op, originator); send_sync_request(NULL); return FALSE; @@ -1257,12 +1257,13 @@ initiate_exit(void) active = pcmk__cluster_num_active_nodes(); if (active < 2) { // This is the last active node - crm_info("Exiting without sending shutdown request (no active peers)"); + pcmk__info("Exiting without sending shutdown request (no active " + "peers)"); terminate_cib(CRM_EX_OK); return; } - crm_info("Sending shutdown request to %d peers", active); + pcmk__info("Sending shutdown request to %d peers", active); leaving = pcmk__xe_create(NULL, PCMK__XE_EXIT_NOTIFICATION); pcmk__xe_set(leaving, PCMK__XA_T, PCMK__VALUE_CIB); @@ -1325,18 +1326,18 @@ cib_shutdown(int nsig) crm_debug("Disconnecting %d remote clients", pcmk__ipc_client_count()); pcmk__foreach_ipc_client(disconnect_remote_client, NULL); - crm_info("Disconnected %d clients", disconnects); + pcmk__info("Disconnected %d clients", disconnects); } qb_ipcs_stats_get(ipcs_rw, &srv_stats, QB_FALSE); if (pcmk__ipc_client_count() == 0) { - crm_info("All clients disconnected (%d)", srv_stats.active_connections); + pcmk__info("All clients disconnected (%d)", srv_stats.active_connections); initiate_exit(); } else { - crm_info("Waiting on %d clients to disconnect (%d)", - pcmk__ipc_client_count(), srv_stats.active_connections); + pcmk__info("Waiting on %d clients to disconnect (%d)", + pcmk__ipc_client_count(), srv_stats.active_connections); } } diff --git a/daemons/based/based_io.c b/daemons/based/based_io.c index 2099a4a4018..6060bdb1a22 100644 --- a/daemons/based/based_io.c +++ b/daemons/based/based_io.c @@ -74,7 +74,7 @@ retrieveCib(const char *filename, const char *sigfile) int rc = cib_file_read_and_verify(filename, sigfile, &root); if (rc == pcmk_ok) { - crm_info("Loaded CIB from %s (with digest %s)", filename, sigfile); + pcmk__info("Loaded CIB from %s (with digest %s)", filename, sigfile); } else { pcmk__warn("Continuing but NOT using CIB from %s (with digest %s): %s", filename, sigfile, pcmk_strerror(rc)); diff --git a/daemons/based/based_messages.c b/daemons/based/based_messages.c index c15f44ef0b4..9ce39b4924c 100644 --- a/daemons/based/based_messages.c +++ b/daemons/based/based_messages.c @@ -49,7 +49,7 @@ cib_process_shutdown_req(const char *op, int options, const char *section, xmlNo *answer = NULL; if (pcmk__xe_get(req, PCMK__XA_CIB_ISREPLYTO) == NULL) { - crm_info("Peer %s is requesting to shut down", host); + pcmk__info("Peer %s is requesting to shut down", host); return pcmk_ok; } @@ -58,7 +58,7 @@ cib_process_shutdown_req(const char *op, int options, const char *section, xmlNo return -EINVAL; } - crm_info("Exiting after %s acknowledged our shutdown request", host); + pcmk__info("Exiting after %s acknowledged our shutdown request", host); terminate_cib(CRM_EX_OK); return pcmk_ok; } @@ -95,14 +95,14 @@ cib_process_readwrite(const char *op, int options, const char *section, xmlNode if (pcmk__str_eq(op, PCMK__CIB_REQUEST_PRIMARY, pcmk__str_none)) { if (!based_is_primary) { - crm_info("We are now in R/W mode"); + pcmk__info("We are now in R/W mode"); based_is_primary = true; } else { crm_debug("We are still in R/W mode"); } } else if (based_is_primary) { - crm_info("We are now in R/O mode"); + pcmk__info("We are now in R/O mode"); based_is_primary = false; } @@ -120,7 +120,7 @@ send_sync_request(const char *host) xmlNode *sync_me = pcmk__xe_create(NULL, "sync-me"); pcmk__node_status_t *peer = NULL; - crm_info("Requesting re-sync from %s", (host? host : "all peers")); + pcmk__info("Requesting re-sync from %s", (host? host : "all peers")); sync_in_progress = 1; pcmk__xe_set(sync_me, PCMK__XA_T, PCMK__VALUE_CIB); @@ -171,11 +171,11 @@ cib_process_ping(const char *op, int options, const char *section, xmlNode * req ); } - crm_info("Reporting our current digest to %s: %s for %s.%s.%s", - host, digest, - pcmk__xe_get(existing_cib, PCMK_XA_ADMIN_EPOCH), - pcmk__xe_get(existing_cib, PCMK_XA_EPOCH), - pcmk__xe_get(existing_cib, PCMK_XA_NUM_UPDATES)); + pcmk__info("Reporting our current digest to %s: %s for %s.%s.%s", + host, digest, + pcmk__xe_get(existing_cib, PCMK_XA_ADMIN_EPOCH), + pcmk__xe_get(existing_cib, PCMK_XA_EPOCH), + pcmk__xe_get(existing_cib, PCMK_XA_NUM_UPDATES)); free(digest); @@ -218,8 +218,9 @@ cib_process_upgrade_server(const char *op, int options, const char *section, xml crm_trace("Processing \"%s\" event", op); original_schema = pcmk__xe_get(existing_cib, PCMK_XA_VALIDATE_WITH); if (original_schema == NULL) { - crm_info("Rejecting upgrade request from %s: No " - PCMK_XA_VALIDATE_WITH, host); + pcmk__info("Rejecting upgrade request from %s: No " + PCMK_XA_VALIDATE_WITH, + host); return -pcmk_err_cib_corrupt; } @@ -256,9 +257,10 @@ cib_process_upgrade_server(const char *op, int options, const char *section, xml origin = pcmk__search_node_caches(0, host, NULL, pcmk__node_search_cluster_member); - crm_info("Rejecting upgrade request from %s: %s " - QB_XS " rc=%d peer=%s", host, pcmk_strerror(rc), rc, - (origin? origin->name : "lost")); + pcmk__info("Rejecting upgrade request from %s: %s " + QB_XS " rc=%d peer=%s", + host, pcmk_strerror(rc), rc, + ((origin != NULL)? origin->name : "lost")); if (origin) { xmlNode *up = pcmk__xe_create(NULL, __func__); diff --git a/daemons/based/based_remote.c b/daemons/based/based_remote.c index e9078d9eb9c..fb33dbdfbdd 100644 --- a/daemons/based/based_remote.c +++ b/daemons/based/based_remote.c @@ -67,7 +67,7 @@ static int cib_remote_msg(gpointer data); static void remote_connection_destroy(gpointer user_data) { - crm_info("No longer listening for remote connections"); + pcmk__info("No longer listening for remote connections"); return; } @@ -311,9 +311,9 @@ cib_remote_listen(gpointer data) new_client->remote->auth_timeout = pcmk__create_timer(REMOTE_AUTH_TIMEOUT, remote_auth_timeout_cb, new_client); - crm_info("%s connection from %s pending authentication for client %s", - ((ssock == remote_tls_fd)? "Encrypted" : "Clear-text"), - ipstr, new_client->id); + pcmk__info("%s connection from %s pending authentication for client %s", + ((ssock == remote_tls_fd)? "Encrypted" : "Clear-text"), ipstr, + new_client->id); new_client->remote->source = mainloop_add_fd("cib-remote-client", G_PRIORITY_DEFAULT, csock, new_client, @@ -547,7 +547,7 @@ construct_pam_passwd(int num_msg, const struct pam_message **msg, // Password requested break; case PAM_TEXT_INFO: - crm_info("PAM: %s", msg[0]->msg); + pcmk__info("PAM: %s", msg[0]->msg); data = NULL; break; case PAM_ERROR_MSG: diff --git a/daemons/based/pacemaker-based.c b/daemons/based/pacemaker-based.c index 1654787e801..967705ffe24 100644 --- a/daemons/based/pacemaker-based.c +++ b/daemons/based/pacemaker-based.c @@ -59,7 +59,7 @@ static crm_exit_t exit_code = CRM_EX_OK; static void cib_enable_writes(int nsig) { - crm_info("(Re)enabling disk writes"); + pcmk__info("(Re)enabling disk writes"); cib_writes_enabled = TRUE; } @@ -342,7 +342,7 @@ static void cib_cs_destroy(gpointer user_data) { if (cib_shutdown_flag) { - crm_info("Corosync disconnection complete"); + pcmk__info("Corosync disconnection complete"); } else { pcmk__crit("Exiting immediately after losing connection to cluster " "layer"); @@ -361,7 +361,7 @@ cib_peer_update_callback(enum pcmk__node_update type, if (cib_shutdown_flag && (pcmk__cluster_num_active_nodes() < 2) && (pcmk__ipc_client_count() == 0)) { - crm_info("Exiting after no more peers or clients remain"); + pcmk__info("Exiting after no more peers or clients remain"); terminate_cib(-1); } break; diff --git a/daemons/controld/controld_callbacks.c b/daemons/controld/controld_callbacks.c index eb5d920d6d1..1bbea73e6b1 100644 --- a/daemons/controld/controld_callbacks.c +++ b/daemons/controld/controld_callbacks.c @@ -151,9 +151,9 @@ peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, switch (type) { case pcmk__node_update_name: /* If we've never seen the node, then it also won't be in the status section */ - crm_info("%s node %s is now %s", - (is_remote? "Remote" : "Cluster"), - node->name, state_text(node->state)); + pcmk__info("%s node %s is now %s", + (is_remote? "Remote" : "Cluster"), node->name, + state_text(node->state)); return; case pcmk__node_update_state: @@ -163,9 +163,9 @@ peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, CRM_CHECK(!pcmk__str_eq(data, node->state, pcmk__str_casei), return); - crm_info("%s node %s is now %s (was %s)", - (is_remote? "Remote" : "Cluster"), - node->name, state_text(node->state), state_text(data)); + pcmk__info("%s node %s is now %s (was %s)", + (is_remote? "Remote" : "Cluster"), node->name, + state_text(node->state), state_text(data)); if (pcmk__str_eq(PCMK_VALUE_MEMBER, node->state, pcmk__str_none)) { appeared = TRUE; @@ -192,10 +192,10 @@ peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, dc_s = PCMK_VALUE_TRUE; } - crm_info("Node %s is %s a peer " QB_XS - " DC=%s old=%#07x new=%#07x", - node->name, (appeared? "now" : "no longer"), - pcmk__s(dc_s, ""), old, node->processes); + pcmk__info("Node %s is %s a peer " QB_XS + " DC=%s old=%#07x new=%#07x", + node->name, (appeared? "now" : "no longer"), + pcmk__s(dc_s, ""), old, node->processes); } if (!pcmk__is_set((node->processes ^ old), @@ -300,8 +300,9 @@ peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, check_join_state(controld_globals.fsa_state, __func__); } if (alive >= 0) { - crm_info("%s of peer %s is in progress " QB_XS " action=%d", - task, node->name, down->id); + pcmk__info("%s of peer %s is in progress " + QB_XS " action=%d", + task, node->name, down->id); } else { pcmk__notice("%s of peer %s is complete " QB_XS " action=%d", @@ -327,8 +328,9 @@ peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, } else if (appeared == FALSE) { if ((controld_globals.transition_graph == NULL) || (controld_globals.transition_graph->id <= 0)) { - crm_info("Stonith/shutdown of node %s is unknown to the " - "current DC", node->name); + pcmk__info("Stonith/shutdown of node %s is unknown to the " + "current DC", + node->name); } else { pcmk__warn("Stonith/shutdown of node %s was not expected", node->name); diff --git a/daemons/controld/controld_cib.c b/daemons/controld/controld_cib.c index a2c603d4683..064651de0a9 100644 --- a/daemons/controld/controld_cib.c +++ b/daemons/controld/controld_cib.c @@ -43,7 +43,7 @@ handle_cib_disconnect(gpointer user_data) controld_clear_fsa_input_flags(R_CIB_CONNECTED); } else { // Expected - crm_info("Disconnected from the CIB manager"); + pcmk__info("Disconnected from the CIB manager"); } } @@ -138,8 +138,8 @@ do_cib_control(long long action, if ((cib_conn->state != cib_disconnected) && (pending_rsc_update != 0)) { - crm_info("Waiting for resource update %d to complete", - pending_rsc_update); + pcmk__info("Waiting for resource update %d to complete", + pending_rsc_update); crmd_fsa_stall(FALSE); return; } @@ -167,7 +167,8 @@ do_cib_control(long long action, } if (rc != pcmk_ok) { - crm_info("Could not connect to the CIB manager: %s", pcmk_strerror(rc)); + pcmk__info("Could not connect to the CIB manager: %s", + pcmk_strerror(rc)); } else if (cib_conn->cmds->set_connection_dnotify(cib_conn, dnotify_fn) != pcmk_ok) { @@ -242,8 +243,8 @@ crmd_cib_smart_opt(void) if ((controld_globals.fsa_state == S_ELECTION) || (controld_globals.fsa_state == S_PENDING)) { - crm_info("Sending update to local CIB in state: %s", - fsa_state2string(controld_globals.fsa_state)); + pcmk__info("Sending update to local CIB in state: %s", + fsa_state2string(controld_globals.fsa_state)); cib__set_call_options(call_opt, "update", cib_none); } return call_opt; @@ -372,8 +373,8 @@ controld_delete_node_state(const char *uname, enum controld_section_e section, cib_xpath|cib_multiple); cib_rc = cib->cmds->remove(cib, xpath, NULL, options); fsa_register_cib_callback(cib_rc, desc, cib_delete_callback); - crm_info("Deleting %s (via CIB call %d) " QB_XS " xpath=%s", - desc, cib_rc, xpath); + pcmk__info("Deleting %s (via CIB call %d) " QB_XS " xpath=%s", desc, cib_rc, + xpath); // CIB library handles freeing desc free(xpath); @@ -443,8 +444,8 @@ controld_delete_resource_history(const char *rsc_id, const char *node, free(desc); } else { - crm_info("Clearing %s (via CIB call %d) " QB_XS " xpath=%s", - desc, rc, xpath); + pcmk__info("Clearing %s (via CIB call %d) " QB_XS " xpath=%s", desc, rc, + xpath); fsa_register_cib_callback(rc, desc, cib_delete_callback); // CIB library handles freeing desc } diff --git a/daemons/controld/controld_control.c b/daemons/controld/controld_control.c index a739451eeb1..728444b43f4 100644 --- a/daemons/controld/controld_control.c +++ b/daemons/controld/controld_control.c @@ -48,7 +48,7 @@ do_ha_control(long long action, if (action & A_HA_DISCONNECT) { pcmk_cluster_disconnect(controld_globals.cluster); - crm_info("Disconnected from the cluster"); + pcmk__info("Disconnected from the cluster"); controld_set_fsa_input_flags(R_HA_DISCONNECTED); } @@ -86,7 +86,7 @@ do_ha_control(long long action, populate_cib_nodes(node_update_none, __func__); controld_clear_fsa_input_flags(R_HA_DISCONNECTED); - crm_info("Connected to the cluster"); + pcmk__info("Connected to the cluster"); } if (action & ~(A_HA_CONNECT | A_HA_DISCONNECT)) { @@ -117,8 +117,8 @@ do_shutdown_req(long long action, controld_set_fsa_input_flags(R_SHUTDOWN); //controld_set_fsa_input_flags(R_STAYDOWN); - crm_info("Sending shutdown request to all peers (DC is %s)", - pcmk__s(controld_globals.dc_name, "not set")); + pcmk__info("Sending shutdown request to all peers (DC is %s)", + pcmk__s(controld_globals.dc_name, "not set")); msg = pcmk__new_request(pcmk_ipc_controld, CRM_SYSTEM_CRMD, NULL, CRM_SYSTEM_CRMD, CRM_OP_SHUTDOWN_REQ, NULL); @@ -215,10 +215,10 @@ crmd_exit(crm_exit_t exit_code) iter = iter->next) { fsa_data_t *fsa_data = (fsa_data_t *) iter->data; - crm_info("Dropping %s: [ state=%s cause=%s origin=%s ]", - fsa_input2string(fsa_data->fsa_input), - fsa_state2string(controld_globals.fsa_state), - fsa_cause2string(fsa_data->fsa_cause), fsa_data->origin); + pcmk__info("Dropping %s: [ state=%s cause=%s origin=%s ]", + fsa_input2string(fsa_data->fsa_input), + fsa_state2string(controld_globals.fsa_state), + fsa_cause2string(fsa_data->fsa_cause), fsa_data->origin); delete_fsa_input(fsa_data); } @@ -463,35 +463,38 @@ do_started(long long action, } else if (!pcmk__is_set(controld_globals.fsa_input_register, R_MEMBERSHIP)) { - crm_info("Delaying start, no membership data (%.16llx)", R_MEMBERSHIP); + pcmk__info("Delaying start, no membership data (%.16llx)", + R_MEMBERSHIP); crmd_fsa_stall(TRUE); return; } else if (!pcmk__is_set(controld_globals.fsa_input_register, R_LRM_CONNECTED)) { - crm_info("Delaying start, not connected to executor (%.16llx)", R_LRM_CONNECTED); + pcmk__info("Delaying start, not connected to executor (%.16llx)", + R_LRM_CONNECTED); crmd_fsa_stall(TRUE); return; } else if (!pcmk__is_set(controld_globals.fsa_input_register, R_CIB_CONNECTED)) { - crm_info("Delaying start, CIB not connected (%.16llx)", R_CIB_CONNECTED); + pcmk__info("Delaying start, CIB not connected (%.16llx)", + R_CIB_CONNECTED); crmd_fsa_stall(TRUE); return; } else if (!pcmk__is_set(controld_globals.fsa_input_register, R_READ_CONFIG)) { - crm_info("Delaying start, Config not read (%.16llx)", R_READ_CONFIG); + pcmk__info("Delaying start, Config not read (%.16llx)", R_READ_CONFIG); crmd_fsa_stall(TRUE); return; } else if (!pcmk__is_set(controld_globals.fsa_input_register, R_PEER_DATA)) { - crm_info("Delaying start, No peer data (%.16llx)", R_PEER_DATA); + pcmk__info("Delaying start, No peer data (%.16llx)", R_PEER_DATA); crmd_fsa_stall(TRUE); return; } diff --git a/daemons/controld/controld_election.c b/daemons/controld/controld_election.c index 026c9f13bdc..89ce6da5968 100644 --- a/daemons/controld/controld_election.c +++ b/daemons/controld/controld_election.c @@ -209,7 +209,7 @@ do_dc_takeover(long long action, const char *cluster_layer_s = pcmk_cluster_layer_text(cluster_layer); pid_t watchdog = pcmk__locate_sbd(); - crm_info("Taking over DC status for this partition"); + pcmk__info("Taking over DC status for this partition"); controld_set_fsa_input_flags(R_THE_DC); execute_stonith_cleanup(); @@ -258,7 +258,7 @@ do_dc_release(long long action, controld_expect_sched_reply(NULL); } else if (action & A_DC_RELEASED) { - crm_info("DC role released"); + pcmk__info("DC role released"); if (pcmk__is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { xmlNode *update = NULL; pcmk__node_status_t *node = controld_get_local_node_status(); diff --git a/daemons/controld/controld_execd.c b/daemons/controld/controld_execd.c index 755afee2583..69f8141690f 100644 --- a/daemons/controld/controld_execd.c +++ b/daemons/controld/controld_execd.c @@ -184,7 +184,8 @@ update_history_cache(lrm_state_t * lrm_state, lrmd_rsc_info_t * rsc, lrmd_event_ entry->rsc.provider = pcmk__str_copy(rsc->provider); } else if (entry == NULL) { - crm_info("Resource %s no longer exists, not updating cache", op->rsc_id); + pcmk__info("Resource %s no longer exists, not updating cache", + op->rsc_id); return; } @@ -320,7 +321,7 @@ try_local_executor_connect(long long action, fsa_data_t *msg_data, rc = controld_connect_local_executor(lrm_state); if (rc == pcmk_rc_ok) { controld_set_fsa_input_flags(R_LRM_CONNECTED); - crm_info("Connection to the local executor established"); + pcmk__info("Connection to the local executor established"); return; } @@ -471,7 +472,7 @@ lrm_state_verify_stopped(lrm_state_t * lrm_state, enum crmd_fsa_state cur_state, counter++; if (log_level == LOG_ERR) { - crm_info("Found %s active at %s", entry->id, when); + pcmk__info("Found %s active at %s", entry->id, when); } else { crm_trace("Found %s active at %s", entry->id, when); } @@ -672,9 +673,9 @@ notify_deleted(lrm_state_t * lrm_state, ha_msg_input_t * input, const char *rsc_ const char *from_sys = pcmk__xe_get(input->msg, PCMK__XA_CRM_SYS_FROM); const char *from_host = pcmk__xe_get(input->msg, PCMK__XA_SRC); - crm_info("Notifying %s on %s that %s was%s deleted", - from_sys, (from_host? from_host : "localhost"), rsc_id, - ((rc == pcmk_ok)? "" : " not")); + pcmk__info("Notifying %s on %s that %s was%s deleted", from_sys, + pcmk__s(from_host, "localhost"), rsc_id, + ((rc == pcmk_ok)? "" : " not")); op = construct_op(lrm_state, input->xml, rsc_id, PCMK_ACTION_DELETE); controld_rc2event(op, pcmk_legacy2rc(rc)); controld_ack_event_directly(from_host, from_sys, NULL, op, rsc_id); @@ -702,8 +703,8 @@ lrm_remove_deleted_op(gpointer key, gpointer value, gpointer user_data) active_op_t *pending = value; if (pcmk__str_eq(rsc, pending->rsc_id, pcmk__str_none)) { - crm_info("Removing op %s:%d for deleted resource %s", - pending->op_key, pending->call_id, rsc); + pcmk__info("Removing op %s:%d for deleted resource %s", pending->op_key, + pending->call_id, rsc); return TRUE; } return FALSE; @@ -822,7 +823,7 @@ cancel_op(lrm_state_t * lrm_state, const char *rsc_id, const char *key, int op, controld_set_active_op_flags(pending, active_op_cancelled); } else { - crm_info("No pending op found for %s", key); + pcmk__info("No pending op found for %s", key); free(local_key); return FALSE; } @@ -974,8 +975,8 @@ delete_resource(lrm_state_t *lrm_state, const char *id, lrmd_rsc_info_t *rsc, { int rc = pcmk_ok; - crm_info("Removing resource %s from executor for %s%s%s", - id, sys, (user? " as " : ""), (user? user : "")); + pcmk__info("Removing resource %s from executor for %s%s%s", id, sys, + ((user != NULL)? " as " : ""), pcmk__s(user, "")); if (rsc && unregister) { rc = lrm_state_unregister_rsc(lrm_state, id, 0); @@ -984,7 +985,7 @@ delete_resource(lrm_state_t *lrm_state, const char *id, lrmd_rsc_info_t *rsc, if (rc == pcmk_ok) { crm_trace("Resource %s deleted from executor", id); } else if (rc == -EINPROGRESS) { - crm_info("Deletion of resource '%s' from executor is pending", id); + pcmk__info("Deletion of resource '%s' from executor is pending", id); if (request) { struct pending_deletion_op_s *op = NULL; char *ref = pcmk__xe_get_copy(request->msg, PCMK_XA_REFERENCE); @@ -1046,7 +1047,7 @@ force_reprobe(lrm_state_t *lrm_state, const char *from_sys, GHashTableIter gIter; rsc_history_t *entry = NULL; - crm_info("Clearing resource history on node %s", lrm_state->node_name); + pcmk__info("Clearing resource history on node %s", lrm_state->node_name); g_hash_table_iter_init(&gIter, lrm_state->resource_history); while (g_hash_table_iter_next(&gIter, NULL, (void **)&entry)) { /* only unregister the resource during a reprobe if it is not a remote connection @@ -1110,14 +1111,16 @@ synthesize_lrmd_failure(lrm_state_t *lrm_state, const xmlNode *action, if ((xml_rsc == NULL) || (pcmk__xe_id(xml_rsc) == NULL)) { /* @TODO Should we do something else, like direct ack? */ - crm_info("Can't fake %s failure (%d) on %s without resource configuration", - pcmk__xe_get(action, PCMK__XA_OPERATION_KEY), rc, target_node); + pcmk__info("Can't fake %s failure (%d) on %s without resource " + "configuration", + pcmk__xe_get(action, PCMK__XA_OPERATION_KEY), rc, + target_node); return; } else if(operation == NULL) { /* This probably came from crm_resource -C, nothing to do */ - crm_info("Can't fake %s failure (%d) on %s without operation", - pcmk__xe_id(xml_rsc), rc, target_node); + pcmk__info("Can't fake %s failure (%d) on %s without operation", + pcmk__xe_id(xml_rsc), rc, target_node); return; } @@ -1130,8 +1133,8 @@ synthesize_lrmd_failure(lrm_state_t *lrm_state, const xmlNode *action, fake_op_status(lrm_state, op, op_status, rc, exit_reason); } - crm_info("Faking " PCMK__OP_FMT " result (%d) on %s", - op->rsc_id, op->op_type, op->interval_ms, op->rc, target_node); + pcmk__info("Faking " PCMK__OP_FMT " result (%d) on %s", op->rsc_id, + op->op_type, op->interval_ms, op->rc, target_node); // Process the result as if it came from the LRM process_lrm_event(lrm_state, op, NULL, action); @@ -1199,7 +1202,7 @@ fail_lrm_resource(xmlNode *xml, lrm_state_t *lrm_state, const char *user_name, if (get_lrm_resource(lrm_state, xml_rsc, TRUE, &rsc) == pcmk_ok) { - crm_info("Failing resource %s...", rsc->id); + pcmk__info("Failing resource %s...", rsc->id); fake_op_status(lrm_state, op, PCMK_EXEC_DONE, PCMK_OCF_UNKNOWN_ERROR, "Simulated failure"); process_lrm_event(lrm_state, op, NULL, xml); @@ -1207,7 +1210,7 @@ fail_lrm_resource(xmlNode *xml, lrm_state_t *lrm_state, const char *user_name, lrmd_free_rsc_info(rsc); } else { - crm_info("Cannot find/create resource in order to fail it..."); + pcmk__info("Cannot find/create resource in order to fail it..."); crm_log_xml_warn(xml, "bad input"); fake_op_status(lrm_state, op, PCMK_EXEC_ERROR, PCMK_OCF_UNKNOWN_ERROR, "Cannot fail unknown resource"); @@ -1289,7 +1292,7 @@ static bool do_lrm_cancel(ha_msg_input_t *input, lrm_state_t *lrm_state, char *op_id = make_stop_id(rsc->id, call); if (is_remote_lrmd_ra(NULL, NULL, rsc->id) == FALSE) { - crm_info("Nothing known about operation %d for %s", call, op_key); + pcmk__info("Nothing known about operation %d for %s", call, op_key); } controld_delete_action_history_by_key(rsc->id, lrm_state->node_name, op_key, call); @@ -1558,11 +1561,11 @@ do_lrm_invoke(long long action, struct metadata_cb_data *data = NULL; data = new_metadata_cb_data(rsc, input->xml); - crm_info("Retrieving metadata for %s (%s%s%s:%s) asynchronously", - rsc->id, rsc->standard, - ((rsc->provider == NULL)? "" : ":"), - ((rsc->provider == NULL)? "" : rsc->provider), - rsc->type); + pcmk__info("Retrieving metadata for %s (%s%s%s:%s) " + "asynchronously", + rsc->id, rsc->standard, + ((rsc->provider != NULL)? ":" : ""), + pcmk__s(rsc->provider, ""), rsc->type); (void) lrmd__metadata_async(rsc, metadata_complete, (void *) data); } else { @@ -1827,8 +1830,8 @@ stop_recurring_actions(gpointer key, gpointer value, gpointer user_data) active_op_t *op = value; if (op->interval_ms != 0) { - crm_info("Cancelling op %d for %s (%s)", op->call_id, op->rsc_id, - (const char *) key); + pcmk__info("Cancelling op %d for %s (%s)", op->call_id, op->rsc_id, + (const char *) key); remove = !cancel_op(lrm_state, op->rsc_id, key, op->call_id, FALSE); } @@ -2023,7 +2026,9 @@ do_lrm_rsc_op(lrm_state_t *lrm_state, lrmd_rsc_info_t *rsc, xmlNode *msg, && (op->start_delay > START_DELAY_THRESHOLD)) { int target_rc = PCMK_OCF_OK; - crm_info("Faking confirmation of %s: execution postponed for over 5 minutes", op_id); + pcmk__info("Faking confirmation of %s: execution postponed for " + "over 5 minutes", + op_id); decode_transition_key(op->user_data, NULL, NULL, NULL, &target_rc); lrmd__set_result(op, target_rc, PCMK_EXEC_DONE, NULL); controld_ack_event_directly(NULL, NULL, rsc, op, rsc->id); @@ -2230,9 +2235,10 @@ process_lrm_event(lrm_state_t *lrm_state, lrmd_event_data_t *op, const char *type = pcmk__xe_get(xml, PCMK_XA_TYPE); if (standard && type) { - crm_info("%s agent information not cached, using %s%s%s:%s from action XML", - op->rsc_id, standard, - (provider? ":" : ""), (provider? provider : ""), type); + pcmk__info("%s agent information not cached, using %s%s%s:%s from " + "action XML", + op->rsc_id, standard, (provider? ":" : ""), + pcmk__s(provider, ""), type); rsc = lrmd_new_rsc_info(op->rsc_id, standard, provider, type); } else { pcmk__err("Can't process %s result because %s agent information " @@ -2401,7 +2407,8 @@ process_lrm_event(lrm_state_t *lrm_state, lrmd_event_data_t *op, } if (op->rsc_deleted) { - crm_info("Deletion of resource '%s' complete after %s", op->rsc_id, op_key); + pcmk__info("Deletion of resource '%s' complete after %s", op->rsc_id, + op_key); if (lrm_state) { delete_rsc_entry(lrm_state, NULL, op->rsc_id, NULL, pcmk_ok, NULL, true); diff --git a/daemons/controld/controld_fencing.c b/daemons/controld/controld_fencing.c index c0e11caa442..5edd932f761 100644 --- a/daemons/controld/controld_fencing.c +++ b/daemons/controld/controld_fencing.c @@ -206,7 +206,8 @@ cib_fencing_updated(xmlNode *msg, int call_id, int rc, xmlNode *output, "CIB update failed", NULL); } else { - crm_info("Fencing update %d for %s: complete", call_id, (char *)user_data); + pcmk__info("Fencing update %d for %s: complete", call_id, + (const char *) user_data); } } @@ -245,7 +246,8 @@ update_node_state_after_fencing(const char *target, const char *target_xml_id) } if (peer->xml_id == NULL) { - crm_info("Recording XML ID '%s' for node '%s'", target_xml_id, target); + pcmk__info("Recording XML ID '%s' for node '%s'", target_xml_id, + target); peer->xml_id = pcmk__str_copy(target_xml_id); } @@ -354,7 +356,7 @@ purge_stonith_cleanup(void) for (iter = stonith_cleanup_list; iter != NULL; iter = iter->next) { char *target = iter->data; - crm_info("Purging %s from stonith cleanup list", target); + pcmk__info("Purging %s from stonith cleanup list", target); free(target); } g_list_free(stonith_cleanup_list); @@ -457,7 +459,7 @@ tengine_stonith_connection_destroy(stonith_t *st, stonith_event_t *e) mainloop_timer_start(controld_fencer_connect_timer); } } else { - crm_info("Disconnected from fencer"); + pcmk__info("Disconnected from fencer"); } if (stonith_api) { @@ -607,8 +609,8 @@ handle_fence_notification(stonith_t *st, stonith_event_t *event) /* Abort the current transition if it wasn't the cluster that * initiated fencing. */ - crm_info("External fencing operation from %s fenced %s", - client, event->target); + pcmk__info("External fencing operation from %s fenced %s", + client, event->target); abort_transition(PCMK_SCORE_INFINITY, pcmk__graph_restart, "External Fencing Operation", NULL); } @@ -708,8 +710,9 @@ controld_timer_fencer_connect(gpointer user_data) return G_SOURCE_CONTINUE; } else { - crm_info("Fencer connection failed (ignoring because no longer required): %s " - QB_XS " rc=%d", pcmk_strerror(rc), rc); + pcmk__info("Fencer connection failed (ignoring because no " + "longer required): %s " QB_XS " rc=%d", + pcmk_strerror(rc), rc); } return G_SOURCE_REMOVE; } @@ -774,7 +777,8 @@ do_stonith_history_sync(gpointer user_data) stonith_history_free(history); return TRUE; } else { - crm_info("Skip triggering stonith history-sync as stonith is disconnected"); + pcmk__info("Skip triggering stonith history-sync as stonith is " + "disconnected"); return FALSE; } } @@ -814,13 +818,13 @@ tengine_stonith_callback(stonith_t *stonith, stonith_callback_data_t *data) if (controld_globals.transition_graph->complete || (stonith_id < 0) || !pcmk__str_eq(uuid, controld_globals.te_uuid, pcmk__str_none) || (controld_globals.transition_graph->id != transition_id)) { - crm_info("Ignoring fence operation %d result: " - "Not from current transition " QB_XS - " complete=%s action=%d uuid=%s (vs %s) transition=%d (vs %d)", - data->call_id, - pcmk__btoa(controld_globals.transition_graph->complete), - stonith_id, uuid, controld_globals.te_uuid, transition_id, - controld_globals.transition_graph->id); + pcmk__info("Ignoring fence operation %d result: Not from current " + "transition " QB_XS " complete=%s action=%d uuid=%s (vs %s) " + "transition=%d (vs %d)", + data->call_id, + pcmk__btoa(controld_globals.transition_graph->complete), + stonith_id, uuid, controld_globals.te_uuid, transition_id, + controld_globals.transition_graph->id); goto bail; } @@ -845,7 +849,8 @@ tengine_stonith_callback(stonith_t *stonith, stonith_callback_data_t *data) const char *op = crm_meta_value(action->params, PCMK__META_STONITH_ACTION); - crm_info("Fence operation %d for %s succeeded", data->call_id, target); + pcmk__info("Fence operation %d for %s succeeded", data->call_id, + target); if (!(pcmk__is_set(action->flags, pcmk__graph_action_confirmed))) { te_action_confirmed(action, NULL); if (pcmk__str_eq(PCMK_ACTION_ON, op, pcmk__str_casei)) { @@ -1100,7 +1105,8 @@ te_trigger_stonith_history_sync(bool long_timeout) FALSE, stonith_history_sync_set_trigger, NULL); } - crm_info("Fence history will be synchronized cluster-wide within 30 seconds"); + pcmk__info("Fence history will be synchronized cluster-wide within 30 " + "seconds"); mainloop_timer_start(stonith_history_sync_timer_long); } else { if(stonith_history_sync_timer_short == NULL) { @@ -1109,7 +1115,8 @@ te_trigger_stonith_history_sync(bool long_timeout) FALSE, stonith_history_sync_set_trigger, NULL); } - crm_info("Fence history will be synchronized cluster-wide within 5 seconds"); + pcmk__info("Fence history will be synchronized cluster-wide within 5 " + "seconds"); mainloop_timer_start(stonith_history_sync_timer_short); } diff --git a/daemons/controld/controld_fsa.c b/daemons/controld/controld_fsa.c index 492bb3b48a6..26df3f43f87 100644 --- a/daemons/controld/controld_fsa.c +++ b/daemons/controld/controld_fsa.c @@ -513,8 +513,8 @@ check_join_counts(fsa_data_t *msg_data) register_fsa_input(C_FSA_INTERNAL, I_ELECTION, NULL); } else if (controld_globals.membership_id != controld_globals.peer_seq) { - crm_info("New join needed because membership changed (%llu -> %llu)", - controld_globals.membership_id, controld_globals.peer_seq); + pcmk__info("New join needed because membership changed (%llu -> %llu)", + controld_globals.membership_id, controld_globals.peer_seq); register_fsa_input_before(C_FSA_INTERNAL, I_NODE_JOIN, NULL); } else { @@ -606,7 +606,8 @@ do_state_transition(enum crmd_fsa_state cur_state, purge_stonith_cleanup(); if (pcmk__is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { - crm_info("(Re)Issuing shutdown request now" " that we have a new DC"); + pcmk__info("(Re)Issuing shutdown request now" " that we have a " + "new DC"); controld_set_fsa_action_flags(A_SHUTDOWN_REQ); } CRM_LOG_ASSERT(controld_globals.dc_name != NULL); @@ -642,8 +643,9 @@ do_state_transition(enum crmd_fsa_state cur_state, controld_reset_counter_election_timer(); CRM_LOG_ASSERT(AM_I_DC); if (cause == C_TIMER_POPPED) { - crm_info("Progressed to state %s after %s", - fsa_state2string(next_state), fsa_cause2string(cause)); + pcmk__info("Progressed to state %s after %s", + fsa_state2string(next_state), + fsa_cause2string(cause)); } check_join_counts(msg_data); break; @@ -657,7 +659,8 @@ do_state_transition(enum crmd_fsa_state cur_state, case S_IDLE: CRM_LOG_ASSERT(AM_I_DC); if (pcmk__is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { - crm_info("(Re)Issuing shutdown request now" " that we are the DC"); + pcmk__info("(Re)Issuing shutdown request now" " that we are " + "the DC"); controld_set_fsa_action_flags(A_SHUTDOWN_REQ); } controld_start_recheck_timer(); diff --git a/daemons/controld/controld_join_dc.c b/daemons/controld/controld_join_dc.c index 9f2b6c41772..3fe37d6eb47 100644 --- a/daemons/controld/controld_join_dc.c +++ b/daemons/controld/controld_join_dc.c @@ -257,8 +257,8 @@ join_make_offer(gpointer key, gpointer value, gpointer user_data) pcmk__assert(member != NULL); if (!pcmk__cluster_is_node_active(member)) { - crm_info("Not making join-%d offer to inactive node %s", - current_join_id, pcmk__s(member->name, "with unknown name")); + pcmk__info("Not making join-%d offer to inactive node %s", + current_join_id, pcmk__s(member->name, "with unknown name")); if ((member->expected == NULL) && pcmk__str_eq(member->state, PCMK__VALUE_LOST, pcmk__str_none)) { /* You would think this unsafe, but in fact this plus an @@ -276,23 +276,23 @@ join_make_offer(gpointer key, gpointer value, gpointer user_data) } if (member->name == NULL) { - crm_info("Not making join-%d offer to node uuid %s with unknown name", - current_join_id, member->xml_id); + pcmk__info("Not making join-%d offer to node uuid %s with unknown name", + current_join_id, member->xml_id); return; } if (controld_globals.membership_id != controld_globals.peer_seq) { controld_globals.membership_id = controld_globals.peer_seq; - crm_info("Making join-%d offers based on membership event %llu", - current_join_id, controld_globals.peer_seq); + pcmk__info("Making join-%d offers based on membership event %llu", + current_join_id, controld_globals.peer_seq); } if (user_data != NULL) { enum controld_join_phase phase = controld_get_join_phase(member); if (phase > controld_join_none) { - crm_info("Not making join-%d offer to already known node %s (%s)", - current_join_id, member->name, join_phase_text(phase)); + pcmk__info("Not making join-%d offer to already known node %s (%s)", + current_join_id, member->name, join_phase_text(phase)); return; } } @@ -305,7 +305,7 @@ join_make_offer(gpointer key, gpointer value, gpointer user_data) // Advertise our feature set so the joining node can bail if not compatible pcmk__xe_set(offer, PCMK_XA_CRM_FEATURE_SET, CRM_FEATURE_SET); - crm_info("Sending join-%d offer to %s", current_join_id, member->name); + pcmk__info("Sending join-%d offer to %s", current_join_id, member->name); pcmk__cluster_send_message(member, pcmk_ipc_controld, offer); pcmk__xml_free(offer); @@ -330,13 +330,13 @@ do_dc_join_offer_all(long long action, update_dc(NULL); if (cause == C_HA_MESSAGE && current_input == I_NODE_JOIN) { - crm_info("A new node joined the cluster"); + pcmk__info("A new node joined the cluster"); } g_hash_table_foreach(pcmk__peer_cache, join_make_offer, NULL); count = crmd_join_phase_count(controld_join_welcomed); - crm_info("Waiting on join-%d requests from %d outstanding node%s", - current_join_id, count, pcmk__plural_s(count)); + pcmk__info("Waiting on join-%d requests from %d outstanding node%s", + current_join_id, count, pcmk__plural_s(count)); // Don't waste time by invoking the scheduler yet } @@ -354,8 +354,9 @@ do_dc_join_offer_one(long long action, const char *join_to = NULL; if (msg_data->data == NULL) { - crm_info("Making join-%d offers to any unconfirmed nodes " - "because an unknown node joined", current_join_id); + pcmk__info("Making join-%d offers to any unconfirmed nodes because an " + "unknown node joined", + current_join_id); g_hash_table_foreach(pcmk__peer_cache, join_make_offer, &member); check_join_state(cur_state, __func__); return; @@ -397,8 +398,8 @@ do_dc_join_offer_one(long long action, NULL); count = crmd_join_phase_count(controld_join_welcomed); - crm_info("Waiting on join-%d requests from %d outstanding node%s", - current_join_id, count, pcmk__plural_s(count)); + pcmk__info("Waiting on join-%d requests from %d outstanding node%s", + current_join_id, count, pcmk__plural_s(count)); // Don't waste time by invoking the scheduler yet } @@ -810,10 +811,10 @@ do_dc_join_ack(long long action, peer = pcmk__get_node(0, join_from, NULL, pcmk__node_search_cluster_member); phase = controld_get_join_phase(peer); if (phase != controld_join_finalized) { - crm_info("Ignoring out-of-sequence join-%d confirmation from %s " - "(currently %s not %s)", - join_id, join_from, join_phase_text(phase), - join_phase_text(controld_join_finalized)); + pcmk__info("Ignoring out-of-sequence join-%d confirmation from %s " + "(currently %s not %s)", + join_id, join_from, join_phase_text(phase), + join_phase_text(controld_join_finalized)); goto done; } diff --git a/daemons/controld/controld_membership.c b/daemons/controld/controld_membership.c index ca177088923..71f5b1ce0f3 100644 --- a/daemons/controld/controld_membership.c +++ b/daemons/controld/controld_membership.c @@ -134,8 +134,8 @@ create_node_state_update(pcmk__node_status_t *node, int flags, xmlNode *node_state; if (!node->state) { - crm_info("Node update for %s cancelled: no state, not seen yet", - node->name); + pcmk__info("Node update for %s cancelled: no state, not seen yet", + node->name); return NULL; } @@ -149,7 +149,7 @@ create_node_state_update(pcmk__node_status_t *node, int flags, if ((id == NULL) || (pcmk__xe_set(node_state, PCMK_XA_ID, id) != pcmk_rc_ok)) { - crm_info("Node update for %s cancelled: no ID", node->name); + pcmk__info("Node update for %s cancelled: no ID", node->name); pcmk__xml_free(node_state); return NULL; } diff --git a/daemons/controld/controld_messages.c b/daemons/controld/controld_messages.c index f3e9cbff6fe..cd934617e33 100644 --- a/daemons/controld/controld_messages.c +++ b/daemons/controld/controld_messages.c @@ -47,7 +47,7 @@ register_fsa_error_adv(enum crmd_fsa_cause cause, enum crmd_fsa_input input, } /* reset the action list */ - crm_info("Resetting the current action list"); + pcmk__info("Resetting the current action list"); fsa_dump_actions(controld_globals.fsa_actions, "Drop"); controld_globals.fsa_actions = A_NOTHING; @@ -763,9 +763,9 @@ handle_lrm_delete(xmlNode *stored_msg) transition = pcmk__xe_get(stored_msg, PCMK__XA_TRANSITION_KEY); } - crm_info("Notifying %s on %s that %s was%s deleted", - from_sys, (from_host? from_host : "local node"), rsc_id, - ((rc == pcmk_rc_ok)? "" : " not")); + pcmk__info("Notifying %s on %s that %s was%s deleted", from_sys, + pcmk__s(from_host, "local node"), rsc_id, + ((rc == pcmk_rc_ok)? "" : " not")); op = lrmd_new_event(rsc_id, PCMK_ACTION_DELETE, 0); op->type = lrmd_event_exec_complete; op->user_data = pcmk__str_copy(pcmk__s(transition, FAKE_TE_ID)); @@ -1003,7 +1003,7 @@ handle_shutdown_self_ack(xmlNode *stored_msg) if (pcmk__is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { // The expected case -- we initiated own shutdown sequence - crm_info("Shutting down controller"); + pcmk__info("Shutting down controller"); return I_STOP; } @@ -1043,8 +1043,8 @@ handle_shutdown_ack(xmlNode *stored_msg) pcmk__str_null_matches|pcmk__str_casei)) { if (pcmk__is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { - crm_info("Shutting down controller after confirmation from %s", - host_from); + pcmk__info("Shutting down controller after confirmation from %s", + host_from); } else { pcmk__err("Shutting down controller after unexpected " "shutdown request from %s", @@ -1258,7 +1258,7 @@ handle_response(xmlNode *stored_msg) register_fsa_input_later(C_IPC_MESSAGE, I_PE_SUCCESS, &fsa_input); } else { - crm_info("%s calculation %s is obsolete", op, msg_ref); + pcmk__info("%s calculation %s is obsolete", op, msg_ref); } } else if (strcmp(op, CRM_OP_VOTE) == 0 @@ -1290,8 +1290,8 @@ handle_shutdown_request(xmlNode * stored_msg) host_from = controld_globals.cluster->priv->node_name; } - crm_info("Creating shutdown request for %s (state=%s)", host_from, - fsa_state2string(controld_globals.fsa_state)); + pcmk__info("Creating shutdown request for %s (state=%s)", host_from, + fsa_state2string(controld_globals.fsa_state)); crm_log_xml_trace(stored_msg, "message"); now_s = pcmk__ttoa(time(NULL)); @@ -1351,7 +1351,7 @@ send_msg_via_ipc(xmlNode * msg, const char *sys, const char *src) crmd_proxy_send(sys, msg); } else { - crm_info("Received invalid request: unknown subsystem '%s'", sys); + pcmk__info("Received invalid request: unknown subsystem '%s'", sys); } } @@ -1379,8 +1379,8 @@ broadcast_remote_state_message(const char *node_name, bool node_up) CRM_SYSTEM_CRMD, CRM_OP_REMOTE_STATE, NULL); - crm_info("Notifying cluster of Pacemaker Remote node %s %s", - node_name, node_up? "coming up" : "going down"); + pcmk__info("Notifying cluster of Pacemaker Remote node %s %s", node_name, + (node_up? "coming up" : "going down")); pcmk__xe_set(msg, PCMK_XA_ID, node_name); pcmk__xe_set_bool_attr(msg, PCMK__XA_IN_CCM, node_up); diff --git a/daemons/controld/controld_metadata.c b/daemons/controld/controld_metadata.c index 39ad07d818a..9edb6b0a203 100644 --- a/daemons/controld/controld_metadata.c +++ b/daemons/controld/controld_metadata.c @@ -104,9 +104,10 @@ log_ra_ocf_version(const char *ra_key, const char *ra_ocf_version) ra_key, ra_ocf_version); } else if (pcmk__compare_versions(ra_ocf_version, PCMK_OCF_VERSION) > 0) { - crm_info("%s supports OCF version %s (this Pacemaker version supports " - PCMK_OCF_VERSION " and might not use all agent features)", - ra_key, ra_ocf_version); + pcmk__info("%s supports OCF version %s (this Pacemaker version " + "supports " PCMK_OCF_VERSION " and might not use all agent " + "features)", + ra_key, ra_ocf_version); } else { crm_debug("%s supports OCF version %s", ra_key, ra_ocf_version); diff --git a/daemons/controld/controld_remote_ra.c b/daemons/controld/controld_remote_ra.c index 25e1fc67074..5ae78d9e0b1 100644 --- a/daemons/controld/controld_remote_ra.c +++ b/daemons/controld/controld_remote_ra.c @@ -284,7 +284,7 @@ remote_node_up(const char *node_name) lrm_state_t *connection_rsc = NULL; CRM_CHECK(node_name != NULL, return); - crm_info("Announcing Pacemaker Remote node %s", node_name); + pcmk__info("Announcing Pacemaker Remote node %s", node_name); call_opt = crmd_cib_smart_opt(); @@ -577,7 +577,7 @@ connection_takeover_timeout_cb(gpointer data) lrm_state_t *lrm_state = NULL; remote_ra_cmd_t *cmd = data; - crm_info("takeover event timed out for node %s", cmd->rsc_id); + pcmk__info("takeover event timed out for node %s", cmd->rsc_id); cmd->takeover_timeout_id = 0; lrm_state = controld_get_executor_state(cmd->rsc_id, false); @@ -596,8 +596,8 @@ monitor_timeout_cb(gpointer data) lrm_state = controld_get_executor_state(cmd->rsc_id, false); - crm_info("Timed out waiting for remote poke response from %s%s", - cmd->rsc_id, (lrm_state? "" : " (no LRM state)")); + pcmk__info("Timed out waiting for remote poke response from %s%s", + cmd->rsc_id, ((lrm_state != NULL)? "" : " (no LRM state)")); cmd->monitor_timeout_id = 0; pcmk__set_result(&(cmd->result), PCMK_OCF_UNKNOWN_ERROR, PCMK_EXEC_TIMEOUT, "Remote executor did not respond"); @@ -1343,7 +1343,7 @@ remote_ra_fail(const char *node_name) if (lrm_state && lrm_state_is_connected(lrm_state)) { remote_ra_data_t *ra_data = lrm_state->remote_ra_data; - crm_info("Failing monitors on Pacemaker Remote node %s", node_name); + pcmk__info("Failing monitors on Pacemaker Remote node %s", node_name); ra_data->recurring_cmds = fail_all_monitor_cmds(ra_data->recurring_cmds); ra_data->cmds = fail_all_monitor_cmds(ra_data->cmds); } diff --git a/daemons/controld/controld_schedulerd.c b/daemons/controld/controld_schedulerd.c index eb74bccbb3c..f9db64ff0b9 100644 --- a/daemons/controld/controld_schedulerd.c +++ b/daemons/controld/controld_schedulerd.c @@ -161,7 +161,7 @@ handle_reply(pcmk_schedulerd_api_reply_t *reply) pcmk__xml_free(fsa_input.msg); } else { - crm_info("%s calculation %s is obsolete", CRM_OP_PECALC, msg_ref); + pcmk__info("%s calculation %s is obsolete", CRM_OP_PECALC, msg_ref); } } @@ -233,7 +233,8 @@ do_pe_control(long long action, && !pcmk__is_set(controld_globals.fsa_input_register, R_PE_CONNECTED)) { if (cur_state == S_STOPPING) { - crm_info("Ignoring request to connect to scheduler while shutting down"); + pcmk__info("Ignoring request to connect to scheduler while " + "shutting down"); } else if (!new_schedulerd_ipc_connection()) { pcmk__warn("Could not connect to scheduler"); @@ -345,7 +346,7 @@ do_pe_invoke(long long action, register_fsa_input_before(C_FSA_INTERNAL, I_TERMINATE, NULL); } else { - crm_info("Waiting for the scheduler to connect"); + pcmk__info("Waiting for the scheduler to connect"); crmd_fsa_stall(FALSE); controld_set_fsa_action_flags(A_PE_START); controld_trigger_fsa(); diff --git a/daemons/controld/controld_te_actions.c b/daemons/controld/controld_te_actions.c index 6d86ad377d9..c2fab2feeca 100644 --- a/daemons/controld/controld_te_actions.c +++ b/daemons/controld/controld_te_actions.c @@ -145,14 +145,14 @@ execute_cluster_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) no_wait = TRUE; } - crm_info("Handling controller request '%s' (%s on %s)%s%s", - id, task, on_node, (is_local? " locally" : ""), - (no_wait? " without waiting" : "")); + pcmk__info("Handling controller request '%s' (%s on %s)%s%s", id, task, + on_node, (is_local? " locally" : ""), + (no_wait? " without waiting" : "")); if (is_local && pcmk__str_eq(task, PCMK_ACTION_DO_SHUTDOWN, pcmk__str_none)) { /* defer until everything else completes */ - crm_info("Controller request '%s' is a local shutdown", id); + pcmk__info("Controller request '%s' is a local shutdown", id); graph->completion_action = pcmk__graph_shutdown; graph->abort_reason = "local shutdown"; te_action_confirmed(action, graph); @@ -447,7 +447,7 @@ execute_rsc_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) /* Just mark confirmed. Don't bump the job count only to immediately * decrement it. */ - crm_info("Action %d confirmed - no wait", action->id); + pcmk__info("Action %d confirmed - no wait", action->id); pcmk__set_graph_action_flags(action, pcmk__graph_action_confirmed); pcmk__update_graph(controld_globals.transition_graph, action); trigger_graph(); diff --git a/daemons/controld/controld_te_callbacks.c b/daemons/controld/controld_te_callbacks.c index 10461692e5e..0ba643ee9ff 100644 --- a/daemons/controld/controld_te_callbacks.c +++ b/daemons/controld/controld_te_callbacks.c @@ -423,24 +423,27 @@ process_te_message(xmlNode * msg, xmlNode * xml_data) value = pcmk__xe_get(msg, PCMK__XA_CRM_SYS_TO); if (pcmk__str_empty(value) || !pcmk__str_eq(value, CRM_SYSTEM_TENGINE, pcmk__str_none)) { - crm_info("Received invalid transition request: subsystem '%s' not '" - CRM_SYSTEM_TENGINE "'", pcmk__s(value, "")); + pcmk__info("Received invalid transition request: subsystem '%s' not '" + CRM_SYSTEM_TENGINE "'", + pcmk__s(value, "")); return; } // Only the lrm_invoke command is supported as a transition request value = pcmk__xe_get(msg, PCMK__XA_CRM_TASK); if (!pcmk__str_eq(value, CRM_OP_INVOKE_LRM, pcmk__str_none)) { - crm_info("Received invalid transition request: command '%s' not '" - CRM_OP_INVOKE_LRM "'", pcmk__s(value, "")); + pcmk__info("Received invalid transition request: command '%s' not '" + CRM_OP_INVOKE_LRM "'", + pcmk__s(value, "")); return; } // Transition requests must be marked as coming from the executor value = pcmk__xe_get(msg, PCMK__XA_CRM_SYS_FROM); if (!pcmk__str_eq(value, CRM_SYSTEM_LRMD, pcmk__str_none)) { - crm_info("Received invalid transition request: from '%s' not '" - CRM_SYSTEM_LRMD "'", pcmk__s(value, "")); + pcmk__info("Received invalid transition request: from '%s' not '" + CRM_SYSTEM_LRMD "'", + pcmk__s(value, "")); return; } diff --git a/daemons/controld/controld_te_events.c b/daemons/controld/controld_te_events.c index 4f0e69dcf2d..2de9b0373c3 100644 --- a/daemons/controld/controld_te_events.c +++ b/daemons/controld/controld_te_events.c @@ -147,17 +147,18 @@ fail_incompletable_actions(pcmk__graph_t *graph, const char *down_node) PCMK__XA_OPERATION_KEY), down_node); } else { - crm_info("Action %d (%s) is scheduled for %s (offline)", - action->id, - pcmk__xe_get(action->xml, PCMK__XA_OPERATION_KEY), - down_node); + pcmk__info("Action %d (%s) is scheduled for %s (offline)", + action->id, + pcmk__xe_get(action->xml, PCMK__XA_OPERATION_KEY), + down_node); } } } } if (last_action != NULL) { - crm_info("Node %s shutdown resulted in un-runnable actions", down_node); + pcmk__info("Node %s shutdown resulted in un-runnable actions", + down_node); abort_transition(PCMK_SCORE_INFINITY, pcmk__graph_restart, "Node failure", last_action); return TRUE; @@ -244,9 +245,10 @@ update_failcount(const xmlNode *event, const char *event_node_uuid, int rc, opts |= pcmk__node_attr_remote; } - crm_info("Updating %s for %s on %s after failed %s: rc=%d (update=%s, time=%s)", - (ignore_failures? "last failure" : "failcount"), - rsc_id, on_uname, task, rc, value, now); + pcmk__info("Updating %s for %s on %s after failed %s: rc=%d " + "(update=%s, time=%s)", + (ignore_failures? "last failure" : "failcount"), + rsc_id, on_uname, task, rc, value, now); /* Update the fail count, if we're not ignoring failures */ if (!ignore_failures) { @@ -364,8 +366,8 @@ confirm_cancel_action(const char *id, const char *node_id) stop_te_timer(cancel); te_action_confirmed(cancel, controld_globals.transition_graph); - crm_info("Cancellation of %s on %s confirmed (action %d)", - op_key, node_name, cancel->id); + pcmk__info("Cancellation of %s on %s confirmed (action %d)", op_key, + node_name, cancel->id); return TRUE; } @@ -575,9 +577,8 @@ process_graph_event(xmlNode *event, const char *event_node) if (status == PCMK_EXEC_INVALID) { // We couldn't attempt the action - crm_info("Transition %d action %d (%s on %s): %s", - transition_num, action_num, id, uname, - pcmk_exec_status_str(status)); + pcmk__info("Transition %d action %d (%s on %s): %s", transition_num, + action_num, id, uname, pcmk_exec_status_str(status)); } else if (desc && update_failcount(event, event_node, rc, target_rc, (transition_num == -1), FALSE)) { @@ -589,16 +590,16 @@ process_graph_event(xmlNode *event, const char *event_node) target_rc, rc, callid, desc); } else if (desc) { - crm_info("Transition %d action %d (%s on %s): %s " - QB_XS " rc=%d target-rc=%d call-id=%d", - transition_num, action_num, id, uname, - desc, rc, target_rc, callid); + pcmk__info("Transition %d action %d (%s on %s): %s " + QB_XS " rc=%d target-rc=%d call-id=%d", + transition_num, action_num, id, uname, + desc, rc, target_rc, callid); } else if (rc == target_rc) { - crm_info("Transition %d action %d (%s on %s) confirmed: %s " - QB_XS " rc=%d call-id=%d", - transition_num, action_num, id, uname, - crm_exit_str(rc), rc, callid); + pcmk__info("Transition %d action %d (%s on %s) confirmed: %s " + QB_XS " rc=%d call-id=%d", + transition_num, action_num, id, uname, crm_exit_str(rc), + rc, callid); } else { update_failcount(event, event_node, rc, target_rc, diff --git a/daemons/controld/controld_te_utils.c b/daemons/controld/controld_te_utils.c index 41e64a2f4ad..0fc6e103201 100644 --- a/daemons/controld/controld_te_utils.c +++ b/daemons/controld/controld_te_utils.c @@ -351,6 +351,7 @@ abort_transition_graph(int abort_priority, enum pcmk__graph_next abort_action, int level = LOG_INFO; const xmlNode *diff = NULL; const xmlNode *change = NULL; + const bool complete = controld_globals.transition_graph->complete; CRM_CHECK(controld_globals.transition_graph != NULL, return); @@ -362,9 +363,9 @@ abort_transition_graph(int abort_priority, enum pcmk__graph_next abort_action, case S_ILLEGAL: case S_STOPPING: case S_TERMINATE: - crm_info("Abort %s suppressed: state=%s (%scomplete)", - abort_text, fsa_state2string(controld_globals.fsa_state), - (controld_globals.transition_graph->complete? "" : "in")); + pcmk__info("Abort %s suppressed: state=%s (%scomplete)", + abort_text, fsa_state2string(controld_globals.fsa_state), + (complete? "" : "in")); return; default: break; diff --git a/daemons/controld/controld_throttle.c b/daemons/controld/controld_throttle.c index a6d00e4c5dc..d4dc1855275 100644 --- a/daemons/controld/controld_throttle.c +++ b/daemons/controld/controld_throttle.c @@ -85,7 +85,7 @@ throttle_check_thresholds(float load, const char *desc, return throttle_high; } else if (load > thresholds[1]) { - crm_info("Moderate %s detected: %f", desc, load); + pcmk__info("Moderate %s detected: %f", desc, load); return throttle_med; } else if (load > thresholds[0]) { @@ -184,8 +184,8 @@ throttle_send_command(enum throttle_state_e mode) static enum throttle_state_e last = -1; if(mode != last) { - crm_info("New throttle mode: %s load (was %s)", - load2str(mode), load2str(last)); + pcmk__info("New throttle mode: %s load (was %s)", load2str(mode), + load2str(last)); last = mode; xml = pcmk__new_request(pcmk_ipc_controld, CRM_SYSTEM_CRMD, NULL, diff --git a/daemons/controld/controld_timers.c b/daemons/controld/controld_timers.c index e82875a4515..c01d9cc19d7 100644 --- a/daemons/controld/controld_timers.c +++ b/daemons/controld/controld_timers.c @@ -179,9 +179,9 @@ crm_timer_popped(gpointer data) fsa_state2string(controld_globals.fsa_state), fsa_input2string(timer->fsa_input), timer->period_ms); } else { - crm_info("%s just popped " QB_XS " input=%s time=%ums", - get_timer_desc(timer), fsa_input2string(timer->fsa_input), - timer->period_ms); + pcmk__info("%s just popped " QB_XS " input=%s time=%ums", + get_timer_desc(timer), fsa_input2string(timer->fsa_input), + timer->period_ms); timer->counter++; } @@ -195,9 +195,9 @@ crm_timer_popped(gpointer data) controld_stop_timer(timer); // Make timer _not_ go off again if (timer->fsa_input == I_INTEGRATED) { - crm_info("Welcomed: %d, Integrated: %d", - crmd_join_phase_count(controld_join_welcomed), - crmd_join_phase_count(controld_join_integrated)); + pcmk__info("Welcomed: %d, Integrated: %d", + crmd_join_phase_count(controld_join_welcomed), + crmd_join_phase_count(controld_join_integrated)); if (crmd_join_phase_count(controld_join_welcomed) == 0) { // If we don't even have ourselves, start again register_fsa_error_adv(C_FSA_INTERNAL, I_ELECTION, NULL, NULL, diff --git a/daemons/controld/controld_transition.c b/daemons/controld/controld_transition.c index 7c283807746..6797898de0e 100644 --- a/daemons/controld/controld_transition.c +++ b/daemons/controld/controld_transition.c @@ -47,7 +47,7 @@ do_te_control(long long action, } controld_clear_fsa_input_flags(R_TE_CONNECTED); - crm_info("Transitioner is now inactive"); + pcmk__info("Transitioner is now inactive"); } if ((action & A_TE_START) == 0) { @@ -59,13 +59,14 @@ do_te_control(long long action, return; } else if ((action & A_TE_START) && cur_state == S_STOPPING) { - crm_info("Ignoring request to start the transitioner while shutting down"); + pcmk__info("Ignoring request to start the transitioner while shutting " + "down"); return; } if (controld_globals.te_uuid == NULL) { controld_globals.te_uuid = pcmk__generate_uuid(); - crm_info("Registering TE UUID: %s", controld_globals.te_uuid); + pcmk__info("Registering TE UUID: %s", controld_globals.te_uuid); } if (cib_conn == NULL) { @@ -137,7 +138,7 @@ do_te_invoke(long long action, } if (!controld_globals.transition_graph->complete) { - crm_info("Another transition is already active"); + pcmk__info("Another transition is already active"); abort_transition(PCMK_SCORE_INFINITY, pcmk__graph_restart, "Transition Active", NULL); return; @@ -146,9 +147,9 @@ do_te_invoke(long long action, if ((controld_globals.fsa_pe_ref == NULL) || !pcmk__str_eq(controld_globals.fsa_pe_ref, ref, pcmk__str_none)) { - crm_info("Transition is redundant: %s expected but %s received", - pcmk__s(controld_globals.fsa_pe_ref, "no reference"), - pcmk__s(ref, "no reference")); + pcmk__info("Transition is redundant: %s expected but %s received", + pcmk__s(controld_globals.fsa_pe_ref, "no reference"), + pcmk__s(ref, "no reference")); abort_transition(PCMK_SCORE_INFINITY, pcmk__graph_restart, "Transition Redundant", NULL); } @@ -169,8 +170,8 @@ do_te_invoke(long long action, CRM_CHECK(controld_globals.transition_graph != NULL, controld_globals.transition_graph = create_blank_graph(); return); - crm_info("Processing graph %d (ref=%s) derived from %s", - controld_globals.transition_graph->id, ref, graph_input); + pcmk__info("Processing graph %d (ref=%s) derived from %s", + controld_globals.transition_graph->id, ref, graph_input); te_reset_job_counts(); diff --git a/daemons/controld/controld_utils.c b/daemons/controld/controld_utils.c index 5b62576e911..b002e66bbf9 100644 --- a/daemons/controld/controld_utils.c +++ b/daemons/controld/controld_utils.c @@ -754,13 +754,12 @@ update_dc(xmlNode * msg) pcmk__get_node(0, controld_globals.dc_name, NULL, pcmk__node_search_cluster_member); - crm_info("Set DC to %s (%s)", - controld_globals.dc_name, - pcmk__s(controld_globals.dc_version, "unknown version")); + pcmk__info("Set DC to %s (%s)", controld_globals.dc_name, + pcmk__s(controld_globals.dc_version, "unknown version")); pcmk__update_peer_expected(__func__, dc_node, CRMD_JOINSTATE_MEMBER); } else if (last_dc != NULL) { - crm_info("Unset DC (was %s)", last_dc); + pcmk__info("Unset DC (was %s)", last_dc); } free(last_dc); diff --git a/daemons/controld/pacemaker-controld.c b/daemons/controld/pacemaker-controld.c index f27605f50b0..4fd86886ec1 100644 --- a/daemons/controld/pacemaker-controld.c +++ b/daemons/controld/pacemaker-controld.c @@ -203,7 +203,7 @@ main(int argc, char **argv) controld_globals.mainloop = g_main_loop_new(NULL, FALSE); g_main_loop_run(controld_globals.mainloop); if (pcmk__is_set(controld_globals.fsa_input_register, R_STAYDOWN)) { - crm_info("Inhibiting automated respawn"); + pcmk__info("Inhibiting automated respawn"); exit_code = CRM_EX_FATAL; } crmd_fast_exit(exit_code); diff --git a/daemons/execd/cts-exec-helper.c b/daemons/execd/cts-exec-helper.c index 944719ca1a7..4e7045ea12d 100644 --- a/daemons/execd/cts-exec-helper.c +++ b/daemons/execd/cts-exec-helper.c @@ -182,7 +182,7 @@ test_exit(crm_exit_t exit_code) event->op_type ? event->op_type : "none", \ crm_exit_str((crm_exit_t) event->rc), \ pcmk_exec_status_str(event->op_status)); \ - crm_info("%s", event_buf_v0); + pcmk__info("%s", event_buf_v0); static void test_shutdown(int nsig) @@ -236,7 +236,7 @@ connection_events(lrmd_event_data_t * event) } if (!rc) { - crm_info("Executor client connection established"); + pcmk__info("Executor client connection established"); start_test(NULL); return; } else { @@ -611,7 +611,7 @@ main(int argc, char **argv) mainloop_set_trigger(trig); mainloop_add_signal(SIGTERM, test_shutdown); - crm_info("Starting"); + pcmk__info("Starting"); mainloop = g_main_loop_new(NULL, FALSE); g_main_loop_run(mainloop); diff --git a/daemons/execd/execd_alerts.c b/daemons/execd/execd_alerts.c index b0a825f20fc..7182c8583eb 100644 --- a/daemons/execd/execd_alerts.c +++ b/daemons/execd/execd_alerts.c @@ -127,7 +127,7 @@ process_lrmd_alert_exec(pcmk__client_t *client, uint32_t id, xmlNode *request) pcmk__xe_get_int(alert_xml, PCMK__XA_LRMD_TIMEOUT, &alert_timeout); - crm_info("Executing alert %s for %s", alert_id, client->id); + pcmk__info("Executing alert %s for %s", alert_id, client->id); params = xml2list(alert_xml); pcmk__add_alert_key_int(params, PCMK__alert_key_node_sequence, diff --git a/daemons/execd/execd_commands.c b/daemons/execd/execd_commands.c index 118b23463f5..0e51b7684ab 100644 --- a/daemons/execd/execd_commands.c +++ b/daemons/execd/execd_commands.c @@ -975,8 +975,9 @@ action_complete(svc_action_t * action) cmd->rsc_id, cmd->real_action, time_sum, timeout_left, delay); } else if (cmd->result.execution_status == PCMK_EXEC_PENDING) { - crm_info("%s %s is still in progress: re-scheduling (elapsed=%dms, remaining=%dms, start_delay=%dms)", - cmd->rsc_id, cmd->action, time_sum, timeout_left, delay); + pcmk__info("%s %s is still in progress: re-scheduling " + "(elapsed=%dms, remaining=%dms, start_delay=%dms)", + cmd->rsc_id, cmd->action, time_sum, timeout_left, delay); } else { pcmk__notice("%s %s failed: %s: Re-scheduling (remaining timeout " @@ -1589,7 +1590,7 @@ process_lrmd_rsc_register(pcmk__client_t *client, uint32_t id, xmlNode *request) } g_hash_table_replace(rsc_list, rsc->rsc_id, rsc); - crm_info("Cached agent information for '%s'", rsc->rsc_id); + pcmk__info("Cached agent information for '%s'", rsc->rsc_id); return rc; } @@ -1609,7 +1610,7 @@ process_lrmd_get_rsc_info(xmlNode *request, int call_id) } else { rsc = g_hash_table_lookup(rsc_list, rsc_id); if (rsc == NULL) { - crm_info("Agent information for '%s' not in cache", rsc_id); + pcmk__info("Agent information for '%s' not in cache", rsc_id); rc = -ENODEV; } } @@ -1641,8 +1642,9 @@ process_lrmd_rsc_unregister(pcmk__client_t *client, uint32_t id, rsc = g_hash_table_lookup(rsc_list, rsc_id); if (rsc == NULL) { - crm_info("Ignoring unregistration of resource '%s', which is not registered", - rsc_id); + pcmk__info("Ignoring unregistration of resource '%s', which is not " + "registered", + rsc_id); return pcmk_ok; } @@ -1673,8 +1675,8 @@ process_lrmd_rsc_exec(pcmk__client_t *client, uint32_t id, xmlNode *request) return -EINVAL; } if (!(rsc = g_hash_table_lookup(rsc_list, rsc_id))) { - crm_info("Resource '%s' not found (%d active resources)", - rsc_id, g_hash_table_size(rsc_list)); + pcmk__info("Resource '%s' not found (%d active resources)", rsc_id, + g_hash_table_size(rsc_list)); return -ENODEV; } @@ -1844,8 +1846,8 @@ process_lrmd_get_recurring(xmlNode *request, int call_id) if (rsc_id != NULL) { rsc = g_hash_table_lookup(rsc_list, rsc_id); if (rsc == NULL) { - crm_info("Resource '%s' not found (%d active resources)", - rsc_id, g_hash_table_size(rsc_list)); + pcmk__info("Resource '%s' not found (%d active resources)", rsc_id, + g_hash_table_size(rsc_list)); rc = -ENODEV; } } diff --git a/daemons/execd/pacemaker-execd.c b/daemons/execd/pacemaker-execd.c index cd165f95aa9..e7c29851e11 100644 --- a/daemons/execd/pacemaker-execd.c +++ b/daemons/execd/pacemaker-execd.c @@ -283,8 +283,8 @@ exit_executor(void) { const guint nclients = pcmk__ipc_client_count(); - crm_info("Terminating with %d client%s", - nclients, pcmk__plural_s(nclients)); + pcmk__info("Terminating with %d client%s", nclients, + pcmk__plural_s(nclients)); stonith_api_delete(stonith_api); if (ipcs) { mainloop_del_ipc_server(ipcs); @@ -329,7 +329,7 @@ lrmd_shutdown(int nsig) return; } - crm_info("Sending shutdown request to cluster"); + pcmk__info("Sending shutdown request to cluster"); if (ipc_proxy_shutdown_req(ipc_proxy) < 0) { pcmk__crit("Shutdown request failed, exiting immediately"); @@ -365,7 +365,7 @@ handle_shutdown_ack(void) { #ifdef PCMK__COMPILE_REMOTE if (shutting_down) { - crm_info("IPC proxy provider acknowledged shutdown request"); + pcmk__info("IPC proxy provider acknowledged shutdown request"); return; } #endif @@ -382,8 +382,8 @@ handle_shutdown_nack(void) { #ifdef PCMK__COMPILE_REMOTE if (shutting_down) { - crm_info("Exiting immediately after IPC proxy provider " - "indicated no resources will be stopped"); + pcmk__info("Exiting immediately after IPC proxy provider indicated no " + "resources will be stopped"); exit_executor(); return; } diff --git a/daemons/execd/remoted_proxy.c b/daemons/execd/remoted_proxy.c index 43a06267fa9..719b9b9baf5 100644 --- a/daemons/execd/remoted_proxy.c +++ b/daemons/execd/remoted_proxy.c @@ -426,8 +426,9 @@ ipc_proxy_remove_provider(pcmk__client_t *ipc_proxy) while (g_hash_table_iter_next(&iter, (gpointer *) & key, (gpointer *) & ipc_client)) { const char *proxy_id = ipc_client->userdata; if (pcmk__str_eq(proxy_id, ipc_proxy->id, pcmk__str_casei)) { - crm_info("ipc proxy connection for client %s pid %d destroyed because cluster node disconnected.", - ipc_client->id, ipc_client->pid); + pcmk__info("IPC proxy connection for client %s pid %d destroyed " + "because cluster node disconnected", + ipc_client->id, ipc_client->pid); /* we can't remove during the iteration, so copy items * to a list we can destroy later */ remove_these = g_list_append(remove_these, ipc_client); diff --git a/daemons/execd/remoted_schemas.c b/daemons/execd/remoted_schemas.c index 12141b0daf7..4300c59ca61 100644 --- a/daemons/execd/remoted_schemas.c +++ b/daemons/execd/remoted_schemas.c @@ -215,7 +215,7 @@ get_schema_files_complete(mainloop_child_t *p, pid_t pid, int core, int signo, i */ pcmk__load_schemas_from_dir(remote_schema_dir); pcmk__sort_schemas(); - crm_info("Fetching extra schema files completed successfully"); + pcmk__info("Fetching extra schema files completed successfully"); } else { if (signo == 0) { @@ -269,7 +269,7 @@ remoted_request_cib_schema_files(void) pcmk__schema_cleanup(); pcmk__schema_init(); - crm_info("Fetching extra schema files from cluster"); + pcmk__info("Fetching extra schema files from cluster"); pid = fork(); switch (pid) { diff --git a/daemons/execd/remoted_tls.c b/daemons/execd/remoted_tls.c index 94e84182c17..3c0e6d7cf0c 100644 --- a/daemons/execd/remoted_tls.c +++ b/daemons/execd/remoted_tls.c @@ -105,7 +105,7 @@ lrmd_remote_client_msg(gpointer data) default: /* Error */ - crm_info("Error polling remote client: %s", pcmk_rc_str(rc)); + pcmk__info("Error polling remote client: %s", pcmk_rc_str(rc)); return -1; } @@ -120,7 +120,7 @@ lrmd_remote_client_msg(gpointer data) default: /* Error */ - crm_info("Error reading from remote client: %s", pcmk_rc_str(rc)); + pcmk__info("Error reading from remote client: %s", pcmk_rc_str(rc)); return -1; } @@ -236,8 +236,8 @@ lrmd_remote_listen(gpointer data) new_client->remote->auth_timeout = pcmk__create_timer(LRMD_REMOTE_AUTH_TIMEOUT, lrmd_auth_timeout_cb, new_client); - crm_info("Remote client pending authentication " - QB_XS " %p id: %s", new_client, new_client->id); + pcmk__info("Remote client pending authentication " QB_XS " %p id: %s", + new_client, new_client->id); new_client->remote->source = mainloop_add_fd("pacemaker-remote-client", G_PRIORITY_DEFAULT, csock, diff --git a/daemons/fenced/cts-fence-helper.c b/daemons/fenced/cts-fence-helper.c index 31eaf038397..5675137273a 100644 --- a/daemons/fenced/cts-fence-helper.c +++ b/daemons/fenced/cts-fence-helper.c @@ -94,7 +94,7 @@ static void mainloop_test_done(const char *origin, bool pass) { if (pass) { - crm_info("SUCCESS - %s", origin); + pcmk__info("SUCCESS - %s", origin); mainloop_iter++; mainloop_set_trigger(trig); result.execution_status = PCMK_EXEC_DONE; @@ -195,7 +195,7 @@ passive_test(void) crm_exit(CRM_EX_ERROR); \ } else { \ if (verbose) { \ - crm_info("SUCCESS - %s: %d", str, rc); \ + pcmk__info("SUCCESS - %s: %d", str, rc); \ } else { \ crm_debug("SUCCESS - %s: %d", str, rc); \ } \ @@ -337,11 +337,11 @@ sanity_tests(void) st->cmds->register_callback(st, 0, 120, st_opt_timeout_updates, NULL, "st_global_callback", st_global_callback); - crm_info("Starting API Sanity Tests"); + pcmk__info("Starting API Sanity Tests"); run_standard_test(); run_fence_failure_test(); run_fence_failure_rollover_test(); - crm_info("Sanity Tests Passed"); + pcmk__info("Sanity Tests Passed"); } static void @@ -585,7 +585,7 @@ iterate_mainloop_tests(gboolean event_ready) if (mainloop_iter == (sizeof(callbacks) / sizeof(mainloop_test_iteration_cb))) { /* all tests ran, everything passed */ - crm_info("ALL MAINLOOP TESTS PASSED!"); + pcmk__info("ALL MAINLOOP TESTS PASSED!"); crm_exit(CRM_EX_OK); } @@ -606,7 +606,7 @@ test_shutdown(int nsig) if (st) { rc = st->cmds->disconnect(st); - crm_info("Disconnect: %d", rc); + pcmk__info("Disconnect: %d", rc); crm_debug("Destroy"); stonith_api_delete(st); @@ -624,7 +624,7 @@ mainloop_tests(void) mainloop_set_trigger(trig); mainloop_add_signal(SIGTERM, test_shutdown); - crm_info("Starting"); + pcmk__info("Starting"); mainloop = g_main_loop_new(NULL, FALSE); g_main_loop_run(mainloop); } diff --git a/daemons/fenced/fenced_cib.c b/daemons/fenced/fenced_cib.c index abff8402c0f..edff4508c27 100644 --- a/daemons/fenced/fenced_cib.c +++ b/daemons/fenced/fenced_cib.c @@ -201,10 +201,10 @@ cib_devices_update(void) GHashTableIter iter; stonith_device_t *device = NULL; - crm_info("Updating devices to version %s.%s.%s", - pcmk__xe_get(local_cib, PCMK_XA_ADMIN_EPOCH), - pcmk__xe_get(local_cib, PCMK_XA_EPOCH), - pcmk__xe_get(local_cib, PCMK_XA_NUM_UPDATES)); + pcmk__info("Updating devices to version %s.%s.%s", + pcmk__xe_get(local_cib, PCMK_XA_ADMIN_EPOCH), + pcmk__xe_get(local_cib, PCMK_XA_EPOCH), + pcmk__xe_get(local_cib, PCMK_XA_NUM_UPDATES)); g_hash_table_iter_init(&iter, device_list); while (g_hash_table_iter_next(&iter, NULL, (void **)&device)) { @@ -298,7 +298,7 @@ update_cib_stonith_devices(const char *event, xmlNode * msg) } if (reason != NULL) { - crm_info("Updating device list from CIB: %s", reason); + pcmk__info("Updating device list from CIB: %s", reason); cib_devices_update(); free(reason); } else { @@ -408,9 +408,9 @@ update_fencing_topology(const char *event, xmlNode *msg) /* We have only path and ID, which is not enough info to remove * a specific entry. Re-initialize the whole topology. */ - crm_info("Re-initializing fencing topology after %s operation " - "%d.%d.%d for %s", - op, add[0], add[1], add[2], xpath); + pcmk__info("Re-initializing fencing topology after %s " + "operation %d.%d.%d for %s", + op, add[0], add[1], add[2], xpath); fencing_topology_init(); return; } @@ -433,9 +433,9 @@ update_fencing_topology(const char *event, xmlNode *msg) if (strstr(xpath, "/" PCMK_XE_FENCING_TOPOLOGY) != NULL) { // Change to the topology in general - crm_info("Re-initializing fencing topology after top-level " - "%s operation %d.%d.%d for %s", - op, add[0], add[1], add[2], xpath); + pcmk__info("Re-initializing fencing topology after top-level %s " + "operation %d.%d.%d for %s", + op, add[0], add[1], add[2], xpath); fencing_topology_init(); return; } @@ -447,9 +447,9 @@ update_fencing_topology(const char *event, xmlNode *msg) NULL)) { // Topology was created or entire configuration section was deleted - crm_info("Re-initializing fencing topology after top-level " - "%s operation %d.%d.%d for %s", - op, add[0], add[1], add[2], xpath); + pcmk__info("Re-initializing fencing topology after top-level %s " + "operation %d.%d.%d for %s", + op, add[0], add[1], add[2], xpath); fencing_topology_init(); return; } @@ -540,7 +540,7 @@ update_cib_cache_cb(const char *event, xmlNode * msg) static void init_cib_cache_cb(xmlNode * msg, int call_id, int rc, xmlNode * output, void *user_data) { - crm_info("Updating device list from CIB"); + pcmk__info("Updating device list from CIB"); have_cib_devices = TRUE; local_cib = pcmk__xml_copy(NULL, output); @@ -556,7 +556,7 @@ static void cib_connection_destroy(gpointer user_data) { if (stonith_shutdown_flag) { - crm_info("Connection to the CIB manager closed"); + pcmk__info("Connection to the CIB manager closed"); return; } else { pcmk__crit("Lost connection to the CIB manager, shutting down"); @@ -617,5 +617,5 @@ setup_cib(void) cib_api->cmds->register_callback(cib_api, rc, 120, FALSE, NULL, "init_cib_cache_cb", init_cib_cache_cb); cib_api->cmds->set_connection_dnotify(cib_api, cib_connection_destroy); - crm_info("Watching for fencing topology changes"); + pcmk__info("Watching for fencing topology changes"); } diff --git a/daemons/fenced/fenced_commands.c b/daemons/fenced/fenced_commands.c index e188d81031c..f9f769665eb 100644 --- a/daemons/fenced/fenced_commands.c +++ b/daemons/fenced/fenced_commands.c @@ -564,7 +564,7 @@ stonith_device_execute(stonith_device_t * device) goto done; } } else { - crm_info("Faking success for %s watchdog operation", cmd->action); + pcmk__info("Faking success for %s watchdog operation", cmd->action); report_internal_result(cmd, CRM_EX_OK, PCMK_EXEC_DONE, NULL); goto done; } @@ -574,9 +574,9 @@ stonith_device_execute(stonith_device_t * device) exec_rc = pcmk__substitute_secrets(device->id, device->params); if (exec_rc != pcmk_rc_ok) { if (pcmk__str_eq(cmd->action, PCMK_ACTION_STOP, pcmk__str_none)) { - crm_info("Proceeding with stop operation for %s " - "despite being unable to load CIB secrets (%s)", - device->id, pcmk_rc_str(exec_rc)); + pcmk__info("Proceeding with stop operation for %s despite being " + "unable to load CIB secrets (%s)", + device->id, pcmk_rc_str(exec_rc)); } else { pcmk__err("Considering %s unconfigured because unable to load CIB " "secrets: %s", @@ -856,7 +856,7 @@ build_port_aliases(const char *hostmap, GList ** targets) } if (added == 0) { - crm_info("No host mappings detected in '%s'", hostmap); + pcmk__info("No host mappings detected in '%s'", hostmap); } free(name); @@ -1093,13 +1093,13 @@ build_device_from_xml(xmlNode *dev) } if (is_action_required(PCMK_ACTION_ON, device)) { - crm_info("Fencing device '%s' requires unfencing", device->id); + pcmk__info("Fencing device '%s' requires unfencing", device->id); } if (device->on_target_actions != NULL) { - crm_info("Fencing device '%s' requires actions (%s) to be executed " - "on target", device->id, - (const char *) device->on_target_actions->str); + pcmk__info("Fencing device '%s' requires actions (%s) to be executed " + "on target", + device->id, (const char *) device->on_target_actions->str); } device->work = mainloop_add_trigger(G_PRIORITY_HIGH, stonith_device_dispatch, device); @@ -1221,23 +1221,24 @@ dynamic_list_search_cb(int pid, const pcmk__action_result_t *result, mainloop_set_trigger(dev->work); if (pcmk__result_ok(result)) { - crm_info("Refreshing target list for %s", dev->id); + pcmk__info("Refreshing target list for %s", dev->id); g_list_free_full(dev->targets, free); dev->targets = stonith__parse_targets(result->action_stdout); dev->targets_age = time(NULL); } else if (dev->targets != NULL) { if (result->execution_status == PCMK_EXEC_DONE) { - crm_info("Reusing most recent target list for %s " - "because list returned error code %d", - dev->id, result->exit_status); + pcmk__info("Reusing most recent target list for %s because list " + "returned error code %d", + dev->id, result->exit_status); } else { - crm_info("Reusing most recent target list for %s " - "because list could not be executed: %s%s%s%s", - dev->id, pcmk_exec_status_str(result->execution_status), - ((result->exit_reason == NULL)? "" : " ("), - ((result->exit_reason == NULL)? "" : result->exit_reason), - ((result->exit_reason == NULL)? "" : ")")); + const char *reason = result->exit_reason; + + pcmk__info("Reusing most recent target list for %s because list " + "could not be executed: %s%s%s%s", + dev->id, pcmk_exec_status_str(result->execution_status), + ((reason != NULL)? " (" : ""), pcmk__s(reason, ""), + ((reason != NULL)? ")" : "")); } } else { // We have never successfully executed list @@ -1419,7 +1420,8 @@ stonith_device_register(xmlNode *dev, gboolean from_cib) * copy any pending ops that currently exist on the old entry to the new one. * Otherwise the pending ops will be reported as failures */ - crm_info("Overwriting existing entry for %s from CIB", device->id); + pcmk__info("Overwriting existing entry for %s from CIB", + device->id); device->pending_ops = old->pending_ops; device->api_registered = TRUE; old->pending_ops = NULL; @@ -1451,8 +1453,8 @@ stonith_device_remove(const char *id, bool from_cib) if (!device) { ndevices = g_hash_table_size(device_list); - crm_info("Device '%s' not found (%d active device%s)", - id, ndevices, pcmk__plural_s(ndevices)); + pcmk__info("Device '%s' not found (%d active device%s)", id, ndevices, + pcmk__plural_s(ndevices)); return; } @@ -1466,8 +1468,8 @@ stonith_device_remove(const char *id, bool from_cib) if (!device->cib_registered && !device->api_registered) { g_hash_table_remove(device_list, id); ndevices = g_hash_table_size(device_list); - crm_info("Removed '%s' from device list (%d active device%s)", - id, ndevices, pcmk__plural_s(ndevices)); + pcmk__info("Removed '%s' from device list (%d active device%s)", id, + ndevices, pcmk__plural_s(ndevices)); } else { crm_trace("Not removing '%s' from device list (%d active) because " "still registered via:%s%s", @@ -1760,8 +1762,8 @@ fenced_register_level(xmlNode *msg, char **desc, pcmk__action_result_t *result) } if (tp->levels[id] != NULL) { - crm_info("Adding to the existing %s[%d] topology entry", - tp->target, id); + pcmk__info("Adding to the existing %s[%d] topology entry", tp->target, + id); } devices = parse_device_list(pcmk__xe_get(level, PCMK_XA_DEVICES)); @@ -1776,8 +1778,8 @@ fenced_register_level(xmlNode *msg, char **desc, pcmk__action_result_t *result) { int nlevels = count_active_levels(tp); - crm_info("Target %s has %d active fencing level%s", - tp->target, nlevels, pcmk__plural_s(nlevels)); + pcmk__info("Target %s has %d active fencing level%s", tp->target, + nlevels, pcmk__plural_s(nlevels)); } pcmk__set_result(result, CRM_EX_OK, PCMK_EXEC_DONE, NULL); @@ -1833,16 +1835,16 @@ fenced_unregister_level(xmlNode *msg, char **desc, if (tp == NULL) { guint nentries = g_hash_table_size(topology); - crm_info("No fencing topology found for %s (%d active %s)", - target, nentries, - pcmk__plural_alt(nentries, "entry", "entries")); + pcmk__info("No fencing topology found for %s (%d active %s)", target, + nentries, pcmk__plural_alt(nentries, "entry", "entries")); } else if (id == 0 && g_hash_table_remove(topology, target)) { guint nentries = g_hash_table_size(topology); - crm_info("Removed all fencing topology entries related to %s " - "(%d active %s remaining)", target, nentries, - pcmk__plural_alt(nentries, "entry", "entries")); + pcmk__info("Removed all fencing topology entries related to %s (%d " + "active %s remaining)", + target, nentries, + pcmk__plural_alt(nentries, "entry", "entries")); } else if (tp->levels[id] != NULL) { guint nlevels; @@ -1851,9 +1853,9 @@ fenced_unregister_level(xmlNode *msg, char **desc, tp->levels[id] = NULL; nlevels = count_active_levels(tp); - crm_info("Removed level %d from fencing topology for %s " - "(%d active level%s remaining)", - id, target, nlevels, pcmk__plural_s(nlevels)); + pcmk__info("Removed level %d from fencing topology for %s (%d " + "active level%s remaining)", + id, target, nlevels, pcmk__plural_s(nlevels)); } free(target); @@ -1924,9 +1926,9 @@ execute_agent_action(xmlNode *msg, pcmk__action_result_t *result) stonith_device_t *device = NULL; if ((id == NULL) || (action == NULL)) { - crm_info("Malformed API action request: device %s, action %s", - (id? id : "not specified"), - (action? action : "not specified")); + pcmk__info("Malformed API action request: device %s, action %s", + pcmk__s(id, "not specified"), + pcmk__s(action, "not specified")); fenced_set_protocol_error(result); return; } @@ -1954,8 +1956,9 @@ execute_agent_action(xmlNode *msg, pcmk__action_result_t *result) device = g_hash_table_lookup(device_list, id); if (device == NULL) { - crm_info("Ignoring API '%s' action request because device %s not found", - action, id); + pcmk__info("Ignoring API '%s' action request because device %s not " + "found", + action, id); pcmk__format_result(result, CRM_EX_ERROR, PCMK_EXEC_NO_FENCE_DEVICE, "'%s' not found", id); return; @@ -1963,8 +1966,9 @@ execute_agent_action(xmlNode *msg, pcmk__action_result_t *result) } else if (!device->api_registered && (strcmp(action, PCMK_ACTION_MONITOR) == 0)) { // Monitors may run only on "started" (API-registered) devices - crm_info("Ignoring API '%s' action request because device %s not active", - action, id); + pcmk__info("Ignoring API '%s' action request because device %s not " + "active", + action, id); pcmk__format_result(result, CRM_EX_ERROR, PCMK_EXEC_NO_FENCE_DEVICE, "'%s' not active", id); return; @@ -2208,11 +2212,12 @@ can_fence_host_with_device(stonith_device_t *dev, } search_report_results: - crm_info("%s is%s eligible to fence (%s) %s%s%s%s: %s", - dev_id, (can? "" : " not"), pcmk__s(action, "unspecified action"), - pcmk__s(target, "unspecified target"), - (alias == NULL)? "" : " (as '", pcmk__s(alias, ""), - (alias == NULL)? "" : "')", check_type); + pcmk__info("%s is%s eligible to fence (%s) %s%s%s%s: %s", + dev_id, (can? "" : " not"), + pcmk__s(action, "unspecified action"), + pcmk__s(target, "unspecified target"), + ((alias != NULL)? " (as '" : ""), pcmk__s(alias, ""), + ((alias != NULL)? "')" : ""), check_type); search_devices_record_result(search, ((dev == NULL)? NULL : dev_id), can); } @@ -2830,8 +2835,8 @@ stonith_fence_get_devices_cb(GList * devices, void *user_data) stonith_device_t *device = NULL; guint ndevices = g_list_length(devices); - crm_info("Found %d matching device%s for target '%s'", - ndevices, pcmk__plural_s(ndevices), cmd->target); + pcmk__info("Found %d matching device%s for target '%s'", ndevices, + pcmk__plural_s(ndevices), cmd->target); if (devices != NULL) { /* Order based on priority */ diff --git a/daemons/fenced/fenced_remote.c b/daemons/fenced/fenced_remote.c index ce752574f2f..036f448ed8e 100644 --- a/daemons/fenced/fenced_remote.c +++ b/daemons/fenced/fenced_remote.c @@ -309,8 +309,9 @@ op_requested_action(const remote_fencing_op_t *op) static void op_phase_off(remote_fencing_op_t *op) { - crm_info("Remapping multiple-device reboot targeting %s to 'off' " - QB_XS " id=%.8s", op->target, op->id); + pcmk__info("Remapping multiple-device reboot targeting %s to 'off' " + QB_XS " id=%.8s", + op->target, op->id); op->phase = st_phase_off; /* Happily, "off" and "on" are shorter than "reboot", so we can reuse the @@ -330,9 +331,9 @@ op_phase_on(remote_fencing_op_t *op) { GList *iter = NULL; - crm_info("Remapped 'off' targeting %s complete, " - "remapping to 'on' for %s " QB_XS " id=%.8s", - op->target, op->client_name, op->id); + pcmk__info("Remapped 'off' targeting %s complete, remapping to 'on' for " + "%s " QB_XS " id=%.8s", + op->target, op->client_name, op->id); op->phase = st_phase_on; strcpy(op->action, PCMK_ACTION_ON); @@ -364,8 +365,9 @@ static void undo_op_remap(remote_fencing_op_t *op) { if (op->phase > 0) { - crm_info("Undoing remap of reboot targeting %s for %s " - QB_XS " id=%.8s", op->target, op->client_name, op->id); + pcmk__info("Undoing remap of reboot targeting %s for %s " + QB_XS " id=%.8s", + op->target, op->client_name, op->id); op->phase = st_phase_requested; strcpy(op->action, PCMK_ACTION_REBOOT); } @@ -887,7 +889,7 @@ topology_matches(const stonith_topology_t *tp, const char *node) * (and tp->target_pattern) is a regular expression. */ if (regcomp(&r_patt, tp->target_pattern, REG_EXTENDED|REG_NOSUB)) { - crm_info("Bad regex '%s' for fencing level", tp->target); + pcmk__info("Bad regex '%s' for fencing level", tp->target); } else { int status = regexec(&r_patt, node, 0, NULL, 0); @@ -993,10 +995,10 @@ advance_topology_level(remote_fencing_op_t *op, bool empty_ok) return pcmk_rc_ok; } - crm_info("All %sfencing options targeting %s for client %s@%s failed " - QB_XS " id=%.8s", - (stonith_watchdog_timeout_ms > 0)?"non-watchdog ":"", - op->target, op->client_name, op->originator, op->id); + pcmk__info("All %sfencing options targeting %s for client %s@%s failed " + QB_XS " id=%.8s", + ((stonith_watchdog_timeout_ms > 0)? "non-watchdog " : ""), + op->target, op->client_name, op->originator, op->id); return ENODEV; } @@ -1338,8 +1340,9 @@ initiate_remote_stonith_op(const pcmk__client_t *client, xmlNode *request, return op; case st_duplicate: - crm_info("Requesting peer fencing (%s) targeting %s (duplicate) " - QB_XS " id=%.8s", op->action, op->target, op->id); + pcmk__info("Requesting peer fencing (%s) targeting %s (duplicate) " + QB_XS " id=%.8s", + op->action, op->target, op->id); return op; default: @@ -1495,8 +1498,8 @@ stonith_choose_peer(remote_fencing_op_t * op) * "device" is NULL here. Consider it should be done with watchdog fencing. */ if (is_watchdog_fencing(op, device)) { - crm_info("Couldn't contact watchdog-fencing target-node (%s)", - op->target); + pcmk__info("Couldn't contact watchdog-fencing target-node (%s)", + op->target); /* check_watchdog_fencing_and_wait will log additional info */ } else { pcmk__notice("Couldn't find anyone to fence (%s) %s using %s", @@ -1891,15 +1894,16 @@ request_peer_fencing(remote_fencing_op_t *op, peer_device_info_t *peer) device = op->devices->data; if (pcmk__str_eq(fenced_device_reboot_action(device), PCMK_ACTION_OFF, pcmk__str_none)) { - crm_info("Not turning %s back on using %s because the device is " - "configured to stay off (pcmk_reboot_action='off')", - op->target, device); + pcmk__info("Not turning %s back on using %s because the device is " + "configured to stay off (pcmk_reboot_action='off')", + op->target, device); advance_topology_device_in_level(op, device, NULL); return; } if (!fenced_device_supports_on(device)) { - crm_info("Not turning %s back on using %s because the agent " - "doesn't support 'on'", op->target, device); + pcmk__info("Not turning %s back on using %s because the agent " + "doesn't support 'on'", + op->target, device); advance_topology_device_in_level(op, device, NULL); return; } @@ -1914,9 +1918,9 @@ request_peer_fencing(remote_fencing_op_t *op, peer_device_info_t *peer) op->total_timeout = TIMEOUT_MULTIPLY_FACTOR * get_op_total_timeout(op, peer); op->op_timer_total = pcmk__create_timer(1000 * op->total_timeout, remote_op_timeout, op); report_timeout_period(op, op->total_timeout); - crm_info("Total timeout set to %ds for peer's fencing targeting %s for %s " - QB_XS " id=%.8s", - op->total_timeout, op->target, op->client_name, op->id); + pcmk__info("Total timeout set to %ds for peer's fencing targeting %s " + "for %s " QB_XS " id=%.8s", + op->total_timeout, op->target, op->client_name, op->id); } if (pcmk__is_set(op->call_options, st_opt_topology) @@ -2035,9 +2039,10 @@ request_peer_fencing(remote_fencing_op_t *op, peer_device_info_t *peer) } else if (op->query_timer == 0) { /* We've exhausted all available peers */ - crm_info("No remaining peers capable of fencing (%s) %s for client %s " - QB_XS " state=%s", op->action, op->target, op->client_name, - stonith_op_state_str(op->state)); + pcmk__info("No remaining peers capable of fencing (%s) %s for client " + "%s " QB_XS " state=%s", + op->action, op->target, op->client_name, + stonith_op_state_str(op->state)); CRM_CHECK(op->state < st_done, return); finalize_timed_out_op(op, "All nodes failed, or are unable, to " "fence target"); @@ -2059,10 +2064,10 @@ request_peer_fencing(remote_fencing_op_t *op, peer_device_info_t *peer) } if (op->state == st_query) { - crm_info("No peers (out of %d) have devices capable of fencing " - "(%s) %s for client %s " QB_XS " state=%s", - op->replies, op->action, op->target, op->client_name, - stonith_op_state_str(op->state)); + pcmk__info("No peers (out of %d) have devices capable of fencing " + "(%s) %s for client %s " QB_XS " state=%s", + op->replies, op->action, op->target, op->client_name, + stonith_op_state_str(op->state)); pcmk__reset_result(&op->result); pcmk__set_result(&op->result, CRM_EX_ERROR, @@ -2080,20 +2085,20 @@ request_peer_fencing(remote_fencing_op_t *op, peer_device_info_t *peer) * needed. */ - crm_info("No peers (out of %d) are capable of fencing (%s) %s " - "for client %s " QB_XS " state=%s", - op->replies, op->action, op->target, op->client_name, - stonith_op_state_str(op->state)); + pcmk__info("No peers (out of %d) are capable of fencing (%s) %s " + "for client %s " QB_XS " state=%s", + op->replies, op->action, op->target, op->client_name, + stonith_op_state_str(op->state)); } op->state = st_failed; finalize_op(op, NULL, false); } else { - crm_info("Waiting for additional peers capable of fencing (%s) %s%s%s " - "for client %s " QB_XS " id=%.8s", - op->action, op->target, (device? " using " : ""), - (device? device : ""), op->client_name, op->id); + pcmk__info("Waiting for additional peers capable of fencing (%s) " + "%s%s%s for client %s " QB_XS " id=%.8s", + op->action, op->target, ((device != NULL)? " using " : ""), + pcmk__s(device, ""), op->client_name, op->id); } } @@ -2383,9 +2388,9 @@ process_remote_stonith_query(xmlNode *msg) host = pcmk__xe_get(msg, PCMK__XA_SRC); host_is_target = pcmk__str_eq(host, op->target, pcmk__str_casei); - crm_info("Query result %d of %d from %s for %s/%s (%d device%s) %s", - op->replies, replies_expected, host, - op->target, op->action, ndevices, pcmk__plural_s(ndevices), id); + pcmk__info("Query result %d of %d from %s for %s/%s (%d device%s) %s", + op->replies, replies_expected, host, op->target, op->action, + ndevices, pcmk__plural_s(ndevices), id); if (ndevices > 0) { peer = add_result(op, host, ndevices, dev); } @@ -2402,8 +2407,9 @@ process_remote_stonith_query(xmlNode *msg) request_peer_fencing(op, peer); } else if (have_all_replies) { - crm_info("All topology query replies have arrived, continuing (%d expected/%d received) ", - replies_expected, op->replies); + pcmk__info("All topology query replies have arrived, continuing " + "(%d expected/%d received) ", + replies_expected, op->replies); request_peer_fencing(op, NULL); } @@ -2420,8 +2426,9 @@ process_remote_stonith_query(xmlNode *msg) request_peer_fencing(op, peer); } else if (have_all_replies) { - crm_info("All query replies have arrived, continuing (%d expected/%d received) ", - replies_expected, op->replies); + pcmk__info("All query replies have arrived, continuing (%d " + "expected/%d received) ", + replies_expected, op->replies); request_peer_fencing(op, NULL); } else { @@ -2429,10 +2436,10 @@ process_remote_stonith_query(xmlNode *msg) } } else if ((peer != NULL) && (op->state == st_done)) { - crm_info("Discarding query result from %s (%d device%s): " - "Operation is %s", peer->host, - peer->ndevices, pcmk__plural_s(peer->ndevices), - stonith_op_state_str(op->state)); + pcmk__info("Discarding query result from %s (%d device%s): Operation " + "is %s", + peer->host, peer->ndevices, pcmk__plural_s(peer->ndevices), + stonith_op_state_str(op->state)); } return pcmk_ok; @@ -2484,7 +2491,8 @@ fenced_process_fencing_reply(xmlNode *msg) if (op == NULL) { /* Could be for an event that began before we started */ /* TODO: Record the op for later querying */ - crm_info("Received peer result of unknown or expired operation %s", id); + pcmk__info("Received peer result of unknown or expired operation %s", + id); pcmk__reset_result(&result); return; } diff --git a/daemons/fenced/fenced_scheduler.c b/daemons/fenced/fenced_scheduler.c index 10f12e5da8b..053aa2ad399 100644 --- a/daemons/fenced/fenced_scheduler.c +++ b/daemons/fenced/fenced_scheduler.c @@ -170,28 +170,31 @@ register_if_fencing_device(gpointer data, gpointer user_data) } if (pe__resource_is_disabled(rsc)) { - crm_info("Ignoring fencing device %s because it is disabled", rsc->id); + pcmk__info("Ignoring fencing device %s because it is disabled", + rsc->id); return; } if ((stonith_watchdog_timeout_ms <= 0) && pcmk__str_eq(rsc->id, STONITH_WATCHDOG_ID, pcmk__str_none)) { - crm_info("Ignoring fencing device %s " - "because watchdog fencing is disabled", rsc->id); + pcmk__info("Ignoring fencing device %s because watchdog fencing is " + "disabled", + rsc->id); return; } // Check whether local node is allowed to run resource node = local_node_allowed_for(rsc); if (node == NULL) { - crm_info("Ignoring fencing device %s " - "because local node is not allowed to run it", rsc->id); + pcmk__info("Ignoring fencing device %s because local node is not " + "allowed to run it", + rsc->id); return; } if (node->assign->score < 0) { - crm_info("Ignoring fencing device %s " - "because local node has preference %s for it", - rsc->id, pcmk_readable_score(node->assign->score)); + pcmk__info("Ignoring fencing device %s because local node has " + "preference %s for it", + rsc->id, pcmk_readable_score(node->assign->score)); return; } @@ -200,9 +203,9 @@ register_if_fencing_device(gpointer data, gpointer user_data) pcmk_node_t *group_node = local_node_allowed_for(rsc->priv->parent); if ((group_node != NULL) && (group_node->assign->score < 0)) { - crm_info("Ignoring fencing device %s " - "because local node has preference %s for its group", - rsc->id, pcmk_readable_score(group_node->assign->score)); + pcmk__info("Ignoring fencing device %s because local node has " + "preference %s for its group", + rsc->id, pcmk_readable_score(group_node->assign->score)); return; } } diff --git a/daemons/fenced/pacemaker-fenced.c b/daemons/fenced/pacemaker-fenced.c index 848f6bc95df..ce9bd9e3b95 100644 --- a/daemons/fenced/pacemaker-fenced.c +++ b/daemons/fenced/pacemaker-fenced.c @@ -72,8 +72,8 @@ static int32_t st_ipc_accept(qb_ipcs_connection_t * c, uid_t uid, gid_t gid) { if (stonith_shutdown_flag) { - crm_info("Ignoring new client [%d] during shutdown", - pcmk__client_pid(c)); + pcmk__info("Ignoring new client [%d] during shutdown", + pcmk__client_pid(c)); return -ECONNREFUSED; } @@ -96,7 +96,7 @@ st_ipc_dispatch(qb_ipcs_connection_t * qbc, void *data, size_t size) int rc = pcmk_rc_ok; if (c == NULL) { - crm_info("Invalid client: %p", qbc); + pcmk__info("Invalid client: %p", qbc); return 0; } @@ -420,7 +420,7 @@ node_does_watchdog_fencing(const char *node) void stonith_shutdown(int nsig) { - crm_info("Terminating with %d clients", pcmk__ipc_client_count()); + pcmk__info("Terminating with %d clients", pcmk__ipc_client_count()); stonith_shutdown_flag = TRUE; if (mainloop != NULL && g_main_loop_is_running(mainloop)) { g_main_loop_quit(mainloop); diff --git a/daemons/pacemakerd/pacemakerd.c b/daemons/pacemakerd/pacemakerd.c index 128d9a3276d..02667e6df74 100644 --- a/daemons/pacemakerd/pacemakerd.c +++ b/daemons/pacemakerd/pacemakerd.c @@ -125,7 +125,7 @@ static GOptionEntry entries[] = { static void pcmk_ignore(int nsig) { - crm_info("Ignoring signal %s (%d)", strsignal(nsig), nsig); + pcmk__info("Ignoring signal %s (%d)", strsignal(nsig), nsig); } static void diff --git a/daemons/pacemakerd/pcmkd_corosync.c b/daemons/pacemakerd/pcmkd_corosync.c index 3cc1aba6dc8..ff574fcd1e9 100644 --- a/daemons/pacemakerd/pcmkd_corosync.c +++ b/daemons/pacemakerd/pcmkd_corosync.c @@ -37,9 +37,21 @@ static mainloop_timer_t *reconnect_timer = NULL; static void cfg_shutdown_callback(corosync_cfg_handle_t h, corosync_cfg_shutdown_flags_t flags) { - crm_info("Corosync wants to shut down: %s", - (flags == COROSYNC_CFG_SHUTDOWN_FLAG_IMMEDIATE) ? "immediate" : - (flags == COROSYNC_CFG_SHUTDOWN_FLAG_REGARDLESS) ? "forced" : "optional"); + const char *shutdown_s = NULL; + + switch (flags) { + case COROSYNC_CFG_SHUTDOWN_FLAG_IMMEDIATE: + shutdown_s = "immediate"; + break; + case COROSYNC_CFG_SHUTDOWN_FLAG_REGARDLESS: + shutdown_s = "forced"; + break; + default: + shutdown_s = "optional"; + break; + } + + pcmk__info("Corosync wants to shut down: %s", shutdown_s); /* Never allow corosync to shut down while we're running */ corosync_cfg_replyto_shutdown(h, COROSYNC_CFG_SHUTDOWN_FLAG_NO); @@ -87,8 +99,8 @@ cluster_reconnect_cb(gpointer data) restart_cluster_subdaemons(); return G_SOURCE_REMOVE; } else { - crm_info("Cluster reconnect failed " - "(connection will be reattempted once per second)"); + pcmk__info("Cluster reconnect failed (connection will be reattempted " + "once per second)"); } /* * In theory this will continue forever. In practice the CIB connection from @@ -214,7 +226,7 @@ pcmkd_shutdown_corosync(void) pcmk__warn("Unable to shut down Corosync: No connection"); return; } - crm_info("Asking Corosync to shut down"); + pcmk__info("Asking Corosync to shut down"); rc = corosync_cfg_try_shutdown(cfg_handle, COROSYNC_CFG_SHUTDOWN_FLAG_IMMEDIATE); if (rc == CS_OK) { @@ -281,8 +293,9 @@ pacemakerd_read_config(void) rc = pcmk__init_cmap(&local_handle); if (rc != CS_OK) { retries++; - crm_info("Could not connect to Corosync CMAP: %s (retrying in %ds) " - QB_XS " rc=%d", cs_strerror(rc), retries, rc); + pcmk__info("Could not connect to Corosync CMAP: %s (retrying in " + "%ds) " QB_XS " rc=%d", + cs_strerror(rc), retries, rc); sleep(retries); } else { @@ -331,7 +344,7 @@ pacemakerd_read_config(void) return FALSE; } - crm_info("Reading configuration for %s cluster layer", cluster_layer_s); + pcmk__info("Reading configuration for %s cluster layer", cluster_layer_s); pcmk__set_env_option(PCMK__ENV_CLUSTER_TYPE, PCMK_VALUE_COROSYNC, true); // If debug logging is not configured, check whether corosync has it diff --git a/daemons/pacemakerd/pcmkd_subdaemons.c b/daemons/pacemakerd/pcmkd_subdaemons.c index 9832c918ee4..c001a784671 100644 --- a/daemons/pacemakerd/pcmkd_subdaemons.c +++ b/daemons/pacemakerd/pcmkd_subdaemons.c @@ -248,8 +248,8 @@ pcmk_child_exit(mainloop_child_t * p, pid_t pid, int core, int signo, int exitco } else { switch(exitcode) { case CRM_EX_OK: - crm_info("%s[%d] exited with status %d (%s)", - name, pid, exitcode, crm_exit_str(exitcode)); + pcmk__info("%s[%d] exited with status %lld (%s)", name, + (long long) pid, exitcode, crm_exit_str(exitcode)); break; case CRM_EX_FATAL: @@ -469,10 +469,10 @@ start_child(pcmkd_child_t * child) mainloop_child_add(child->pid, 0, name, child, pcmk_child_exit); - crm_info("Forked process %lld using user %lld (%s) and group %lld " - "for subdaemon %s%s", - (long long) child->pid, (long long) uid, user, (long long) gid, - name, valgrind_s); + pcmk__info("Forked process %lld using user %lld (%s) and group %lld " + "for subdaemon %s%s", + (long long) child->pid, (long long) uid, user, + (long long) gid, name, valgrind_s); return pcmk_rc_ok; } diff --git a/daemons/schedulerd/schedulerd_messages.c b/daemons/schedulerd/schedulerd_messages.c index 4a9105f87e2..153d990d8b2 100644 --- a/daemons/schedulerd/schedulerd_messages.c +++ b/daemons/schedulerd/schedulerd_messages.c @@ -154,7 +154,7 @@ handle_pecalc_request(pcmk__request_t *request) crm_debug("Not saving input to disk (disabled by configuration)"); } else if (is_repoke) { - crm_info("Input has not changed since last time, not saving to disk"); + pcmk__info("Input has not changed since last time, not saving to disk"); } else { unlink(filename); @@ -246,13 +246,14 @@ pe_ipc_dispatch(qb_ipcs_connection_t * qbc, void *data, size_t size) pcmk__str_none)) { pcmk__ipc_send_ack(c, id, flags, PCMK__XE_ACK, NULL, CRM_EX_INDETERMINATE); - crm_info("Ignoring IPC reply from %s", pcmk__client_name(c)); + pcmk__info("Ignoring IPC reply from %s", pcmk__client_name(c)); } else if (!pcmk__str_eq(sys_to, CRM_SYSTEM_PENGINE, pcmk__str_none)) { pcmk__ipc_send_ack(c, id, flags, PCMK__XE_ACK, NULL, CRM_EX_INDETERMINATE); - crm_info("Ignoring invalid IPC message: to '%s' not " - CRM_SYSTEM_PENGINE, pcmk__s(sys_to, "")); + pcmk__info("Ignoring invalid IPC message: to '%s' not " + CRM_SYSTEM_PENGINE, + pcmk__s(sys_to, "")); } else { char *log_msg = NULL; diff --git a/include/crm/common/logging_internal.h b/include/crm/common/logging_internal.h index 5056a4c7fad..851ce7c211d 100644 --- a/include/crm/common/logging_internal.h +++ b/include/crm/common/logging_internal.h @@ -65,6 +65,15 @@ extern "C" { */ #define pcmk__notice(fmt, args...) qb_log(LOG_NOTICE, fmt, ##args) +/*! + * \internal + * \brief Log a message at \c LOG_INFO level + * + * \param[in] fmt \c printf() format string for log message + * \param[in] args Format string arguments + */ +#define pcmk__info(fmt, args...) qb_log(LOG_INFO, fmt, ##args) + /* Some warnings are too noisy when logged every time a given function is called * (for example, using a deprecated feature). As an alternative, we allow * warnings to be logged once per invocation of the calling program. Each of diff --git a/include/crm/common/strings_internal.h b/include/crm/common/strings_internal.h index 96928b0778b..7c6086a892d 100644 --- a/include/crm/common/strings_internal.h +++ b/include/crm/common/strings_internal.h @@ -210,9 +210,9 @@ pcmk__add_word(GString **list, size_t init_size, const char *word) * vs. "2 nodes have". A flexible solution is to pluralize entire strings, e.g. * * if (a == 1) { - * crm_info("singular message"): + * pcmk__info("singular message"): * } else { - * crm_info("plural message"); + * pcmk__info("plural message"); * } * * though even that's not sufficient for all languages besides English (if we @@ -221,12 +221,12 @@ pcmk__add_word(GString **list, size_t init_size, const char *word) */ /* Example: - * crm_info("Found %d %s", nentries, - * pcmk__plural_alt(nentries, "entry", "entries")); + * pcmk__info("Found %d %s", nentries, + * pcmk__plural_alt(nentries, "entry", "entries")); */ #define pcmk__plural_alt(i, s1, s2) (((i) == 1)? (s1) : (s2)) -// Example: crm_info("Found %d node%s", nnodes, pcmk__plural_s(nnodes)); +// Example: pcmk__info("Found %d node%s", nnodes, pcmk__plural_s(nnodes)); #define pcmk__plural_s(i) pcmk__plural_alt(i, "", "s") static inline int diff --git a/lib/cib/cib_attrs.c b/lib/cib/cib_attrs.c index 4ef721a6e8d..866120d6daa 100644 --- a/lib/cib/cib_attrs.c +++ b/lib/cib/cib_attrs.c @@ -663,7 +663,8 @@ query_node_uuid(cib_t * the_cib, const char *uname, char **uuid, int *is_remote_ crm_debug("Could not map node name '%s' to a UUID: %s", uname, pcmk_strerror(rc)); } else { - crm_info("Mapped node name '%s' to UUID %s", uname, (uuid? *uuid : "")); + pcmk__info("Mapped node name '%s' to UUID %s", uname, + ((uuid != NULL)? *uuid : "")); } return rc; } diff --git a/lib/cib/cib_file.c b/lib/cib/cib_file.c index e490f1c87a9..ffb45a99ea3 100644 --- a/lib/cib/cib_file.c +++ b/lib/cib/cib_file.c @@ -296,9 +296,9 @@ cib_file_perform_op_delegate(cib_t *cib, const char *op, const char *host, const cib__operation_t *operation = NULL; - crm_info("Handling %s operation for %s as %s", - pcmk__s(op, "invalid"), pcmk__s(section, "entire CIB"), - pcmk__s(user_name, "default user")); + pcmk__info("Handling %s operation for %s as %s", + pcmk__s(op, "invalid"), pcmk__s(section, "entire CIB"), + pcmk__s(user_name, "default user")); if (output_data != NULL) { *output_data = NULL; @@ -425,9 +425,10 @@ cib_file_signon(cib_t *cib, const char *name, enum cib_conn_type type) register_client(cib); } else { - crm_info("Connection to local file '%s' for %s (client %s) failed: %s", - private->filename, pcmk__s(name, "client"), private->id, - pcmk_strerror(rc)); + pcmk__info("Connection to local file '%s' for %s (client %s) failed: " + "%s", + private->filename, pcmk__s(name, "client"), private->id, + pcmk_strerror(rc)); } return rc; } @@ -558,7 +559,7 @@ cib_file_signoff(cib_t *cib) } if (rc == pcmk_ok) { - crm_info("Wrote CIB to %s", private->filename); + pcmk__info("Wrote CIB to %s", private->filename); cib_clear_file_flags(private, cib_file_flag_dirty); } else { pcmk__err("Could not write CIB to %s", private->filename); @@ -871,7 +872,7 @@ cib_file_backup(const char *cib_dirname, const char *cib_filename) } } pcmk__sync_directory(cib_dirname); - crm_info("Archived previous version as %s", backup_path); + pcmk__info("Archived previous version as %s", backup_path); } free(cib_path); @@ -994,8 +995,8 @@ cib_file_write_with_digest(xmlNode *cib_root, const char *cib_dirname, /* Calculate CIB digest */ digest = pcmk__digest_on_disk_cib(cib_root); pcmk__assert(digest != NULL); - crm_info("Wrote version %s.%s.0 of the CIB to disk (digest: %s)", - (admin_epoch ? admin_epoch : "0"), (epoch ? epoch : "0"), digest); + pcmk__info("Wrote version %s.%s.0 of the CIB to disk (digest: %s)", + pcmk__s(admin_epoch, "0"), pcmk__s(epoch, "0"), digest); /* Write the CIB digest to a temporary file */ fd = mkstemp(tmp_digest); @@ -1023,8 +1024,8 @@ cib_file_write_with_digest(xmlNode *cib_root, const char *cib_dirname, crm_debug("Wrote digest %s to disk", digest); /* Verify that what we wrote is sane */ - crm_info("Reading cluster configuration file %s (digest: %s)", - tmp_cib, tmp_digest); + pcmk__info("Reading cluster configuration file %s (digest: %s)", tmp_cib, + tmp_digest); rc = cib_file_read_and_verify(tmp_cib, tmp_digest, NULL); pcmk__assert(rc == 0); diff --git a/lib/cib/cib_native.c b/lib/cib/cib_native.c index c3f0fca5f53..cf536059f18 100644 --- a/lib/cib/cib_native.c +++ b/lib/cib/cib_native.c @@ -302,7 +302,7 @@ cib_native_signon(cib_t *cib, const char *name, enum cib_conn_type type) native->ipc = mainloop_get_ipc_client(native->source); if (rc != pcmk_ok || native->ipc == NULL || !crm_ipc_connected(native->ipc)) { - crm_info("Could not connect to CIB manager for %s", name); + pcmk__info("Could not connect to CIB manager for %s", name); rc = -ENOTCONN; } @@ -321,9 +321,9 @@ cib_native_signon(cib_t *cib, const char *name, enum cib_conn_type type) crm_log_xml_trace(reply, "reg-reply"); if (!pcmk__str_eq(msg_type, CRM_OP_REGISTER, pcmk__str_casei)) { - crm_info("Reply to CIB registration message has unknown type " - "'%s'", - msg_type); + pcmk__info("Reply to CIB registration message has unknown type " + "'%s'", + msg_type); rc = -EPROTO; } else { @@ -341,12 +341,12 @@ cib_native_signon(cib_t *cib, const char *name, enum cib_conn_type type) } if (rc == pcmk_ok) { - crm_info("Successfully connected to CIB manager for %s", name); + pcmk__info("Successfully connected to CIB manager for %s", name); return pcmk_ok; } - crm_info("Connection to CIB manager for %s failed: %s", - name, pcmk_strerror(rc)); + pcmk__info("Connection to CIB manager for %s failed: %s", name, + pcmk_strerror(rc)); cib_native_signoff(cib); return rc; } diff --git a/lib/cib/cib_ops.c b/lib/cib/cib_ops.c index 072761fbd92..14ac8ef95ff 100644 --- a/lib/cib/cib_ops.c +++ b/lib/cib/cib_ops.c @@ -352,7 +352,8 @@ cib_process_replace(const char *op, int options, const char *section, xmlNode * reason = "digest mismatch"; } else { - crm_info("Digest matched on replace from %s: %s", peer, digest); + pcmk__info("Digest matched on replace from %s: %s", peer, + digest); } free(digest_verify); @@ -380,15 +381,17 @@ cib_process_replace(const char *op, int options, const char *section, xmlNode * } if (reason != NULL) { - crm_info("Replacement %d.%d.%d from %s not applied to %d.%d.%d:" - " current %s is greater than the replacement", - replace_admin_epoch, replace_epoch, - replace_updates, peer, admin_epoch, epoch, updates, reason); + pcmk__info("Replacement %d.%d.%d from %s not applied to %d.%d.%d: " + "current %s is greater than the replacement", + replace_admin_epoch, replace_epoch, + replace_updates, peer, admin_epoch, epoch, updates, + reason); result = -pcmk_err_old_data; } else { - crm_info("Replaced %d.%d.%d with %d.%d.%d from %s", - admin_epoch, epoch, updates, - replace_admin_epoch, replace_epoch, replace_updates, peer); + pcmk__info("Replaced %d.%d.%d with %d.%d.%d from %s", + admin_epoch, epoch, updates, + replace_admin_epoch, replace_epoch, replace_updates, + peer); } if (*result_cib != existing_cib) { diff --git a/lib/cib/cib_remote.c b/lib/cib/cib_remote.c index 71553820550..046030d21ee 100644 --- a/lib/cib/cib_remote.c +++ b/lib/cib/cib_remote.c @@ -225,8 +225,8 @@ cib_remote_callback_dispatch(gpointer user_data) case EAGAIN: /* Have we timed out? */ if (time(NULL) >= private->start_time + private->timeout_sec) { - crm_info("Error reading from CIB manager connection: %s", - pcmk_rc_str(ETIME)); + pcmk__info("Error reading from CIB manager connection: %s", + pcmk_rc_str(ETIME)); return -1; } @@ -235,8 +235,8 @@ cib_remote_callback_dispatch(gpointer user_data) default: /* Error */ - crm_info("Error reading from CIB manager connection: %s", - pcmk_rc_str(rc)); + pcmk__info("Error reading from CIB manager connection: %s", + pcmk_rc_str(rc)); return -1; } @@ -279,8 +279,8 @@ cib_remote_command_dispatch(gpointer user_data) if (rc == EAGAIN) { /* Have we timed out? */ if (time(NULL) >= private->start_time + private->timeout_sec) { - crm_info("Error reading from CIB manager connection: %s", - pcmk_rc_str(ETIME)); + pcmk__info("Error reading from CIB manager connection: %s", + pcmk_rc_str(ETIME)); return -1; } @@ -293,8 +293,8 @@ cib_remote_command_dispatch(gpointer user_data) pcmk__err("Received late reply for remote cib connection, discarding"); if (rc != pcmk_rc_ok) { - crm_info("Error reading from CIB manager connection: %s", - pcmk_rc_str(rc)); + pcmk__info("Error reading from CIB manager connection: %s", + pcmk_rc_str(rc)); return -1; } @@ -370,8 +370,8 @@ cib_tls_signon(cib_t *cib, pcmk__remote_t *connection, gboolean event_channel) rc = pcmk__connect_remote(private->server, private->port, 0, NULL, &(connection->tcp_socket), NULL, NULL); if (rc != pcmk_rc_ok) { - crm_info("Remote connection to %s:%d failed: %s " QB_XS " rc=%d", - private->server, private->port, pcmk_rc_str(rc), rc); + pcmk__info("Remote connection to %s:%d failed: %s " QB_XS " rc=%d", + private->server, private->port, pcmk_rc_str(rc), rc); return -ENOTCONN; } @@ -501,14 +501,14 @@ cib_remote_signon(cib_t *cib, const char *name, enum cib_conn_type type) done: if (rc == pcmk_ok) { - crm_info("Opened connection to %s:%d for %s", - private->server, private->port, name); + pcmk__info("Opened connection to %s:%d for %s", private->server, + private->port, name); cib->state = cib_connected_command; cib->type = cib_command; } else { - crm_info("Connection to %s:%d for %s failed: %s\n", - private->server, private->port, name, pcmk_strerror(rc)); + pcmk__info("Connection to %s:%d for %s failed: %s\n", private->server, + private->port, name, pcmk_strerror(rc)); } return rc; diff --git a/lib/cluster/cluster.c b/lib/cluster/cluster.c index 36969773452..d2d4637bd00 100644 --- a/lib/cluster/cluster.c +++ b/lib/cluster/cluster.c @@ -119,7 +119,7 @@ pcmk_cluster_disconnect(pcmk_cluster_t *cluster) const enum pcmk_cluster_layer cluster_layer = pcmk_get_cluster_layer(); const char *cluster_layer_s = pcmk_cluster_layer_text(cluster_layer); - crm_info("Disconnecting from %s cluster layer", cluster_layer_s); + pcmk__info("Disconnecting from %s cluster layer", cluster_layer_s); switch (cluster_layer) { #if SUPPORT_COROSYNC @@ -395,7 +395,7 @@ pcmk_get_cluster_layer(void) cluster = pcmk__env_option(PCMK__ENV_CLUSTER_TYPE); if (cluster != NULL) { - crm_info("Verifying configured cluster layer '%s'", cluster); + pcmk__info("Verifying configured cluster layer '%s'", cluster); cluster_layer = pcmk_cluster_layer_invalid; #if SUPPORT_COROSYNC @@ -410,7 +410,7 @@ pcmk_get_cluster_layer(void) cluster); crm_exit(CRM_EX_FATAL); } - crm_info("Assuming an active '%s' cluster", cluster); + pcmk__info("Assuming an active '%s' cluster", cluster); } else { // Nothing configured, so test supported cluster layers @@ -424,8 +424,8 @@ pcmk_get_cluster_layer(void) if (cluster_layer == pcmk_cluster_layer_unknown) { pcmk__notice("Could not determine the current cluster layer"); } else { - crm_info("Detected an active '%s' cluster", - pcmk_cluster_layer_text(cluster_layer)); + pcmk__info("Detected an active '%s' cluster", + pcmk_cluster_layer_text(cluster_layer)); } } diff --git a/lib/cluster/corosync.c b/lib/cluster/corosync.c index 5e982b25f6e..f8dd2fb4cf5 100644 --- a/lib/cluster/corosync.c +++ b/lib/cluster/corosync.c @@ -58,7 +58,7 @@ pcmk__corosync_uuid(const pcmk__node_status_t *node) if (node->cluster_layer_id > 0) { return pcmk__assert_asprintf("%" PRIu32, node->cluster_layer_id); } else { - crm_info("Node %s is not yet known by Corosync", node->name); + pcmk__info("Node %s is not yet known by Corosync", node->name); } } return NULL; @@ -209,7 +209,7 @@ pcmk__corosync_name(uint64_t /*cmap_handle_t */ cmap_handle, uint32_t nodeid) } if (name == NULL) { - crm_info("Unable to get node name for nodeid %u", nodeid); + pcmk__info("Unable to get node name for nodeid %u", nodeid); } return name; } @@ -290,13 +290,14 @@ quorum_notification_cb(quorum_handle_t handle, uint32_t quorate, pcmk__cluster_set_quorum(false); } else { - crm_info("Quorum %s " QB_XS " membership=%" PRIu64 " members=%" PRIu32, - (is_quorate? "retained" : "still lost"), ring_id, - view_list_entries); + pcmk__info("Quorum %s " QB_XS " membership=%" PRIu64 + " members=%" PRIu32, + (is_quorate? "retained" : "still lost"), ring_id, + view_list_entries); } if (view_list_entries == 0 && init_phase) { - crm_info("Corosync membership is still forming, ignoring"); + pcmk__info("Corosync membership is still forming, ignoring"); return; } @@ -320,7 +321,7 @@ quorum_notification_cb(quorum_handle_t handle, uint32_t quorate, if (node->name == NULL) { char *name = pcmk__corosync_name(0, id); - crm_info("Obtaining name for new node %u", id); + pcmk__info("Obtaining name for new node %u", id); node = pcmk__get_node(id, name, NULL, pcmk__node_search_cluster_member); free(name); @@ -478,7 +479,7 @@ pcmk__corosync_connect(pcmk_cluster_t *cluster) // Error message was logged by pcmk__cpg_connect() return rc; } - crm_info("Connection to %s established", cluster_layer_s); + pcmk__info("Connection to %s established", cluster_layer_s); cluster->priv->node_id = pcmk__cpg_local_nodeid(0); if (cluster->priv->node_id == 0) { @@ -520,8 +521,8 @@ pcmk__corosync_is_active(void) return true; } - crm_info("Failed to initialize the cmap API: %s (%d)", - pcmk__cs_err_str(rc), rc); + pcmk__info("Failed to initialize the cmap API: %s (%d)", + pcmk__cs_err_str(rc), rc); return false; } @@ -692,8 +693,8 @@ pcmk__corosync_cluster_name(void) rc = pcmk__init_cmap(&handle); if (rc != CS_OK) { - crm_info("Failed to initialize the cmap API: %s (%d)", - cs_strerror(rc), rc); + pcmk__info("Failed to initialize the cmap API: %s (%d)", + cs_strerror(rc), rc); return NULL; } @@ -720,7 +721,8 @@ pcmk__corosync_cluster_name(void) rc = cmap_get_string(handle, "totem.cluster_name", &cluster_name); if (rc != CS_OK) { - crm_info("Cannot get totem.cluster_name: %s (%d)", cs_strerror(rc), rc); + pcmk__info("Cannot get totem.cluster_name: %s (%d)", cs_strerror(rc), + rc); } else { crm_debug("cmap totem.cluster_name = '%s'", cluster_name); diff --git a/lib/cluster/cpg.c b/lib/cluster/cpg.c index 1b76d1d37d3..e7953489fd2 100644 --- a/lib/cluster/cpg.c +++ b/lib/cluster/cpg.c @@ -594,10 +594,10 @@ node_left(const char *cpg_group_name, int event_counter, } if (rival == NULL) { - crm_info("Group %s event %d: %s (node %u pid %u) left%s", - cpg_group_name, event_counter, peer_name(peer), - cpg_peer->nodeid, cpg_peer->pid, - cpgreason2str(cpg_peer->reason)); + pcmk__info("Group %s event %d: %s (node %u pid %u) left%s", + cpg_group_name, event_counter, peer_name(peer), + cpg_peer->nodeid, cpg_peer->pid, + cpgreason2str(cpg_peer->reason)); if (peer != NULL) { crm_update_peer_proc(__func__, peer, crm_proc_cpg, PCMK_VALUE_OFFLINE); @@ -666,9 +666,9 @@ pcmk__cpg_confchg_cb(cpg_handle_t handle, sorted = NULL; for (int i = 0; i < joined_list_entries; i++) { - crm_info("Group %s event %d: node %u pid %u joined%s", - group_name->value, counter, joined_list[i].nodeid, - joined_list[i].pid, cpgreason2str(joined_list[i].reason)); + pcmk__info("Group %s event %d: node %u pid %u joined%s", + group_name->value, counter, joined_list[i].nodeid, + joined_list[i].pid, cpgreason2str(joined_list[i].reason)); } for (int i = 0; i < member_list_entries; i++) { @@ -683,7 +683,7 @@ pcmk__cpg_confchg_cb(cpg_handle_t handle, group_name->value, counter, member_list[i].pid); continue; } - crm_info("Group %s event %d: %s (node %u pid %u) is member", + pcmk__info("Group %s event %d: %s (node %u pid %u) is member", group_name->value, counter, peer_name(peer), member_list[i].nodeid, member_list[i].pid); @@ -895,7 +895,7 @@ pcmk__cpg_disconnect(pcmk_cluster_t *cluster) cluster->priv->cpg_handle = 0; } else { - crm_info("No CPG connection"); + pcmk__info("No CPG connection"); } } diff --git a/lib/cluster/election.c b/lib/cluster/election.c index 2b6ff272144..b32fd8e20f3 100644 --- a/lib/cluster/election.c +++ b/lib/cluster/election.c @@ -50,7 +50,7 @@ election_timer_cb(gpointer user_data) { pcmk_cluster_t *cluster = user_data; - crm_info("Declaring local node as winner after election timed out"); + pcmk__info("Declaring local node as winner after election timed out"); election_complete(cluster); return FALSE; } @@ -385,7 +385,7 @@ election_check(pcmk_cluster_t *cluster) } - crm_info("Election won by local node"); + pcmk__info("Election won by local node"); election_complete(cluster); return TRUE; @@ -463,8 +463,9 @@ parse_election_message(const xmlNode *message, struct vote *vote) } } else if (!pcmk__str_eq(vote->op, CRM_OP_NOVOTE, pcmk__str_none)) { - crm_info("Cannot process election message from %s " - "because %s is not a known election op", vote->from, vote->op); + pcmk__info("Cannot process election message from %s because %s is not " + "a known election op", + vote->from, vote->op); return FALSE; } @@ -472,8 +473,9 @@ parse_election_message(const xmlNode *message, struct vote *vote) * the question is how we managed to get here. */ if (pcmk__peer_cache == NULL) { - crm_info("Cannot count election %s from %s " - "because no peer information available", vote->op, vote->from); + pcmk__info("Cannot count election %s from %s becasue no peer " + "information available", + vote->op, vote->from); return FALSE; } return TRUE; @@ -707,10 +709,10 @@ election_count_vote(pcmk_cluster_t *cluster, const xmlNode *message, loss_time += 11; loss_time[8] = '\0'; } - crm_info("Ignoring election round %d (started by node ID %s) pass " - "vs %s because we lost less than %ds ago at %s", - vote.election_id, vote.election_owner, vote.from, - LOSS_DAMPEN, (loss_time? loss_time : "unknown")); + pcmk__info("Ignoring election round %d (started by node ID %s) " + "pass vs %s because we lost less than %ds ago at %s", + vote.election_id, vote.election_owner, vote.from, + LOSS_DAMPEN, pcmk__s(loss_time, "unknown")); } } diff --git a/lib/cluster/membership.c b/lib/cluster/membership.c index fdf868458d8..5e8c37f487e 100644 --- a/lib/cluster/membership.c +++ b/lib/cluster/membership.c @@ -443,9 +443,9 @@ should_forget_cluster_node(gpointer key, gpointer value, gpointer user_data) return FALSE; } - crm_info("Removing node with name %s and cluster layer ID %" PRIu32 - " from membership cache", - pcmk__s(node->name, "(unknown)"), node->cluster_layer_id); + pcmk__info("Removing node with name %s and cluster layer ID %" PRIu32 + " from membership cache", + pcmk__s(node->name, "(unknown)"), node->cluster_layer_id); return TRUE; } @@ -503,9 +503,10 @@ pcmk__cluster_forget_cluster_node(uint32_t id, const char *node_name) } } else { - crm_info("No inactive cluster nodes%s%s to remove from the membership " - "cache", - ((criterion != NULL)? " with " : ""), pcmk__s(criterion, "")); + pcmk__info("No inactive cluster nodes%s%s to remove from the " + "membership cache", + ((criterion != NULL)? " with " : ""), + pcmk__s(criterion, "")); } free(search.name); @@ -790,7 +791,7 @@ search_cluster_member_cache(unsigned int id, const char *uname, */ dump_peer_hash(LOG_DEBUG, __func__); - crm_info("Merging %p into %p", by_name, by_id); + pcmk__info("Merging %p into %p", by_name, by_id); g_hash_table_foreach_remove(pcmk__peer_cache, hash_find_by_data, by_name); } @@ -991,15 +992,14 @@ pcmk__get_node(unsigned int id, const char *uname, const char *xml_id, node = pcmk__assert_alloc(1, sizeof(pcmk__node_status_t)); - crm_info("Created entry %s/%p for node %s/%u (%d total)", - uniqueid, node, uname, id, - 1 + g_hash_table_size(pcmk__peer_cache)); + pcmk__info("Created entry %s/%p for node %s/%u (%d total)", uniqueid, + node, uname, id, (1 + g_hash_table_size(pcmk__peer_cache))); g_hash_table_replace(pcmk__peer_cache, uniqueid, node); } if ((id > 0) && (uname != NULL) && ((node->cluster_layer_id == 0) || (node->name == NULL))) { - crm_info("Node %u is now known as %s", id, uname); + pcmk__info("Node %u is now known as %s", id, uname); } if ((id > 0) && (node->cluster_layer_id == 0)) { @@ -1016,7 +1016,7 @@ pcmk__get_node(unsigned int id, const char *uname, const char *xml_id, crm_debug("Cannot obtain an XML ID for node %s[%u] at this time", node->name, id); } else { - crm_info("Node %s[%u] has XML ID %s", node->name, id, xml_id); + pcmk__info("Node %s[%u] has XML ID %s", node->name, id, xml_id); } } @@ -1158,12 +1158,13 @@ crm_update_peer_proc(const char *source, pcmk__node_status_t *node, if (changed) { if (status == NULL && flag <= crm_proc_none) { - crm_info("%s: Node %s[%" PRIu32 "] - all processes are now offline", - source, node->name, node->cluster_layer_id); + pcmk__info("%s: Node %s[%" PRIu32 "] - all processes are now " + "offline", + source, node->name, node->cluster_layer_id); } else { - crm_info("%s: Node %s[%" PRIu32 "] - %s is now %s", - source, node->name, node->cluster_layer_id, - proc2text(flag), status); + pcmk__info("%s: Node %s[%" PRIu32 "] - %s is now %s", source, + node->name, node->cluster_layer_id, proc2text(flag), + status); } if (pcmk__is_set(node->processes, crm_get_cluster_proc())) { @@ -1236,8 +1237,9 @@ pcmk__update_peer_expected(const char *source, pcmk__node_status_t *node, } if (changed) { - crm_info("%s: Node %s[%" PRIu32 "] - expected state is now %s (was %s)", - source, node->name, node->cluster_layer_id, expected, last); + pcmk__info("%s: Node %s[%" PRIu32 "] - expected state is now %s (was " + "%s)", + source, node->name, node->cluster_layer_id, expected, last); free(last); } else { crm_trace("%s: Node %s[%" PRIu32 "] - expected state is unchanged (%s)", @@ -1375,8 +1377,8 @@ pcmk__reap_unseen_nodes(uint64_t membership) membership, &iter); } else { - crm_info("State of node %s[%" PRIu32 "] is still unknown", - node->name, node->cluster_layer_id); + pcmk__info("State of node %s[%" PRIu32 "] is still unknown", + node->name, node->cluster_layer_id); } } } diff --git a/lib/common/ipc_attrd.c b/lib/common/ipc_attrd.c index c36666b8e6a..1a117e9832b 100644 --- a/lib/common/ipc_attrd.c +++ b/lib/common/ipc_attrd.c @@ -74,9 +74,9 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) value = pcmk__xe_get(reply, PCMK__XA_T); if (pcmk__str_empty(value) || !pcmk__str_eq(value, PCMK__VALUE_ATTRD, pcmk__str_none)) { - crm_info("Unrecognizable message from attribute manager: " - "message type '%s' not '" PCMK__VALUE_ATTRD "'", - pcmk__s(value, "")); + pcmk__info("Unrecognizable message from attribute manager: message " + "type '%s' not '" PCMK__VALUE_ATTRD "'", + pcmk__s(value, "")); status = CRM_EX_PROTOCOL; goto done; } @@ -95,8 +95,9 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) set_pairs_data(&reply_data, reply); } else { - crm_info("Unrecognizable message from attribute manager: " - "message subtype '%s' unknown", pcmk__s(value, "")); + pcmk__info("Unrecognizable message from attribute manager: message " + "subtype '%s' unknown", + pcmk__s(value, "")); status = CRM_EX_PROTOCOL; goto done; } diff --git a/lib/common/ipc_client.c b/lib/common/ipc_client.c index 4d603162f1b..94c4a8e7ebb 100644 --- a/lib/common/ipc_client.c +++ b/lib/common/ipc_client.c @@ -168,7 +168,7 @@ ipc_post_disconnect(gpointer user_data) { pcmk_ipc_api_t *api = user_data; - crm_info("Disconnected from %s", pcmk_ipc_name(api, true)); + pcmk__info("Disconnected from %s", pcmk_ipc_name(api, true)); // Perform any daemon-specific handling needed if ((api->cmds != NULL) && (api->cmds->post_disconnect != NULL)) { @@ -929,12 +929,13 @@ pcmk__connect_generic_ipc(crm_ipc_t *ipc) &found_pid, &found_uid, &found_gid); if (rc != pcmk_rc_ok) { if (rc == pcmk_rc_ipc_unauthorized) { - crm_info("%s IPC provider authentication failed: process %lld has " - "uid %lld (expected %lld) and gid %lld (expected %lld)", - ipc->server_name, - (long long) PCMK__SPECIAL_PID_AS_0(found_pid), - (long long) found_uid, (long long) cl_uid, - (long long) found_gid, (long long) cl_gid); + pcmk__info("%s IPC provider authentication failed: process %lld " + "has uid %lld (expected %lld) and gid %lld (expected " + "%lld)", + ipc->server_name, + (long long) PCMK__SPECIAL_PID_AS_0(found_pid), + (long long) found_uid, (long long) cl_uid, + (long long) found_gid, (long long) cl_gid); } crm_ipc_close(ipc); return rc; @@ -1587,7 +1588,7 @@ pcmk__ipc_is_authentic_process_active(const char *name, uid_t refuid, c = qb_ipcc_connect(name, 0); #endif if (c == NULL) { - crm_info("Could not connect to %s IPC: %s", name, strerror(errno)); + pcmk__info("Could not connect to %s IPC: %s", name, strerror(errno)); rc = pcmk_rc_ipc_unresponsive; goto bail; } @@ -1603,8 +1604,8 @@ pcmk__ipc_is_authentic_process_active(const char *name, uid_t refuid, * for us. */ if (qb_ipcc_connect_continue(c) != 0) { - crm_info("Could not connect to %s IPC: %s", name, - (poll_rc == 0)?"timeout":strerror(errno)); + pcmk__info("Could not connect to %s IPC: %s", name, + ((poll_rc == 0)? "timeout" :strerror(errno))); rc = pcmk_rc_ipc_unresponsive; c = NULL; // qb_ipcc_connect_continue cleaned up for us goto bail; diff --git a/lib/common/ipc_controld.c b/lib/common/ipc_controld.c index f3fcbff8553..58d4cfc69d3 100644 --- a/lib/common/ipc_controld.c +++ b/lib/common/ipc_controld.c @@ -115,8 +115,8 @@ post_connect(pcmk_ipc_api_t *api) rc = pcmk__send_ipc_request(api, hello); pcmk__xml_free(hello); if (rc != pcmk_rc_ok) { - crm_info("Could not send IPC hello to %s: %s " QB_XS " rc=%s", - pcmk_ipc_name(api, true), pcmk_rc_str(rc), rc); + pcmk__info("Could not send IPC hello to %s: %s " QB_XS " rc=%s", + pcmk_ipc_name(api, true), pcmk_rc_str(rc), rc); } else { crm_debug("Sent IPC hello to %s", pcmk_ipc_name(api, true)); } @@ -234,21 +234,22 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) "(bug unless sent by a controller <3.0.0)"); } else if (!pcmk__str_eq(value, PCMK__VALUE_RESPONSE, pcmk__str_none)) { - crm_info("Unrecognizable message from controller: " - "invalid message type '%s'", pcmk__s(value, "")); + pcmk__info("Unrecognizable message from controller: invalid message " + "type '%s'", + pcmk__s(value, "")); status = CRM_EX_PROTOCOL; goto done; } if (pcmk__str_empty(pcmk__xe_get(reply, PCMK_XA_REFERENCE))) { - crm_info("Unrecognizable message from controller: no reference"); + pcmk__info("Unrecognizable message from controller: no reference"); status = CRM_EX_PROTOCOL; goto done; } value = pcmk__xe_get(reply, PCMK__XA_CRM_TASK); if (pcmk__str_empty(value)) { - crm_info("Unrecognizable message from controller: no command name"); + pcmk__info("Unrecognizable message from controller: no command name"); status = CRM_EX_PROTOCOL; goto done; } @@ -278,8 +279,9 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) set_nodes_data(&reply_data, msg_data); } else { - crm_info("Unrecognizable message from controller: unknown command '%s'", - value); + pcmk__info("Unrecognizable message from controller: unknown command " + "'%s'", + value); status = CRM_EX_PROTOCOL; } diff --git a/lib/common/ipc_pacemakerd.c b/lib/common/ipc_pacemakerd.c index 1063d8234bc..28a0d889ed2 100644 --- a/lib/common/ipc_pacemakerd.c +++ b/lib/common/ipc_pacemakerd.c @@ -227,16 +227,16 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) value = pcmk__xe_get(reply, PCMK__XA_SUBT); if (!pcmk__str_eq(value, PCMK__VALUE_RESPONSE, pcmk__str_none)) { - crm_info("Unrecognizable message from %s: " - "message type '%s' not '" PCMK__VALUE_RESPONSE "'", - pcmk_ipc_name(api, true), pcmk__s(value, "")); + pcmk__info("Unrecognizable message from %s: message type '%s' not " + "'" PCMK__VALUE_RESPONSE "'", + pcmk_ipc_name(api, true), pcmk__s(value, "")); status = CRM_EX_PROTOCOL; goto done; } if (pcmk__str_empty(pcmk__xe_get(reply, PCMK_XA_REFERENCE))) { - crm_info("Unrecognizable message from %s: no reference", - pcmk_ipc_name(api, true)); + pcmk__info("Unrecognizable message from %s: no reference", + pcmk_ipc_name(api, true)); status = CRM_EX_PROTOCOL; goto done; } @@ -270,8 +270,8 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) reply_data.reply_type = pcmk_pacemakerd_reply_shutdown; reply_data.data.shutdown.status = atoi(op_status); } else { - crm_info("Unrecognizable message from %s: unknown command '%s'", - pcmk_ipc_name(api, true), pcmk__s(value, "")); + pcmk__info("Unrecognizable message from %s: unknown command '%s'", + pcmk_ipc_name(api, true), pcmk__s(value, "")); status = CRM_EX_PROTOCOL; goto done; } diff --git a/lib/common/ipc_schedulerd.c b/lib/common/ipc_schedulerd.c index 761997957ad..8788ec2071a 100644 --- a/lib/common/ipc_schedulerd.c +++ b/lib/common/ipc_schedulerd.c @@ -90,24 +90,24 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) value = pcmk__xe_get(reply, PCMK__XA_T); if (pcmk__parse_server(value) != pcmk_ipc_schedulerd) { - crm_info("Unrecognizable message from schedulerd: " - "unexpected message type '%s'", - pcmk__s(value, "")); + pcmk__info("Unrecognizable message from schedulerd: unexpected message " + "type '%s'", + pcmk__s(value, "")); status = CRM_EX_PROTOCOL; goto done; } value = pcmk__xe_get(reply, PCMK__XA_SUBT); if (!pcmk__str_eq(value, PCMK__VALUE_RESPONSE, pcmk__str_none)) { - crm_info("Unrecognizable message from schedulerd: " - "message type '%s' not '" PCMK__VALUE_RESPONSE "'", - pcmk__s(value, "")); + pcmk__info("Unrecognizable message from schedulerd: message type '%s' " + "not '" PCMK__VALUE_RESPONSE "'", + pcmk__s(value, "")); status = CRM_EX_PROTOCOL; goto done; } if (pcmk__str_empty(pcmk__xe_get(reply, PCMK_XA_REFERENCE))) { - crm_info("Unrecognizable message from schedulerd: no reference"); + pcmk__info("Unrecognizable message from schedulerd: no reference"); status = CRM_EX_PROTOCOL; goto done; } @@ -126,8 +126,9 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) PCMK__XA_CRM_TGRAPH_IN); reply_data.data.graph.tgraph = msg_data; } else { - crm_info("Unrecognizable message from schedulerd: " - "unknown command '%s'", pcmk__s(value, "")); + pcmk__info("Unrecognizable message from schedulerd: unknown command " + "'%s'", + pcmk__s(value, "")); status = CRM_EX_PROTOCOL; goto done; } diff --git a/lib/common/ipc_server.c b/lib/common/ipc_server.c index 90e8d4585b0..825b0cd7f25 100644 --- a/lib/common/ipc_server.c +++ b/lib/common/ipc_server.c @@ -361,9 +361,9 @@ pcmk__set_client_queue_max(pcmk__client_t *client, const char *qmax) } if (rc != pcmk_rc_ok) { - crm_info("Could not set IPC threshold for client %s[%u] to %s: %s", - pcmk__client_name(client), client->pid, - pcmk__s(qmax, "default"), pcmk_rc_str(rc)); + pcmk__info("Could not set IPC threshold for client %s[%u] to %s: %s", + pcmk__client_name(client), client->pid, + pcmk__s(qmax, "default"), pcmk_rc_str(rc)); } else if (client->queue_max != orig_value) { crm_debug("IPC threshold for client %s[%u] is now %u (was %u)", diff --git a/lib/common/logging.c b/lib/common/logging.c index 23a9e75755e..aa293276214 100644 --- a/lib/common/logging.c +++ b/lib/common/logging.c @@ -677,7 +677,8 @@ crm_log_filter(struct qb_log_callsite *cs) snprintf(token, sizeof(token), "%.*s", (int)(next - offset), offset); tag = g_quark_from_string(token); - crm_info("Created GQuark %u from token '%s' in '%s'", tag, token, trace_tags); + pcmk__info("Created GQuark %u from token '%s' in '%s'", tag, + token, trace_tags); if (next[0] != 0) { next++; @@ -1029,7 +1030,7 @@ crm_log_init(const char *entity, uint8_t level, gboolean daemon, gboolean to_std crm_perror(LOG_INFO, "Cannot change active directory to " CRM_CORE_DIR); } else { - crm_info("Changed active directory to " CRM_CORE_DIR); + pcmk__info("Changed active directory to " CRM_CORE_DIR); } /* Original meanings from signal(7) diff --git a/lib/common/messages.c b/lib/common/messages.c index 005afc9b6e9..a835b0134c2 100644 --- a/lib/common/messages.c +++ b/lib/common/messages.c @@ -223,9 +223,9 @@ pcmk__process_request(pcmk__request_t *request, GHashTable *handlers) if (handler == NULL) { handler = g_hash_table_lookup(handlers, ""); // Default handler if (handler == NULL) { - crm_info("Ignoring %s request from %s %s with no handler", - request->op, pcmk__request_origin_type(request), - pcmk__request_origin(request)); + pcmk__info("Ignoring %s request from %s %s with no handler", + request->op, pcmk__request_origin_type(request), + pcmk__request_origin(request)); return NULL; } } diff --git a/lib/common/patchset.c b/lib/common/patchset.c index d168752c829..9ed15ad5dfd 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -442,11 +442,11 @@ check_patchset_versions(const xmlNode *cib_root, const xmlNode *patchset) return pcmk_rc_diff_resync; } if (current[i] > source[i]) { - crm_info("Current %s is too high " - "(%d.%d.%d > %d.%d.%d --> %d.%d.%d)", - vfields[i], current[0], current[1], current[2], - source[0], source[1], source[2], - target[0], target[1], target[2]); + pcmk__info("Current %s is too high " + "(%d.%d.%d > %d.%d.%d --> %d.%d.%d)", + vfields[i], current[0], current[1], current[2], + source[0], source[1], source[2], + target[0], target[1], target[2]); crm_log_xml_info(patchset, "OldPatch"); return pcmk_rc_old_data; } @@ -848,8 +848,8 @@ xml_apply_patchset(xmlNode *xml, const xmlNode *patchset, bool check_version) new_digest = pcmk__digest_xml(xml, true); if (!pcmk__str_eq(new_digest, digest, pcmk__str_casei)) { - crm_info("v%d digest mis-match: expected %s, calculated %s", - format, digest, new_digest); + pcmk__info("v%d digest mis-match: expected %s, calculated %s", + format, digest, new_digest); rc = -pcmk_err_diff_failed; pcmk__if_tracing( { diff --git a/lib/common/pid.c b/lib/common/pid.c index 352ef05afdf..5efe9ca7598 100644 --- a/lib/common/pid.c +++ b/lib/common/pid.c @@ -37,8 +37,8 @@ pcmk__pid_active(pid_t pid, const char *daemon) } rc = errno; if (last_asked_pid != pid) { - crm_info("Cannot examine PID %lld: %s", - (long long) pid, pcmk_rc_str(rc)); + pcmk__info("Cannot examine PID %lld: %s", (long long) pid, + pcmk_rc_str(rc)); last_asked_pid = pid; } return rc; /* errno != ESRCH */ @@ -59,9 +59,9 @@ pcmk__pid_active(pid_t pid, const char *daemon) } if (last_asked_pid != pid) { if (rc == EACCES) { - crm_info("Could not get executable for PID %lld: %s " - QB_XS " rc=%d", - (long long) pid, pcmk_rc_str(rc), rc); + pcmk__info("Could not get executable for PID %lld: %s " + QB_XS " rc=%d", + (long long) pid, pcmk_rc_str(rc), rc); } else { pcmk__err("Could not get executable for PID %lld: %s " QB_XS " rc=%d", diff --git a/lib/common/procfs.c b/lib/common/procfs.c index 218f5114969..5e41d2c1689 100644 --- a/lib/common/procfs.c +++ b/lib/common/procfs.c @@ -147,7 +147,8 @@ pcmk__procfs_pid_of(const char *name) && pcmk__str_eq(entry_name, name, pcmk__str_casei) && (pcmk__pid_active(pid, NULL) == pcmk_rc_ok)) { - crm_info("Found %s active as process %lld", name, (long long) pid); + pcmk__info("Found %s active as process %lld", name, + (long long) pid); break; } pid = 0; diff --git a/lib/common/remote.c b/lib/common/remote.c index 18636ae1355..1d3ddd1c7ce 100644 --- a/lib/common/remote.c +++ b/lib/common/remote.c @@ -147,8 +147,8 @@ send_tls(gnutls_session_t session, struct iovec *iov) } else if (gnutls_rc < 0) { // Caller can log as error if necessary - crm_info("TLS connection terminated: %s " QB_XS " rc=%zd", - gnutls_strerror((int) gnutls_rc), gnutls_rc); + pcmk__info("TLS connection terminated: %s " QB_XS " rc=%zd", + gnutls_strerror((int) gnutls_rc), gnutls_rc); return ECONNABORTED; } else if (gnutls_rc < unsent_len) { @@ -189,8 +189,8 @@ send_plaintext(int sock, struct iovec *iov) } // Caller can log as error if necessary - crm_info("Could not send message: %s " QB_XS " rc=%d socket=%d", - pcmk_rc_str(rc), rc, sock); + pcmk__info("Could not send message: %s " QB_XS " rc=%d socket=%d", + pcmk_rc_str(rc), rc, sock); return rc; } else if (write_rc < unsent_len) { @@ -871,7 +871,7 @@ pcmk__connect_remote(const char *host, int port, int timeout, int *timer_id, memset(buffer, 0, PCMK__NELEM(buffer)); pcmk__sockaddr2str(addr, buffer); - crm_info("Attempting remote connection to %s:%d", buffer, port); + pcmk__info("Attempting remote connection to %s:%d", buffer, port); if (callback) { if (connect_socket_retry(sock, rp->ai_addr, rp->ai_addrlen, timeout, @@ -961,7 +961,7 @@ pcmk__accept_remote_connection(int ssock, int *csock) return rc; } pcmk__sockaddr2str(&addr, addr_str); - crm_info("Accepted new remote client connection from %s", addr_str); + pcmk__info("Accepted new remote client connection from %s", addr_str); rc = pcmk__set_nonblocking(*csock); if (rc != pcmk_rc_ok) { diff --git a/lib/common/results.c b/lib/common/results.c index 395b67824fd..ba7042f9d5e 100644 --- a/lib/common/results.c +++ b/lib/common/results.c @@ -1061,9 +1061,9 @@ crm_exit(crm_exit_t exit_status) exit_status = CRM_EX_ERROR; } - crm_info("Exiting %s " QB_XS " with status %d (%s: %s)", - pcmk__s(crm_system_name, "process"), exit_status, - crm_exit_name(exit_status), crm_exit_str(exit_status)); + pcmk__info("Exiting %s " QB_XS " with status %d (%s: %s)", + pcmk__s(crm_system_name, "process"), exit_status, + crm_exit_name(exit_status), crm_exit_str(exit_status)); pcmk_common_cleanup(); exit(exit_status); } diff --git a/lib/common/schemas.c b/lib/common/schemas.c index 8c43fdf0b7f..6817dc89cf2 100644 --- a/lib/common/schemas.c +++ b/lib/common/schemas.c @@ -1073,8 +1073,8 @@ apply_upgrade(const xmlNode *input_xml, int schema_index, gboolean to_logs) return NULL; } - crm_info("Schema upgrade from %s to %s succeeded", - schema->name, upgraded_schema->name); + pcmk__info("Schema upgrade from %s to %s succeeded", schema->name, + upgraded_schema->name); return new_xml; } @@ -1198,9 +1198,8 @@ pcmk__update_schema(xmlNode **xml, const char *max_schema_name, bool transform, if ((best_schema != NULL) && (best_schema->schema_index > original_schema->schema_index)) { - crm_info("%s the configuration schema to %s", - (transform? "Transformed" : "Upgraded"), - best_schema->name); + pcmk__info("%s the configuration schema to %s", + (transform? "Transformed" : "Upgraded"), best_schema->name); pcmk__xe_set(*xml, PCMK_XA_VALIDATE_WITH, best_schema->name); } return rc; @@ -1308,9 +1307,9 @@ pcmk__update_configured_schema(xmlNode **xml, bool to_logs) original_schema->name, schema->name); } } else if (to_logs) { - crm_info("Configuration with %s schema was internally " - "upgraded to latest version %s", - original_schema->name, schema->name); + pcmk__info("Configuration with %s schema was internally " + "upgraded to latest version %s", + original_schema->name, schema->name); } } diff --git a/lib/common/tls.c b/lib/common/tls.c index c9e3374c789..a62a6ce0a89 100644 --- a/lib/common/tls.c +++ b/lib/common/tls.c @@ -296,8 +296,8 @@ pcmk__init_tls_dh(gnutls_dh_params_t *dh_params) dh_bits = dh_max_bits; } - crm_info("Generating Diffie-Hellman parameters with %u-bit prime for TLS", - dh_bits); + pcmk__info("Generating Diffie-Hellman parameters with %u-bit prime for TLS", + dh_bits); rc = gnutls_dh_params_generate2(*dh_params, dh_bits); if (rc != GNUTLS_E_SUCCESS) { goto error; diff --git a/lib/common/utils.c b/lib/common/utils.c index 281e9f4844d..dee7583868f 100644 --- a/lib/common/utils.c +++ b/lib/common/utils.c @@ -550,7 +550,7 @@ crm_user_lookup(const char *name, uid_t * uid, gid_t * gid) } else { rc = rc? -rc : -EINVAL; - crm_info("User %s lookup: %s", name, pcmk_strerror(rc)); + pcmk__info("User %s lookup: %s", name, pcmk_strerror(rc)); } free(buffer); diff --git a/lib/common/watchdog.c b/lib/common/watchdog.c index e2d6fb8b778..b3db8e2f399 100644 --- a/lib/common/watchdog.c +++ b/lib/common/watchdog.c @@ -301,9 +301,9 @@ pcmk__valid_stonith_watchdog_timeout(const char *value) crm_exit(CRM_EX_FATAL); return false; } - crm_info("Watchdog configured with " PCMK_OPT_STONITH_WATCHDOG_TIMEOUT - " %s and SBD timeout %ldms", - value, sbd_timeout); + pcmk__info("Watchdog configured with " PCMK_OPT_STONITH_WATCHDOG_TIMEOUT + " %s and SBD timeout %ldms", + value, sbd_timeout); } return true; } diff --git a/lib/common/xml.c b/lib/common/xml.c index a6b2826c3db..bcd3011a108 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -568,8 +568,8 @@ pcmk__xml_is_name_start_char(const char *utf8, int *len) for (int i = 0; (i < 4) && (utf8[i] != '\0'); i++) { g_string_append_printf(buf, " 0x%.2X", utf8[i]); } - crm_info("Invalid UTF-8 character (bytes:%s)", - (pcmk__str_empty(buf->str)? " " : buf->str)); + pcmk__info("Invalid UTF-8 character (bytes:%s)", + (pcmk__str_empty(buf->str)? " " : buf->str)); g_string_free(buf, TRUE); return false; } @@ -629,8 +629,8 @@ pcmk__xml_is_name_char(const char *utf8, int *len) for (int i = 0; (i < 4) && (utf8[i] != '\0'); i++) { g_string_append_printf(buf, " 0x%.2X", utf8[i]); } - crm_info("Invalid UTF-8 character (bytes:%s)", - (pcmk__str_empty(buf->str)? " " : buf->str)); + pcmk__info("Invalid UTF-8 character (bytes:%s)", + (pcmk__str_empty(buf->str)? " " : buf->str)); g_string_free(buf, TRUE); return false; } diff --git a/lib/common/xml_io.c b/lib/common/xml_io.c index 0af639c9703..c8d4e1c57c0 100644 --- a/lib/common/xml_io.c +++ b/lib/common/xml_io.c @@ -624,7 +624,7 @@ pcmk__xml_write_temp_file(const xmlNode *xml, const char *desc, } path = pcmk__assert_asprintf("%s/%s", pcmk__get_tmpdir(), filename); - crm_info("Saving %s to %s", desc, path); + pcmk__info("Saving %s to %s", desc, path); pcmk__xml_write_file(xml, filename, false); free(path); @@ -649,7 +649,7 @@ save_xml_to_file(const xmlNode *xml, const char *desc, const char *filename) free(uuid); } - crm_info("Saving %s to %s", desc, filename); + pcmk__info("Saving %s to %s", desc, filename); pcmk__xml_write_file(xml, filename, false); free(f); } diff --git a/lib/fencing/st_actions.c b/lib/fencing/st_actions.c index 8afee24c652..9ccc76641bf 100644 --- a/lib/fencing/st_actions.c +++ b/lib/fencing/st_actions.c @@ -165,8 +165,9 @@ make_args(const char *agent, const char *action, const char *target, char *nodeid = pcmk__assert_asprintf("%" PRIu32, target_nodeid); // cts-fencing looks for this log message - crm_info("Passing '%s' as nodeid with fence action '%s' targeting %s", - nodeid, action, pcmk__s(target, "no node")); + pcmk__info("Passing '%s' as nodeid with fence action '%s' " + "targeting %s", + nodeid, action, pcmk__s(target, "no node")); g_hash_table_insert(arg_list, strdup("nodeid"), nodeid); } @@ -303,8 +304,9 @@ update_remaining_timeout(stonith_action_t * action) int diff = time(NULL) - action->initial_start_time; if (action->tries >= action->max_retries) { - crm_info("Attempted to execute agent %s (%s) the maximum number of times (%d) allowed", - action->agent, action->action, action->max_retries); + pcmk__info("Attempted to execute agent %s (%s) the maximum number of " + "times (%d) allowed", + action->agent, action->action, action->max_retries); action->remaining_timeout = 0; } else if ((action->result.execution_status != PCMK_EXEC_TIMEOUT) && (diff < (action->timeout * 0.7))) { @@ -640,10 +642,10 @@ internal_stonith_action_execute(stonith_action_t * action) action->initial_start_time = time(NULL); } else { // Later attempt after earlier failure - crm_info("Attempt %d to execute '%s' action of agent %s " - "(%ds timeout remaining)", - action->tries, action->action, action->agent, - action->remaining_timeout); + pcmk__info("Attempt %d to execute '%s' action of agent %s (%ds timeout " + "remaining)", + action->tries, action->action, action->agent, + action->remaining_timeout); is_retry = 1; } diff --git a/lib/fencing/st_client.c b/lib/fencing/st_client.c index 5a44dc5a9f0..9cd40767f2f 100644 --- a/lib/fencing/st_client.c +++ b/lib/fencing/st_client.c @@ -578,7 +578,7 @@ stonith_api_query(stonith_t * stonith, int call_options, const char *target, if(match != NULL) { xmlChar *match_path = xmlGetNodePath(match); - crm_info("//*[@" PCMK_XA_AGENT "][%d] = %s", lpc, match_path); + pcmk__info("//*[@" PCMK_XA_AGENT "][%d] = %s", lpc, match_path); free(match_path); *devices = stonith_key_value_add(*devices, NULL, pcmk__xe_get(match, diff --git a/lib/lrmd/lrmd_alerts.c b/lib/lrmd/lrmd_alerts.c index 9e3630d38c3..51439efbb79 100644 --- a/lib/lrmd/lrmd_alerts.c +++ b/lib/lrmd/lrmd_alerts.c @@ -158,8 +158,8 @@ exec_alert_list(lrmd_t *lrmd, const GList *alert_list, if (now == NULL) { now = pcmk__time_hr_now(&epoch); } - crm_info("Sending %s alert via %s to %s", - kind_s, entry->id, entry->recipient); + pcmk__info("Sending %s alert via %s to %s", kind_s, entry->id, + entry->recipient); /* Make a copy of the parameters, because each alert will be unique */ for (head = params; head != NULL; head = head->next) { diff --git a/lib/lrmd/lrmd_client.c b/lib/lrmd/lrmd_client.c index e6509c9a009..f33c26efb78 100644 --- a/lib/lrmd/lrmd_client.c +++ b/lib/lrmd/lrmd_client.c @@ -463,8 +463,8 @@ lrmd_tls_dispatch(gpointer userdata) } if (rc != pcmk_rc_ok && rc != ETIME) { - crm_info("Lost %s executor connection while reading data", - (native->remote_nodename? native->remote_nodename : "local")); + pcmk__info("Lost %s executor connection while reading data", + pcmk__s(native->remote_nodename, "local")); lrmd_tls_disconnect(lrmd); return -1; } @@ -583,11 +583,11 @@ lrmd_ipc_connection_destroy(gpointer userdata) switch (native->type) { case pcmk__client_ipc: - crm_info("Disconnected from local executor"); + pcmk__info("Disconnected from local executor"); break; case pcmk__client_tls: - crm_info("Disconnected from remote executor on %s", - native->remote_nodename); + pcmk__info("Disconnected from remote executor on %s", + native->remote_nodename); break; default: pcmk__err("Unsupported executor connection type %d (bug?)", @@ -612,7 +612,7 @@ lrmd_tls_connection_destroy(gpointer userdata) lrmd_t *lrmd = userdata; lrmd_private_t *native = lrmd->lrmd_private; - crm_info("TLS connection destroyed"); + pcmk__info("TLS connection destroyed"); if (native->remote->tls_session) { gnutls_bye(native->remote->tls_session, GNUTLS_SHUT_RDWR); @@ -717,10 +717,10 @@ read_remote_reply(lrmd_t *lrmd, int total_timeout, int expected_reply_id, *reply = NULL; } else if (pcmk__str_eq(msg_type, "notify", pcmk__str_casei)) { /* got a notify while waiting for reply, trigger the notify to be processed later */ - crm_info("queueing notify"); + pcmk__info("queueing notify"); native->pending_notify = g_list_append(native->pending_notify, *reply); if (native->process_notify) { - crm_info("notify trigger set."); + pcmk__info("notify trigger set"); mainloop_set_trigger(native->process_notify); } *reply = NULL; @@ -1119,7 +1119,7 @@ lrmd_ipc_connect(lrmd_t * lrmd, int *fd) .destroy = lrmd_ipc_connection_destroy }; - crm_info("Connecting to executor"); + pcmk__info("Connecting to executor"); if (fd) { /* No mainloop */ @@ -1394,8 +1394,8 @@ tls_handshake_succeeded(lrmd_t *lrmd) */ pcmk__tls_check_cert_expiration(native->remote->tls_session); - crm_info("TLS connection to Pacemaker Remote server %s:%d succeeded", - native->server, native->port); + pcmk__info("TLS connection to Pacemaker Remote server %s:%d succeeded", + native->server, native->port); rc = add_tls_to_mainloop(lrmd, true); /* If add_tls_to_mainloop failed, report that right now. Otherwise, we have @@ -1524,9 +1524,9 @@ lrmd_tcp_connect_cb(void *userdata, int rc, int sock) if (rc != pcmk_rc_ok) { lrmd_tls_connection_destroy(lrmd); - crm_info("Could not connect to Pacemaker Remote at %s:%d: %s " - QB_XS " rc=%d", - native->server, native->port, pcmk_rc_str(rc), rc); + pcmk__info("Could not connect to Pacemaker Remote at %s:%d: %s " + QB_XS " rc=%d", + native->server, native->port, pcmk_rc_str(rc), rc); report_async_connection_result(lrmd, pcmk_rc2legacy(rc)); return; } @@ -1550,9 +1550,9 @@ lrmd_tcp_connect_cb(void *userdata, int rc, int sock) rc = lrmd__init_remote_key(&psk_key); if (rc != pcmk_rc_ok) { - crm_info("Could not connect to Pacemaker Remote at %s:%d: %s " - QB_XS " rc=%d", - native->server, native->port, pcmk_rc_str(rc), rc); + pcmk__info("Could not connect to Pacemaker Remote at %s:%d: %s " + QB_XS " rc=%d", + native->server, native->port, pcmk_rc_str(rc), rc); lrmd_tls_connection_destroy(lrmd); report_async_connection_result(lrmd, pcmk_rc2legacy(rc)); return; @@ -1667,8 +1667,9 @@ lrmd_tls_connect(lrmd_t * lrmd, int *fd) return EKEYREJECTED; } - crm_info("Client TLS connection established with Pacemaker Remote server %s:%d", native->server, - native->port); + pcmk__info("Client TLS connection established with Pacemaker Remote server " + "%s:%d", + native->server, native->port); if (fd) { *fd = native->sock; diff --git a/lib/pacemaker/pcmk_injections.c b/lib/pacemaker/pcmk_injections.c index 08f5e5af891..277db992e2a 100644 --- a/lib/pacemaker/pcmk_injections.c +++ b/lib/pacemaker/pcmk_injections.c @@ -462,8 +462,8 @@ pcmk__inject_resource_history(pcmk__output_t *out, xmlNode *cib_node, return NULL; } - crm_info("Injecting new resource %s into node state '%s'", - lrm_name, pcmk__xe_id(cib_node)); + pcmk__info("Injecting new resource %s into node state '%s'", lrm_name, + pcmk__xe_id(cib_node)); lrm = pcmk__xe_first_child(cib_node, PCMK__XE_LRM, NULL, NULL); if (lrm == NULL) { diff --git a/lib/pacemaker/pcmk_sched_colocation.c b/lib/pacemaker/pcmk_sched_colocation.c index 23a0c6f0f05..de18cdba55e 100644 --- a/lib/pacemaker/pcmk_sched_colocation.c +++ b/lib/pacemaker/pcmk_sched_colocation.c @@ -1587,12 +1587,12 @@ best_node_score_matching_attr(const pcmk__colocation_t *colocation, if (!pcmk__str_eq(attr, CRM_ATTR_UNAME, pcmk__str_none)) { if (best_node == NULL) { - crm_info("No allowed node for %s matches node attribute %s=%s", - rsc->id, attr, value); + pcmk__info("No allowed node for %s matches node attribute %s=%s", + rsc->id, attr, value); } else { - crm_info("Allowed node %s for %s had best score (%d) " - "of those matching node attribute %s=%s", - best_node, rsc->id, best_score, attr, value); + pcmk__info("Allowed node %s for %s had best score (%d) of those " + "matching node attribute %s=%s", + best_node, rsc->id, best_score, attr, value); } } diff --git a/lib/pacemaker/pcmk_sched_fencing.c b/lib/pacemaker/pcmk_sched_fencing.c index 90fe85d8185..aebeeb4aa2f 100644 --- a/lib/pacemaker/pcmk_sched_fencing.c +++ b/lib/pacemaker/pcmk_sched_fencing.c @@ -173,9 +173,9 @@ order_stop_vs_fencing(pcmk_resource_t *rsc, pcmk_action_t *stonith_op) rsc->id, (order_implicit? "after" : "because"), pcmk__node_name(target)); } else { - crm_info("%s is implicit %s %s is fenced", - action->uuid, (order_implicit? "after" : "because"), - pcmk__node_name(target)); + pcmk__info("%s is implicit %s %s is fenced", action->uuid, + (order_implicit? "after" : "because"), + pcmk__node_name(target)); } if (pcmk__is_set(rsc->flags, pcmk__rsc_notify)) { @@ -201,8 +201,8 @@ order_stop_vs_fencing(pcmk_resource_t *rsc, pcmk_action_t *stonith_op) * pcmk__update_action_for_orderings() and use this block for healthy * resources instead of the above. */ - crm_info("Moving healthy resource %s off %s before fencing", - rsc->id, pcmk__node_name(node)); + pcmk__info("Moving healthy resource %s off %s before fencing", + rsc->id, pcmk__node_name(node)); pcmk__new_ordering(rsc, stop_key(rsc), NULL, NULL, strdup(PCMK_ACTION_STONITH), stonith_op, pcmk__ar_ordered, rsc->private->scheduler); @@ -401,9 +401,9 @@ pcmk__fence_guest(pcmk_node_t *node) NULL, FALSE, node->priv->scheduler); - crm_info("Implying guest %s is down (action %d) after %s fencing", - pcmk__node_name(node), stonith_op->id, - pcmk__node_name(stop->node)); + pcmk__info("Implying guest %s is down (action %d) after %s fencing", + pcmk__node_name(node), stonith_op->id, + pcmk__node_name(stop->node)); order_actions(parent_stonith_op, stonith_op, pcmk__ar_unrunnable_first_blocks |pcmk__ar_first_implies_then); @@ -412,10 +412,10 @@ pcmk__fence_guest(pcmk_node_t *node) order_actions(stop, stonith_op, pcmk__ar_unrunnable_first_blocks |pcmk__ar_first_implies_then); - crm_info("Implying guest %s is down (action %d) " - "after launcher %s is stopped (action %d)", - pcmk__node_name(node), stonith_op->id, - launcher->id, stop->id); + pcmk__info("Implying guest %s is down (action %d) after launcher %s is " + "stopped (action %d)", + pcmk__node_name(node), stonith_op->id, launcher->id, + stop->id); } else { /* If we're fencing the guest node but there's no stop for the guest * resource, we must think the guest is already stopped. However, we may @@ -429,15 +429,15 @@ pcmk__fence_guest(pcmk_node_t *node) if (stop) { order_actions(stop, stonith_op, pcmk__ar_ordered); - crm_info("Implying guest %s is down (action %d) " - "after connection is stopped (action %d)", - pcmk__node_name(node), stonith_op->id, stop->id); + pcmk__info("Implying guest %s is down (action %d) after connection " + "is stopped (action %d)", + pcmk__node_name(node), stonith_op->id, stop->id); } else { /* Not sure why we're fencing, but everything must already be * cleanly stopped. */ - crm_info("Implying guest %s is down (action %d) ", - pcmk__node_name(node), stonith_op->id); + pcmk__info("Implying guest %s is down (action %d)", + pcmk__node_name(node), stonith_op->id); } } diff --git a/lib/pacemaker/pcmk_sched_location.c b/lib/pacemaker/pcmk_sched_location.c index 24bcd1bb078..24cfbca464a 100644 --- a/lib/pacemaker/pcmk_sched_location.c +++ b/lib/pacemaker/pcmk_sched_location.c @@ -157,9 +157,9 @@ score_from_attr(const char *constraint_id, const char *attr_name, PCMK_META_CONTAINER_ATTRIBUTE_TARGET); score_s = pcmk__node_attr(node, attr_name, target, pcmk__rsc_node_current); if (pcmk__str_empty(score_s)) { - crm_info("Ignoring location %s for %s on %s " - "because it has no node attribute %s", - constraint_id, rsc->id, pcmk__node_name(node), attr_name); + pcmk__info("Ignoring location %s for %s on %s because it has no node " + "attribute %s", + constraint_id, rsc->id, pcmk__node_name(node), attr_name); return ENXIO; } @@ -330,9 +330,9 @@ unpack_rsc_location(xmlNode *xml_obj, pcmk_resource_t *rsc, pcmk__location_t *location = NULL; if (match == NULL) { - crm_info("Ignoring location constraint %s " - "because '%s' is not a known node", - pcmk__s(id, "without ID"), node); + pcmk__info("Ignoring location constraint %s because '%s' is not a " + "known node", + pcmk__s(id, "without ID"), node); return; } diff --git a/lib/pacemaker/pcmk_sched_nodes.c b/lib/pacemaker/pcmk_sched_nodes.c index 48587ed3f57..b89c88056ee 100644 --- a/lib/pacemaker/pcmk_sched_nodes.c +++ b/lib/pacemaker/pcmk_sched_nodes.c @@ -378,7 +378,7 @@ pcmk__apply_node_health(pcmk_scheduler_t *scheduler) if (strategy == pcmk__health_strategy_none) { return; } - crm_info("Applying node health strategy '%s'", strategy_str); + pcmk__info("Applying node health strategy '%s'", strategy_str); // The progressive strategy can use a base health score if (strategy == pcmk__health_strategy_progressive) { @@ -393,8 +393,8 @@ pcmk__apply_node_health(pcmk_scheduler_t *scheduler) if (health == 0) { continue; } - crm_info("Overall system health of %s is %d", - pcmk__node_name(node), health); + pcmk__info("Overall system health of %s is %d", pcmk__node_name(node), + health); // Use node health as a location score for each resource on the node for (GList *r = scheduler->priv->resources; r != NULL; r = r->next) { diff --git a/lib/pacemaker/pcmk_sched_recurring.c b/lib/pacemaker/pcmk_sched_recurring.c index af286cab760..1062e21c298 100644 --- a/lib/pacemaker/pcmk_sched_recurring.c +++ b/lib/pacemaker/pcmk_sched_recurring.c @@ -702,9 +702,9 @@ pcmk__schedule_cancel(pcmk_resource_t *rsc, const char *call_id, && (node != NULL) && (reason != NULL), return); - crm_info("Recurring %s-interval %s for %s will be stopped on %s: %s", - pcmk__readable_interval(interval_ms), task, rsc->id, - pcmk__node_name(node), reason); + pcmk__info("Recurring %s-interval %s for %s will be stopped on %s: %s", + pcmk__readable_interval(interval_ms), task, rsc->id, + pcmk__node_name(node), reason); cancel = pcmk__new_cancel_action(rsc, task, interval_ms, node); pcmk__insert_meta(cancel, PCMK__XA_CALL_ID, call_id); diff --git a/lib/pacemaker/pcmk_sched_resource.c b/lib/pacemaker/pcmk_sched_resource.c index 87af19dca0f..7e123b38558 100644 --- a/lib/pacemaker/pcmk_sched_resource.c +++ b/lib/pacemaker/pcmk_sched_resource.c @@ -546,9 +546,9 @@ pcmk__unassign_resource(pcmk_resource_t *rsc) pcmk_node_t *old = rsc->priv->assigned_node; if (old == NULL) { - crm_info("Unassigning %s", rsc->id); + pcmk__info("Unassigning %s", rsc->id); } else { - crm_info("Unassigning %s from %s", rsc->id, pcmk__node_name(old)); + pcmk__info("Unassigning %s from %s", rsc->id, pcmk__node_name(old)); } pcmk__set_rsc_flags(rsc, pcmk__rsc_unassigned); @@ -634,10 +634,10 @@ pcmk__threshold_reached(pcmk_resource_t *rsc, const pcmk_node_t *node, return true; } - crm_info("%s can fail %d more time%s on " - "%s before reaching migration threshold (%d)", - rsc_to_ban->id, remaining_tries, pcmk__plural_s(remaining_tries), - pcmk__node_name(node), rsc->priv->ban_after_failures); + pcmk__info("%s can fail %d more time%s on s before reaching migration " + "threshold (%d)", + rsc_to_ban->id, remaining_tries, pcmk__plural_s(remaining_tries), + pcmk__node_name(node), rsc->priv->ban_after_failures); return false; } diff --git a/lib/pengine/failcounts.c b/lib/pengine/failcounts.c index 73034f8d732..4cc2421d996 100644 --- a/lib/pengine/failcounts.c +++ b/lib/pengine/failcounts.c @@ -319,8 +319,9 @@ update_failcount_for_attr(gpointer key, gpointer value, gpointer user_data) int rc = pcmk__scan_ll(value, &last_ll, 0LL); if (rc != pcmk_rc_ok) { - crm_info("Ignoring invalid value '%s' for %s: %s", - (const char *) value, (const char *) key, pcmk_rc_str(rc)); + pcmk__info("Ignoring invalid value '%s' for %s: %s", + (const char *) value, (const char *) key, + pcmk_rc_str(rc)); return; } fc_data->last_failure = (time_t) QB_MAX(fc_data->last_failure, last_ll); diff --git a/lib/pengine/pe_actions.c b/lib/pengine/pe_actions.c index 5595a436279..241c2c4e933 100644 --- a/lib/pengine/pe_actions.c +++ b/lib/pengine/pe_actions.c @@ -580,8 +580,8 @@ unpack_interval_origin(const char *value, const xmlNode *xml_obj, // Calculate seconds remaining until next interval result = ((result <= 0)? 0 : interval_sec) - result; - crm_info("Calculated a start delay of %llds for operation '%s'", - result, pcmk__s(pcmk__xe_id(xml_obj), "(unspecified)")); + pcmk__info("Calculated a start delay of %llds for operation '%s'", result, + pcmk__s(pcmk__xe_id(xml_obj), "(unspecified)")); if (start_delay != NULL) { *start_delay = result * 1000; // milliseconds diff --git a/lib/pengine/pe_notif.c b/lib/pengine/pe_notif.c index 4cb997ae0f8..464bf0e8fc7 100644 --- a/lib/pengine/pe_notif.c +++ b/lib/pengine/pe_notif.c @@ -1016,7 +1016,8 @@ pe__order_notifs_after_fencing(const pcmk_action_t *stop, pcmk_resource_t *rsc, { notify_data_t *n_data; - crm_info("Ordering notifications for implied %s after fencing", stop->uuid); + pcmk__info("Ordering notifications for implied %s after fencing", + stop->uuid); n_data = pe__action_notif_pseudo_ops(rsc, PCMK_ACTION_STOP, NULL, stonith_op); diff --git a/lib/pengine/status.c b/lib/pengine/status.c index 2af9f588394..27667a10b77 100644 --- a/lib/pengine/status.c +++ b/lib/pengine/status.c @@ -167,8 +167,8 @@ cluster_status(pcmk_scheduler_t * scheduler) if ((scheduler->priv->local_node_name != NULL) && (pcmk_find_node(scheduler, scheduler->priv->local_node_name) == NULL)) { - crm_info("Creating a fake local node for %s", - scheduler->priv->local_node_name); + pcmk__info("Creating a fake local node for %s", + scheduler->priv->local_node_name); pe_create_node(scheduler->priv->local_node_name, scheduler->priv->local_node_name, NULL, 0, scheduler); } diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c index ec0e5b7ddb0..98971682919 100644 --- a/lib/pengine/unpack.c +++ b/lib/pengine/unpack.c @@ -145,10 +145,10 @@ pe_fence_node(pcmk_scheduler_t *scheduler, pcmk_node_t *node, } } else if (is_dangling_guest_node(node)) { - crm_info("Cleaning up dangling connection for guest node %s: " - "fencing was already done because %s, " - "and guest resource no longer exists", - pcmk__node_name(node), reason); + pcmk__info("Cleaning up dangling connection for guest node %s: fencing " + "was already done because %s, and guest resource no longer " + "exists", + pcmk__node_name(node), reason); pcmk__set_rsc_flags(node->priv->remote, pcmk__rsc_failed|pcmk__rsc_stop_if_failed); @@ -236,14 +236,14 @@ unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler) set_config_flag(scheduler, PCMK_OPT_ENABLE_STARTUP_PROBES, pcmk__sched_probe_resources); if (!pcmk__is_set(scheduler->flags, pcmk__sched_probe_resources)) { - crm_info("Startup probes: disabled (dangerous)"); + pcmk__info("Startup probes: disabled (dangerous)"); } value = pcmk__cluster_option(config_hash, PCMK_OPT_HAVE_WATCHDOG); if (pcmk__is_true(value)) { - crm_info("Watchdog-based self-fencing will be performed via SBD if " - "fencing is required and " PCMK_OPT_STONITH_WATCHDOG_TIMEOUT - " is nonzero"); + pcmk__info("Watchdog-based self-fencing will be performed via SBD if " + "fencing is required and " + PCMK_OPT_STONITH_WATCHDOG_TIMEOUT " is nonzero"); pcmk__set_scheduler_flags(scheduler, pcmk__sched_have_fencing); } @@ -1012,10 +1012,10 @@ unpack_ticket_state(xmlNode *xml_ticket, void *userdata) granted = g_hash_table_lookup(ticket->state, PCMK__XA_GRANTED); if (pcmk__is_true(granted)) { pcmk__set_ticket_flags(ticket, pcmk__ticket_granted); - crm_info("We have ticket '%s'", ticket->id); + pcmk__info("We have ticket '%s'", ticket->id); } else { pcmk__clear_ticket_flags(ticket, pcmk__ticket_granted); - crm_info("We do not have ticket '%s'", ticket->id); + pcmk__info("We do not have ticket '%s'", ticket->id); } last_granted = g_hash_table_lookup(ticket->state, PCMK_XA_LAST_GRANTED); @@ -1036,7 +1036,7 @@ unpack_ticket_state(xmlNode *xml_ticket, void *userdata) if (pcmk__is_true(standby)) { pcmk__set_ticket_flags(ticket, pcmk__ticket_standby); if (pcmk__is_set(ticket->flags, pcmk__ticket_granted)) { - crm_info("Granted ticket '%s' is in standby-mode", ticket->id); + pcmk__info("Granted ticket '%s' is in standby-mode", ticket->id); } } else { pcmk__clear_ticket_flags(ticket, pcmk__ticket_standby); @@ -1084,20 +1084,20 @@ unpack_handle_remote_attrs(pcmk_node_t *this_node, const xmlNode *state, add_node_attrs(attrs, this_node, TRUE, scheduler); if (pe__shutdown_requested(this_node)) { - crm_info("%s is shutting down", pcmk__node_name(this_node)); + pcmk__info("%s is shutting down", pcmk__node_name(this_node)); this_node->details->shutdown = TRUE; } if (pcmk__is_true(pcmk__node_attr(this_node, PCMK_NODE_ATTR_STANDBY, NULL, pcmk__rsc_node_current))) { - crm_info("%s is in standby mode", pcmk__node_name(this_node)); + pcmk__info("%s is in standby mode", pcmk__node_name(this_node)); pcmk__set_node_flags(this_node, pcmk__node_standby); } if (pcmk__is_true(pcmk__node_attr(this_node, PCMK_NODE_ATTR_MAINTENANCE, NULL, pcmk__rsc_node_current)) || ((rsc != NULL) && !pcmk__is_set(rsc->flags, pcmk__rsc_managed))) { - crm_info("%s is in maintenance mode", pcmk__node_name(this_node)); + pcmk__info("%s is in maintenance mode", pcmk__node_name(this_node)); this_node->details->maintenance = TRUE; } @@ -1124,8 +1124,8 @@ unpack_handle_remote_attrs(pcmk_node_t *this_node, const xmlNode *state, * nodes, because they are "fenced" by recovering their containing * resource. */ - crm_info("%s has resource discovery disabled", - pcmk__node_name(this_node)); + pcmk__info("%s has resource discovery disabled", + pcmk__node_name(this_node)); pcmk__clear_node_flags(this_node, pcmk__node_probes_allowed); } } @@ -1152,13 +1152,13 @@ unpack_transient_attributes(const xmlNode *state, pcmk_node_t *node, if (pcmk__is_true(pcmk__node_attr(node, PCMK_NODE_ATTR_STANDBY, NULL, pcmk__rsc_node_current))) { - crm_info("%s is in standby mode", pcmk__node_name(node)); + pcmk__info("%s is in standby mode", pcmk__node_name(node)); pcmk__set_node_flags(node, pcmk__node_standby); } if (pcmk__is_true(pcmk__node_attr(node, PCMK_NODE_ATTR_MAINTENANCE, NULL, pcmk__rsc_node_current))) { - crm_info("%s is in maintenance mode", pcmk__node_name(node)); + pcmk__info("%s is in maintenance mode", pcmk__node_name(node)); node->details->maintenance = TRUE; } @@ -1610,9 +1610,9 @@ determine_online_status_no_fencing(pcmk_scheduler_t *scheduler, } else { /* mark it unclean */ pe_fence_node(scheduler, this_node, "peer is unexpectedly down", FALSE); - crm_info("Node %s member@%lld online@%lld join=%s expected=%s", - pcmk__node_name(this_node), when_member, when_online, - pcmk__s(join, ""), pcmk__s(exp_state, "")); + pcmk__info("Node %s member@%lld online@%lld join=%s expected=%s", + pcmk__node_name(this_node), when_member, when_online, + pcmk__s(join, ""), pcmk__s(exp_state, "")); } return online; } @@ -1705,7 +1705,8 @@ determine_online_status_fencing(pcmk_scheduler_t *scheduler, } else if (termination_requested) { if ((when_member <= 0) && (when_online <= 0) && pcmk__str_eq(join, CRMD_JOINSTATE_DOWN, pcmk__str_none)) { - crm_info("%s was fenced as requested", pcmk__node_name(this_node)); + pcmk__info("%s was fenced as requested", + pcmk__node_name(this_node)); return false; } pe_fence_node(scheduler, this_node, "fencing was requested", false); @@ -1719,8 +1720,8 @@ determine_online_status_fencing(pcmk_scheduler_t *scheduler, FALSE); } else if ((when_member > 0) || (when_online > 0)) { - crm_info("- %s is not ready to run resources", - pcmk__node_name(this_node)); + pcmk__info("- %s is not ready to run resources", + pcmk__node_name(this_node)); pcmk__set_node_flags(this_node, pcmk__node_standby); this_node->details->pending = TRUE; @@ -1741,12 +1742,12 @@ determine_online_status_fencing(pcmk_scheduler_t *scheduler, /* Everything is running at this point, now check join state */ } else if (pcmk__str_eq(join, CRMD_JOINSTATE_MEMBER, pcmk__str_none)) { - crm_info("%s is active", pcmk__node_name(this_node)); + pcmk__info("%s is active", pcmk__node_name(this_node)); } else if (pcmk__str_any_of(join, CRMD_JOINSTATE_PENDING, CRMD_JOINSTATE_DOWN, NULL)) { - crm_info("%s is not ready to run resources", - pcmk__node_name(this_node)); + pcmk__info("%s is not ready to run resources", + pcmk__node_name(this_node)); pcmk__set_node_flags(this_node, pcmk__node_standby); this_node->details->pending = TRUE; @@ -1883,19 +1884,19 @@ determine_online_status(const xmlNode *node_state, pcmk_node_t *this_node, crm_trace("%s is offline", pcmk__node_name(this_node)); } else if (this_node->details->shutdown) { - crm_info("%s is shutting down", pcmk__node_name(this_node)); + pcmk__info("%s is shutting down", pcmk__node_name(this_node)); } else if (this_node->details->pending) { - crm_info("%s is pending", pcmk__node_name(this_node)); + pcmk__info("%s is pending", pcmk__node_name(this_node)); } else if (pcmk__is_set(this_node->priv->flags, pcmk__node_standby)) { - crm_info("%s is in standby", pcmk__node_name(this_node)); + pcmk__info("%s is in standby", pcmk__node_name(this_node)); } else if (this_node->details->maintenance) { - crm_info("%s is in maintenance", pcmk__node_name(this_node)); + pcmk__info("%s is in maintenance", pcmk__node_name(this_node)); } else { - crm_info("%s is online", pcmk__node_name(this_node)); + pcmk__info("%s is online", pcmk__node_name(this_node)); } } @@ -4023,10 +4024,10 @@ remap_operation(struct action_history *history, if (history->execution_status == PCMK_EXEC_DONE) { char *last_change_s = last_change_str(history->xml); - crm_info("Treating unknown exit status %d from %s of %s " - "on %s at %s as failure", - history->exit_status, task, history->rsc->id, - pcmk__node_name(history->node), last_change_s); + pcmk__info("Treating unknown exit status %d from %s of %s on " + "%s at %s as failure", + history->exit_status, task, history->rsc->id, + pcmk__node_name(history->node), last_change_s); remap_because(history, &why, PCMK_EXEC_ERROR, "unknown exit status"); free(last_change_s); @@ -4132,8 +4133,9 @@ should_ignore_failure_timeout(const pcmk_resource_t *rsc, const char *task, if (remote_node && !pcmk__is_set(remote_node->priv->flags, pcmk__node_remote_fenced)) { if (is_last_failure) { - crm_info("Waiting to clear monitor failure for remote node %s" - " until fencing has occurred", rsc->id); + pcmk__info("Waiting to clear monitor failure for remote node %s" + " until fencing has occurred", + rsc->id); } return TRUE; } @@ -4273,9 +4275,9 @@ check_operation_expiry(struct action_history *history) * this point, that's always true (it won't be reliable until * after unpack_node_history() is done). */ - crm_info("Clearing %s failure will wait until any scheduled " - "fencing of %s completes", - history->task, history->rsc->id); + pcmk__info("Clearing %s failure will wait until any scheduled " + "fencing of %s completes", + history->task, history->rsc->id); order_after_remote_fencing(clear_op, history->rsc, scheduler); } } diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c index d3bc6f50a47..73fb2f2550c 100644 --- a/lib/pengine/utils.c +++ b/lib/pengine/utils.c @@ -393,8 +393,8 @@ resource_location(pcmk_resource_t *rsc, const pcmk_node_t *node, int score, && (rsc->priv->assigned_node != NULL)) { // @TODO Should this be more like pcmk__unassign_resource()? - crm_info("Unassigning %s from %s", - rsc->id, pcmk__node_name(rsc->priv->assigned_node)); + pcmk__info("Unassigning %s from %s", rsc->id, + pcmk__node_name(rsc->priv->assigned_node)); pcmk__free_node_copy(rsc->priv->assigned_node); rsc->priv->assigned_node = NULL; } diff --git a/lib/services/dbus.c b/lib/services/dbus.c index 197b2186f80..9f32f82000e 100644 --- a/lib/services/dbus.c +++ b/lib/services/dbus.c @@ -502,7 +502,7 @@ pcmk_dbus_send(DBusMessage *msg, DBusConnection *connection, } if (dbus_pending_call_get_completed(pending)) { - crm_info("DBus %s message completed too soon", method); + pcmk__info("DBus %s message completed too soon", method); /* Calling done() directly in this case instead of setting notify below * breaks things */ diff --git a/lib/services/services.c b/lib/services/services.c index 11198327461..ed0e1b6457f 100644 --- a/lib/services/services.c +++ b/lib/services/services.c @@ -135,8 +135,8 @@ expand_resource_class(const char *rsc, const char *standard, const char *agent) #else #error No standards supported for service alias (configure script bug) #endif - crm_info("Assuming resource class %s for agent %s for %s", - default_standard, agent, rsc); + pcmk__info("Assuming resource class %s for agent %s for %s", + default_standard, agent, rsc); expanded_class = pcmk__str_copy(default_standard); } } @@ -180,32 +180,34 @@ required_argument_missing(uint32_t ra_caps, const char *name, const char *agent, const char *action) { if (pcmk__str_empty(name)) { - crm_info("Cannot create operation without resource name (bug?)"); + pcmk__info("Cannot create operation without resource name (bug?)"); return true; } if (pcmk__str_empty(standard)) { - crm_info("Cannot create operation for %s without resource class (bug?)", - name); + pcmk__info("Cannot create operation for %s without resource class " + "(bug?)", + name); return true; } if (pcmk__is_set(ra_caps, pcmk_ra_cap_provider) && pcmk__str_empty(provider)) { - crm_info("Cannot create operation for %s resource %s " - "without provider (bug?)", standard, name); + pcmk__info("Cannot create operation for %s resource %s without " + "provider (bug?)", + standard, name); return true; } if (pcmk__str_empty(agent)) { - crm_info("Cannot create operation for %s without agent name (bug?)", - name); + pcmk__info("Cannot create operation for %s without agent name (bug?)", + name); return true; } if (pcmk__str_empty(action)) { - crm_info("Cannot create operation for %s without action name (bug?)", - name); + pcmk__info("Cannot create operation for %s without action name (bug?)", + name); return true; } return false; @@ -313,13 +315,13 @@ services__create_resource_action(const char *name, const char *standard, rc = services__systemd_prepare(op); #endif } else { - crm_info("Unknown resource standard: %s", op->standard); + pcmk__info("Unknown resource standard: %s", op->standard); rc = ENOENT; } if (rc != pcmk_rc_ok) { - crm_info("Cannot prepare %s operation for %s: %s", - action, name, strerror(rc)); + pcmk__info("Cannot prepare %s operation for %s: %s", action, name, + strerror(rc)); services__handle_exec_error(op, rc); } return op; @@ -370,8 +372,8 @@ services_action_create_generic(const char *exec, const char *args[]) for (int cur_arg = 1; args[cur_arg - 1] != NULL; cur_arg++) { if (cur_arg == PCMK__NELEM(op->opaque->args)) { - crm_info("Cannot prepare action for '%s': Too many arguments", - exec); + pcmk__info("Cannot prepare action for '%s': Too many arguments", + exec); services__set_result(op, PCMK_OCF_UNKNOWN_ERROR, PCMK_EXEC_ERROR_HARD, "Too many arguments"); break; @@ -478,7 +480,8 @@ services_set_op_pending(svc_action_t *op, DBusPendingCall *pending) { if (op->opaque->pending && (op->opaque->pending != pending)) { if (pending) { - crm_info("Lost pending %s DBus call (%p)", op->id, op->opaque->pending); + pcmk__info("Lost pending %s DBus call (%p)", op->id, + op->opaque->pending); } else { crm_trace("Done with pending %s DBus call (%p)", op->id, op->opaque->pending); } @@ -628,7 +631,7 @@ services_action_free(svc_action_t * op) gboolean cancel_recurring_action(svc_action_t * op) { - crm_info("Cancelling %s operation %s", op->standard, op->id); + pcmk__info("Cancelling %s operation %s", op->standard, op->id); if (recurring_actions) { g_hash_table_remove(recurring_actions, op->id); @@ -678,8 +681,9 @@ services_action_cancel(const char *name, const char *action, guint interval_ms) * process goes away. */ if (op->pid != 0) { - crm_info("Terminating in-flight op %s[%d] early because it was cancelled", - id, op->pid); + pcmk__info("Terminating in-flight op %s[%d] early because it was " + "cancelled", + id, op->pid); cancelled = mainloop_child_kill(op->pid); if (cancelled == FALSE) { pcmk__err("Termination of %s[%d] failed", id, op->pid); @@ -958,15 +962,15 @@ execute_metadata_action(svc_action_t *op) const char *class = op->standard; if (op->agent == NULL) { - crm_info("Meta-data requested without specifying agent"); + pcmk__info("Meta-data requested without specifying agent"); services__set_result(op, services__generic_error(op), PCMK_EXEC_ERROR_FATAL, "Agent not specified"); return EINVAL; } if (class == NULL) { - crm_info("Meta-data requested for agent %s without specifying class", - op->agent); + pcmk__info("Meta-data requested for agent %s without specifying class", + op->agent); services__set_result(op, services__generic_error(op), PCMK_EXEC_ERROR_FATAL, "Agent standard not specified"); @@ -978,8 +982,8 @@ execute_metadata_action(svc_action_t *op) class = resources_find_service_class(op->agent); } if (class == NULL) { - crm_info("Meta-data requested for %s, but could not determine class", - op->agent); + pcmk__info("Meta-data requested for %s, but could not determine class", + op->agent); services__set_result(op, services__generic_error(op), PCMK_EXEC_ERROR_HARD, "Agent standard could not be determined"); diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c index 7cc32cf711f..f6ed746a1e6 100644 --- a/lib/services/services_linux.c +++ b/lib/services/services_linux.c @@ -61,8 +61,9 @@ sigchld_setup(struct sigchld_data_s *data) // Block SIGCHLD (saving previous set of blocked signals to restore later) if (sigprocmask(SIG_BLOCK, &(data->mask), &(data->old_mask)) < 0) { - crm_info("Wait for child process completion failed: %s " - QB_XS " source=sigprocmask", pcmk_rc_str(errno)); + pcmk__info("Wait for child process completion failed: %s " + QB_XS " source=sigprocmask", + pcmk_rc_str(errno)); return false; } @@ -81,8 +82,9 @@ sigchld_open(struct sigchld_data_s *data) fd = signalfd(-1, &(data->mask), SFD_NONBLOCK); if (fd < 0) { - crm_info("Wait for child process completion failed: %s " - QB_XS " source=signalfd", pcmk_rc_str(errno)); + pcmk__info("Wait for child process completion failed: %s " + QB_XS " source=signalfd", + pcmk_rc_str(errno)); } return fd; } @@ -108,8 +110,9 @@ sigchld_received(int fd, int pid, struct sigchld_data_s *data) } s = read(fd, &fdsi, sizeof(struct signalfd_siginfo)); if (s != sizeof(struct signalfd_siginfo)) { - crm_info("Wait for child process completion failed: %s " - QB_XS " source=read", pcmk_rc_str(errno)); + pcmk__info("Wait for child process completion failed: %s " + QB_XS " source=read", + pcmk_rc_str(errno)); } else if (fdsi.ssi_signo == SIGCHLD) { if (fdsi.ssi_pid == pid) { @@ -167,8 +170,9 @@ sigchld_handler(void) if ((last_sigchld_data != NULL) && (last_sigchld_data->pipe_fd[1] >= 0) && (write(last_sigchld_data->pipe_fd[1], "", 1) == -1)) { - crm_info("Wait for child process completion failed: %s " - QB_XS " source=write", pcmk_rc_str(errno)); + pcmk__info("Wait for child process completion failed: %s " + QB_XS " source=write", + pcmk_rc_str(errno)); } } @@ -180,20 +184,21 @@ sigchld_setup(struct sigchld_data_s *data) data->pipe_fd[0] = data->pipe_fd[1] = -1; if (pipe(data->pipe_fd) == -1) { - crm_info("Wait for child process completion failed: %s " - QB_XS " source=pipe", pcmk_rc_str(errno)); + pcmk__info("Wait for child process completion failed: %s " + QB_XS " source=pipe", + pcmk_rc_str(errno)); return false; } rc = pcmk__set_nonblocking(data->pipe_fd[0]); if (rc != pcmk_rc_ok) { - crm_info("Could not set pipe input non-blocking: %s " QB_XS " rc=%d", - pcmk_rc_str(rc), rc); + pcmk__info("Could not set pipe input non-blocking: %s " QB_XS " rc=%d", + pcmk_rc_str(rc), rc); } rc = pcmk__set_nonblocking(data->pipe_fd[1]); if (rc != pcmk_rc_ok) { - crm_info("Could not set pipe output non-blocking: %s " QB_XS " rc=%d", - pcmk_rc_str(rc), rc); + pcmk__info("Could not set pipe output non-blocking: %s " QB_XS " rc=%d", + pcmk_rc_str(rc), rc); } // Set SIGCHLD handler @@ -201,8 +206,9 @@ sigchld_setup(struct sigchld_data_s *data) data->sa.sa_flags = 0; sigemptyset(&(data->sa.sa_mask)); if (sigaction(SIGCHLD, &(data->sa), &(data->old_sa)) < 0) { - crm_info("Wait for child process completion failed: %s " - QB_XS " source=sigaction", pcmk_rc_str(errno)); + pcmk__info("Wait for child process completion failed: %s " + QB_XS " source=sigaction", + pcmk_rc_str(errno)); } data->ignored = false; @@ -721,8 +727,8 @@ async_action_complete(mainloop_child_t *p, pid_t pid, int core, int signo, } else if (mainloop_child_timeout(p)) { const char *kind = services__action_kind(op); - crm_info("%s %s[%d] timed out after %s", - kind, op->id, op->pid, pcmk__readable_interval(op->timeout)); + pcmk__info("%s %s[%d] timed out after %s", kind, op->id, op->pid, + pcmk__readable_interval(op->timeout)); services__format_result(op, services__generic_error(op), PCMK_EXEC_TIMEOUT, "%s did not complete within %s", @@ -732,13 +738,13 @@ async_action_complete(mainloop_child_t *p, pid_t pid, int core, int signo, /* If an in-flight recurring operation was killed because it was * cancelled, don't treat that as a failure. */ - crm_info("%s[%d] terminated with signal %d (%s)", - op->id, op->pid, signo, strsignal(signo)); + pcmk__info("%s[%d] terminated with signal %d (%s)", op->id, op->pid, + signo, strsignal(signo)); services__set_result(op, PCMK_OCF_OK, PCMK_EXEC_CANCELLED, NULL); } else { - crm_info("%s[%d] terminated with signal %d (%s)", - op->id, op->pid, signo, strsignal(signo)); + pcmk__info("%s[%d] terminated with signal %d (%s)", op->id, op->pid, + signo, strsignal(signo)); services__format_result(op, PCMK_OCF_UNKNOWN_ERROR, PCMK_EXEC_ERROR, "%s interrupted by %s signal", services__action_kind(op), strsignal(signo)); @@ -955,12 +961,12 @@ action_launch_child(svc_action_t *op) sp.sched_priority = 0; if (sched_setscheduler(0, SCHED_OTHER, &sp) == -1) { - crm_info("Could not reset scheduling policy for %s", op->id); + pcmk__info("Could not reset scheduling policy for %s", op->id); } } if (setpriority(PRIO_PROCESS, 0, 0) == -1) { - crm_info("Could not reset process priority for %s", op->id); + pcmk__info("Could not reset process priority for %s", op->id); } /* Man: The call setpgrp() is equivalent to setpgid(0,0) @@ -986,9 +992,9 @@ action_launch_child(svc_action_t *op) rc = pcmk__substitute_secrets(op->rsc, op->params); if (rc != pcmk_rc_ok) { if (pcmk__str_eq(op->action, PCMK_ACTION_STOP, pcmk__str_casei)) { - crm_info("Proceeding with stop operation for %s " - "despite being unable to load CIB secrets (%s)", - op->rsc, pcmk_rc_str(rc)); + pcmk__info("Proceeding with stop operation for %s despite being " + "unable to load CIB secrets (%s)", + op->rsc, pcmk_rc_str(rc)); } else { pcmk__err("Considering %s unconfigured because unable to load CIB " "secrets: %s", @@ -1097,9 +1103,9 @@ wait_for_sync_result(svc_action_t *op, struct sigchld_data_s *data) } else if (wait_rc < 0) { wait_reason = pcmk_rc_str(errno); - crm_info("Wait for completion of %s[%d] failed: %s " - QB_XS " source=waitpid", - op->id, op->pid, wait_reason); + pcmk__info("Wait for completion of %s[%d] failed: %s " + QB_XS " source=waitpid", + op->id, op->pid, wait_reason); wait_rc = 0; // Act as if process is still running #ifndef HAVE_SYS_SIGNALFD_H @@ -1122,8 +1128,9 @@ wait_for_sync_result(svc_action_t *op, struct sigchld_data_s *data) } else if ((poll_rc < 0) && (errno != EINTR)) { wait_reason = pcmk_rc_str(errno); - crm_info("Wait for completion of %s[%d] failed: %s " - QB_XS " source=poll", op->id, op->pid, wait_reason); + pcmk__info("Wait for completion of %s[%d] failed: %s " + QB_XS " source=poll", + op->id, op->pid, wait_reason); break; } @@ -1144,8 +1151,8 @@ wait_for_sync_result(svc_action_t *op, struct sigchld_data_s *data) PCMK_EXEC_TIMEOUT, "%s did not exit within specified timeout", services__action_kind(op)); - crm_info("%s[%d] timed out after %dms", - op->id, op->pid, op->timeout); + pcmk__info("%s[%d] timed out after %dms", op->id, op->pid, + op->timeout); } else { services__set_result(op, services__generic_error(op), @@ -1169,7 +1176,7 @@ wait_for_sync_result(svc_action_t *op, struct sigchld_data_s *data) } else if (WIFEXITED(status)) { services__set_result(op, WEXITSTATUS(status), PCMK_EXEC_DONE, NULL); parse_exit_reason_from_stderr(op); - crm_info("%s[%d] exited with status %d", op->id, op->pid, op->rc); + pcmk__info("%s[%d] exited with status %d", op->id, op->pid, op->rc); } else if (WIFSIGNALED(status)) { int signo = WTERMSIG(status); @@ -1177,8 +1184,8 @@ wait_for_sync_result(svc_action_t *op, struct sigchld_data_s *data) services__format_result(op, services__generic_error(op), PCMK_EXEC_ERROR, "%s interrupted by %s signal", services__action_kind(op), strsignal(signo)); - crm_info("%s[%d] terminated with signal %d (%s)", - op->id, op->pid, signo, strsignal(signo)); + pcmk__info("%s[%d] terminated with signal %d (%s)", op->id, op->pid, + signo, strsignal(signo)); #ifdef WCOREDUMP if (WCOREDUMP(status)) { @@ -1222,16 +1229,16 @@ services__execute_file(svc_action_t *op) // Catch common failure conditions early if (stat(op->opaque->exec, &st) != 0) { rc = errno; - crm_info("Cannot execute '%s': %s " QB_XS " stat rc=%d", - op->opaque->exec, pcmk_rc_str(rc), rc); + pcmk__info("Cannot execute '%s': %s " QB_XS " stat rc=%d", + op->opaque->exec, pcmk_rc_str(rc), rc); services__handle_exec_error(op, rc); goto done; } if (pipe(stdout_fd) < 0) { rc = errno; - crm_info("Cannot execute '%s': %s " QB_XS " pipe(stdout) rc=%d", - op->opaque->exec, pcmk_rc_str(rc), rc); + pcmk__info("Cannot execute '%s': %s " QB_XS " pipe(stdout) rc=%d", + op->opaque->exec, pcmk_rc_str(rc), rc); services__handle_exec_error(op, rc); goto done; } @@ -1241,8 +1248,8 @@ services__execute_file(svc_action_t *op) close_pipe(stdout_fd); - crm_info("Cannot execute '%s': %s " QB_XS " pipe(stderr) rc=%d", - op->opaque->exec, pcmk_rc_str(rc), rc); + pcmk__info("Cannot execute '%s': %s " QB_XS " pipe(stderr) rc=%d", + op->opaque->exec, pcmk_rc_str(rc), rc); services__handle_exec_error(op, rc); goto done; } @@ -1254,8 +1261,8 @@ services__execute_file(svc_action_t *op) close_pipe(stdout_fd); close_pipe(stderr_fd); - crm_info("Cannot execute '%s': %s " QB_XS " pipe(stdin) rc=%d", - op->opaque->exec, pcmk_rc_str(rc), rc); + pcmk__info("Cannot execute '%s': %s " QB_XS " pipe(stdin) rc=%d", + op->opaque->exec, pcmk_rc_str(rc), rc); services__handle_exec_error(op, rc); goto done; } @@ -1279,8 +1286,8 @@ services__execute_file(svc_action_t *op) close_pipe(stdout_fd); close_pipe(stderr_fd); - crm_info("Cannot execute '%s': %s " QB_XS " fork rc=%d", - op->opaque->exec, pcmk_rc_str(rc), rc); + pcmk__info("Cannot execute '%s': %s " QB_XS " fork rc=%d", + op->opaque->exec, pcmk_rc_str(rc), rc); services__handle_exec_error(op, rc); if (op->synchronous) { sigchld_cleanup(&data); @@ -1338,17 +1345,17 @@ services__execute_file(svc_action_t *op) op->opaque->stdout_fd = stdout_fd[0]; rc = pcmk__set_nonblocking(op->opaque->stdout_fd); if (rc != pcmk_rc_ok) { - crm_info("Could not set '%s' output non-blocking: %s " - QB_XS " rc=%d", - op->opaque->exec, pcmk_rc_str(rc), rc); + pcmk__info("Could not set '%s' output non-blocking: %s " + QB_XS " rc=%d", + op->opaque->exec, pcmk_rc_str(rc), rc); } op->opaque->stderr_fd = stderr_fd[0]; rc = pcmk__set_nonblocking(op->opaque->stderr_fd); if (rc != pcmk_rc_ok) { - crm_info("Could not set '%s' error output non-blocking: %s " - QB_XS " rc=%d", - op->opaque->exec, pcmk_rc_str(rc), rc); + pcmk__info("Could not set '%s' error output non-blocking: %s " + QB_XS " rc=%d", + op->opaque->exec, pcmk_rc_str(rc), rc); } op->opaque->stdin_fd = stdin_fd[1]; @@ -1357,9 +1364,9 @@ services__execute_file(svc_action_t *op) // as long as no other standard uses stdin_fd assume stonith rc = pcmk__set_nonblocking(op->opaque->stdin_fd); if (rc != pcmk_rc_ok) { - crm_info("Could not set '%s' input non-blocking: %s " - QB_XS " fd=%d,rc=%d", op->opaque->exec, - pcmk_rc_str(rc), op->opaque->stdin_fd, rc); + pcmk__info("Could not set '%s' input non-blocking: %s " + QB_XS " fd=%d,rc=%d", op->opaque->exec, + pcmk_rc_str(rc), op->opaque->stdin_fd, rc); } pipe_in_action_stdin_parameters(op); // as long as we are handling parameters directly in here just close diff --git a/lib/services/systemd.c b/lib/services/systemd.c index fb3cd422eb5..f8432f12af2 100644 --- a/lib/services/systemd.c +++ b/lib/services/systemd.c @@ -373,10 +373,10 @@ set_result_from_method_error(svc_action_t *op, const DBusError *error) "systemd unit %s not found", op->agent); } - crm_info("DBus request for %s of systemd unit %s%s%s failed: %s", - op->action, op->agent, - ((op->rsc == NULL)? "" : " for resource "), pcmk__s(op->rsc, ""), - error->message); + pcmk__info("DBus request for %s of systemd unit %s%s%s failed: %s", + op->action, op->agent, + ((op->rsc != NULL)? " for resource " : ""), pcmk__s(op->rsc, ""), + error->message); } /*! @@ -409,11 +409,12 @@ execute_after_loadunit(DBusMessage *reply, svc_action_t *op) if (op != NULL) { services__set_result(op, PCMK_OCF_UNKNOWN_ERROR, PCMK_EXEC_ERROR, "systemd DBus method had unexpected reply"); - crm_info("Could not load systemd unit %s for %s: " - "DBus reply has unexpected type", op->agent, op->id); + pcmk__info("Could not load systemd unit %s for %s: DBus reply has " + "unexpected type", + op->agent, op->id); } else { - crm_info("Could not load systemd unit: " - "DBus reply has unexpected type"); + pcmk__info("Could not load systemd unit: DBus reply has unexpected " + "type"); } } else { @@ -807,9 +808,9 @@ process_unit_method_reply(DBusMessage *reply, svc_action_t *op) __func__, __LINE__)) { const char *reason = "systemd D-Bus method had unexpected reply"; - crm_info("DBus request for %s of %s succeeded but " - "return type was unexpected", - op->action, pcmk__s(op->rsc, "unknown resource")); + pcmk__info("DBus request for %s of %s succeeded but return type was " + "unexpected", + op->action, pcmk__s(op->rsc, "unknown resource")); if (!op->synchronous && start_stop) { /* The start or stop job is enqueued but is not complete. We need a @@ -1336,8 +1337,8 @@ systemd_timeout_callback(gpointer p) svc_action_t * op = p; op->opaque->timerid = 0; - crm_info("%s action for systemd unit %s named '%s' timed out", - op->action, op->agent, op->rsc); + pcmk__info("%s action for systemd unit %s named '%s' timed out", op->action, + op->agent, op->rsc); services__format_result(op, PCMK_OCF_UNKNOWN_ERROR, PCMK_EXEC_TIMEOUT, "%s action for systemd unit %s " "did not complete in time", op->action, op->agent); diff --git a/tools/cibadmin.c b/tools/cibadmin.c index 42fe9a245ba..b8ef163edc0 100644 --- a/tools/cibadmin.c +++ b/tools/cibadmin.c @@ -107,7 +107,7 @@ report_schema_unchanged(void) { const char *err = pcmk_rc_str(pcmk_rc_schema_unchanged); - crm_info("Upgrade unnecessary: %s\n", err); + pcmk__info("Upgrade unnecessary: %s\n", err); printf("Upgrade unnecessary: %s\n", err); exit_code = CRM_EX_OK; } diff --git a/tools/crm_attribute.c b/tools/crm_attribute.c index ba61c6176ee..86d799a90cb 100644 --- a/tools/crm_attribute.c +++ b/tools/crm_attribute.c @@ -574,9 +574,9 @@ output_one_attribute(xmlNode *node, void *userdata) od->out->message(od->out, "attribute", type, attr_id, name, value, NULL, od->out->quiet, true); od->did_output = true; - crm_info("Read %s='%s' %s%s", - pcmk__s(name, ""), pcmk__s(value, ""), - options.set_name ? "in " : "", options.set_name ? options.set_name : ""); + pcmk__info("Read %s='%s' %s%s", pcmk__s(name, ""), pcmk__s(value, ""), + ((options.set_name != NULL)? "in " : ""), + pcmk__s(options.set_name, "")); return pcmk_rc_ok; } @@ -940,8 +940,8 @@ main(int argc, char **argv) if (options.command == attr_cmd_delete) { update = ""; } - crm_info("Update %s=%s sent to the attribute manager", - options.attr_name, update); + pcmk__info("Update %s=%s sent to the attribute manager", + options.attr_name, update); } else if (options.command == attr_cmd_delete) { rc = command_delete(out, the_cib); diff --git a/tools/crm_mon.c b/tools/crm_mon.c index bf1e766a039..dda75c549f0 100644 --- a/tools/crm_mon.c +++ b/tools/crm_mon.c @@ -1602,7 +1602,7 @@ main(int argc, char **argv) free(content); } - crm_info("Starting %s", crm_system_name); + pcmk__info("Starting %s", crm_system_name); cib__set_output(cib, out); @@ -1675,7 +1675,7 @@ main(int argc, char **argv) g_main_loop_run(mainloop); g_main_loop_unref(mainloop); - crm_info("Exiting %s", crm_system_name); + pcmk__info("Exiting %s", crm_system_name); return clean_up(CRM_EX_OK); } diff --git a/tools/crm_resource.c b/tools/crm_resource.c index 5df18f6e9d0..e151bae481d 100644 --- a/tools/crm_resource.c +++ b/tools/crm_resource.c @@ -227,7 +227,7 @@ controller_event_callback(pcmk_ipc_api_t *api, enum pcmk_ipc_event event_type, switch (event_type) { case pcmk_ipc_event_disconnect: if (exit_code == CRM_EX_DISCONNECT) { // Unexpected - crm_info("Connection to controller was terminated"); + pcmk__info("Connection to controller was terminated"); } *ec = exit_code; diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c index 6c408ae5b15..6a2f0c24759 100644 --- a/tools/crm_resource_runtime.c +++ b/tools/crm_resource_runtime.c @@ -2136,8 +2136,8 @@ wait_till_stable(pcmk__output_t *out, guint timeout_ms, cib_t * cib) break; } - crm_info("Waiting up to %lld seconds for cluster actions to complete", - (long long) time_diff); + pcmk__info("Waiting up to %lld seconds for cluster actions to complete", + (long long) time_diff); if (rc == pcmk_rc_ok) { /* this avoids sleep on first loop iteration */ sleep(WAIT_SLEEP_S); @@ -2527,9 +2527,9 @@ cli_resource_move(pcmk_resource_t *rsc, const char *rsc_id, } cur_is_dest = true; - crm_info("%s is already %s on %s, reinforcing placement with location " - "constraint", - rsc_id, active_s, pcmk__node_name(dest)); + pcmk__info("%s is already %s on %s, reinforcing placement with " + "location constraint", + rsc_id, active_s, pcmk__node_name(dest)); } /* @TODO The constraint changes in the following commands should done diff --git a/tools/stonith_admin.c b/tools/stonith_admin.c index 8648cead3a9..d84f2cef913 100644 --- a/tools/stonith_admin.c +++ b/tools/stonith_admin.c @@ -250,7 +250,7 @@ add_env_params(const gchar *option_name, const gchar *optarg, gpointer data, GEr g_set_error(error, PCMK__EXITC_ERROR, CRM_EX_INVALID_PARAM, "Invalid option: -e %s", optarg); retval = FALSE; } else { - crm_info("Got: '%s'='%s'", optarg, env); + pcmk__info("Got: '%s'='%s'", optarg, env); if (options.params != NULL) { options.params = pcmk__strkey_table(free, free); @@ -292,7 +292,7 @@ add_stonith_params(const gchar *option_name, const gchar *optarg, gpointer data, int rc = 0; gboolean retval = TRUE; - crm_info("Scanning: -o %s", optarg); + pcmk__info("Scanning: -o %s", optarg); rc = pcmk__scan_nvpair(optarg, &name, &value); @@ -300,7 +300,7 @@ add_stonith_params(const gchar *option_name, const gchar *optarg, gpointer data, g_set_error(error, PCMK__RC_ERROR, rc, "Invalid option: -o %s: %s", optarg, pcmk_rc_str(rc)); retval = FALSE; } else { - crm_info("Got: '%s'='%s'", name, value); + pcmk__info("Got: '%s'='%s'", name, value); if (options.params == NULL) { options.params = pcmk__strkey_table(free, free); @@ -698,7 +698,7 @@ main(int argc, char **argv) break; } - crm_info("Command returned: %s (%d)", pcmk_rc_str(rc), rc); + pcmk__info("Command returned: %s (%d)", pcmk_rc_str(rc), rc); exit_code = pcmk_rc2exitc(rc); done: From 9861f75647927d9a15788ce95d0df06ac5b747bd Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 27 Mar 2025 01:23:11 -0700 Subject: [PATCH 163/186] API: libcrmcommon: Deprecate crm_info() Pacemaker should not be used for general-purpose logging. Ref T622 Signed-off-by: Reid Wahl --- include/crm/common/logging.h | 2 -- include/crm/common/logging_compat.h | 3 +++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/include/crm/common/logging.h b/include/crm/common/logging.h index ff26038daf8..00ea733b95e 100644 --- a/include/crm/common/logging.h +++ b/include/crm/common/logging.h @@ -346,8 +346,6 @@ pcmk__clip_log_level(int level) } \ } while (0) -#define crm_info(fmt, args...) qb_log(LOG_INFO, fmt, ##args) - // // NOTE: sbd (as of at least 1.5.2) uses this #define crm_debug(fmt, args...) do_crm_log_unlikely(LOG_DEBUG, fmt ,##args) diff --git a/include/crm/common/logging_compat.h b/include/crm/common/logging_compat.h index 8287d35acf6..518b49a68d3 100644 --- a/include/crm/common/logging_compat.h +++ b/include/crm/common/logging_compat.h @@ -40,6 +40,9 @@ extern "C" { //! \deprecated Do not use #define crm_notice(fmt, args...) qb_log(LOG_NOTICE, fmt, ##args) +//! \deprecated Do not use +#define crm_info(fmt, args...) qb_log(LOG_INFO, fmt, ##args) + #ifdef __cplusplus } #endif From 2f2d0d6d640835458a5bc4d3ca0450794069f4cf Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 27 Mar 2025 18:35:23 -0700 Subject: [PATCH 164/186] Refactor: various: Include internal headers in crm_internal.h My understanding was that this was always Ken's intent, so I'm not sure why it hasn't been consistently done. Everything still builds and test-headers.sh still passes. The only ones I excluded were the xml_X_internal.h and xpath_internal.h files. xml_internal.h is meant to be a wrapper for all of those. Signed-off-by: Reid Wahl --- include/crm/common/actions_internal.h | 4 +-- include/crm_internal.h | 36 ++++++++++++++++++++++++--- 2 files changed, 34 insertions(+), 6 deletions(-) diff --git a/include/crm/common/actions_internal.h b/include/crm/common/actions_internal.h index ccecdff863b..286829b44b8 100644 --- a/include/crm/common/actions_internal.h +++ b/include/crm/common/actions_internal.h @@ -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. * @@ -20,8 +20,6 @@ #include // pcmk_resource_t, pcmk_node_t #include // pcmk__str_eq() -#include // pcmk__str_any_of() - #ifdef __cplusplus extern "C" { #endif diff --git a/include/crm_internal.h b/include/crm_internal.h index 337d309b991..8577d1ca815 100644 --- a/include/crm_internal.h +++ b/include/crm_internal.h @@ -38,18 +38,48 @@ #include #include +#include +#include +#include +#include +#include +#include +#include +#include #include #include -#include -#include +#include +#include +#include +#include +#include +#include +#include #include +#include +#include +#include +#include +#include +#include +#include #include #include +#include +#include +#include +#include +#include +#include #include #include +#include #include +#include +#include +#include +#include #include -#include #include #include From f07aa3bc7a190bb429234f97ab540ab0be97c7a7 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 27 Mar 2025 18:42:41 -0700 Subject: [PATCH 165/186] Refactor: libcrmcommon: Drop unused includes from internal.h And add new includes to files that broke as a result. Signed-off-by: Reid Wahl --- include/crm/common/internal.h | 11 +---------- include/crm/common/scheduler_internal.h | 1 + include/crm/pengine/internal.h | 1 + lib/pacemaker/libpacemaker_private.h | 3 ++- 4 files changed, 5 insertions(+), 11 deletions(-) diff --git a/include/crm/common/internal.h b/include/crm/common/internal.h index 0e56cb61ad5..6832922e924 100644 --- a/include/crm/common/internal.h +++ b/include/crm/common/internal.h @@ -22,17 +22,8 @@ #include // do_crm_log_unlikely(), etc. #include // mainloop_io_t, struct ipc_client_callbacks -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include // pcmk__assert() #include // pcmk__assert_asprintf() -#include #ifdef __cplusplus extern "C" { diff --git a/include/crm/common/scheduler_internal.h b/include/crm/common/scheduler_internal.h index 433505ccb07..15c6a6aba8e 100644 --- a/include/crm/common/scheduler_internal.h +++ b/include/crm/common/scheduler_internal.h @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include diff --git a/include/crm/pengine/internal.h b/include/crm/pengine/internal.h index 1417912c058..adb5dd93ece 100644 --- a/include/crm/pengine/internal.h +++ b/include/crm/pengine/internal.h @@ -17,6 +17,7 @@ #include #include #include +#include // pcmk__parse_health_strategy() #include #include #include diff --git a/lib/pacemaker/libpacemaker_private.h b/lib/pacemaker/libpacemaker_private.h index 58435a62173..285c9096df9 100644 --- a/lib/pacemaker/libpacemaker_private.h +++ b/lib/pacemaker/libpacemaker_private.h @@ -1,5 +1,5 @@ /* - * Copyright 2021-2024 the Pacemaker project contributors + * Copyright 2021-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -22,6 +22,7 @@ #include // pcmk_action_t, pcmk_node_t, etc. #include // pcmk__location_t, etc. +#include // pcmk__idref_t (indirectly) #include // cib_t #include // lrmd_event_data_t #include // pe__const_top_resource(), etc. From c50114241c95d3356bfc1c7064acd41f92920154 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 27 Mar 2025 04:37:02 -0700 Subject: [PATCH 166/186] Refactor: libcrmcommon: New pcmk__debug() To replace crm_debug() Signed-off-by: Reid Wahl --- daemons/attrd/attrd_alerts.c | 6 +- daemons/attrd/attrd_cib.c | 26 ++--- daemons/attrd/attrd_corosync.c | 31 +++-- daemons/attrd/attrd_elections.c | 11 +- daemons/attrd/attrd_ipc.c | 15 +-- daemons/attrd/attrd_messages.c | 8 +- daemons/attrd/pacemaker-attrd.c | 4 +- daemons/based/based_callbacks.c | 33 +++--- daemons/based/based_io.c | 4 +- daemons/based/based_messages.c | 4 +- daemons/based/based_notify.c | 4 +- daemons/based/based_remote.c | 5 +- daemons/controld/controld_callbacks.c | 9 +- daemons/controld/controld_cib.c | 26 +++-- daemons/controld/controld_control.c | 12 +- daemons/controld/controld_election.c | 5 +- daemons/controld/controld_execd.c | 57 ++++----- daemons/controld/controld_execd_state.c | 4 +- daemons/controld/controld_fencing.c | 10 +- daemons/controld/controld_fsa.c | 29 ++--- daemons/controld/controld_join_client.c | 16 +-- daemons/controld/controld_join_dc.c | 141 ++++++++++++----------- daemons/controld/controld_membership.c | 4 +- daemons/controld/controld_messages.c | 34 +++--- daemons/controld/controld_metadata.c | 19 ++- daemons/controld/controld_remote_ra.c | 39 ++++--- daemons/controld/controld_schedulerd.c | 26 +++-- daemons/controld/controld_te_actions.c | 17 +-- daemons/controld/controld_te_callbacks.c | 12 +- daemons/controld/controld_te_events.c | 16 +-- daemons/controld/controld_te_utils.c | 17 +-- daemons/controld/controld_throttle.c | 11 +- daemons/controld/controld_timers.c | 33 +++--- daemons/controld/controld_transition.c | 10 +- daemons/execd/execd_alerts.c | 4 +- daemons/execd/execd_commands.c | 26 +++-- daemons/execd/pacemaker-execd.c | 7 +- daemons/execd/remoted_proxy.c | 6 +- daemons/execd/remoted_tls.c | 8 +- daemons/fenced/cts-fence-helper.c | 36 +++--- daemons/fenced/fenced_commands.c | 131 +++++++++++---------- daemons/fenced/fenced_history.c | 21 ++-- daemons/fenced/fenced_remote.c | 51 ++++---- daemons/fenced/fenced_scheduler.c | 2 +- daemons/fenced/pacemaker-fenced.c | 4 +- daemons/pacemakerd/pacemakerd.c | 6 +- daemons/pacemakerd/pcmkd_corosync.c | 6 +- daemons/pacemakerd/pcmkd_messages.c | 2 +- daemons/pacemakerd/pcmkd_subdaemons.c | 6 +- daemons/schedulerd/schedulerd_messages.c | 4 +- include/crm/common/logging_internal.h | 9 ++ lib/cib/cib_attrs.c | 4 +- lib/cib/cib_client.c | 14 +-- lib/cib/cib_file.c | 12 +- lib/cib/cib_native.c | 2 +- lib/cib/cib_ops.c | 6 +- lib/cib/cib_remote.c | 6 +- lib/cib/cib_utils.c | 15 +-- lib/cluster/cluster.c | 2 +- lib/cluster/corosync.c | 21 ++-- lib/cluster/cpg.c | 14 ++- lib/cluster/election.c | 35 +++--- lib/cluster/membership.c | 14 +-- lib/common/acl.c | 4 +- lib/common/alerts.c | 34 +++--- lib/common/cib_secrets.c | 2 +- lib/common/io.c | 8 +- lib/common/ipc_attrd.c | 30 ++--- lib/common/ipc_client.c | 33 +++--- lib/common/ipc_common.c | 16 +-- lib/common/ipc_controld.c | 28 ++--- lib/common/ipc_pacemakerd.c | 4 +- lib/common/ipc_schedulerd.c | 4 +- lib/common/ipc_server.c | 12 +- lib/common/logging.c | 19 +-- lib/common/mainloop.c | 14 ++- lib/common/output.c | 4 +- lib/common/patchset.c | 24 ++-- lib/common/procfs.c | 8 +- lib/common/remote.c | 31 ++--- lib/common/scheduler.c | 6 +- lib/common/schemas.c | 14 +-- lib/common/strings.c | 45 ++++---- lib/common/watchdog.c | 12 +- lib/fencing/st_actions.c | 12 +- lib/fencing/st_client.c | 42 ++++--- lib/lrmd/lrmd_client.c | 18 +-- lib/pacemaker/pcmk_cluster_queries.c | 6 +- lib/pacemaker/pcmk_graph_consumer.c | 14 +-- lib/pacemaker/pcmk_graph_logging.c | 2 +- lib/pacemaker/pcmk_graph_producer.c | 16 ++- lib/pacemaker/pcmk_injections.c | 4 +- lib/pacemaker/pcmk_sched_actions.c | 7 +- lib/pacemaker/pcmk_sched_constraints.c | 2 +- lib/pacemaker/pcmk_sched_fencing.c | 4 +- lib/pacemaker/pcmk_sched_location.c | 6 +- lib/pacemaker/pcmk_sched_ordering.c | 6 +- lib/pacemaker/pcmk_sched_probes.c | 12 +- lib/pacemaker/pcmk_sched_recurring.c | 4 +- lib/pacemaker/pcmk_sched_tickets.c | 36 +++--- lib/pacemaker/pcmk_sched_utilization.c | 8 +- lib/pacemaker/pcmk_simulate.c | 2 +- lib/pengine/native.c | 6 +- lib/pengine/pe_health.c | 10 +- lib/pengine/unpack.c | 43 +++---- lib/services/dbus.c | 10 +- lib/services/services.c | 6 +- lib/services/services_linux.c | 4 +- lib/services/systemd.c | 17 +-- tools/crm_mon.c | 9 +- tools/crm_node.c | 8 +- tools/crm_resource.c | 18 +-- tools/crm_resource_runtime.c | 15 +-- 113 files changed, 979 insertions(+), 892 deletions(-) diff --git a/daemons/attrd/attrd_alerts.c b/daemons/attrd/attrd_alerts.c index 087464b8018..f03c41b3758 100644 --- a/daemons/attrd/attrd_alerts.c +++ b/daemons/attrd/attrd_alerts.c @@ -52,8 +52,8 @@ attrd_lrmd_connect(void) break; } - crm_debug("Could not connect to executor, %d tries remaining", - (max_attempts - fails)); + pcmk__debug("Could not connect to executor, %d tries remaining", + (max_attempts - fails)); /* @TODO We don't want to block here with sleep, but we should wait * some time between connection attempts. We could possibly add a * timer with a callback, but then we'd likely need an alert queue. @@ -84,7 +84,7 @@ config_query_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, void xmlNode *crmalerts = NULL; if (rc == -ENXIO) { - crm_debug("Local CIB has no alerts section"); + pcmk__debug("Local CIB has no alerts section"); return; } else if (rc != pcmk_ok) { pcmk__notice("Could not query local CIB: %s", pcmk_strerror(rc)); diff --git a/daemons/attrd/attrd_cib.c b/daemons/attrd/attrd_cib.c index b4c484272da..852eb62af14 100644 --- a/daemons/attrd/attrd_cib.c +++ b/daemons/attrd/attrd_cib.c @@ -58,7 +58,7 @@ attrd_cib_updated_cb(const char *event, xmlNode *msg) if (pcmk__cib_element_in_patchset(patchset, PCMK_XE_ALERTS)) { if (attrd_shutting_down(true)) { - crm_debug("Ignoring alerts change in CIB during shutdown"); + pcmk__debug("Ignoring alerts change in CIB during shutdown"); } else { mainloop_set_trigger(attrd_config_read); } @@ -83,7 +83,7 @@ attrd_cib_updated_cb(const char *event, xmlNode *msg) || pcmk__cib_element_in_patchset(patchset, PCMK_XE_NODES)) { if (attrd_shutting_down(true)) { - crm_debug("Ignoring node change in CIB during shutdown"); + pcmk__debug("Ignoring node change in CIB during shutdown"); return; } @@ -118,7 +118,7 @@ attrd_cib_connect(int max_retry) sleep(attempts); } attempts++; - crm_debug("Connection attempt %d to the CIB manager", attempts); + pcmk__debug("Connection attempt %d to the CIB manager", attempts); rc = the_cib->cmds->signon(the_cib, crm_system_name, cib_command); } while ((rc != pcmk_ok) && (attempts < max_retry)); @@ -129,7 +129,7 @@ attrd_cib_connect(int max_retry) goto cleanup; } - crm_debug("Connected to the CIB manager after %d attempts", attempts); + pcmk__debug("Connected to the CIB manager after %d attempts", attempts); rc = the_cib->cmds->set_connection_dnotify(the_cib, attrd_cib_destroy_cb); if (rc != pcmk_ok) { @@ -197,8 +197,8 @@ attrd_cib_erase_transient_attrs(const char *node) xpath = pcmk__assert_asprintf(XPATH_TRANSIENT, node); - crm_debug("Clearing transient node attributes for %s from CIB using %s", - node, xpath); + pcmk__debug("Clearing transient node attributes for %s from CIB using %s", + node, xpath); call_id = the_cib->cmds->remove(the_cib, xpath, NULL, cib_xpath); free(xpath); @@ -307,7 +307,7 @@ attrd_cib_callback(xmlNode *msg, int call_id, int rc, xmlNode *output, void *use /* We deferred a write of a new update because this update was in * progress. Write out the new value without additional delay. */ - crm_debug("Pending update for %s can be written now", a->id); + pcmk__debug("Pending update for %s can be written now", a->id); write_attribute(a, false); /* We're re-attempting a write because the original failed; delay @@ -523,7 +523,7 @@ write_attribute(attribute_t *a, bool ignore_delay) } else if (mainloop_timer_running(a->timer)) { if (ignore_delay) { mainloop_timer_stop(a->timer); - crm_debug("Overriding '%s' write delay", a->id); + pcmk__debug("Overriding '%s' write delay", a->id); } else { pcmk__info("Delaying write of '%s'", a->id); goto done; @@ -615,9 +615,9 @@ write_attribute(attribute_t *a, bool ignore_delay) continue; } - crm_debug("Added %s[%s]=%s to CIB transaction (node XML ID %s)", - a->id, v->nodename, pcmk__s(v->current, "(unset)"), - node_xml_id); + pcmk__debug("Added %s[%s]=%s to CIB transaction (node XML ID %s)", + a->id, v->nodename, pcmk__s(v->current, "(unset)"), + node_xml_id); cib_updates++; /* Preservation of the attribute to transmit alert */ @@ -675,8 +675,8 @@ attrd_write_attributes(uint32_t options) GHashTableIter iter; attribute_t *a = NULL; - crm_debug("Writing out %s attributes", - pcmk__is_set(options, attrd_write_all)? "all" : "changed"); + pcmk__debug("Writing out %s attributes", + pcmk__is_set(options, attrd_write_all)? "all" : "changed"); g_hash_table_iter_init(&iter, attributes); while (g_hash_table_iter_next(&iter, NULL, (gpointer *) & a)) { if (!pcmk__is_set(options, attrd_write_all) diff --git a/daemons/attrd/attrd_corosync.c b/daemons/attrd/attrd_corosync.c index baf041f42fb..daf0262b480 100644 --- a/daemons/attrd/attrd_corosync.c +++ b/daemons/attrd/attrd_corosync.c @@ -89,7 +89,7 @@ attrd_peer_message(pcmk__node_status_t *peer, xmlNode *xml) * peer where it will have to do something with a PCMK__XA_CONFIRM type * message. */ - crm_debug("Sending %s a confirmation", peer->name); + pcmk__debug("Sending %s a confirmation", peer->name); attrd_send_message(peer, reply, false); pcmk__xml_free(reply); } @@ -168,23 +168,23 @@ attrd_peer_change_cb(enum pcmk__node_update kind, pcmk__node_status_t *peer, switch (kind) { case pcmk__node_update_name: - crm_debug("%s node %s is now %s", - (is_remote? "Remote" : "Cluster"), - peer->name, state_text(peer->state)); + pcmk__debug("%s node %s is now %s", + (is_remote? "Remote" : "Cluster"), + peer->name, state_text(peer->state)); break; case pcmk__node_update_processes: if (!pcmk__is_set(peer->processes, crm_get_cluster_proc())) { gone = true; } - crm_debug("Node %s is %s a peer", - peer->name, (gone? "no longer" : "now")); + pcmk__debug("Node %s is %s a peer", peer->name, + (gone? "no longer" : "now")); break; case pcmk__node_update_state: - crm_debug("%s node %s is now %s (was %s)", - (is_remote? "Remote" : "Cluster"), - peer->name, state_text(peer->state), state_text(data)); + pcmk__debug("%s node %s is now %s (was %s)", + (is_remote? "Remote" : "Cluster"), + peer->name, state_text(peer->state), state_text(data)); if (pcmk__str_eq(peer->state, PCMK_VALUE_MEMBER, pcmk__str_none)) { /* If we're the writer, send new peers a list of all attributes * (unless it's a remote node, which doesn't run its own attrd) @@ -359,7 +359,7 @@ attrd_peer_update_one(const pcmk__node_status_t *peer, xmlNode *xml, // If no host was specified, update all hosts GHashTableIter vIter; - crm_debug("Setting %s for all hosts to %s", attr, value); + pcmk__debug("Setting %s for all hosts to %s", attr, value); pcmk__xe_remove_attr(xml, PCMK__XA_ATTR_HOST_ID); g_hash_table_iter_init(&vIter, a->values); @@ -411,7 +411,7 @@ broadcast_unseen_local_values(void) } if (sync != NULL) { - crm_debug("Broadcasting local-only values"); + pcmk__debug("Broadcasting local-only values"); attrd_send_message(NULL, sync, false); pcmk__xml_free(sync); } @@ -541,7 +541,7 @@ attrd_peer_remove(const char *host, bool uncache, const char *source) g_hash_table_iter_init(&aIter, attributes); while (g_hash_table_iter_next(&aIter, NULL, (gpointer *) & a)) { if(g_hash_table_remove(a->values, host)) { - crm_debug("Removed %s[%s] for peer %s", a->id, host, source); + pcmk__debug("Removed %s[%s] for peer %s", a->id, host, source); } } @@ -573,14 +573,13 @@ attrd_peer_sync(pcmk__node_status_t *peer) while (g_hash_table_iter_next(&aIter, NULL, (gpointer *) & a)) { g_hash_table_iter_init(&vIter, a->values); while (g_hash_table_iter_next(&vIter, NULL, (gpointer *) & v)) { - crm_debug("Syncing %s[%s]='%s' to %s", - a->id, v->nodename, readable_value(v), - readable_peer(peer)); + pcmk__debug("Syncing %s[%s]='%s' to %s", a->id, v->nodename, + readable_value(v), readable_peer(peer)); attrd_add_value_xml(sync, a, v, false); } } - crm_debug("Syncing values to %s", readable_peer(peer)); + pcmk__debug("Syncing values to %s", readable_peer(peer)); attrd_send_message(peer, sync, false); pcmk__xml_free(sync); } diff --git a/daemons/attrd/attrd_elections.c b/daemons/attrd/attrd_elections.c index 8e66428dc12..0b21ac73487 100644 --- a/daemons/attrd/attrd_elections.c +++ b/daemons/attrd/attrd_elections.c @@ -67,8 +67,8 @@ attrd_handle_election_op(const pcmk__node_status_t *peer, xmlNode *xml) switch(rc) { case election_start: - crm_debug("Unsetting writer (was %s) and starting new election", - peer_writer? peer_writer : "unset"); + pcmk__debug("Unsetting writer (was %s) and starting new election", + pcmk__s(peer_writer, "unset")); free(peer_writer); peer_writer = NULL; election_vote(attrd_cluster); @@ -88,8 +88,8 @@ attrd_handle_election_op(const pcmk__node_status_t *peer, xmlNode *xml) */ if ((peer_writer == NULL) || (previous != election_lost)) { pcmk__str_update(&peer_writer, peer->name); - crm_debug("Election lost, presuming %s is writer for now", - peer_writer); + pcmk__debug("Election lost, presuming %s is writer for now", + peer_writer); } break; @@ -164,7 +164,8 @@ attrd_remove_voter(const pcmk__node_status_t *peer) * would be pending until it's timed out. */ } else if (election_state(attrd_cluster) == election_in_progress) { - crm_debug("Checking election status upon loss of voter %s", peer->name); + pcmk__debug("Checking election status upon loss of voter %s", + peer->name); election_check(attrd_cluster); } } diff --git a/daemons/attrd/attrd_ipc.c b/daemons/attrd/attrd_ipc.c index a4a4691e2ca..b0ce6baf7b9 100644 --- a/daemons/attrd/attrd_ipc.c +++ b/daemons/attrd/attrd_ipc.c @@ -192,7 +192,8 @@ attrd_client_query(pcmk__request_t *request) xmlNode *reply = NULL; const char *attr = NULL; - crm_debug("Query arrived from %s", pcmk__client_name(request->ipc_client)); + pcmk__debug("Query arrived from %s", + pcmk__client_name(request->ipc_client)); /* Request must specify attribute name to query */ attr = pcmk__xe_get(query, PCMK__XA_ATTR_NAME); @@ -254,7 +255,7 @@ expand_regexes(xmlNode *xml, const char *attr, const char *value, const char *re GHashTableIter aIter; regex_t r_patt; - crm_debug("Setting %s to %s", regex, value); + pcmk__debug("Setting %s to %s", regex, value); if (regcomp(&r_patt, regex, REG_EXTENDED|REG_NOSUB)) { return EINVAL; } @@ -470,9 +471,9 @@ attrd_client_update(pcmk__request_t *request) return NULL; } - crm_debug("Broadcasting %s[%s]=%s%s", - attr, pcmk__xe_get(xml, PCMK__XA_ATTR_HOST), - value, (attrd_election_won()? " (writer)" : "")); + pcmk__debug("Broadcasting %s[%s]=%s%s", attr, + pcmk__xe_get(xml, PCMK__XA_ATTR_HOST), value, + (attrd_election_won()? " (writer)" : "")); send_update_msg_to_cluster(request, xml); pcmk__set_result(&request->result, CRM_EX_OK, PCMK_EXEC_DONE, NULL); @@ -562,14 +563,14 @@ attrd_ipc_dispatch(qb_ipcs_connection_t * c, void *data, size_t size) // Sanity-check, and parse XML from IPC data CRM_CHECK((c != NULL) && (client != NULL), return 0); if (data == NULL) { - crm_debug("No IPC data from PID %d", pcmk__client_pid(c)); + pcmk__debug("No IPC data from PID %d", pcmk__client_pid(c)); return 0; } xml = pcmk__client_data2xml(client, data, &id, &flags); if (xml == NULL) { - crm_debug("Unrecognizable IPC data from PID %d", pcmk__client_pid(c)); + pcmk__debug("Unrecognizable IPC data from PID %d", pcmk__client_pid(c)); pcmk__ipc_send_ack(client, id, flags, PCMK__XE_ACK, NULL, CRM_EX_PROTOCOL); return 0; diff --git a/daemons/attrd/attrd_messages.c b/daemons/attrd/attrd_messages.c index 7c38ec6b9f9..4e8a3de0ee9 100644 --- a/daemons/attrd/attrd_messages.c +++ b/daemons/attrd/attrd_messages.c @@ -106,7 +106,7 @@ handle_confirm_request(pcmk__request_t *request) if (request->peer != NULL) { int callid; - crm_debug("Received confirmation from %s", request->peer); + pcmk__debug("Received confirmation from %s", request->peer); if (pcmk__xe_get_int(request->xml, PCMK__XA_CALL_ID, &callid) != pcmk_rc_ok) { @@ -297,7 +297,7 @@ attrd_handle_request(pcmk__request_t *request) if (!pcmk__result_ok(&request->result)) { pcmk__warn("%s", log_msg); } else { - crm_debug("%s", log_msg); + pcmk__debug("%s", log_msg); } free(log_msg); @@ -323,8 +323,8 @@ attrd_broadcast_protocol(void) pcmk__xe_set(attrd_op, PCMK__XA_ATTR_HOST_ID, attrd_cluster->priv->node_xml_id); - crm_debug("Broadcasting attrd protocol version %s for node %s", - ATTRD_PROTOCOL_VERSION, attrd_cluster->priv->node_name); + pcmk__debug("Broadcasting attrd protocol version %s for node %s", + ATTRD_PROTOCOL_VERSION, attrd_cluster->priv->node_name); attrd_send_message(NULL, attrd_op, false); /* ends up at attrd_peer_message() */ diff --git a/daemons/attrd/pacemaker-attrd.c b/daemons/attrd/pacemaker-attrd.c index b1d4c8c4019..47c416fecfa 100644 --- a/daemons/attrd/pacemaker-attrd.c +++ b/daemons/attrd/pacemaker-attrd.c @@ -73,8 +73,8 @@ ipc_already_running(void) rc = pcmk__connect_ipc(old_instance, pcmk_ipc_dispatch_sync, 2); if (rc != pcmk_rc_ok) { - crm_debug("No existing %s manager instance found: %s", - pcmk_ipc_name(old_instance, true), pcmk_rc_str(rc)); + pcmk__debug("No existing %s manager instance found: %s", + pcmk_ipc_name(old_instance, true), pcmk_rc_str(rc)); pcmk_free_ipc_api(old_instance); return false; } diff --git a/daemons/based/based_callbacks.c b/daemons/based/based_callbacks.c index d8fd00cef3e..5300c9acac5 100644 --- a/daemons/based/based_callbacks.c +++ b/daemons/based/based_callbacks.c @@ -175,10 +175,11 @@ do_local_notify(const xmlNode *notify_src, const char *client_id, client_obj = pcmk__find_client_by_id(client_id); if (client_obj == NULL) { - crm_debug("Could not notify client %s%s %s of call %d result: " - "client no longer exists", client_id, - (from_peer? " (originator of delegated request)" : ""), - (sync_reply? "synchronously" : "asynchronously"), msg_id); + pcmk__debug("Could not notify client %s%s %s of call %d result: " + "client no longer exists", + client_id, + (from_peer? " (originator of delegated request)" : ""), + (sync_reply? "synchronously" : "asynchronously"), msg_id); return; } @@ -260,8 +261,8 @@ cib_common_callback_worker(uint32_t id, uint32_t flags, xmlNode * op_request, pcmk__xe_get_int(op_request, PCMK__XA_CIB_NOTIFY_ACTIVATE, &on_off); - crm_debug("Setting %s callbacks %s for client %s", - type, (on_off? "on" : "off"), pcmk__client_name(cib_client)); + pcmk__debug("Setting %s callbacks %s for client %s", type, + (on_off? "on" : "off"), pcmk__client_name(cib_client)); if (pcmk__str_eq(type, PCMK__VALUE_CIB_POST_NOTIFY, pcmk__str_none)) { bit = cib_notify_post; @@ -410,7 +411,7 @@ process_ping_reply(xmlNode *reply) const char *digest = pcmk__xe_get(pong, PCMK__XA_DIGEST); if (seq_s == NULL) { - crm_debug("Ignoring ping reply with no " PCMK__XA_CIB_PING_ID); + pcmk__debug("Ignoring ping reply with no " PCMK__XA_CIB_PING_ID); return; } else { @@ -418,8 +419,9 @@ process_ping_reply(xmlNode *reply) int rc = pcmk__scan_ll(seq_s, &seq_ll, 0LL); if (rc != pcmk_rc_ok) { - crm_debug("Ignoring ping reply with invalid " PCMK__XA_CIB_PING_ID - " '%s': %s", seq_s, pcmk_rc_str(rc)); + pcmk__debug("Ignoring ping reply with invalid " PCMK__XA_CIB_PING_ID + " '%s': %s", + seq_s, pcmk_rc_str(rc)); return; } seq = (uint64_t) seq_ll; @@ -630,8 +632,8 @@ parse_peer_options(const cib__operation_t *operation, xmlNode *request, if (reply_to == NULL) { *process = TRUE; } else { // Not possible? - crm_debug("Ignoring shutdown request from %s because reply_to=%s", - originator, reply_to); + pcmk__debug("Ignoring shutdown request from %s because reply_to=%s", + originator, reply_to); } return *process; } @@ -1292,7 +1294,7 @@ cib_shutdown(int nsig) c = qb_ipcs_connection_next_get(ipcs_rw, last); - crm_debug("Disconnecting r/w client %p...", last); + pcmk__debug("Disconnecting r/w client %p...", last); qb_ipcs_disconnect(last); qb_ipcs_connection_unref(last); disconnects++; @@ -1304,7 +1306,7 @@ cib_shutdown(int nsig) c = qb_ipcs_connection_next_get(ipcs_ro, last); - crm_debug("Disconnecting r/o client %p...", last); + pcmk__debug("Disconnecting r/o client %p...", last); qb_ipcs_disconnect(last); qb_ipcs_connection_unref(last); disconnects++; @@ -1316,7 +1318,7 @@ cib_shutdown(int nsig) c = qb_ipcs_connection_next_get(ipcs_shm, last); - crm_debug("Disconnecting non-blocking r/w client %p...", last); + pcmk__debug("Disconnecting non-blocking r/w client %p...", last); qb_ipcs_disconnect(last); qb_ipcs_connection_unref(last); disconnects++; @@ -1324,7 +1326,8 @@ cib_shutdown(int nsig) disconnects += pcmk__ipc_client_count(); - crm_debug("Disconnecting %d remote clients", pcmk__ipc_client_count()); + pcmk__debug("Disconnecting %d remote clients", + pcmk__ipc_client_count()); pcmk__foreach_ipc_client(disconnect_remote_client, NULL); pcmk__info("Disconnected %d clients", disconnects); } diff --git a/daemons/based/based_io.c b/daemons/based/based_io.c index 6060bdb1a22..8b1c5c0912f 100644 --- a/daemons/based/based_io.c +++ b/daemons/based/based_io.c @@ -110,7 +110,7 @@ static int cib_archive_filter(const struct dirent * a) crm_trace("%s - wrong suffix", a->d_name); } else { - crm_debug("%s - candidate", a->d_name); + pcmk__debug("%s - candidate", a->d_name); rc = 1; } @@ -304,7 +304,7 @@ activateCibXml(xmlNode * new_cib, gboolean to_disk, const char *op) the_cib = new_cib; pcmk__xml_free(saved_cib); if (cib_writes_enabled && cib_status == pcmk_ok && to_disk) { - crm_debug("Triggering CIB write for %s op", op); + pcmk__debug("Triggering CIB write for %s op", op); mainloop_set_trigger(cib_writer); } return pcmk_ok; diff --git a/daemons/based/based_messages.c b/daemons/based/based_messages.c index 9ce39b4924c..26269672d64 100644 --- a/daemons/based/based_messages.c +++ b/daemons/based/based_messages.c @@ -98,7 +98,7 @@ cib_process_readwrite(const char *op, int options, const char *section, xmlNode pcmk__info("We are now in R/W mode"); based_is_primary = true; } else { - crm_debug("We are still in R/W mode"); + pcmk__debug("We are still in R/W mode"); } } else if (based_is_primary) { @@ -419,7 +419,7 @@ sync_our_cib(xmlNode * request, gboolean all) CRM_CHECK(the_cib != NULL, return -EINVAL); CRM_CHECK(all || (host != NULL), return -EINVAL); - crm_debug("Syncing CIB to %s", all ? "all peers" : host); + pcmk__debug("Syncing CIB to %s", (all? "all peers" : host)); replace_request = cib_msg_copy(request); diff --git a/daemons/based/based_notify.c b/daemons/based/based_notify.c index 27ac6b0c23a..694a637ce17 100644 --- a/daemons/based/based_notify.c +++ b/daemons/based/based_notify.c @@ -89,8 +89,8 @@ cib_notify_send_one(gpointer key, gpointer value, gpointer user_data) break; case pcmk__client_tls: case pcmk__client_tcp: - crm_debug("Sent %s notification to client %s (id %s)", - type, pcmk__client_name(client), client->id); + pcmk__debug("Sent %s notification to client %s (id %s)", type, + pcmk__client_name(client), client->id); pcmk__remote_send_xml(client->remote, update->msg); break; default: diff --git a/daemons/based/based_remote.c b/daemons/based/based_remote.c index fb33dbdfbdd..2be3dd1f4f5 100644 --- a/daemons/based/based_remote.c +++ b/daemons/based/based_remote.c @@ -142,7 +142,7 @@ init_remote_listener(int port, gboolean encrypted) } mainloop_add_fd("cib-remote", G_PRIORITY_DEFAULT, *ssock, ssock, &remote_listen_fd_callbacks); - crm_debug("Started listener on port %d", port); + pcmk__debug("Started listener on port %d", port); return *ssock; } @@ -437,7 +437,8 @@ cib_remote_msg(gpointer data) return -1; } - crm_debug("Completed TLS handshake with remote client %s", client_name); + pcmk__debug("Completed TLS handshake with remote client %s", + client_name); pcmk__set_client_flags(client, pcmk__client_tls_handshake_complete); if (client->remote->auth_timeout) { g_source_remove(client->remote->auth_timeout); diff --git a/daemons/controld/controld_callbacks.c b/daemons/controld/controld_callbacks.c index 1bbea73e6b1..b038aa37525 100644 --- a/daemons/controld/controld_callbacks.c +++ b/daemons/controld/controld_callbacks.c @@ -137,9 +137,9 @@ peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, NULL, CRM_SYSTEM_CRMD, CRM_OP_HELLO, NULL); - crm_debug("Sending hello to node %" PRIu32 " so that it learns our " - "node name", - node->cluster_layer_id); + pcmk__debug("Sending hello to node %" PRIu32 " so that it learns our " + "node name", + node->cluster_layer_id); pcmk__cluster_send_message(node, pcmk_ipc_controld, query); pcmk__xml_free(query); } @@ -377,7 +377,8 @@ peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, /* Update the CIB node state */ update = create_node_state_update(node, flags, NULL, __func__); if (update == NULL) { - crm_debug("Node state update not yet possible for %s", node->name); + pcmk__debug("Node state update not yet possible for %s", + node->name); } else { fsa_cib_anon_update(PCMK_XE_STATUS, update); } diff --git a/daemons/controld/controld_cib.c b/daemons/controld/controld_cib.c index 064651de0a9..f8cb8cb11cc 100644 --- a/daemons/controld/controld_cib.c +++ b/daemons/controld/controld_cib.c @@ -53,7 +53,7 @@ do_cib_updated(const char *event, xmlNode * msg) const xmlNode *patchset = NULL; const char *client_name = NULL; - crm_debug("Received CIB diff notification: DC=%s", pcmk__btoa(AM_I_DC)); + pcmk__debug("Received CIB diff notification: DC=%s", pcmk__btoa(AM_I_DC)); if (cib__get_notify_patchset(msg, &patchset) != pcmk_rc_ok) { return; @@ -102,7 +102,7 @@ controld_disconnect_cib_manager(void) pcmk__assert(cib_conn != NULL); - crm_debug("Disconnecting from the CIB manager"); + pcmk__debug("Disconnecting from the CIB manager"); controld_clear_fsa_input_flags(R_CIB_CONNECTED); @@ -257,7 +257,8 @@ cib_delete_callback(xmlNode *msg, int call_id, int rc, xmlNode *output, char *desc = user_data; if (rc == 0) { - crm_debug("Deletion of %s (via CIB call %d) succeeded", desc, call_id); + pcmk__debug("Deletion of %s (via CIB call %d) succeeded", desc, + call_id); } else { pcmk__warn("Deletion of %s (via CIB call %d) failed: %s " QB_XS " rc=%d", @@ -437,9 +438,9 @@ controld_delete_resource_history(const char *rsc_id, const char *node, if (pcmk__is_set(call_options, cib_sync_call)) { if (pcmk__is_set(call_options, cib_dryrun)) { - crm_debug("Deletion of %s would succeed", desc); + pcmk__debug("Deletion of %s would succeed", desc); } else { - crm_debug("Deletion of %s succeeded", desc); + pcmk__debug("Deletion of %s succeeded", desc); } free(desc); @@ -754,9 +755,9 @@ controld_record_pending_op(const char *node_name, const lrmd_rsc_info_t *rsc, lrmd__set_result(op, PCMK_OCF_UNKNOWN, PCMK_EXEC_PENDING, NULL); - crm_debug("Recording pending %s-interval %s for %s on %s in the CIB", - pcmk__readable_interval(op->interval_ms), op->op_type, op->rsc_id, - node_name); + pcmk__debug("Recording pending %s-interval %s for %s on %s in the CIB", + pcmk__readable_interval(op->interval_ms), op->op_type, + op->rsc_id, node_name); controld_update_resource_history(node_name, rsc, op, 0); return true; } @@ -834,8 +835,8 @@ controld_update_cib(const char *section, xmlNode *data, int options, if (cib != NULL) { cib_rc = cib->cmds->modify(cib, section, data, options); if (cib_rc >= 0) { - crm_debug("Submitted CIB update %d for %s section", - cib_rc, section); + pcmk__debug("Submitted CIB update %d for %s section", cib_rc, + section); } } @@ -974,8 +975,9 @@ controld_delete_action_history(const lrmd_event_data_t *op) free(op_id); } - crm_debug("Erasing resource operation history for " PCMK__OP_FMT " (call=%d)", - op->rsc_id, op->op_type, op->interval_ms, op->call_id); + pcmk__debug("Erasing resource operation history for " PCMK__OP_FMT + " (call=%d)", + op->rsc_id, op->op_type, op->interval_ms, op->call_id); controld_globals.cib_conn->cmds->remove(controld_globals.cib_conn, PCMK_XE_STATUS, xml_top, cib_none); diff --git a/daemons/controld/controld_control.c b/daemons/controld/controld_control.c index 728444b43f4..7ad965dc64c 100644 --- a/daemons/controld/controld_control.c +++ b/daemons/controld/controld_control.c @@ -161,7 +161,7 @@ crmd_exit(crm_exit_t exit_code) static bool in_progress = FALSE; if (in_progress && (exit_code == CRM_EX_OK)) { - crm_debug("Exit is already in progress"); + pcmk__debug("Exit is already in progress"); return exit_code; } else if(in_progress) { @@ -192,7 +192,7 @@ crmd_exit(crm_exit_t exit_code) controld_disconnect_fencer(TRUE); if ((exit_code == CRM_EX_OK) && (controld_globals.mainloop == NULL)) { - crm_debug("No mainloop detected"); + pcmk__debug("No mainloop detected"); exit_code = CRM_EX_ERROR; } @@ -346,7 +346,7 @@ do_startup(long long action, enum crmd_fsa_cause cause, enum crmd_fsa_state cur_state, enum crmd_fsa_input current_input, fsa_data_t * msg_data) { - crm_debug("Registering Signal Handlers"); + pcmk__debug("Registering Signal Handlers"); mainloop_add_signal(SIGTERM, crm_shutdown); mainloop_add_signal(SIGPIPE, sigpipe_ignore); @@ -356,7 +356,7 @@ do_startup(long long action, controld_init_fsa_trigger(); controld_init_transition_trigger(); - crm_debug("Creating CIB manager and executor objects"); + pcmk__debug("Creating CIB manager and executor objects"); controld_globals.cib_conn = cib_new(); lrm_state_init_local(); @@ -499,7 +499,7 @@ do_started(long long action, return; } - crm_debug("Init server comms"); + pcmk__debug("Init server comms"); ipcs = pcmk__serve_controld_ipc(&crmd_callbacks); if (ipcs == NULL) { pcmk__err("Failed to create IPC server: shutting down and inhibiting " @@ -568,7 +568,7 @@ config_query_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, void goto bail; } - crm_debug("Call %d : Parsing CIB options", call_id); + pcmk__debug("Call %d : Parsing CIB options", call_id); config_hash = pcmk__strkey_table(free, free); pcmk_unpack_nvpair_blocks(crmconfig, PCMK_XE_CLUSTER_PROPERTY_SET, PCMK_VALUE_CIB_BOOTSTRAP_OPTIONS, &rule_input, diff --git a/daemons/controld/controld_election.c b/daemons/controld/controld_election.c index 89ce6da5968..129e12a2af3 100644 --- a/daemons/controld/controld_election.c +++ b/daemons/controld/controld_election.c @@ -123,7 +123,8 @@ do_election_check(long long action, if (controld_globals.fsa_state == S_ELECTION) { election_check(controld_globals.cluster); } else { - crm_debug("Ignoring election check because we are not in an election"); + pcmk__debug("Ignoring election check because we are not in an " + "election"); } } @@ -253,7 +254,7 @@ do_dc_release(long long action, enum crmd_fsa_input current_input, fsa_data_t * msg_data) { if (action & A_DC_RELEASE) { - crm_debug("Releasing the role of DC"); + pcmk__debug("Releasing the role of DC"); controld_clear_fsa_input_flags(R_THE_DC); controld_expect_sched_reply(NULL); diff --git a/daemons/controld/controld_execd.c b/daemons/controld/controld_execd.c index 69f8141690f..458f21f0eff 100644 --- a/daemons/controld/controld_execd.c +++ b/daemons/controld/controld_execd.c @@ -160,7 +160,8 @@ update_history_cache(lrm_state_t * lrm_state, lrmd_rsc_info_t * rsc, lrmd_event_ rsc_history_t *entry = NULL; if (op->rsc_deleted) { - crm_debug("Purged history for '%s' after %s", op->rsc_id, op->op_type); + pcmk__debug("Purged history for '%s' after %s", op->rsc_id, + op->op_type); controld_delete_resource_history(op->rsc_id, lrm_state->node_name, NULL, crmd_cib_smart_opt()); return; @@ -170,7 +171,8 @@ update_history_cache(lrm_state_t * lrm_state, lrmd_rsc_info_t * rsc, lrmd_event_ return; } - crm_debug("Updating history for '%s' with %s op", op->rsc_id, op->op_type); + pcmk__debug("Updating history for '%s' with %s op", op->rsc_id, + op->op_type); entry = g_hash_table_lookup(lrm_state->resource_history, op->rsc_id); if (entry == NULL && rsc) { @@ -315,7 +317,7 @@ try_local_executor_connect(long long action, fsa_data_t *msg_data, { int rc = pcmk_rc_ok; - crm_debug("Connecting to the local executor"); + pcmk__debug("Connecting to the local executor"); // If we can connect, great rc = controld_connect_local_executor(lrm_state); @@ -403,7 +405,7 @@ lrm_state_verify_stopped(lrm_state_t * lrm_state, enum crmd_fsa_state cur_state, rsc_history_t *entry = NULL; active_op_t *pending = NULL; - crm_debug("Checking for active resources before exit"); + pcmk__debug("Checking for active resources before exit"); if (cur_state == S_TERMINATE) { log_level = LOG_ERR; @@ -657,7 +659,8 @@ controld_trigger_delete_refresh(const char *from_sys, const char *rsc_id) if (!pcmk__str_eq(from_sys, CRM_SYSTEM_TENGINE, pcmk__str_casei)) { char *now_s = pcmk__assert_asprintf("%lld", (long long) time(NULL)); - crm_debug("Triggering a refresh after %s cleaned %s", from_sys, rsc_id); + pcmk__debug("Triggering a refresh after %s cleaned %s", from_sys, + rsc_id); cib__update_node_attr(controld_globals.logger_out, controld_globals.cib_conn, cib_none, PCMK_XE_CRM_CONFIG, NULL, NULL, NULL, NULL, @@ -812,11 +815,11 @@ cancel_op(lrm_state_t * lrm_state, const char *rsc_id, const char *key, int op, if (pending) { if (remove && !pcmk__is_set(pending->flags, active_op_remove)) { controld_set_active_op_flags(pending, active_op_remove); - crm_debug("Scheduling %s for removal", key); + pcmk__debug("Scheduling %s for removal", key); } if (pcmk__is_set(pending->flags, active_op_cancelled)) { - crm_debug("Operation %s already cancelled", key); + pcmk__debug("Operation %s already cancelled", key); free(local_key); return FALSE; } @@ -828,16 +831,16 @@ cancel_op(lrm_state_t * lrm_state, const char *rsc_id, const char *key, int op, return FALSE; } - crm_debug("Cancelling op %d for %s (%s)", op, rsc_id, key); + pcmk__debug("Cancelling op %d for %s (%s)", op, rsc_id, key); rc = lrm_state_cancel(lrm_state, pending->rsc_id, pending->op_type, pending->interval_ms); if (rc == pcmk_ok) { - crm_debug("Op %d for %s (%s): cancelled", op, rsc_id, key); + pcmk__debug("Op %d for %s (%s): cancelled", op, rsc_id, key); free(local_key); return TRUE; } - crm_debug("Op %d for %s (%s): Nothing to cancel", op, rsc_id, key); + pcmk__debug("Op %d for %s (%s): Nothing to cancel", op, rsc_id, key); /* The caller needs to make sure the entry is * removed from the active operations list * @@ -1233,7 +1236,7 @@ handle_reprobe_op(lrm_state_t *lrm_state, xmlNode *msg, const char *from_sys, if (!pcmk__strcase_any_of(from_sys, CRM_SYSTEM_PENGINE, CRM_SYSTEM_TENGINE, NULL)) { xmlNode *reply = pcmk__new_reply(msg, NULL); - crm_debug("ACK'ing re-probe from %s (%s)", from_sys, from_host); + pcmk__debug("ACK'ing re-probe from %s (%s)", from_sys, from_host); if (relay_message(reply, TRUE) == FALSE) { crm_log_xml_err(reply, "Unable to route reply"); @@ -1275,8 +1278,8 @@ static bool do_lrm_cancel(ha_msg_input_t *input, lrm_state_t *lrm_state, call_id = pcmk__xe_get(params, meta_key); free(meta_key); - crm_debug("Scheduler requested op %s (call=%s) be cancelled", - op_key, (call_id? call_id : "NA")); + pcmk__debug("Scheduler requested op %s (call=%s) be cancelled", op_key, + pcmk__s(call_id, "NA")); pcmk__scan_min_int(call_id, &call, 0); if (call == 0) { // Normal case when the scheduler cancels a recurring op @@ -1489,10 +1492,10 @@ do_lrm_invoke(long long action, /* Delete of malformed or nonexistent resource * (deleting something that does not exist is a success) */ - crm_debug("Not registering resource '%s' for a %s event " - QB_XS " get-rc=%d (%s) transition-key=%s", - pcmk__xe_id(xml_rsc), operation, - rc, pcmk_strerror(rc), pcmk__xe_id(input->xml)); + pcmk__debug("Not registering resource '%s' for a %s event " + QB_XS " get-rc=%d (%s) transition-key=%s", + pcmk__xe_id(xml_rsc), operation, rc, pcmk_strerror(rc), + pcmk__xe_id(input->xml)); delete_rsc_entry(lrm_state, input, pcmk__xe_id(xml_rsc), NULL, pcmk_ok, user_name, true); return; @@ -1767,9 +1770,9 @@ controld_ack_event_directly(const char *to_host, const char *to_sys, crm_log_xml_trace(update, "[direct ACK]"); - crm_debug("ACK'ing resource op " PCMK__OP_FMT " from %s: %s", - op->rsc_id, op->op_type, op->interval_ms, op->user_data, - pcmk__xe_get(reply, PCMK_XA_REFERENCE)); + pcmk__debug("ACK'ing resource op " PCMK__OP_FMT " from %s: %s", op->rsc_id, + op->op_type, op->interval_ms, op->user_data, + pcmk__xe_get(reply, PCMK_XA_REFERENCE)); if (relay_message(reply, TRUE) == FALSE) { crm_log_xml_err(reply, "Unable to route reply"); @@ -1815,7 +1818,8 @@ stop_recurring_action_by_rsc(gpointer key, gpointer value, gpointer user_data) if ((op->interval_ms != 0) && pcmk__str_eq(op->rsc_id, event->rsc->id, pcmk__str_none)) { - crm_debug("Cancelling op %d for %s (%s)", op->call_id, op->rsc_id, (char*)key); + pcmk__debug("Cancelling op %d for %s (%s)", op->call_id, op->rsc_id, + (const char *) key); remove = !cancel_op(event->lrm_state, event->rsc->id, key, op->call_id, FALSE); } @@ -1962,9 +1966,10 @@ do_lrm_rsc_op(lrm_state_t *lrm_state, lrmd_rsc_info_t *rsc, xmlNode *msg, &data); if (removed) { - crm_debug("Stopped %u recurring operation%s in preparation for " - PCMK__OP_FMT, removed, pcmk__plural_s(removed), - rsc->id, operation, op->interval_ms); + pcmk__debug("Stopped %u recurring operation%s in preparation for " + PCMK__OP_FMT, + removed, pcmk__plural_s(removed), rsc->id, operation, + op->interval_ms); } } @@ -2358,8 +2363,8 @@ process_lrm_event(lrm_state_t *lrm_state, lrmd_event_data_t *op, * executor does not have resource information, likely due to resource * cleanup, refresh, or removal) and pending. */ - crm_debug("Recurring op %s was cancelled due to resource deletion", - op_key); + pcmk__debug("Recurring op %s was cancelled due to resource deletion", + op_key); need_direct_ack = TRUE; } else { diff --git a/daemons/controld/controld_execd_state.c b/daemons/controld/controld_execd_state.c index b81298cdbbe..f5063145d6e 100644 --- a/daemons/controld/controld_execd_state.c +++ b/daemons/controld/controld_execd_state.c @@ -480,7 +480,7 @@ remote_config_check(xmlNode * msg, int call_id, int rc, xmlNode * output, void * .now = now, }; - crm_debug("Call %d : Parsing CIB options", call_id); + pcmk__debug("Call %d : Parsing CIB options", call_id); pcmk_unpack_nvpair_blocks(output, PCMK_XE_CLUSTER_PROPERTY_SET, PCMK_VALUE_CIB_BOOTSTRAP_OPTIONS, &rule_input, config_hash, NULL); @@ -521,7 +521,7 @@ crmd_remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg) NULL); } } else { - crm_debug("Skipping remote_config_check for guest-nodes"); + pcmk__debug("Skipping remote_config_check for guest-nodes"); } } else if (pcmk__str_eq(op, LRMD_IPC_OP_SHUTDOWN_REQ, pcmk__str_casei)) { diff --git a/daemons/controld/controld_fencing.c b/daemons/controld/controld_fencing.c index 5edd932f761..316bce55156 100644 --- a/daemons/controld/controld_fencing.c +++ b/daemons/controld/controld_fencing.c @@ -54,8 +54,9 @@ update_stonith_max_attempts(const char *value) CRM_CHECK((rc == pcmk_rc_ok) && (score > 0), return); if (stonith_max_attempts != score) { - crm_debug("Maximum fencing attempts per transition is now %d (was %lu)", - score, stonith_max_attempts); + pcmk__debug("Maximum fencing attempts per transition is now %d (was " + "%lu)", + score, stonith_max_attempts); } stonith_max_attempts = score; } @@ -268,7 +269,8 @@ update_node_state_after_fencing(const char *target, const char *target_xml_id) cib_can_create); pcmk__xml_free(node_state); - crm_debug("Updating node state for %s after fencing (call %d)", target, rc); + pcmk__debug("Updating node state for %s after fencing (call %d)", target, + rc); fsa_register_cib_callback(rc, pcmk__str_copy(target), cib_fencing_updated); controld_delete_node_state(peer->name, controld_section_all, cib_none); @@ -1062,7 +1064,7 @@ static void tengine_stonith_history_synced(stonith_t *st, stonith_event_t *st_event) { te_cleanup_stonith_history_sync(st, FALSE); - crm_debug("Fence-history synced - cancel all timers"); + pcmk__debug("Fence-history synced - cancel all timers"); } static gboolean diff --git a/daemons/controld/controld_fsa.c b/daemons/controld/controld_fsa.c index 26df3f43f87..70716f4dc5c 100644 --- a/daemons/controld/controld_fsa.c +++ b/daemons/controld/controld_fsa.c @@ -179,10 +179,11 @@ s_crmd_fsa(enum crmd_fsa_cause cause) fsa_dump_actions(new_actions, "New actions"); if (fsa_data->fsa_input != I_NULL && fsa_data->fsa_input != I_ROUTER) { - crm_debug("Processing %s: [ state=%s cause=%s origin=%s ]", - fsa_input2string(fsa_data->fsa_input), - fsa_state2string(globals->fsa_state), - fsa_cause2string(fsa_data->fsa_cause), fsa_data->origin); + pcmk__debug("Processing %s: [ state=%s cause=%s origin=%s ]", + fsa_input2string(fsa_data->fsa_input), + fsa_state2string(globals->fsa_state), + fsa_cause2string(fsa_data->fsa_cause), + fsa_data->origin); } /* logging : *before* the state is changed */ @@ -225,12 +226,12 @@ s_crmd_fsa(enum crmd_fsa_cause cause) || (controld_globals.fsa_actions != A_NOTHING) || pcmk__is_set(controld_globals.flags, controld_fsa_is_stalled)) { - crm_debug("Exiting the FSA: queue=%d, fsa_actions=%" PRIx64 - ", stalled=%s", - g_list_length(controld_globals.fsa_message_queue), - controld_globals.fsa_actions, - pcmk__flag_text(controld_globals.flags, - controld_fsa_is_stalled)); + pcmk__debug("Exiting the FSA: queue=%d, fsa_actions=%" PRIx64 + ", stalled=%s", + g_list_length(controld_globals.fsa_message_queue), + controld_globals.fsa_actions, + pcmk__flag_text(controld_globals.flags, + controld_fsa_is_stalled)); } else { crm_trace("Exiting the FSA"); } @@ -501,9 +502,9 @@ check_join_counts(fsa_data_t *msg_data) count = crmd_join_phase_count(controld_join_confirmed); if (count == npeers) { if (npeers == 1) { - crm_debug("Sole active cluster node is fully joined"); + pcmk__debug("Sole active cluster node is fully joined"); } else { - crm_debug("All %d active cluster nodes are fully joined", count); + pcmk__debug("All %d active cluster nodes are fully joined", count); } } else if (count > npeers) { @@ -634,8 +635,8 @@ do_state_transition(enum crmd_fsa_state cur_state, crmd_join_phase_log(LOG_NOTICE); } else { - crm_debug("All cluster nodes (%d) responded to join offer", - crmd_join_phase_count(controld_join_integrated)); + pcmk__debug("All cluster nodes (%d) responded to join offer", + crmd_join_phase_count(controld_join_integrated)); } break; diff --git a/daemons/controld/controld_join_client.c b/daemons/controld/controld_join_client.c index cc6fe372f2a..33563b70d8d 100644 --- a/daemons/controld/controld_join_client.c +++ b/daemons/controld/controld_join_client.c @@ -55,7 +55,7 @@ do_cl_join_query(long long action, sleep(1); // Give the cluster layer time to propagate to the DC update_dc(NULL); /* Unset any existing value so that the result is not discarded */ - crm_debug("Querying for a DC"); + pcmk__debug("Querying for a DC"); pcmk__cluster_send_message(NULL, pcmk_ipc_controld, req); pcmk__xml_free(req); } @@ -84,7 +84,7 @@ do_cl_join_announce(long long action, NULL, CRM_SYSTEM_DC, CRM_OP_JOIN_ANNOUNCE, NULL); - crm_debug("Announcing availability"); + pcmk__debug("Announcing availability"); update_dc(NULL); pcmk__cluster_send_message(NULL, pcmk_ipc_controld, req); pcmk__xml_free(req); @@ -165,7 +165,7 @@ join_query_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, void * register_fsa_error_adv(C_FSA_INTERNAL, I_ERROR, NULL, NULL, __func__); } else if (controld_globals.dc_name == NULL) { - crm_debug("Membership is in flux, not continuing join-%s", join_id); + pcmk__debug("Membership is in flux, not continuing join-%s", join_id); } else { xmlNode *join_request = NULL; @@ -173,8 +173,8 @@ join_query_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, void * pcmk__get_node(0, controld_globals.dc_name, NULL, pcmk__node_search_cluster_member); - crm_debug("Respond to join offer join-%s from %s", - join_id, controld_globals.dc_name); + pcmk__debug("Respond to join offer join-%s from %s", join_id, + controld_globals.dc_name); pcmk__xe_copy_attrs(generation, output, pcmk__xaf_none); join_request = pcmk__new_request(pcmk_ipc_controld, CRM_SYSTEM_CRMD, @@ -219,7 +219,7 @@ set_join_state(const char *start_state, const char *node_name, const char *node_ (remote? PCMK_VALUE_REMOTE : NULL)); } else if (pcmk__str_eq(start_state, PCMK_VALUE_DEFAULT, pcmk__str_casei)) { - crm_debug("Not forcing a starting state on node %s", node_name); + pcmk__debug("Not forcing a starting state on node %s", node_name); } else { pcmk__warn("Unrecognized start state '%s', using " @@ -324,8 +324,8 @@ do_cl_join_finalize_respond(long long action, pcmk__xe_set_int(join_confirm, PCMK__XA_JOIN_ID, join_id); - crm_debug("Confirming join-%d: sending local operation history to %s", - join_id, controld_globals.dc_name); + pcmk__debug("Confirming join-%d: sending local operation history to %s", + join_id, controld_globals.dc_name); /* * If this is the node's first join since the controller started on it, diff --git a/daemons/controld/controld_join_dc.c b/daemons/controld/controld_join_dc.c index 3fe37d6eb47..49a57fccfea 100644 --- a/daemons/controld/controld_join_dc.c +++ b/daemons/controld/controld_join_dc.c @@ -204,7 +204,7 @@ start_join_round(void) GHashTableIter iter; pcmk__node_status_t *peer = NULL; - crm_debug("Starting new join round join-%d", current_join_id); + pcmk__debug("Starting new join round join-%d", current_join_id); g_hash_table_iter_init(&iter, pcmk__peer_cache); while (g_hash_table_iter_next(&iter, NULL, (gpointer *) &peer)) { @@ -470,8 +470,9 @@ do_dc_join_filter_offer(long long action, pcmk__xe_get_int(join_ack->msg, PCMK__XA_JOIN_ID, &join_id); if (join_id != current_join_id) { - crm_debug("Ignoring join-%d request from %s because we are on join-%d", - join_id, join_from, current_join_id); + pcmk__debug("Ignoring join-%d request from %s because we are on " + "join-%d", + join_id, join_from, current_join_id); check_join_state(cur_state, __func__); return; } @@ -518,8 +519,9 @@ do_dc_join_filter_offer(long long action, * shut down, and receiving a lingering in-flight request is not * cause for alarm. */ - crm_debug("Rejecting join-%d request from inactive node %s " - QB_XS " ref=%s", join_id, join_from, ref); + pcmk__debug("Rejecting join-%d request from inactive node %s " + QB_XS " ref=%s", + join_id, join_from, ref); } else { pcmk__err("Rejecting join-%d request from inactive node %s " QB_XS " ref=%s", @@ -555,9 +557,9 @@ do_dc_join_filter_offer(long long action, ack_nack_bool = FALSE; } else { - crm_debug("Accepting join-%d request from %s (with first CIB " - "generation) " QB_XS " ref=%s", - join_id, join_from, ref); + pcmk__debug("Accepting join-%d request from %s (with first CIB " + "generation) " QB_XS " ref=%s", + join_id, join_from, ref); max_generation_xml = pcmk__xml_copy(NULL, generation); pcmk__str_update(&max_generation_from, join_from); } @@ -577,9 +579,9 @@ do_dc_join_filter_offer(long long action, ack_nack_bool = FALSE; } else { - crm_debug("Accepting join-%d request from %s (with better CIB " - "generation than current best from %s) " QB_XS " ref=%s", - join_id, join_from, max_generation_from, ref); + pcmk__debug("Accepting join-%d request from %s (with better CIB " + "generation than current best from %s) " QB_XS " ref=%s", + join_id, join_from, max_generation_from, ref); crm_log_xml_debug(max_generation_xml, "Old max generation"); crm_log_xml_debug(generation, "New max generation"); @@ -589,8 +591,8 @@ do_dc_join_filter_offer(long long action, } } else { - crm_debug("Accepting join-%d request from %s " QB_XS " ref=%s", - join_id, join_from, ref); + pcmk__debug("Accepting join-%d request from %s " QB_XS " ref=%s", + join_id, join_from, ref); } if (!ack_nack_bool) { @@ -603,14 +605,14 @@ do_dc_join_filter_offer(long long action, } count = crmd_join_phase_count(controld_join_integrated); - crm_debug("%d node%s currently integrated in join-%d", - count, pcmk__plural_s(count), join_id); + pcmk__debug("%d node%s currently integrated in join-%d", count, + pcmk__plural_s(count), join_id); if (check_join_state(cur_state, __func__) == FALSE) { // Don't waste time by invoking the scheduler yet count = crmd_join_phase_count(controld_join_welcomed); - crm_debug("Waiting on join-%d requests from %d outstanding node%s", - join_id, count, pcmk__plural_s(count)); + pcmk__debug("Waiting on join-%d requests from %d outstanding node%s", + join_id, count, pcmk__plural_s(count)); } } @@ -631,16 +633,17 @@ do_dc_join_finalize(long long action, * while we compute the latest CIB */ if (count_welcomed != 0) { - crm_debug("Waiting on join-%d requests from %d outstanding node%s " - "before finalizing join", current_join_id, count_welcomed, - pcmk__plural_s(count_welcomed)); + pcmk__debug("Waiting on join-%d requests from %d outstanding node%s " + "before finalizing join", + current_join_id, count_welcomed, + pcmk__plural_s(count_welcomed)); crmd_join_phase_log(LOG_DEBUG); /* crmd_fsa_stall(FALSE); Needed? */ return; } else if (count_finalizable == 0) { - crm_debug("Finalization not needed for join-%d at the current time", - current_join_id); + pcmk__debug("Finalization not needed for join-%d at the current time", + current_join_id); crmd_join_phase_log(LOG_DEBUG); check_join_state(controld_globals.fsa_state, __func__); return; @@ -715,12 +718,14 @@ finalize_sync_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, voi __func__); } else if (!AM_I_DC) { - crm_debug("Sync'ed CIB for join-%d but no longer DC", current_join_id); + pcmk__debug("Sync'ed CIB for join-%d but no longer DC", + current_join_id); } else if (controld_globals.fsa_state != S_FINALIZE_JOIN) { - crm_debug("Sync'ed CIB for join-%d but no longer in S_FINALIZE_JOIN " - "(%s)", current_join_id, - fsa_state2string(controld_globals.fsa_state)); + pcmk__debug("Sync'ed CIB for join-%d but no longer in S_FINALIZE_JOIN " + "(%s)", + current_join_id, + fsa_state2string(controld_globals.fsa_state)); } else { controld_set_fsa_input_flags(R_HAVE_CIB); @@ -732,9 +737,9 @@ finalize_sync_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, voi count_finalizable = crmd_join_phase_count(controld_join_integrated) + crmd_join_phase_count(controld_join_nack); - crm_debug("Notifying %d node%s of join-%d results", - count_finalizable, pcmk__plural_s(count_finalizable), - current_join_id); + pcmk__debug("Notifying %d node%s of join-%d results", + count_finalizable, pcmk__plural_s(count_finalizable), + current_join_id); g_hash_table_foreach(pcmk__peer_cache, finalize_join_for, NULL); } } @@ -756,9 +761,9 @@ join_node_state_commit_callback(xmlNode *msg, int call_id, int rc, register_fsa_error(C_FSA_INTERNAL, I_ERROR, NULL); } - crm_debug("join-%d node history update (via CIB call %d) for node %s " - "complete", - current_join_id, call_id, node); + pcmk__debug("join-%d node history update (via CIB call %d) for node %s " + "complete", + current_join_id, call_id, node); check_join_state(controld_globals.fsa_state, __func__); } @@ -796,8 +801,8 @@ do_dc_join_ack(long long action, } if (strcmp(op, CRM_OP_JOIN_CONFIRM)) { - crm_debug("Ignoring '%s' message from %s while waiting for '%s'", - op, join_from, CRM_OP_JOIN_CONFIRM); + pcmk__debug("Ignoring '%s' message from %s while waiting for '%s'", op, + join_from, CRM_OP_JOIN_CONFIRM); goto done; } @@ -857,9 +862,9 @@ do_dc_join_ack(long long action, execd_state = controld_query_executor_state(); if (execd_state != NULL) { - crm_debug("Updating local node history for join-%d from query " - "result", - current_join_id); + pcmk__debug("Updating local node history for join-%d from query " + "result", + current_join_id); state = execd_state; } else { @@ -869,8 +874,8 @@ do_dc_join_ack(long long action, } } else { - crm_debug("Updating node history for %s from join-%d confirmation", - join_from, current_join_id); + pcmk__debug("Updating node history for %s from join-%d confirmation", + join_from, current_join_id); } rc = cib->cmds->modify(cib, PCMK_XE_STATUS, state, @@ -950,8 +955,8 @@ finalize_join_for(gpointer key, gpointer value, gpointer user_data) } // Acknowledge or nack node's join request - crm_debug("%sing join-%d request from %s", - integrated? "Acknowledg" : "Nack", current_join_id, join_to); + pcmk__debug("%sing join-%d request from %s", + (integrated? "Acknowledg" : "Nack"), current_join_id, join_to); acknak = create_dc_message(CRM_OP_JOIN_ACKNAK, join_to); pcmk__xe_set_bool_attr(acknak, CRM_OP_JOIN_ACKNAK, integrated); @@ -997,11 +1002,11 @@ check_join_state(enum crmd_fsa_state cur_state, const char *source) static unsigned long long highest_seq = 0; if (controld_globals.membership_id != controld_globals.peer_seq) { - crm_debug("join-%d: Membership changed from %llu to %llu " - QB_XS " highest=%llu state=%s for=%s", - current_join_id, controld_globals.membership_id, - controld_globals.peer_seq, highest_seq, - fsa_state2string(cur_state), source); + pcmk__debug("join-%d: Membership changed from %llu to %llu " + QB_XS " highest=%llu state=%s for=%s", + current_join_id, controld_globals.membership_id, + controld_globals.peer_seq, highest_seq, + fsa_state2string(cur_state), source); if (highest_seq < controld_globals.peer_seq) { /* Don't spam the FSA with duplicates */ highest_seq = controld_globals.peer_seq; @@ -1012,51 +1017,51 @@ check_join_state(enum crmd_fsa_state cur_state, const char *source) if (crmd_join_phase_count(controld_join_welcomed) == 0) { int count = crmd_join_phase_count(controld_join_integrated); - crm_debug("join-%d: Integration of %d peer%s complete " - QB_XS " state=%s for=%s", - current_join_id, count, pcmk__plural_s(count), - fsa_state2string(cur_state), source); + pcmk__debug("join-%d: Integration of %d peer%s complete " + QB_XS " state=%s for=%s", + current_join_id, count, pcmk__plural_s(count), + fsa_state2string(cur_state), source); register_fsa_input_before(C_FSA_INTERNAL, I_INTEGRATED, NULL); return TRUE; } } else if (cur_state == S_FINALIZE_JOIN) { if (!pcmk__is_set(controld_globals.fsa_input_register, R_HAVE_CIB)) { - crm_debug("join-%d: Delaying finalization until we have CIB " - QB_XS " state=%s for=%s", - current_join_id, fsa_state2string(cur_state), source); + pcmk__debug("join-%d: Delaying finalization until we have CIB " + QB_XS " state=%s for=%s", + current_join_id, fsa_state2string(cur_state), source); return TRUE; } else if (crmd_join_phase_count(controld_join_welcomed) != 0) { int count = crmd_join_phase_count(controld_join_welcomed); - crm_debug("join-%d: Still waiting on %d welcomed node%s " - QB_XS " state=%s for=%s", - current_join_id, count, pcmk__plural_s(count), - fsa_state2string(cur_state), source); + pcmk__debug("join-%d: Still waiting on %d welcomed node%s " + QB_XS " state=%s for=%s", + current_join_id, count, pcmk__plural_s(count), + fsa_state2string(cur_state), source); crmd_join_phase_log(LOG_DEBUG); } else if (crmd_join_phase_count(controld_join_integrated) != 0) { int count = crmd_join_phase_count(controld_join_integrated); - crm_debug("join-%d: Still waiting on %d integrated node%s " - QB_XS " state=%s for=%s", - current_join_id, count, pcmk__plural_s(count), - fsa_state2string(cur_state), source); + pcmk__debug("join-%d: Still waiting on %d integrated node%s " + QB_XS " state=%s for=%s", + current_join_id, count, pcmk__plural_s(count), + fsa_state2string(cur_state), source); crmd_join_phase_log(LOG_DEBUG); } else if (crmd_join_phase_count(controld_join_finalized) != 0) { int count = crmd_join_phase_count(controld_join_finalized); - crm_debug("join-%d: Still waiting on %d finalized node%s " - QB_XS " state=%s for=%s", - current_join_id, count, pcmk__plural_s(count), - fsa_state2string(cur_state), source); + pcmk__debug("join-%d: Still waiting on %d finalized node%s " + QB_XS " state=%s for=%s", + current_join_id, count, pcmk__plural_s(count), + fsa_state2string(cur_state), source); crmd_join_phase_log(LOG_DEBUG); } else { - crm_debug("join-%d: Complete " QB_XS " state=%s for=%s", - current_join_id, fsa_state2string(cur_state), source); + pcmk__debug("join-%d: Complete " QB_XS " state=%s for=%s", + current_join_id, fsa_state2string(cur_state), source); register_fsa_input_later(C_FSA_INTERNAL, I_FINALIZED, NULL); return TRUE; } @@ -1071,7 +1076,7 @@ do_dc_join_final(long long action, enum crmd_fsa_state cur_state, enum crmd_fsa_input current_input, fsa_data_t * msg_data) { - crm_debug("Ensuring DC, quorum and node attributes are up-to-date"); + pcmk__debug("Ensuring DC, quorum and node attributes are up-to-date"); crm_update_quorum(pcmk__cluster_has_quorum(), TRUE); } diff --git a/daemons/controld/controld_membership.c b/daemons/controld/controld_membership.c index 71f5b1ce0f3..58e13d5a63d 100644 --- a/daemons/controld/controld_membership.c +++ b/daemons/controld/controld_membership.c @@ -64,7 +64,7 @@ post_cache_update(int instance) xmlNode *no_op = NULL; controld_globals.peer_seq = instance; - crm_debug("Updated cache after membership event %d.", instance); + pcmk__debug("Updated cache after membership event %d", instance); g_hash_table_foreach(pcmk__peer_cache, reap_dead_nodes, NULL); controld_set_fsa_input_flags(R_MEMBERSHIP); @@ -444,7 +444,7 @@ crm_update_quorum(gboolean quorum, gboolean force_update) pcmk__xe_set_int(update, PCMK_XA_HAVE_QUORUM, quorum); pcmk__xe_set(update, PCMK_XA_DC_UUID, controld_globals.our_uuid); - crm_debug("Updating quorum status to %s", pcmk__btoa(quorum)); + pcmk__debug("Updating quorum status to %s", pcmk__btoa(quorum)); controld_update_cib(PCMK_XE_CIB, update, cib_none, cib_quorum_update_complete); pcmk__xml_free(update); diff --git a/daemons/controld/controld_messages.c b/daemons/controld/controld_messages.c index cd934617e33..15f76c49dd6 100644 --- a/daemons/controld/controld_messages.c +++ b/daemons/controld/controld_messages.c @@ -75,8 +75,9 @@ register_fsa_input_adv(enum crmd_fsa_cause cause, enum crmd_fsa_input input, if (input == I_WAIT_FOR_EVENT) { controld_set_global_flags(controld_fsa_is_stalled); - crm_debug("Stalling the FSA pending further input: source=%s cause=%s data=%p queue=%d", - raised_from, fsa_cause2string(cause), data, old_len); + pcmk__debug("Stalling the FSA pending further input: source=%s " + "cause=%s data=%p queue=%d", + raised_from, fsa_cause2string(cause), data, old_len); if (old_len > 0) { fsa_dump_queue(LOG_TRACE); @@ -680,9 +681,9 @@ handle_failcount_op(xmlNode * stored_msg) is_remote_node = TRUE; } - crm_debug("Clearing failures for %s-interval %s on %s " - "from attribute manager, CIB, and executor state", - pcmk__readable_interval(interval_ms), rsc, uname); + pcmk__debug("Clearing failures for %s-interval %s on %s from attribute " + "manager, CIB, and executor state", + pcmk__readable_interval(interval_ms), rsc, uname); if (interval_ms) { interval_spec = pcmk__assert_asprintf("%ums", interval_ms); @@ -739,9 +740,10 @@ handle_lrm_delete(xmlNode *stored_msg) from_sys = pcmk__xe_get(stored_msg, PCMK__XA_CRM_SYS_FROM); node = pcmk__xe_get(msg_data, PCMK__META_ON_NODE); user_name = pcmk__update_acl_user(stored_msg, PCMK__XA_CRM_USER, NULL); - crm_debug("Handling " CRM_OP_LRM_DELETE " for %s on %s locally%s%s " - "(clearing CIB resource history only)", rsc_id, node, - (user_name? " for user " : ""), (user_name? user_name : "")); + pcmk__debug("Handling " CRM_OP_LRM_DELETE " for %s on %s locally%s%s " + "(clearing CIB resource history only)", + rsc_id, node, ((user_name != NULL)? " for user " : ""), + pcmk__s(user_name, "")); rc = controld_delete_resource_history(rsc_id, node, user_name, cib_dryrun|cib_sync_call); if (rc == pcmk_rc_ok) { @@ -1023,8 +1025,8 @@ handle_shutdown_self_ack(xmlNode *stored_msg) } // Shouldn't happen, but we are already stopping anyway - crm_debug("Ignoring unexpected shutdown confirmation from %s", - (host_from? host_from : "another node")); + pcmk__debug("Ignoring unexpected shutdown confirmation from %s", + pcmk__s(host_from, "another node")); return I_NULL; } @@ -1123,7 +1125,7 @@ handle_request(xmlNode *stored_msg, enum crmd_fsa_cause cause) if (AM_I_DC && (controld_globals.transition_graph != NULL) && !controld_globals.transition_graph->complete) { - crm_debug("The throttle changed. Trigger a graph."); + pcmk__debug("The throttle changed. Trigger a graph"); trigger_graph(); } return I_NULL; @@ -1142,19 +1144,19 @@ handle_request(xmlNode *stored_msg, enum crmd_fsa_cause cause) /* Sometimes we _must_ go into S_ELECTION */ if (controld_globals.fsa_state == S_HALT) { - crm_debug("Forcing an election from S_HALT"); + pcmk__debug("Forcing an election from S_HALT"); return I_ELECTION; } } else if (strcmp(op, CRM_OP_JOIN_OFFER) == 0) { verify_feature_set(stored_msg); - crm_debug("Raising I_JOIN_OFFER: join-%s", - pcmk__xe_get(stored_msg, PCMK__XA_JOIN_ID)); + pcmk__debug("Raising I_JOIN_OFFER: join-%s", + pcmk__xe_get(stored_msg, PCMK__XA_JOIN_ID)); return I_JOIN_OFFER; } else if (strcmp(op, CRM_OP_JOIN_ACKNAK) == 0) { - crm_debug("Raising I_JOIN_RESULT: join-%s", - pcmk__xe_get(stored_msg, PCMK__XA_JOIN_ID)); + pcmk__debug("Raising I_JOIN_RESULT: join-%s", + pcmk__xe_get(stored_msg, PCMK__XA_JOIN_ID)); return I_JOIN_RESULT; } else if (strcmp(op, CRM_OP_LRM_DELETE) == 0) { diff --git a/daemons/controld/controld_metadata.c b/daemons/controld/controld_metadata.c index 9edb6b0a203..61790a86c87 100644 --- a/daemons/controld/controld_metadata.c +++ b/daemons/controld/controld_metadata.c @@ -110,7 +110,7 @@ log_ra_ocf_version(const char *ra_key, const char *ra_ocf_version) ra_key, ra_ocf_version); } else { - crm_debug("%s supports OCF version %s", ra_key, ra_ocf_version); + pcmk__debug("%s supports OCF version %s", ra_key, ra_ocf_version); } } @@ -266,11 +266,10 @@ controld_get_rsc_metadata(lrm_state_t *lrm_state, const lrmd_rsc_info_t *rsc, free(key); } if (metadata != NULL) { - crm_debug("Retrieved metadata for %s (%s%s%s:%s) from cache", - rsc->id, rsc->standard, - ((rsc->provider == NULL)? "" : ":"), - ((rsc->provider == NULL)? "" : rsc->provider), - rsc->type); + pcmk__debug("Retrieved metadata for %s (%s%s%s:%s) from cache", + rsc->id, rsc->standard, + ((rsc->provider != NULL)? ":" : ""), + pcmk__s(rsc->provider, ""), rsc->type); return metadata; } } @@ -293,11 +292,9 @@ controld_get_rsc_metadata(lrm_state_t *lrm_state, const lrmd_rsc_info_t *rsc, * means that if the metadata action tries to contact the controller, * everything will hang until the timeout). */ - crm_debug("Retrieving metadata for %s (%s%s%s:%s) synchronously", - rsc->id, rsc->standard, - ((rsc->provider == NULL)? "" : ":"), - ((rsc->provider == NULL)? "" : rsc->provider), - rsc->type); + pcmk__debug("Retrieving metadata for %s (%s%s%s:%s) synchronously", rsc->id, + rsc->standard, ((rsc->provider != NULL)? ":" : ""), + pcmk__s(rsc->provider, ""), rsc->type); rc = lrm_state_get_metadata(lrm_state, rsc->standard, rsc->provider, rsc->type, &metadata_str, 0); if (rc != pcmk_ok) { diff --git a/daemons/controld/controld_remote_ra.c b/daemons/controld/controld_remote_ra.c index 5ae78d9e0b1..11023c04109 100644 --- a/daemons/controld/controld_remote_ra.c +++ b/daemons/controld/controld_remote_ra.c @@ -654,16 +654,16 @@ remote_lrm_op_callback(lrmd_event_data_t * op) CRM_CHECK((op != NULL) && (op->remote_nodename != NULL), return); - crm_debug("Processing '%s%s%s' event on remote connection to %s: %s " - "(%d) status=%s (%d)", - (op->op_type? op->op_type : ""), (op->op_type? " " : ""), - lrmd_event_type2str(op->type), op->remote_nodename, - crm_exit_str((crm_exit_t) op->rc), op->rc, - pcmk_exec_status_str(op->op_status), op->op_status); + pcmk__debug("Processing '%s%s%s' event on remote connection to %s: %s " + "(%d) status=%s (%d)", + pcmk__s(op->op_type, ""), ((op->op_type != NULL)? " " : ""), + lrmd_event_type2str(op->type), op->remote_nodename, + crm_exit_str((crm_exit_t) op->rc), op->rc, + pcmk_exec_status_str(op->op_status), op->op_status); lrm_state = controld_get_executor_state(op->remote_nodename, false); if (!lrm_state || !lrm_state->remote_ra_data) { - crm_debug("No state information found for remote connection event"); + pcmk__debug("No state information found for remote connection event"); return; } ra_data = lrm_state->remote_ra_data; @@ -691,7 +691,8 @@ remote_lrm_op_callback(lrmd_event_data_t * op) /* filter all EXEC events up */ if (op->type == lrmd_event_exec_complete) { if (pcmk__is_set(ra_data->status, takeover_complete)) { - crm_debug("ignoring event, this connection is taken over by another node"); + pcmk__debug("ignoring event, this connection is taken over by " + "another node"); } else { lrm_op_callback(op); } @@ -701,8 +702,8 @@ remote_lrm_op_callback(lrmd_event_data_t * op) if ((op->type == lrmd_event_disconnect) && (ra_data->cur_cmd == NULL)) { if (!pcmk__is_set(ra_data->status, remote_active)) { - crm_debug("Disconnection from Pacemaker Remote node %s complete", - lrm_state->node_name); + pcmk__debug("Disconnection from Pacemaker Remote node %s complete", + lrm_state->node_name); } else if (!remote_ra_is_in_maintenance(lrm_state)) { pcmk__err("Lost connection to Pacemaker Remote node %s", @@ -724,7 +725,7 @@ remote_lrm_op_callback(lrmd_event_data_t * op) } if (!ra_data->cur_cmd) { - crm_debug("no event to match"); + pcmk__debug("no event to match"); return; } @@ -764,7 +765,7 @@ remote_lrm_op_callback(lrmd_event_data_t * op) lrm_remote_set_flags(lrm_state, remote_active); } - crm_debug("Remote connection event matched %s action", cmd->action); + pcmk__debug("Remote connection event matched %s action", cmd->action); report_remote_ra_result(cmd); cmd_handled = TRUE; @@ -786,7 +787,7 @@ remote_lrm_op_callback(lrmd_event_data_t * op) cmd_set_flags(cmd, cmd_reported_success); } - crm_debug("Remote poke event matched %s action", cmd->action); + pcmk__debug("Remote poke event matched %s action", cmd->action); /* success, keep rescheduling if interval is present. */ if (cmd->interval_ms && !pcmk__is_set(cmd->status, cmd_cancel)) { @@ -815,7 +816,7 @@ remote_lrm_op_callback(lrmd_event_data_t * op) cmd_handled = TRUE; } else { - crm_debug("Event did not match %s action", ra_data->cur_cmd->action); + pcmk__debug("Event did not match %s action", ra_data->cur_cmd->action); } if (cmd_handled) { @@ -931,8 +932,9 @@ handle_remote_ra_exec(gpointer user_data) if (handle_remote_ra_start(lrm_state, cmd, cmd->timeout) == pcmk_rc_ok) { /* take care of this later when we get async connection result */ - crm_debug("Initiated async remote connection, %s action will complete after connect event", - cmd->action); + pcmk__debug("Initiated async remote connection, %s action will " + "complete after connect event", + cmd->action); ra_data->cur_cmd = cmd; return TRUE; } @@ -953,8 +955,9 @@ handle_remote_ra_exec(gpointer user_data) } if (rc == 0) { - crm_debug("Poked Pacemaker Remote at node %s, waiting for async response", - cmd->rsc_id); + pcmk__debug("Poked Pacemaker Remote at node %s, waiting for " + "async response", + cmd->rsc_id); ra_data->cur_cmd = cmd; cmd->monitor_timeout_id = pcmk__create_timer(cmd->timeout, monitor_timeout_cb, cmd); return TRUE; diff --git a/daemons/controld/controld_schedulerd.c b/daemons/controld/controld_schedulerd.c index f9db64ff0b9..c54f9391398 100644 --- a/daemons/controld/controld_schedulerd.c +++ b/daemons/controld/controld_schedulerd.c @@ -370,8 +370,8 @@ do_pe_invoke(long long action, fsa_pe_query = cib_conn->cmds->query(cib_conn, NULL, NULL, cib_none); - crm_debug("Query %d: Requesting the current CIB: %s", fsa_pe_query, - fsa_state2string(controld_globals.fsa_state)); + pcmk__debug("Query %d: Requesting the current CIB: %s", fsa_pe_query, + fsa_state2string(controld_globals.fsa_state)); controld_expect_sched_reply(NULL); fsa_register_cib_callback(fsa_pe_query, NULL, do_pe_invoke_callback); @@ -472,18 +472,19 @@ do_pe_invoke_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, void } else if (!AM_I_DC || !pcmk__is_set(controld_globals.fsa_input_register, R_PE_CONNECTED)) { - crm_debug("No need to invoke the scheduler anymore"); + pcmk__debug("No need to invoke the scheduler anymore"); return; } else if (controld_globals.fsa_state != S_POLICY_ENGINE) { - crm_debug("Discarding scheduler request in state: %s", - fsa_state2string(controld_globals.fsa_state)); + pcmk__debug("Discarding scheduler request in state: %s", + fsa_state2string(controld_globals.fsa_state)); return; /* this callback counts as 1 */ } else if (num_cib_op_callbacks() > 1) { - crm_debug("Re-asking for the CIB: %d other peer updates still pending", - (num_cib_op_callbacks() - 1)); + pcmk__debug("Re-asking for the CIB: %d other peer updates still " + "pending", + (num_cib_op_callbacks() - 1)); sleep(1); controld_set_fsa_action_flags(A_PE_INVOKE); controld_trigger_fsa(); @@ -518,10 +519,11 @@ do_pe_invoke_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, void } else { pcmk__assert(ref != NULL); controld_expect_sched_reply(ref); - crm_debug("Invoking the scheduler: query=%d, ref=%s, seq=%llu, " - "quorate=%s", - fsa_pe_query, controld_globals.fsa_pe_ref, - controld_globals.peer_seq, - pcmk__flag_text(controld_globals.flags, controld_has_quorum)); + pcmk__debug("Invoking the scheduler: query=%d, ref=%s, seq=%llu, " + "quorate=%s", + fsa_pe_query, controld_globals.fsa_pe_ref, + controld_globals.peer_seq, + pcmk__flag_text(controld_globals.flags, + controld_has_quorum)); } } diff --git a/daemons/controld/controld_te_actions.c b/daemons/controld/controld_te_actions.c index c2fab2feeca..84c078a444e 100644 --- a/daemons/controld/controld_te_actions.c +++ b/daemons/controld/controld_te_actions.c @@ -72,8 +72,8 @@ execute_pseudo_action(pcmk__graph_t *graph, pcmk__graph_action_t *pseudo) remote_ra_process_pseudo(pseudo->xml); } - crm_debug("Pseudo-action %d (%s) fired and confirmed", pseudo->id, - pcmk__xe_get(pseudo->xml, PCMK__XA_OPERATION_KEY)); + pcmk__debug("Pseudo-action %d (%s) fired and confirmed", pseudo->id, + pcmk__xe_get(pseudo->xml, PCMK__XA_OPERATION_KEY)); te_action_confirmed(pseudo, graph); return pcmk_rc_ok; } @@ -453,8 +453,9 @@ execute_rsc_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) trigger_graph(); } else if (pcmk__is_set(action->flags, pcmk__graph_action_confirmed)) { - crm_debug("Action %d: %s %s on %s(timeout %dms) was already confirmed.", - action->id, task, task_uuid, on_node, action->timeout); + pcmk__debug("Action %d: %s %s on %s (timeout %dms) was already " + "confirmed", + action->id, task, task_uuid, on_node, action->timeout); } else { if (action->timeout <= 0) { pcmk__err("Action %d: %s %s on %s had an invalid timeout (%dms). " @@ -704,8 +705,8 @@ notify_crmd(pcmk__graph_t *graph) const char *type = "unknown"; enum crmd_fsa_input event = I_NULL; - crm_debug("Processing transition completion in state %s", - fsa_state2string(controld_globals.fsa_state)); + pcmk__debug("Processing transition completion in state %s", + fsa_state2string(controld_globals.fsa_state)); CRM_CHECK(graph->complete, graph->complete = true); @@ -751,8 +752,8 @@ notify_crmd(pcmk__graph_t *graph) } } - crm_debug("Transition %d status: %s - %s", graph->id, type, - pcmk__s(graph->abort_reason, "unspecified reason")); + pcmk__debug("Transition %d status: %s - %s", graph->id, type, + pcmk__s(graph->abort_reason, "unspecified reason")); graph->abort_reason = NULL; graph->completion_action = pcmk__graph_done; diff --git a/daemons/controld/controld_te_callbacks.c b/daemons/controld/controld_te_callbacks.c index 0ba643ee9ff..ba342da8e83 100644 --- a/daemons/controld/controld_te_callbacks.c +++ b/daemons/controld/controld_te_callbacks.c @@ -393,9 +393,9 @@ te_update_diff(const char *event, xmlNode * msg) diff = pcmk__xe_first_child(wrapper, NULL, NULL, NULL); pcmk__xml_patchset_versions(diff, p_del, p_add); - crm_debug("Processing (%s) diff: %d.%d.%d -> %d.%d.%d (%s)", op, - p_del[0], p_del[1], p_del[2], p_add[0], p_add[1], p_add[2], - fsa_state2string(controld_globals.fsa_state)); + pcmk__debug("Processing (%s) diff: %d.%d.%d -> %d.%d.%d (%s)", op, + p_del[0], p_del[1], p_del[2], p_add[0], p_add[1], p_add[2], + fsa_state2string(controld_globals.fsa_state)); pcmk__xe_get_int(diff, PCMK_XA_FORMAT, &format); @@ -447,9 +447,9 @@ process_te_message(xmlNode * msg, xmlNode * xml_data) return; } - crm_debug("Processing transition request with ref='%s' origin='%s'", - pcmk__s(pcmk__xe_get(msg, PCMK_XA_REFERENCE), ""), - pcmk__s(pcmk__xe_get(msg, PCMK__XA_SRC), "")); + pcmk__debug("Processing transition request with ref='%s' origin='%s'", + pcmk__s(pcmk__xe_get(msg, PCMK_XA_REFERENCE), ""), + pcmk__s(pcmk__xe_get(msg, PCMK__XA_SRC), "")); xpathObj = pcmk__xpath_search(xml_data->doc, "//" PCMK__XE_LRM_RSC_OP); nmatches = pcmk__xpath_num_results(xpathObj); diff --git a/daemons/controld/controld_te_events.c b/daemons/controld/controld_te_events.c index 2de9b0373c3..e7d3b361184 100644 --- a/daemons/controld/controld_te_events.c +++ b/daemons/controld/controld_te_events.c @@ -198,8 +198,9 @@ update_failcount(const xmlNode *event, const char *event_node_uuid, int rc, if (rc == target_rc) { return FALSE; } else if (pcmk__str_eq(origin, "build_active_RAs", pcmk__str_casei)) { - crm_debug("No update for %s (rc=%d) on %s: Old failure from lrm status refresh", - id, rc, on_uname); + pcmk__debug("No update for %s (rc=%d) on %s: Old failure from lrm " + "status refresh", + id, rc, on_uname); return FALSE; } @@ -416,10 +417,10 @@ match_down_event(const char *target) free(xpath); if (match != NULL) { - crm_debug("Shutdown action %d (%s) found for node %s", match->id, - pcmk__xe_get(match->xml, PCMK__XA_OPERATION_KEY), target); + pcmk__debug("Shutdown action %d (%s) found for node %s", match->id, + pcmk__xe_get(match->xml, PCMK__XA_OPERATION_KEY), target); } else { - crm_debug("No reason to expect node %s to be down", target); + pcmk__debug("No reason to expect node %s to be down", target); } return match; } @@ -477,8 +478,9 @@ process_graph_event(xmlNode *event, const char *event_node) if (transition_num == -1) { // E.g. crm_resource --fail if (record_outside_event(action_num) != pcmk_rc_ok) { - crm_debug("Outside event with transition key '%s' has already been " - "processed", magic); + pcmk__debug("Outside event with transition key '%s' has already " + "been processed", + magic); goto bail; } desc = "initiated outside of the cluster"; diff --git a/daemons/controld/controld_te_utils.c b/daemons/controld/controld_te_utils.c index 0fc6e103201..8b4e0d33b2b 100644 --- a/daemons/controld/controld_te_utils.c +++ b/daemons/controld/controld_te_utils.c @@ -40,7 +40,7 @@ static gboolean te_graph_trigger(gpointer user_data) { if (controld_globals.transition_graph == NULL) { - crm_debug("Nothing to do"); + pcmk__debug("Nothing to do"); return TRUE; } @@ -86,8 +86,8 @@ te_graph_trigger(gpointer user_data) } } - crm_debug("Transition %d is now complete", - controld_globals.transition_graph->id); + pcmk__debug("Transition %d is now complete", + controld_globals.transition_graph->id); controld_globals.transition_graph->complete = true; notify_crmd(controld_globals.transition_graph); @@ -322,18 +322,21 @@ update_abort_priority(pcmk__graph_t *graph, int priority, } if (graph->abort_priority < priority) { - crm_debug("Abort priority upgraded from %d to %d", graph->abort_priority, priority); + pcmk__debug("Abort priority upgraded from %d to %d", + graph->abort_priority, priority); graph->abort_priority = priority; if (graph->abort_reason != NULL) { - crm_debug("'%s' abort superseded by %s", graph->abort_reason, abort_reason); + pcmk__debug("'%s' abort superseded by %s", graph->abort_reason, + abort_reason); } graph->abort_reason = abort_reason; change = TRUE; } if (graph->completion_action < action) { - crm_debug("Abort action %s superseded by %s: %s", - abort2text(graph->completion_action), abort2text(action), abort_reason); + pcmk__debug("Abort action %s superseded by %s: %s", + abort2text(graph->completion_action), abort2text(action), + abort_reason); graph->completion_action = action; change = TRUE; } diff --git a/daemons/controld/controld_throttle.c b/daemons/controld/controld_throttle.c index d4dc1855275..f4a766a283a 100644 --- a/daemons/controld/controld_throttle.c +++ b/daemons/controld/controld_throttle.c @@ -89,7 +89,7 @@ throttle_check_thresholds(float load, const char *desc, return throttle_med; } else if (load > thresholds[0]) { - crm_debug("Noticeable %s detected: %f", desc, load); + pcmk__debug("Noticeable %s detected: %f", desc, load); return throttle_low; } @@ -171,7 +171,7 @@ throttle_mode(void) if (cpu_load > mode) { mode = cpu_load; } - crm_debug("Current load is %f across %u core(s)", load, cores); + pcmk__debug("Current load is %f across %u core(s)", load, cores); } return mode; @@ -401,7 +401,8 @@ throttle_update(xmlNode *xml) r->max = max; r->mode = (enum throttle_state_e) mode; - crm_debug("Node %s has %s load and supports at most %d jobs; new job limit %d", - from, load2str((enum throttle_state_e) mode), max, - throttle_get_job_limit(from)); + pcmk__debug("Node %s has %s load and supports at most %d jobs; new job " + "limit %d", + from, load2str((enum throttle_state_e) mode), max, + throttle_get_job_limit(from)); } diff --git a/daemons/controld/controld_timers.c b/daemons/controld/controld_timers.c index c01d9cc19d7..2a3f32c40e5 100644 --- a/daemons/controld/controld_timers.c +++ b/daemons/controld/controld_timers.c @@ -120,13 +120,14 @@ controld_start_timer(fsa_timer_t *timer) if (timer->source_id == 0 && timer->period_ms > 0) { timer->source_id = pcmk__create_timer(timer->period_ms, timer->callback, timer); pcmk__assert(timer->source_id != 0); - crm_debug("Started %s (inject %s if pops after %ums, source=%d)", - get_timer_desc(timer), fsa_input2string(timer->fsa_input), - timer->period_ms, timer->source_id); + pcmk__debug("Started %s (inject %s if pops after %ums, source=%d)", + get_timer_desc(timer), fsa_input2string(timer->fsa_input), + timer->period_ms, timer->source_id); } else { - crm_debug("%s already running (inject %s if pops after %ums, source=%d)", - get_timer_desc(timer), fsa_input2string(timer->fsa_input), - timer->period_ms, timer->source_id); + pcmk__debug("%s already running (inject %s if pops after %ums, " + "source=%d)", + get_timer_desc(timer), fsa_input2string(timer->fsa_input), + timer->period_ms, timer->source_id); } } @@ -209,15 +210,15 @@ crm_timer_popped(gpointer data) } else if ((timer == recheck_timer) && (controld_globals.fsa_state != S_IDLE)) { - crm_debug("Discarding %s event in state: %s", - fsa_input2string(timer->fsa_input), - fsa_state2string(controld_globals.fsa_state)); + pcmk__debug("Discarding %s event in state: %s", + fsa_input2string(timer->fsa_input), + fsa_state2string(controld_globals.fsa_state)); } else if ((timer == finalization_timer) && (controld_globals.fsa_state != S_FINALIZE_JOIN)) { - crm_debug("Discarding %s event in state: %s", - fsa_input2string(timer->fsa_input), - fsa_state2string(controld_globals.fsa_state)); + pcmk__debug("Discarding %s event in state: %s", + fsa_input2string(timer->fsa_input), + fsa_state2string(controld_globals.fsa_state)); } else if (timer->fsa_input != I_NULL) { register_fsa_input(C_TIMER_POPPED, timer->fsa_input, NULL); @@ -321,8 +322,9 @@ controld_configure_fsa_timers(GHashTable *options) // Shutdown escalation timer value = g_hash_table_lookup(options, PCMK_OPT_SHUTDOWN_ESCALATION); pcmk_parse_interval_spec(value, &(shutdown_escalation_timer->period_ms)); - crm_debug("Shutdown escalation occurs if DC has not responded to request " - "in %ums", shutdown_escalation_timer->period_ms); + pcmk__debug("Shutdown escalation occurs if DC has not responded to request " + "in %ums", + shutdown_escalation_timer->period_ms); // Transition timer value = g_hash_table_lookup(options, PCMK_OPT_TRANSITION_DELAY); @@ -331,7 +333,8 @@ controld_configure_fsa_timers(GHashTable *options) // Recheck interval value = g_hash_table_lookup(options, PCMK_OPT_CLUSTER_RECHECK_INTERVAL); pcmk_parse_interval_spec(value, &recheck_interval_ms); - crm_debug("Re-run scheduler after %dms of inactivity", recheck_interval_ms); + pcmk__debug("Re-run scheduler after %dms of inactivity", + recheck_interval_ms); } void diff --git a/daemons/controld/controld_transition.c b/daemons/controld/controld_transition.c index 6797898de0e..231423859cc 100644 --- a/daemons/controld/controld_transition.c +++ b/daemons/controld/controld_transition.c @@ -55,7 +55,7 @@ do_te_control(long long action, } else if (pcmk__is_set(controld_globals.fsa_input_register, R_TE_CONNECTED)) { - crm_debug("The transitioner is already active"); + pcmk__debug("The transitioner is already active"); return; } else if ((action & A_TE_START) && cur_state == S_STOPPING) { @@ -85,7 +85,7 @@ do_te_control(long long action, pcmk__free_graph(controld_globals.transition_graph); /* create a blank one */ - crm_debug("Transitioner is now active"); + pcmk__debug("Transitioner is now active"); controld_globals.transition_graph = create_blank_graph(); controld_set_fsa_input_flags(R_TE_CONNECTED); } @@ -109,8 +109,8 @@ do_te_invoke(long long action, } if (action & A_TE_CANCEL) { - crm_debug("Cancelling the transition: %sactive", - controld_globals.transition_graph->complete? "in" : ""); + pcmk__debug("Cancelling the transition: %sactive", + (controld_globals.transition_graph->complete? "in" : "")); abort_transition(PCMK_SCORE_INFINITY, pcmk__graph_restart, "Peer Cancelled", NULL); if (!controld_globals.transition_graph->complete) { @@ -155,7 +155,7 @@ do_te_invoke(long long action, } if (controld_is_started_transition_timer()) { - crm_debug("The transitioner wait for a transition timer"); + pcmk__debug("The transitioner wait for a transition timer"); return; } diff --git a/daemons/execd/execd_alerts.c b/daemons/execd/execd_alerts.c index 7182c8583eb..2427ed2a473 100644 --- a/daemons/execd/execd_alerts.c +++ b/daemons/execd/execd_alerts.c @@ -91,8 +91,8 @@ alert_complete(svc_action_t *action) action->pid, action->rc, cb_data->client_id); } else { - crm_debug("Alert [%d] completed " QB_XS " client=%s", - action->pid, cb_data->client_id); + pcmk__debug("Alert [%d] completed " QB_XS " client=%s", action->pid, + cb_data->client_id); } free(cb_data->client_id); diff --git a/daemons/execd/execd_commands.c b/daemons/execd/execd_commands.c index 0e51b7684ab..d49c680b9ad 100644 --- a/daemons/execd/execd_commands.c +++ b/daemons/execd/execd_commands.c @@ -333,9 +333,9 @@ create_lrmd_cmd(xmlNode *msg, pcmk__client_t *client) if (pcmk__str_eq(g_hash_table_lookup(cmd->params, "CRM_meta_on_fail"), PCMK_VALUE_BLOCK, pcmk__str_casei)) { - crm_debug("Setting flag to leave pid group on timeout and " - "only kill action pid for " PCMK__OP_FMT, - cmd->rsc_id, cmd->action, cmd->interval_ms); + pcmk__debug("Setting flag to leave pid group on timeout and only kill " + "action pid for " PCMK__OP_FMT, + cmd->rsc_id, cmd->action, cmd->interval_ms); cmd->service_flags = pcmk__set_flags_as(__func__, __LINE__, LOG_TRACE, "Action", cmd->action, 0, @@ -907,11 +907,11 @@ action_complete(svc_action_t * action) int time_sum = time_diff_ms(NULL, &(cmd->t_first_run)); int timeout_left = cmd->timeout_orig - time_sum; - crm_debug("%s systemd %s is now complete (elapsed=%dms, " - "remaining=%dms): %s (%d)", - cmd->rsc_id, cmd->real_action, time_sum, timeout_left, - crm_exit_str(cmd->result.exit_status), - cmd->result.exit_status); + pcmk__debug("%s systemd %s is now complete (elapsed=%dms, " + "remaining=%dms): %s (%d)", + cmd->rsc_id, cmd->real_action, time_sum, timeout_left, + crm_exit_str(cmd->result.exit_status), + cmd->result.exit_status); cmd_original_times(cmd); // Monitors may return "not running", but start/stop shouldn't @@ -971,8 +971,10 @@ action_complete(svc_action_t * action) cmd->timeout = timeout_left; if (pcmk__result_ok(&(cmd->result))) { - crm_debug("%s %s may still be in progress: re-scheduling (elapsed=%dms, remaining=%dms, start_delay=%dms)", - cmd->rsc_id, cmd->real_action, time_sum, timeout_left, delay); + pcmk__debug("%s %s may still be in progress: re-scheduling " + "(elapsed=%dms, remaining=%dms, start_delay=%dms)", + cmd->rsc_id, cmd->real_action, time_sum, timeout_left, + delay); } else if (cmd->result.execution_status == PCMK_EXEC_PENDING) { pcmk__info("%s %s is still in progress: re-scheduling " @@ -1987,8 +1989,8 @@ process_lrmd_message(pcmk__client_t *client, uint32_t id, xmlNode *request) pcmk__client_name(client)); } - crm_debug("Processed %s operation from %s: rc=%d, reply=%d, notify=%d", - op, client->id, rc, do_reply, do_notify); + pcmk__debug("Processed %s operation from %s: rc=%d, reply=%d, notify=%d", + op, client->id, rc, do_reply, do_notify); if (do_reply) { int send_rc = pcmk_rc_ok; diff --git a/daemons/execd/pacemaker-execd.c b/daemons/execd/pacemaker-execd.c index e7c29851e11..6f8e9d75fa5 100644 --- a/daemons/execd/pacemaker-execd.c +++ b/daemons/execd/pacemaker-execd.c @@ -369,8 +369,8 @@ handle_shutdown_ack(void) return; } #endif - crm_debug("Ignoring unexpected shutdown acknowledgment " - "from IPC proxy provider"); + pcmk__debug("Ignoring unexpected shutdown acknowledgment from IPC proxy " + "provider"); } /*! @@ -388,7 +388,8 @@ handle_shutdown_nack(void) return; } #endif - crm_debug("Ignoring unexpected shutdown rejection from IPC proxy provider"); + pcmk__debug("Ignoring unexpected shutdown rejection from IPC proxy " + "provider"); } static GOptionEntry entries[] = { diff --git a/daemons/execd/remoted_proxy.c b/daemons/execd/remoted_proxy.c index 719b9b9baf5..8db626f187f 100644 --- a/daemons/execd/remoted_proxy.c +++ b/daemons/execd/remoted_proxy.c @@ -110,9 +110,9 @@ ipc_proxy_accept(qb_ipcs_connection_t * c, uid_t uid, gid_t gid, const char *ipc pcmk__xe_set(msg, PCMK__XA_LRMD_IPC_SESSION, client->id); lrmd_server_send_notify(ipc_proxy, msg); pcmk__xml_free(msg); - crm_debug("Accepted IPC proxy connection (session ID %s) " - "from uid %d gid %d on channel %s", - client->id, uid, gid, ipc_channel); + pcmk__debug("Accepted IPC proxy connection (session ID %s) from uid %d " + "gid %d on channel %s", + client->id, uid, gid, ipc_channel); return 0; } diff --git a/daemons/execd/remoted_tls.c b/daemons/execd/remoted_tls.c index 3c0e6d7cf0c..fe8f796a0ba 100644 --- a/daemons/execd/remoted_tls.c +++ b/daemons/execd/remoted_tls.c @@ -359,8 +359,8 @@ lrmd_init_remote_tls_server(void) CRM_CHECK(ssock == -1, return ssock); - crm_debug("Starting TLS listener on %s port %d", - (bind_name? bind_name : "all addresses on"), port); + pcmk__debug("Starting TLS listener on %s port %d", + pcmk__s(bind_name, "all addresses on"), port); rc = pcmk__init_tls(&tls, true, use_cert ? GNUTLS_CRD_CERTIFICATE : GNUTLS_CRD_PSK); if (rc != pcmk_rc_ok) { @@ -419,8 +419,8 @@ lrmd_init_remote_tls_server(void) if (ssock >= 0) { mainloop_add_fd("pacemaker-remote-server", G_PRIORITY_DEFAULT, ssock, NULL, &remote_listen_fd_callbacks); - crm_debug("Started TLS listener on %s port %d", - (bind_name? bind_name : "all addresses on"), port); + pcmk__debug("Started TLS listener on %s port %d", + pcmk__s(bind_name, "all addresses on"), port); } freeaddrinfo(res); return ssock; diff --git a/daemons/fenced/cts-fence-helper.c b/daemons/fenced/cts-fence-helper.c index 5675137273a..0ed83817455 100644 --- a/daemons/fenced/cts-fence-helper.c +++ b/daemons/fenced/cts-fence-helper.c @@ -112,7 +112,7 @@ dispatch_helper(int timeout) { int rc; - crm_debug("Looking for notification"); + pcmk__debug("Looking for notification"); pollfd.events = POLLIN; while (true) { rc = poll(&pollfd, 1, timeout); /* wait 10 minutes, -1 forever */ @@ -197,7 +197,7 @@ passive_test(void) if (verbose) { \ pcmk__info("SUCCESS - %s: %d", str, rc); \ } else { \ - crm_debug("SUCCESS - %s: %d", str, rc); \ + pcmk__debug("SUCCESS - %s: %d", str, rc); \ } \ } \ }\ @@ -361,49 +361,49 @@ standard_dev_test(void) "some-host=pcmk-7 true_1_node1=3,4"); rc = st->cmds->register_device(st, st_opts, "test-id", "stonith-ng", "fence_xvm", params); - crm_debug("Register: %d", rc); + pcmk__debug("Register: %d", rc); rc = st->cmds->list(st, st_opts, "test-id", &tmp, 10); - crm_debug("List: %d output: %s", rc, tmp ? tmp : ""); + pcmk__debug("List: %d output: %s", rc, tmp ? tmp : ""); rc = st->cmds->monitor(st, st_opts, "test-id", 10); - crm_debug("Monitor: %d", rc); + pcmk__debug("Monitor: %d", rc); rc = st->cmds->status(st, st_opts, "test-id", "false_1_node2", 10); - crm_debug("Status false_1_node2: %d", rc); + pcmk__debug("Status false_1_node2: %d", rc); rc = st->cmds->status(st, st_opts, "test-id", "false_1_node1", 10); - crm_debug("Status false_1_node1: %d", rc); + pcmk__debug("Status false_1_node1: %d", rc); rc = st->cmds->fence(st, st_opts, "unknown-host", PCMK_ACTION_OFF, 60, 0); - crm_debug("Fence unknown-host: %d", rc); + pcmk__debug("Fence unknown-host: %d", rc); rc = st->cmds->status(st, st_opts, "test-id", "false_1_node1", 10); - crm_debug("Status false_1_node1: %d", rc); + pcmk__debug("Status false_1_node1: %d", rc); rc = st->cmds->fence(st, st_opts, "false_1_node1", PCMK_ACTION_OFF, 60, 0); - crm_debug("Fence false_1_node1: %d", rc); + pcmk__debug("Fence false_1_node1: %d", rc); rc = st->cmds->status(st, st_opts, "test-id", "false_1_node1", 10); - crm_debug("Status false_1_node1: %d", rc); + pcmk__debug("Status false_1_node1: %d", rc); rc = st->cmds->fence(st, st_opts, "false_1_node1", PCMK_ACTION_ON, 10, 0); - crm_debug("Unfence false_1_node1: %d", rc); + pcmk__debug("Unfence false_1_node1: %d", rc); rc = st->cmds->status(st, st_opts, "test-id", "false_1_node1", 10); - crm_debug("Status false_1_node1: %d", rc); + pcmk__debug("Status false_1_node1: %d", rc); rc = st->cmds->fence(st, st_opts, "some-host", PCMK_ACTION_OFF, 10, 0); - crm_debug("Fence alias: %d", rc); + pcmk__debug("Fence alias: %d", rc); rc = st->cmds->status(st, st_opts, "test-id", "some-host", 10); - crm_debug("Status alias: %d", rc); + pcmk__debug("Status alias: %d", rc); rc = st->cmds->fence(st, st_opts, "false_1_node1", PCMK_ACTION_ON, 10, 0); - crm_debug("Unfence false_1_node1: %d", rc); + pcmk__debug("Unfence false_1_node1: %d", rc); rc = st->cmds->remove_device(st, st_opts, "test-id"); - crm_debug("Remove test-id: %d", rc); + pcmk__debug("Remove test-id: %d", rc); stonith_key_value_freeall(params, 1, 1); } @@ -608,7 +608,7 @@ test_shutdown(int nsig) rc = st->cmds->disconnect(st); pcmk__info("Disconnect: %d", rc); - crm_debug("Destroy"); + pcmk__debug("Destroy"); stonith_api_delete(st); } diff --git a/daemons/fenced/fenced_commands.c b/daemons/fenced/fenced_commands.c index f9f769665eb..9e14312605b 100644 --- a/daemons/fenced/fenced_commands.c +++ b/daemons/fenced/fenced_commands.c @@ -176,8 +176,8 @@ get_action_delay_base(const stonith_device_t *device, const char *action, if (mapval != val && strncasecmp(target, val, (size_t)(mapval - val)) == 0) { value = mapval + 1; - crm_debug("pcmk_delay_base mapped to %s for %s", - value, target); + pcmk__debug("pcmk_delay_base mapped to %s for %s", value, + target); break; } } @@ -451,10 +451,10 @@ fork_cb(int pid, void *user_data) cmd->activating_on?cmd->activating_on:cmd->active_on; pcmk__assert(device != NULL); - crm_debug("Operation '%s' [%d]%s%s using %s now running with %ds timeout", - cmd->action, pid, - ((cmd->target == NULL)? "" : " targeting "), - pcmk__s(cmd->target, ""), device->id, cmd->timeout); + pcmk__debug("Operation '%s' [%d]%s%s using %s now running with %ds timeout", + cmd->action, pid, + ((cmd->target != NULL)? " targeting " : ""), + pcmk__s(cmd->target, ""), device->id, cmd->timeout); cmd->active_on = device; cmd->activating_on = NULL; } @@ -677,18 +677,19 @@ schedule_stonith_command(async_command_t * cmd, stonith_device_t * device) cmd->timeout = get_action_timeout(device, cmd->action, cmd->default_timeout); if (cmd->remote_op_id) { - crm_debug("Scheduling '%s' action%s%s using %s for remote peer %s " - "with op id %.8s and timeout %ds", - cmd->action, - (cmd->target == NULL)? "" : " targeting ", - pcmk__s(cmd->target, ""), - device->id, cmd->origin, cmd->remote_op_id, cmd->timeout); + pcmk__debug("Scheduling '%s' action%s%s using %s for remote peer %s " + "with op id %.8s and timeout %ds", + cmd->action, + ((cmd->target != NULL)? " targeting " : ""), + pcmk__s(cmd->target, ""), + device->id, cmd->origin, cmd->remote_op_id, cmd->timeout); } else { - crm_debug("Scheduling '%s' action%s%s using %s for %s with timeout %ds", - cmd->action, - (cmd->target == NULL)? "" : " targeting ", - pcmk__s(cmd->target, ""), - device->id, cmd->client, cmd->timeout); + pcmk__debug("Scheduling '%s' action%s%s using %s for %s with timeout " + "%ds", + cmd->action, + ((cmd->target != NULL)? " targeting " : ""), + pcmk__s(cmd->target, ""), + device->id, cmd->client, cmd->timeout); } device->pending_ops = g_list_append(device->pending_ops, cmd); @@ -833,7 +834,7 @@ build_port_aliases(const char *hostmap, GList ** targets) } value[k] = '\0'; - crm_debug("Adding alias '%s'='%s'", name, value); + pcmk__debug("Adding alias '%s'='%s'", name, value); g_hash_table_replace(aliases, name, value); if (targets) { *targets = g_list_append(*targets, pcmk__str_copy(value)); @@ -843,7 +844,8 @@ build_port_aliases(const char *hostmap, GList ** targets) added++; } else if (lpc > last) { - crm_debug("Parse error at offset %d near '%s'", lpc - last, hostmap + last); + pcmk__debug("Parse error at offset %d near '%s'", + (lpc - last), (hostmap + last)); } last = lpc + 1; @@ -1393,7 +1395,8 @@ stonith_device_register(xmlNode *dev, gboolean from_cib) break; } - crm_debug("Skip registration of watchdog fence device on node not in host-list."); + pcmk__debug("Skip registration of watchdog fence device on node " + "not in host-list."); /* cleanup and fall through to more cleanup and return */ device->targets = NULL; stonith_device_remove(device->id, from_cib); @@ -1405,8 +1408,8 @@ stonith_device_register(xmlNode *dev, gboolean from_cib) dup = device_has_duplicate(device); if (dup) { ndevices = g_hash_table_size(device_list); - crm_debug("Device '%s' already in device list (%d active device%s)", - device->id, ndevices, pcmk__plural_s(ndevices)); + pcmk__debug("Device '%s' already in device list (%d active device%s)", + device->id, ndevices, pcmk__plural_s(ndevices)); free_device(device); device = dup; dup = g_hash_table_lookup(device_list, device->id); @@ -2004,10 +2007,11 @@ search_devices_record_result(struct device_search_s *search, const char *device, guint ndevices = g_list_length(search->capable); - crm_debug("Search found %d device%s that can perform '%s' targeting %s", - ndevices, pcmk__plural_s(ndevices), - (search->action? search->action : "unknown action"), - (search->host? search->host : "any node")); + pcmk__debug("Search found %d device%s that can perform '%s' targeting " + "%s", + ndevices, pcmk__plural_s(ndevices), + pcmk__s(search->action, "unknown action"), + pcmk__s(search->host, "any node")); search->callback(search->capable, search->user_data); free(search->host); @@ -2260,10 +2264,11 @@ get_capable_devices(const char *host, const char *action, int timeout, */ search->replies_needed = ndevices; - crm_debug("Searching %d device%s to see which can execute '%s' targeting %s", - ndevices, pcmk__plural_s(ndevices), - (search->action? search->action : "unknown action"), - (search->host? search->host : "any node")); + pcmk__debug("Searching %d device%s to see which can execute '%s' targeting " + "%s", + ndevices, pcmk__plural_s(ndevices), + pcmk__s(search->action, "unknown action"), + pcmk__s(search->host, "any node")); g_hash_table_foreach(device_list, search_devices, search); } @@ -2497,12 +2502,12 @@ stonith_query_capable_device_cb(GList * devices, void *user_data) pcmk__xe_set_int(list, PCMK__XA_ST_AVAILABLE_DEVICES, available_devices); if (query->target) { - crm_debug("Found %d matching device%s for target '%s'", - available_devices, pcmk__plural_s(available_devices), - query->target); + pcmk__debug("Found %d matching device%s for target '%s'", + available_devices, pcmk__plural_s(available_devices), + query->target); } else { - crm_debug("%d device%s installed", - available_devices, pcmk__plural_s(available_devices)); + pcmk__debug("%d device%s installed", available_devices, + pcmk__plural_s(available_devices)); } crm_log_xml_trace(list, "query-result"); @@ -3110,14 +3115,14 @@ remove_relay_op(xmlNode * request) } } } - crm_debug("Deleting relay op %s ('%s'%s%s for %s), " - "replaced by op %s ('%s'%s%s for %s)", - relay_op->id, relay_op->action, - (relay_op->target == NULL)? "" : " targeting ", - pcmk__s(relay_op->target, ""), - relay_op->client_name, op_id, relay_op->action, - (target == NULL)? "" : " targeting ", pcmk__s(target, ""), - client_name); + pcmk__debug("Deleting relay op %s ('%s'%s%s for %s), replaced by " + "op %s ('%s'%s%s for %s)", + relay_op->id, relay_op->action, + ((relay_op->target != NULL)? " targeting " : ""), + pcmk__s(relay_op->target, ""), + relay_op->client_name, op_id, relay_op->action, + ((target != NULL)? " targeting " : ""), + pcmk__s(target, ""), client_name); g_hash_table_remove(stonith_remote_op_list, relay_op_id); } @@ -3251,15 +3256,15 @@ handle_notify_request(pcmk__request_t *request) pcmk__assert(request->ipc_client != NULL); flag_name = pcmk__xe_get(request->xml, PCMK__XA_ST_NOTIFY_ACTIVATE); if (flag_name != NULL) { - crm_debug("Enabling %s callbacks for client %s", - flag_name, pcmk__request_origin(request)); + pcmk__debug("Enabling %s callbacks for client %s", flag_name, + pcmk__request_origin(request)); pcmk__set_client_flags(request->ipc_client, get_stonith_flag(flag_name)); } flag_name = pcmk__xe_get(request->xml, PCMK__XA_ST_NOTIFY_DEACTIVATE); if (flag_name != NULL) { - crm_debug("Disabling %s callbacks for client %s", - flag_name, pcmk__request_origin(request)); + pcmk__debug("Disabling %s callbacks for client %s", flag_name, + pcmk__request_origin(request)); pcmk__clear_client_flags(request->ipc_client, get_stonith_flag(flag_name)); } @@ -3585,13 +3590,13 @@ handle_request(pcmk__request_t *request) } reason = request->result.exit_reason; - crm_debug("Processed %s request from %s %s: %s%s%s%s", - request->op, pcmk__request_origin_type(request), - pcmk__request_origin(request), - pcmk_exec_status_str(request->result.execution_status), - (reason == NULL)? "" : " (", - (reason == NULL)? "" : reason, - (reason == NULL)? "" : ")"); + pcmk__debug("Processed %s request from %s %s: %s%s%s%s", + request->op, pcmk__request_origin_type(request), + pcmk__request_origin(request), + pcmk_exec_status_str(request->result.execution_status), + ((reason != NULL)? " (" : ""), + pcmk__s(reason, ""), + ((reason != NULL)? ")" : "")); } static void @@ -3615,9 +3620,9 @@ handle_reply(pcmk__client_t *client, xmlNode *request, const char *remote_peer) free(op); return; } - crm_debug("Processed %s reply from %s %s", - op, ((client == NULL)? "peer" : "client"), - ((client == NULL)? remote_peer : pcmk__client_name(client))); + pcmk__debug("Processed %s reply from %s %s", op, + ((client != NULL)? "client" : "peer"), + ((client != NULL)? pcmk__client_name(client) : remote_peer)); free(op); } @@ -3652,12 +3657,12 @@ stonith_command(pcmk__client_t *client, uint32_t id, uint32_t flags, pcmk__warn("Couldn't parse options from message: %s", pcmk_rc_str(rc)); } - crm_debug("Processing %ssynchronous %s %s %u from %s %s", - pcmk__is_set(call_options, st_opt_sync_call)? "" : "a", - pcmk__xe_get(message, PCMK__XA_ST_OP), - (is_reply? "reply" : "request"), id, - ((client == NULL)? "peer" : "client"), - ((client == NULL)? remote_peer : pcmk__client_name(client))); + pcmk__debug("Processing %ssynchronous %s %s %u from %s %s", + (pcmk__is_set(call_options, st_opt_sync_call)? "" : "a"), + pcmk__xe_get(message, PCMK__XA_ST_OP), + (is_reply? "reply" : "request"), id, + ((client != NULL)? "client" : "peer"), + ((client != NULL)? pcmk__client_name(client) : remote_peer)); if (pcmk__is_set(call_options, st_opt_sync_call)) { pcmk__assert((client == NULL) || (client->request_id == id)); diff --git a/daemons/fenced/fenced_history.c b/daemons/fenced/fenced_history.c index 07a836a3fab..3e1b9ccef58 100644 --- a/daemons/fenced/fenced_history.c +++ b/daemons/fenced/fenced_history.c @@ -336,11 +336,11 @@ stonith_local_history_diff_and_merge(GHashTable *remote_history, if (stonith__op_state_pending(op->state) && !stonith__op_state_pending(remote_op->state)) { - crm_debug("Updating outdated pending operation %.8s " - "(state=%s) according to the one (state=%s) from " - "remote peer history", - op->id, stonith_op_state_str(op->state), - stonith_op_state_str(remote_op->state)); + pcmk__debug("Updating outdated pending operation " + "%.8s (state=%s) according to the one " + "(state=%s) from remote peer history", + op->id, stonith_op_state_str(op->state), + stonith_op_state_str(remote_op->state)); g_hash_table_steal(remote_history, op->id); op->id = remote_op->id; @@ -353,11 +353,12 @@ stonith_local_history_diff_and_merge(GHashTable *remote_history, } else if (!stonith__op_state_pending(op->state) && stonith__op_state_pending(remote_op->state)) { - crm_debug("Broadcasting operation %.8s (state=%s) to " - "update the outdated pending one " - "(state=%s) in remote peer history", - op->id, stonith_op_state_str(op->state), - stonith_op_state_str(remote_op->state)); + pcmk__debug("Broadcasting operation %.8s " + "(state=%s) to update the outdated " + "pending one state=%s) in remote peer " + "history", + op->id, stonith_op_state_str(op->state), + stonith_op_state_str(remote_op->state)); g_hash_table_remove(remote_history, op->id); diff --git a/daemons/fenced/fenced_remote.c b/daemons/fenced/fenced_remote.c index 036f448ed8e..facc2533798 100644 --- a/daemons/fenced/fenced_remote.c +++ b/daemons/fenced/fenced_remote.c @@ -498,11 +498,11 @@ finalize_op_duplicates(remote_fencing_op_t *op, xmlNode *data) if (other->state == st_duplicate) { other->state = op->state; - crm_debug("Performing duplicate notification for %s@%s: %s " - QB_XS " id=%.8s", - other->client_name, other->originator, - pcmk_exec_status_str(op->result.execution_status), - other->id); + pcmk__debug("Performing duplicate notification for %s@%s: %s " + QB_XS " id=%.8s", + other->client_name, other->originator, + pcmk_exec_status_str(op->result.execution_status), + other->id); pcmk__copy_result(&op->result, &other->result); finalize_op(other, data, true); @@ -707,9 +707,9 @@ remote_op_timeout_one(gpointer userdata) static void finalize_timed_out_op(remote_fencing_op_t *op, const char *reason) { - crm_debug("Action '%s' targeting %s for client %s timed out " - QB_XS " id=%.8s", - op->action, op->target, op->client_name, op->id); + pcmk__debug("Action '%s' targeting %s for client %s timed out " + QB_XS " id=%.8s", + op->action, op->target, op->client_name, op->id); if (op->phase == st_phase_on) { /* A remapped reboot operation timed out in the "on" phase, but the @@ -741,9 +741,9 @@ remote_op_timeout(gpointer userdata) op->op_timer_total = 0; if (op->state == st_done) { - crm_debug("Action '%s' targeting %s for client %s already completed " - QB_XS " id=%.8s", - op->action, op->target, op->client_name, op->id); + pcmk__debug("Action '%s' targeting %s for client %s already completed " + QB_XS " id=%.8s", + op->action, op->target, op->client_name, op->id); } else { finalize_timed_out_op(userdata, "Fencing did not complete within a " "total timeout based on the " @@ -761,19 +761,19 @@ remote_op_query_timeout(gpointer data) op->query_timer = 0; if (op->state == st_done) { - crm_debug("Operation %.8s targeting %s already completed", - op->id, op->target); + pcmk__debug("Operation %.8s targeting %s already completed", op->id, + op->target); } else if (op->state == st_exec) { - crm_debug("Operation %.8s targeting %s already in progress", - op->id, op->target); + pcmk__debug("Operation %.8s targeting %s already in progress", op->id, + op->target); } else if (op->query_results) { // Query succeeded, so attempt the actual fencing - crm_debug("Query %.8s targeting %s complete (state=%s)", - op->id, op->target, stonith_op_state_str(op->state)); + pcmk__debug("Query %.8s targeting %s complete (state=%s)", op->id, + op->target, stonith_op_state_str(op->state)); request_peer_fencing(op, NULL); } else { - crm_debug("Query %.8s targeting %s timed out (state=%s)", - op->id, op->target, stonith_op_state_str(op->state)); + pcmk__debug("Query %.8s targeting %s timed out (state=%s)", op->id, + op->target, stonith_op_state_str(op->state)); finalize_timed_out_op(op, "No capable peers replied to device query " "within timeout"); } @@ -1178,8 +1178,8 @@ create_remote_stonith_op(const char *client, xmlNode *request, gboolean peer) op = g_hash_table_lookup(stonith_remote_op_list, op_id); if (op) { - crm_debug("Reusing existing remote fencing op %.8s for %s", - op_id, ((client == NULL)? "unknown client" : client)); + pcmk__debug("Reusing existing remote fencing op %.8s for %s", op_id, + pcmk__s(client, "unknown client")); return op; } } @@ -1853,8 +1853,9 @@ check_watchdog_fencing_and_wait(remote_fencing_op_t * op) op); return TRUE; } else { - crm_debug("Skipping fallback to watchdog-fencing as %s is " - "not in host-list", op->target); + pcmk__debug("Skipping fallback to watchdog-fencing as %s is not in " + "host-list", + op->target); } return FALSE; } @@ -2373,8 +2374,8 @@ process_remote_stonith_query(xmlNode *msg) op = g_hash_table_lookup(stonith_remote_op_list, id); if (op == NULL) { - crm_debug("Received query reply for unknown or expired operation %s", - id); + pcmk__debug("Received query reply for unknown or expired operation %s", + id); return -EOPNOTSUPP; } diff --git a/daemons/fenced/fenced_scheduler.c b/daemons/fenced/fenced_scheduler.c index 053aa2ad399..c2f8bdbef0a 100644 --- a/daemons/fenced/fenced_scheduler.c +++ b/daemons/fenced/fenced_scheduler.c @@ -210,7 +210,7 @@ register_if_fencing_device(gpointer data, gpointer user_data) } } - crm_debug("Reloading configuration of fencing device %s", rsc->id); + pcmk__debug("Reloading configuration of fencing device %s", rsc->id); agent = pcmk__xe_get(rsc->priv->xml, PCMK_XA_TYPE); diff --git a/daemons/fenced/pacemaker-fenced.c b/daemons/fenced/pacemaker-fenced.c index ce9bd9e3b95..cb2d918fff0 100644 --- a/daemons/fenced/pacemaker-fenced.c +++ b/daemons/fenced/pacemaker-fenced.c @@ -475,8 +475,8 @@ st_peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, pcmk__xe_set(query, PCMK__XA_T, PCMK__VALUE_STONITH_NG); pcmk__xe_set(query, PCMK__XA_ST_OP, STONITH_OP_POKE); - crm_debug("Broadcasting our uname because of node %" PRIu32, - node->cluster_layer_id); + pcmk__debug("Broadcasting our uname because of node %" PRIu32, + node->cluster_layer_id); pcmk__cluster_send_message(NULL, pcmk_ipc_fenced, query); pcmk__xml_free(query); diff --git a/daemons/pacemakerd/pacemakerd.c b/daemons/pacemakerd/pacemakerd.c index 02667e6df74..f2cb58cc626 100644 --- a/daemons/pacemakerd/pacemakerd.c +++ b/daemons/pacemakerd/pacemakerd.c @@ -323,7 +323,7 @@ main(int argc, char **argv) crm_log_init(NULL, LOG_INFO, TRUE, FALSE, argc, argv, FALSE); } - crm_debug("Checking for existing Pacemaker instance"); + pcmk__debug("Checking for existing Pacemaker instance"); rc = pcmk_new_ipc_api(&old_instance, pcmk_ipc_pacemakerd); if (old_instance == NULL) { @@ -335,8 +335,8 @@ main(int argc, char **argv) pcmk_register_ipc_callback(old_instance, pacemakerd_event_cb, NULL); rc = pcmk__connect_ipc(old_instance, pcmk_ipc_dispatch_sync, 2); if (rc != pcmk_rc_ok) { - crm_debug("No existing %s instance found: %s", - pcmk_ipc_name(old_instance, true), pcmk_rc_str(rc)); + pcmk__debug("No existing %s instance found: %s", + pcmk_ipc_name(old_instance, true), pcmk_rc_str(rc)); } old_instance_connected = pcmk_ipc_is_connected(old_instance); diff --git a/daemons/pacemakerd/pcmkd_corosync.c b/daemons/pacemakerd/pcmkd_corosync.c index ff574fcd1e9..acd9f69ff19 100644 --- a/daemons/pacemakerd/pcmkd_corosync.c +++ b/daemons/pacemakerd/pcmkd_corosync.c @@ -11,6 +11,8 @@ #include "pacemakerd.h" #include "pcmkd_corosync.h" +#include // PRIu32 +#include // uint32_t #include #include /* for calls to stat() */ #include /* For basename() and dirname() */ @@ -138,7 +140,7 @@ cluster_disconnect_cfg(void) code; \ if(rc == CS_ERR_TRY_AGAIN || rc == CS_ERR_QUEUE_FULL) { \ counter++; \ - crm_debug("Retrying Corosync operation after %ds", counter); \ + pcmk__debug("Retrying Corosync operation after %ds", counter); \ sleep(counter); \ } else { \ break; \ @@ -196,7 +198,7 @@ cluster_connect_cfg(void) QB_XS " rc=%d", cs_strerror(rc), rc); goto bail; } - crm_debug("Corosync reports local node ID is %lu", (unsigned long) nodeid); + pcmk__debug("Corosync reports local node ID is %" PRIu32, nodeid); #ifdef HAVE_COROSYNC_CFG_TRACKSTART retries = 0; diff --git a/daemons/pacemakerd/pcmkd_messages.c b/daemons/pacemakerd/pcmkd_messages.c index 8b5d699ccd7..34a2efba471 100644 --- a/daemons/pacemakerd/pcmkd_messages.c +++ b/daemons/pacemakerd/pcmkd_messages.c @@ -266,7 +266,7 @@ pcmk_ipc_dispatch(qb_ipcs_connection_t * qbc, void *data, size_t size) if (!pcmk__result_ok(&request.result)) { pcmk__warn("%s", log_msg); } else { - crm_debug("%s", log_msg); + pcmk__debug("%s", log_msg); } free(log_msg); diff --git a/daemons/pacemakerd/pcmkd_subdaemons.c b/daemons/pacemakerd/pcmkd_subdaemons.c index c001a784671..11395c80ae9 100644 --- a/daemons/pacemakerd/pcmkd_subdaemons.c +++ b/daemons/pacemakerd/pcmkd_subdaemons.c @@ -374,7 +374,7 @@ pcmk_shutdown_worker(gpointer user_data) } /* cleanup */ - crm_debug("Subdaemon %s confirmed stopped", name); + pcmk__debug("Subdaemon %s confirmed stopped", name); child->pid = 0; } @@ -882,8 +882,8 @@ stop_child(pcmkd_child_t *child, int signal) - elsewhere: how "init" task is designated; in particular, in systemd arrangement of socket-based activation, this is pretty real */ if (child->pid == PCMK__SPECIAL_PID) { - crm_debug("Nothing to do to stop subdaemon %s[%lld]", - name, (long long) PCMK__SPECIAL_PID_AS_0(child->pid)); + pcmk__debug("Nothing to do to stop subdaemon %s[%lld]", name, + (long long) PCMK__SPECIAL_PID_AS_0(child->pid)); return TRUE; } diff --git a/daemons/schedulerd/schedulerd_messages.c b/daemons/schedulerd/schedulerd_messages.c index 153d990d8b2..93bb647ffc5 100644 --- a/daemons/schedulerd/schedulerd_messages.c +++ b/daemons/schedulerd/schedulerd_messages.c @@ -151,7 +151,7 @@ handle_pecalc_request(pcmk__request_t *request) pcmk__log_transition_summary(scheduler, filename); if (series_wrap == 0) { - crm_debug("Not saving input to disk (disabled by configuration)"); + pcmk__debug("Not saving input to disk (disabled by configuration)"); } else if (is_repoke) { pcmk__info("Input has not changed since last time, not saving to disk"); @@ -297,7 +297,7 @@ pe_ipc_dispatch(qb_ipcs_connection_t * qbc, void *data, size_t size) if (!pcmk__result_ok(&request.result)) { pcmk__warn("%s", log_msg); } else { - crm_debug("%s", log_msg); + pcmk__debug("%s", log_msg); } free(log_msg); diff --git a/include/crm/common/logging_internal.h b/include/crm/common/logging_internal.h index 851ce7c211d..c6c63c4e7ac 100644 --- a/include/crm/common/logging_internal.h +++ b/include/crm/common/logging_internal.h @@ -74,6 +74,15 @@ extern "C" { */ #define pcmk__info(fmt, args...) qb_log(LOG_INFO, fmt, ##args) +/*! + * \internal + * \brief Log a message at \c LOG_DEBUG level + * + * \param[in] fmt \c printf() format string for log message + * \param[in] args Format string arguments + */ +#define pcmk__debug(fmt, args...) do_crm_log_unlikely(LOG_DEBUG, fmt, ##args) + /* Some warnings are too noisy when logged every time a given function is called * (for example, using a deprecated feature). As an alternative, we allow * warnings to be logged once per invocation of the calling program. Each of diff --git a/lib/cib/cib_attrs.c b/lib/cib/cib_attrs.c index 866120d6daa..df2ba0a422a 100644 --- a/lib/cib/cib_attrs.c +++ b/lib/cib/cib_attrs.c @@ -660,8 +660,8 @@ query_node_uuid(cib_t * the_cib, const char *uname, char **uuid, int *is_remote_ g_free(host_lowercase); if (rc != pcmk_ok) { - crm_debug("Could not map node name '%s' to a UUID: %s", - uname, pcmk_strerror(rc)); + pcmk__debug("Could not map node name '%s' to a UUID: %s", uname, + pcmk_strerror(rc)); } else { pcmk__info("Mapped node name '%s' to UUID %s", uname, ((uuid != NULL)? *uuid : "")); diff --git a/lib/cib/cib_client.c b/lib/cib/cib_client.c index dea020dfdfe..008199b3e6f 100644 --- a/lib/cib/cib_client.c +++ b/lib/cib/cib_client.c @@ -117,11 +117,11 @@ cib_client_del_notify_callback(cib_t *cib, const char *event, } if (get_notify_list_event_count(cib, event) == 0) { - crm_debug("The callback of the event does not exist(%s)", event); + pcmk__debug("The callback of the event does not exist(%s)", event); return pcmk_ok; } - crm_debug("Removing callback for %s events", event); + pcmk__debug("Removing callback for %s events", event); new_client = pcmk__assert_alloc(1, sizeof(cib_notify_client_t)); new_client->event = event; @@ -155,8 +155,8 @@ cib_async_timeout_handler(gpointer data) { struct timer_rec_s *timer = data; - crm_debug("Async call %d timed out after %ds", - timer->call_id, timer->timeout); + pcmk__debug("Async call %d timed out after %ds", timer->call_id, + timer->timeout); cib_native_callback(timer->cib, NULL, timer->call_id, -ETIME); // We remove the handler in remove_cib_op_callback() @@ -604,8 +604,8 @@ cib_new(void) server = "localhost"; } - crm_debug("Initializing %s remote CIB access to %s:%d as user %s", - (encrypted? "encrypted" : "plain-text"), server, port, user); + pcmk__debug("Initializing %s remote CIB access to %s:%d as user %s", + (encrypted? "encrypted" : "plain-text"), server, port, user); return cib_remote_new(server, user, pass, port, encrypted); } @@ -752,7 +752,7 @@ cib_dump_pending_op(gpointer key, gpointer value, gpointer user_data) int call = GPOINTER_TO_INT(key); cib_callback_client_t *blob = value; - crm_debug("Call %d (%s): pending", call, pcmk__s(blob->id, "without ID")); + pcmk__debug("Call %d (%s): pending", call, pcmk__s(blob->id, "without ID")); } void diff --git a/lib/cib/cib_file.c b/lib/cib/cib_file.c index ffb45a99ea3..f184bebc32f 100644 --- a/lib/cib/cib_file.c +++ b/lib/cib/cib_file.c @@ -418,8 +418,8 @@ cib_file_signon(cib_t *cib, const char *name, enum cib_conn_type type) } if (rc == pcmk_ok) { - crm_debug("Opened connection to local file '%s' for %s", - private->filename, pcmk__s(name, "client")); + pcmk__debug("Opened connection to local file '%s' for %s", + private->filename, pcmk__s(name, "client")); cib->state = cib_connected_command; cib->type = cib_command; register_client(cib); @@ -533,7 +533,7 @@ cib_file_signoff(cib_t *cib) int rc = pcmk_ok; cib_file_opaque_t *private = cib->variant_opaque; - crm_debug("Disconnecting from the CIB manager"); + pcmk__debug("Disconnecting from the CIB manager"); cib->state = cib_disconnected; cib->type = cib_no_connection; unregister_client(cib); @@ -958,7 +958,7 @@ cib_file_write_with_digest(xmlNode *cib_root, const char *cib_dirname, goto cleanup; } - crm_debug("Writing CIB to disk"); + pcmk__debug("Writing CIB to disk"); umask(S_IWGRP | S_IWOTH | S_IROTH); cib_file_prepare_xml(cib_root); @@ -1021,7 +1021,7 @@ cib_file_write_with_digest(xmlNode *cib_root, const char *cib_dirname, goto cleanup; } close(fd); - crm_debug("Wrote digest %s to disk", digest); + pcmk__debug("Wrote digest %s to disk", digest); /* Verify that what we wrote is sane */ pcmk__info("Reading cluster configuration file %s (digest: %s)", tmp_cib, @@ -1030,7 +1030,7 @@ cib_file_write_with_digest(xmlNode *cib_root, const char *cib_dirname, pcmk__assert(rc == 0); /* Rename temporary files to live, and sync directory changes to media */ - crm_debug("Activating %s", tmp_cib); + pcmk__debug("Activating %s", tmp_cib); if (rename(tmp_cib, cib_path) < 0) { crm_perror(LOG_ERR, "Couldn't rename %s as %s", tmp_cib, cib_path); exit_rc = pcmk_err_cib_save; diff --git a/lib/cib/cib_native.c b/lib/cib/cib_native.c index cf536059f18..a375006ca2d 100644 --- a/lib/cib/cib_native.c +++ b/lib/cib/cib_native.c @@ -233,7 +233,7 @@ cib_native_signoff(cib_t *cib) { cib_native_opaque_t *native = cib->variant_opaque; - crm_debug("Disconnecting from the CIB manager"); + pcmk__debug("Disconnecting from the CIB manager"); cib_free_notify(cib); remove_cib_op_callback(0, TRUE); diff --git a/lib/cib/cib_ops.c b/lib/cib/cib_ops.c index 14ac8ef95ff..61102b6b3b0 100644 --- a/lib/cib/cib_ops.c +++ b/lib/cib/cib_ops.c @@ -692,10 +692,10 @@ cib_process_xpath(const char *op, int options, const char *section, num_results = pcmk__xpath_num_results(xpathObj); if (num_results == 0) { if (pcmk__str_eq(op, PCMK__CIB_REQUEST_DELETE, pcmk__str_none)) { - crm_debug("%s was already removed", section); + pcmk__debug("%s was already removed", section); } else { - crm_debug("%s: %s does not exist", op, section); + pcmk__debug("%s: %s does not exist", op, section); rc = -ENXIO; } goto done; @@ -736,7 +736,7 @@ cib_process_xpath(const char *op, int options, const char *section, } path = xmlGetNodePath(match); - crm_debug("Processing %s op for %s with %s", op, section, path); + pcmk__debug("Processing %s op for %s with %s", op, section, path); free(path); if (pcmk__str_eq(op, PCMK__CIB_REQUEST_DELETE, pcmk__str_none)) { diff --git a/lib/cib/cib_remote.c b/lib/cib/cib_remote.c index 046030d21ee..93f76d16ae6 100644 --- a/lib/cib/cib_remote.c +++ b/lib/cib/cib_remote.c @@ -131,12 +131,12 @@ cib_remote_perform_op(cib_t *cib, const char *op, const char *host, break; } else if (reply_id < msg_id) { - crm_debug("Received old reply: %d (wanted %d)", reply_id, msg_id); + pcmk__debug("Received old reply: %d (wanted %d)", reply_id, msg_id); crm_log_xml_trace(op_reply, "Old reply"); } else if ((reply_id - 10000) > msg_id) { /* wrap-around case */ - crm_debug("Received old reply: %d (wanted %d)", reply_id, msg_id); + pcmk__debug("Received old reply: %d (wanted %d)", reply_id, msg_id); crm_log_xml_trace(op_reply, "Old reply"); } else { pcmk__err("Received a __future__ reply:" " %d (wanted %d)", @@ -519,7 +519,7 @@ cib_remote_signoff(cib_t *cib) { int rc = pcmk_ok; - crm_debug("Disconnecting from the CIB manager"); + pcmk__debug("Disconnecting from the CIB manager"); cib_tls_close(cib); cib->cmds->end_transaction(cib, false, cib_none); diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c index 13b9ff5393f..1521d4e74e6 100644 --- a/lib/cib/cib_utils.c +++ b/lib/cib/cib_utils.c @@ -267,7 +267,7 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, &cib_filtered)) { if (cib_filtered == NULL) { - crm_debug("Pre-filtered the entire cib"); + pcmk__debug("Pre-filtered the entire cib"); return -EACCES; } cib_ro = cib_filtered; @@ -547,7 +547,7 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, && xml_acl_filtered_copy(user, patchset_cib, scratch, result_cib)) { if (*result_cib == NULL) { - crm_debug("Pre-filtered the entire cib result"); + pcmk__debug("Pre-filtered the entire cib result"); } pcmk__xml_free(scratch); } @@ -693,7 +693,7 @@ cib_native_callback(cib_t * cib, xmlNode * msg, int call_id, int rc) } if (cib == NULL) { - crm_debug("No cib object supplied"); + pcmk__debug("No cib object supplied"); } if (rc == -pcmk_err_diff_resync) { @@ -846,8 +846,8 @@ cib_apply_patch_event(xmlNode *event, xmlNode *input, xmlNode **output, NULL); if (rc != pcmk_ok) { - crm_debug("Update didn't apply: %s (%d) %p", - pcmk_strerror(rc), rc, *output); + pcmk__debug("Update didn't apply: %s (%d) %p", pcmk_strerror(rc), + rc, *output); if (rc == -pcmk_err_old_data) { crm_trace("Masking error, we already have the supplied update"); @@ -941,8 +941,9 @@ cib__signon_attempts(cib_t *cib, enum cib_conn_type type, int attempts) // Retry after soft error (interrupted by signal, etc.) pcmk__sleep_ms((attempts - remaining) * 500); - crm_debug("Re-attempting connection to CIB manager (%d attempt%s remaining)", - remaining, pcmk__plural_s(remaining)); + pcmk__debug("Re-attempting connection to CIB manager (%d attempt%s " + "remaining)", + remaining, pcmk__plural_s(remaining)); } return rc; diff --git a/lib/cluster/cluster.c b/lib/cluster/cluster.c index d2d4637bd00..2e855ba3654 100644 --- a/lib/cluster/cluster.c +++ b/lib/cluster/cluster.c @@ -415,7 +415,7 @@ pcmk_get_cluster_layer(void) } else { // Nothing configured, so test supported cluster layers #if SUPPORT_COROSYNC - crm_debug("Testing with Corosync"); + pcmk__debug("Testing with Corosync"); if (pcmk__corosync_is_active()) { cluster_layer = pcmk_cluster_layer_corosync; } diff --git a/lib/cluster/corosync.c b/lib/cluster/corosync.c index f8dd2fb4cf5..660f4d644a1 100644 --- a/lib/cluster/corosync.c +++ b/lib/cluster/corosync.c @@ -14,6 +14,7 @@ #include #include #include +#include // uint32_t, etc. #include #include @@ -124,8 +125,8 @@ pcmk__corosync_name(uint64_t /*cmap_handle_t */ cmap_handle, uint32_t nodeid) rc = pcmk__init_cmap(&local_handle); if (rc != CS_OK) { retries++; - crm_debug("API connection setup failed: %s. Retrying in %ds", cs_strerror(rc), - retries); + pcmk__debug("API connection setup failed: %s. Retrying in %ds", + cs_strerror(rc), retries); sleep(retries); } @@ -314,7 +315,7 @@ quorum_notification_cb(quorum_handle_t handle, uint32_t quorate, for (i = 0; i < view_list_entries; i++) { uint32_t id = view_list[i]; - crm_debug("Member[%d] %u ", i, id); + pcmk__debug("Member[%d] %" PRIu32, i, id); /* Get this node's peer cache entry (adding one if not already there) */ node = pcmk__get_node(id, NULL, NULL, pcmk__node_search_cluster_member); @@ -364,7 +365,7 @@ pcmk__corosync_quorum_connect(gboolean (*dispatch)(unsigned long long, quorum_fd_callbacks.dispatch = quorum_dispatch_cb; quorum_fd_callbacks.destroy = destroy; - crm_debug("Configuring Pacemaker to obtain quorum from Corosync"); + pcmk__debug("Configuring Pacemaker to obtain quorum from Corosync"); { #if 0 @@ -580,8 +581,8 @@ pcmk__corosync_add_nodes(xmlNode *xml_parent) rc = pcmk__init_cmap(&cmap_handle); if (rc != CS_OK) { retries++; - crm_debug("API connection setup failed: %s. Retrying in %ds", cs_strerror(rc), - retries); + pcmk__debug("API connection setup failed: %s. Retrying in %ds", + cs_strerror(rc), retries); sleep(retries); } @@ -725,7 +726,7 @@ pcmk__corosync_cluster_name(void) rc); } else { - crm_debug("cmap totem.cluster_name = '%s'", cluster_name); + pcmk__debug("cmap totem.cluster_name = '%s'", cluster_name); } bail: @@ -765,8 +766,8 @@ pcmk__corosync_has_nodelist(void) cs_rc = pcmk__init_cmap(&cmap_handle); if (cs_rc != CS_OK) { retries++; - crm_debug("CMAP connection failed: %s (rc=%d, retrying in %ds)", - cs_strerror(cs_rc), cs_rc, retries); + pcmk__debug("CMAP connection failed: %s (rc=%d, retrying in %ds)", + cs_strerror(cs_rc), cs_rc, retries); sleep(retries); } } while ((retries < 5) && (cs_rc != CS_OK)); @@ -819,7 +820,7 @@ pcmk__corosync_has_nodelist(void) cmap_iter_finalize(cmap_handle, iter_handle); got_result = true; - crm_debug("Corosync %s node list", (result? "has" : "does not have")); + pcmk__debug("Corosync %s node list", (result? "has" : "does not have")); bail: cmap_finalize(cmap_handle); diff --git a/lib/cluster/cpg.c b/lib/cluster/cpg.c index e7953489fd2..ab47ab1e121 100644 --- a/lib/cluster/cpg.c +++ b/lib/cluster/cpg.c @@ -87,7 +87,7 @@ static void crm_cs_flush(gpointer data); rc = code; \ if ((rc == CS_ERR_TRY_AGAIN) || (rc == CS_ERR_QUEUE_FULL)) { \ counter++; \ - crm_debug("Retrying operation after %ds", counter); \ + pcmk__debug("Retrying operation after %ds", counter); \ sleep(counter); \ } else { \ break; \ @@ -172,7 +172,7 @@ pcmk__cpg_local_nodeid(cpg_handle_t handle) crm_trace("Closing connection"); cpg_finalize(local_handle); } - crm_debug("Local nodeid is %u", local_nodeid); + pcmk__debug("Local nodeid is %u", local_nodeid); return local_nodeid; } @@ -436,11 +436,13 @@ pcmk__cpg_message_data(cpg_handle_t handle, uint32_t sender_id, uint32_t pid, pcmk__node_search_cluster_member); if (peer->name == NULL) { - crm_debug("Received CPG message from node with ID %" PRIu32 - " but its name is unknown", sender_id); + pcmk__debug("Received CPG message from node with ID %" PRIu32 + " but its name is unknown", + sender_id); } else { - crm_debug("Updating name of CPG message sender with ID %" PRIu32 - " to %s", sender_id, peer->name); + pcmk__debug("Updating name of CPG message sender with ID %" PRIu32 + " to %s", + sender_id, peer->name); msg->sender.size = strlen(peer->name); memset(msg->sender.uname, 0, MAX_NAME); memcpy(msg->sender.uname, peer->name, msg->sender.size); diff --git a/lib/cluster/election.c b/lib/cluster/election.c index b32fd8e20f3..874c1ae1e5f 100644 --- a/lib/cluster/election.c +++ b/lib/cluster/election.c @@ -222,8 +222,9 @@ get_uptime(struct timeval *output) return -1; } - crm_debug("Current CPU usage is: %lds, %ldus", (long)info.ru_utime.tv_sec, - (long)info.ru_utime.tv_usec); + pcmk__debug("Current CPU usage is: %llds, %lldus", + (long long) info.ru_utime.tv_sec, + (long long) info.ru_utime.tv_usec); } expires = tm_now + STORM_INTERVAL; /* N seconds after the last _access_ */ @@ -241,18 +242,22 @@ compare_age(struct timeval your_age) get_uptime(&our_age); /* If an error occurred, our_age will be compared as {0,0} */ if (our_age.tv_sec > your_age.tv_sec) { - crm_debug("Win: %ld vs %ld (seconds)", (long)our_age.tv_sec, (long)your_age.tv_sec); + pcmk__debug("Win: %lld vs %lld (seconds)", + (long long) our_age.tv_sec, (long long) your_age.tv_sec); return 1; } else if (our_age.tv_sec < your_age.tv_sec) { - crm_debug("Lose: %ld vs %ld (seconds)", (long)our_age.tv_sec, (long)your_age.tv_sec); + pcmk__debug("Lose: %lld vs %lld (seconds)", + (long long) our_age.tv_sec, (long long) your_age.tv_sec); return -1; } else if (our_age.tv_usec > your_age.tv_usec) { - crm_debug("Win: %ld.%06ld vs %ld.%06ld (usec)", - (long)our_age.tv_sec, (long)our_age.tv_usec, (long)your_age.tv_sec, (long)your_age.tv_usec); + pcmk__debug("Win: %lld.%06lld vs %lld.%06lld (usec)", + (long long) our_age.tv_sec, (long long) our_age.tv_usec, + (long long) your_age.tv_sec, (long long) your_age.tv_usec); return 1; } else if (our_age.tv_usec < your_age.tv_usec) { - crm_debug("Lose: %ld.%06ld vs %ld.%06ld (usec)", - (long)our_age.tv_sec, (long)our_age.tv_usec, (long)your_age.tv_sec, (long)your_age.tv_usec); + pcmk__debug("Lose: %lld.%06lld vs %lld.%06lld (usec)", + (long long) our_age.tv_sec, (long long) our_age.tv_usec, + (long long) your_age.tv_sec, (long long) your_age.tv_usec); return -1; } @@ -320,7 +325,7 @@ election_vote(pcmk_cluster_t *cluster) pcmk__cluster_send_message(NULL, cluster->priv->server, vote); pcmk__xml_free(vote); - crm_debug("Started election round %u", cluster->priv->election->count); + pcmk__debug("Started election round %u", cluster->priv->election->count); election_timeout_start(cluster); return; } @@ -390,9 +395,9 @@ election_check(pcmk_cluster_t *cluster) return TRUE; } else { - crm_debug("Election still waiting on %d of %d vote%s", - num_members - voted_size, num_members, - pcmk__plural_s(num_members)); + pcmk__debug("Election still waiting on %d of %d vote%s", + (num_members - voted_size), num_members, + pcmk__plural_s(num_members)); } return FALSE; @@ -591,9 +596,9 @@ election_count_vote(pcmk_cluster_t *cluster, const xmlNode *message, } if (cluster->priv->election->state != election_in_progress) { // Should only happen if we already lost - crm_debug("Not counting election round %d %s from %s " - "because no election in progress", - vote.election_id, vote.op, vote.from); + pcmk__debug("Not counting election round %d %s from %s because no " + "election in progress", + vote.election_id, vote.op, vote.from); return cluster->priv->election->state; } record_vote(cluster, &vote); diff --git a/lib/cluster/membership.c b/lib/cluster/membership.c index 5e8c37f487e..7cc92b8b48d 100644 --- a/lib/cluster/membership.c +++ b/lib/cluster/membership.c @@ -1013,8 +1013,8 @@ pcmk__get_node(unsigned int id, const char *uname, const char *xml_id, if ((xml_id == NULL) && (node->xml_id == NULL)) { xml_id = pcmk__cluster_get_xml_id(node); if (xml_id == NULL) { - crm_debug("Cannot obtain an XML ID for node %s[%u] at this time", - node->name, id); + pcmk__debug("Cannot obtain an XML ID for node %s[%u] at this time", + node->name, id); } else { pcmk__info("Node %s[%u] has XML ID %s", node->name, id, xml_id); } @@ -1047,7 +1047,7 @@ update_peer_uname(pcmk__node_status_t *node, const char *uname) return); if (pcmk__str_eq(uname, node->name, pcmk__str_casei)) { - crm_debug("Node name '%s' did not change", uname); + pcmk__debug("Node name '%s' did not change", uname); return; } @@ -1453,11 +1453,9 @@ find_cib_cluster_node(const char *id, const char *uname) } if (node == NULL) { - crm_debug("Couldn't find node%s%s%s%s", - id? " " : "", - id? id : "", - uname? " with name " : "", - uname? uname : ""); + pcmk__debug("Couldn't find node%s%s%s%s", ((id != NULL)? " " : ""), + pcmk__s(id, ""), ((uname != NULL)? " with name " : ""), + pcmk__s(uname, "")); } return node; diff --git a/lib/common/acl.c b/lib/common/acl.c index ce0fe9b51b8..f758f92c855 100644 --- a/lib/common/acl.c +++ b/lib/common/acl.c @@ -352,7 +352,7 @@ pcmk__unpack_acl(xmlNode *source, xmlNode *target, const char *user) } if (id && strcmp(id, user) == 0) { - crm_debug("Unpacking ACLs for user '%s'", id); + pcmk__debug("Unpacking ACLs for user '%s'", id); docpriv->acls = parse_acl_entry(acls, child, docpriv->acls); } } else if (pcmk__xe_is(child, PCMK_XE_ACL_GROUP)) { @@ -363,7 +363,7 @@ pcmk__unpack_acl(xmlNode *source, xmlNode *target, const char *user) } if (id && pcmk__is_user_in_group(user,id)) { - crm_debug("Unpacking ACLs for group '%s'", id); + pcmk__debug("Unpacking ACLs for group '%s'", id); docpriv->acls = parse_acl_entry(acls, child, docpriv->acls); } } diff --git a/lib/common/alerts.c b/lib/common/alerts.c index 73f4d5037a1..daa6e280e22 100644 --- a/lib/common/alerts.c +++ b/lib/common/alerts.c @@ -319,9 +319,9 @@ unpack_alert_filter(xmlNode *xml, pcmk__alert_t *entry) } entry->flags = flags; - crm_debug("Alert %s receives events: attributes:%s%s%s%s", - entry->id, which_attrs, (fencing? " fencing" : ""), - (node? " nodes" : ""), (resource? " resources" : "")); + pcmk__debug("Alert %s receives events: attributes:%s%s%s%s", entry->id, + which_attrs, (fencing? " fencing" : ""), + (node? " nodes" : ""), (resource? " resources" : "")); } } @@ -387,7 +387,7 @@ pcmk__unpack_alerts(const xmlNode *alerts) if (unpack_alert(alert, entry, &max_timeout) != pcmk_rc_ok) { // Don't allow recipients to override if entire alert is disabled - crm_debug("Alert %s is disabled", entry->id); + pcmk__debug("Alert %s is disabled", entry->id); pcmk__free_alert(entry); continue; } @@ -397,10 +397,10 @@ pcmk__unpack_alerts(const xmlNode *alerts) pcmk__str_copy(PCMK__ALERT_DEFAULT_TSTAMP_FORMAT); } - crm_debug("Alert %s: path=%s timeout=%s tstamp-format='%s'", - entry->id, entry->path, - pcmk__readable_interval(entry->timeout), - entry->tstamp_format); + pcmk__debug("Alert %s: path=%s timeout=%s tstamp-format='%s'", + entry->id, entry->path, + pcmk__readable_interval(entry->timeout), + entry->tstamp_format); for (recipient = pcmk__xe_first_child(alert, PCMK_XE_RECIPIENT, NULL, NULL); @@ -408,6 +408,7 @@ pcmk__unpack_alerts(const xmlNode *alerts) recipient = pcmk__xe_next(recipient, PCMK_XE_RECIPIENT)) { pcmk__alert_t *recipient_entry = pcmk__dup_alert(entry); + guint n_envvars = 0; recipients++; recipient_entry->recipient = pcmk__xe_get_copy(recipient, @@ -415,17 +416,20 @@ pcmk__unpack_alerts(const xmlNode *alerts) if (unpack_alert(recipient, recipient_entry, &max_timeout) != pcmk_rc_ok) { - crm_debug("Alert %s: recipient %s is disabled", - entry->id, recipient_entry->id); + pcmk__debug("Alert %s: recipient %s is disabled", entry->id, + recipient_entry->id); pcmk__free_alert(recipient_entry); continue; } alert_list = g_list_prepend(alert_list, recipient_entry); - crm_debug("Alert %s has recipient %s with value %s and %d envvars", - entry->id, pcmk__xe_id(recipient), - recipient_entry->recipient, - (recipient_entry->envvars? - g_hash_table_size(recipient_entry->envvars) : 0)); + + if (recipient_entry->envvars != NULL) { + n_envvars = g_hash_table_size(recipient_entry->envvars); + } + pcmk__debug("Alert %s has recipient %s with value %s and %d " + "envvars", + entry->id, pcmk__xe_id(recipient), + recipient_entry->recipient, n_envvars); } if (recipients == 0) { diff --git a/lib/common/cib_secrets.c b/lib/common/cib_secrets.c index 44affe84fb3..4ea67b9a6a6 100644 --- a/lib/common/cib_secrets.c +++ b/lib/common/cib_secrets.c @@ -153,7 +153,7 @@ pcmk__substitute_secrets(const char *rsc_id, GHashTable *params) if (filename == NULL) { // First secret parameter. Fill in directory path for use with all. - crm_debug("Replacing secret parameters for resource %s", rsc_id); + pcmk__debug("Replacing secret parameters for resource %s", rsc_id); filename = g_string_sized_new(128); pcmk__g_strcat(filename, PCMK__CIB_SECRETS_DIR "/", rsc_id, "/", diff --git a/lib/common/io.c b/lib/common/io.c index 2e84c4c976e..748e4ce05e5 100644 --- a/lib/common/io.c +++ b/lib/common/io.c @@ -146,16 +146,16 @@ pcmk__read_series_sequence(const char *directory, const char *series, fp = fopen(series_file, "r"); if (fp == NULL) { rc = errno; - crm_debug("Could not open series file %s: %s", - series_file, strerror(rc)); + pcmk__debug("Could not open series file %s: %s", series_file, + strerror(rc)); free(series_file); return rc; } errno = 0; if (fscanf(fp, "%u", seq) != 1) { rc = (errno == 0)? ENODATA : errno; - crm_debug("Could not read sequence number from series file %s: %s", - series_file, pcmk_rc_str(rc)); + pcmk__debug("Could not read sequence number from series file %s: %s", + series_file, pcmk_rc_str(rc)); fclose(fp); return rc; } diff --git a/lib/common/ipc_attrd.c b/lib/common/ipc_attrd.c index 1a117e9832b..3bbe96c967e 100644 --- a/lib/common/ipc_attrd.c +++ b/lib/common/ipc_attrd.c @@ -199,9 +199,10 @@ pcmk__attrd_api_clear_failures(pcmk_ipc_api_t *api, const char *node, interval_desc = "all"; op_desc = "operations"; } - crm_debug("Asking %s to clear failure of %s %s for %s on %s", - pcmk_ipc_name(api, true), interval_desc, op_desc, - pcmk__s(resource, "all resources"), pcmk__s(node, "all nodes")); + pcmk__debug("Asking %s to clear failure of %s %s for %s on %s", + pcmk_ipc_name(api, true), interval_desc, op_desc, + pcmk__s(resource, "all resources"), + pcmk__s(node, "all nodes")); pcmk__xe_set(request, PCMK_XA_TASK, PCMK__ATTRD_CMD_CLEAR_FAILURE); pcmk__xe_set(request, PCMK__XA_ATTR_HOST, node); @@ -251,10 +252,10 @@ pcmk__attrd_api_purge(pcmk_ipc_api_t *api, const char *node, bool reap) node = target; } - crm_debug("Asking %s to purge transient attributes%s for %s", - pcmk_ipc_name(api, true), - (reap? " and node cache entries" : ""), - pcmk__s(node, "local node")); + pcmk__debug("Asking %s to purge transient attributes%s for %s", + pcmk_ipc_name(api, true), + (reap? " and node cache entries" : ""), + pcmk__s(node, "local node")); request = create_attrd_op(NULL); @@ -292,9 +293,8 @@ pcmk__attrd_api_query(pcmk_ipc_api_t *api, const char *node, const char *name, } } - crm_debug("Querying %s for value of '%s'%s%s", - pcmk_ipc_name(api, true), name, - ((node == NULL)? "" : " on "), pcmk__s(node, "")); + pcmk__debug("Querying %s for value of '%s'%s%s", pcmk_ipc_name(api, true), + name, ((node != NULL)? " on " : ""), pcmk__s(node, "")); request = create_attrd_op(NULL); @@ -318,8 +318,8 @@ pcmk__attrd_api_refresh(pcmk_ipc_api_t *api, const char *node) node = target; } - crm_debug("Asking %s to write all transient attributes for %s to CIB", - pcmk_ipc_name(api, true), pcmk__s(node, "local node")); + pcmk__debug("Asking %s to write all transient attributes for %s to CIB", + pcmk_ipc_name(api, true), pcmk__s(node, "local node")); request = create_attrd_op(NULL); @@ -401,9 +401,9 @@ pcmk__attrd_api_update(pcmk_ipc_api_t *api, const char *node, const char *name, node = target; } - crm_debug("Asking %s to update '%s' to '%s' for %s", - pcmk_ipc_name(api, true), name, pcmk__s(value, "(null)"), - pcmk__s(node, "local node")); + pcmk__debug("Asking %s to update '%s' to '%s' for %s", + pcmk_ipc_name(api, true), name, pcmk__s(value, "(null)"), + pcmk__s(node, "local node")); request = create_attrd_op(user_name); populate_update_op(request, node, name, value, dampen, set, options); diff --git a/lib/common/ipc_client.c b/lib/common/ipc_client.c index 94c4a8e7ebb..c3a98d97e08 100644 --- a/lib/common/ipc_client.c +++ b/lib/common/ipc_client.c @@ -210,7 +210,7 @@ pcmk_free_ipc_api(pcmk_ipc_api_t *api) if (api == NULL) { return; } - crm_debug("Releasing %s IPC API", pcmk_ipc_name(api, true)); + pcmk__debug("Releasing %s IPC API", pcmk_ipc_name(api, true)); if (api->ipc != NULL) { if (api->mainloop_io != NULL) { @@ -397,8 +397,8 @@ pcmk_poll_ipc(const pcmk_ipc_api_t *api, int timeout_ms) rc = pcmk__ipc_fd(api->ipc, &(pollfd.fd)); if (rc != pcmk_rc_ok) { - crm_debug("Could not obtain file descriptor for %s IPC: %s", - pcmk_ipc_name(api, true), pcmk_rc_str(rc)); + pcmk__debug("Could not obtain file descriptor for %s IPC: %s", + pcmk_ipc_name(api, true), pcmk_rc_str(rc)); return rc; } @@ -454,8 +454,8 @@ connect_with_main_loop(pcmk_ipc_api_t *api) if (rc != pcmk_rc_ok) { return rc; } - crm_debug("Connected to %s IPC (attached to main loop)", - pcmk_ipc_name(api, true)); + pcmk__debug("Connected to %s IPC (attached to main loop)", + pcmk_ipc_name(api, true)); /* After this point, api->mainloop_io owns api->ipc, so api->ipc * should not be explicitly freed. */ @@ -471,8 +471,8 @@ connect_without_main_loop(pcmk_ipc_api_t *api) if (rc != pcmk_rc_ok) { crm_ipc_close(api->ipc); } else { - crm_debug("Connected to %s IPC (without main loop)", - pcmk_ipc_name(api, true)); + pcmk__debug("Connected to %s IPC (without main loop)", + pcmk_ipc_name(api, true)); } return rc; } @@ -511,8 +511,8 @@ pcmk__connect_ipc(pcmk_ipc_api_t *api, enum pcmk_ipc_dispatch dispatch_type, api->dispatch_type = dispatch_type; - crm_debug("Attempting connection to %s (up to %d time%s)", - pcmk_ipc_name(api, true), attempts, pcmk__plural_s(attempts)); + pcmk__debug("Attempting connection to %s (up to %d time%s)", + pcmk_ipc_name(api, true), attempts, pcmk__plural_s(attempts)); for (int remaining = attempts - 1; remaining >= 0; --remaining) { switch (dispatch_type) { case pcmk_ipc_dispatch_main: @@ -531,9 +531,9 @@ pcmk__connect_ipc(pcmk_ipc_api_t *api, enum pcmk_ipc_dispatch dispatch_type, // Retry after soft error (interrupted by signal, etc.) pcmk__sleep_ms((attempts - remaining) * 500); - crm_debug("Re-attempting connection to %s (%d attempt%s remaining)", - pcmk_ipc_name(api, true), remaining, - pcmk__plural_s(remaining)); + pcmk__debug("Re-attempting connection to %s (%d attempt%s remaining)", + pcmk_ipc_name(api, true), remaining, + pcmk__plural_s(remaining)); } if (rc != pcmk_rc_ok) { @@ -814,8 +814,9 @@ pcmk_ipc_purge_node(pcmk_ipc_api_t *api, const char *node_name, uint32_t nodeid) rc = pcmk__send_ipc_request(api, request); pcmk__xml_free(request); - crm_debug("%s peer cache purge of node %s[%lu]: rc=%d", - pcmk_ipc_name(api, true), node_name, (unsigned long) nodeid, rc); + pcmk__debug("%s peer cache purge of node %s[%" PRIu32 "]: rc=%d", + pcmk_ipc_name(api, true), pcmk__s(node_name, "(unnamed)"), + nodeid, rc); return rc; } @@ -1683,8 +1684,8 @@ crm_ipc_connect(crm_ipc_t *client) } if ((client != NULL) && (client->ipc == NULL)) { errno = (rc > 0)? rc : ENOTCONN; - crm_debug("Could not establish %s IPC connection: %s (%d)", - client->server_name, pcmk_rc_str(errno), errno); + pcmk__debug("Could not establish %s IPC connection: %s (%d)", + client->server_name, pcmk_rc_str(errno), errno); } else if (rc == pcmk_rc_ipc_unauthorized) { pcmk__err("%s IPC provider authentication failed", (client == NULL)? "Pacemaker" : client->server_name); diff --git a/lib/common/ipc_common.c b/lib/common/ipc_common.c index 6d67510749b..dd70222e46d 100644 --- a/lib/common/ipc_common.c +++ b/lib/common/ipc_common.c @@ -53,16 +53,16 @@ pcmk__ipc_buffer_size(unsigned int max) } else if (env_value < MIN_MSG_SIZE) { env_value = MIN_MSG_SIZE; max = QB_MAX(max, env_value); - crm_debug("Using %u as IPC buffer size because PCMK_" - PCMK__ENV_IPC_BUFFER " (%s) is too small", - max, env_value_s); + pcmk__debug("Using %u as IPC buffer size because PCMK_" + PCMK__ENV_IPC_BUFFER " (%s) is too small", + max, env_value_s); } else if (env_value > UINT_MAX) { env_value = UINT_MAX; max = UINT_MAX; - crm_debug("Using %u as IPC buffer size because PCMK_" - PCMK__ENV_IPC_BUFFER " (%s) is too big", - max, env_value_s); + pcmk__debug("Using %u as IPC buffer size because PCMK_" + PCMK__ENV_IPC_BUFFER " (%s) is too big", + max, env_value_s); } } @@ -72,8 +72,8 @@ pcmk__ipc_buffer_size(unsigned int max) if (env_value == MAX_MSG_SIZE) { source = "default"; } - crm_debug("Using IPC buffer size %lld from %s (not %u)", - env_value, source, max); + pcmk__debug("Using IPC buffer size %lld from %s (not %u)", env_value, + source, max); max = env_value; } return max; diff --git a/lib/common/ipc_controld.c b/lib/common/ipc_controld.c index 58d4cfc69d3..85f8b441645 100644 --- a/lib/common/ipc_controld.c +++ b/lib/common/ipc_controld.c @@ -118,7 +118,7 @@ post_connect(pcmk_ipc_api_t *api) pcmk__info("Could not send IPC hello to %s: %s " QB_XS " rc=%s", pcmk_ipc_name(api, true), pcmk_rc_str(rc), rc); } else { - crm_debug("Sent IPC hello to %s", pcmk_ipc_name(api, true)); + pcmk__debug("Sent IPC hello to %s", pcmk_ipc_name(api, true)); } return rc; } @@ -401,9 +401,9 @@ pcmk_controld_api_reprobe(pcmk_ipc_api_t *api, const char *target_node, if (router_node == NULL) { router_node = target_node; } - crm_debug("Sending %s IPC request to reprobe %s via %s", - pcmk_ipc_name(api, true), pcmk__s(target_node, "local node"), - pcmk__s(router_node, "local node")); + pcmk__debug("Sending %s IPC request to reprobe %s via %s", + pcmk_ipc_name(api, true), pcmk__s(target_node, "local node"), + pcmk__s(router_node, "local node")); msg_data = create_reprobe_message_data(target_node, router_node); request = create_controller_request(api, CRM_OP_REPROBE, router_node, msg_data); @@ -572,11 +572,11 @@ pcmk_controld_api_fail(pcmk_ipc_api_t *api, const char *standard, const char *provider, const char *type) { - crm_debug("Sending %s IPC request to fail %s (a.k.a. %s) on %s via %s", - pcmk_ipc_name(api, true), pcmk__s(rsc_id, "unknown resource"), - pcmk__s(rsc_long_id, "no other names"), - pcmk__s(target_node, "unspecified node"), - pcmk__s(router_node, "unspecified node")); + pcmk__debug("Sending %s IPC request to fail %s (a.k.a. %s) on %s via %s", + pcmk_ipc_name(api, true), pcmk__s(rsc_id, "unknown resource"), + pcmk__s(rsc_long_id, "no other names"), + pcmk__s(target_node, "unspecified node"), + pcmk__s(router_node, "unspecified node")); return controller_resource_op(api, CRM_OP_LRM_FAIL, target_node, router_node, false, rsc_id, rsc_long_id, standard, provider, type); @@ -605,11 +605,11 @@ pcmk_controld_api_refresh(pcmk_ipc_api_t *api, const char *target_node, const char *standard, const char *provider, const char *type, bool cib_only) { - crm_debug("Sending %s IPC request to refresh %s (a.k.a. %s) on %s via %s", - pcmk_ipc_name(api, true), pcmk__s(rsc_id, "unknown resource"), - pcmk__s(rsc_long_id, "no other names"), - pcmk__s(target_node, "unspecified node"), - pcmk__s(router_node, "unspecified node")); + pcmk__debug("Sending %s IPC request to refresh %s (a.k.a. %s) on %s via %s", + pcmk_ipc_name(api, true), pcmk__s(rsc_id, "unknown resource"), + pcmk__s(rsc_long_id, "no other names"), + pcmk__s(target_node, "unspecified node"), + pcmk__s(router_node, "unspecified node")); return controller_resource_op(api, CRM_OP_LRM_DELETE, target_node, router_node, cib_only, rsc_id, rsc_long_id, standard, provider, type); diff --git a/lib/common/ipc_pacemakerd.c b/lib/common/ipc_pacemakerd.c index 28a0d889ed2..b5abdb8e021 100644 --- a/lib/common/ipc_pacemakerd.c +++ b/lib/common/ipc_pacemakerd.c @@ -322,8 +322,8 @@ do_pacemakerd_api_call(pcmk_ipc_api_t *api, const char *ipc_name, const char *ta if (cmd) { rc = pcmk__send_ipc_request(api, cmd); if (rc != pcmk_rc_ok) { - crm_debug("Couldn't send request to %s: %s rc=%d", - pcmk_ipc_name(api, true), pcmk_rc_str(rc), rc); + pcmk__debug("Couldn't send request to %s: %s rc=%d", + pcmk_ipc_name(api, true), pcmk_rc_str(rc), rc); } pcmk__xml_free(cmd); } else { diff --git a/lib/common/ipc_schedulerd.c b/lib/common/ipc_schedulerd.c index 8788ec2071a..b1348933d54 100644 --- a/lib/common/ipc_schedulerd.c +++ b/lib/common/ipc_schedulerd.c @@ -177,8 +177,8 @@ do_schedulerd_api_call(pcmk_ipc_api_t *api, const char *task, xmlNode *cib, char if (cmd) { rc = pcmk__send_ipc_request(api, cmd); if (rc != pcmk_rc_ok) { - crm_debug("Couldn't send request to schedulerd: %s rc=%d", - pcmk_rc_str(rc), rc); + pcmk__debug("Couldn't send request to schedulerd: %s rc=%d", + pcmk_rc_str(rc), rc); } *ref = strdup(pcmk__xe_get(cmd, PCMK_XA_REFERENCE)); diff --git a/lib/common/ipc_server.c b/lib/common/ipc_server.c index 825b0cd7f25..08e1eb616d6 100644 --- a/lib/common/ipc_server.c +++ b/lib/common/ipc_server.c @@ -240,8 +240,8 @@ pcmk__new_client(qb_ipcs_connection_t *c, uid_t uid_client, gid_t gid_client) pcmk__set_client_flags(client, pcmk__client_privileged); } - crm_debug("New IPC client %s for PID %u with uid %d and gid %d", - client->id, client->pid, uid_client, gid_client); + pcmk__debug("New IPC client %s for PID %u with uid %d and gid %d", + client->id, client->pid, uid_client, gid_client); return client; } @@ -306,7 +306,7 @@ pcmk__free_client(pcmk__client_t *c) } if (c->event_queue) { - crm_debug("Destroying %d events", g_queue_get_length(c->event_queue)); + pcmk__debug("Destroying %d events", g_queue_get_length(c->event_queue)); g_queue_free_full(c->event_queue, free_event); } @@ -366,9 +366,9 @@ pcmk__set_client_queue_max(pcmk__client_t *client, const char *qmax) pcmk__s(qmax, "default"), pcmk_rc_str(rc)); } else if (client->queue_max != orig_value) { - crm_debug("IPC threshold for client %s[%u] is now %u (was %u)", - pcmk__client_name(client), client->pid, - client->queue_max, orig_value); + pcmk__debug("IPC threshold for client %s[%u] is now %u (was %u)", + pcmk__client_name(client), client->pid, client->queue_max, + orig_value); } } diff --git a/lib/common/logging.c b/lib/common/logging.c index aa293276214..ef0c0518cf2 100644 --- a/lib/common/logging.c +++ b/lib/common/logging.c @@ -727,16 +727,19 @@ crm_is_callsite_active(struct qb_log_callsite *cs, uint8_t level, uint32_t tags) void crm_update_callsites(void) { - static gboolean log = TRUE; + static bool log = true; if (log) { - log = FALSE; - crm_debug - ("Enabling callsites based on priority=%d, files=%s, functions=%s, formats=%s, tags=%s", - crm_log_level, pcmk__env_option(PCMK__ENV_TRACE_FILES), - pcmk__env_option(PCMK__ENV_TRACE_FUNCTIONS), - pcmk__env_option(PCMK__ENV_TRACE_FORMATS), - pcmk__env_option(PCMK__ENV_TRACE_TAGS)); + log = false; + pcmk__debug("Enabling callsites based on priority=%d, files=%s, " + "functions=%s, formats=%s, tags=%s", + crm_log_level, + pcmk__s(pcmk__env_option(PCMK__ENV_TRACE_FILES), ""), + pcmk__s(pcmk__env_option(PCMK__ENV_TRACE_FUNCTIONS), + ""), + pcmk__s(pcmk__env_option(PCMK__ENV_TRACE_FORMATS), + ""), + pcmk__s(pcmk__env_option(PCMK__ENV_TRACE_TAGS), "")); } qb_log_filter_fn_set(crm_log_filter); } diff --git a/lib/common/mainloop.c b/lib/common/mainloop.c index b60f9605abb..770e69ee887 100644 --- a/lib/common/mainloop.c +++ b/lib/common/mainloop.c @@ -872,14 +872,14 @@ pcmk__add_mainloop_ipc(crm_ipc_t *ipc, int priority, void *userdata, ipc_name = pcmk__s(crm_ipc_name(ipc), "Pacemaker"); rc = pcmk__connect_generic_ipc(ipc); if (rc != pcmk_rc_ok) { - crm_debug("Connection to %s failed: %s", ipc_name, pcmk_rc_str(rc)); + pcmk__debug("Connection to %s failed: %s", ipc_name, pcmk_rc_str(rc)); return rc; } rc = pcmk__ipc_fd(ipc, &fd); if (rc != pcmk_rc_ok) { - crm_debug("Could not obtain file descriptor for %s IPC: %s", - ipc_name, pcmk_rc_str(rc)); + pcmk__debug("Could not obtain file descriptor for %s IPC: %s", ipc_name, + pcmk_rc_str(rc)); crm_ipc_close(ipc); return rc; } @@ -1062,10 +1062,11 @@ child_kill_helper(mainloop_child_t *child) { int rc; if (child->flags & mainloop_leave_pid_group) { - crm_debug("Kill pid %d only. leave group intact.", child->pid); + pcmk__debug("Kill pid %lld only. leave group intact", + (long long) child->pid); rc = kill(child->pid, SIGKILL); } else { - crm_debug("Kill pid %d's group", child->pid); + pcmk__debug("Kill pid %lld's group", (long long) child->pid); rc = kill(-child->pid, SIGKILL); } @@ -1098,7 +1099,8 @@ child_timeout_callback(gpointer p) } child->timeout = TRUE; - crm_debug("%s process (PID %d) timed out", child->desc, (int)child->pid); + pcmk__debug("%s process (PID %lld) timed out", child->desc, + (long long) child->pid); child->timerid = pcmk__create_timer(5000, child_timeout_callback, child); return FALSE; diff --git a/lib/common/output.c b/lib/common/output.c index 6b3dde34e9b..5e096845cb0 100644 --- a/lib/common/output.c +++ b/lib/common/output.c @@ -182,8 +182,8 @@ pcmk__call_message(pcmk__output_t *out, const char *message_id, ...) { fn = g_hash_table_lookup(out->messages, message_id); if (fn == NULL) { - crm_debug("Called unknown output message '%s' for format '%s'", - message_id, out->fmt_name); + pcmk__debug("Called unknown output message '%s' for format '%s'", + message_id, out->fmt_name); return EINVAL; } diff --git a/lib/common/patchset.c b/lib/common/patchset.c index 9ed15ad5dfd..1deabe32de3 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -403,8 +403,8 @@ check_patchset_versions(const xmlNode *cib_root, const xmlNode *patchset) current[i], vfields[i], ((current[i] < 0)? ", using 0" : "")); } else { - crm_debug("Failed to get value for current[%s], using 0", - vfields[i]); + pcmk__debug("Failed to get value for current[%s], using 0", + vfields[i]); } if (current[i] < 0) { current[i] = 0; @@ -434,11 +434,11 @@ check_patchset_versions(const xmlNode *cib_root, const xmlNode *patchset) // Ensure current version matches patchset source version for (int i = 0; i < PCMK__NELEM(vfields); i++) { if (current[i] < source[i]) { - crm_debug("Current %s is too low " - "(%d.%d.%d < %d.%d.%d --> %d.%d.%d)", - vfields[i], current[0], current[1], current[2], - source[0], source[1], source[2], - target[0], target[1], target[2]); + pcmk__debug("Current %s is too low " + "(%d.%d.%d < %d.%d.%d --> %d.%d.%d)", + vfields[i], current[0], current[1], current[2], + source[0], source[1], source[2], + target[0], target[1], target[2]); return pcmk_rc_diff_resync; } if (current[i] > source[i]) { @@ -455,9 +455,9 @@ check_patchset_versions(const xmlNode *cib_root, const xmlNode *patchset) // Ensure target version is newer than source version for (int i = 0; i < PCMK__NELEM(vfields); i++) { if (target[i] > source[i]) { - crm_debug("Can apply patch %d.%d.%d to %d.%d.%d", - target[0], target[1], target[2], - current[0], current[1], current[2]); + pcmk__debug("Can apply patch %d.%d.%d to %d.%d.%d", + target[0], target[1], target[2], + current[0], current[1], current[2]); return pcmk_rc_ok; } } @@ -576,7 +576,7 @@ search_v2_xpath(const xmlNode *top, const char *key, int target_position) (path = (char *) xmlGetNodePath(target)), key); free(path); } else { - crm_debug("No match for %s", key); + pcmk__debug("No match for %s", key); } free(remainder); @@ -652,7 +652,7 @@ apply_v2_patchset(xmlNode *xml, const xmlNode *patchset) crm_trace("Performing %s on %s with %p", op, xpath, match); if ((match == NULL) && (strcmp(op, PCMK_VALUE_DELETE) == 0)) { - crm_debug("No %s match for %s in %p", op, xpath, xml->doc); + pcmk__debug("No %s match for %s in %p", op, xpath, xml->doc); continue; } else if (match == NULL) { diff --git a/lib/common/procfs.c b/lib/common/procfs.c index 5e41d2c1689..813b7af6b92 100644 --- a/lib/common/procfs.c +++ b/lib/common/procfs.c @@ -411,12 +411,12 @@ pcmk__throttle_cib_load(const char *server, float *load) *load = delta_utime + delta_stime; /* Cast to a float before division */ *load /= ticks_per_s; *load /= elapsed; - crm_debug("cib load: %f (%lu ticks in %lds)", *load, - delta_utime + delta_stime, (long) elapsed); + pcmk__debug("cib load: %f (%lu ticks in %llds)", *load, + (delta_utime + delta_stime), (long long) elapsed); } else { - crm_debug("Init %lu + %lu ticks at %ld (%lu tps)", utime, stime, - (long) now, ticks_per_s); + pcmk__debug("Init %lu + %lu ticks at %lld (%lu tps)", utime, stime, + (long long) now, ticks_per_s); } last_call = now; diff --git a/lib/common/remote.c b/lib/common/remote.c index 1d3ddd1c7ce..ee9fd34e6d4 100644 --- a/lib/common/remote.c +++ b/lib/common/remote.c @@ -174,8 +174,8 @@ send_plaintext(int sock, struct iovec *iov) return EINVAL; } - crm_debug("Sending plaintext message of %zu bytes to socket %d", - unsent_len, sock); + pcmk__debug("Sending plaintext message of %zu bytes to socket %d", + unsent_len, sock); while (true) { ssize_t write_rc = write(sock, unsent, unsent_len); @@ -461,8 +461,8 @@ pcmk__read_available_remote_data(pcmk__remote_t *remote) } else if (read_rc == GNUTLS_E_AGAIN) { rc = EAGAIN; } else if (read_rc < 0) { - crm_debug("TLS receive failed: %s (%zd)", - gnutls_strerror((int) read_rc), read_rc); + pcmk__debug("TLS receive failed: %s (%zd)", + gnutls_strerror((int) read_rc), read_rc); rc = EIO; } } else if (remote->tcp_socket >= 0) { @@ -486,8 +486,8 @@ pcmk__read_available_remote_data(pcmk__remote_t *remote) read_rc, remote->buffer_offset); } else if (read_rc == 0) { - crm_debug("End of remote data encountered after %zu bytes", - remote->buffer_offset); + pcmk__debug("End of remote data encountered after %zu bytes", + remote->buffer_offset); return ENOTCONN; } else if ((rc == EINTR) || (rc == EAGAIN) || (rc == EWOULDBLOCK)) { @@ -495,8 +495,8 @@ pcmk__read_available_remote_data(pcmk__remote_t *remote) pcmk_rc_str(rc), rc); } else { - crm_debug("Error receiving remote data after %zu bytes: %s (%d)", - remote->buffer_offset, pcmk_rc_str(rc), rc); + pcmk__debug("Error receiving remote data after %zu bytes: %s (%d)", + remote->buffer_offset, pcmk_rc_str(rc), rc); return ENOTCONN; } @@ -551,8 +551,9 @@ pcmk__read_remote_message(pcmk__remote_t *remote, int timeout_ms) return rc; } else if (rc != pcmk_rc_ok) { - crm_debug("Wait for remote data aborted (will retry): %s " - QB_XS " rc=%d", pcmk_rc_str(rc), rc); + pcmk__debug("Wait for remote data aborted (will retry): %s " + QB_XS " rc=%d", + pcmk_rc_str(rc), rc); } else { rc = pcmk__read_available_remote_data(remote); @@ -561,8 +562,8 @@ pcmk__read_remote_message(pcmk__remote_t *remote, int timeout_ms) } else if (rc == EAGAIN) { crm_trace("Waiting for more remote data"); } else { - crm_debug("Could not receive remote data: %s " QB_XS " rc=%d", - pcmk_rc_str(rc), rc); + pcmk__debug("Could not receive remote data: %s " QB_XS " rc=%d", + pcmk_rc_str(rc), rc); } } @@ -622,8 +623,8 @@ check_connect_finished(gpointer userdata) if ((time(NULL) - cb_data->start) < pcmk__timeout_ms2s(cb_data->timeout_ms)) { return TRUE; // There is time left, so reschedule timer } - crm_debug("Timed out while waiting for socket %d connection success", - cb_data->sock); + pcmk__debug("Timed out while waiting for socket %d connection success", + cb_data->sock); rc = ETIMEDOUT; // select() returned number of file descriptors that are ready @@ -850,7 +851,7 @@ pcmk__connect_remote(const char *host, int port, int timeout, int *timer_id, if (rp->ai_canonname) { server = res->ai_canonname; } - crm_debug("Got canonical name %s for %s", server, host); + pcmk__debug("Got canonical name %s for %s", server, host); sock = socket(rp->ai_family, SOCK_STREAM, IPPROTO_TCP); if (sock == -1) { diff --git a/lib/common/scheduler.c b/lib/common/scheduler.c index db5ed2d5346..ecaacb3c8d9 100644 --- a/lib/common/scheduler.c +++ b/lib/common/scheduler.c @@ -327,9 +327,9 @@ pcmk__update_recheck_time(time_t recheck, pcmk_scheduler_t *scheduler, && ((scheduler->priv->recheck_by == 0) || (scheduler->priv->recheck_by > recheck))) { scheduler->priv->recheck_by = recheck; - crm_debug("Updated next scheduler recheck to %s for %s", - pcmk__trim(ctime(&recheck)), - pcmk__s(reason, "some reason")); + pcmk__debug("Updated next scheduler recheck to %s for %s", + pcmk__trim(ctime(&recheck)), + pcmk__s(reason, "some reason")); } } diff --git a/lib/common/schemas.c b/lib/common/schemas.c index 6817dc89cf2..3c8d80078f2 100644 --- a/lib/common/schemas.c +++ b/lib/common/schemas.c @@ -181,7 +181,7 @@ schema_filter(const struct dirent *a) /* crm_trace("%s - wrong format", a->d_name); */ } else { - /* crm_debug("%s - candidate", a->d_name); */ + // pcmk__debug("%s - candidate", a->d_name); rc = 1; } @@ -545,7 +545,7 @@ pcmk__schema_init(void) for (GList *iter = known_schemas; iter != NULL; iter = iter->next) { pcmk__schema_t *schema = iter->data; - crm_debug("Loaded schema %d: %s", schema_index, schema->name); + pcmk__debug("Loaded schema %d: %s", schema_index, schema->name); schema->schema_index = schema_index++; } } @@ -567,7 +567,7 @@ validate_with_relaxng(xmlDocPtr doc, xmlRelaxNGValidityErrorFunc error_handler, ctx = *cached_ctx; } else { - crm_debug("Creating RNG parser context"); + pcmk__debug("Creating RNG parser context"); ctx = pcmk__assert_alloc(1, sizeof(relaxng_ctx_cache_t)); ctx->parser = xmlRelaxNGNewParserCtxt(relaxng_file); @@ -1045,8 +1045,8 @@ apply_upgrade(const xmlNode *input_xml, int schema_index, gboolean to_logs) const struct dirent *entry = iter->data; const char *transform = entry->d_name; - crm_debug("Upgrading schema from %s to %s: applying XSL transform %s", - schema->name, upgraded_schema->name, transform); + pcmk__debug("Upgrading schema from %s to %s: applying XSL transform %s", + schema->name, upgraded_schema->name, transform); new_xml = apply_transformation(input_xml, transform, to_logs); pcmk__xml_free(old_xml); @@ -1157,7 +1157,7 @@ pcmk__update_schema(xmlNode **xml, const char *max_schema_name, bool transform, if (!validate_with(*xml, current_schema, error_handler, GUINT_TO_POINTER(LOG_ERR))) { - crm_debug("Schema %s does not validate", current_schema->name); + pcmk__debug("Schema %s does not validate", current_schema->name); if (best_schema != NULL) { /* we've satisfied the validation, no need to check further */ break; @@ -1166,7 +1166,7 @@ pcmk__update_schema(xmlNode **xml, const char *max_schema_name, bool transform, continue; // Try again with the next higher schema } - crm_debug("Schema %s validates", current_schema->name); + pcmk__debug("Schema %s validates", current_schema->name); rc = pcmk_rc_ok; best_schema = current_schema; if (current_schema->schema_index == max_schema_index) { diff --git a/lib/common/strings.c b/lib/common/strings.c index 9e52b081d55..008b96784b0 100644 --- a/lib/common/strings.c +++ b/lib/common/strings.c @@ -48,25 +48,27 @@ scan_ll(const char *text, long long *result, long long default_value, local_result = strtoll(text, &local_end_text, 10); if (errno == ERANGE) { rc = errno; - crm_debug("Integer parsed from '%s' was clipped to %lld", - text, local_result); + pcmk__debug("Integer parsed from '%s' was clipped to %lld", text, + local_result); } else if (local_end_text == text) { rc = pcmk_rc_bad_input; local_result = default_value; - crm_debug("Could not parse integer from '%s' (using %lld instead): " - "No digits found", text, default_value); + pcmk__debug("Could not parse integer from '%s' (using %lld " + "instead): No digits found", + text, default_value); } else if (errno != 0) { rc = errno; local_result = default_value; - crm_debug("Could not parse integer from '%s' (using %lld instead): " - "%s", text, default_value, pcmk_rc_str(rc)); + pcmk__debug("Could not parse integer from '%s' (using %lld " + "instead): %s", + text, default_value, pcmk_rc_str(rc)); } if ((end_text == NULL) && !pcmk__str_empty(local_end_text)) { - crm_debug("Characters left over after parsing '%s': '%s'", - text, local_end_text); + pcmk__debug("Characters left over after parsing '%s': '%s'", + text, local_end_text); } errno = rc; } @@ -204,7 +206,7 @@ pcmk__scan_double(const char *text, double *result, const char *default_text, if (text == NULL) { rc = EINVAL; - crm_debug("No text and no default conversion value supplied"); + pcmk__debug("No text and no default conversion value supplied"); } else { errno = 0; @@ -230,26 +232,27 @@ pcmk__scan_double(const char *text, double *result, const char *default_text, over_under = "under"; } - crm_debug("Floating-point value parsed from '%s' would %sflow " - "(using %g instead)", text, over_under, *result); + pcmk__debug("Floating-point value parsed from '%s' would %sflow " + "(using %g instead)", + text, over_under, *result); } else if (errno != 0) { rc = errno; // strtod() set *result = 0 on parse failure *result = PCMK__PARSE_DBL_DEFAULT; - crm_debug("Could not parse floating-point value from '%s' (using " - "%.1f instead): %s", text, PCMK__PARSE_DBL_DEFAULT, - pcmk_rc_str(rc)); + pcmk__debug("Could not parse floating-point value from '%s' (using " + "%.1f instead): %s", + text, PCMK__PARSE_DBL_DEFAULT, pcmk_rc_str(rc)); } else if (local_end_text == text) { // errno == 0, but nothing was parsed rc = EINVAL; *result = PCMK__PARSE_DBL_DEFAULT; - crm_debug("Could not parse floating-point value from '%s' (using " - "%.1f instead): No digits found", text, - PCMK__PARSE_DBL_DEFAULT); + pcmk__debug("Could not parse floating-point value from '%s' (using " + "%.1f instead): No digits found", + text, PCMK__PARSE_DBL_DEFAULT); } else if (QB_ABS(*result) <= DBL_MIN) { /* @@ -267,8 +270,8 @@ pcmk__scan_double(const char *text, double *result, const char *default_text, for (const char *p = text; p != local_end_text; p++) { if (strchr("0.eE", *p) == NULL) { rc = pcmk_rc_underflow; - crm_debug("Floating-point value parsed from '%s' would " - "underflow (using %g instead)", text, *result); + pcmk__debug("Floating-point value parsed from '%s' would " + "underflow (using %g instead)", text, *result); break; } } @@ -279,8 +282,8 @@ pcmk__scan_double(const char *text, double *result, const char *default_text, } if ((end_text == NULL) && !pcmk__str_empty(local_end_text)) { - crm_debug("Characters left over after parsing '%s': '%s'", - text, local_end_text); + pcmk__debug("Characters left over after parsing '%s': '%s'", text, + local_end_text); } } diff --git a/lib/common/watchdog.c b/lib/common/watchdog.c index b3db8e2f399..24f50a3adda 100644 --- a/lib/common/watchdog.c +++ b/lib/common/watchdog.c @@ -271,15 +271,15 @@ pcmk__valid_stonith_watchdog_timeout(const char *value) st_timeout = pcmk__auto_stonith_watchdog_timeout(); // At this point, 0 <= sbd_timeout <= st_timeout - crm_debug("Using calculated value %lld for " - PCMK_OPT_STONITH_WATCHDOG_TIMEOUT " (%s)", - st_timeout, value); + pcmk__debug("Using calculated value %lld for " + PCMK_OPT_STONITH_WATCHDOG_TIMEOUT " (%s)", + st_timeout, value); } if (st_timeout == 0) { - crm_debug("Watchdog may be enabled but " - PCMK_OPT_STONITH_WATCHDOG_TIMEOUT " is disabled (%s)", - value? value : "default"); + pcmk__debug("Watchdog may be enabled but " + PCMK_OPT_STONITH_WATCHDOG_TIMEOUT " is disabled (%s)", + pcmk__s(value, "default")); } else if (pcmk__locate_sbd() == 0) { pcmk__emerg("Shutting down: " PCMK_OPT_STONITH_WATCHDOG_TIMEOUT diff --git a/lib/fencing/st_actions.c b/lib/fencing/st_actions.c index 9ccc76641bf..6c1fea14212 100644 --- a/lib/fencing/st_actions.c +++ b/lib/fencing/st_actions.c @@ -140,8 +140,8 @@ make_args(const char *agent, const char *action, const char *target, snprintf(buffer, sizeof(buffer), "pcmk_%s_action", action); value = g_hash_table_lookup(device_args, buffer); if (value) { - crm_debug("Substituting '%s' for fence action %s targeting %s", - value, action, pcmk__s(target, "no node")); + pcmk__debug("Substituting '%s' for fence action %s targeting %s", + value, action, pcmk__s(target, "no node")); action = value; } } @@ -195,8 +195,8 @@ make_args(const char *agent, const char *action, const char *target, if (alias == NULL) { alias = target; } - crm_debug("Passing %s='%s' with fence action %s targeting %s", - param, alias, action, pcmk__s(target, "no node")); + pcmk__debug("Passing %s='%s' with fence action %s targeting %s", + param, alias, action, pcmk__s(target, "no node")); pcmk__insert_dup(arg_list, param, alias); } } @@ -273,8 +273,8 @@ stonith__action_create(const char *agent, const char *action_name, action->args = make_args(agent, action_name, target, target_nodeid, device_args, port_map, host_arg); - crm_debug("Preparing '%s' action targeting %s using agent %s", - action_name, pcmk__s(target, "no node"), agent); + pcmk__debug("Preparing '%s' action targeting %s using agent %s", + action_name, pcmk__s(target, "no node"), agent); action->agent = strdup(agent); action->action = strdup(action_name); action->timeout = action->remaining_timeout = timeout_sec; diff --git a/lib/fencing/st_client.c b/lib/fencing/st_client.c index 9cd40767f2f..bcd5cd88f34 100644 --- a/lib/fencing/st_client.c +++ b/lib/fencing/st_client.c @@ -853,7 +853,7 @@ stonith_api_signoff(stonith_t * stonith) { stonith_private_t *native = stonith->st_private; - crm_debug("Disconnecting from the fencer"); + pcmk__debug("Disconnecting from the fencer"); if (native->source != NULL) { /* Attached to mainloop */ @@ -1117,8 +1117,8 @@ stonith_api_signon(stonith_t * stonith, const char *name, int *stonith_fd) native = stonith->st_private; pcmk__assert(native != NULL); - crm_debug("Attempting fencer connection by %s with%s mainloop", - display_name, (stonith_fd? "out" : "")); + pcmk__debug("Attempting fencer connection by %s with%s mainloop", + display_name, ((stonith_fd != 0)? "out" : "")); stonith->state = stonith_connected_command; if (stonith_fd) { @@ -1129,8 +1129,8 @@ stonith_api_signon(stonith_t * stonith, const char *name, int *stonith_fd) if (rc == pcmk_rc_ok) { rc = pcmk__ipc_fd(native->ipc, stonith_fd); if (rc != pcmk_rc_ok) { - crm_debug("Couldn't get file descriptor for IPC: %s", - pcmk_rc_str(rc)); + pcmk__debug("Couldn't get file descriptor for IPC: %s", + pcmk_rc_str(rc)); } } if (rc != pcmk_rc_ok) { @@ -1159,12 +1159,12 @@ stonith_api_signon(stonith_t * stonith, const char *name, int *stonith_fd) rc = crm_ipc_send(native->ipc, hello, crm_ipc_client_response, -1, &reply); if (rc < 0) { - crm_debug("Couldn't register with the fencer: %s " - QB_XS " rc=%d", pcmk_strerror(rc), rc); + pcmk__debug("Couldn't register with the fencer: %s " QB_XS " rc=%d", + pcmk_strerror(rc), rc); rc = -ECOMM; } else if (reply == NULL) { - crm_debug("Couldn't register with the fencer: no reply"); + pcmk__debug("Couldn't register with the fencer: no reply"); rc = -EPROTO; } else { @@ -1172,19 +1172,22 @@ stonith_api_signon(stonith_t * stonith, const char *name, int *stonith_fd) native->token = pcmk__xe_get_copy(reply, PCMK__XA_ST_CLIENTID); if (!pcmk__str_eq(msg_type, CRM_OP_REGISTER, pcmk__str_none)) { - crm_debug("Couldn't register with the fencer: invalid reply type '%s'", - (msg_type? msg_type : "(missing)")); + pcmk__debug("Couldn't register with the fencer: invalid reply " + "type '%s'", + pcmk__s(msg_type, "(missing)")); crm_log_xml_debug(reply, "Invalid fencer reply"); rc = -EPROTO; } else if (native->token == NULL) { - crm_debug("Couldn't register with the fencer: no token in reply"); + pcmk__debug("Couldn't register with the fencer: no token in " + "reply"); crm_log_xml_debug(reply, "Invalid fencer reply"); rc = -EPROTO; } else { - crm_debug("Connection to fencer by %s succeeded (registration token: %s)", - display_name, native->token); + pcmk__debug("Connection to fencer by %s succeeded " + "(registration token: %s)", + display_name, native->token); rc = pcmk_ok; } } @@ -1194,8 +1197,9 @@ stonith_api_signon(stonith_t * stonith, const char *name, int *stonith_fd) } if (rc != pcmk_ok) { - crm_debug("Connection attempt to fencer by %s failed: %s " - QB_XS " rc=%d", display_name, pcmk_strerror(rc), rc); + pcmk__debug("Connection attempt to fencer by %s failed: %s " + QB_XS " rc=%d", + display_name, pcmk_strerror(rc), rc); stonith->cmds->disconnect(stonith); } return rc; @@ -1269,7 +1273,7 @@ del_notify_entry(gpointer data, gpointer user_data) stonith_t * stonith = user_data; if (!entry->delete) { - crm_debug("Removing callback for %s events", entry->event); + pcmk__debug("Removing callback for %s events", entry->event); stonith_api_del_notification(stonith, entry->event); } } @@ -1288,7 +1292,7 @@ stonith_api_del_notification(stonith_t * stonith, const char *event) return pcmk_ok; } - crm_debug("Removing callback for %s events", event); + pcmk__debug("Removing callback for %s events", event); new_client = pcmk__assert_alloc(1, sizeof(stonith_notify_client_t)); new_client->event = event; @@ -1372,7 +1376,7 @@ stonith_dump_pending_op(gpointer key, gpointer value, gpointer user_data) int call = GPOINTER_TO_INT(key); stonith_callback_client_t *blob = value; - crm_debug("Call %d (%s): pending", call, pcmk__s(blob->id, "no ID")); + pcmk__debug("Call %d (%s): pending", call, pcmk__s(blob->id, "no ID")); } void @@ -2181,7 +2185,7 @@ parse_list_line(const char *line, int len, GList **output) * @TODO Document or eliminate the implied restriction of target names */ if (strstr(line, "invalid") || strstr(line, "variable")) { - crm_debug("Skipping list output line: %s", line); + pcmk__debug("Skipping list output line: %s", line); return; } diff --git a/lib/lrmd/lrmd_client.c b/lib/lrmd/lrmd_client.c index f33c26efb78..c09151add1f 100644 --- a/lib/lrmd/lrmd_client.c +++ b/lib/lrmd/lrmd_client.c @@ -1140,7 +1140,7 @@ lrmd_ipc_connect(lrmd_t * lrmd, int *fd) } if (native->ipc == NULL) { - crm_debug("Could not connect to the executor API"); + pcmk__debug("Could not connect to the executor API"); rc = -ENOTCONN; } @@ -1240,7 +1240,7 @@ clear_key_cache(struct key_cache_s *key_cache) if ((key_cache->updated != 0) || (key_cache->location != NULL)) { key_cache->updated = 0; key_cache->location = NULL; - crm_debug("Cleared Pacemaker Remote key cache"); + pcmk__debug("Cleared Pacemaker Remote key cache"); } } @@ -1248,8 +1248,8 @@ static void get_cached_key(struct key_cache_s *key_cache, gnutls_datum_t *key) { copy_gnutls_datum(key, &(key_cache->key)); - crm_debug("Using cached Pacemaker Remote key from %s", - pcmk__s(key_cache->location, "unknown location")); + pcmk__debug("Using cached Pacemaker Remote key from %s", + pcmk__s(key_cache->location, "unknown location")); } static void @@ -1259,8 +1259,8 @@ cache_key(struct key_cache_s *key_cache, gnutls_datum_t *key, key_cache->updated = time(NULL); key_cache->location = location; copy_gnutls_datum(&(key_cache->key), key); - crm_debug("Using (and cacheing) Pacemaker Remote key from %s", - pcmk__s(location, "unknown location")); + pcmk__debug("Using (and cacheing) Pacemaker Remote key from %s", + pcmk__s(location, "unknown location")); } /*! @@ -1798,12 +1798,12 @@ lrmd_api_disconnect(lrmd_t * lrmd) switch (native->type) { case pcmk__client_ipc: - crm_debug("Disconnecting from local executor"); + pcmk__debug("Disconnecting from local executor"); lrmd_ipc_disconnect(lrmd); break; case pcmk__client_tls: - crm_debug("Disconnecting from remote executor on %s", - native->remote_nodename); + pcmk__debug("Disconnecting from remote executor on %s", + native->remote_nodename); lrmd_tls_disconnect(lrmd); break; default: diff --git a/lib/pacemaker/pcmk_cluster_queries.c b/lib/pacemaker/pcmk_cluster_queries.c index b747bd1737a..b41a4536f79 100644 --- a/lib/pacemaker/pcmk_cluster_queries.c +++ b/lib/pacemaker/pcmk_cluster_queries.c @@ -368,9 +368,9 @@ ipc_connect(data_t *data, enum pcmk_ipc_server server, pcmk_ipc_callback_t cb, /* EREMOTEIO may be expected and acceptable for some callers * on a Pacemaker Remote node */ - crm_debug("Ignoring %s connection failure: No " - "Pacemaker Remote connection", - pcmk_ipc_name(api, true)); + pcmk__debug("Ignoring %s connection failure: No Pacemaker " + "Remote connection", + pcmk_ipc_name(api, true)); rc = pcmk_rc_ok; } else { out->err(out, "error: Could not connect to %s: %s", diff --git a/lib/pacemaker/pcmk_graph_consumer.c b/lib/pacemaker/pcmk_graph_consumer.c index 538ed76007a..d701368a33e 100644 --- a/lib/pacemaker/pcmk_graph_consumer.c +++ b/lib/pacemaker/pcmk_graph_consumer.c @@ -218,7 +218,7 @@ pcmk__set_graph_functions(pcmk__graph_functions_t *fns) pcmk__assert((fns != NULL) && (fns->rsc != NULL) && (fns->cluster != NULL) && (fns->pseudo != NULL) && (fns->fence != NULL)); - crm_debug("Setting custom functions for executing transition graphs"); + pcmk__debug("Setting custom functions for executing transition graphs"); graph_fns = fns; } @@ -457,8 +457,8 @@ pcmk__execute_graph(pcmk__graph_t *graph) if ((graph->batch_limit > 0) && (graph->pending >= graph->batch_limit)) { - crm_debug("Throttling graph execution: batch limit (%d) reached", - graph->batch_limit); + pcmk__debug("Throttling graph execution: batch limit (%d) reached", + graph->batch_limit); break; } else if (pcmk__is_set(synapse->flags, pcmk__synapse_failed)) { @@ -797,9 +797,9 @@ pcmk__unpack_graph(const xmlNode *xml_graph, const char *reference) } } - crm_debug("Unpacked transition %d from %s: %d actions in %d synapses", - new_graph->id, new_graph->source, new_graph->num_actions, - new_graph->num_synapses); + pcmk__debug("Unpacked transition %d from %s: %d actions in %d synapses", + new_graph->id, new_graph->source, new_graph->num_actions, + new_graph->num_synapses); return new_graph; } @@ -859,7 +859,7 @@ pcmk__event_from_graph_action(const xmlNode *resource, int tmp = 0; pcmk__xe_get_int(xop, PCMK__XA_CALL_ID, &tmp); - crm_debug("Got call_id=%d for %s", tmp, pcmk__xe_id(resource)); + pcmk__debug("Got call_id=%d for %s", tmp, pcmk__xe_id(resource)); if (tmp > op->call_id) { op->call_id = tmp; } diff --git a/lib/pacemaker/pcmk_graph_logging.c b/lib/pacemaker/pcmk_graph_logging.c index c4b713c1591..186b238a5ac 100644 --- a/lib/pacemaker/pcmk_graph_logging.c +++ b/lib/pacemaker/pcmk_graph_logging.c @@ -214,7 +214,7 @@ pcmk__log_graph(unsigned int log_level, pcmk__graph_t *graph) { if ((graph == NULL) || (graph->num_actions == 0)) { if (log_level == LOG_TRACE) { - crm_debug("Empty transition graph"); + pcmk__debug("Empty transition graph"); } return; } diff --git a/lib/pacemaker/pcmk_graph_producer.c b/lib/pacemaker/pcmk_graph_producer.c index 3ebf11d5380..35c7248a978 100644 --- a/lib/pacemaker/pcmk_graph_producer.c +++ b/lib/pacemaker/pcmk_graph_producer.c @@ -279,16 +279,16 @@ add_resource_details(const pcmk_action_t *action, xmlNode *action_xml) * unique meta-attribute might have just been toggled from on to * off. */ - crm_debug("Using orphan clone name %s instead of history ID %s", - action->rsc->id, action->rsc->priv->history_id); + pcmk__debug("Using orphan clone name %s instead of history ID %s", + action->rsc->id, action->rsc->priv->history_id); pcmk__xe_set(rsc_xml, PCMK_XA_ID, action->rsc->priv->history_id); pcmk__xe_set(rsc_xml, PCMK__XA_LONG_ID, action->rsc->id); } else if (!pcmk__is_set(action->rsc->flags, pcmk__rsc_unique)) { const char *xml_id = pcmk__xe_id(action->rsc->priv->xml); - crm_debug("Using anonymous clone name %s for %s (aka %s)", - xml_id, action->rsc->id, action->rsc->priv->history_id); + pcmk__debug("Using anonymous clone name %s for %s (aka %s)", xml_id, + action->rsc->id, action->rsc->priv->history_id); /* ID is what we'd like client to use * LONG_ID is what they might know it as instead @@ -793,11 +793,9 @@ pcmk__graph_has_loop(const pcmk_action_t *init_action, } if (input->action == init_action) { - crm_debug("Input loop found in %s@%s ->...-> %s@%s", - action->uuid, - action->node? action->node->priv->name : "", - init_action->uuid, - init_action->node? init_action->node->priv->name : ""); + pcmk__debug("Input loop found in %s@%s ->...-> %s@%s", + action->uuid, pcmk__node_name(action->node), + init_action->uuid, pcmk__node_name(init_action->node)); return true; } diff --git a/lib/pacemaker/pcmk_injections.c b/lib/pacemaker/pcmk_injections.c index 277db992e2a..b345e7bbf61 100644 --- a/lib/pacemaker/pcmk_injections.c +++ b/lib/pacemaker/pcmk_injections.c @@ -520,8 +520,8 @@ set_ticket_state_attr(pcmk__output_t *out, const char *ticket_id, } if (rc == pcmk_rc_ok) { // Ticket state found, use it - crm_debug("Injecting attribute into existing ticket state %s", - ticket_id); + pcmk__debug("Injecting attribute into existing ticket state %s", + ticket_id); xml_top = ticket_state_xml; } else if (rc == ENXIO) { // No ticket state, create it diff --git a/lib/pacemaker/pcmk_sched_actions.c b/lib/pacemaker/pcmk_sched_actions.c index d73aef5f655..1abd964453c 100644 --- a/lib/pacemaker/pcmk_sched_actions.c +++ b/lib/pacemaker/pcmk_sched_actions.c @@ -1227,9 +1227,10 @@ pcmk__create_history_xml(xmlNode *parent, lrmd_event_data_t *op, } if (op->user_data == NULL) { - crm_debug("Generating fake transition key for: " PCMK__OP_FMT - " %d from %s", op->rsc_id, op->op_type, op->interval_ms, - op->call_id, origin); + pcmk__debug("Generating fake transition key for: " PCMK__OP_FMT + " %d from %s", + op->rsc_id, op->op_type, op->interval_ms, op->call_id, + origin); local_user_data = pcmk__transition_key(-1, op->call_id, target_rc, FAKE_TE_ID); op->user_data = local_user_data; diff --git a/lib/pacemaker/pcmk_sched_constraints.c b/lib/pacemaker/pcmk_sched_constraints.c index 3166a4e6097..950d77b1668 100644 --- a/lib/pacemaker/pcmk_sched_constraints.c +++ b/lib/pacemaker/pcmk_sched_constraints.c @@ -90,7 +90,7 @@ pcmk__find_constraint_resource(GList *rsc_list, const char *id) if (!pcmk__str_eq(match->id, id, pcmk__str_none)) { /* We found an instance of a clone instead */ match = uber_parent(match); - crm_debug("Found %s for %s", match->id, id); + pcmk__debug("Found %s for %s", match->id, id); } return match; } diff --git a/lib/pacemaker/pcmk_sched_fencing.c b/lib/pacemaker/pcmk_sched_fencing.c index aebeeb4aa2f..741a03c8964 100644 --- a/lib/pacemaker/pcmk_sched_fencing.c +++ b/lib/pacemaker/pcmk_sched_fencing.c @@ -479,8 +479,8 @@ pcmk__order_restart_vs_unfence(gpointer data, gpointer user_data) pcmk_action_t *unfence = pe_fence_op(node, PCMK_ACTION_ON, true, NULL, false, rsc->priv->scheduler); - crm_debug("Ordering any stops of %s before %s, and any starts after", - rsc->id, unfence->uuid); + pcmk__debug("Ordering any stops of %s before %s, and any starts after", + rsc->id, unfence->uuid); /* * It would be more efficient to order clone resources once, diff --git a/lib/pacemaker/pcmk_sched_location.c b/lib/pacemaker/pcmk_sched_location.c index 24cfbca464a..c8e255fa53f 100644 --- a/lib/pacemaker/pcmk_sched_location.c +++ b/lib/pacemaker/pcmk_sched_location.c @@ -438,13 +438,13 @@ unpack_simple_location(xmlNode *xml_obj, pcmk_scheduler_t *scheduler) status = regexec(®ex, r->id, nregs, pmatch, 0); if (!invert && (status == 0)) { - crm_debug("'%s' matched '%s' for %s", r->id, value, id); + pcmk__debug("'%s' matched '%s' for %s", r->id, value, id); unpack_rsc_location(xml_obj, r, NULL, NULL, r->id, nregs, pmatch); } else if (invert && (status != 0)) { - crm_debug("'%s' is an inverted match of '%s' for %s", - r->id, value, id); + pcmk__debug("'%s' is an inverted match of '%s' for %s", r->id, + value, id); unpack_rsc_location(xml_obj, r, NULL, NULL, NULL, 0, NULL); } else { diff --git a/lib/pacemaker/pcmk_sched_ordering.c b/lib/pacemaker/pcmk_sched_ordering.c index 84002ecbdbd..90f1114ca96 100644 --- a/lib/pacemaker/pcmk_sched_ordering.c +++ b/lib/pacemaker/pcmk_sched_ordering.c @@ -1456,9 +1456,9 @@ pcmk__order_after_each(pcmk_action_t *after, GList *list) pcmk_action_t *before = (pcmk_action_t *) iter->data; const char *before_desc = before->task? before->task : before->uuid; - crm_debug("Ordering %s on %s before %s on %s", - before_desc, pcmk__node_name(before->node), - after_desc, pcmk__node_name(after->node)); + pcmk__debug("Ordering %s on %s before %s on %s", before_desc, + pcmk__node_name(before->node), after_desc, + pcmk__node_name(after->node)); order_actions(before, after, pcmk__ar_ordered); } } diff --git a/lib/pacemaker/pcmk_sched_probes.c b/lib/pacemaker/pcmk_sched_probes.c index 8e454b81915..9ab4ac34bfb 100644 --- a/lib/pacemaker/pcmk_sched_probes.c +++ b/lib/pacemaker/pcmk_sched_probes.c @@ -137,9 +137,9 @@ probe_action(pcmk_resource_t *rsc, pcmk_node_t *node) pcmk_action_t *probe = NULL; char *key = pcmk__op_key(rsc->id, PCMK_ACTION_MONITOR, 0); - crm_debug("Scheduling probe of %s %s on %s", - pcmk_role_text(rsc->priv->orig_role), rsc->id, - pcmk__node_name(node)); + pcmk__debug("Scheduling probe of %s %s on %s", + pcmk_role_text(rsc->priv->orig_role), rsc->id, + pcmk__node_name(node)); probe = custom_action(rsc, key, PCMK_ACTION_MONITOR, node, FALSE, rsc->priv->scheduler); @@ -793,7 +793,7 @@ order_then_probes(pcmk_scheduler_t *scheduler) } if (start == NULL) { - crm_debug("No start action for %s", rsc->id); + pcmk__debug("No start action for %s", rsc->id); continue; } @@ -841,14 +841,14 @@ order_then_probes(pcmk_scheduler_t *scheduler) continue; } - crm_debug("Applying %s before %s", first->uuid, start->uuid); + pcmk__debug("Applying %s before %s", first->uuid, start->uuid); for (GList *probe_iter = probes; probe_iter != NULL; probe_iter = probe_iter->next) { pcmk_action_t *probe = (pcmk_action_t *) probe_iter->data; - crm_debug("Ordering %s before %s", first->uuid, probe->uuid); + pcmk__debug("Ordering %s before %s", first->uuid, probe->uuid); order_actions(first, probe, pcmk__ar_ordered); } } diff --git a/lib/pacemaker/pcmk_sched_recurring.c b/lib/pacemaker/pcmk_sched_recurring.c index 1062e21c298..4f8f087f81f 100644 --- a/lib/pacemaker/pcmk_sched_recurring.c +++ b/lib/pacemaker/pcmk_sched_recurring.c @@ -471,8 +471,8 @@ order_after_stops(pcmk_resource_t *rsc, const pcmk_node_t *node, } if (!pcmk__is_set(stop->flags, pcmk__action_runnable)) { - crm_debug("%s unrunnable on %s: stop is unrunnable", - action->uuid, pcmk__node_name(node)); + pcmk__debug("%s unrunnable on %s: stop is unrunnable", action->uuid, + pcmk__node_name(node)); pcmk__clear_action_flags(action, pcmk__action_runnable); } diff --git a/lib/pacemaker/pcmk_sched_tickets.c b/lib/pacemaker/pcmk_sched_tickets.c index 656beb83dd3..0a9287cb228 100644 --- a/lib/pacemaker/pcmk_sched_tickets.c +++ b/lib/pacemaker/pcmk_sched_tickets.c @@ -189,39 +189,39 @@ rsc_ticket_new(const char *id, pcmk_resource_t *rsc, pcmk__ticket_t *ticket, } if (new_rsc_ticket->loss_policy == loss_ticket_fence) { - crm_debug("On loss of ticket '%s': Fence the nodes running %s (%s)", - new_rsc_ticket->ticket->id, new_rsc_ticket->rsc->id, - pcmk_role_text(new_rsc_ticket->role)); + pcmk__debug("On loss of ticket '%s': Fence the nodes running %s (%s)", + new_rsc_ticket->ticket->id, new_rsc_ticket->rsc->id, + pcmk_role_text(new_rsc_ticket->role)); } else if (pcmk__str_eq(loss_policy, PCMK_VALUE_FREEZE, pcmk__str_casei)) { - crm_debug("On loss of ticket '%s': Freeze %s (%s)", - new_rsc_ticket->ticket->id, new_rsc_ticket->rsc->id, - pcmk_role_text(new_rsc_ticket->role)); + pcmk__debug("On loss of ticket '%s': Freeze %s (%s)", + new_rsc_ticket->ticket->id, new_rsc_ticket->rsc->id, + pcmk_role_text(new_rsc_ticket->role)); new_rsc_ticket->loss_policy = loss_ticket_freeze; } else if (pcmk__str_eq(loss_policy, PCMK_VALUE_DEMOTE, pcmk__str_casei)) { - crm_debug("On loss of ticket '%s': Demote %s (%s)", - new_rsc_ticket->ticket->id, new_rsc_ticket->rsc->id, - pcmk_role_text(new_rsc_ticket->role)); + pcmk__debug("On loss of ticket '%s': Demote %s (%s)", + new_rsc_ticket->ticket->id, new_rsc_ticket->rsc->id, + pcmk_role_text(new_rsc_ticket->role)); new_rsc_ticket->loss_policy = loss_ticket_demote; } else if (pcmk__str_eq(loss_policy, PCMK_VALUE_STOP, pcmk__str_casei)) { - crm_debug("On loss of ticket '%s': Stop %s (%s)", - new_rsc_ticket->ticket->id, new_rsc_ticket->rsc->id, - pcmk_role_text(new_rsc_ticket->role)); + pcmk__debug("On loss of ticket '%s': Stop %s (%s)", + new_rsc_ticket->ticket->id, new_rsc_ticket->rsc->id, + pcmk_role_text(new_rsc_ticket->role)); new_rsc_ticket->loss_policy = loss_ticket_stop; } else { if (new_rsc_ticket->role == pcmk_role_promoted) { - crm_debug("On loss of ticket '%s': Default to demote %s (%s)", - new_rsc_ticket->ticket->id, new_rsc_ticket->rsc->id, - pcmk_role_text(new_rsc_ticket->role)); + pcmk__debug("On loss of ticket '%s': Default to demote %s (%s)", + new_rsc_ticket->ticket->id, new_rsc_ticket->rsc->id, + pcmk_role_text(new_rsc_ticket->role)); new_rsc_ticket->loss_policy = loss_ticket_demote; } else { - crm_debug("On loss of ticket '%s': Default to stop %s (%s)", - new_rsc_ticket->ticket->id, new_rsc_ticket->rsc->id, - pcmk_role_text(new_rsc_ticket->role)); + pcmk__debug("On loss of ticket '%s': Default to stop %s (%s)", + new_rsc_ticket->ticket->id, new_rsc_ticket->rsc->id, + pcmk_role_text(new_rsc_ticket->role)); new_rsc_ticket->loss_policy = loss_ticket_stop; } } diff --git a/lib/pacemaker/pcmk_sched_utilization.c b/lib/pacemaker/pcmk_sched_utilization.c index f27ef133087..d3717270501 100644 --- a/lib/pacemaker/pcmk_sched_utilization.c +++ b/lib/pacemaker/pcmk_sched_utilization.c @@ -234,10 +234,10 @@ check_capacity(gpointer key, gpointer value, gpointer user_data) remaining = utilization_value(node_value_s); if (required > remaining) { - crm_debug("Remaining capacity for %s on %s (%d) is insufficient " - "for resource %s usage (%d)", - (const char *) key, pcmk__node_name(data->node), remaining, - data->rsc_id, required); + pcmk__debug("Remaining capacity for %s on %s (%d) is insufficient for " + "resource %s usage (%d)", + (const char *) key, pcmk__node_name(data->node), remaining, + data->rsc_id, required); data->is_enough = false; } } diff --git a/lib/pacemaker/pcmk_simulate.c b/lib/pacemaker/pcmk_simulate.c index 9e46504ad2a..b0785d18dfc 100644 --- a/lib/pacemaker/pcmk_simulate.c +++ b/lib/pacemaker/pcmk_simulate.c @@ -586,7 +586,7 @@ simulate_resource_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) // Certain actions don't need to be displayed or history entries if (pcmk__str_eq(operation, CRM_OP_REPROBE, pcmk__str_none)) { - crm_debug("No history injection for %s op on %s", operation, node); + pcmk__debug("No history injection for %s op on %s", operation, node); goto done; // Confirm action and update graph } diff --git a/lib/pengine/native.c b/lib/pengine/native.c index 855e3d05679..44da930b564 100644 --- a/lib/pengine/native.c +++ b/lib/pengine/native.c @@ -182,9 +182,9 @@ native_add_running(pcmk_resource_t *rsc, pcmk_node_t *node, */ break; } - crm_debug("%s is active on multiple nodes including %s: %s", - rsc->id, pcmk__node_name(node), - pcmk__multiply_active_text(rsc)); + pcmk__debug("%s is active on multiple nodes including %s: %s", + rsc->id, pcmk__node_name(node), + pcmk__multiply_active_text(rsc)); } else { pcmk__rsc_trace(rsc, "Resource %s is active on %s", diff --git a/lib/pengine/pe_health.c b/lib/pengine/pe_health.c index 65d1e8cdc72..ee21cf79c7a 100644 --- a/lib/pengine/pe_health.c +++ b/lib/pengine/pe_health.c @@ -55,11 +55,11 @@ pe__unpack_node_health_scores(pcmk_scheduler_t *scheduler) if ((pcmk__score_red != 0) || (pcmk__score_yellow != 0) || (pcmk__score_green != 0)) { - crm_debug("Values of node health scores: " - PCMK_VALUE_RED "=%d " - PCMK_VALUE_YELLOW "=%d " - PCMK_VALUE_GREEN "=%d", - pcmk__score_red, pcmk__score_yellow, pcmk__score_green); + pcmk__debug("Values of node health scores: " + PCMK_VALUE_RED "=%d " + PCMK_VALUE_YELLOW "=%d " + PCMK_VALUE_GREEN "=%d", + pcmk__score_red, pcmk__score_yellow, pcmk__score_green); } } diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c index 98971682919..cecae0db3bd 100644 --- a/lib/pengine/unpack.c +++ b/lib/pengine/unpack.c @@ -256,15 +256,15 @@ unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler) value = pcmk__cluster_option(config_hash, PCMK_OPT_STONITH_TIMEOUT); pcmk_parse_interval_spec(value, &(scheduler->priv->fence_timeout_ms)); - crm_debug("Default fencing action timeout: %s", - pcmk__readable_interval(scheduler->priv->fence_timeout_ms)); + pcmk__debug("Default fencing action timeout: %s", + pcmk__readable_interval(scheduler->priv->fence_timeout_ms)); set_config_flag(scheduler, PCMK_OPT_STONITH_ENABLED, pcmk__sched_fencing_enabled); if (pcmk__is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { - crm_debug("STONITH of failed nodes is enabled"); + pcmk__debug("STONITH of failed nodes is enabled"); } else { - crm_debug("STONITH of failed nodes is disabled"); + pcmk__debug("STONITH of failed nodes is disabled"); } scheduler->priv->fence_action = @@ -274,9 +274,9 @@ unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler) set_config_flag(scheduler, PCMK_OPT_CONCURRENT_FENCING, pcmk__sched_concurrent_fencing); if (pcmk__is_set(scheduler->flags, pcmk__sched_concurrent_fencing)) { - crm_debug("Concurrent fencing is enabled"); + pcmk__debug("Concurrent fencing is enabled"); } else { - crm_debug("Concurrent fencing is disabled"); + pcmk__debug("Concurrent fencing is disabled"); } value = pcmk__cluster_option(config_hash, PCMK_OPT_PRIORITY_FENCING_DELAY); @@ -289,13 +289,14 @@ unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler) set_config_flag(scheduler, PCMK_OPT_STOP_ALL_RESOURCES, pcmk__sched_stop_all); - crm_debug("Stop all active resources: %s", - pcmk__flag_text(scheduler->flags, pcmk__sched_stop_all)); + pcmk__debug("Stop all active resources: %s", + pcmk__flag_text(scheduler->flags, pcmk__sched_stop_all)); set_config_flag(scheduler, PCMK_OPT_SYMMETRIC_CLUSTER, pcmk__sched_symmetric_cluster); if (pcmk__is_set(scheduler->flags, pcmk__sched_symmetric_cluster)) { - crm_debug("Cluster is symmetric" " - resources can run anywhere by default"); + pcmk__debug("Cluster is symmetric" " - resources can run anywhere by " + "default"); } value = pcmk__cluster_option(config_hash, PCMK_OPT_NO_QUORUM_POLICY); @@ -337,16 +338,16 @@ unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler) switch (scheduler->no_quorum_policy) { case pcmk_no_quorum_freeze: - crm_debug("On loss of quorum: " - "Freeze resources that require quorum"); + pcmk__debug("On loss of quorum: Freeze resources that require " + "quorum"); break; case pcmk_no_quorum_stop: - crm_debug("On loss of quorum: " - "Stop resources that require quorum"); + pcmk__debug("On loss of quorum: Stop resources that require " + "quorum"); break; case pcmk_no_quorum_demote: - crm_debug("On loss of quorum: " - "Demote promotable resources and stop other resources"); + pcmk__debug("On loss of quorum: Demote promotable resources and " + "stop other resources"); break; case pcmk_no_quorum_fence: pcmk__notice("On loss of quorum: Fence all remaining nodes"); @@ -1596,8 +1597,8 @@ determine_online_status_no_fencing(pcmk_scheduler_t *scheduler, if (pcmk__str_eq(join, CRMD_JOINSTATE_MEMBER, pcmk__str_casei)) { online = TRUE; } else { - crm_debug("Node %s is not ready to run resources: %s", - pcmk__node_name(this_node), join); + pcmk__debug("Node %s is not ready to run resources: %s", + pcmk__node_name(this_node), join); } } else if (!pcmk__is_set(this_node->priv->flags, @@ -1686,7 +1687,7 @@ determine_online_status_fencing(pcmk_scheduler_t *scheduler, (termination_requested? " (termination requested)" : "")); if (this_node->details->shutdown) { - crm_debug("%s is shutting down", pcmk__node_name(this_node)); + pcmk__debug("%s is shutting down", pcmk__node_name(this_node)); /* Slightly different criteria since we can't shut down a dead peer */ return (when_online > 0); @@ -2003,7 +2004,7 @@ create_fake_resource(const char *rsc_id, const xmlNode *rsc_entry, if (xml_contains_remote_node(xml_rsc)) { pcmk_node_t *node; - crm_debug("Detected orphaned remote node %s", rsc_id); + pcmk__debug("Detected orphaned remote node %s", rsc_id); node = pcmk_find_node(scheduler, rsc_id); if (node == NULL) { node = pe_create_node(rsc_id, rsc_id, PCMK_VALUE_REMOTE, 0, @@ -2279,8 +2280,8 @@ process_orphan_resource(const xmlNode *rsc_entry, const pcmk_node_t *node, pcmk_resource_t *rsc = NULL; const char *rsc_id = pcmk__xe_get(rsc_entry, PCMK_XA_ID); - crm_debug("Detected orphan resource %s on %s", - rsc_id, pcmk__node_name(node)); + pcmk__debug("Detected orphan resource %s on %s", rsc_id, + pcmk__node_name(node)); rsc = create_fake_resource(rsc_id, rsc_entry, scheduler); if (rsc == NULL) { return NULL; diff --git a/lib/services/dbus.c b/lib/services/dbus.c index 9f32f82000e..f0bf141cee7 100644 --- a/lib/services/dbus.c +++ b/lib/services/dbus.c @@ -167,9 +167,9 @@ static void toggle_dbus_watch(DBusWatch *watch, void *data) { // @TODO Should this do something more? - crm_debug("DBus watch for file descriptor %d is now %s", - dbus_watch_get_unix_fd(watch), - (dbus_watch_get_enabled(watch)? "enabled" : "disabled")); + pcmk__debug("DBus watch for file descriptor %d is now %s", + dbus_watch_get_unix_fd(watch), + (dbus_watch_get_enabled(watch)? "enabled" : "disabled")); } static void @@ -198,8 +198,8 @@ register_watch_functions(DBusConnection *connection) static gboolean timer_popped(gpointer data) { - crm_debug("%dms DBus timer expired", - dbus_timeout_get_interval((DBusTimeout *) data)); + pcmk__debug("%dms DBus timer expired", + dbus_timeout_get_interval((DBusTimeout *) data)); dbus_timeout_handle(data); return FALSE; } diff --git a/lib/services/services.c b/lib/services/services.c index ed0e1b6457f..ad99ba96c64 100644 --- a/lib/services/services.c +++ b/lib/services/services.c @@ -123,7 +123,7 @@ expand_resource_class(const char *rsc, const char *standard, const char *agent) const char *found_class = resources_find_service_class(agent); if (found_class != NULL) { - crm_debug("Found %s agent %s for %s", found_class, agent, rsc); + pcmk__debug("Found %s agent %s for %s", found_class, agent, rsc); expanded_class = pcmk__str_copy(found_class); } else { const char *default_standard = NULL; @@ -516,8 +516,8 @@ services_action_cleanup(svc_action_t * op) pcmk__warn("Result of %s op %s was unhandled", op->standard, op->id); } else { - crm_debug("Will ignore any result of canceled %s op %s", - op->standard, op->id); + pcmk__debug("Will ignore any result of canceled %s op %s", + op->standard, op->id); } dbus_pending_call_cancel(op->opaque->pending); services_set_op_pending(op, NULL); diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c index f6ed746a1e6..fcc87d04f5d 100644 --- a/lib/services/services_linux.c +++ b/lib/services/services_linux.c @@ -525,7 +525,7 @@ recurring_action_timer(gpointer data) { svc_action_t *op = data; - crm_debug("Scheduling another invocation of %s", op->id); + pcmk__debug("Scheduling another invocation of %s", op->id); /* Clean out the old result */ free(op->stdout_data); @@ -719,7 +719,7 @@ async_action_complete(mainloop_child_t *p, pid_t pid, int core, int signo, close_op_input(op); if (signo == 0) { - crm_debug("%s[%d] exited with status %d", op->id, op->pid, exitcode); + pcmk__debug("%s[%d] exited with status %d", op->id, op->pid, exitcode); services__set_result(op, exitcode, PCMK_EXEC_DONE, NULL); log_op_output(op); parse_exit_reason_from_stderr(op); diff --git a/lib/services/systemd.c b/lib/services/systemd.c index f8432f12af2..6128b7f74b7 100644 --- a/lib/services/systemd.c +++ b/lib/services/systemd.c @@ -653,7 +653,7 @@ systemd_unit_listall(void) dbus_message_iter_get_basic(&elem, &value); if (value.str == NULL) { - crm_debug("ListUnitFiles reply did not provide a string"); + pcmk__debug("ListUnitFiles reply did not provide a string"); continue; } crm_trace("DBus ListUnitFiles listed: %s", value.str); @@ -661,8 +661,8 @@ systemd_unit_listall(void) match = systemd_unit_extension(value.str); if (match == NULL) { // This is not a unit file type we know how to manage - crm_debug("ListUnitFiles entry '%s' is not supported as resource", - value.str); + pcmk__debug("ListUnitFiles entry '%s' is not supported as resource", + value.str); continue; } @@ -833,8 +833,8 @@ process_unit_method_reply(DBusMessage *reply, svc_action_t *op) DBUS_TYPE_OBJECT_PATH, &path, DBUS_TYPE_INVALID); - crm_debug("DBus request for %s of %s using %s succeeded", - op->action, pcmk__s(op->rsc, "unknown resource"), path); + pcmk__debug("DBus request for %s of %s using %s succeeded", + op->action, pcmk__s(op->rsc, "unknown resource"), path); if (!op->synchronous && start_stop) { // Should be set to unknown/pending already @@ -1386,9 +1386,10 @@ services__execute_systemd(svc_action_t *op) goto done; } - crm_debug("Performing %ssynchronous %s op on systemd unit %s%s%s", - (op->synchronous? "" : "a"), op->action, op->agent, - ((op->rsc == NULL)? "" : " for resource "), pcmk__s(op->rsc, "")); + pcmk__debug("Performing %ssynchronous %s op on systemd unit %s%s%s", + (op->synchronous? "" : "a"), op->action, op->agent, + ((op->rsc != NULL)? " for resource " : ""), + pcmk__s(op->rsc, "")); if (pcmk__str_eq(op->action, PCMK_ACTION_META_DATA, pcmk__str_casei)) { op->stdout_data = systemd_unit_metadata(op->agent, op->timeout); diff --git a/tools/crm_mon.c b/tools/crm_mon.c index dda75c549f0..cede67dc27d 100644 --- a/tools/crm_mon.c +++ b/tools/crm_mon.c @@ -1691,7 +1691,8 @@ send_custom_trap(const char *node, const char *rsc, const char *task, int target char *status_s = pcmk__itoa(status); char *target_rc_s = pcmk__itoa(target_rc); - crm_debug("Sending external notification to '%s' via '%s'", options.external_recipient, options.external_agent); + pcmk__debug("Sending external notification to '%s' via '%s'", + options.external_recipient, options.external_agent); if(rsc) { setenv("CRM_notify_rsc", rsc, 1); @@ -1711,7 +1712,9 @@ send_custom_trap(const char *node, const char *rsc, const char *task, int target out->err(out, "notification fork() failed: %s", strerror(errno)); } if (pid == 0) { - /* crm_debug("notification: I am the child. Executing the nofitication program."); */ + /* pcmk__debug("notification: I am the child. Executing the " + * "notification program."); + */ execl(options.external_agent, options.external_agent, NULL); crm_exit(CRM_EX_ERROR); } @@ -1875,7 +1878,7 @@ crm_diff_update_element(xmlNode *change, void *userdata) /* Version field, ignore */ } else if(name == NULL) { - crm_debug("No result for %s operation to %s", op, xpath); + pcmk__debug("No result for %s operation to %s", op, xpath); pcmk__assert(pcmk__str_any_of(op, PCMK_VALUE_MOVE, PCMK_VALUE_DELETE, NULL)); diff --git a/tools/crm_node.c b/tools/crm_node.c index bffb3ccc3cf..752dd2751d7 100644 --- a/tools/crm_node.c +++ b/tools/crm_node.c @@ -603,8 +603,8 @@ purge_node_from_cib(const char *node_name, long node_id) cib__clean_up_connection(&cib); if ((rc == pcmk_rc_ok) && (commit_rc == pcmk_ok)) { - crm_debug("Purged node %s (%ld) from CIB", - pcmk__s(node_name, "by ID"), node_id); + pcmk__debug("Purged node %s (%ld) from CIB", + pcmk__s(node_name, "by ID"), node_id); } return rc; } @@ -696,8 +696,8 @@ purge_node_from_fencer(const char *node_name, long node_id) rc = crm_ipc_send(conn, cmd, 0, 0, NULL); if (rc >= 0) { rc = pcmk_rc_ok; - crm_debug("Purged node %s (%ld) from fencer", - pcmk__s(node_name, "by ID"), node_id); + pcmk__debug("Purged node %s (%ld) from fencer", + pcmk__s(node_name, "by ID"), node_id); } else { rc = pcmk_legacy2rc(rc); fprintf(stderr, "Could not purge node %s from fencer: %s\n", diff --git a/tools/crm_resource.c b/tools/crm_resource.c index e151bae481d..283355a42a0 100644 --- a/tools/crm_resource.c +++ b/tools/crm_resource.c @@ -249,7 +249,7 @@ controller_event_callback(pcmk_ipc_api_t *api, enum pcmk_ipc_event event_type, && g_main_loop_is_running(mainloop)) { out->info(out, "... got reply (done)"); - crm_debug("Got all the replies we expected"); + pcmk__debug("Got all the replies we expected"); pcmk_disconnect_ipc(api); *ec = CRM_EX_OK; @@ -921,9 +921,9 @@ cleanup(pcmk__output_t *out, pcmk_resource_t *rsc, pcmk_node_t *node, rsc = uber_parent(rsc); } - crm_debug("Erasing failures of %s (%s requested) on %s", - rsc->id, options.rsc_id, - ((node != NULL)? pcmk__node_name(node) : "all nodes")); + pcmk__debug("Erasing failures of %s (%s requested) on %s", rsc->id, + options.rsc_id, + ((node != NULL)? pcmk__node_name(node) : "all nodes")); rc = cli_resource_delete(controld_api, rsc, node, options.operation, options.interval_spec, true, options.force); @@ -1026,7 +1026,7 @@ refresh(pcmk__output_t *out, const pcmk_node_t *node, return CRM_EX_OK; } - crm_debug("Re-checking the state of all resources on %s", log_node_name); + pcmk__debug("Re-checking the state of all resources on %s", log_node_name); // @FIXME We shouldn't discard rc here rc = pcmk__attrd_api_clear_failures(NULL, node_name, NULL, NULL, NULL, NULL, @@ -1054,9 +1054,9 @@ refresh_resource(pcmk__output_t *out, pcmk_resource_t *rsc, pcmk_node_t *node, rsc = uber_parent(rsc); } - crm_debug("Re-checking the state of %s (%s requested) on %s", - rsc->id, options.rsc_id, - ((node != NULL)? pcmk__node_name(node) : "all nodes")); + pcmk__debug("Re-checking the state of %s (%s requested) on %s", rsc->id, + options.rsc_id, + ((node != NULL)? pcmk__node_name(node) : "all nodes")); rc = cli_resource_delete(controld_api, rsc, node, NULL, 0, false, options.force); @@ -1427,7 +1427,7 @@ handle_get_param(pcmk_resource_t *rsc, pcmk_node_t *node, cib_t *cib_conn, current = NULL; } - crm_debug("Looking up %s in %s", options.prop_name, rsc->id); + pcmk__debug("Looking up %s in %s", options.prop_name, rsc->id); if (pcmk__str_eq(options.attr_set_type, PCMK_XE_INSTANCE_ATTRIBUTES, pcmk__str_none)) { diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c index 6a2f0c24759..bb42b2f2a6b 100644 --- a/tools/crm_resource_runtime.c +++ b/tools/crm_resource_runtime.c @@ -450,8 +450,9 @@ update_attribute(pcmk_resource_t *rsc, const char *requested_name, switch (rc) { case pcmk_rc_ok: found_attr_id = pcmk__xe_get_copy(xml_search, PCMK_XA_ID); - crm_debug("Found a match for " PCMK_XA_NAME "='%s': " - PCMK_XA_ID "='%s'", attr_name, found_attr_id); + pcmk__debug("Found a match for " PCMK_XA_NAME "='%s': " + PCMK_XA_ID "='%s'", + attr_name, found_attr_id); rsc_attr_id = found_attr_id; break; @@ -549,15 +550,15 @@ update_attribute(pcmk_resource_t *rsc, const char *requested_name, lpc != NULL; lpc = lpc->next) { pcmk__colocation_t *cons = (pcmk__colocation_t *) lpc->data; - crm_debug("Checking %s %d", cons->id, cons->score); + pcmk__debug("Checking %s %d", cons->id, cons->score); if (pcmk__is_set(cons->dependent->flags, pcmk__rsc_detect_loop) || (cons->score <= 0)) { continue; } - crm_debug("Setting %s=%s for dependent resource %s", - attr_name, attr_value, cons->dependent->id); + pcmk__debug("Setting %s=%s for dependent resource %s", + attr_name, attr_value, cons->dependent->id); update_attribute(cons->dependent, cons->dependent->id, NULL, attr_set_type, NULL, attr_name, attr_value, recursive, cib, cib_xml_orig, force, results); @@ -930,8 +931,8 @@ clear_rsc_failures(pcmk__output_t *out, pcmk_ipc_api_t *controld_api, while (g_hash_table_iter_next(&iter, (gpointer *) &failed_id, NULL)) { pcmk_resource_t *rsc = NULL; - crm_debug("Erasing failures of %s on %s", - failed_id, pcmk__node_name(node)); + pcmk__debug("Erasing failures of %s on %s", failed_id, + pcmk__node_name(node)); rsc = pe_find_resource(scheduler->priv->resources, failed_id); if (rsc == NULL) { From 0aa86b85a0c98a2b393366ed3f616079c68c1919 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 27 Mar 2025 04:37:57 -0700 Subject: [PATCH 167/186] API: libcrmcommon: Deprecate crm_debug() Pacemaker should not be used for general-purpose logging. Ref T622 Signed-off-by: Reid Wahl --- include/crm/common/logging.h | 3 --- include/crm/common/logging_compat.h | 4 ++++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/include/crm/common/logging.h b/include/crm/common/logging.h index 00ea733b95e..d3c00bda268 100644 --- a/include/crm/common/logging.h +++ b/include/crm/common/logging.h @@ -346,9 +346,6 @@ pcmk__clip_log_level(int level) } \ } while (0) -// NOTE: sbd (as of at least 1.5.2) uses this -#define crm_debug(fmt, args...) do_crm_log_unlikely(LOG_DEBUG, fmt ,##args) - #define crm_trace(fmt, args...) do_crm_log_unlikely(LOG_TRACE, fmt ,##args) #define crm_log_xml_crit(xml, text) do_crm_log_xml(LOG_CRIT, text, xml) diff --git a/include/crm/common/logging_compat.h b/include/crm/common/logging_compat.h index 518b49a68d3..82458738d08 100644 --- a/include/crm/common/logging_compat.h +++ b/include/crm/common/logging_compat.h @@ -43,6 +43,10 @@ extern "C" { //! \deprecated Do not use #define crm_info(fmt, args...) qb_log(LOG_INFO, fmt, ##args) +// NOTE: sbd (as of at least 1.5.2) uses this +//! \deprecated Do not use +#define crm_debug(fmt, args...) do_crm_log_unlikely(LOG_DEBUG, fmt, ##args) + #ifdef __cplusplus } #endif From 21b0ec4426477afcf206e8bd662d60fda6bdb476 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 27 Mar 2025 12:01:32 -0700 Subject: [PATCH 168/186] Refactor: libcrmcommon: New PCMK__LOG_STDOUT To replace LOG_STDOUT. We can't even deprecate LOG_STDOUT until the public macros that use it are deprecated. The goal here is to get internal constants for LOG_STDOUT, LOG_NEVER, and ultimately LOG_TRACE. The prefix will be rather cumbersome for PCMK__LOG_TRACE. However, I want to make it clear that these log levels are custom extensions and are not broadly supported symbols. Signed-off-by: Reid Wahl --- include/crm/common/logging_internal.h | 28 +++++++++++++++++++++++---- lib/common/iso8601.c | 2 +- lib/common/logging.c | 8 ++++---- lib/common/mainloop.c | 2 +- 4 files changed, 30 insertions(+), 10 deletions(-) diff --git a/include/crm/common/logging_internal.h b/include/crm/common/logging_internal.h index c6c63c4e7ac..0b24e07bb11 100644 --- a/include/crm/common/logging_internal.h +++ b/include/crm/common/logging_internal.h @@ -20,6 +20,26 @@ extern "C" { #endif +/* Define custom log priorities. + * + * syslog(3) uses int for priorities, but libqb's struct qb_log_callsite uses + * uint8_t, so make sure they fit in the latter. + */ + +#ifndef PCMK__LOG_STDOUT +/*! + * \internal + * \brief Request to print message to \c stdout instead of logging it + * + * Some callees print nothing when this is the log level. + * + * \note This value must stay the same as \c LOG_STDOUT until the latter is + * dropped. Be mindful of public API functions that may pass arbitrary + * integer log levels as well. + */ +#define PCMK__LOG_STDOUT 254 +#endif // PCMK__LOG_STDOUT + /*! * \internal * \brief Log a message at \c LOG_EMERG level @@ -216,14 +236,14 @@ extern bool pcmk__config_has_warning; * \param[in] level Priority at which to log the messages * \param[in] xml XML to log * - * \note This does nothing when \p level is \c LOG_STDOUT. + * \note This does nothing when \p level is \c PCMK__LOG_STDOUT. */ #define pcmk__log_xml_changes(level, xml) do { \ uint8_t _level = pcmk__clip_log_level(level); \ static struct qb_log_callsite *xml_cs = NULL; \ \ switch (_level) { \ - case LOG_STDOUT: \ + case PCMK__LOG_STDOUT: \ case LOG_NEVER: \ break; \ default: \ @@ -247,14 +267,14 @@ extern bool pcmk__config_has_warning; * \param[in] level Priority at which to log the messages * \param[in] patchset XML patchset to log * - * \note This does nothing when \p level is \c LOG_STDOUT. + * \note This does nothing when \p level is \c PCMK__LOG_STDOUT. */ #define pcmk__log_xml_patchset(level, patchset) do { \ uint8_t _level = pcmk__clip_log_level(level); \ static struct qb_log_callsite *xml_cs = NULL; \ \ switch (_level) { \ - case LOG_STDOUT: \ + case PCMK__LOG_STDOUT: \ case LOG_NEVER: \ break; \ default: \ diff --git a/lib/common/iso8601.c b/lib/common/iso8601.c index 088d64a2ece..5705d6694da 100644 --- a/lib/common/iso8601.c +++ b/lib/common/iso8601.c @@ -279,7 +279,7 @@ crm_time_log_alias(int log_level, const char *file, const char *function, { char *date_s = crm_time_as_string(date_time, flags); - if (log_level == LOG_STDOUT) { + if (log_level == PCMK__LOG_STDOUT) { printf("%s%s%s\n", (prefix? prefix : ""), (prefix? ": " : ""), date_s); } else { diff --git a/lib/common/logging.c b/lib/common/logging.c index ef0c0518cf2..23e43f63a1d 100644 --- a/lib/common/logging.c +++ b/lib/common/logging.c @@ -1145,7 +1145,7 @@ crm_log_output_fn(const char *file, const char *function, int line, int level, c } if (output == NULL) { - if (level != LOG_STDOUT) { + if (level != PCMK__LOG_STDOUT) { level = LOG_TRACE; } output = "-- empty --"; @@ -1186,7 +1186,7 @@ pcmk__cli_init_logging(const char *name, unsigned int verbosity) * \param[in] text Prefix for each line * \param[in] xml XML to log * - * \note This does nothing when \p level is \p LOG_STDOUT. + * \note This does nothing when \p level is \c PCMK__LOG_STDOUT. * \note Do not call this function directly. It should be called only from the * \p do_crm_log_xml() macro. */ @@ -1225,7 +1225,7 @@ pcmk_log_xml_as(const char *file, const char *function, uint32_t line, * \param[in] level Priority at which to log the messages * \param[in] xml XML whose changes to log * - * \note This does nothing when \p level is \c LOG_STDOUT. + * \note This does nothing when \p level is \c PCMK__LOG_STDOUT. */ void pcmk__log_xml_changes_as(const char *file, const char *function, uint32_t line, @@ -1256,7 +1256,7 @@ pcmk__log_xml_changes_as(const char *file, const char *function, uint32_t line, * \param[in] level Priority at which to log the messages * \param[in] patchset XML patchset to log * - * \note This does nothing when \p level is \c LOG_STDOUT. + * \note This does nothing when \p level is \c PCMK__LOG_STDOUT. */ void pcmk__log_xml_patchset_as(const char *file, const char *function, uint32_t line, diff --git a/lib/common/mainloop.c b/lib/common/mainloop.c index 770e69ee887..95dc3451055 100644 --- a/lib/common/mainloop.c +++ b/lib/common/mainloop.c @@ -923,7 +923,7 @@ mainloop_add_ipc_client(const char *name, int priority, size_t max_size, &source); if (rc != pcmk_rc_ok) { - if (crm_log_level == LOG_STDOUT) { + if (crm_log_level == PCMK__LOG_STDOUT) { fprintf(stderr, "Connection to %s failed: %s", name, pcmk_rc_str(rc)); } From d9349a7552b5b6954ba6eea1d44a3ff6a10127b9 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 27 Mar 2025 13:09:31 -0700 Subject: [PATCH 169/186] Refactor: libcrmcommon: New PCMK__LOG_NEVER To replace LOG_NEVER. We can't even deprecate LOG_NEVER until the public macros that use it are deprecated. The goal here is to get internal constants for LOG_STDOUT, LOG_NEVER, and ultimately LOG_TRACE. The prefix will be rather cumbersome for PCMK__LOG_TRACE. However, I want to make it clear that these log levels are custom extensions and are not broadly supported symbols. Signed-off-by: Reid Wahl --- daemons/fenced/fenced_cib.c | 4 ++-- daemons/fenced/fenced_commands.c | 8 ++++---- daemons/fenced/fenced_history.c | 4 ++-- daemons/fenced/fenced_remote.c | 4 ++-- include/crm/common/logging_internal.h | 22 ++++++++++++++++++---- lib/common/acl.c | 2 +- lib/common/crmcommon_private.h | 5 ++--- lib/common/logging.c | 2 +- lib/common/patchset_display.c | 2 +- lib/common/xpath.c | 6 +++--- lib/fencing/st_actions.c | 2 +- lib/fencing/st_client.c | 2 +- lib/pacemaker/pcmk_resource.c | 2 +- lib/pacemaker/pcmk_sched_actions.c | 2 +- lib/pengine/status.c | 8 ++++---- 15 files changed, 44 insertions(+), 31 deletions(-) diff --git a/daemons/fenced/fenced_cib.c b/daemons/fenced/fenced_cib.c index edff4508c27..f1bae5572cd 100644 --- a/daemons/fenced/fenced_cib.c +++ b/daemons/fenced/fenced_cib.c @@ -61,7 +61,7 @@ node_has_attr(const char *node, const char *name, const char *value) "[@" PCMK_XA_NAME "='", name, "' " "and @" PCMK_XA_VALUE "='", value, "']", NULL); - match = pcmk__xpath_find_one(local_cib->doc, xpath->str, LOG_NEVER); + match = pcmk__xpath_find_one(local_cib->doc, xpath->str, PCMK__LOG_NEVER); g_string_free(xpath, TRUE); return (match != NULL); @@ -178,7 +178,7 @@ update_stonith_watchdog_timeout_ms(xmlNode *cib) // @TODO An XPath search can't handle multiple instances or rules stonith_watchdog_xml = pcmk__xpath_find_one(cib->doc, XPATH_WATCHDOG_TIMEOUT, - LOG_NEVER); + PCMK__LOG_NEVER); if (stonith_watchdog_xml) { value = pcmk__xe_get(stonith_watchdog_xml, PCMK_XA_VALUE); } diff --git a/daemons/fenced/fenced_commands.c b/daemons/fenced/fenced_commands.c index 9e14312605b..5dee1bcc959 100644 --- a/daemons/fenced/fenced_commands.c +++ b/daemons/fenced/fenced_commands.c @@ -2541,7 +2541,7 @@ log_async_result(const async_command_t *cmd, int pid, const char *next, bool op_merged) { int log_level = LOG_ERR; - int output_log_level = LOG_NEVER; + int output_log_level = PCMK__LOG_NEVER; guint devices_remaining = g_list_length(cmd->next_device_iter); GString *msg = g_string_sized_new(80); // Reasonable starting size @@ -2605,7 +2605,7 @@ log_async_result(const async_command_t *cmd, g_string_free(msg, TRUE); // Log the output (which may have multiple lines), if appropriate - if (output_log_level != LOG_NEVER) { + if (output_log_level != PCMK__LOG_NEVER) { char *prefix = pcmk__assert_asprintf("%s[%d]", cmd->device, pid); crm_log_output(output_log_level, prefix, result->action_stdout); @@ -3217,7 +3217,7 @@ handle_query_request(pcmk__request_t *request) dev = pcmk__xpath_find_one(request->xml->doc, "//*[@" PCMK__XA_ST_DEVICE_ACTION "]", - LOG_NEVER); + PCMK__LOG_NEVER); if (dev != NULL) { const char *device = pcmk__xe_get(dev, PCMK__XA_ST_DEVICE_ID); @@ -3647,7 +3647,7 @@ stonith_command(pcmk__client_t *client, uint32_t id, uint32_t flags, CRM_CHECK(message != NULL, return); if (pcmk__xpath_find_one(message->doc, "//" PCMK__XE_ST_REPLY, - LOG_NEVER) != NULL) { + PCMK__LOG_NEVER) != NULL) { is_reply = true; } diff --git a/daemons/fenced/fenced_history.c b/daemons/fenced/fenced_history.c index 3e1b9ccef58..909bdf3221b 100644 --- a/daemons/fenced/fenced_history.c +++ b/daemons/fenced/fenced_history.c @@ -478,7 +478,7 @@ stonith_fence_history(xmlNode *msg, xmlNode **output, const char *target = NULL; xmlNode *dev = pcmk__xpath_find_one(msg->doc, "//*[@" PCMK__XA_ST_TARGET "]", - LOG_NEVER); + PCMK__LOG_NEVER); xmlNode *out_history = NULL; if (dev) { @@ -528,7 +528,7 @@ stonith_fence_history(xmlNode *msg, xmlNode **output, pcmk__str_casei)) { xmlNode *history = pcmk__xpath_find_one(msg->doc, "//" PCMK__XE_ST_HISTORY, - LOG_NEVER); + PCMK__LOG_NEVER); /* either a broadcast created directly upon stonith-API request * or a diff as response to such a thing diff --git a/daemons/fenced/fenced_remote.c b/daemons/fenced/fenced_remote.c index facc2533798..64870d2d726 100644 --- a/daemons/fenced/fenced_remote.c +++ b/daemons/fenced/fenced_remote.c @@ -521,7 +521,7 @@ delegate_from_xml(xmlNode *xml) { xmlNode *match = pcmk__xpath_find_one(xml->doc, "//*[@" PCMK__XA_ST_DELEGATE "]", - LOG_NEVER); + PCMK__LOG_NEVER); if (match == NULL) { return pcmk__xe_get_copy(xml, PCMK__XA_SRC); @@ -1163,7 +1163,7 @@ create_remote_stonith_op(const char *client, xmlNode *request, gboolean peer) remote_fencing_op_t *op = NULL; xmlNode *dev = pcmk__xpath_find_one(request->doc, "//*[@" PCMK__XA_ST_TARGET "]", - LOG_NEVER); + PCMK__LOG_NEVER); int rc = pcmk_rc_ok; const char *operation = NULL; diff --git a/include/crm/common/logging_internal.h b/include/crm/common/logging_internal.h index 0b24e07bb11..2931a9d955e 100644 --- a/include/crm/common/logging_internal.h +++ b/include/crm/common/logging_internal.h @@ -40,6 +40,18 @@ extern "C" { #define PCMK__LOG_STDOUT 254 #endif // PCMK__LOG_STDOUT +#ifndef PCMK__LOG_NEVER +/*! + * \internal + * \brief Request not to print or log message anywhere + * + * \note This value must stay the same as \c LOG_NEVER until the latter is + * dropped. Be mindful of public API functions that may pass arbitrary + * integer log levels as well. + */ +#define PCMK__LOG_NEVER 255 +#endif // PCMK__LOG_NEVER + /*! * \internal * \brief Log a message at \c LOG_EMERG level @@ -236,7 +248,8 @@ extern bool pcmk__config_has_warning; * \param[in] level Priority at which to log the messages * \param[in] xml XML to log * - * \note This does nothing when \p level is \c PCMK__LOG_STDOUT. + * \note This does nothing when \p level is \c PCMK__LOG_STDOUT or + * \c PCMK__LOG_NEVER. */ #define pcmk__log_xml_changes(level, xml) do { \ uint8_t _level = pcmk__clip_log_level(level); \ @@ -244,7 +257,7 @@ extern bool pcmk__config_has_warning; \ switch (_level) { \ case PCMK__LOG_STDOUT: \ - case LOG_NEVER: \ + case PCMK__LOG_NEVER: \ break; \ default: \ if (xml_cs == NULL) { \ @@ -267,7 +280,8 @@ extern bool pcmk__config_has_warning; * \param[in] level Priority at which to log the messages * \param[in] patchset XML patchset to log * - * \note This does nothing when \p level is \c PCMK__LOG_STDOUT. + * \note This does nothing when \p level is \c PCMK__LOG_STDOUT or + * \c PCMK__LOG_NEVER. */ #define pcmk__log_xml_patchset(level, patchset) do { \ uint8_t _level = pcmk__clip_log_level(level); \ @@ -275,7 +289,7 @@ extern bool pcmk__config_has_warning; \ switch (_level) { \ case PCMK__LOG_STDOUT: \ - case LOG_NEVER: \ + case PCMK__LOG_NEVER: \ break; \ default: \ if (xml_cs == NULL) { \ diff --git a/lib/common/acl.c b/lib/common/acl.c index f758f92c855..e37345d949f 100644 --- a/lib/common/acl.c +++ b/lib/common/acl.c @@ -334,7 +334,7 @@ pcmk__unpack_acl(xmlNode *source, xmlNode *target, const char *user) } else if (docpriv->acls == NULL) { xmlNode *acls = pcmk__xpath_find_one(source->doc, "//" PCMK_XE_ACLS, - LOG_NEVER); + PCMK__LOG_NEVER); pcmk__str_update(&(docpriv->acl_user), user); diff --git a/lib/common/crmcommon_private.h b/lib/common/crmcommon_private.h index 9d8fba2c9e2..ab89acc0e53 100644 --- a/lib/common/crmcommon_private.h +++ b/lib/common/crmcommon_private.h @@ -25,7 +25,6 @@ #include // pcmk_ipc_api_t, crm_ipc_t, etc. #include // crm_time_t -#include // LOG_NEVER #include // mainloop_io_t #include // pcmk__output_t #include // crm_exit_t @@ -102,13 +101,13 @@ typedef struct xml_doc_private_s { #define pcmk__set_xml_flags(xml_priv, flags_to_set) do { \ (xml_priv)->flags = pcmk__set_flags_as(__func__, __LINE__, \ - LOG_NEVER, "XML", "XML node", (xml_priv)->flags, \ + PCMK__LOG_NEVER, "XML", "XML node", (xml_priv)->flags, \ (flags_to_set), #flags_to_set); \ } while (0) #define pcmk__clear_xml_flags(xml_priv, flags_to_clear) do { \ (xml_priv)->flags = pcmk__clear_flags_as(__func__, __LINE__, \ - LOG_NEVER, "XML", "XML node", (xml_priv)->flags, \ + PCMK__LOG_NEVER, "XML", "XML node", (xml_priv)->flags, \ (flags_to_clear), #flags_to_clear); \ } while (0) diff --git a/lib/common/logging.c b/lib/common/logging.c index 23e43f63a1d..30cce82e09b 100644 --- a/lib/common/logging.c +++ b/lib/common/logging.c @@ -1140,7 +1140,7 @@ crm_log_output_fn(const char *file, const char *function, int line, int level, c const char *next = NULL; const char *offset = NULL; - if (level == LOG_NEVER) { + if (level == PCMK__LOG_NEVER) { return; } diff --git a/lib/common/patchset_display.c b/lib/common/patchset_display.c index a5bab26b95c..c8b61212133 100644 --- a/lib/common/patchset_display.c +++ b/lib/common/patchset_display.c @@ -243,7 +243,7 @@ xml_patchset_log(pcmk__output_t *out, va_list args) uint8_t log_level = pcmk__output_get_log_level(out); int format = 1; - if (log_level == LOG_NEVER) { + if (log_level == PCMK__LOG_NEVER) { return pcmk_rc_no_output; } diff --git a/lib/common/xpath.c b/lib/common/xpath.c index f2c7a0a9307..73cc4611853 100644 --- a/lib/common/xpath.c +++ b/lib/common/xpath.c @@ -222,7 +222,7 @@ pcmk__xpath_find_one(xmlDoc *doc, const char *path, uint8_t level) goto done; } - if (level >= LOG_NEVER) { + if (level >= PCMK__LOG_NEVER) { // For no matches or multiple matches, the rest is just logging goto done; } @@ -545,14 +545,14 @@ get_xpath_object(const char *xpath, xmlNode * xml_obj, int error_level) max = pcmk__xpath_num_results(xpathObj); if (max == 0) { - if (error_level < LOG_NEVER) { + if (error_level < PCMK__LOG_NEVER) { do_crm_log(error_level, "No match for %s in %s", xpath, pcmk__s(nodePath, "unknown path")); crm_log_xml_explicit(xml_obj, "Unexpected Input"); } } else if (max > 1) { - if (error_level < LOG_NEVER) { + if (error_level < PCMK__LOG_NEVER) { int lpc = 0; do_crm_log(error_level, "Too many matches for %s in %s", diff --git a/lib/fencing/st_actions.c b/lib/fencing/st_actions.c index 6c1fea14212..3b33b640dba 100644 --- a/lib/fencing/st_actions.c +++ b/lib/fencing/st_actions.c @@ -475,7 +475,7 @@ stonith__find_xe_with_result(xmlNode *xml) { xmlNode *match = pcmk__xpath_find_one(xml->doc, "//*[@" PCMK__XA_RC_CODE "]", - LOG_NEVER); + PCMK__LOG_NEVER); if (match == NULL) { /* @COMPAT Peers <=2.1.2 in a rolling upgrade provide only a legacy diff --git a/lib/fencing/st_client.c b/lib/fencing/st_client.c index bcd5cd88f34..bc4e5f0e2f8 100644 --- a/lib/fencing/st_client.c +++ b/lib/fencing/st_client.c @@ -730,7 +730,7 @@ stonith_api_history(stonith_t * stonith, int call_options, const char *node, xmlNode *op = NULL; xmlNode *reply = pcmk__xpath_find_one(output->doc, "//" PCMK__XE_ST_HISTORY, - LOG_NEVER); + PCMK__LOG_NEVER); for (op = pcmk__xe_first_child(reply, NULL, NULL, NULL); op != NULL; op = pcmk__xe_next(op, NULL)) { diff --git a/lib/pacemaker/pcmk_resource.c b/lib/pacemaker/pcmk_resource.c index 01bf6088591..9071f4ba3c1 100644 --- a/lib/pacemaker/pcmk_resource.c +++ b/lib/pacemaker/pcmk_resource.c @@ -43,7 +43,7 @@ best_op(const pcmk_resource_t *rsc, const pcmk_node_t *node) // Find node's resource history xpath = pcmk__assert_asprintf(XPATH_OP_HISTORY, node->priv->name, rsc->id); history = pcmk__xpath_find_one(rsc->priv->scheduler->input->doc, xpath, - LOG_NEVER); + PCMK__LOG_NEVER); free(xpath); // Examine each history entry diff --git a/lib/pacemaker/pcmk_sched_actions.c b/lib/pacemaker/pcmk_sched_actions.c index 1abd964453c..23b29399d44 100644 --- a/lib/pacemaker/pcmk_sched_actions.c +++ b/lib/pacemaker/pcmk_sched_actions.c @@ -1954,7 +1954,7 @@ pcmk__handle_rsc_config_changes(pcmk_scheduler_t *scheduler) xpath = pcmk__assert_asprintf(XPATH_NODE_HISTORY, node->priv->name); history = pcmk__xpath_find_one(scheduler->input->doc, xpath, - LOG_NEVER); + PCMK__LOG_NEVER); free(xpath); process_node_history(node, history); diff --git a/lib/pengine/status.c b/lib/pengine/status.c index 27667a10b77..5e9ea684473 100644 --- a/lib/pengine/status.c +++ b/lib/pengine/status.c @@ -38,7 +38,7 @@ check_for_deprecated_rules(pcmk_scheduler_t *scheduler) // @COMPAT Drop this function when support for the syntax is dropped xmlNode *deprecated = pcmk__xpath_find_one(scheduler->input->doc, XPATH_DEPRECATED_RULES, - LOG_NEVER); + PCMK__LOG_NEVER); if (deprecated != NULL) { pcmk__warn_once(pcmk__wo_op_attr_expr, @@ -106,12 +106,12 @@ cluster_status(pcmk_scheduler_t * scheduler) scheduler->priv->op_defaults = pcmk__xpath_find_one(scheduler->input->doc, "//" PCMK_XE_OP_DEFAULTS, - LOG_NEVER); + PCMK__LOG_NEVER); check_for_deprecated_rules(scheduler); scheduler->priv->rsc_defaults = pcmk__xpath_find_one(scheduler->input->doc, "//" PCMK_XE_RSC_DEFAULTS, - LOG_NEVER); + PCMK__LOG_NEVER); section = pcmk__xpath_find_one(scheduler->input->doc, "//" PCMK_XE_CRM_CONFIG, LOG_TRACE); @@ -141,7 +141,7 @@ cluster_status(pcmk_scheduler_t * scheduler) pcmk__validate_fencing_topology(section); section = pcmk__xpath_find_one(scheduler->input->doc, "//" PCMK_XE_TAGS, - LOG_NEVER); + PCMK__LOG_NEVER); unpack_tags(section, scheduler); if (!pcmk__is_set(scheduler->flags, pcmk__sched_location_only)) { From 71f44059eb0b1a30410d6f5eccee16edf8cc8c16 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 27 Mar 2025 13:23:06 -0700 Subject: [PATCH 170/186] Doc: libcrmcommon: Add caveat to mark_child_deleted() doxygen Just came to mind Signed-off-by: Reid Wahl --- lib/common/xml.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/common/xml.c b/lib/common/xml.c index bcd3011a108..6bcec942b4c 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -1315,6 +1315,11 @@ xml_diff_attrs(xmlNode *old_xml, xmlNode *new_xml) * * \param[in,out] old_child Child of old XML * \param[in,out] new_parent New XML that does not contain \p old_child + * + * \note The deletion is checked using the new XML's ACLs. The ACLs may have + * also changed between the old and new XML trees. Callers should take + * reasonable action if there were ACL changes that themselves would have + * been denied. */ static void mark_child_deleted(xmlNode *old_child, xmlNode *new_parent) From c4e2d8838d259098192a417ab5a126868e533f3d Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 27 Mar 2025 14:29:12 -0700 Subject: [PATCH 171/186] Refactor: libcrmcommon: New PCMK__LOG_TRACE To replace LOG_TRACE. We can't even deprecate LOG_NEVER until the public macros that use it are deprecated. The goal here is to get internal constants for LOG_STDOUT, LOG_NEVER, and LOG_TRACE. I want to make it clear that these log levels are custom extensions and are not broadly supported symbols. Signed-off-by: Reid Wahl --- daemons/attrd/pacemaker-attrd.h | 46 +++++++++------ daemons/based/based_callbacks.c | 6 +- daemons/based/based_notify.c | 2 +- daemons/controld/controld_fsa.c | 2 +- daemons/controld/controld_fsa.h | 5 +- daemons/controld/controld_globals.h | 14 +++-- daemons/controld/controld_lrm.h | 21 +++++-- daemons/controld/controld_messages.c | 4 +- daemons/controld/controld_metadata.h | 23 +++++--- daemons/controld/controld_remote_ra.c | 56 +++++++++++-------- daemons/controld/controld_transition.c | 2 +- daemons/controld/pacemaker-controld.c | 2 +- daemons/execd/execd_commands.c | 2 +- daemons/fenced/fenced_commands.c | 6 +- daemons/fenced/fenced_scheduler.c | 2 +- daemons/schedulerd/pacemaker-schedulerd.c | 2 +- devel/scratch.c | 4 +- include/crm/cib/internal.h | 12 ++-- include/crm/common/action_relation_internal.h | 23 ++++---- include/crm/common/actions_internal.h | 15 ++--- include/crm/common/attrs_internal.h | 20 +++++-- include/crm/common/ipc_internal.h | 35 +++++++----- include/crm/common/logging_internal.h | 42 +++++++++----- include/crm/common/messages_internal.h | 5 +- include/crm/common/nodes_internal.h | 22 +++++--- include/crm/common/resources_internal.h | 20 +++++-- include/crm/common/scheduler_internal.h | 22 ++++++-- include/crm/common/tickets_internal.h | 25 ++++++--- include/crm/fencing/internal.h | 35 ++++++------ include/pcmki/pcmki_transition.h | 48 +++++++++------- lib/cib/cib_file.c | 29 +++++----- lib/cib/cib_utils.c | 2 +- lib/cluster/cpg.c | 2 +- lib/cluster/election.c | 2 +- lib/cluster/membership.c | 31 +++++----- lib/common/acl.c | 2 +- lib/common/cib.c | 2 +- lib/common/iso8601.c | 30 ++++++---- lib/common/logging.c | 12 ++-- lib/common/nodes.c | 2 +- lib/common/patchset.c | 2 +- .../tests/flags/pcmk__clear_flags_as_test.c | 32 ++++++----- .../tests/flags/pcmk__set_flags_as_test.c | 17 +++--- lib/common/xml.c | 6 +- lib/fencing/st_actions.c | 2 +- lib/pacemaker/libpacemaker_private.h | 5 +- lib/pacemaker/pcmk_graph_logging.c | 2 +- lib/pacemaker/pcmk_injections.c | 3 +- lib/pacemaker/pcmk_sched_instances.c | 8 +-- lib/pacemaker/pcmk_sched_recurring.c | 2 +- lib/pacemaker/pcmk_scheduler.c | 2 +- lib/pengine/bundle.c | 2 +- lib/pengine/clone.c | 5 +- lib/pengine/complex.c | 3 +- lib/pengine/status.c | 11 ++-- lib/pengine/unpack.c | 16 ++++-- lib/pengine/utils.c | 7 +-- tools/crm_error.c | 8 +-- 58 files changed, 460 insertions(+), 310 deletions(-) diff --git a/daemons/attrd/pacemaker-attrd.h b/daemons/attrd/pacemaker-attrd.h index cc0dcf29ee4..ebb1250501b 100644 --- a/daemons/attrd/pacemaker-attrd.h +++ b/daemons/attrd/pacemaker-attrd.h @@ -15,6 +15,7 @@ #include #include #include +#include // PCMK__LOG_TRACE #include #include @@ -141,16 +142,21 @@ typedef struct attribute_s { mainloop_timer_t *timer; // Timer to use for timeout_ms } attribute_t; -#define attrd_set_attr_flags(attr, flags_to_set) do { \ - (attr)->flags = pcmk__set_flags_as(__func__, __LINE__, \ - LOG_TRACE, "Value for attribute", (attr)->id, \ - (attr)->flags, (flags_to_set), #flags_to_set); \ +#define attrd_set_attr_flags(attr, flags_to_set) do { \ + (attr)->flags = pcmk__set_flags_as(__func__, __LINE__, \ + PCMK__LOG_TRACE, \ + "Value for attribute", \ + (attr)->id, (attr)->flags, \ + (flags_to_set), #flags_to_set); \ } while (0) -#define attrd_clear_attr_flags(attr, flags_to_clear) do { \ - (attr)->flags = pcmk__clear_flags_as(__func__, __LINE__, \ - LOG_TRACE, "Value for attribute", (attr)->id, \ - (attr)->flags, (flags_to_clear), #flags_to_clear); \ +#define attrd_clear_attr_flags(attr, flags_to_clear) do { \ + (attr)->flags = pcmk__clear_flags_as(__func__, __LINE__, \ + PCMK__LOG_TRACE, \ + "Value for attribute", \ + (attr)->id, (attr)->flags, \ + (flags_to_clear), \ + #flags_to_clear); \ } while (0) enum attrd_value_flags { @@ -166,16 +172,24 @@ typedef struct attribute_value_s { uint32_t flags; // Group of attrd_value_flags } attribute_value_t; -#define attrd_set_value_flags(attr_value, flags_to_set) do { \ - (attr_value)->flags = pcmk__set_flags_as(__func__, __LINE__, \ - LOG_TRACE, "Value for node", (attr_value)->nodename, \ - (attr_value)->flags, (flags_to_set), #flags_to_set); \ +#define attrd_set_value_flags(attr_value, flags_to_set) do { \ + (attr_value)->flags = pcmk__set_flags_as(__func__, __LINE__, \ + PCMK__LOG_TRACE, \ + "Value for node", \ + (attr_value)->nodename, \ + (attr_value)->flags, \ + (flags_to_set), \ + #flags_to_set); \ } while (0) -#define attrd_clear_value_flags(attr_value, flags_to_clear) do { \ - (attr_value)->flags = pcmk__clear_flags_as(__func__, __LINE__, \ - LOG_TRACE, "Value for node", (attr_value)->nodename, \ - (attr_value)->flags, (flags_to_clear), #flags_to_clear); \ +#define attrd_clear_value_flags(attr_value, flags_to_clear) do { \ + (attr_value)->flags = pcmk__clear_flags_as(__func__, __LINE__, \ + PCMK__LOG_TRACE, \ + "Value for node", \ + (attr_value)->nodename, \ + (attr_value)->flags, \ + (flags_to_clear), \ + #flags_to_clear); \ } while (0) extern pcmk_cluster_t *attrd_cluster; diff --git a/daemons/based/based_callbacks.c b/daemons/based/based_callbacks.c index 5300c9acac5..8c507053dcb 100644 --- a/daemons/based/based_callbacks.c +++ b/daemons/based/based_callbacks.c @@ -873,7 +873,7 @@ cib_process_request(xmlNode *request, gboolean privileged, &result_diff, privileged); if (!is_update) { - level = LOG_TRACE; + level = PCMK__LOG_TRACE; } else if (pcmk__xe_attr_is_true(request, PCMK__XA_CIB_UPDATE)) { switch (rc) { @@ -883,7 +883,7 @@ cib_process_request(xmlNode *request, gboolean privileged, case -pcmk_err_old_data: case -pcmk_err_diff_resync: case -pcmk_err_diff_failed: - level = LOG_TRACE; + level = PCMK__LOG_TRACE; break; default: level = LOG_ERR; @@ -1191,7 +1191,7 @@ cib_process_command(xmlNode *request, const cib__operation_t *operation, input, *cib_diff); } - pcmk__log_xml_patchset(LOG_TRACE, *cib_diff); + pcmk__log_xml_patchset(PCMK__LOG_TRACE, *cib_diff); done: if (!pcmk__is_set(call_options, cib_discard_reply)) { diff --git a/daemons/based/based_notify.c b/daemons/based/based_notify.c index 694a637ce17..66ae13b2503 100644 --- a/daemons/based/based_notify.c +++ b/daemons/based/based_notify.c @@ -136,7 +136,7 @@ cib_diff_notify(const char *op, int result, const char *call_id, int del_epoch = 0; int del_admin_epoch = 0; - uint8_t log_level = LOG_TRACE; + uint8_t log_level = PCMK__LOG_TRACE; xmlNode *update_msg = NULL; xmlNode *wrapper = NULL; diff --git a/daemons/controld/controld_fsa.c b/daemons/controld/controld_fsa.c index 70716f4dc5c..67a043c47cc 100644 --- a/daemons/controld/controld_fsa.c +++ b/daemons/controld/controld_fsa.c @@ -57,7 +57,7 @@ do_log(long long action, enum crmd_fsa_cause cause, enum crmd_fsa_state cur_state, enum crmd_fsa_input current_input, fsa_data_t *msg_data) { - unsigned log_type = LOG_TRACE; + unsigned log_type = PCMK__LOG_TRACE; if (action & A_LOG) { log_type = LOG_INFO; diff --git a/daemons/controld/controld_fsa.h b/daemons/controld/controld_fsa.h index 5d3573dd624..b6b9408af8a 100644 --- a/daemons/controld/controld_fsa.h +++ b/daemons/controld/controld_fsa.h @@ -16,6 +16,7 @@ # include # include # include +# include // PCMK__LOG_TRACE # include /*! States the controller can be in */ @@ -446,7 +447,7 @@ struct fsa_data_s { #define controld_set_fsa_input_flags(flags_to_set) do { \ controld_globals.fsa_input_register \ - = pcmk__set_flags_as(__func__, __LINE__, LOG_TRACE, \ + = pcmk__set_flags_as(__func__, __LINE__, PCMK__LOG_TRACE, \ "FSA input", "controller", \ controld_globals.fsa_input_register, \ (flags_to_set), #flags_to_set); \ @@ -454,7 +455,7 @@ struct fsa_data_s { #define controld_clear_fsa_input_flags(flags_to_clear) do { \ controld_globals.fsa_input_register \ - = pcmk__clear_flags_as(__func__, __LINE__, LOG_TRACE, \ + = pcmk__clear_flags_as(__func__, __LINE__, PCMK__LOG_TRACE, \ "FSA input", "controller", \ controld_globals.fsa_input_register, \ (flags_to_clear), \ diff --git a/daemons/controld/controld_globals.h b/daemons/controld/controld_globals.h index 8f64f531cb6..6b41460f917 100644 --- a/daemons/controld/controld_globals.h +++ b/daemons/controld/controld_globals.h @@ -134,18 +134,20 @@ enum controld_flags { # define controld_set_global_flags(flags_to_set) do { \ controld_globals.flags = pcmk__set_flags_as(__func__, __LINE__, \ - LOG_TRACE, \ + PCMK__LOG_TRACE, \ "Global", "controller", \ controld_globals.flags, \ (flags_to_set), \ #flags_to_set); \ } while (0) -# define controld_clear_global_flags(flags_to_clear) do { \ - controld_globals.flags \ - = pcmk__clear_flags_as(__func__, __LINE__, LOG_TRACE, "Global", \ - "controller", controld_globals.flags, \ - (flags_to_clear), #flags_to_clear); \ +# define controld_clear_global_flags(flags_to_clear) do { \ + controld_globals.flags = pcmk__clear_flags_as(__func__, __LINE__, \ + PCMK__LOG_TRACE, \ + "Global", "controller", \ + controld_globals.flags, \ + (flags_to_clear), \ + #flags_to_clear); \ } while (0) #endif // ifndef CONTROLD_GLOBALS__H diff --git a/daemons/controld/controld_lrm.h b/daemons/controld/controld_lrm.h index c003371a2b6..b2cee74ebc5 100644 --- a/daemons/controld/controld_lrm.h +++ b/daemons/controld/controld_lrm.h @@ -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. * @@ -9,7 +9,8 @@ #ifndef CONTROLD_LRM__H # define CONTROLD_LRM__H -#include +#include // PCMK__LOG_TRACE +#include "controld_messages.h" extern gboolean verify_stopped(enum crmd_fsa_state cur_state, int log_level); void lrm_clear_last_failure(const char *rsc_id, const char *node_name, @@ -55,14 +56,22 @@ typedef struct active_op_s { #define controld_set_active_op_flags(active_op, flags_to_set) do { \ (active_op)->flags = pcmk__set_flags_as(__func__, __LINE__, \ - LOG_TRACE, "Active operation", (active_op)->op_key, \ - (active_op)->flags, (flags_to_set), #flags_to_set); \ + PCMK__LOG_TRACE, \ + "Active operation", \ + (active_op)->op_key, \ + (active_op)->flags, \ + (flags_to_set), \ + #flags_to_set); \ } while (0) #define controld_clear_active_op_flags(active_op, flags_to_clear) do { \ (active_op)->flags = pcmk__clear_flags_as(__func__, __LINE__, \ - LOG_TRACE, "Active operation", (active_op)->op_key, \ - (active_op)->flags, (flags_to_clear), #flags_to_clear); \ + PCMK__LOG_TRACE, \ + "Active operation", \ + (active_op)->op_key, \ + (active_op)->flags, \ + (flags_to_clear), \ + #flags_to_clear); \ } while (0) typedef struct lrm_state_s { diff --git a/daemons/controld/controld_messages.c b/daemons/controld/controld_messages.c index 15f76c49dd6..0db9c370a86 100644 --- a/daemons/controld/controld_messages.c +++ b/daemons/controld/controld_messages.c @@ -80,7 +80,7 @@ register_fsa_input_adv(enum crmd_fsa_cause cause, enum crmd_fsa_input input, raised_from, fsa_cause2string(cause), data, old_len); if (old_len > 0) { - fsa_dump_queue(LOG_TRACE); + fsa_dump_queue(PCMK__LOG_TRACE); prepend = FALSE; } @@ -160,7 +160,7 @@ register_fsa_input_adv(enum crmd_fsa_cause cause, enum crmd_fsa_input input, crm_trace("FSA message queue length is %d", g_list_length(controld_globals.fsa_message_queue)); - /* fsa_dump_queue(LOG_TRACE); */ + /* fsa_dump_queue(PCMK__LOG_TRACE); */ if (old_len == g_list_length(controld_globals.fsa_message_queue)) { pcmk__err("Couldn't add message to the queue"); diff --git a/daemons/controld/controld_metadata.h b/daemons/controld/controld_metadata.h index 12ea327e4ed..1fb788df855 100644 --- a/daemons/controld/controld_metadata.h +++ b/daemons/controld/controld_metadata.h @@ -1,5 +1,5 @@ /* - * Copyright 2017-2022 the Pacemaker project contributors + * Copyright 2017-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -12,6 +12,8 @@ #include // uint32_t #include // GList, GHashTable + +#include // PCMK__LOG_TRACE #include "controld_lrm.h" // lrm_state_t, lrm_rsc_info_t /* @@ -57,14 +59,21 @@ struct ra_metadata_s { #define controld_set_ra_flags(ra_md, ra_key, flags_to_set) do { \ (ra_md)->ra_flags = pcmk__set_flags_as(__func__, __LINE__, \ - LOG_TRACE, "Resource agent", ra_key, \ - (ra_md)->ra_flags, (flags_to_set), #flags_to_set); \ + PCMK__LOG_TRACE, \ + "Resource agent", ra_key, \ + (ra_md)->ra_flags, \ + (flags_to_set), \ + #flags_to_set); \ } while (0) -#define controld_set_ra_param_flags(ra_param, flags_to_set) do { \ - (ra_param)->rap_flags = pcmk__set_flags_as(__func__, __LINE__, \ - LOG_TRACE, "Resource agent parameter", (ra_param)->rap_name, \ - (ra_param)->rap_flags, (flags_to_set), #flags_to_set); \ +#define controld_set_ra_param_flags(ra_param, flags_to_set) do { \ + (ra_param)->rap_flags = pcmk__set_flags_as(__func__, __LINE__, \ + PCMK__LOG_TRACE, \ + "Resource agent parameter", \ + (ra_param)->rap_name, \ + (ra_param)->rap_flags, \ + (flags_to_set), \ + #flags_to_set); \ } while (0) GHashTable *metadata_cache_new(void); diff --git a/daemons/controld/controld_remote_ra.c b/daemons/controld/controld_remote_ra.c index 11023c04109..0ddc1d71a0f 100644 --- a/daemons/controld/controld_remote_ra.c +++ b/daemons/controld/controld_remote_ra.c @@ -26,16 +26,21 @@ #define MAX_START_TIMEOUT_MS 10000 #define cmd_set_flags(cmd, flags_to_set) do { \ - (cmd)->status = pcmk__set_flags_as(__func__, __LINE__, LOG_TRACE, \ - "Remote command", (cmd)->rsc_id, (cmd)->status, \ - (flags_to_set), #flags_to_set); \ - } while (0) + (cmd)->status = pcmk__set_flags_as(__func__, __LINE__, \ + PCMK__LOG_TRACE, \ + "Remote command", (cmd)->rsc_id, \ + (cmd)->status, (flags_to_set), \ + #flags_to_set); \ + } while (0) #define cmd_clear_flags(cmd, flags_to_clear) do { \ - (cmd)->status = pcmk__clear_flags_as(__func__, __LINE__, LOG_TRACE, \ - "Remote command", (cmd)->rsc_id, (cmd)->status, \ - (flags_to_clear), #flags_to_clear); \ - } while (0) + (cmd)->status = pcmk__clear_flags_as(__func__, __LINE__, \ + PCMK__LOG_TRACE, \ + "Remote command", \ + (cmd)->rsc_id, (cmd)->status, \ + (flags_to_clear), \ + #flags_to_clear); \ + } while (0) enum remote_cmd_status { cmd_reported_success = (1 << 0), @@ -71,21 +76,26 @@ typedef struct remote_ra_cmd_s { uint32_t status; } remote_ra_cmd_t; -#define lrm_remote_set_flags(lrm_state, flags_to_set) do { \ - lrm_state_t *lrm = (lrm_state); \ - remote_ra_data_t *ra = lrm->remote_ra_data; \ - ra->status = pcmk__set_flags_as(__func__, __LINE__, LOG_TRACE, "Remote", \ - lrm->node_name, ra->status, \ - (flags_to_set), #flags_to_set); \ - } while (0) - -#define lrm_remote_clear_flags(lrm_state, flags_to_clear) do { \ - lrm_state_t *lrm = (lrm_state); \ - remote_ra_data_t *ra = lrm->remote_ra_data; \ - ra->status = pcmk__clear_flags_as(__func__, __LINE__, LOG_TRACE, "Remote", \ - lrm->node_name, ra->status, \ - (flags_to_clear), #flags_to_clear); \ - } while (0) +#define lrm_remote_set_flags(lrm_state, flags_to_set) do { \ + lrm_state_t *lrm = (lrm_state); \ + remote_ra_data_t *ra = lrm->remote_ra_data; \ + \ + ra->status = pcmk__set_flags_as(__func__, __LINE__, \ + PCMK__LOG_TRACE, "Remote", \ + lrm->node_name, ra->status, \ + (flags_to_set), #flags_to_set); \ + } while (0) + +#define lrm_remote_clear_flags(lrm_state, flags_to_clear) do { \ + lrm_state_t *lrm = (lrm_state); \ + remote_ra_data_t *ra = lrm->remote_ra_data; \ + \ + ra->status = pcmk__clear_flags_as(__func__, __LINE__, \ + PCMK__LOG_TRACE, "Remote", \ + lrm->node_name, ra->status, \ + (flags_to_clear), \ + #flags_to_clear); \ + } while (0) enum remote_status { expect_takeover = (1 << 0), diff --git a/daemons/controld/controld_transition.c b/daemons/controld/controld_transition.c index 231423859cc..1414bb787f6 100644 --- a/daemons/controld/controld_transition.c +++ b/daemons/controld/controld_transition.c @@ -176,7 +176,7 @@ do_te_invoke(long long action, te_reset_job_counts(); trigger_graph(); - pcmk__log_graph(LOG_TRACE, controld_globals.transition_graph); + pcmk__log_graph(PCMK__LOG_TRACE, controld_globals.transition_graph); if (graph_data != input->xml) { pcmk__xml_free(graph_data); diff --git a/daemons/controld/pacemaker-controld.c b/daemons/controld/pacemaker-controld.c index 4fd86886ec1..f95e64b20d9 100644 --- a/daemons/controld/pacemaker-controld.c +++ b/daemons/controld/pacemaker-controld.c @@ -170,7 +170,7 @@ main(int argc, char **argv) goto done; } - pcmk__output_set_log_level(controld_globals.logger_out, LOG_TRACE); + pcmk__output_set_log_level(controld_globals.logger_out, PCMK__LOG_TRACE); done: g_strfreev(processed_args); diff --git a/daemons/execd/execd_commands.c b/daemons/execd/execd_commands.c index d49c680b9ad..baebf584644 100644 --- a/daemons/execd/execd_commands.c +++ b/daemons/execd/execd_commands.c @@ -337,7 +337,7 @@ create_lrmd_cmd(xmlNode *msg, pcmk__client_t *client) "action pid for " PCMK__OP_FMT, cmd->rsc_id, cmd->action, cmd->interval_ms); cmd->service_flags = pcmk__set_flags_as(__func__, __LINE__, - LOG_TRACE, "Action", + PCMK__LOG_TRACE, "Action", cmd->action, 0, SVC_ACTION_LEAVE_GROUP, "SVC_ACTION_LEAVE_GROUP"); diff --git a/daemons/fenced/fenced_commands.c b/daemons/fenced/fenced_commands.c index 5dee1bcc959..cee4068f937 100644 --- a/daemons/fenced/fenced_commands.c +++ b/daemons/fenced/fenced_commands.c @@ -3077,7 +3077,7 @@ remove_relay_op(xmlNode * request) { xmlNode *dev = pcmk__xpath_find_one(request->doc, "//*[@" PCMK__XA_ST_DEVICE_ACTION "]", - LOG_TRACE); + PCMK__LOG_TRACE); const char *relay_op_id = NULL; const char *op_id = NULL; const char *client_name = NULL; @@ -3282,7 +3282,7 @@ handle_relay_request(pcmk__request_t *request) { xmlNode *dev = pcmk__xpath_find_one(request->xml->doc, "//*[@" PCMK__XA_ST_TARGET "]", - LOG_TRACE); + PCMK__LOG_TRACE); pcmk__notice("Received forwarded fencing request from %s %s to fence (%s) " "peer %s", @@ -3327,7 +3327,7 @@ handle_fence_request(pcmk__request_t *request) const char *alternate_host = NULL; xmlNode *dev = pcmk__xpath_find_one(request->xml->doc, "//*[@" PCMK__XA_ST_TARGET "]", - LOG_TRACE); + PCMK__LOG_TRACE); const char *target = pcmk__xe_get(dev, PCMK__XA_ST_TARGET); const char *action = pcmk__xe_get(dev, PCMK__XA_ST_DEVICE_ACTION); const char *device = pcmk__xe_get(dev, PCMK__XA_ST_DEVICE_ID); diff --git a/daemons/fenced/fenced_scheduler.c b/daemons/fenced/fenced_scheduler.c index c2f8bdbef0a..6f00a86e846 100644 --- a/daemons/fenced/fenced_scheduler.c +++ b/daemons/fenced/fenced_scheduler.c @@ -47,7 +47,7 @@ fenced_scheduler_init(void) pe__register_messages(logger); pcmk__register_lib_messages(logger); - pcmk__output_set_log_level(logger, LOG_TRACE); + pcmk__output_set_log_level(logger, PCMK__LOG_TRACE); scheduler->priv->out = logger; return pcmk_rc_ok; diff --git a/daemons/schedulerd/pacemaker-schedulerd.c b/daemons/schedulerd/pacemaker-schedulerd.c index 9e28de5ef69..07684e5e1f6 100644 --- a/daemons/schedulerd/pacemaker-schedulerd.c +++ b/daemons/schedulerd/pacemaker-schedulerd.c @@ -163,7 +163,7 @@ main(int argc, char **argv) } pe__register_messages(logger_out); pcmk__register_lib_messages(logger_out); - pcmk__output_set_log_level(logger_out, LOG_TRACE); + pcmk__output_set_log_level(logger_out, PCMK__LOG_TRACE); /* Create the mainloop and run it... */ mainloop = g_main_loop_new(NULL, FALSE); diff --git a/devel/scratch.c b/devel/scratch.c index 5a8977fdb18..d2070213b45 100644 --- a/devel/scratch.c +++ b/devel/scratch.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. * @@ -31,7 +31,7 @@ main(int argc, char **argv) xmlNode *top = NULL; const char *xml_file = NULL; - crm_log_init(NULL, LOG_TRACE, FALSE, TRUE, argc, argv, FALSE); + crm_log_init(NULL, PCMK__LOG_TRACE, FALSE, TRUE, argc, argv, FALSE); while (1) { flag = getopt(argc, argv, OPTARGS); if (flag == -1) diff --git a/include/crm/cib/internal.h b/include/crm/cib/internal.h index c06d8414b62..74816564d7b 100644 --- a/include/crm/cib/internal.h +++ b/include/crm/cib/internal.h @@ -12,6 +12,7 @@ #include #include +#include // PCMK__LOG_TRACE #include #include #include @@ -122,14 +123,17 @@ struct timer_rec_s { #define cib__set_call_options(cib_call_opts, call_for, flags_to_set) do { \ cib_call_opts = pcmk__set_flags_as(__func__, __LINE__, \ - LOG_TRACE, "CIB call", (call_for), (cib_call_opts), \ - (flags_to_set), #flags_to_set); \ + PCMK__LOG_TRACE, "CIB call", \ + (call_for), (cib_call_opts), \ + (flags_to_set), #flags_to_set); \ } while (0) #define cib__clear_call_options(cib_call_opts, call_for, flags_to_clear) do { \ cib_call_opts = pcmk__clear_flags_as(__func__, __LINE__, \ - LOG_TRACE, "CIB call", (call_for), (cib_call_opts), \ - (flags_to_clear), #flags_to_clear); \ + PCMK__LOG_TRACE, "CIB call", \ + (call_for), (cib_call_opts), \ + (flags_to_clear), \ + #flags_to_clear); \ } while (0) cib_t *cib_new_variant(void); diff --git a/include/crm/common/action_relation_internal.h b/include/crm/common/action_relation_internal.h index 895bf29eca5..a1c44e164eb 100644 --- a/include/crm/common/action_relation_internal.h +++ b/include/crm/common/action_relation_internal.h @@ -1,5 +1,5 @@ /* - * Copyright 2023-2024 the Pacemaker project contributors + * Copyright 2023-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -12,7 +12,10 @@ #include // bool #include // uint32_t + #include // gpointer + +#include // PCMK__LOG_TRACE #include // pcmk_resource_t, pcmk_action_t #ifdef __cplusplus @@ -161,11 +164,11 @@ typedef struct pcmk__related_action { * \param[in,out] ar_flags Flag group to modify * \param[in] flags_to_set enum pcmk__action_relation_flags to set */ -#define pcmk__set_relation_flags(ar_flags, flags_to_set) do { \ - ar_flags = pcmk__set_flags_as(__func__, __LINE__, LOG_TRACE, \ - "Action relation", "constraint", \ - ar_flags, (flags_to_set), \ - #flags_to_set); \ +#define pcmk__set_relation_flags(ar_flags, flags_to_set) do { \ + ar_flags = pcmk__set_flags_as(__func__, __LINE__, PCMK__LOG_TRACE, \ + "Action relation", "constraint", \ + ar_flags, (flags_to_set), \ + #flags_to_set); \ } while (0) /*! @@ -176,10 +179,10 @@ typedef struct pcmk__related_action { * \param[in] flags_to_clear enum pcmk__action_relation_flags to clear */ #define pcmk__clear_relation_flags(ar_flags, flags_to_clear) do { \ - ar_flags = pcmk__clear_flags_as(__func__, __LINE__, LOG_TRACE, \ - "Action relation", "constraint", \ - ar_flags, (flags_to_clear), \ - #flags_to_clear); \ + ar_flags = pcmk__clear_flags_as(__func__, __LINE__, \ + PCMK__LOG_TRACE, "Action relation", \ + "constraint", ar_flags, \ + (flags_to_clear), #flags_to_clear); \ } while (0) void pcmk__free_action_relation(gpointer user_data); diff --git a/include/crm/common/actions_internal.h b/include/crm/common/actions_internal.h index 286829b44b8..a12b1c1f390 100644 --- a/include/crm/common/actions_internal.h +++ b/include/crm/common/actions_internal.h @@ -16,6 +16,7 @@ #include // xmlNode #include // PCMK_ACTION_MONITOR +#include // PCMK__LOG_TRACE #include // enum rsc_role_e #include // pcmk_resource_t, pcmk_node_t #include // pcmk__str_eq() @@ -36,7 +37,7 @@ extern "C" { */ #define pcmk__set_action_flags(action, flags_to_set) do { \ (action)->flags = pcmk__set_flags_as(__func__, __LINE__, \ - LOG_TRACE, \ + PCMK__LOG_TRACE, \ "Action", (action)->uuid, \ (action)->flags, \ (flags_to_set), \ @@ -52,7 +53,7 @@ extern "C" { */ #define pcmk__clear_action_flags(action, flags_to_clear) do { \ (action)->flags = pcmk__clear_flags_as(__func__, __LINE__, \ - LOG_TRACE, \ + PCMK__LOG_TRACE, \ "Action", (action)->uuid, \ (action)->flags, \ (flags_to_clear), \ @@ -69,8 +70,8 @@ extern "C" { */ #define pcmk__set_raw_action_flags(action_flags, action_name, to_set) do { \ action_flags = pcmk__set_flags_as(__func__, __LINE__, \ - LOG_TRACE, "Action", action_name, \ - (action_flags), \ + PCMK__LOG_TRACE, "Action", \ + action_name, (action_flags), \ (to_set), #to_set); \ } while (0) @@ -84,9 +85,9 @@ extern "C" { */ #define pcmk__clear_raw_action_flags(action_flags, action_name, to_clear) \ do { \ - action_flags = pcmk__clear_flags_as(__func__, __LINE__, LOG_TRACE, \ - "Action", action_name, \ - (action_flags), \ + action_flags = pcmk__clear_flags_as(__func__, __LINE__, \ + PCMK__LOG_TRACE, "Action", \ + action_name, (action_flags), \ (to_clear), #to_clear); \ } while (0) diff --git a/include/crm/common/attrs_internal.h b/include/crm/common/attrs_internal.h index ef533153f4b..13bc3c63883 100644 --- a/include/crm/common/attrs_internal.h +++ b/include/crm/common/attrs_internal.h @@ -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. * @@ -11,7 +11,7 @@ #define PCMK__CRM_COMMON_ATTRS_INTERNAL__H #include // crm_system_name -#include // LOG_TRACE +#include // PCMK__LOG_TRACE #include // pcmk_node_t #include // enum pcmk__rsc_node @@ -36,14 +36,22 @@ enum pcmk__node_attr_opts { #define pcmk__set_node_attr_flags(node_attr_flags, flags_to_set) do { \ node_attr_flags = pcmk__set_flags_as(__func__, __LINE__, \ - LOG_TRACE, "Node attribute", crm_system_name, \ - (node_attr_flags), (flags_to_set), #flags_to_set); \ + PCMK__LOG_TRACE, \ + "Node attribute", \ + crm_system_name, \ + (node_attr_flags), \ + (flags_to_set), \ + #flags_to_set); \ } while (0) #define pcmk__clear_node_attr_flags(node_attr_flags, flags_to_clear) do { \ node_attr_flags = pcmk__clear_flags_as(__func__, __LINE__, \ - LOG_TRACE, "Node attribute", crm_system_name, \ - (node_attr_flags), (flags_to_clear), #flags_to_clear); \ + PCMK__LOG_TRACE, \ + "Node attribute", \ + crm_system_name, \ + (node_attr_flags), \ + (flags_to_clear), \ + #flags_to_clear); \ } while (0) const char *pcmk__node_attr_target(const char *name); diff --git a/include/crm/common/ipc_internal.h b/include/crm/common/ipc_internal.h index cfa06541b09..c2587f6fde9 100644 --- a/include/crm/common/ipc_internal.h +++ b/include/crm/common/ipc_internal.h @@ -26,6 +26,7 @@ #include #include // pcmk_controld_api_reply #include // pcmk_pacemakerd_{api_reply,state} +#include // PCMK__LOG_TRACE #include // mainloop_io_t #ifdef __cplusplus @@ -186,29 +187,33 @@ struct pcmk__client_s { #define pcmk__set_client_flags(client, flags_to_set) do { \ (client)->flags = pcmk__set_flags_as(__func__, __LINE__, \ - LOG_TRACE, \ - "Client", pcmk__client_name(client), \ - (client)->flags, (flags_to_set), #flags_to_set); \ + PCMK__LOG_TRACE, "Client", \ + pcmk__client_name(client), \ + (client)->flags, \ + (flags_to_set), \ + #flags_to_set); \ } while (0) -#define pcmk__clear_client_flags(client, flags_to_clear) do { \ - (client)->flags = pcmk__clear_flags_as(__func__, __LINE__, \ - LOG_TRACE, \ - "Client", pcmk__client_name(client), \ - (client)->flags, (flags_to_clear), #flags_to_clear); \ +#define pcmk__clear_client_flags(client, flags_to_clear) do { \ + (client)->flags = pcmk__clear_flags_as(__func__, __LINE__, \ + PCMK__LOG_TRACE, "Client", \ + pcmk__client_name(client), \ + (client)->flags, \ + (flags_to_clear), \ + #flags_to_clear); \ } while (0) #define pcmk__set_ipc_flags(ipc_flags, ipc_name, flags_to_set) do { \ - ipc_flags = pcmk__set_flags_as(__func__, __LINE__, LOG_TRACE, \ - "IPC", (ipc_name), \ - (ipc_flags), (flags_to_set), \ - #flags_to_set); \ + ipc_flags = pcmk__set_flags_as(__func__, __LINE__, PCMK__LOG_TRACE, \ + "IPC", (ipc_name), (ipc_flags), \ + (flags_to_set), #flags_to_set); \ } while (0) #define pcmk__clear_ipc_flags(ipc_flags, ipc_name, flags_to_clear) do { \ - ipc_flags = pcmk__clear_flags_as(__func__, __LINE__, LOG_TRACE, \ - "IPC", (ipc_name), \ - (ipc_flags), (flags_to_clear), \ + ipc_flags = pcmk__clear_flags_as(__func__, __LINE__, \ + PCMK__LOG_TRACE, "IPC", \ + (ipc_name), (ipc_flags), \ + (flags_to_clear), \ #flags_to_clear); \ } while (0) diff --git a/include/crm/common/logging_internal.h b/include/crm/common/logging_internal.h index 2931a9d955e..b706713e2c5 100644 --- a/include/crm/common/logging_internal.h +++ b/include/crm/common/logging_internal.h @@ -26,6 +26,18 @@ extern "C" { * uint8_t, so make sure they fit in the latter. */ +#ifndef PCMK__LOG_TRACE +/*! + * \internal + * \brief Log level for tracing (less importance than \c LOG_DEBUG messages) + * + * \note This value must stay the same as \c LOG_TRACE until the latter is + * dropped. Be mindful of public API functions that may pass arbitrary + * integer log levels as well. + */ +#define PCMK__LOG_TRACE (LOG_DEBUG + 1) +#endif // PCMK__LOG_TRACE + #ifndef PCMK__LOG_STDOUT /*! * \internal @@ -151,7 +163,7 @@ enum pcmk__warnings { pcmk__config_warn(fmt); \ } \ pcmk__warnings = pcmk__set_flags_as(__func__, __LINE__, \ - LOG_TRACE, \ + PCMK__LOG_TRACE, \ "Warn-once", "logging", \ pcmk__warnings, \ (wo_flag), #wo_flag); \ @@ -225,20 +237,20 @@ extern bool pcmk__config_has_warning; * \note Neither \p if_action nor \p else_action can contain a \p break or * \p continue statement. */ -#define pcmk__if_tracing(if_action, else_action) do { \ - static struct qb_log_callsite *trace_cs = NULL; \ - \ - if (trace_cs == NULL) { \ - trace_cs = qb_log_callsite_get(__func__, __FILE__, \ - "if_tracing", LOG_TRACE, \ - __LINE__, crm_trace_nonlog); \ - } \ - if (crm_is_callsite_active(trace_cs, LOG_TRACE, \ - crm_trace_nonlog)) { \ - if_action; \ - } else { \ - else_action; \ - } \ +#define pcmk__if_tracing(if_action, else_action) do { \ + static struct qb_log_callsite *trace_cs = NULL; \ + \ + if (trace_cs == NULL) { \ + trace_cs = qb_log_callsite_get(__func__, __FILE__, \ + "if_tracing", PCMK__LOG_TRACE, \ + __LINE__, crm_trace_nonlog); \ + } \ + if (crm_is_callsite_active(trace_cs, PCMK__LOG_TRACE, \ + crm_trace_nonlog)) { \ + if_action; \ + } else { \ + else_action; \ + } \ } while (0) /*! diff --git a/include/crm/common/messages_internal.h b/include/crm/common/messages_internal.h index e9481d0e752..0b183202ee7 100644 --- a/include/crm/common/messages_internal.h +++ b/include/crm/common/messages_internal.h @@ -1,5 +1,5 @@ /* - * Copyright 2018-2024 the Pacemaker project contributors + * Copyright 2018-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -13,6 +13,7 @@ #include // uint32_t #include // xmlNode #include // pcmk__client_t +#include // PCMK__LOG_TRACE #include // pcmk__action_result_t #include // pcmk__xml_copy() @@ -67,7 +68,7 @@ typedef struct { #define pcmk__set_request_flags(request, flags_to_set) do { \ (request)->flags = pcmk__set_flags_as(__func__, __LINE__, \ - LOG_TRACE, "Request", "message", (request)->flags, \ + PCMK__LOG_TRACE, "Request", "message", (request)->flags, \ (flags_to_set), #flags_to_set); \ } while (0) diff --git a/include/crm/common/nodes_internal.h b/include/crm/common/nodes_internal.h index b8525758a3d..c70db07b7d9 100644 --- a/include/crm/common/nodes_internal.h +++ b/include/crm/common/nodes_internal.h @@ -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. * @@ -15,6 +15,8 @@ #include // uint32_t, UINT32_C() #include // gpointer, GList, GHashTable + +#include // PCMK__LOG_TRACE #include #ifdef __cplusplus @@ -133,10 +135,13 @@ pcmk_node_t *pcmk__find_node_in_list(const GList *nodes, const char *node_name); * \param[in,out] node Node to set flags for * \param[in] flags_to_set Group of enum pcmk_node_flags to set */ -#define pcmk__set_node_flags(node, flags_to_set) do { \ - (node)->priv->flags = pcmk__set_flags_as(__func__, __LINE__, \ - LOG_TRACE, "Node", pcmk__node_name(node), \ - (node)->priv->flags, (flags_to_set), #flags_to_set); \ +#define pcmk__set_node_flags(node, flags_to_set) do { \ + (node)->priv->flags = pcmk__set_flags_as(__func__, __LINE__, \ + PCMK__LOG_TRACE, "Node", \ + pcmk__node_name(node), \ + (node)->priv->flags, \ + (flags_to_set), \ + #flags_to_set); \ } while (0) /*! @@ -148,8 +153,11 @@ pcmk_node_t *pcmk__find_node_in_list(const GList *nodes, const char *node_name); */ #define pcmk__clear_node_flags(node, flags_to_clear) do { \ (node)->priv->flags = pcmk__clear_flags_as(__func__, __LINE__, \ - LOG_TRACE, "Node", pcmk__node_name(node), \ - (node)->priv->flags, (flags_to_clear), #flags_to_clear); \ + PCMK__LOG_TRACE, "Node", \ + pcmk__node_name(node), \ + (node)->priv->flags, \ + (flags_to_clear), \ + #flags_to_clear); \ } while (0) void pcmk__free_node(gpointer user_data); diff --git a/include/crm/common/resources_internal.h b/include/crm/common/resources_internal.h index 0a8839b4a1b..4c0a012239a 100644 --- a/include/crm/common/resources_internal.h +++ b/include/crm/common/resources_internal.h @@ -15,6 +15,7 @@ #include // gboolean, gpointer, guint, etc. #include // xmlNode +#include // PCMK__LOG_TRACE #include // pcmk_resource_t #include // enum rsc_role_e #include // pcmk_node_t, etc. @@ -32,8 +33,11 @@ extern "C" { */ #define pcmk__set_rsc_flags(resource, flags_to_set) do { \ (resource)->flags = pcmk__set_flags_as(__func__, __LINE__, \ - LOG_TRACE, "Resource", (resource)->id, (resource)->flags, \ - (flags_to_set), #flags_to_set); \ + PCMK__LOG_TRACE, "Resource", \ + (resource)->id, \ + (resource)->flags, \ + (flags_to_set), \ + #flags_to_set); \ } while (0) /*! @@ -43,10 +47,14 @@ extern "C" { * \param[in,out] resource Resource to clear flags for * \param[in] flags_to_clear Group of enum pcmk_rsc_flags to clear */ -#define pcmk__clear_rsc_flags(resource, flags_to_clear) do { \ - (resource)->flags = pcmk__clear_flags_as(__func__, __LINE__, \ - LOG_TRACE, "Resource", (resource)->id, (resource)->flags, \ - (flags_to_clear), #flags_to_clear); \ +#define pcmk__clear_rsc_flags(resource, flags_to_clear) do { \ + (resource)->flags = pcmk__clear_flags_as(__func__, __LINE__, \ + PCMK__LOG_TRACE, \ + "Resource", \ + (resource)->id, \ + (resource)->flags, \ + (flags_to_clear), \ + #flags_to_clear); \ } while (0) //! Resource variants supported by Pacemaker diff --git a/include/crm/common/scheduler_internal.h b/include/crm/common/scheduler_internal.h index 15c6a6aba8e..03b768e3dfc 100644 --- a/include/crm/common/scheduler_internal.h +++ b/include/crm/common/scheduler_internal.h @@ -20,6 +20,7 @@ #include #include #include +#include // PCMK__LOG_TRACE #include #include #include @@ -228,8 +229,9 @@ extern uint32_t pcmk__warnings; * \param[in] rsc Tag message with this resource's ID * \param[in] fmt... printf(3)-style format and arguments */ -#define pcmk__rsc_trace(rsc, fmt, args...) \ - crm_log_tag(LOG_TRACE, ((rsc) == NULL)? "" : (rsc)->id, (fmt), ##args) +#define pcmk__rsc_trace(rsc, fmt, args...) \ + crm_log_tag(PCMK__LOG_TRACE, (((rsc) != NULL)? (rsc)->id : ""), \ + (fmt), ##args) /*! * \internal @@ -266,8 +268,12 @@ extern uint32_t pcmk__warnings; */ #define pcmk__set_scheduler_flags(scheduler, flags_to_set) do { \ (scheduler)->flags = pcmk__set_flags_as(__func__, __LINE__, \ - LOG_TRACE, "Scheduler", crm_system_name, \ - (scheduler)->flags, (flags_to_set), #flags_to_set); \ + PCMK__LOG_TRACE, \ + "Scheduler", \ + crm_system_name, \ + (scheduler)->flags, \ + (flags_to_set), \ + #flags_to_set); \ } while (0) /*! @@ -279,8 +285,12 @@ extern uint32_t pcmk__warnings; */ #define pcmk__clear_scheduler_flags(scheduler, flags_to_clear) do { \ (scheduler)->flags = pcmk__clear_flags_as(__func__, __LINE__, \ - LOG_TRACE, "Scheduler", crm_system_name, \ - (scheduler)->flags, (flags_to_clear), #flags_to_clear); \ + PCMK__LOG_TRACE, \ + "Scheduler", \ + crm_system_name, \ + (scheduler)->flags, \ + (flags_to_clear), \ + #flags_to_clear); \ } while (0) void pcmk__set_scheduler_defaults(pcmk_scheduler_t *scheduler); diff --git a/include/crm/common/tickets_internal.h b/include/crm/common/tickets_internal.h index e57e2b7423d..1eb36fbe04b 100644 --- a/include/crm/common/tickets_internal.h +++ b/include/crm/common/tickets_internal.h @@ -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. * @@ -14,6 +14,8 @@ #include // time_t #include // GHashTable +#include // PCMK__LOG_TRACE + #ifdef __cplusplus extern "C" { #endif @@ -31,10 +33,12 @@ extern "C" { * \param[in,out] ticket Ticket to set flags for * \param[in] flags_to_set Group of enum pcmk__ticket_flags to set */ -#define pcmk__set_ticket_flags(ticket, flags_to_set) do { \ - (ticket)->flags = pcmk__set_flags_as(__func__, __LINE__, \ - LOG_TRACE, "Ticket", (ticket)->id, (ticket)->flags, \ - (flags_to_set), #flags_to_set); \ +#define pcmk__set_ticket_flags(ticket, flags_to_set) do { \ + (ticket)->flags = pcmk__set_flags_as(__func__, __LINE__, \ + PCMK__LOG_TRACE, "Ticket", \ + (ticket)->id, (ticket)->flags, \ + (flags_to_set), \ + #flags_to_set); \ } while (0) /*! @@ -44,10 +48,13 @@ extern "C" { * \param[in,out] ticket Ticket to clear flags for * \param[in] flags_to_clear Group of enum pcmk__ticket_flags to clear */ -#define pcmk__clear_ticket_flags(ticket, flags_to_clear) do { \ - (ticket)->flags = pcmk__clear_flags_as(__func__, __LINE__, \ - LOG_TRACE, "Ticket", (ticket)->id, (ticket)->flags, \ - (flags_to_clear), #flags_to_clear); \ +#define pcmk__clear_ticket_flags(ticket, flags_to_clear) do { \ + (ticket)->flags = pcmk__clear_flags_as(__func__, __LINE__, \ + PCMK__LOG_TRACE, "Ticket", \ + (ticket)->id, \ + (ticket)->flags, \ + (flags_to_clear), \ + #flags_to_clear); \ } while (0) enum pcmk__ticket_flags { diff --git a/include/crm/fencing/internal.h b/include/crm/fencing/internal.h index d46dab7ab9a..8af9417bb0f 100644 --- a/include/crm/fencing/internal.h +++ b/include/crm/fencing/internal.h @@ -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. * @@ -13,6 +13,7 @@ #include #include #include +#include // PCMK__LOG_TRACE #include #include #include @@ -31,25 +32,27 @@ enum st_device_flags { st_device_supports_on = (1 << 5), }; -#define stonith__set_device_flags(device_flags, device_id, flags_to_set) do { \ - device_flags = pcmk__set_flags_as(__func__, __LINE__, LOG_TRACE, \ - "Fence device", device_id, \ - (device_flags), (flags_to_set), \ - #flags_to_set); \ +#define stonith__set_device_flags(device_flags, device_id, flags_to_set) do { \ + device_flags = pcmk__set_flags_as(__func__, __LINE__, PCMK__LOG_TRACE, \ + "Fence device", device_id, \ + (device_flags), (flags_to_set), \ + #flags_to_set); \ } while (0) -#define stonith__set_call_options(st_call_opts, call_for, flags_to_set) do { \ - st_call_opts = pcmk__set_flags_as(__func__, __LINE__, LOG_TRACE, \ - "Fencer call", (call_for), \ - (st_call_opts), (flags_to_set), \ - #flags_to_set); \ +#define stonith__set_call_options(st_call_opts, call_for, flags_to_set) do { \ + st_call_opts = pcmk__set_flags_as(__func__, __LINE__, PCMK__LOG_TRACE, \ + "Fencer call", (call_for), \ + (st_call_opts), (flags_to_set), \ + #flags_to_set); \ } while (0) -#define stonith__clear_call_options(st_call_opts, call_for, flags_to_clear) do { \ - st_call_opts = pcmk__clear_flags_as(__func__, __LINE__, LOG_TRACE, \ - "Fencer call", (call_for), \ - (st_call_opts), (flags_to_clear), \ - #flags_to_clear); \ +#define stonith__clear_call_options(st_call_opts, call_for, \ + flags_to_clear) do { \ + st_call_opts = pcmk__clear_flags_as(__func__, __LINE__, \ + PCMK__LOG_TRACE, "Fencer call", \ + (call_for), (st_call_opts), \ + (flags_to_clear), \ + #flags_to_clear); \ } while (0) struct stonith_action_s; diff --git a/include/pcmki/pcmki_transition.h b/include/pcmki/pcmki_transition.h index 63ac6392817..27e5e58b807 100644 --- a/include/pcmki/pcmki_transition.h +++ b/include/pcmki/pcmki_transition.h @@ -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. * @@ -16,6 +16,7 @@ #include // guint, GList, GHashTable #include // xmlNode +#include // PCMK__LOG_TRACE #include // pcmk_scheduler_t #include // lrmd_event_data_t @@ -50,18 +51,21 @@ typedef struct { GList *inputs; /* pcmk__graph_action_t* */ } pcmk__graph_synapse_t; -#define pcmk__set_synapse_flags(synapse, flags_to_set) do { \ - (synapse)->flags = pcmk__set_flags_as(__func__, __LINE__, \ - LOG_TRACE, \ - "Synapse", "synapse", \ - (synapse)->flags, (flags_to_set), #flags_to_set); \ +#define pcmk__set_synapse_flags(synapse, flags_to_set) do { \ + (synapse)->flags = pcmk__set_flags_as(__func__, __LINE__, \ + PCMK__LOG_TRACE, "Synapse", \ + "synapse", (synapse)->flags, \ + (flags_to_set), \ + #flags_to_set); \ } while (0) -#define pcmk__clear_synapse_flags(synapse, flags_to_clear) do { \ - (synapse)->flags = pcmk__clear_flags_as(__func__, __LINE__, \ - LOG_TRACE, \ - "Synapse", "synapse", \ - (synapse)->flags, (flags_to_clear), #flags_to_clear); \ +#define pcmk__clear_synapse_flags(synapse, flags_to_clear) do { \ + (synapse)->flags = pcmk__clear_flags_as(__func__, __LINE__, \ + PCMK__LOG_TRACE, "Synapse", \ + "synapse", \ + (synapse)->flags, \ + (flags_to_clear), \ + #flags_to_clear); \ } while (0) enum pcmk__graph_action_flags { @@ -86,18 +90,20 @@ typedef struct { } pcmk__graph_action_t; -#define pcmk__set_graph_action_flags(action, flags_to_set) do { \ - (action)->flags = pcmk__set_flags_as(__func__, __LINE__, \ - LOG_TRACE, \ - "Action", "action", \ - (action)->flags, (flags_to_set), #flags_to_set); \ +#define pcmk__set_graph_action_flags(action, flags_to_set) do { \ + (action)->flags = pcmk__set_flags_as(__func__, __LINE__, \ + PCMK__LOG_TRACE, "Action", \ + "action", (action)->flags, \ + (flags_to_set), \ + #flags_to_set); \ } while (0) -#define pcmk__clear_graph_action_flags(action, flags_to_clear) do { \ - (action)->flags = pcmk__clear_flags_as(__func__, __LINE__, \ - LOG_TRACE, \ - "Action", "action", \ - (action)->flags, (flags_to_clear), #flags_to_clear); \ +#define pcmk__clear_graph_action_flags(action, flags_to_clear) do { \ + (action)->flags = pcmk__clear_flags_as(__func__, __LINE__, \ + PCMK__LOG_TRACE, "Action", \ + "action", (action)->flags, \ + (flags_to_clear), \ + #flags_to_clear); \ } while (0) // What to do after finished processing a transition graph diff --git a/lib/cib/cib_file.c b/lib/cib/cib_file.c index f184bebc32f..47f35485bd0 100644 --- a/lib/cib/cib_file.c +++ b/lib/cib/cib_file.c @@ -139,22 +139,23 @@ static uid_t cib_file_owner = 0; static uid_t cib_file_group = 0; static gboolean cib_do_chown = FALSE; -#define cib_set_file_flags(cibfile, flags_to_set) do { \ - (cibfile)->flags = pcmk__set_flags_as(__func__, __LINE__, \ - LOG_TRACE, "CIB file", \ - cibfile->filename, \ - (cibfile)->flags, \ - (flags_to_set), \ - #flags_to_set); \ +#define cib_set_file_flags(cibfile, flags_to_set) do { \ + (cibfile)->flags = pcmk__set_flags_as(__func__, __LINE__, \ + PCMK__LOG_TRACE, "CIB file", \ + cibfile->filename, \ + (cibfile)->flags, \ + (flags_to_set), \ + #flags_to_set); \ } while (0) -#define cib_clear_file_flags(cibfile, flags_to_clear) do { \ - (cibfile)->flags = pcmk__clear_flags_as(__func__, __LINE__, \ - LOG_TRACE, "CIB file", \ - cibfile->filename, \ - (cibfile)->flags, \ - (flags_to_clear), \ - #flags_to_clear); \ +#define cib_clear_file_flags(cibfile, flags_to_clear) do { \ + (cibfile)->flags = pcmk__clear_flags_as(__func__, __LINE__, \ + PCMK__LOG_TRACE, \ + "CIB file", \ + cibfile->filename, \ + (cibfile)->flags, \ + (flags_to_clear), \ + #flags_to_clear); \ } while (0) /*! diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c index 1521d4e74e6..b5b2a394e77 100644 --- a/lib/cib/cib_utils.c +++ b/lib/cib/cib_utils.c @@ -429,7 +429,7 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, local_diff = xml_create_patchset(0, patchset_cib, scratch, config_changed, manage_counters); - pcmk__log_xml_changes(LOG_TRACE, scratch); + pcmk__log_xml_changes(PCMK__LOG_TRACE, scratch); pcmk__xml_commit_changes(scratch->doc); if(local_diff) { diff --git a/lib/cluster/cpg.c b/lib/cluster/cpg.c index ab47ab1e121..d710a323024 100644 --- a/lib/cluster/cpg.c +++ b/lib/cluster/cpg.c @@ -245,7 +245,7 @@ crm_cs_flush(gpointer data) } queue_len -= sent; - do_crm_log((queue_len > 5)? LOG_INFO : LOG_TRACE, + do_crm_log(((queue_len > 5)? LOG_INFO : PCMK__LOG_TRACE), "Sent %u CPG message%s (%d still queued): %s (rc=%d)", sent, pcmk__plural_s(sent), queue_len, pcmk__cs_err_str(rc), (int) rc); diff --git a/lib/cluster/election.c b/lib/cluster/election.c index 874c1ae1e5f..c1cc1b94599 100644 --- a/lib/cluster/election.c +++ b/lib/cluster/election.c @@ -571,7 +571,7 @@ election_count_vote(pcmk_cluster_t *cluster, const xmlNode *message, } else if (we_are_owner && (vote.election_id != cluster->priv->election->count)) { - log_level = LOG_TRACE; + log_level = PCMK__LOG_TRACE; reason = "Superseded"; done = TRUE; diff --git a/lib/cluster/membership.c b/lib/cluster/membership.c index 7cc92b8b48d..e5d0ddfeb9c 100644 --- a/lib/cluster/membership.c +++ b/lib/cluster/membership.c @@ -67,19 +67,19 @@ static bool has_quorum = false; // Flag setting and clearing for pcmk__node_status_t:flags -#define set_peer_flags(peer, flags_to_set) do { \ - (peer)->flags = pcmk__set_flags_as(__func__, __LINE__, LOG_TRACE, \ - "Peer", (peer)->name, \ - (peer)->flags, (flags_to_set), \ - #flags_to_set); \ +#define set_peer_flags(peer, flags_to_set) do { \ + (peer)->flags = pcmk__set_flags_as(__func__, __LINE__, \ + PCMK__LOG_TRACE, "Peer", \ + (peer)->name, (peer)->flags, \ + (flags_to_set), #flags_to_set); \ } while (0) -#define clear_peer_flags(peer, flags_to_clear) do { \ - (peer)->flags = pcmk__clear_flags_as(__func__, __LINE__, \ - LOG_TRACE, \ - "Peer", (peer)->name, \ - (peer)->flags, (flags_to_clear), \ - #flags_to_clear); \ +#define clear_peer_flags(peer, flags_to_clear) do { \ + (peer)->flags = pcmk__clear_flags_as(__func__, __LINE__, \ + PCMK__LOG_TRACE, "Peer", \ + (peer)->name, (peer)->flags, \ + (flags_to_clear), \ + #flags_to_clear); \ } while (0) static void update_peer_uname(pcmk__node_status_t *node, const char *uname); @@ -1142,15 +1142,16 @@ crm_update_peer_proc(const char *source, pcmk__node_status_t *node, } else if (pcmk__str_eq(status, PCMK_VALUE_ONLINE, pcmk__str_casei)) { if ((node->processes & flag) != flag) { node->processes = pcmk__set_flags_as(__func__, __LINE__, - LOG_TRACE, "Peer process", - node->name, node->processes, - flag, "processes"); + PCMK__LOG_TRACE, + "Peer process", node->name, + node->processes, flag, + "processes"); changed = TRUE; } } else if (node->processes & flag) { node->processes = pcmk__clear_flags_as(__func__, __LINE__, - LOG_TRACE, "Peer process", + PCMK__LOG_TRACE, "Peer process", node->name, node->processes, flag, "processes"); changed = TRUE; diff --git a/lib/common/acl.c b/lib/common/acl.c index e37345d949f..3422ba148df 100644 --- a/lib/common/acl.c +++ b/lib/common/acl.c @@ -728,7 +728,7 @@ xml_acl_disable(xmlNode *xml) qb_log_from_external_source(__func__, __FILE__, \ "%sACL denies user '%s' %s " \ "access to %s", \ - LOG_TRACE, __LINE__, 0 , \ + PCMK__LOG_TRACE, __LINE__, 0 , \ prefix, user, \ acl_to_text(mode), xpath->str); \ g_string_free(xpath, TRUE); \ diff --git a/lib/common/cib.c b/lib/common/cib.c index 58fcceb969e..5a1f09f7e0a 100644 --- a/lib/common/cib.c +++ b/lib/common/cib.c @@ -172,7 +172,7 @@ xmlNode * pcmk_find_cib_element(xmlNode *cib, const char *element_name) { return pcmk__xpath_find_one(cib->doc, pcmk_cib_xpath_for(element_name), - LOG_TRACE); + PCMK__LOG_TRACE); } /*! diff --git a/lib/common/iso8601.c b/lib/common/iso8601.c index 5705d6694da..99c210fdc69 100644 --- a/lib/common/iso8601.c +++ b/lib/common/iso8601.c @@ -101,10 +101,14 @@ crm_get_utc_time(const crm_time_t *dt) utc->months = dt->months; } - crm_time_log(LOG_TRACE, "utc-source", dt, - crm_time_log_date | crm_time_log_timeofday | crm_time_log_with_timezone); - crm_time_log(LOG_TRACE, "utc-target", utc, - crm_time_log_date | crm_time_log_timeofday | crm_time_log_with_timezone); + crm_time_log(PCMK__LOG_TRACE, "utc-source", dt, + crm_time_log_date + |crm_time_log_timeofday + |crm_time_log_with_timezone); + crm_time_log(PCMK__LOG_TRACE, "utc-target", utc, + crm_time_log_date + |crm_time_log_timeofday + |crm_time_log_with_timezone); return utc; } @@ -927,7 +931,8 @@ parse_date(const char *date_str) || isspace(date_str[5]))) { dt->days = 1; dt->years = 1970; - crm_time_log(LOG_TRACE, "Unpacked", dt, crm_time_log_date | crm_time_log_timeofday); + crm_time_log(PCMK__LOG_TRACE, "Unpacked", dt, + crm_time_log_date|crm_time_log_timeofday); return dt; } @@ -1051,7 +1056,8 @@ parse_date(const char *date_str) goto invalid; } - crm_time_log(LOG_TRACE, "Unpacked", dt, crm_time_log_date | crm_time_log_timeofday); + crm_time_log(PCMK__LOG_TRACE, "Unpacked", dt, + crm_time_log_date|crm_time_log_timeofday); if (crm_time_check(dt) == FALSE) { pcmk__err("'%s' is not a valid ISO 8601 date/time specification", date_str); @@ -1403,10 +1409,14 @@ crm_time_set(crm_time_t *target, const crm_time_t *source) target->seconds = source->seconds; target->offset = source->offset; - crm_time_log(LOG_TRACE, "source", source, - crm_time_log_date | crm_time_log_timeofday | crm_time_log_with_timezone); - crm_time_log(LOG_TRACE, "target", target, - crm_time_log_date | crm_time_log_timeofday | crm_time_log_with_timezone); + crm_time_log(PCMK__LOG_TRACE, "source", source, + crm_time_log_date + |crm_time_log_timeofday + |crm_time_log_with_timezone); + crm_time_log(PCMK__LOG_TRACE, "target", target, + crm_time_log_date + |crm_time_log_timeofday + |crm_time_log_with_timezone); } static void diff --git a/lib/common/logging.c b/lib/common/logging.c index 30cce82e09b..d963a2c62b0 100644 --- a/lib/common/logging.c +++ b/lib/common/logging.c @@ -747,7 +747,7 @@ crm_update_callsites(void) static gboolean crm_tracing_enabled(void) { - return (crm_log_level == LOG_TRACE) + return (crm_log_level == PCMK__LOG_TRACE) || (pcmk__env_option(PCMK__ENV_TRACE_FILES) != NULL) || (pcmk__env_option(PCMK__ENV_TRACE_FUNCTIONS) != NULL) || (pcmk__env_option(PCMK__ENV_TRACE_FORMATS) != NULL) @@ -934,8 +934,8 @@ crm_log_init(const char *entity, uint8_t level, gboolean daemon, gboolean to_std pcmk__is_daemon = daemon; crm_log_preinit(entity, argc, argv); - if (level > LOG_TRACE) { - level = LOG_TRACE; + if (level > PCMK__LOG_TRACE) { + level = PCMK__LOG_TRACE; } if(level > crm_log_level) { crm_log_level = level; @@ -1062,8 +1062,8 @@ set_crm_log_level(unsigned int level) { unsigned int old = crm_log_level; - if (level > LOG_TRACE) { - level = LOG_TRACE; + if (level > PCMK__LOG_TRACE) { + level = PCMK__LOG_TRACE; } crm_log_level = level; crm_update_callsites(); @@ -1146,7 +1146,7 @@ crm_log_output_fn(const char *file, const char *function, int line, int level, c if (output == NULL) { if (level != PCMK__LOG_STDOUT) { - level = LOG_TRACE; + level = PCMK__LOG_TRACE; } output = "-- empty --"; } diff --git a/lib/common/nodes.c b/lib/common/nodes.c index 1cfcd28b61d..b09a368ad1d 100644 --- a/lib/common/nodes.c +++ b/lib/common/nodes.c @@ -229,7 +229,7 @@ pcmk_cib_node_shutdown(xmlNode *cib, const char *node) { if ((cib != NULL) && (node != NULL)) { char *xpath = pcmk__assert_asprintf(XP_SHUTDOWN, node); - xmlNode *match = pcmk__xpath_find_one(cib->doc, xpath, LOG_TRACE); + xmlNode *match = pcmk__xpath_find_one(cib->doc, xpath, PCMK__LOG_TRACE); free(xpath); if (match != NULL) { diff --git a/lib/common/patchset.c b/lib/common/patchset.c index 1deabe32de3..8003d725b86 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -814,7 +814,7 @@ xml_apply_patchset(xmlNode *xml, const xmlNode *patchset, bool check_version) return rc; } - pcmk__log_xml_patchset(LOG_TRACE, patchset); + pcmk__log_xml_patchset(PCMK__LOG_TRACE, patchset); if (check_version) { rc = pcmk_rc2legacy(check_patchset_versions(xml, patchset)); diff --git a/lib/common/tests/flags/pcmk__clear_flags_as_test.c b/lib/common/tests/flags/pcmk__clear_flags_as_test.c index 07dbe28e5b2..fa9d2800d2b 100644 --- a/lib/common/tests/flags/pcmk__clear_flags_as_test.c +++ b/lib/common/tests/flags/pcmk__clear_flags_as_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2020-2021 the Pacemaker project contributors + * Copyright 2020-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -13,26 +13,32 @@ static void clear_none(void **state) { - assert_int_equal(pcmk__clear_flags_as(__func__, __LINE__, LOG_TRACE, "Test", - "test", 0x0f0, 0x00f, NULL), 0x0f0); - assert_int_equal(pcmk__clear_flags_as(__func__, __LINE__, LOG_TRACE, "Test", - "test", 0x0f0, 0xf0f, NULL), 0x0f0); + assert_int_equal(pcmk__clear_flags_as(__func__, __LINE__, PCMK__LOG_TRACE, + "Test", "test", 0x0f0, 0x00f, NULL), + 0x0f0); + assert_int_equal(pcmk__clear_flags_as(__func__, __LINE__, PCMK__LOG_TRACE, + "Test", "test", 0x0f0, 0xf0f, NULL), + 0x0f0); } static void clear_some(void **state) { - assert_int_equal(pcmk__clear_flags_as(__func__, __LINE__, LOG_TRACE, "Test", - "test", 0x0f0, 0x020, NULL), 0x0d0); - assert_int_equal(pcmk__clear_flags_as(__func__, __LINE__, LOG_TRACE, "Test", - "test", 0x0f0, 0x030, NULL), 0x0c0); + assert_int_equal(pcmk__clear_flags_as(__func__, __LINE__, PCMK__LOG_TRACE, + "Test", "test", 0x0f0, 0x020, NULL), + 0x0d0); + assert_int_equal(pcmk__clear_flags_as(__func__, __LINE__, PCMK__LOG_TRACE, + "Test", "test", 0x0f0, 0x030, NULL), + 0x0c0); } static void clear_all(void **state) { - assert_int_equal(pcmk__clear_flags_as(__func__, __LINE__, LOG_TRACE, "Test", - "test", 0x0f0, 0x0f0, NULL), 0x000); - assert_int_equal(pcmk__clear_flags_as(__func__, __LINE__, LOG_TRACE, "Test", - "test", 0x0f0, 0xfff, NULL), 0x000); + assert_int_equal(pcmk__clear_flags_as(__func__, __LINE__, PCMK__LOG_TRACE, + "Test", "test", 0x0f0, 0x0f0, NULL), + 0x000); + assert_int_equal(pcmk__clear_flags_as(__func__, __LINE__, PCMK__LOG_TRACE, + "Test", "test", 0x0f0, 0xfff, NULL), + 0x000); } PCMK__UNIT_TEST(NULL, NULL, diff --git a/lib/common/tests/flags/pcmk__set_flags_as_test.c b/lib/common/tests/flags/pcmk__set_flags_as_test.c index cd14c85f360..20fb29bab6e 100644 --- a/lib/common/tests/flags/pcmk__set_flags_as_test.c +++ b/lib/common/tests/flags/pcmk__set_flags_as_test.c @@ -1,5 +1,5 @@ /* - * Copyright 2020-2021 the Pacemaker project contributors + * Copyright 2020-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -13,12 +13,15 @@ static void set_flags(void **state) { - assert_int_equal(pcmk__set_flags_as(__func__, __LINE__, LOG_TRACE, "Test", - "test", 0x0f0, 0x00f, NULL), 0x0ff); - assert_int_equal(pcmk__set_flags_as(__func__, __LINE__, LOG_TRACE, "Test", - "test", 0x0f0, 0xf0f, NULL), 0xfff); - assert_int_equal(pcmk__set_flags_as(__func__, __LINE__, LOG_TRACE, "Test", - "test", 0x0f0, 0xfff, NULL), 0xfff); + assert_int_equal(pcmk__set_flags_as(__func__, __LINE__, PCMK__LOG_TRACE, + "Test", "test", 0x0f0, 0x00f, NULL), + 0x0ff); + assert_int_equal(pcmk__set_flags_as(__func__, __LINE__, PCMK__LOG_TRACE, + "Test", "test", 0x0f0, 0xf0f, NULL), + 0xfff); + assert_int_equal(pcmk__set_flags_as(__func__, __LINE__, PCMK__LOG_TRACE, + "Test", "test", 0x0f0, 0xfff, NULL), + 0xfff); } PCMK__UNIT_TEST(NULL, NULL, diff --git a/lib/common/xml.c b/lib/common/xml.c index 6bcec942b4c..8bf2e741f26 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -760,9 +760,9 @@ free_xml_with_position(xmlNode *node, int position) GString *xpath = pcmk__element_xpath(node); qb_log_from_external_source(__func__, __FILE__, - "Cannot remove %s %x", LOG_TRACE, - __LINE__, 0, xpath->str, - nodepriv->flags); + "Cannot remove %s %x", + PCMK__LOG_TRACE, __LINE__, 0, + xpath->str, nodepriv->flags); g_string_free(xpath, TRUE); }, {} diff --git a/lib/fencing/st_actions.c b/lib/fencing/st_actions.c index 3b33b640dba..c66b90ac666 100644 --- a/lib/fencing/st_actions.c +++ b/lib/fencing/st_actions.c @@ -613,7 +613,7 @@ stonith_action_to_svc(stonith_action_t *action) svc_action->params = action->args; svc_action->cb_data = (void *) action; svc_action->flags = pcmk__set_flags_as(__func__, __LINE__, - LOG_TRACE, "Action", + PCMK__LOG_TRACE, "Action", svc_action->id, svc_action->flags, SVC_ACTION_NON_BLOCKED, "SVC_ACTION_NON_BLOCKED"); diff --git a/lib/pacemaker/libpacemaker_private.h b/lib/pacemaker/libpacemaker_private.h index 285c9096df9..3fc52cedd7a 100644 --- a/lib/pacemaker/libpacemaker_private.h +++ b/lib/pacemaker/libpacemaker_private.h @@ -20,6 +20,7 @@ #include // guint, gpointer, GList, GHashTable #include // xmlNode +#include // PCMK__LOG_TRACE #include // pcmk_action_t, pcmk_node_t, etc. #include // pcmk__location_t, etc. #include // pcmk__idref_t (indirectly) @@ -68,14 +69,14 @@ enum pcmk__updated { #define pcmk__set_updated_flags(au_flags, action, flags_to_set) do { \ au_flags = pcmk__set_flags_as(__func__, __LINE__, \ - LOG_TRACE, "Action update", \ + PCMK__LOG_TRACE, "Action update", \ (action)->uuid, au_flags, \ (flags_to_set), #flags_to_set); \ } while (0) #define pcmk__clear_updated_flags(au_flags, action, flags_to_clear) do { \ au_flags = pcmk__clear_flags_as(__func__, __LINE__, \ - LOG_TRACE, "Action update", \ + PCMK__LOG_TRACE, "Action update", \ (action)->uuid, au_flags, \ (flags_to_clear), #flags_to_clear); \ } while (0) diff --git a/lib/pacemaker/pcmk_graph_logging.c b/lib/pacemaker/pcmk_graph_logging.c index 186b238a5ac..3e340b0010c 100644 --- a/lib/pacemaker/pcmk_graph_logging.c +++ b/lib/pacemaker/pcmk_graph_logging.c @@ -213,7 +213,7 @@ void pcmk__log_graph(unsigned int log_level, pcmk__graph_t *graph) { if ((graph == NULL) || (graph->num_actions == 0)) { - if (log_level == LOG_TRACE) { + if (log_level == PCMK__LOG_TRACE) { pcmk__debug("Empty transition graph"); } return; diff --git a/lib/pacemaker/pcmk_injections.c b/lib/pacemaker/pcmk_injections.c index b345e7bbf61..09acfa261d0 100644 --- a/lib/pacemaker/pcmk_injections.c +++ b/lib/pacemaker/pcmk_injections.c @@ -390,7 +390,8 @@ find_resource_xml(xmlNode *cib_node, const char *resource) { const char *node = pcmk__xe_get(cib_node, PCMK_XA_UNAME); char *xpath = pcmk__assert_asprintf(XPATH_RSC_HISTORY, node, resource); - xmlNode *match = pcmk__xpath_find_one(cib_node->doc, xpath, LOG_TRACE); + xmlNode *match = pcmk__xpath_find_one(cib_node->doc, xpath, + PCMK__LOG_TRACE); free(xpath); return match; diff --git a/lib/pacemaker/pcmk_sched_instances.c b/lib/pacemaker/pcmk_sched_instances.c index d3527d372a8..8007238f763 100644 --- a/lib/pacemaker/pcmk_sched_instances.c +++ b/lib/pacemaker/pcmk_sched_instances.c @@ -1632,10 +1632,10 @@ pcmk__instance_update_ordered_actions(pcmk_action_t *first, pcmk_action_t *then, } } -#define pe__clear_action_summary_flags(flags, action, flag) do { \ - flags = pcmk__clear_flags_as(__func__, __LINE__, LOG_TRACE, \ - "Action summary", action->rsc->id, \ - flags, flag, #flag); \ +#define pe__clear_action_summary_flags(flags, action, flag) do { \ + flags = pcmk__clear_flags_as(__func__, __LINE__, PCMK__LOG_TRACE, \ + "Action summary", action->rsc->id, \ + flags, flag, #flag); \ } while (0) /*! diff --git a/lib/pacemaker/pcmk_sched_recurring.c b/lib/pacemaker/pcmk_sched_recurring.c index 4f8f087f81f..bf929d9cd73 100644 --- a/lib/pacemaker/pcmk_sched_recurring.c +++ b/lib/pacemaker/pcmk_sched_recurring.c @@ -306,7 +306,7 @@ recurring_op_for_active(pcmk_resource_t *rsc, pcmk_action_t *start, } } - do_crm_log((is_optional? LOG_INFO : LOG_TRACE), + do_crm_log((is_optional? LOG_INFO : PCMK__LOG_TRACE), "%s recurring action %s because %s configured for %s role " "(not %s)", (is_optional? "Cancelling" : "Ignoring"), op->key, op->id, diff --git a/lib/pacemaker/pcmk_scheduler.c b/lib/pacemaker/pcmk_scheduler.c index bfeb7ccd26a..b06f58b5086 100644 --- a/lib/pacemaker/pcmk_scheduler.c +++ b/lib/pacemaker/pcmk_scheduler.c @@ -774,7 +774,7 @@ pcmk__schedule_actions(pcmk_scheduler_t *scheduler) log_all_actions(scheduler); pcmk__create_graph(scheduler); - if (get_crm_log_level() == LOG_TRACE) { + if (get_crm_log_level() == PCMK__LOG_TRACE) { log_unrunnable_actions(scheduler); } } diff --git a/lib/pengine/bundle.c b/lib/pengine/bundle.c index 8896e0341a3..b40907a9488 100644 --- a/lib/pengine/bundle.c +++ b/lib/pengine/bundle.c @@ -951,7 +951,7 @@ pe__add_bundle_remote_name(pcmk_resource_t *rsc, xmlNode *xml, } #define pe__set_bundle_mount_flags(mount_xml, flags, flags_to_set) do { \ - flags = pcmk__set_flags_as(__func__, __LINE__, LOG_TRACE, \ + flags = pcmk__set_flags_as(__func__, __LINE__, PCMK__LOG_TRACE, \ "Bundle mount", pcmk__xe_id(mount_xml), \ flags, (flags_to_set), #flags_to_set); \ } while (0) diff --git a/lib/pengine/clone.c b/lib/pengine/clone.c index cb316e9fe53..bd923005a44 100644 --- a/lib/pengine/clone.c +++ b/lib/pengine/clone.c @@ -362,7 +362,8 @@ clone_unpack(pcmk_resource_t *rsc) if (pcmk__is_true(g_hash_table_lookup(rsc->priv->meta, PCMK_META_ORDERED))) { - clone_data->flags = pcmk__set_flags_as(__func__, __LINE__, LOG_TRACE, + clone_data->flags = pcmk__set_flags_as(__func__, __LINE__, + PCMK__LOG_TRACE, "Clone", rsc->id, clone_data->flags, pcmk__clone_ordered, @@ -1071,7 +1072,7 @@ pe__set_clone_flag(pcmk_resource_t *clone, enum pcmk__clone_flags flag) if (pcmk__is_set(clone_data->flags, flag)) { return pcmk_rc_already; } - clone_data->flags = pcmk__set_flags_as(__func__, __LINE__, LOG_TRACE, + clone_data->flags = pcmk__set_flags_as(__func__, __LINE__, PCMK__LOG_TRACE, "Clone", clone->id, clone_data->flags, flag, "flag"); return pcmk_rc_ok; diff --git a/lib/pengine/complex.c b/lib/pengine/complex.c index 6210966aca8..80e3c1ce7f3 100644 --- a/lib/pengine/complex.c +++ b/lib/pengine/complex.c @@ -300,7 +300,8 @@ unpack_template(xmlNode *xml_obj, xmlNode **expanded_xml, } cib_resources = pcmk__xpath_find_one(scheduler->input->doc, - "//" PCMK_XE_RESOURCES, LOG_TRACE); + "//" PCMK_XE_RESOURCES, + PCMK__LOG_TRACE); if (cib_resources == NULL) { pcmk__config_err("No resources configured"); return FALSE; diff --git a/lib/pengine/status.c b/lib/pengine/status.c index 5e9ea684473..7d42f3020be 100644 --- a/lib/pengine/status.c +++ b/lib/pengine/status.c @@ -114,7 +114,7 @@ cluster_status(pcmk_scheduler_t * scheduler) PCMK__LOG_NEVER); section = pcmk__xpath_find_one(scheduler->input->doc, - "//" PCMK_XE_CRM_CONFIG, LOG_TRACE); + "//" PCMK_XE_CRM_CONFIG, PCMK__LOG_TRACE); unpack_config(section, scheduler); if (!pcmk__any_flags_set(scheduler->flags, @@ -126,18 +126,19 @@ cluster_status(pcmk_scheduler_t * scheduler) } section = pcmk__xpath_find_one(scheduler->input->doc, "//" PCMK_XE_NODES, - LOG_TRACE); + PCMK__LOG_TRACE); unpack_nodes(section, scheduler); section = pcmk__xpath_find_one(scheduler->input->doc, - "//" PCMK_XE_RESOURCES, LOG_TRACE); + "//" PCMK_XE_RESOURCES, PCMK__LOG_TRACE); if (!pcmk__is_set(scheduler->flags, pcmk__sched_location_only)) { unpack_remote_nodes(section, scheduler); } unpack_resources(section, scheduler); section = pcmk__xpath_find_one(scheduler->input->doc, - "//" PCMK_XE_FENCING_TOPOLOGY, LOG_TRACE); + "//" PCMK_XE_FENCING_TOPOLOGY, + PCMK__LOG_TRACE); pcmk__validate_fencing_topology(section); section = pcmk__xpath_find_one(scheduler->input->doc, "//" PCMK_XE_TAGS, @@ -146,7 +147,7 @@ cluster_status(pcmk_scheduler_t * scheduler) if (!pcmk__is_set(scheduler->flags, pcmk__sched_location_only)) { section = pcmk__xpath_find_one(scheduler->input->doc, - "//" PCMK_XE_STATUS, LOG_TRACE); + "//" PCMK_XE_STATUS, PCMK__LOG_TRACE); unpack_status(section, scheduler); } diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c index cecae0db3bd..6f3e622e7bc 100644 --- a/lib/pengine/unpack.c +++ b/lib/pengine/unpack.c @@ -58,14 +58,18 @@ struct action_history { if (scf_value != NULL) { \ if (pcmk__is_true(scf_value)) { \ (scheduler)->flags = pcmk__set_flags_as(__func__, __LINE__, \ - LOG_TRACE, "Scheduler", \ - crm_system_name, (scheduler)->flags, \ - (flag), #flag); \ + PCMK__LOG_TRACE, \ + "Scheduler", \ + crm_system_name, \ + (scheduler)->flags, \ + (flag), #flag); \ } else { \ (scheduler)->flags = pcmk__clear_flags_as(__func__, __LINE__, \ - LOG_TRACE, "Scheduler", \ - crm_system_name, (scheduler)->flags, \ - (flag), #flag); \ + PCMK__LOG_TRACE, \ + "Scheduler", \ + crm_system_name, \ + (scheduler)->flags, \ + (flag), #flag); \ } \ } \ } while(0) diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c index 73fb2f2550c..77e0065ad87 100644 --- a/lib/pengine/utils.c +++ b/lib/pengine/utils.c @@ -223,13 +223,12 @@ pe__log_node_weights(const char *file, const char *function, int line, if (rsc) { qb_log_from_external_source(function, file, "%s: %s allocation score on %s: %s", - LOG_TRACE, line, 0, - comment, rsc->id, - pcmk__node_name(node), + PCMK__LOG_TRACE, line, 0, + comment, rsc->id, pcmk__node_name(node), pcmk_readable_score(node->assign->score)); } else { qb_log_from_external_source(function, file, "%s: %s = %s", - LOG_TRACE, line, 0, + PCMK__LOG_TRACE, line, 0, comment, pcmk__node_name(node), pcmk_readable_score(node->assign->score)); } diff --git a/tools/crm_error.c b/tools/crm_error.c index 51a0051ec26..39fc45a45d4 100644 --- a/tools/crm_error.c +++ b/tools/crm_error.c @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the Pacemaker project contributors + * Copyright 2012-2025 the Pacemaker project contributors * * The version control history for this file may have further details. * @@ -123,7 +123,7 @@ main(int argc, char **argv) uint32_t flags = pcmk_rc_disp_code|pcmk_rc_disp_desc; if (options.with_name) { - flags = pcmk__set_flags_as(__func__, __LINE__, LOG_TRACE, + flags = pcmk__set_flags_as(__func__, __LINE__, PCMK__LOG_TRACE, "pcmk_rc_disp_flags", "pcmk__list_result_codes", flags, pcmk_rc_disp_name, "pcmk_rc_disp_name"); @@ -135,14 +135,14 @@ main(int argc, char **argv) // For text output, print only "[name -] description" by default if (args->verbosity > 0) { - flags = pcmk__set_flags_as(__func__, __LINE__, LOG_TRACE, + flags = pcmk__set_flags_as(__func__, __LINE__, PCMK__LOG_TRACE, "pcmk_rc_disp_flags", "pcmk__show_result_code", flags, pcmk_rc_disp_code, "pcmk_rc_disp_code"); } if (options.with_name) { - flags = pcmk__set_flags_as(__func__, __LINE__, LOG_TRACE, + flags = pcmk__set_flags_as(__func__, __LINE__, PCMK__LOG_TRACE, "pcmk_rc_disp_flags", "pcmk__show_result_code", flags, pcmk_rc_disp_name, "pcmk_rc_disp_name"); From 01b5a5e656784627fb575a3fb98b790e29891d7a Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 27 Mar 2025 17:58:36 -0700 Subject: [PATCH 172/186] Refactor: libcrmcommon: New pcmk__trace() To replace crm_trace() Signed-off-by: Reid Wahl --- daemons/attrd/attrd_alerts.c | 2 +- daemons/attrd/attrd_attributes.c | 8 +- daemons/attrd/attrd_cib.c | 24 +- daemons/attrd/attrd_corosync.c | 27 +-- daemons/attrd/attrd_ipc.c | 18 +- daemons/attrd/attrd_sync.c | 39 +-- daemons/attrd/attrd_utils.c | 6 +- daemons/based/based_callbacks.c | 162 +++++++------ daemons/based/based_io.c | 15 +- daemons/based/based_messages.c | 12 +- daemons/based/based_remote.c | 17 +- daemons/based/based_transaction.c | 10 +- daemons/controld/controld_attrd.c | 7 +- daemons/controld/controld_callbacks.c | 35 +-- daemons/controld/controld_cib.c | 40 ++-- daemons/controld/controld_control.c | 38 +-- daemons/controld/controld_election.c | 4 +- daemons/controld/controld_execd.c | 63 ++--- daemons/controld/controld_execd_state.c | 66 ++--- daemons/controld/controld_fencing.c | 4 +- daemons/controld/controld_fsa.c | 22 +- daemons/controld/controld_join_client.c | 12 +- daemons/controld/controld_join_dc.c | 26 +- daemons/controld/controld_membership.c | 11 +- daemons/controld/controld_messages.c | 57 +++-- daemons/controld/controld_metadata.c | 7 +- daemons/controld/controld_remote_ra.c | 23 +- daemons/controld/controld_schedulerd.c | 17 +- daemons/controld/controld_te_actions.c | 20 +- daemons/controld/controld_te_callbacks.c | 27 +-- daemons/controld/controld_te_events.c | 4 +- daemons/controld/controld_te_utils.c | 16 +- daemons/controld/controld_throttle.c | 9 +- daemons/controld/controld_timers.c | 13 +- daemons/controld/controld_utils.c | 165 +++++++------ daemons/execd/execd_alerts.c | 8 +- daemons/execd/execd_commands.c | 35 +-- daemons/execd/pacemaker-execd.c | 16 +- daemons/execd/remoted_proxy.c | 9 +- daemons/execd/remoted_tls.c | 4 +- daemons/fenced/fenced_cib.c | 18 +- daemons/fenced/fenced_commands.c | 122 +++++----- daemons/fenced/fenced_history.c | 31 +-- daemons/fenced/fenced_remote.c | 168 ++++++------- daemons/fenced/pacemaker-fenced.c | 26 +- daemons/pacemakerd/pacemakerd.c | 8 +- daemons/pacemakerd/pcmkd_corosync.c | 5 +- daemons/pacemakerd/pcmkd_messages.c | 20 +- daemons/pacemakerd/pcmkd_subdaemons.c | 8 +- daemons/schedulerd/pacemaker-schedulerd.c | 2 +- daemons/schedulerd/schedulerd_messages.c | 13 +- include/crm/common/logging_internal.h | 9 + lib/cib/cib_attrs.c | 21 +- lib/cib/cib_client.c | 26 +- lib/cib/cib_file.c | 22 +- lib/cib/cib_native.c | 19 +- lib/cib/cib_ops.c | 52 ++-- lib/cib/cib_remote.c | 15 +- lib/cib/cib_utils.c | 43 ++-- lib/cluster/corosync.c | 34 +-- lib/cluster/cpg.c | 57 ++--- lib/cluster/election.c | 10 +- lib/cluster/membership.c | 70 +++--- lib/common/acl.c | 96 ++++---- lib/common/alerts.c | 24 +- lib/common/attrs.c | 22 +- lib/common/cib_secrets.c | 2 +- lib/common/digest.c | 19 +- lib/common/io.c | 6 +- lib/common/ipc_client.c | 57 ++--- lib/common/ipc_controld.c | 6 +- lib/common/ipc_pacemakerd.c | 6 +- lib/common/ipc_server.c | 52 ++-- lib/common/iso8601.c | 86 +++---- lib/common/logging.c | 14 +- lib/common/mainloop.c | 94 ++++---- lib/common/messages.c | 2 +- lib/common/nodes.c | 5 +- lib/common/nvpair.c | 23 +- lib/common/options.c | 20 +- lib/common/patchset.c | 65 ++--- lib/common/patchset_display.c | 6 +- lib/common/pid.c | 2 +- lib/common/procfs.c | 2 +- lib/common/remote.c | 77 +++--- lib/common/results.c | 9 +- lib/common/rules.c | 71 +++--- lib/common/scheduler.c | 6 +- lib/common/schemas.c | 10 +- lib/common/strings.c | 19 +- lib/common/tls.c | 2 +- lib/common/utils.c | 21 +- lib/common/watchdog.c | 14 +- lib/common/xml.c | 29 ++- lib/common/xml_attr.c | 4 +- lib/common/xml_element.c | 32 +-- lib/common/xml_idref.c | 2 +- lib/common/xml_io.c | 10 +- lib/fencing/st_actions.c | 8 +- lib/fencing/st_client.c | 67 +++--- lib/fencing/st_lha.c | 2 +- lib/lrmd/lrmd_alerts.c | 14 +- lib/lrmd/lrmd_client.c | 20 +- lib/lrmd/proxy_common.c | 34 ++- lib/pacemaker/pcmk_graph_consumer.c | 74 +++--- lib/pacemaker/pcmk_graph_producer.c | 188 +++++++-------- lib/pacemaker/pcmk_injections.c | 2 +- lib/pacemaker/pcmk_sched_actions.c | 89 +++---- lib/pacemaker/pcmk_sched_colocation.c | 77 +++--- lib/pacemaker/pcmk_sched_constraints.c | 6 +- lib/pacemaker/pcmk_sched_group.c | 6 +- lib/pacemaker/pcmk_sched_instances.c | 124 +++++----- lib/pacemaker/pcmk_sched_location.c | 15 +- lib/pacemaker/pcmk_sched_nodes.c | 52 ++-- lib/pacemaker/pcmk_sched_ordering.c | 13 +- lib/pacemaker/pcmk_sched_primitive.c | 18 +- lib/pacemaker/pcmk_sched_probes.c | 59 ++--- lib/pacemaker/pcmk_sched_remote.c | 84 ++++--- lib/pacemaker/pcmk_sched_resource.c | 18 +- lib/pacemaker/pcmk_scheduler.c | 20 +- lib/pacemaker/pcmk_simulate.c | 7 +- lib/pengine/bundle.c | 7 +- lib/pengine/native.c | 4 +- lib/pengine/pe_actions.c | 37 +-- lib/pengine/pe_digest.c | 12 +- lib/pengine/pe_health.c | 4 +- lib/pengine/status.c | 18 +- lib/pengine/unpack.c | 278 ++++++++++++---------- lib/pengine/utils.c | 8 +- lib/services/dbus.c | 70 +++--- lib/services/services.c | 19 +- lib/services/services_linux.c | 27 ++- lib/services/services_lsb.c | 2 +- lib/services/systemd.c | 34 +-- tools/cibadmin.c | 4 +- tools/crm_mon.c | 12 +- tools/crm_resource_ban.c | 6 +- tools/crm_resource_runtime.c | 35 +-- tools/crmadmin.c | 2 +- 139 files changed, 2288 insertions(+), 2100 deletions(-) diff --git a/daemons/attrd/attrd_alerts.c b/daemons/attrd/attrd_alerts.c index f03c41b3758..9ee8738bc3c 100644 --- a/daemons/attrd/attrd_alerts.c +++ b/daemons/attrd/attrd_alerts.c @@ -119,7 +119,7 @@ attrd_read_options(gpointer user_data) "config_query_callback", config_query_callback, free); - crm_trace("Querying the CIB... call %d", call_id); + pcmk__trace("Querying the CIB... call %d", call_id); return TRUE; } diff --git a/daemons/attrd/attrd_attributes.c b/daemons/attrd/attrd_attributes.c index ba3ff42d954..a4864ca65b4 100644 --- a/daemons/attrd/attrd_attributes.c +++ b/daemons/attrd/attrd_attributes.c @@ -70,10 +70,10 @@ attrd_create_attribute(xmlNode *xml) } } - crm_trace("Created attribute %s with %s write delay and %s CIB user", - a->id, - ((dampen > 0)? pcmk__readable_interval(a->timeout_ms) : "no"), - pcmk__s(a->user, "default")); + pcmk__trace("Created attribute %s with %s write delay and %s CIB user", + a->id, + ((dampen > 0)? pcmk__readable_interval(a->timeout_ms) : "no"), + pcmk__s(a->user, "default")); g_hash_table_replace(attributes, a->id, a); return a; diff --git a/daemons/attrd/attrd_cib.c b/daemons/attrd/attrd_cib.c index 852eb62af14..5a6d54300dd 100644 --- a/daemons/attrd/attrd_cib.c +++ b/daemons/attrd/attrd_cib.c @@ -239,7 +239,7 @@ static gboolean attribute_timer_cb(gpointer data) { attribute_t *a = data; - crm_trace("Dampen interval expired for %s", a->id); + pcmk__trace("Dampen interval expired for %s", a->id); attrd_write_or_elect_attribute(a); return FALSE; } @@ -322,8 +322,8 @@ attrd_cib_callback(xmlNode *msg, int call_id, int rc, xmlNode *output, void *use } else if (a->timer) { // Attribute has a dampening value, so use that as delay if (!mainloop_timer_running(a->timer)) { - crm_trace("Delayed re-attempted write for %s by %s", - name, pcmk__readable_interval(a->timeout_ms)); + pcmk__trace("Delayed re-attempted write for %s by %s", + name, pcmk__readable_interval(a->timeout_ms)); mainloop_timer_start(a->timer); } } else { @@ -454,11 +454,11 @@ send_alert_attributes_value(attribute_t *a, GHashTable *t) rc = attrd_send_attribute_alert(at->nodename, node_xml_id, a->id, at->current); - crm_trace("Sent alerts for %s[%s]=%s with node XML ID %s " - "(%s agents failed)", - a->id, at->nodename, at->current, - pcmk__s(node_xml_id, "unknown"), - ((rc == 0)? "no" : ((rc == -1)? "some" : "all"))); + pcmk__trace("Sent alerts for %s[%s]=%s with node XML ID %s (%s agents " + "failed)", + a->id, at->nodename, at->current, + pcmk__s(node_xml_id, "unknown"), + ((rc == 0)? "no" : ((rc == -1)? "some" : "all"))); } } @@ -599,9 +599,9 @@ write_attribute(attribute_t *a, bool ignore_delay) } if (!pcmk__str_eq(prev_xml_id, node_xml_id, pcmk__str_none)) { - crm_trace("Setting %s[%s] node XML ID to %s (was %s)", - a->id, v->nodename, node_xml_id, - pcmk__s(prev_xml_id, "unknown")); + pcmk__trace("Setting %s[%s] node XML ID to %s (was %s)", a->id, + v->nodename, node_xml_id, + pcmk__s(prev_xml_id, "unknown")); attrd_set_node_xml_id(v->nodename, node_xml_id); } @@ -699,7 +699,7 @@ attrd_write_attributes(uint32_t options) } write_attribute(a, ignore_delay); } else { - crm_trace("Skipping unchanged attribute %s", a->id); + pcmk__trace("Skipping unchanged attribute %s", a->id); } } } diff --git a/daemons/attrd/attrd_corosync.c b/daemons/attrd/attrd_corosync.c index daf0262b480..25f297b79ab 100644 --- a/daemons/attrd/attrd_corosync.c +++ b/daemons/attrd/attrd_corosync.c @@ -295,8 +295,8 @@ update_attr_on_host(attribute_t *a, const pcmk__node_status_t *peer, // Write out new value or start dampening timer if (a->timeout_ms && a->timer) { - crm_trace("Delaying write of %s %s for dampening", - attr, pcmk__readable_interval(a->timeout_ms)); + pcmk__trace("Delaying write of %s %s for dampening", attr, + pcmk__readable_interval(a->timeout_ms)); mainloop_timer_start(a->timer); } else { attrd_write_or_elect_attribute(a); @@ -310,12 +310,12 @@ update_attr_on_host(attribute_t *a, const pcmk__node_status_t *peer, if (is_force_write == 1 && a->timeout_ms && a->timer) { /* Save forced writing and set change flag. */ /* The actual attribute is written by Writer after election. */ - crm_trace("%s[%s] from %s is unchanged (%s), forcing write", - attr, host, peer->name, pcmk__s(value, "unset")); + pcmk__trace("%s[%s] from %s is unchanged (%s), forcing write", attr, + host, peer->name, pcmk__s(value, "unset")); attrd_set_attr_flags(a, attrd_attr_force_write); } else { - crm_trace("%s[%s] from %s is unchanged (%s)", - attr, host, peer->name, pcmk__s(value, "unset")); + pcmk__trace("%s[%s] from %s is unchanged (%s)", attr, host, + peer->name, pcmk__s(value, "unset")); } } @@ -325,9 +325,8 @@ update_attr_on_host(attribute_t *a, const pcmk__node_status_t *peer, // Remember node's XML ID if we're just learning it if ((node_xml_id != NULL) && !pcmk__str_eq(node_xml_id, prev_xml_id, pcmk__str_none)) { - crm_trace("Learned %s[%s] node XML ID is %s (was %s)", - a->id, v->nodename, node_xml_id, - pcmk__s(prev_xml_id, "unknown")); + pcmk__trace("Learned %s[%s] node XML ID is %s (was %s)", a->id, + v->nodename, node_xml_id, pcmk__s(prev_xml_id, "unknown")); attrd_set_node_xml_id(v->nodename, node_xml_id); if (attrd_election_won()) { // In case we couldn't write a value missing the XML ID before @@ -398,8 +397,8 @@ broadcast_unseen_local_values(void) if (!pcmk__is_set(v->flags, attrd_value_from_peer) && pcmk__str_eq(v->nodename, attrd_cluster->priv->node_name, pcmk__str_casei)) { - crm_trace("* %s[%s]='%s' is local-only", - a->id, v->nodename, readable_value(v)); + pcmk__trace("* %s[%s]='%s' is local-only", a->id, v->nodename, + readable_value(v)); if (sync == NULL) { sync = pcmk__xe_create(NULL, __func__); pcmk__xe_set(sync, PCMK_XA_TASK, @@ -472,8 +471,8 @@ attrd_peer_clear_failure(pcmk__request_t *request) g_hash_table_iter_init(&iter, attributes); while (g_hash_table_iter_next(&iter, (gpointer *) &attr, NULL)) { if (regexec(®ex, attr, 0, NULL, 0) == 0) { - crm_trace("Matched %s when clearing %s", - attr, pcmk__s(rsc, "all resources")); + pcmk__trace("Matched %s when clearing %s", attr, + pcmk__s(rsc, "all resources")); pcmk__xe_set(xml, PCMK__XA_ATTR_NAME, attr); attrd_peer_update(peer, xml, host, false); } @@ -615,7 +614,7 @@ attrd_peer_update(const pcmk__node_status_t *peer, xmlNode *xml, * point, process that now. */ if (handle_sync_point) { - crm_trace("Hit local sync point for attribute update"); + pcmk__trace("Hit local sync point for attribute update"); attrd_ack_waitlist_clients(attrd_sync_point_local, xml); } } diff --git a/daemons/attrd/attrd_ipc.c b/daemons/attrd/attrd_ipc.c index b0ce6baf7b9..29b0ffff018 100644 --- a/daemons/attrd/attrd_ipc.c +++ b/daemons/attrd/attrd_ipc.c @@ -59,7 +59,7 @@ static xmlNode *build_query_reply(const char *attr, const char *host) /* Allow caller to use "localhost" to refer to local node */ if (pcmk__str_eq(host, "localhost", pcmk__str_casei)) { host = attrd_cluster->priv->node_name; - crm_trace("Mapped localhost to %s", host); + pcmk__trace("Mapped localhost to %s", host); } /* If a specific node was requested, add its value */ @@ -235,9 +235,9 @@ static void handle_missing_host(xmlNode *xml) { if (pcmk__xe_get(xml, PCMK__XA_ATTR_HOST) == NULL) { - crm_trace("Inferring local node %s with XML ID %s", - attrd_cluster->priv->node_name, - attrd_cluster->priv->node_xml_id); + pcmk__trace("Inferring local node %s with XML ID %s", + attrd_cluster->priv->node_name, + attrd_cluster->priv->node_xml_id); pcmk__xe_set(xml, PCMK__XA_ATTR_HOST, attrd_cluster->priv->node_name); pcmk__xe_set(xml, PCMK__XA_ATTR_HOST_ID, attrd_cluster->priv->node_xml_id); @@ -267,7 +267,7 @@ expand_regexes(xmlNode *xml, const char *attr, const char *value, const char *re if (status == 0) { xmlNode *child = pcmk__xe_create(xml, PCMK_XE_OP); - crm_trace("Matched %s with %s", attr, regex); + pcmk__trace("Matched %s with %s", attr, regex); matched = true; /* Copy all the non-conflicting attributes from the parent over, @@ -493,7 +493,7 @@ attrd_client_update(pcmk__request_t *request) static int32_t attrd_ipc_accept(qb_ipcs_connection_t *c, uid_t uid, gid_t gid) { - crm_trace("New client connection %p", c); + pcmk__trace("New client connection %p", c); if (attrd_shutting_down(false)) { pcmk__info("Ignoring new connection from pid %d during shutdown", pcmk__client_pid(c)); @@ -520,9 +520,9 @@ attrd_ipc_closed(qb_ipcs_connection_t *c) pcmk__client_t *client = pcmk__find_client(c); if (client == NULL) { - crm_trace("Ignoring request to clean up unknown connection %p", c); + pcmk__trace("Ignoring request to clean up unknown connection %p", c); } else { - crm_trace("Cleaning up closed client connection %p", c); + pcmk__trace("Cleaning up closed client connection %p", c); /* Remove the client from the sync point waitlist if it's present. */ attrd_remove_client_from_waitlist(client); @@ -548,7 +548,7 @@ attrd_ipc_closed(qb_ipcs_connection_t *c) static void attrd_ipc_destroy(qb_ipcs_connection_t *c) { - crm_trace("Destroying client connection %p", c); + pcmk__trace("Destroying client connection %p", c); attrd_ipc_closed(c); } diff --git a/daemons/attrd/attrd_sync.c b/daemons/attrd/attrd_sync.c index 75847203027..ef664188e36 100644 --- a/daemons/attrd/attrd_sync.c +++ b/daemons/attrd/attrd_sync.c @@ -163,9 +163,9 @@ attrd_add_client_to_waitlist(pcmk__request_t *request) next_key(); pcmk__intkey_table_insert(waitlist, waitlist_client, wl); - crm_trace("Added client %s to waitlist for %s sync point", - wl->client_id, sync_point_str(wl->sync_point)); - crm_trace("%d clients now on waitlist", g_hash_table_size(waitlist)); + pcmk__trace("Added client %s to waitlist for %s sync point", + wl->client_id, sync_point_str(wl->sync_point)); + pcmk__trace("%u clients now on waitlist", g_hash_table_size(waitlist)); /* And then add the key to the request XML so we can uniquely identify * it when it comes time to issue the ACK. @@ -213,7 +213,8 @@ attrd_remove_client_from_waitlist(pcmk__client_t *client) if (pcmk__str_eq(wl->client_id, client->id, pcmk__str_none)) { g_hash_table_iter_remove(&iter); - crm_trace("%d clients now on waitlist", g_hash_table_size(waitlist)); + pcmk__trace("%u clients now on waitlist", + g_hash_table_size(waitlist)); } } } @@ -267,7 +268,7 @@ attrd_ack_waitlist_clients(enum attrd_sync_point sync_point, const xmlNode *xml) /* And then remove the client so it doesn't get alerted again. */ pcmk__intkey_table_remove(waitlist, callid); - crm_trace("%d clients now on waitlist", g_hash_table_size(waitlist)); + pcmk__trace("%u clients now on waitlist", g_hash_table_size(waitlist)); } } @@ -283,7 +284,7 @@ attrd_ack_waitlist_clients(enum attrd_sync_point sync_point, const xmlNode *xml) int attrd_cluster_sync_point_update(xmlNode *xml) { - crm_trace("Hit cluster sync point for attribute update"); + pcmk__trace("Hit cluster sync point for attribute update"); attrd_ack_waitlist_clients(attrd_sync_point_cluster, xml); return pcmk_rc_ok; } @@ -376,14 +377,16 @@ confirmation_timeout_cb(gpointer data) return G_SOURCE_REMOVE; } - crm_trace("Timed out waiting for confirmations for client %s", client->id); + pcmk__trace("Timed out waiting for confirmations for client %s", + client->id); pcmk__ipc_send_ack(client, action->ipc_id, action->flags|crm_ipc_client_response, PCMK__XE_ACK, ATTRD_PROTOCOL_VERSION, CRM_EX_TIMEOUT); g_hash_table_iter_remove(&iter); - crm_trace("%d requests now in expected confirmations table", g_hash_table_size(expected_confirmations)); + pcmk__trace("%u requests now in expected confirmations table", + g_hash_table_size(expected_confirmations)); break; } } @@ -410,7 +413,7 @@ attrd_do_not_expect_from_peer(const char *host) keys = g_hash_table_get_keys(expected_confirmations); - crm_trace("Removing peer %s from expected confirmations", host); + pcmk__trace("Removing peer %s from expected confirmations", host); for (GList *node = keys; node != NULL; node = node->next) { int callid = *(int *) node->data; @@ -445,9 +448,11 @@ attrd_do_not_wait_for_client(pcmk__client_t *client) struct confirmation_action *action = (struct confirmation_action *) value; if (pcmk__str_eq(action->client_id, client->id, pcmk__str_none)) { - crm_trace("Removing client %s from expected confirmations", client->id); + pcmk__trace("Removing client %s from expected confirmations", + client->id); g_hash_table_iter_remove(&iter); - crm_trace("%d requests now in expected confirmations table", g_hash_table_size(expected_confirmations)); + pcmk__trace("%u requests now in expected confirmations table", + g_hash_table_size(expected_confirmations)); break; } } @@ -516,8 +521,10 @@ attrd_expect_confirmations(pcmk__request_t *request, attrd_confirmation_action_f mainloop_timer_start(action->timer); pcmk__intkey_table_insert(expected_confirmations, callid, action); - crm_trace("Callid %d now waiting on %d confirmations", callid, g_list_length(respondents)); - crm_trace("%d requests now in expected confirmations table", g_hash_table_size(expected_confirmations)); + pcmk__trace("Callid %d now waiting on %u confirmations", callid, + g_list_length(respondents)); + pcmk__trace("%u requests now in expected confirmations table", + g_hash_table_size(expected_confirmations)); } void @@ -562,11 +569,13 @@ attrd_handle_confirmation(int callid, const char *host) } action->respondents = g_list_remove(action->respondents, node->data); - crm_trace("Callid %d now waiting on %d confirmations", callid, g_list_length(action->respondents)); + pcmk__trace("Callid %d now waiting on %u confirmations", callid, + g_list_length(action->respondents)); if (action->respondents == NULL) { action->fn(action->xml); pcmk__intkey_table_remove(expected_confirmations, callid); - crm_trace("%d requests now in expected confirmations table", g_hash_table_size(expected_confirmations)); + pcmk__trace("%u requests now in expected confirmations table", + g_hash_table_size(expected_confirmations)); } } diff --git a/daemons/attrd/attrd_utils.c b/daemons/attrd/attrd_utils.c index da70d4f4374..e0a33339033 100644 --- a/daemons/attrd/attrd_utils.c +++ b/daemons/attrd/attrd_utils.c @@ -219,7 +219,7 @@ attrd_failure_regex(regex_t *regex, const char *rsc, const char *op, } /* Compile pattern into regular expression */ - crm_trace("Clearing attributes matching %s", pattern); + pcmk__trace("Clearing attributes matching %s", pattern); rc = regcomp(regex, pattern, REG_EXTENDED|REG_NOSUB); free(pattern); @@ -301,8 +301,8 @@ attrd_update_minimum_protocol_ver(const char *host, const char *value) /* If the protocol version is a new minimum, record it as such. */ if (minimum_protocol_version == -1 || ver < minimum_protocol_version) { minimum_protocol_version = ver; - crm_trace("Set minimum attrd protocol version to %d", - minimum_protocol_version); + pcmk__trace("Set minimum attrd protocol version to %d", + minimum_protocol_version); } } } diff --git a/daemons/based/based_callbacks.c b/daemons/based/based_callbacks.c index 8c507053dcb..4d0efd2c0ae 100644 --- a/daemons/based/based_callbacks.c +++ b/daemons/based/based_callbacks.c @@ -67,7 +67,7 @@ cib_ipc_dispatch_rw(qb_ipcs_connection_t * c, void *data, size_t size) { pcmk__client_t *client = pcmk__find_client(c); - crm_trace("%p message from %s", c, client->id); + pcmk__trace("%p message from %s", c, client->id); return cib_common_callback(c, data, size, TRUE); } @@ -76,7 +76,7 @@ cib_ipc_dispatch_ro(qb_ipcs_connection_t * c, void *data, size_t size) { pcmk__client_t *client = pcmk__find_client(c); - crm_trace("%p message from %s", c, client->id); + pcmk__trace("%p message from %s", c, client->id); return cib_common_callback(c, data, size, FALSE); } @@ -89,7 +89,7 @@ cib_ipc_closed(qb_ipcs_connection_t * c) if (client == NULL) { return 0; } - crm_trace("Connection %p", c); + pcmk__trace("Connection %p", c); pcmk__free_client(client); return 0; } @@ -97,7 +97,7 @@ cib_ipc_closed(qb_ipcs_connection_t * c) static void cib_ipc_destroy(qb_ipcs_connection_t * c) { - crm_trace("Connection %p", c); + pcmk__trace("Connection %p", c); cib_ipc_closed(c); if (cib_shutdown_flag) { cib_shutdown(0); @@ -152,7 +152,7 @@ create_cib_reply(const char *op, const char *call_id, const char *client_id, if (call_data != NULL) { xmlNode *wrapper = pcmk__xe_create(reply, PCMK__XE_CIB_CALLDATA); - crm_trace("Attaching reply output"); + pcmk__trace("Attaching reply output"); pcmk__xml_copy(wrapper, call_data); } @@ -204,11 +204,11 @@ do_local_notify(const xmlNode *notify_src, const char *client_id, break; } if (rc == pcmk_rc_ok) { - crm_trace("Notified %s client %s%s %s of call %d result", - pcmk__client_type_str(PCMK__CLIENT_TYPE(client_obj)), - pcmk__client_name(client_obj), - (from_peer? " (originator of delegated request)" : ""), - (sync_reply? "synchronously" : "asynchronously"), msg_id); + pcmk__trace("Notified %s client %s%s %s of call %d result", + pcmk__client_type_str(PCMK__CLIENT_TYPE(client_obj)), + pcmk__client_name(client_obj), + (from_peer? " (originator of delegated request)" : ""), + (sync_reply? "synchronously" : "asynchronously"), msg_id); } else { pcmk__warn("Could not notify %s client %s%s %s of call %d result: %s", pcmk__client_type_str(PCMK__CLIENT_TYPE(client_obj)), @@ -319,13 +319,13 @@ cib_common_callback(qb_ipcs_connection_t * c, void *data, size_t size, gboolean } if (op_request == NULL) { - crm_trace("Invalid message from %p", c); + pcmk__trace("Invalid message from %p", c); pcmk__ipc_send_ack(cib_client, id, flags, PCMK__XE_NACK, NULL, CRM_EX_PROTOCOL); return 0; } else if(cib_client == NULL) { - crm_trace("Invalid client %p", c); + pcmk__trace("Invalid client %p", c); return 0; } @@ -383,7 +383,7 @@ cib_digester_cb(gpointer data) ping_digest = NULL; ping_modified_since = FALSE; snprintf(buffer, 32, "%" PRIu64, ping_seq); - crm_trace("Requesting peer digests (%s)", buffer); + pcmk__trace("Requesting peer digests (%s)", buffer); pcmk__xe_set(ping, PCMK__XA_T, PCMK__VALUE_CIB); pcmk__xe_set(ping, PCMK__XA_CIB_OP, CRM_OP_PING); @@ -428,21 +428,25 @@ process_ping_reply(xmlNode *reply) } if(digest == NULL) { - crm_trace("Ignoring ping reply %s from %s with no digest", seq_s, host); + pcmk__trace("Ignoring ping reply %s from %s with no digest", seq_s, + host); } else if(seq != ping_seq) { - crm_trace("Ignoring out of sequence ping reply %s from %s", seq_s, host); + pcmk__trace("Ignoring out of sequence ping reply %s from %s", seq_s, + host); } else if(ping_modified_since) { - crm_trace("Ignoring ping reply %s from %s: cib updated since", seq_s, host); + pcmk__trace("Ignoring ping reply %s from %s: cib updated since", seq_s, + host); } else { if(ping_digest == NULL) { - crm_trace("Calculating new digest"); + pcmk__trace("Calculating new digest"); ping_digest = pcmk__digest_xml(the_cib, true); } - crm_trace("Processing ping reply %s from %s (%s)", seq_s, host, digest); + pcmk__trace("Processing ping reply %s from %s (%s)", seq_s, host, + digest); if (!pcmk__str_eq(ping_digest, digest, pcmk__str_casei)) { xmlNode *wrapper = pcmk__xe_first_child(pong, PCMK__XE_CIB_CALLDATA, NULL, NULL); @@ -473,7 +477,7 @@ process_ping_reply(xmlNode *reply) // Additional debug pcmk__xml_mark_changes(the_cib, remote_cib); pcmk__log_xml_changes(LOG_INFO, remote_cib); - crm_trace("End of differences"); + pcmk__trace("End of differences"); } pcmk__xml_free(remote_cib); @@ -502,8 +506,8 @@ parse_local_options(const pcmk__client_t *cib_client, * an error (from cib_process_request() or earlier) if host is not NULL or * OUR_NODENAME. */ - crm_trace("Processing always-local %s op from client %s", - op, pcmk__client_name(cib_client)); + pcmk__trace("Processing always-local %s op from client %s", op, + pcmk__client_name(cib_client)); if (!pcmk__str_eq(host, OUR_NODENAME, pcmk__str_casei|pcmk__str_null_matches)) { @@ -525,20 +529,19 @@ parse_local_options(const pcmk__client_t *cib_client, *local_notify = FALSE; *needs_forward = TRUE; - crm_trace("%s op from %s needs to be forwarded to %s", - op, pcmk__client_name(cib_client), - pcmk__s(host, "all nodes")); + pcmk__trace("%s op from %s needs to be forwarded to %s", op, + pcmk__client_name(cib_client), pcmk__s(host, "all nodes")); return; } if (stand_alone) { - crm_trace("Processing %s op from client %s (stand-alone)", - op, pcmk__client_name(cib_client)); + pcmk__trace("Processing %s op from client %s (stand-alone)", op, + pcmk__client_name(cib_client)); } else { - crm_trace("Processing %saddressed %s op from client %s", - ((host != NULL)? "locally " : "un"), - op, pcmk__client_name(cib_client)); + pcmk__trace("Processing %saddressed %s op from client %s", + ((host != NULL)? "locally " : "un"), op, + pcmk__client_name(cib_client)); } } @@ -595,10 +598,10 @@ parse_peer_options(const cib__operation_t *operation, xmlNode *request, const char *max = pcmk__xe_get(request, PCMK__XA_CIB_SCHEMA_MAX); const char *upgrade_rc = pcmk__xe_get(request, PCMK__XA_CIB_UPGRADE_RC); - crm_trace("Parsing upgrade %s for %s with max=%s and upgrade_rc=%s", - (is_reply? "reply" : "request"), - (based_is_primary? "primary" : "secondary"), - pcmk__s(max, "none"), pcmk__s(upgrade_rc, "none")); + pcmk__trace("Parsing upgrade %s for %s with max=%s and upgrade_rc=%s", + (is_reply? "reply" : "request"), + (based_is_primary? "primary" : "secondary"), + pcmk__s(max, "none"), pcmk__s(upgrade_rc, "none")); if (upgrade_rc != NULL) { // Our upgrade request was rejected by DC, notify clients of result @@ -624,7 +627,8 @@ parse_peer_options(const cib__operation_t *operation, xmlNode *request, } else if (is_reply && pcmk__is_set(operation->flags, cib__op_attr_modifies)) { - crm_trace("Ignoring legacy %s reply sent from %s to local clients", op, originator); + pcmk__trace("Ignoring legacy %s reply sent from %s to local clients", + op, originator); return FALSE; } else if (pcmk__str_eq(op, PCMK__CIB_REQUEST_SHUTDOWN, pcmk__str_none)) { @@ -639,8 +643,8 @@ parse_peer_options(const cib__operation_t *operation, xmlNode *request, } if (is_reply) { - crm_trace("Will notify local clients for %s reply from %s", - op, originator); + pcmk__trace("Will notify local clients for %s reply from %s", op, + originator); *process = FALSE; *needs_reply = FALSE; *local_notify = TRUE; @@ -655,24 +659,27 @@ parse_peer_options(const cib__operation_t *operation, xmlNode *request, host = pcmk__xe_get(request, PCMK__XA_CIB_HOST); if (pcmk__str_eq(host, OUR_NODENAME, pcmk__str_casei)) { - crm_trace("Processing %s request sent to us from %s", op, originator); + pcmk__trace("Processing %s request sent to us from %s", op, originator); *needs_reply = TRUE; return TRUE; } else if (host != NULL) { - crm_trace("Ignoring %s request intended for CIB manager on %s", - op, host); + pcmk__trace("Ignoring %s request intended for CIB manager on %s", op, + host); return FALSE; } else if(is_reply == FALSE && pcmk__str_eq(op, CRM_OP_PING, pcmk__str_casei)) { *needs_reply = TRUE; } - crm_trace("Processing %s request broadcast by %s call %s on %s " - "(local clients will%s be notified)", op, - pcmk__s(pcmk__xe_get(request, PCMK__XA_CIB_CLIENTNAME), "client"), - pcmk__s(pcmk__xe_get(request, PCMK__XA_CIB_CALLID), "without ID"), - originator, (*local_notify? "" : "not")); + pcmk__trace("Processing %s request broadcast by %s call %s on %s (local " + "clients will%s be notified)", + op, + pcmk__s(pcmk__xe_get(request, PCMK__XA_CIB_CLIENTNAME), + "client"), + pcmk__s(pcmk__xe_get(request, PCMK__XA_CIB_CALLID), + "without ID"), + originator, (*local_notify? "" : "not")); return TRUE; } @@ -732,7 +739,7 @@ send_peer_reply(xmlNode *msg, const char *originator) node = pcmk__get_node(0, originator, NULL, pcmk__node_search_cluster_member); - crm_trace("Sending request result to %s only", originator); + pcmk__trace("Sending request result to %s only", originator); pcmk__xe_set(msg, PCMK__XA_CIB_ISREPLYTO, originator); pcmk__cluster_send_message(node, pcmk_ipc_based, msg); } @@ -787,14 +794,15 @@ cib_process_request(xmlNode *request, gboolean privileged, } if (cib_client == NULL) { - crm_trace("Processing peer %s operation from %s/%s on %s intended for %s (reply=%s)", - op, pcmk__s(client_name, "client"), call_id, originator, - pcmk__s(host, "all"), reply_to); + pcmk__trace("Processing peer %s operation from %s/%s on %s intended " + "for %s (reply=%s)", + op, pcmk__s(client_name, "client"), call_id, originator, + pcmk__s(host, "all"), reply_to); } else { pcmk__xe_set(request, PCMK__XA_SRC, OUR_NODENAME); - crm_trace("Processing local %s operation from %s/%s intended for %s", - op, pcmk__s(client_name, "client"), call_id, - pcmk__s(host, "all")); + pcmk__trace("Processing local %s operation from %s/%s intended for %s", + op, pcmk__s(client_name, "client"), call_id, + pcmk__s(host, "all")); } rc = cib__get_operation(op, &operation); @@ -844,7 +852,7 @@ cib_process_request(xmlNode *request, gboolean privileged, */ needs_reply = FALSE; local_notify = FALSE; - crm_trace("Client is not interested in the reply"); + pcmk__trace("Client is not interested in the reply"); } if (needs_forward) { @@ -910,7 +918,8 @@ cib_process_request(xmlNode *request, gboolean privileged, finished = time(NULL); if ((finished - now) > 3) { - crm_trace("%s operation took %lds to complete", op, (long)(finished - now)); + pcmk__trace("%s operation took %llds to complete", op, + (long long) (finished - now)); crm_write_blackbox(0, NULL); } @@ -923,35 +932,36 @@ cib_process_request(xmlNode *request, gboolean privileged, } if (is_update) { - crm_trace("Completed pre-sync update from %s/%s/%s%s", - originator ? originator : "local", - pcmk__s(client_name, "client"), call_id, - local_notify?" with local notification":""); + pcmk__trace("Completed pre-sync update from %s/%s/%s%s", + pcmk__s(originator, "local"), + pcmk__s(client_name, "client"), call_id, + (local_notify? " with local notification" : "")); } else if (!needs_reply || stand_alone) { // This was a non-originating secondary update - crm_trace("Completed update as secondary"); + pcmk__trace("Completed update as secondary"); } else if ((cib_client == NULL) && !pcmk__is_set(call_options, cib_discard_reply)) { if (is_update == FALSE || result_diff == NULL) { - crm_trace("Request not broadcast: R/O call"); + pcmk__trace("Request not broadcast: R/O call"); } else if (rc != pcmk_ok) { - crm_trace("Request not broadcast: call failed: %s", pcmk_strerror(rc)); + pcmk__trace("Request not broadcast: call failed: %s", + pcmk_strerror(rc)); } else { - crm_trace("Directing reply to %s", originator); + pcmk__trace("Directing reply to %s", originator); } send_peer_reply(op_reply, originator); } if (local_notify && client_id) { - crm_trace("Performing local %ssync notification for %s", - (pcmk__is_set(call_options, cib_sync_call)? "" : "a"), - client_id); + pcmk__trace("Performing local %ssync notification for %s", + (pcmk__is_set(call_options, cib_sync_call)? "" : "a"), + client_id); if (process == FALSE) { do_local_notify(request, client_id, pcmk__is_set(call_options, cib_sync_call), @@ -1070,7 +1080,7 @@ cib_process_command(xmlNode *request, const cib__operation_t *operation, if (!privileged && pcmk__is_set(operation->flags, cib__op_attr_privileged)) { rc = -EACCES; - crm_trace("Failed due to lack of privileges: %s", pcmk_strerror(rc)); + pcmk__trace("Failed due to lack of privileges: %s", pcmk_strerror(rc)); goto done; } @@ -1095,7 +1105,7 @@ cib_process_command(xmlNode *request, const cib__operation_t *operation, if (pcmk__xe_attr_is_true(request, PCMK__XA_CIB_UPDATE)) { manage_counters = false; cib__set_call_options(call_options, "call", cib_force_diff); - crm_trace("Global update detected"); + pcmk__trace("Global update detected"); CRM_LOG_ASSERT(pcmk__str_any_of(op, PCMK__CIB_REQUEST_APPLY_PATCH, @@ -1127,10 +1137,10 @@ cib_process_command(xmlNode *request, const cib__operation_t *operation, config_changed = true; } - crm_trace("Activating %s->%s%s", - pcmk__xe_get(the_cib, PCMK_XA_NUM_UPDATES), - pcmk__xe_get(result_cib, PCMK_XA_NUM_UPDATES), - (config_changed? " changed" : "")); + pcmk__trace("Activating %s->%s%s", + pcmk__xe_get(the_cib, PCMK_XA_NUM_UPDATES), + pcmk__xe_get(result_cib, PCMK_XA_NUM_UPDATES), + (config_changed? " changed" : "")); rc = activateCibXml(result_cib, config_changed, op); if (rc != pcmk_ok) { @@ -1174,9 +1184,9 @@ cib_process_command(xmlNode *request, const cib__operation_t *operation, output = result_cib; } else { - crm_trace("Not activating %d %d %s", rc, - pcmk__is_set(call_options, cib_dryrun), - pcmk__xe_get(result_cib, PCMK_XA_NUM_UPDATES)); + pcmk__trace("Not activating %d %d %s", rc, + pcmk__is_set(call_options, cib_dryrun), + pcmk__xe_get(result_cib, PCMK_XA_NUM_UPDATES)); if (result_cib != the_cib) { pcmk__xml_free(result_cib); @@ -1185,8 +1195,8 @@ cib_process_command(xmlNode *request, const cib__operation_t *operation, if (!pcmk__any_flags_set(call_options, cib_dryrun|cib_inhibit_notify|cib_transaction)) { - crm_trace("Sending notifications %d", - pcmk__is_set(call_options, cib_dryrun)); + pcmk__trace("Sending notifications %d", + pcmk__is_set(call_options, cib_dryrun)); cib_diff_notify(op, rc, call_id, client_id, client_name, originator, input, *cib_diff); } @@ -1202,7 +1212,7 @@ cib_process_command(xmlNode *request, const cib__operation_t *operation, if (output != the_cib) { pcmk__xml_free(output); } - crm_trace("done"); + pcmk__trace("done"); return rc; } diff --git a/daemons/based/based_io.c b/daemons/based/based_io.c index 8b1c5c0912f..bca21a4d9c3 100644 --- a/daemons/based/based_io.c +++ b/daemons/based/based_io.c @@ -96,18 +96,19 @@ static int cib_archive_filter(const struct dirent * a) if(stat(a_path, &s) != 0) { rc = errno; - crm_trace("%s - stat failed: %s (%d)", a->d_name, pcmk_rc_str(rc), rc); + pcmk__trace("%s - stat failed: %s (%d)", a->d_name, pcmk_rc_str(rc), + rc); rc = 0; } else if (!S_ISREG(s.st_mode)) { - crm_trace("%s - wrong type (%#o)", - a->d_name, (unsigned int) (s.st_mode & S_IFMT)); + pcmk__trace("%s - wrong type (%#o)", a->d_name, + (unsigned int) (s.st_mode & S_IFMT)); } else if(strstr(a->d_name, "cib-") != a->d_name) { - crm_trace("%s - wrong prefix", a->d_name); + pcmk__trace("%s - wrong prefix", a->d_name); } else if (pcmk__ends_with_ext(a->d_name, ".sig")) { - crm_trace("%s - wrong suffix", a->d_name); + pcmk__trace("%s - wrong suffix", a->d_name); } else { pcmk__debug("%s - candidate", a->d_name); @@ -146,7 +147,7 @@ static int cib_archive_sort(const struct dirent ** a, const struct dirent **b) rc = -1; } - crm_trace("%s (%lu) vs. %s (%lu) : %d", + pcmk__trace("%s (%lu) vs. %s (%lu) : %d", a[0]->d_name, (unsigned long)a_age, b[0]->d_name, (unsigned long)b_age, rc); return rc; @@ -331,7 +332,7 @@ cib_diskwrite_complete(mainloop_child_t * p, pid_t pid, int core, int signo, int } if ((signo == 0) && (exitcode == 0)) { - crm_trace("Disk write [%d] succeeded", (int) pid); + pcmk__trace("Disk write [%d] succeeded", (int) pid); } else if (signo == 0) { pcmk__err("%s: process %d exited %d", errmsg, (int) pid, exitcode); diff --git a/daemons/based/based_messages.c b/daemons/based/based_messages.c index 26269672d64..297c57c0076 100644 --- a/daemons/based/based_messages.c +++ b/daemons/based/based_messages.c @@ -69,7 +69,7 @@ cib_process_noop(const char *op, int options, const char *section, xmlNode *req, xmlNode *input, xmlNode *existing_cib, xmlNode **result_cib, xmlNode **answer) { - crm_trace("Processing \"%s\" event", op); + pcmk__trace("Processing \"%s\" event", op); *answer = NULL; return pcmk_ok; } @@ -81,7 +81,7 @@ cib_process_readwrite(const char *op, int options, const char *section, xmlNode { int result = pcmk_ok; - crm_trace("Processing \"%s\" event", op); + pcmk__trace("Processing \"%s\" event", op); // @COMPAT Pacemaker Remote clients <3.0.0 may send this if (pcmk__str_eq(op, PCMK__CIB_REQUEST_IS_PRIMARY, pcmk__str_none)) { @@ -144,7 +144,7 @@ cib_process_ping(const char *op, int options, const char *section, xmlNode * req xmlNode *wrapper = NULL; - crm_trace("Processing \"%s\" event %s from %s", op, seq, host); + pcmk__trace("Processing \"%s\" event %s from %s", op, seq, host); *answer = pcmk__xe_create(NULL, PCMK__XE_PING_RESPONSE); pcmk__xe_set(*answer, PCMK_XA_CRM_FEATURE_SET, CRM_FEATURE_SET); @@ -215,7 +215,7 @@ cib_process_upgrade_server(const char *op, int options, const char *section, xml const char *call_opts = pcmk__xe_get(req, PCMK__XA_CIB_CALLOPT); const char *call_id = pcmk__xe_get(req, PCMK__XA_CIB_CALLID); - crm_trace("Processing \"%s\" event", op); + pcmk__trace("Processing \"%s\" event", op); original_schema = pcmk__xe_get(existing_cib, PCMK_XA_VALIDATE_WITH); if (original_schema == NULL) { pcmk__info("Rejecting upgrade request from %s: No " @@ -329,8 +329,8 @@ cib_server_process_diff(const char *op, int options, const char *section, xmlNod } rc = cib_process_diff(op, options, section, req, input, existing_cib, result_cib, answer); - crm_trace("result: %s (%d), %s", pcmk_strerror(rc), rc, - (based_is_primary? "primary": "secondary")); + pcmk__trace("result: %s (%d), %s", pcmk_strerror(rc), rc, + (based_is_primary? "primary": "secondary")); if ((rc == -pcmk_err_diff_resync) && !based_is_primary) { pcmk__xml_free(*result_cib); diff --git a/daemons/based/based_remote.c b/daemons/based/based_remote.c index 2be3dd1f4f5..8dcb514872a 100644 --- a/daemons/based/based_remote.c +++ b/daemons/based/based_remote.c @@ -332,11 +332,11 @@ cib_remote_connection_destroy(gpointer user_data) return; } - crm_trace("Cleaning up after client %s disconnect", - pcmk__client_name(client)); + pcmk__trace("Cleaning up after client %s disconnect", + pcmk__client_name(client)); num_clients--; - crm_trace("Num unfree'd clients: %d", num_clients); + pcmk__trace("Num unfree'd clients: %d", num_clients); switch (PCMK__CLIENT_TYPE(client)) { case pcmk__client_tcp: @@ -366,7 +366,7 @@ cib_remote_connection_destroy(gpointer user_data) pcmk__free_client(client); - crm_trace("Freed the cib client"); + pcmk__trace("Freed the cib client"); if (cib_shutdown_flag) { cib_shutdown(0); @@ -420,8 +420,8 @@ cib_remote_msg(gpointer data) int rc; const char *client_name = pcmk__client_name(client); - crm_trace("Remote %s message received for client %s", - pcmk__client_type_str(PCMK__CLIENT_TYPE(client)), client_name); + pcmk__trace("Remote %s message received for client %s", + pcmk__client_type_str(PCMK__CLIENT_TYPE(client)), client_name); if ((PCMK__CLIENT_TYPE(client) == pcmk__client_tls) && !pcmk__is_set(client->flags, pcmk__client_tls_handshake_complete)) { @@ -469,7 +469,8 @@ cib_remote_msg(gpointer data) default: /* Error */ - crm_trace("Error reading from remote client: %s", pcmk_rc_str(rc)); + pcmk__trace("Error reading from remote client: %s", + pcmk_rc_str(rc)); return -1; } @@ -509,7 +510,7 @@ cib_remote_msg(gpointer data) command = pcmk__remote_message_xml(client->remote); if (command != NULL) { - crm_trace("Remote message received from client %s", client_name); + pcmk__trace("Remote message received from client %s", client_name); cib_handle_remote_msg(client, command); pcmk__xml_free(command); } diff --git a/daemons/based/based_transaction.c b/daemons/based/based_transaction.c index d4e9b4ff3de..4b59a2ceb62 100644 --- a/daemons/based/based_transaction.c +++ b/daemons/based/based_transaction.c @@ -88,8 +88,8 @@ process_transaction_requests(xmlNodePtr transaction, return rc; } - crm_trace("Applied %s request to transaction working CIB for %s", - op, source); + pcmk__trace("Applied %s request to transaction working CIB for %s", op, + source); crm_log_xml_trace(request, "Successful request"); } @@ -138,15 +138,15 @@ based_commit_transaction(xmlNodePtr transaction, const pcmk__client_t *client, *result_cib = pcmk__xml_copy(NULL, the_cib)); source = based_transaction_source_str(client, origin); - crm_trace("Committing transaction for %s to working CIB", source); + pcmk__trace("Committing transaction for %s to working CIB", source); // Apply all changes to a working copy of the CIB the_cib = *result_cib; rc = process_transaction_requests(transaction, client, origin); - crm_trace("Transaction commit %s for %s", - ((rc == pcmk_rc_ok)? "succeeded" : "failed"), source); + pcmk__trace("Transaction commit %s for %s", + ((rc == pcmk_rc_ok)? "succeeded" : "failed"), source); /* Some request types (for example, erase) may have freed the_cib (the * working copy) and pointed it at a new XML object. In that case, it diff --git a/daemons/controld/controld_attrd.c b/daemons/controld/controld_attrd.c index 815e502f1a0..502ca313413 100644 --- a/daemons/controld/controld_attrd.c +++ b/daemons/controld/controld_attrd.c @@ -23,7 +23,7 @@ void controld_close_attrd_ipc(void) { if (attrd_api != NULL) { - crm_trace("Closing connection to " PCMK__SERVER_ATTRD); + pcmk__trace("Closing connection to " PCMK__SERVER_ATTRD); pcmk_disconnect_ipc(attrd_api); pcmk_free_ipc_api(attrd_api); attrd_api = NULL; @@ -115,8 +115,9 @@ update_attrd_remote_node_removed(const char *host, const char *user_name) rc = pcmk_new_ipc_api(&attrd_api, pcmk_ipc_attrd); } if (rc == pcmk_rc_ok) { - crm_trace("Asking attribute manager to purge Pacemaker Remote node %s", - host); + pcmk__trace("Asking attribute manager to purge Pacemaker Remote node " + "%s", + host); rc = pcmk__attrd_api_purge(attrd_api, host, true); } if (rc != pcmk_rc_ok) { diff --git a/daemons/controld/controld_callbacks.c b/daemons/controld/controld_callbacks.c index b038aa37525..58ede25cfcb 100644 --- a/daemons/controld/controld_callbacks.c +++ b/daemons/controld/controld_callbacks.c @@ -203,8 +203,9 @@ peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, /* Peer status did not change. This should not be possible, * since we don't track process flags other than peer status. */ - crm_trace("Process flag %#7x did not change from %#7x to %#7x", - crm_get_cluster_proc(), old, node->processes); + pcmk__trace("Process flag %#7x did not change from %#7x to " + "%#7x", + crm_get_cluster_proc(), old, node->processes); return; } @@ -217,11 +218,12 @@ peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, if (!pcmk__is_set(controld_globals.fsa_input_register, R_CIB_CONNECTED)) { - crm_trace("Ignoring peer status change because not connected to CIB"); + pcmk__trace("Ignoring peer status change because not connected " + "to CIB"); return; } else if (controld_globals.fsa_state == S_STOPPING) { - crm_trace("Ignoring peer status change because stopping"); + pcmk__trace("Ignoring peer status change because stopping"); return; } @@ -272,8 +274,8 @@ peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, int alive = node_alive(node); pcmk__graph_action_t *down = match_down_event(node->xml_id); - crm_trace("Alive=%d, appeared=%d, down=%d", - alive, appeared, (down? down->id : -1)); + pcmk__trace("Alive=%d, appeared=%d, down=%d", alive, appeared, + ((down != NULL)? down->id : -1)); if (appeared && (alive > 0) && !is_remote) { register_fsa_input_before(C_FSA_INTERNAL, I_NODE_JOIN, NULL); @@ -287,8 +289,9 @@ peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, pcmk__is_set(down->flags, pcmk__graph_action_confirmed); /* tengine_stonith_callback() confirms fence actions */ - crm_trace("Updating CIB %s fencer reported fencing of %s complete", - (confirmed? "after" : "before"), node->name); + pcmk__trace("Updating CIB %s fencer reported fencing of %s " + "complete", + (confirmed? "after" : "before"), node->name); } else if (!appeared && pcmk__str_eq(task, PCMK_ACTION_DO_SHUTDOWN, pcmk__str_casei)) { @@ -321,8 +324,8 @@ peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, liveness = "dead"; } - crm_trace("Node %s is %s, was expected to %s (op %d)", - node->name, liveness, task, down->id); + pcmk__trace("Node %s is %s, was expected to %s (op %d)", + node->name, liveness, task, down->id); } } else if (appeared == FALSE) { @@ -345,8 +348,8 @@ peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, node->xml_id); } else { - crm_trace("Node %s came up, was not expected to be down", - node->name); + pcmk__trace("Node %s came up, was not expected to be down", + node->name); } if (is_remote) { @@ -391,10 +394,10 @@ peer_update_callback(enum pcmk__node_update type, pcmk__node_status_t *node, gboolean crm_fsa_trigger(gpointer user_data) { - crm_trace("Invoked (queue len: %d)", - g_list_length(controld_globals.fsa_message_queue)); + pcmk__trace("Invoked (queue len: %u)", + g_list_length(controld_globals.fsa_message_queue)); s_crmd_fsa(C_FSA_INTERNAL); - crm_trace("Exited (queue len: %d)", - g_list_length(controld_globals.fsa_message_queue)); + pcmk__trace("Exited (queue len: %u)", + g_list_length(controld_globals.fsa_message_queue)); return TRUE; } diff --git a/daemons/controld/controld_cib.c b/daemons/controld/controld_cib.c index f8cb8cb11cc..91e95835e26 100644 --- a/daemons/controld/controld_cib.c +++ b/daemons/controld/controld_cib.c @@ -221,8 +221,8 @@ cib_op_timeout(void) + 1U); calculated_timeout = QB_MAX(calculated_timeout, MIN_CIB_OP_TIMEOUT); - crm_trace("Calculated timeout: %s", - pcmk__readable_interval(calculated_timeout * 1000)); + pcmk__trace("Calculated timeout: %s", + pcmk__readable_interval(calculated_timeout * 1000)); if (controld_globals.cib_conn) { controld_globals.cib_conn->call_timeout = calculated_timeout; @@ -517,7 +517,8 @@ build_parameter_list(const lrmd_event_data_t *op, } if (accept_for_list) { - crm_trace("Attr %s is %s", param->rap_name, ra_param_flag2text(param_type)); + pcmk__trace("Attr %s is %s", param->rap_name, + ra_param_flag2text(param_type)); if (list == NULL) { // We will later search for " WORD ", so start list with a space @@ -526,19 +527,22 @@ build_parameter_list(const lrmd_event_data_t *op, pcmk__add_word(&list, 0, param->rap_name); } else { - crm_trace("Rejecting %s for %s", param->rap_name, ra_param_flag2text(param_type)); + pcmk__trace("Rejecting %s for %s", param->rap_name, + ra_param_flag2text(param_type)); } if (accept_for_xml) { const char *v = g_hash_table_lookup(op->params, param->rap_name); if (v != NULL) { - crm_trace("Adding attr %s=%s to the xml result", param->rap_name, v); + pcmk__trace("Adding attr %s=%s to the xml result", + param->rap_name, v); pcmk__xe_set(*result, param->rap_name, v); } } else { - crm_trace("Removing attr %s from the xml result", param->rap_name); + pcmk__trace("Removing attr %s from the xml result", + param->rap_name); pcmk__xe_remove_attr(*result, param->rap_name); } } @@ -596,9 +600,9 @@ append_restart_list(lrmd_event_data_t *op, struct ra_metadata_s *metadata, pcmk__xe_set(update, PCMK__XA_OP_RESTART_DIGEST, digest); if ((list != NULL) && (list->len > 0)) { - crm_trace("%s: %s, %s", op->rsc_id, digest, (const char *) list->str); + pcmk__trace("%s: %s, %s", op->rsc_id, digest, list->str); } else { - crm_trace("%s: %s", op->rsc_id, digest); + pcmk__trace("%s: %s", op->rsc_id, digest); } if (list != NULL) { @@ -629,10 +633,10 @@ append_secure_list(lrmd_event_data_t *op, struct ra_metadata_s *metadata, (const char *) list->str); pcmk__xe_set(update, PCMK__XA_OP_SECURE_DIGEST, digest); - crm_trace("%s: %s, %s", op->rsc_id, digest, (const char *) list->str); + pcmk__trace("%s: %s, %s", op->rsc_id, digest, list->str); g_string_free(list, TRUE); } else { - crm_trace("%s: no secure parameters", op->rsc_id); + pcmk__trace("%s: no secure parameters", op->rsc_id); } pcmk__xml_free(secure); @@ -680,8 +684,8 @@ controld_add_resource_history_xml_as(const char *func, xmlNode *parent, if ((rsc == NULL) || (op->params == NULL) || !crm_op_needs_metadata(rsc->standard, op->op_type)) { - crm_trace("No digests needed for %s action on %s (params=%p rsc=%p)", - op->op_type, op->rsc_id, op->params, rsc); + pcmk__trace("No digests needed for %s action on %s (params=%p rsc=%p)", + op->op_type, op->rsc_id, op->params, rsc); return; } @@ -705,8 +709,8 @@ controld_add_resource_history_xml_as(const char *func, xmlNode *parent, return; } - crm_trace("Including additional digests for %s:%s:%s", - rsc->standard, rsc->provider, rsc->type); + pcmk__trace("Including additional digests for %s:%s:%s", rsc->standard, + rsc->provider, rsc->type); append_restart_list(op, metadata, xml_op, caller_version); append_secure_list(op, metadata, xml_op, caller_version); @@ -769,8 +773,8 @@ cib_rsc_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, void *use case pcmk_ok: case -pcmk_err_diff_failed: case -pcmk_err_diff_resync: - crm_trace("Resource history update completed (call=%d rc=%d)", - call_id, rc); + pcmk__trace("Resource history update completed (call=%d rc=%d)", + call_id, rc); break; default: if (call_id > 0) { @@ -932,8 +936,8 @@ controld_update_resource_history(const char *node_name, container = g_hash_table_lookup(op->params, CRM_META "_" PCMK__META_CONTAINER); if (container != NULL) { - crm_trace("Resource %s is a part of container resource %s", - op->rsc_id, container); + pcmk__trace("Resource %s is a part of container resource %s", + op->rsc_id, container); pcmk__xe_set(xml, PCMK__META_CONTAINER, container); } } diff --git a/daemons/controld/controld_control.c b/daemons/controld/controld_control.c index 7ad965dc64c..ede068b242e 100644 --- a/daemons/controld/controld_control.c +++ b/daemons/controld/controld_control.c @@ -173,8 +173,8 @@ crmd_exit(crm_exit_t exit_code) } in_progress = TRUE; - crm_trace("Preparing to exit with status %d (%s)", - exit_code, crm_exit_str(exit_code)); + pcmk__trace("Preparing to exit with status %d (%s)", exit_code, + crm_exit_str(exit_code)); /* Suppress secondary errors resulting from us disconnecting everything */ controld_set_fsa_input_flags(R_HA_DISCONNECTED); @@ -182,7 +182,7 @@ crmd_exit(crm_exit_t exit_code) /* Close all IPC servers and clients to ensure any and all shared memory files are cleaned up */ if(ipcs) { - crm_trace("Closing IPC server"); + pcmk__trace("Closing IPC server"); mainloop_del_ipc_server(ipcs); ipcs = NULL; } @@ -287,19 +287,21 @@ crmd_exit(crm_exit_t exit_code) /* no signals on final draining anymore */ mainloop_destroy_signal(SIGCHLD); - crm_trace("Draining mainloop %d %d", g_main_loop_is_running(mloop), g_main_context_pending(ctx)); + pcmk__trace("Draining mainloop %d %d", g_main_loop_is_running(mloop), + g_main_context_pending(ctx)); { int lpc = 0; while((g_main_context_pending(ctx) && lpc < 10)) { lpc++; - crm_trace("Iteration %d", lpc); + pcmk__trace("Iteration %d", lpc); g_main_context_dispatch(ctx); } } - crm_trace("Closing mainloop %d %d", g_main_loop_is_running(mloop), g_main_context_pending(ctx)); + pcmk__trace("Closing mainloop %d %d", g_main_loop_is_running(mloop), + g_main_context_pending(ctx)); g_main_loop_quit(mloop); /* Won't do anything yet, since we're inside it now */ @@ -317,8 +319,8 @@ crmd_exit(crm_exit_t exit_code) controld_globals.cluster = NULL; /* Graceful */ - crm_trace("Done preparing for exit with status %d (%s)", - exit_code, crm_exit_str(exit_code)); + pcmk__trace("Done preparing for exit with status %d (%s)", exit_code, + crm_exit_str(exit_code)); return exit_code; } @@ -369,7 +371,7 @@ do_startup(long long action, static int32_t accept_controller_client(qb_ipcs_connection_t *c, uid_t uid, gid_t gid) { - crm_trace("Accepting new IPC client connection"); + pcmk__trace("Accepting new IPC client connection"); if (pcmk__new_client(c, uid, gid) == NULL) { return -ENOMEM; } @@ -399,8 +401,8 @@ dispatch_controller_ipc(qb_ipcs_connection_t * c, void *data, size_t size) pcmk__xe_set(msg, PCMK__XA_CRM_SYS_FROM, client->id); if (controld_authorize_ipc_message(msg, client, NULL)) { - crm_trace("Processing IPC message from client %s", - pcmk__client_name(client)); + pcmk__trace("Processing IPC message from client %s", + pcmk__client_name(client)); route_message(C_IPC_MESSAGE, msg); } @@ -415,9 +417,9 @@ ipc_client_disconnected(qb_ipcs_connection_t *c) pcmk__client_t *client = pcmk__find_client(c); if (client) { - crm_trace("Disconnecting %sregistered client %s (%p/%p)", - (client->userdata? "" : "un"), pcmk__client_name(client), - c, client); + pcmk__trace("Disconnecting %sregistered client %s (%p/%p)", + (client->userdata? "" : "un"), pcmk__client_name(client), + c, client); free(client->userdata); pcmk__free_client(client); controld_trigger_fsa(); @@ -428,7 +430,7 @@ ipc_client_disconnected(qb_ipcs_connection_t *c) static void ipc_connection_destroyed(qb_ipcs_connection_t *c) { - crm_trace("Connection %p", c); + pcmk__trace("Connection %p", c); ipc_client_disconnected(c); } @@ -438,7 +440,7 @@ do_stop(long long action, enum crmd_fsa_cause cause, enum crmd_fsa_state cur_state, enum crmd_fsa_input current_input, fsa_data_t * msg_data) { - crm_trace("Closing IPC server"); + pcmk__trace("Closing IPC server"); mainloop_del_ipc_server(ipcs); ipcs = NULL; register_fsa_input(C_FSA_INTERNAL, I_TERMINATE, NULL); } @@ -643,7 +645,7 @@ void controld_trigger_config_as(const char *fn, int line) { if (config_read_trigger != NULL) { - crm_trace("%s:%d - Triggered config processing", fn, line); + pcmk__trace("%s:%d - Triggered config processing", fn, line); mainloop_set_trigger(config_read_trigger); } } @@ -658,7 +660,7 @@ crm_read_options(gpointer user_data) NULL, cib_xpath); fsa_register_cib_callback(call_id, NULL, config_query_callback); - crm_trace("Querying the CIB... call %d", call_id); + pcmk__trace("Querying the CIB... call %d", call_id); return TRUE; } diff --git a/daemons/controld/controld_election.c b/daemons/controld/controld_election.c index 129e12a2af3..220f036c6cf 100644 --- a/daemons/controld/controld_election.c +++ b/daemons/controld/controld_election.c @@ -168,7 +168,7 @@ do_election_count_vote(long long action, break; default: - crm_trace("Election message resulted in state %d", rc); + pcmk__trace("Election message resulted in state %d", rc); } } @@ -277,5 +277,5 @@ do_dc_release(long long action, pcmk__err("Unknown DC action %s", fsa_action2string(action)); } - crm_trace("Am I still the DC? %s", pcmk__btoa(AM_I_DC)); + pcmk__trace("Am I still the DC? %s", pcmk__btoa(AM_I_DC)); } diff --git a/daemons/controld/controld_execd.c b/daemons/controld/controld_execd.c index 458f21f0eff..74592cb6ef6 100644 --- a/daemons/controld/controld_execd.c +++ b/daemons/controld/controld_execd.c @@ -195,14 +195,14 @@ update_history_cache(lrm_state_t * lrm_state, lrmd_rsc_info_t * rsc, lrmd_event_ target_rc = rsc_op_expected_rc(op); if (op->op_status == PCMK_EXEC_CANCELLED) { if (op->interval_ms > 0) { - crm_trace("Removing cancelled recurring op: " PCMK__OP_FMT, - op->rsc_id, op->op_type, op->interval_ms); + pcmk__trace("Removing cancelled recurring op: " PCMK__OP_FMT, + op->rsc_id, op->op_type, op->interval_ms); history_remove_recurring_op(entry, op); return; } else { - crm_trace("Skipping " PCMK__OP_FMT " rc=%d, status=%d", - op->rsc_id, op->op_type, op->interval_ms, op->rc, - op->op_status); + pcmk__trace("Skipping " PCMK__OP_FMT " rc=%d, status=%d", + op->rsc_id, op->op_type, op->interval_ms, op->rc, + op->op_status); } } else if (did_rsc_op_fail(op, target_rc)) { @@ -237,16 +237,16 @@ update_history_cache(lrm_state_t * lrm_state, lrmd_rsc_info_t * rsc, lrmd_event_ /* Ensure there are no duplicates */ history_remove_recurring_op(entry, op); - crm_trace("Adding recurring op: " PCMK__OP_FMT, - op->rsc_id, op->op_type, op->interval_ms); + pcmk__trace("Adding recurring op: " PCMK__OP_FMT, op->rsc_id, + op->op_type, op->interval_ms); entry->recurring_op_list = g_list_prepend(entry->recurring_op_list, lrmd_copy_event(op)); } else if ((entry->recurring_op_list != NULL) && !pcmk__str_eq(op->op_type, PCMK_ACTION_MONITOR, pcmk__str_casei)) { - crm_trace("Dropping %d recurring ops because of: " PCMK__OP_FMT, - g_list_length(entry->recurring_op_list), op->rsc_id, - op->op_type, op->interval_ms); + pcmk__trace("Dropping %u recurring ops because of: " PCMK__OP_FMT, + g_list_length(entry->recurring_op_list), op->rsc_id, + op->op_type, op->interval_ms); history_free_recurring_ops(entry); } } @@ -476,7 +476,7 @@ lrm_state_verify_stopped(lrm_state_t * lrm_state, enum crmd_fsa_state cur_state, if (log_level == LOG_ERR) { pcmk__info("Found %s active at %s", entry->id, when); } else { - crm_trace("Found %s active at %s", entry->id, when); + pcmk__trace("Found %s active at %s", entry->id, when); } if (lrm_state->active_ops != NULL) { GHashTableIter hIter; @@ -512,8 +512,8 @@ is_rsc_active(lrm_state_t * lrm_state, const char *rsc_id) return FALSE; } - crm_trace("Processing %s: %s.%d=%d", rsc_id, entry->last->op_type, - entry->last->interval_ms, entry->last->rc); + pcmk__trace("Processing %s: %s.%d=%d", rsc_id, entry->last->op_type, + entry->last->interval_ms, entry->last->rc); if ((entry->last->rc == PCMK_OCF_OK) && pcmk__str_eq(entry->last->op_type, PCMK_ACTION_STOP, pcmk__str_casei)) { @@ -560,7 +560,8 @@ build_active_RAs(lrm_state_t * lrm_state, xmlNode * rsc_list) name); if (container) { - crm_trace("Resource %s is a part of container resource %s", entry->id, container); + pcmk__trace("Resource %s is a part of container resource %s", + entry->id, container); pcmk__xe_set(xml_rsc, PCMK__META_CONTAINER, container); } } @@ -893,8 +894,8 @@ cancel_op_key(lrm_state_t * lrm_state, lrmd_rsc_info_t * rsc, const char *key, g removed = g_hash_table_foreach_remove(lrm_state->active_ops, cancel_action_by_key, &data); - crm_trace("Removed %u op cache entries, new size: %u", - removed, g_hash_table_size(lrm_state->active_ops)); + pcmk__trace("Removed %u op cache entries, new size: %u", + removed, g_hash_table_size(lrm_state->active_ops)); return data.done; } @@ -928,7 +929,8 @@ get_lrm_resource(lrm_state_t *lrm_state, const xmlNode *rsc_xml, return -ENOTCONN; } - crm_trace("Retrieving resource information for %s from the executor", id); + pcmk__trace("Retrieving resource information for %s from the executor", + id); *rsc_info = lrm_state_get_rsc_info(lrm_state, id, 0); // If resource isn't known by ID, try clone name, if provided @@ -946,7 +948,7 @@ get_lrm_resource(lrm_state_t *lrm_state, const xmlNode *rsc_xml, const char *type = pcmk__xe_get(rsc_xml, PCMK_XA_TYPE); int rc; - crm_trace("Registering resource %s with the executor", id); + pcmk__trace("Registering resource %s with the executor", id); rc = lrm_state_register_rsc(lrm_state, id, class, provider, type, lrmd_opt_drop_recurring); if (rc != pcmk_ok) { @@ -986,7 +988,7 @@ delete_resource(lrm_state_t *lrm_state, const char *id, lrmd_rsc_info_t *rsc, } if (rc == pcmk_ok) { - crm_trace("Resource %s deleted from executor", id); + pcmk__trace("Resource %s deleted from executor", id); } else if (rc == -EINPROGRESS) { pcmk__info("Deletion of resource '%s' from executor is pending", id); if (request) { @@ -1449,10 +1451,10 @@ do_lrm_invoke(long long action, CRM_CHECK(!pcmk__str_empty(crm_op) || !pcmk__str_empty(operation), return); - crm_trace("'%s' execution request from %s as %s user", - pcmk__s(crm_op, operation), - pcmk__s(from_sys, "unknown subsystem"), - pcmk__s(user_name, "current")); + pcmk__trace("'%s' execution request from %s as %s user", + pcmk__s(crm_op, operation), + pcmk__s(from_sys, "unknown subsystem"), + pcmk__s(user_name, "current")); if (pcmk__str_eq(crm_op, CRM_OP_LRM_FAIL, pcmk__str_none)) { fail_lrm_resource(input->xml, lrm_state, user_name, from_host, @@ -1620,7 +1622,7 @@ construct_op(const lrm_state_t *lrm_state, const xmlNode *rsc_op, pcmk__insert_dup(op->params, PCMK_XA_CRM_FEATURE_SET, CRM_FEATURE_SET); - crm_trace("Constructed %s op for %s", operation, rsc_id); + pcmk__trace("Constructed %s op for %s", operation, rsc_id); return op; } @@ -1707,8 +1709,8 @@ construct_op(const lrm_state_t *lrm_state, const xmlNode *rsc_op, } } - crm_trace("Constructed %s op for %s: interval=%u", - operation, rsc_id, op->interval_ms); + pcmk__trace("Constructed %s op for %s: interval=%u", operation, rsc_id, + op->interval_ms); return op; } @@ -2015,7 +2017,8 @@ do_lrm_rsc_op(lrm_state_t *lrm_state, lrmd_rsc_info_t *rsc, xmlNode *msg, active_op_t *pending = NULL; pending = pcmk__assert_alloc(1, sizeof(active_op_t)); - crm_trace("Recording pending op: %d - %s %s", call_id, op_id, call_id_s); + pcmk__trace("Recording pending op: %d - %s %s", call_id, op_id, + call_id_s); pending->call_id = call_id; pending->interval_ms = op->interval_ms; @@ -2391,9 +2394,9 @@ process_lrm_event(lrm_state_t *lrm_state, lrmd_event_data_t *op, removed = TRUE; } else if (found) { removed = TRUE; - crm_trace("Op %s (call=%d, stop-id=%s, remaining=%u): Confirmed", - op_key, op->call_id, op_id, - g_hash_table_size(lrm_state->active_ops)); + pcmk__trace("Op %s (call=%d, stop-id=%s, remaining=%u): Confirmed", + op_key, op->call_id, op_id, + g_hash_table_size(lrm_state->active_ops)); } } diff --git a/daemons/controld/controld_execd_state.c b/daemons/controld/controld_execd_state.c index f5063145d6e..e28e633ca4b 100644 --- a/daemons/controld/controld_execd_state.c +++ b/daemons/controld/controld_execd_state.c @@ -65,9 +65,9 @@ fail_pending_op(gpointer key, gpointer value, gpointer user_data) lrm_state_t *lrm_state = user_data; active_op_t *op = value; - crm_trace("Pre-emptively failing " PCMK__OP_FMT " on %s (call=%s, %s)", - op->rsc_id, op->op_type, op->interval_ms, - lrm_state->node_name, (char*)key, op->user_data); + pcmk__trace("Pre-emptively failing " PCMK__OP_FMT " on %s (call=%s, %s)", + op->rsc_id, op->op_type, op->interval_ms, + lrm_state->node_name, (const char *) key, op->user_data); event.type = lrmd_event_exec_complete; event.rsc_id = op->rsc_id; @@ -194,31 +194,31 @@ internal_lrm_state_destroy(gpointer data) */ remote_proxy_disconnect_by_node(lrm_state->node_name); - crm_trace("Destroying proxy table %s with %u members", - lrm_state->node_name, g_hash_table_size(proxy_table)); + pcmk__trace("Destroying proxy table %s with %u members", + lrm_state->node_name, g_hash_table_size(proxy_table)); // Just in case there's still any leftovers in proxy_table g_hash_table_foreach_remove(proxy_table, remote_proxy_remove_by_node, (char *) lrm_state->node_name); remote_ra_cleanup(lrm_state); lrmd_api_delete(lrm_state->conn); if (lrm_state->rsc_info_cache) { - crm_trace("Destroying rsc info cache with %u members", - g_hash_table_size(lrm_state->rsc_info_cache)); + pcmk__trace("Destroying rsc info cache with %u members", + g_hash_table_size(lrm_state->rsc_info_cache)); g_hash_table_destroy(lrm_state->rsc_info_cache); } if (lrm_state->resource_history) { - crm_trace("Destroying history op cache with %u members", - g_hash_table_size(lrm_state->resource_history)); + pcmk__trace("Destroying history op cache with %u members", + g_hash_table_size(lrm_state->resource_history)); g_hash_table_destroy(lrm_state->resource_history); } if (lrm_state->deletion_ops) { - crm_trace("Destroying deletion op cache with %u members", - g_hash_table_size(lrm_state->deletion_ops)); + pcmk__trace("Destroying deletion op cache with %u members", + g_hash_table_size(lrm_state->deletion_ops)); g_hash_table_destroy(lrm_state->deletion_ops); } if (lrm_state->active_ops != NULL) { - crm_trace("Destroying pending op cache with %u members", - g_hash_table_size(lrm_state->active_ops)); + pcmk__trace("Destroying pending op cache with %u members", + g_hash_table_size(lrm_state->active_ops)); g_hash_table_destroy(lrm_state->active_ops); } metadata_cache_free(lrm_state->metadata_cache); @@ -231,23 +231,23 @@ void lrm_state_reset_tables(lrm_state_t * lrm_state, gboolean reset_metadata) { if (lrm_state->resource_history) { - crm_trace("Resetting resource history cache with %u members", - g_hash_table_size(lrm_state->resource_history)); + pcmk__trace("Resetting resource history cache with %u members", + g_hash_table_size(lrm_state->resource_history)); g_hash_table_remove_all(lrm_state->resource_history); } if (lrm_state->deletion_ops) { - crm_trace("Resetting deletion operations cache with %u members", - g_hash_table_size(lrm_state->deletion_ops)); + pcmk__trace("Resetting deletion operations cache with %u members", + g_hash_table_size(lrm_state->deletion_ops)); g_hash_table_remove_all(lrm_state->deletion_ops); } if (lrm_state->active_ops != NULL) { - crm_trace("Resetting active operations cache with %u members", - g_hash_table_size(lrm_state->active_ops)); + pcmk__trace("Resetting active operations cache with %u members", + g_hash_table_size(lrm_state->active_ops)); g_hash_table_remove_all(lrm_state->active_ops); } if (lrm_state->rsc_info_cache) { - crm_trace("Resetting resource information cache with %u members", - g_hash_table_size(lrm_state->rsc_info_cache)); + pcmk__trace("Resetting resource information cache with %u members", + g_hash_table_size(lrm_state->rsc_info_cache)); g_hash_table_remove_all(lrm_state->rsc_info_cache); } if (reset_metadata) { @@ -281,13 +281,13 @@ void lrm_state_destroy_all(void) { if (lrm_state_table) { - crm_trace("Destroying state table with %u members", - g_hash_table_size(lrm_state_table)); + pcmk__trace("Destroying state table with %u members", + g_hash_table_size(lrm_state_table)); g_hash_table_destroy(lrm_state_table); lrm_state_table = NULL; } if(proxy_table) { - crm_trace("Destroying proxy table with %u members", - g_hash_table_size(proxy_table)); + pcmk__trace("Destroying proxy table with %u members", + g_hash_table_size(proxy_table)); g_hash_table_destroy(proxy_table); proxy_table = NULL; } } @@ -335,12 +335,12 @@ lrm_state_get_list(void) void lrm_state_disconnect_only(lrm_state_t * lrm_state) { - int removed = 0; + guint removed = 0; if (!lrm_state->conn) { return; } - crm_trace("Disconnecting %s", lrm_state->node_name); + pcmk__trace("Disconnecting %s", lrm_state->node_name); remote_proxy_disconnect_by_node(lrm_state->node_name); @@ -349,7 +349,8 @@ lrm_state_disconnect_only(lrm_state_t * lrm_state) if (!pcmk__is_set(controld_globals.fsa_input_register, R_SHUTDOWN)) { removed = g_hash_table_foreach_remove(lrm_state->active_ops, fail_pending_op, lrm_state); - crm_trace("Synthesized %d operation failures for %s", removed, lrm_state->node_name); + pcmk__trace("Synthesized %u operation failures for %s", removed, + lrm_state->node_name); } } @@ -444,7 +445,8 @@ crmd_proxy_send(const char *session, xmlNode *msg) crm_log_xml_trace(msg, "to-proxy"); lrm_state = controld_get_executor_state(proxy->node_name, false); if (lrm_state) { - crm_trace("Sending event to %.8s on %s", proxy->session_id, proxy->node_name); + pcmk__trace("Sending event to %.8s on %s", proxy->session_id, + proxy->node_name); remote_proxy_relay_event(proxy, msg); } } @@ -452,7 +454,7 @@ crmd_proxy_send(const char *session, xmlNode *msg) static void crmd_proxy_dispatch(const char *session, xmlNode *msg) { - crm_trace("Processing proxied IPC message from session %s", session); + pcmk__trace("Processing proxied IPC message from session %s", session); crm_log_xml_trace(msg, "controller[inbound]"); pcmk__xe_set(msg, PCMK__XA_CRM_SYS_FROM, session); if (controld_authorize_ipc_message(msg, NULL, session)) { @@ -632,8 +634,8 @@ controld_connect_remote_executor(lrm_state_t *lrm_state, const char *server, lrmd_internal_set_proxy_callback(api, lrm_state, crmd_remote_proxy_cb); } - crm_trace("Initiating remote connection to %s:%d with timeout %dms", - server, port, timeout_ms); + pcmk__trace("Initiating remote connection to %s:%d with timeout %dms", + server, port, timeout_ms); rc = ((lrmd_t *) lrm_state->conn)->cmds->connect_async(lrm_state->conn, lrm_state->node_name, timeout_ms); diff --git a/daemons/controld/controld_fencing.c b/daemons/controld/controld_fencing.c index 316bce55156..44fb80fc76d 100644 --- a/daemons/controld/controld_fencing.c +++ b/daemons/controld/controld_fencing.c @@ -338,7 +338,7 @@ remove_stonith_cleanup(const char *target) iter = iter->next; if (pcmk__str_eq(target, iter_name, pcmk__str_casei)) { - crm_trace("Removing %s from the cleanup list", iter_name); + pcmk__trace("Removing %s from the cleanup list", iter_name); stonith_cleanup_list = g_list_delete_link(stonith_cleanup_list, tmp); free(iter_name); } @@ -676,7 +676,7 @@ controld_timer_fencer_connect(gpointer user_data) } if (stonith_api->state != stonith_disconnected) { - crm_trace("Already connected to fencer, no need to retry"); + pcmk__trace("Already connected to fencer, no need to retry"); return G_SOURCE_REMOVE; } diff --git a/daemons/controld/controld_fsa.c b/daemons/controld/controld_fsa.c index 67a043c47cc..c6673155e31 100644 --- a/daemons/controld/controld_fsa.c +++ b/daemons/controld/controld_fsa.c @@ -125,7 +125,7 @@ void controld_trigger_fsa_as(const char *fn, int line) { if (fsa_trigger != NULL) { - crm_trace("%s:%d - Triggered FSA invocation", fn, line); + pcmk__trace("%s:%d - Triggered FSA invocation", fn, line); mainloop_set_trigger(fsa_trigger); } } @@ -139,9 +139,9 @@ s_crmd_fsa(enum crmd_fsa_cause cause) uint64_t new_actions = A_NOTHING; enum crmd_fsa_state last_state; - crm_trace("FSA invoked with Cause: %s\tState: %s", - fsa_cause2string(cause), - fsa_state2string(globals->fsa_state)); + pcmk__trace("FSA invoked with Cause: %s\tState: %s", + fsa_cause2string(cause), + fsa_state2string(globals->fsa_state)); fsa_dump_actions(controld_globals.fsa_actions, "Initial"); @@ -159,8 +159,8 @@ s_crmd_fsa(enum crmd_fsa_cause cause) } while ((controld_globals.fsa_message_queue != NULL) && !pcmk__is_set(controld_globals.flags, controld_fsa_is_stalled)) { - crm_trace("Checking messages (%d remaining)", - g_list_length(controld_globals.fsa_message_queue)); + pcmk__trace("Checking messages (%u remaining)", + g_list_length(controld_globals.fsa_message_queue)); fsa_data = get_message(); if(fsa_data == NULL) { @@ -233,7 +233,7 @@ s_crmd_fsa(enum crmd_fsa_cause cause) pcmk__flag_text(controld_globals.flags, controld_fsa_is_stalled)); } else { - crm_trace("Exiting the FSA"); + pcmk__trace("Exiting the FSA"); } /* cleanup inputs? */ @@ -468,18 +468,18 @@ void log_fsa_input(fsa_data_t * stored_msg) { pcmk__assert(stored_msg != NULL); - crm_trace("Processing queued input %d", stored_msg->id); + pcmk__trace("Processing queued input %d", stored_msg->id); if (stored_msg->fsa_cause == C_LRM_OP_CALLBACK) { - crm_trace("FSA processing LRM callback from %s", stored_msg->origin); + pcmk__trace("FSA processing LRM callback from %s", stored_msg->origin); } else if (stored_msg->data == NULL) { - crm_trace("FSA processing input from %s", stored_msg->origin); + pcmk__trace("FSA processing input from %s", stored_msg->origin); } else { ha_msg_input_t *ha_input = fsa_typed_data_adv(stored_msg, fsa_dt_ha_msg, __func__); - crm_trace("FSA processing XML message from %s", stored_msg->origin); + pcmk__trace("FSA processing XML message from %s", stored_msg->origin); crm_log_xml_trace(ha_input->xml, "FSA message data"); } } diff --git a/daemons/controld/controld_join_client.c b/daemons/controld/controld_join_client.c index 33563b70d8d..43144898688 100644 --- a/daemons/controld/controld_join_client.c +++ b/daemons/controld/controld_join_client.c @@ -117,12 +117,12 @@ do_cl_join_offer_respond(long long action, welcome_from = pcmk__xe_get(input->msg, PCMK__XA_SRC); join_id = pcmk__xe_get(input->msg, PCMK__XA_JOIN_ID); - crm_trace("Accepting cluster join offer from node %s " QB_XS " join-%s", - welcome_from, pcmk__xe_get(input->msg, PCMK__XA_JOIN_ID)); + pcmk__trace("Accepting cluster join offer from node %s " QB_XS " join-%s", + welcome_from, pcmk__xe_get(input->msg, PCMK__XA_JOIN_ID)); /* we only ever want the last one */ if (query_call_id > 0) { - crm_trace("Cancelling previous join query: %d", query_call_id); + pcmk__trace("Cancelling previous join query: %d", query_call_id); remove_cib_op_callback(query_call_id, FALSE); query_call_id = 0; } @@ -139,7 +139,7 @@ do_cl_join_offer_respond(long long action, cib_no_children); fsa_register_cib_callback(query_call_id, pcmk__str_copy(join_id), join_query_callback); - crm_trace("Registered join query callback: %d", query_call_id); + pcmk__trace("Registered join query callback: %d", query_call_id); controld_set_fsa_action_flags(A_DC_TIMER_STOP); controld_trigger_fsa(); @@ -154,7 +154,7 @@ join_query_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, void * CRM_LOG_ASSERT(join_id != NULL); if (query_call_id != call_id) { - crm_trace("Query %d superseded", call_id); + pcmk__trace("Query %d superseded", call_id); goto done; } @@ -272,7 +272,7 @@ do_cl_join_finalize_respond(long long action, const char *welcome_from = pcmk__xe_get(input->msg, PCMK__XA_SRC); if (!pcmk__str_eq(op, CRM_OP_JOIN_ACKNAK, pcmk__str_casei)) { - crm_trace("Ignoring op=%s message", op); + pcmk__trace("Ignoring op=%s message", op); return; } diff --git a/daemons/controld/controld_join_dc.c b/daemons/controld/controld_join_dc.c index 49a57fccfea..a732e6ce36d 100644 --- a/daemons/controld/controld_join_dc.c +++ b/daemons/controld/controld_join_dc.c @@ -167,10 +167,10 @@ crm_update_peer_join(const char *source, pcmk__node_status_t *node, } if (phase == last) { - crm_trace("Node %s join-%d phase is still %s " - QB_XS " nodeid=%" PRIu32 " source=%s", - node->name, current_join_id, join_phase_text(last), - node->cluster_layer_id, source); + pcmk__trace("Node %s join-%d phase is still %s " + QB_XS " nodeid=%" PRIu32 " source=%s", + node->name, current_join_id, join_phase_text(last), + node->cluster_layer_id, source); return; } @@ -184,11 +184,11 @@ crm_update_peer_join(const char *source, pcmk__node_status_t *node, data = node->user_data; data->join_phase = phase; - crm_trace("Node %s join-%d phase is now %s (was %s) " - QB_XS " nodeid=%" PRIu32 " source=%s", - node->name, current_join_id, join_phase_text(phase), - join_phase_text(last), node->cluster_layer_id, - source); + pcmk__trace("Node %s join-%d phase is now %s (was %s) " + QB_XS " nodeid=%" PRIu32 " source=%s", + node->name, current_join_id, join_phase_text(phase), + join_phase_text(last), node->cluster_layer_id, + source); return; } @@ -922,16 +922,16 @@ finalize_join_for(gpointer key, gpointer value, gpointer user_data) case controld_join_nack: break; default: - crm_trace("Not updating non-integrated and non-nacked node %s (%s) " - "for join-%d", - join_to, join_phase_text(phase), current_join_id); + pcmk__trace("Not updating non-integrated and non-nacked node %s " + "(%s) for join-%d", + join_to, join_phase_text(phase), current_join_id); return; } /* Update the element with the node's name and UUID, in case they * weren't known before */ - crm_trace("Updating node name and UUID in CIB for %s", join_to); + pcmk__trace("Updating node name and UUID in CIB for %s", join_to); tmp1 = pcmk__xe_create(NULL, PCMK_XE_NODE); pcmk__xe_set(tmp1, PCMK_XA_ID, pcmk__cluster_get_xml_id(join_node)); pcmk__xe_set(tmp1, PCMK_XA_UNAME, join_to); diff --git a/daemons/controld/controld_membership.c b/daemons/controld/controld_membership.c index 58e13d5a63d..49bdc42b0b9 100644 --- a/daemons/controld/controld_membership.c +++ b/daemons/controld/controld_membership.c @@ -97,7 +97,7 @@ crmd_node_update_complete(xmlNode * msg, int call_id, int rc, xmlNode * output, fsa_data_t *msg_data = NULL; if (rc == pcmk_ok) { - crm_trace("Node update %d complete", call_id); + pcmk__trace("Node update %d complete", call_id); } else if(call_id < pcmk_ok) { pcmk__err("Node update failed: %s (%d)", pcmk_strerror(call_id), @@ -339,8 +339,8 @@ populate_cib_nodes(enum node_update_flags flags, const char *source) xmlNode *new_node = NULL; if ((node->xml_id != NULL) && (node->name != NULL)) { - crm_trace("Creating node entry for %s/%s", - node->name, node->xml_id); + pcmk__trace("Creating node entry for %s/%s", node->name, + node->xml_id); if (xpath == NULL) { xpath = g_string_sized_new(512); } else { @@ -372,7 +372,8 @@ populate_cib_nodes(enum node_update_flags flags, const char *source) } } - crm_trace("Populating section from %s", from_hashtable ? "hashtable" : "cluster"); + pcmk__trace("Populating section from %s", + (from_hashtable? "hashtable" : "cluster")); if ((controld_update_cib(PCMK_XE_NODES, node_list, cib_none, node_list_update_callback) == pcmk_rc_ok) @@ -411,7 +412,7 @@ cib_quorum_update_complete(xmlNode * msg, int call_id, int rc, xmlNode * output, fsa_data_t *msg_data = NULL; if (rc == pcmk_ok) { - crm_trace("Quorum update %d complete", call_id); + pcmk__trace("Quorum update %d complete", call_id); } else { pcmk__err("Quorum update %d failed: %s (%d)", call_id, diff --git a/daemons/controld/controld_messages.c b/daemons/controld/controld_messages.c index 0db9c370a86..4b54374cc1e 100644 --- a/daemons/controld/controld_messages.c +++ b/daemons/controld/controld_messages.c @@ -98,10 +98,10 @@ register_fsa_input_adv(enum crmd_fsa_cause cause, enum crmd_fsa_input input, } last_data_id++; - crm_trace("%s %s FSA input %d (%s) due to %s, %s data", - raised_from, (prepend? "prepended" : "appended"), last_data_id, - fsa_input2string(input), fsa_cause2string(cause), - (data? "with" : "without")); + pcmk__trace("%s %s FSA input %d (%s) due to %s, %s data", raised_from, + (prepend? "prepended" : "appended"), last_data_id, + fsa_input2string(input), fsa_cause2string(cause), + ((data != NULL)? "with" : "without")); fsa_data = pcmk__assert_alloc(1, sizeof(fsa_data_t)); fsa_data->id = last_data_id; @@ -113,7 +113,7 @@ register_fsa_input_adv(enum crmd_fsa_cause cause, enum crmd_fsa_input input, fsa_data->actions = with_actions; if (with_actions != A_NOTHING) { - crm_trace("Adding actions %.16" PRIx64 " to input", with_actions); + pcmk__trace("Adding actions %.16" PRIx64 " to input", with_actions); } if (data != NULL) { @@ -124,15 +124,15 @@ register_fsa_input_adv(enum crmd_fsa_cause cause, enum crmd_fsa_input input, case C_HA_MESSAGE: CRM_CHECK(((ha_msg_input_t *) data)->msg != NULL, pcmk__err("Bogus data from %s", raised_from)); - crm_trace("Copying %s data from %s as cluster message data", - fsa_cause2string(cause), raised_from); + pcmk__trace("Copying %s data from %s as cluster message data", + fsa_cause2string(cause), raised_from); fsa_data->data = copy_ha_msg_input(data); fsa_data->data_type = fsa_dt_ha_msg; break; case C_LRM_OP_CALLBACK: - crm_trace("Copying %s data from %s as lrmd_event_data_t", - fsa_cause2string(cause), raised_from); + pcmk__trace("Copying %s data from %s as lrmd_event_data_t", + fsa_cause2string(cause), raised_from); fsa_data->data = lrmd_copy_event((lrmd_event_data_t *) data); fsa_data->data_type = fsa_dt_lrm; break; @@ -157,8 +157,8 @@ register_fsa_input_adv(enum crmd_fsa_cause cause, enum crmd_fsa_input input, = g_list_append(controld_globals.fsa_message_queue, fsa_data); } - crm_trace("FSA message queue length is %d", - g_list_length(controld_globals.fsa_message_queue)); + pcmk__trace("FSA message queue length is %u", + g_list_length(controld_globals.fsa_message_queue)); /* fsa_dump_queue(PCMK__LOG_TRACE); */ @@ -211,7 +211,7 @@ delete_fsa_input(fsa_data_t * fsa_data) if (fsa_data == NULL) { return; } - crm_trace("About to free %s data", fsa_cause2string(fsa_data->fsa_cause)); + pcmk__trace("About to free %s data", fsa_cause2string(fsa_data->fsa_cause)); if (fsa_data->data != NULL) { switch (fsa_data->data_type) { @@ -238,7 +238,7 @@ delete_fsa_input(fsa_data_t * fsa_data) } break; } - crm_trace("%s data freed", fsa_cause2string(fsa_data->fsa_cause)); + pcmk__trace("%s data freed", fsa_cause2string(fsa_data->fsa_cause)); } free(fsa_data); @@ -253,7 +253,7 @@ get_message(void) controld_globals.fsa_message_queue = g_list_remove(controld_globals.fsa_message_queue, message); - crm_trace("Processing input %d", message->id); + pcmk__trace("Processing input %d", message->id); return message; } @@ -365,8 +365,8 @@ relay_message(xmlNode * msg, gboolean originated_locally) } if (pcmk__str_eq(task, CRM_OP_HELLO, pcmk__str_casei)) { - crm_trace("Received hello %s from %s (no processing needed)", - ref, pcmk__s(sys_from, "unidentified source")); + pcmk__trace("Received hello %s from %s (no processing needed)", ref, + pcmk__s(sys_from, "unidentified source")); crm_log_xml_trace(msg, "hello"); return TRUE; } @@ -461,22 +461,22 @@ relay_message(xmlNode * msg, gboolean originated_locally) if (is_for_dc || is_for_dcib || is_for_te) { if (AM_I_DC) { if (is_for_te) { - crm_trace("Route message %s locally as transition request", - ref); + pcmk__trace("Route message %s locally as transition request", + ref); crm_log_xml_trace(msg, sys_to); send_msg_via_ipc(msg, sys_to, controld_globals.cluster->priv->node_name); return TRUE; // No further processing of message is needed } - crm_trace("Route message %s locally as DC request", ref); + pcmk__trace("Route message %s locally as DC request", ref); return FALSE; // More to be done by caller } if (originated_locally && !pcmk__strcase_any_of(sys_from, CRM_SYSTEM_PENGINE, CRM_SYSTEM_TENGINE, NULL)) { - crm_trace("Relay message %s to DC (via %s)", - ref, pcmk__s(host_to, "broadcast")); + pcmk__trace("Relay message %s to DC (via %s)", ref, + pcmk__s(host_to, "broadcast")); crm_log_xml_trace(msg, "relayed"); if (!broadcast) { node_to = pcmk__get_node(0, host_to, NULL, @@ -489,17 +489,17 @@ relay_message(xmlNode * msg, gboolean originated_locally) /* Transition engine and scheduler messages are sent only to the DC on * the same node. If we are no longer the DC, discard this message. */ - crm_trace("Ignoring message %s because we are no longer DC", ref); + pcmk__trace("Ignoring message %s because we are no longer DC", ref); crm_log_xml_trace(msg, "ignored"); return TRUE; // No further processing of message is needed } if (is_local) { if (is_for_crm || is_for_cib) { - crm_trace("Route message %s locally as controller request", ref); + pcmk__trace("Route message %s locally as controller request", ref); return FALSE; // More to be done by caller } - crm_trace("Relay message %s locally to %s", ref, sys_to); + pcmk__trace("Relay message %s locally to %s", ref, sys_to); crm_log_xml_trace(msg, "IPC-relay"); send_msg_via_ipc(msg, sys_to, controld_globals.cluster->priv->node_name); return TRUE; @@ -516,8 +516,7 @@ relay_message(xmlNode * msg, gboolean originated_locally) } } - crm_trace("Relay message %s to %s", - ref, pcmk__s(host_to, "all peers")); + pcmk__trace("Relay message %s to %s", ref, pcmk__s(host_to, "all peers")); crm_log_xml_trace(msg, "relayed"); pcmk__cluster_send_message(node_to, dest, msg); return TRUE; @@ -600,7 +599,7 @@ controld_authorize_ipc_message(const xmlNode *client_msg, pcmk__client_t *curr_c goto rejected; } - crm_trace("Validated IPC hello from client %s", client_name); + pcmk__trace("Validated IPC hello from client %s", client_name); crm_log_xml_trace(client_msg, "hello"); if (curr_client) { curr_client->userdata = pcmk__str_copy(client_name); @@ -985,8 +984,8 @@ verify_feature_set(xmlNode *msg) } if (feature_set_compatible(dc_version, CRM_FEATURE_SET)) { - crm_trace("Local feature set (%s) is compatible with DC's (%s)", - CRM_FEATURE_SET, dc_version); + pcmk__trace("Local feature set (%s) is compatible with DC's (%s)", + CRM_FEATURE_SET, dc_version); } else { pcmk__err("Local feature set (%s) is incompatible with DC's (%s)", CRM_FEATURE_SET, dc_version); diff --git a/daemons/controld/controld_metadata.c b/daemons/controld/controld_metadata.c index 61790a86c87..dd9031eca27 100644 --- a/daemons/controld/controld_metadata.c +++ b/daemons/controld/controld_metadata.c @@ -52,7 +52,8 @@ void metadata_cache_free(GHashTable *mdc) { if (mdc) { - crm_trace("Destroying metadata cache with %d members", g_hash_table_size(mdc)); + pcmk__trace("Destroying metadata cache with %u members", + g_hash_table_size(mdc)); g_hash_table_destroy(mdc); } } @@ -61,8 +62,8 @@ void metadata_cache_reset(GHashTable *mdc) { if (mdc) { - crm_trace("Resetting metadata cache with %d members", - g_hash_table_size(mdc)); + pcmk__trace("Resetting metadata cache with %u members", + g_hash_table_size(mdc)); g_hash_table_remove_all(mdc); } } diff --git a/daemons/controld/controld_remote_ra.c b/daemons/controld/controld_remote_ra.c index 0ddc1d71a0f..3cf223b7b66 100644 --- a/daemons/controld/controld_remote_ra.c +++ b/daemons/controld/controld_remote_ra.c @@ -755,14 +755,15 @@ remote_lrm_op_callback(lrmd_event_data_t * op) pcmk_strerror(op->connection_rc)); } else if (remaining > 3) { - crm_trace("Rescheduling start (%ds remains before timeout)", - remaining); + pcmk__trace("Rescheduling start (%ds remains before timeout)", + remaining); pcmk__create_timer(1000, retry_start_cmd_cb, lrm_state); return; } else { - crm_trace("Not enough time before timeout (%ds) " - "to reschedule start", remaining); + pcmk__trace("Not enough time before timeout (%ds) to " + "reschedule start", + remaining); pcmk__format_result(&(cmd->result), PCMK_OCF_UNKNOWN_ERROR, PCMK_EXEC_TIMEOUT, "%s without enough time to retry", @@ -1119,8 +1120,8 @@ fail_all_monitor_cmds(GList * list) pcmk__set_result(&(cmd->result), PCMK_OCF_UNKNOWN_ERROR, PCMK_EXEC_ERROR, "Lost connection to remote executor"); - crm_trace("Pre-emptively failing %s %s (interval=%u, %s)", - cmd->action, cmd->rsc_id, cmd->interval_ms, cmd->userdata); + pcmk__trace("Pre-emptively failing %s %s (interval=%u, %s)", + cmd->action, cmd->rsc_id, cmd->interval_ms, cmd->userdata); report_remote_ra_result(cmd); list = g_list_remove(list, cmd); @@ -1230,8 +1231,8 @@ handle_dup_monitor(remote_ra_data_t *ra_data, guint interval_ms, handle_dup: - crm_trace("merging duplicate monitor cmd " PCMK__OP_FMT, - cmd->rsc_id, PCMK_ACTION_MONITOR, interval_ms); + pcmk__trace("merging duplicate monitor cmd " PCMK__OP_FMT, cmd->rsc_id, + PCMK_ACTION_MONITOR, interval_ms); /* update the userdata */ if (userdata) { @@ -1489,9 +1490,9 @@ remote_ra_process_maintenance_nodes(xmlNode *xml) remote_ra_maintenance(lrm_state, in_maint); } } - crm_trace("Action holds %d nodes (%d remotes found) adjusting " - PCMK_OPT_MAINTENANCE_MODE, - cnt, cnt_remote); + pcmk__trace("Action holds %d nodes (%d remotes found) adjusting " + PCMK_OPT_MAINTENANCE_MODE, + cnt, cnt_remote); } xmlXPathFreeObject(search); } diff --git a/daemons/controld/controld_schedulerd.c b/daemons/controld/controld_schedulerd.c index c54f9391398..bb085c45255 100644 --- a/daemons/controld/controld_schedulerd.c +++ b/daemons/controld/controld_schedulerd.c @@ -280,8 +280,8 @@ controld_stop_sched_timer(void) { if ((controld_sched_timer != NULL) && (controld_globals.fsa_pe_ref != NULL)) { - crm_trace("Stopping timer for scheduler reply %s", - controld_globals.fsa_pe_ref); + pcmk__trace("Stopping timer for scheduler reply %s", + controld_globals.fsa_pe_ref); } mainloop_timer_stop(controld_sched_timer); } @@ -406,8 +406,8 @@ force_local_option(xmlNode *xml, const char *attr_name, const char *attr_value) if (match == NULL) { continue; } - crm_trace("Forcing %s/%s = %s", - pcmk__xe_id(match), attr_name, attr_value); + pcmk__trace("Forcing %s/%s = %s", pcmk__xe_id(match), attr_name, + attr_value); pcmk__xe_set(match, PCMK_XA_VALUE, attr_value); } @@ -416,9 +416,9 @@ force_local_option(xmlNode *xml, const char *attr_name, const char *attr_value) xmlNode *crm_config = NULL; xmlNode *cluster_property_set = NULL; - crm_trace("Creating %s-%s for %s=%s", - PCMK_VALUE_CIB_BOOTSTRAP_OPTIONS, attr_name, attr_name, - attr_value); + pcmk__trace("Creating " PCMK_VALUE_CIB_BOOTSTRAP_OPTIONS "-%s for " + "%s=%s", + attr_name, attr_name, attr_value); configuration = pcmk__xe_first_child(xml, PCMK_XE_CONFIGURATION, NULL, NULL); @@ -466,7 +466,8 @@ do_pe_invoke_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, void return; } else if (call_id != fsa_pe_query) { - crm_trace("Skipping superseded CIB query: %d (current=%d)", call_id, fsa_pe_query); + pcmk__trace("Skipping superseded CIB query: %d (current=%d)", call_id, + fsa_pe_query); return; } else if (!AM_I_DC diff --git a/daemons/controld/controld_te_actions.c b/daemons/controld/controld_te_actions.c index 84c078a444e..a2df5221748 100644 --- a/daemons/controld/controld_te_actions.c +++ b/daemons/controld/controld_te_actions.c @@ -314,8 +314,9 @@ controld_record_action_event(pcmk__graph_action_t *action, fsa_register_cib_callback(rc, NULL, cib_action_updated); pcmk__xml_free(state); - crm_trace("Sent CIB update (call ID %d) for synthesized event of action %d (%s on %s)", - rc, action->id, task_uuid, target); + pcmk__trace("Sent CIB update (call ID %d) for synthesized event of action " + "%d (%s on %s)", + rc, action->id, task_uuid, target); pcmk__set_graph_action_flags(action, pcmk__graph_action_sent_update); } @@ -522,7 +523,7 @@ te_update_job_count_on(const char *target, int offset, bool migrate) if(migrate) { r->migrate_jobs += offset; } - crm_trace("jobs[%s] = %d", target, r->jobs); + pcmk__trace("jobs[%s] = %d", target, r->jobs); } static void @@ -598,20 +599,23 @@ allowed_on_node(const pcmk__graph_t *graph, const pcmk__graph_action_t *action, } if(limit <= r->jobs) { - crm_trace("Peer %s is over their job limit of %d (%d): deferring %s", - target, limit, r->jobs, id); + pcmk__trace("Peer %s is over their job limit of %d (%d): deferring %s", + target, limit, r->jobs, id); return false; } else if(graph->migration_limit > 0 && r->migrate_jobs >= graph->migration_limit) { if (pcmk__strcase_any_of(task, PCMK_ACTION_MIGRATE_TO, PCMK_ACTION_MIGRATE_FROM, NULL)) { - crm_trace("Peer %s is over their migration job limit of %d (%d): deferring %s", - target, graph->migration_limit, r->migrate_jobs, id); + pcmk__trace("Peer %s is over their migration job limit of %d (%d): " + "deferring %s", + target, graph->migration_limit, r->migrate_jobs, id); return false; } } - crm_trace("Peer %s has not hit their limit yet. current jobs = %d limit= %d limit", target, r->jobs, limit); + pcmk__trace("Peer %s has not hit their limit yet. current jobs = %d " + "limit= %d limit", + target, r->jobs, limit); return true; } diff --git a/daemons/controld/controld_te_callbacks.c b/daemons/controld/controld_te_callbacks.c index ba342da8e83..59f9b5b6bc3 100644 --- a/daemons/controld/controld_te_callbacks.c +++ b/daemons/controld/controld_te_callbacks.c @@ -85,7 +85,7 @@ process_resource_updates(const char *node, xmlNode *xml, xmlNode *change, for (rsc = pcmk__xe_first_child(xml, NULL, NULL, NULL); rsc != NULL; rsc = pcmk__xe_next(rsc, NULL)) { - crm_trace("Processing %s", pcmk__xe_id(rsc)); + pcmk__trace("Processing %s", pcmk__xe_id(rsc)); process_lrm_resource_diff(rsc, node); } } @@ -139,11 +139,11 @@ abort_unless_down(const char *xpath, const char *op, xmlNode *change, down = match_down_event(node_uuid); if (down == NULL) { - crm_trace("Not expecting %s to be down (%s)", node_uuid, xpath); + pcmk__trace("Not expecting %s to be down (%s)", node_uuid, xpath); abort_transition(PCMK_SCORE_INFINITY, pcmk__graph_restart, reason, change); } else { - crm_trace("Expecting changes to %s (%s)", node_uuid, xpath); + pcmk__trace("Expecting changes to %s (%s)", node_uuid, xpath); } free(node_uuid); } @@ -191,7 +191,7 @@ process_delete_diff(const char *xpath, const char *op, xmlNode *change) abort_unless_down(xpath, op, change, "Node state removal"); } else { - crm_trace("Ignoring delete of %s", xpath); + pcmk__trace("Ignoring delete of %s", xpath); } } @@ -247,7 +247,7 @@ te_update_diff_element(xmlNode *change, void *userdata) return pcmk_rc_ok; } else if (xpath == NULL) { - crm_trace("Ignoring %s change for version field", op); + pcmk__trace("Ignoring %s change for version field", op); return pcmk_rc_ok; } else if ((strcmp(op, PCMK_VALUE_MOVE) == 0) @@ -257,7 +257,7 @@ te_update_diff_element(xmlNode *change, void *userdata) /* We still need to consider moves within the resources section, * since they affect placement order. */ - crm_trace("Ignoring move change at %s", xpath); + pcmk__trace("Ignoring move change at %s", xpath); return pcmk_rc_ok; } @@ -282,15 +282,14 @@ te_update_diff_element(xmlNode *change, void *userdata) if (match) { if (match->type == XML_COMMENT_NODE) { - crm_trace("Ignoring %s operation for comment at %s", op, xpath); + pcmk__trace("Ignoring %s operation for comment at %s", op, xpath); return pcmk_rc_ok; } name = (const char *)match->name; } - crm_trace("Handling %s operation for %s%s%s", - op, (xpath? xpath : "CIB"), - (name? " matched by " : ""), (name? name : "")); + pcmk__trace("Handling %s operation for %s%s%s", op, pcmk__s(xpath, "CIB"), + ((name != NULL)? " matched by " : ""), pcmk__s(name, "")); if (strstr(xpath, "/" PCMK_XE_CIB "/" PCMK_XE_CONFIGURATION)) { abort_transition(PCMK_SCORE_INFINITY, pcmk__graph_restart, @@ -371,19 +370,19 @@ te_update_diff(const char *event, xmlNode * msg) pcmk__xe_get_int(msg, PCMK__XA_CIB_RC, &rc); if (controld_globals.transition_graph == NULL) { - crm_trace("No graph"); + pcmk__trace("No graph"); return; } else if (rc < pcmk_ok) { - crm_trace("Filter rc=%d (%s)", rc, pcmk_strerror(rc)); + pcmk__trace("Filter rc=%d (%s)", rc, pcmk_strerror(rc)); return; } else if (controld_globals.transition_graph->complete && (controld_globals.fsa_state != S_IDLE) && (controld_globals.fsa_state != S_TRANSITION_ENGINE) && (controld_globals.fsa_state != S_POLICY_ENGINE)) { - crm_trace("Filter state=%s (complete)", - fsa_state2string(controld_globals.fsa_state)); + pcmk__trace("Filter state=%s (complete)", + fsa_state2string(controld_globals.fsa_state)); return; } diff --git a/daemons/controld/controld_te_events.c b/daemons/controld/controld_te_events.c index e7d3b361184..7e939edfef4 100644 --- a/daemons/controld/controld_te_events.c +++ b/daemons/controld/controld_te_events.c @@ -339,11 +339,11 @@ get_cancel_action(const char *id, const char *node) target = pcmk__xe_get(action->xml, PCMK__META_ON_NODE_UUID); if (node && !pcmk__str_eq(target, node, pcmk__str_casei)) { - crm_trace("Wrong node %s for %s on %s", target, id, node); + pcmk__trace("Wrong node %s for %s on %s", target, id, node); continue; } - crm_trace("Found %s on %s", id, node); + pcmk__trace("Found %s on %s", id, node); return action; } } diff --git a/daemons/controld/controld_te_utils.c b/daemons/controld/controld_te_utils.c index 8b4e0d33b2b..9d724c0de5d 100644 --- a/daemons/controld/controld_te_utils.c +++ b/daemons/controld/controld_te_utils.c @@ -26,11 +26,11 @@ stop_te_timer(pcmk__graph_action_t *action) return FALSE; } if (action->timer != 0) { - crm_trace("Stopping action timer"); + pcmk__trace("Stopping action timer"); g_source_remove(action->timer); action->timer = 0; } else { - crm_trace("Action timer was already stopped"); + pcmk__trace("Action timer was already stopped"); return FALSE; } return TRUE; @@ -44,9 +44,9 @@ te_graph_trigger(gpointer user_data) return TRUE; } - crm_trace("Invoking graph %d in state %s", - controld_globals.transition_graph->id, - fsa_state2string(controld_globals.fsa_state)); + pcmk__trace("Invoking graph %d in state %s", + controld_globals.transition_graph->id, + fsa_state2string(controld_globals.fsa_state)); switch (controld_globals.fsa_state) { case S_STARTING: @@ -71,11 +71,11 @@ te_graph_trigger(gpointer user_data) controld_globals.transition_graph->batch_limit = orig_limit; if (graph_rc == pcmk__graph_active) { - crm_trace("Transition not yet complete"); + pcmk__trace("Transition not yet complete"); return TRUE; } else if (graph_rc == pcmk__graph_pending) { - crm_trace("Transition not yet complete - no actions fired"); + pcmk__trace("Transition not yet complete - no actions fired"); return TRUE; } @@ -119,7 +119,7 @@ controld_destroy_transition_trigger(void) void controld_trigger_graph_as(const char *fn, int line) { - crm_trace("%s:%d - Triggered graph processing", fn, line); + pcmk__trace("%s:%d - Triggered graph processing", fn, line); mainloop_set_trigger(transition_trigger); } diff --git a/daemons/controld/controld_throttle.c b/daemons/controld/controld_throttle.c index f4a766a283a..5877b78adb3 100644 --- a/daemons/controld/controld_throttle.c +++ b/daemons/controld/controld_throttle.c @@ -93,7 +93,7 @@ throttle_check_thresholds(float load, const char *desc, return throttle_low; } - crm_trace("Negligible %s detected: %f", desc, load); + pcmk__trace("Negligible %s detected: %f", desc, load); return throttle_none; } @@ -333,10 +333,11 @@ throttle_get_total_job_limit(int l) if(limit == l) { } else if(l == 0) { - crm_trace("Using " PCMK_OPT_BATCH_LIMIT "=%d", limit); + pcmk__trace("Using " PCMK_OPT_BATCH_LIMIT "=%d", limit); } else { - crm_trace("Using " PCMK_OPT_BATCH_LIMIT "=%d instead of %d", limit, l); + pcmk__trace("Using " PCMK_OPT_BATCH_LIMIT "=%d instead of %d", limit, + l); } return limit; } @@ -353,7 +354,7 @@ throttle_get_job_limit(const char *node) r->node = pcmk__str_copy(node); r->mode = throttle_low; r->max = throttle_job_max; - crm_trace("Defaulting to local values for unknown node %s", node); + pcmk__trace("Defaulting to local values for unknown node %s", node); g_hash_table_insert(throttle_records, r->node, r); } diff --git a/daemons/controld/controld_timers.c b/daemons/controld/controld_timers.c index 2a3f32c40e5..2b30c0cacef 100644 --- a/daemons/controld/controld_timers.c +++ b/daemons/controld/controld_timers.c @@ -93,16 +93,17 @@ controld_stop_timer(fsa_timer_t *timer) CRM_CHECK(timer != NULL, return false); if (timer->source_id != 0) { - crm_trace("Stopping %s (would inject %s if popped after %ums, src=%d)", - get_timer_desc(timer), fsa_input2string(timer->fsa_input), - timer->period_ms, timer->source_id); + pcmk__trace("Stopping %s (would inject %s if popped after %ums, " + "src=%d)", + get_timer_desc(timer), fsa_input2string(timer->fsa_input), + timer->period_ms, timer->source_id); g_source_remove(timer->source_id); timer->source_id = 0; } else { - crm_trace("%s already stopped (would inject %s if popped after %ums)", - get_timer_desc(timer), fsa_input2string(timer->fsa_input), - timer->period_ms); + pcmk__trace("%s already stopped (would inject %s if popped after %ums)", + get_timer_desc(timer), fsa_input2string(timer->fsa_input), + timer->period_ms); return false; } return true; diff --git a/daemons/controld/controld_utils.c b/daemons/controld/controld_utils.c index b002e66bbf9..18a9d2848c9 100644 --- a/daemons/controld/controld_utils.c +++ b/daemons/controld/controld_utils.c @@ -477,73 +477,73 @@ fsa_dump_inputs(int log_level, const char *text, long long input_register) } if (pcmk__is_set(input_register, R_THE_DC)) { - crm_trace("%s %.16llx (R_THE_DC)", text, R_THE_DC); + pcmk__trace("%s %.16llx (R_THE_DC)", text, R_THE_DC); } if (pcmk__is_set(input_register, R_STARTING)) { - crm_trace("%s %.16llx (R_STARTING)", text, R_STARTING); + pcmk__trace("%s %.16llx (R_STARTING)", text, R_STARTING); } if (pcmk__is_set(input_register, R_SHUTDOWN)) { - crm_trace("%s %.16llx (R_SHUTDOWN)", text, R_SHUTDOWN); + pcmk__trace("%s %.16llx (R_SHUTDOWN)", text, R_SHUTDOWN); } if (pcmk__is_set(input_register, R_STAYDOWN)) { - crm_trace("%s %.16llx (R_STAYDOWN)", text, R_STAYDOWN); + pcmk__trace("%s %.16llx (R_STAYDOWN)", text, R_STAYDOWN); } if (pcmk__is_set(input_register, R_JOIN_OK)) { - crm_trace("%s %.16llx (R_JOIN_OK)", text, R_JOIN_OK); + pcmk__trace("%s %.16llx (R_JOIN_OK)", text, R_JOIN_OK); } if (pcmk__is_set(input_register, R_READ_CONFIG)) { - crm_trace("%s %.16llx (R_READ_CONFIG)", text, R_READ_CONFIG); + pcmk__trace("%s %.16llx (R_READ_CONFIG)", text, R_READ_CONFIG); } if (pcmk__is_set(input_register, R_INVOKE_PE)) { - crm_trace("%s %.16llx (R_INVOKE_PE)", text, R_INVOKE_PE); + pcmk__trace("%s %.16llx (R_INVOKE_PE)", text, R_INVOKE_PE); } if (pcmk__is_set(input_register, R_CIB_CONNECTED)) { - crm_trace("%s %.16llx (R_CIB_CONNECTED)", text, R_CIB_CONNECTED); + pcmk__trace("%s %.16llx (R_CIB_CONNECTED)", text, R_CIB_CONNECTED); } if (pcmk__is_set(input_register, R_PE_CONNECTED)) { - crm_trace("%s %.16llx (R_PE_CONNECTED)", text, R_PE_CONNECTED); + pcmk__trace("%s %.16llx (R_PE_CONNECTED)", text, R_PE_CONNECTED); } if (pcmk__is_set(input_register, R_TE_CONNECTED)) { - crm_trace("%s %.16llx (R_TE_CONNECTED)", text, R_TE_CONNECTED); + pcmk__trace("%s %.16llx (R_TE_CONNECTED)", text, R_TE_CONNECTED); } if (pcmk__is_set(input_register, R_LRM_CONNECTED)) { - crm_trace("%s %.16llx (R_LRM_CONNECTED)", text, R_LRM_CONNECTED); + pcmk__trace("%s %.16llx (R_LRM_CONNECTED)", text, R_LRM_CONNECTED); } if (pcmk__is_set(input_register, R_CIB_REQUIRED)) { - crm_trace("%s %.16llx (R_CIB_REQUIRED)", text, R_CIB_REQUIRED); + pcmk__trace("%s %.16llx (R_CIB_REQUIRED)", text, R_CIB_REQUIRED); } if (pcmk__is_set(input_register, R_PE_REQUIRED)) { - crm_trace("%s %.16llx (R_PE_REQUIRED)", text, R_PE_REQUIRED); + pcmk__trace("%s %.16llx (R_PE_REQUIRED)", text, R_PE_REQUIRED); } if (pcmk__is_set(input_register, R_TE_REQUIRED)) { - crm_trace("%s %.16llx (R_TE_REQUIRED)", text, R_TE_REQUIRED); + pcmk__trace("%s %.16llx (R_TE_REQUIRED)", text, R_TE_REQUIRED); } if (pcmk__is_set(input_register, R_REQ_PEND)) { - crm_trace("%s %.16llx (R_REQ_PEND)", text, R_REQ_PEND); + pcmk__trace("%s %.16llx (R_REQ_PEND)", text, R_REQ_PEND); } if (pcmk__is_set(input_register, R_PE_PEND)) { - crm_trace("%s %.16llx (R_PE_PEND)", text, R_PE_PEND); + pcmk__trace("%s %.16llx (R_PE_PEND)", text, R_PE_PEND); } if (pcmk__is_set(input_register, R_TE_PEND)) { - crm_trace("%s %.16llx (R_TE_PEND)", text, R_TE_PEND); + pcmk__trace("%s %.16llx (R_TE_PEND)", text, R_TE_PEND); } if (pcmk__is_set(input_register, R_RESP_PEND)) { - crm_trace("%s %.16llx (R_RESP_PEND)", text, R_RESP_PEND); + pcmk__trace("%s %.16llx (R_RESP_PEND)", text, R_RESP_PEND); } if (pcmk__is_set(input_register, R_CIB_DONE)) { - crm_trace("%s %.16llx (R_CIB_DONE)", text, R_CIB_DONE); + pcmk__trace("%s %.16llx (R_CIB_DONE)", text, R_CIB_DONE); } if (pcmk__is_set(input_register, R_HAVE_CIB)) { - crm_trace("%s %.16llx (R_HAVE_CIB)", text, R_HAVE_CIB); + pcmk__trace("%s %.16llx (R_HAVE_CIB)", text, R_HAVE_CIB); } if (pcmk__is_set(input_register, R_MEMBERSHIP)) { - crm_trace("%s %.16llx (R_MEMBERSHIP)", text, R_MEMBERSHIP); + pcmk__trace("%s %.16llx (R_MEMBERSHIP)", text, R_MEMBERSHIP); } if (pcmk__is_set(input_register, R_PEER_DATA)) { - crm_trace("%s %.16llx (R_PEER_DATA)", text, R_PEER_DATA); + pcmk__trace("%s %.16llx (R_PEER_DATA)", text, R_PEER_DATA); } if (pcmk__is_set(input_register, R_IN_RECOVERY)) { - crm_trace("%s %.16llx (R_IN_RECOVERY)", text, R_IN_RECOVERY); + pcmk__trace("%s %.16llx (R_IN_RECOVERY)", text, R_IN_RECOVERY); } } @@ -551,154 +551,173 @@ void fsa_dump_actions(uint64_t action, const char *text) { if (pcmk__is_set(action, A_READCONFIG)) { - crm_trace("Action %.16llx (A_READCONFIG) %s", A_READCONFIG, text); + pcmk__trace("Action %.16llx (A_READCONFIG) %s", A_READCONFIG, text); } if (pcmk__is_set(action, A_STARTUP)) { - crm_trace("Action %.16llx (A_STARTUP) %s", A_STARTUP, text); + pcmk__trace("Action %.16llx (A_STARTUP) %s", A_STARTUP, text); } if (pcmk__is_set(action, A_STARTED)) { - crm_trace("Action %.16llx (A_STARTED) %s", A_STARTED, text); + pcmk__trace("Action %.16llx (A_STARTED) %s", A_STARTED, text); } if (pcmk__is_set(action, A_HA_CONNECT)) { - crm_trace("Action %.16llx (A_CONNECT) %s", A_HA_CONNECT, text); + pcmk__trace("Action %.16llx (A_CONNECT) %s", A_HA_CONNECT, text); } if (pcmk__is_set(action, A_HA_DISCONNECT)) { - crm_trace("Action %.16llx (A_DISCONNECT) %s", A_HA_DISCONNECT, text); + pcmk__trace("Action %.16llx (A_DISCONNECT) %s", A_HA_DISCONNECT, text); } if (pcmk__is_set(action, A_LRM_CONNECT)) { - crm_trace("Action %.16llx (A_LRM_CONNECT) %s", A_LRM_CONNECT, text); + pcmk__trace("Action %.16llx (A_LRM_CONNECT) %s", A_LRM_CONNECT, text); } if (pcmk__is_set(action, A_LRM_INVOKE)) { - crm_trace("Action %.16llx (A_LRM_INVOKE) %s", A_LRM_INVOKE, text); + pcmk__trace("Action %.16llx (A_LRM_INVOKE) %s", A_LRM_INVOKE, text); } if (pcmk__is_set(action, A_LRM_DISCONNECT)) { - crm_trace("Action %.16llx (A_LRM_DISCONNECT) %s", A_LRM_DISCONNECT, text); + pcmk__trace("Action %.16llx (A_LRM_DISCONNECT) %s", A_LRM_DISCONNECT, + text); } if (pcmk__is_set(action, A_DC_TIMER_STOP)) { - crm_trace("Action %.16llx (A_DC_TIMER_STOP) %s", A_DC_TIMER_STOP, text); + pcmk__trace("Action %.16llx (A_DC_TIMER_STOP) %s", A_DC_TIMER_STOP, + text); } if (pcmk__is_set(action, A_DC_TIMER_START)) { - crm_trace("Action %.16llx (A_DC_TIMER_START) %s", A_DC_TIMER_START, text); + pcmk__trace("Action %.16llx (A_DC_TIMER_START) %s", A_DC_TIMER_START, + text); } if (pcmk__is_set(action, A_INTEGRATE_TIMER_START)) { - crm_trace("Action %.16llx (A_INTEGRATE_TIMER_START) %s", A_INTEGRATE_TIMER_START, text); + pcmk__trace("Action %.16llx (A_INTEGRATE_TIMER_START) %s", + A_INTEGRATE_TIMER_START, text); } if (pcmk__is_set(action, A_INTEGRATE_TIMER_STOP)) { - crm_trace("Action %.16llx (A_INTEGRATE_TIMER_STOP) %s", A_INTEGRATE_TIMER_STOP, text); + pcmk__trace("Action %.16llx (A_INTEGRATE_TIMER_STOP) %s", + A_INTEGRATE_TIMER_STOP, text); } if (pcmk__is_set(action, A_FINALIZE_TIMER_START)) { - crm_trace("Action %.16llx (A_FINALIZE_TIMER_START) %s", A_FINALIZE_TIMER_START, text); + pcmk__trace("Action %.16llx (A_FINALIZE_TIMER_START) %s", + A_FINALIZE_TIMER_START, text); } if (pcmk__is_set(action, A_FINALIZE_TIMER_STOP)) { - crm_trace("Action %.16llx (A_FINALIZE_TIMER_STOP) %s", A_FINALIZE_TIMER_STOP, text); + pcmk__trace("Action %.16llx (A_FINALIZE_TIMER_STOP) %s", + A_FINALIZE_TIMER_STOP, text); } if (pcmk__is_set(action, A_ELECTION_COUNT)) { - crm_trace("Action %.16llx (A_ELECTION_COUNT) %s", A_ELECTION_COUNT, text); + pcmk__trace("Action %.16llx (A_ELECTION_COUNT) %s", A_ELECTION_COUNT, + text); } if (pcmk__is_set(action, A_ELECTION_VOTE)) { - crm_trace("Action %.16llx (A_ELECTION_VOTE) %s", A_ELECTION_VOTE, text); + pcmk__trace("Action %.16llx (A_ELECTION_VOTE) %s", A_ELECTION_VOTE, + text); } if (pcmk__is_set(action, A_ELECTION_CHECK)) { - crm_trace("Action %.16llx (A_ELECTION_CHECK) %s", A_ELECTION_CHECK, text); + pcmk__trace("Action %.16llx (A_ELECTION_CHECK) %s", A_ELECTION_CHECK, + text); } if (pcmk__is_set(action, A_CL_JOIN_ANNOUNCE)) { - crm_trace("Action %.16llx (A_CL_JOIN_ANNOUNCE) %s", A_CL_JOIN_ANNOUNCE, text); + pcmk__trace("Action %.16llx (A_CL_JOIN_ANNOUNCE) %s", + A_CL_JOIN_ANNOUNCE, text); } if (pcmk__is_set(action, A_CL_JOIN_REQUEST)) { - crm_trace("Action %.16llx (A_CL_JOIN_REQUEST) %s", A_CL_JOIN_REQUEST, text); + pcmk__trace("Action %.16llx (A_CL_JOIN_REQUEST) %s", A_CL_JOIN_REQUEST, + text); } if (pcmk__is_set(action, A_CL_JOIN_RESULT)) { - crm_trace("Action %.16llx (A_CL_JOIN_RESULT) %s", A_CL_JOIN_RESULT, text); + pcmk__trace("Action %.16llx (A_CL_JOIN_RESULT) %s", A_CL_JOIN_RESULT, + text); } if (pcmk__is_set(action, A_DC_JOIN_OFFER_ALL)) { - crm_trace("Action %.16llx (A_DC_JOIN_OFFER_ALL) %s", A_DC_JOIN_OFFER_ALL, text); + pcmk__trace("Action %.16llx (A_DC_JOIN_OFFER_ALL) %s", + A_DC_JOIN_OFFER_ALL, text); } if (pcmk__is_set(action, A_DC_JOIN_OFFER_ONE)) { - crm_trace("Action %.16llx (A_DC_JOIN_OFFER_ONE) %s", A_DC_JOIN_OFFER_ONE, text); + pcmk__trace("Action %.16llx (A_DC_JOIN_OFFER_ONE) %s", + A_DC_JOIN_OFFER_ONE, text); } if (pcmk__is_set(action, A_DC_JOIN_PROCESS_REQ)) { - crm_trace("Action %.16llx (A_DC_JOIN_PROCESS_REQ) %s", A_DC_JOIN_PROCESS_REQ, text); + pcmk__trace("Action %.16llx (A_DC_JOIN_PROCESS_REQ) %s", + A_DC_JOIN_PROCESS_REQ, text); } if (pcmk__is_set(action, A_DC_JOIN_PROCESS_ACK)) { - crm_trace("Action %.16llx (A_DC_JOIN_PROCESS_ACK) %s", A_DC_JOIN_PROCESS_ACK, text); + pcmk__trace("Action %.16llx (A_DC_JOIN_PROCESS_ACK) %s", + A_DC_JOIN_PROCESS_ACK, text); } if (pcmk__is_set(action, A_DC_JOIN_FINALIZE)) { - crm_trace("Action %.16llx (A_DC_JOIN_FINALIZE) %s", A_DC_JOIN_FINALIZE, text); + pcmk__trace("Action %.16llx (A_DC_JOIN_FINALIZE) %s", + A_DC_JOIN_FINALIZE, text); } if (pcmk__is_set(action, A_MSG_PROCESS)) { - crm_trace("Action %.16llx (A_MSG_PROCESS) %s", A_MSG_PROCESS, text); + pcmk__trace("Action %.16llx (A_MSG_PROCESS) %s", A_MSG_PROCESS, text); } if (pcmk__is_set(action, A_MSG_ROUTE)) { - crm_trace("Action %.16llx (A_MSG_ROUTE) %s", A_MSG_ROUTE, text); + pcmk__trace("Action %.16llx (A_MSG_ROUTE) %s", A_MSG_ROUTE, text); } if (pcmk__is_set(action, A_RECOVER)) { - crm_trace("Action %.16llx (A_RECOVER) %s", A_RECOVER, text); + pcmk__trace("Action %.16llx (A_RECOVER) %s", A_RECOVER, text); } if (pcmk__is_set(action, A_DC_RELEASE)) { - crm_trace("Action %.16llx (A_DC_RELEASE) %s", A_DC_RELEASE, text); + pcmk__trace("Action %.16llx (A_DC_RELEASE) %s", A_DC_RELEASE, text); } if (pcmk__is_set(action, A_DC_RELEASED)) { - crm_trace("Action %.16llx (A_DC_RELEASED) %s", A_DC_RELEASED, text); + pcmk__trace("Action %.16llx (A_DC_RELEASED) %s", A_DC_RELEASED, text); } if (pcmk__is_set(action, A_DC_TAKEOVER)) { - crm_trace("Action %.16llx (A_DC_TAKEOVER) %s", A_DC_TAKEOVER, text); + pcmk__trace("Action %.16llx (A_DC_TAKEOVER) %s", A_DC_TAKEOVER, text); } if (pcmk__is_set(action, A_SHUTDOWN)) { - crm_trace("Action %.16llx (A_SHUTDOWN) %s", A_SHUTDOWN, text); + pcmk__trace("Action %.16llx (A_SHUTDOWN) %s", A_SHUTDOWN, text); } if (pcmk__is_set(action, A_SHUTDOWN_REQ)) { - crm_trace("Action %.16llx (A_SHUTDOWN_REQ) %s", A_SHUTDOWN_REQ, text); + pcmk__trace("Action %.16llx (A_SHUTDOWN_REQ) %s", A_SHUTDOWN_REQ, text); } if (pcmk__is_set(action, A_STOP)) { - crm_trace("Action %.16llx (A_STOP ) %s", A_STOP, text); + pcmk__trace("Action %.16llx (A_STOP ) %s", A_STOP, text); } if (pcmk__is_set(action, A_EXIT_0)) { - crm_trace("Action %.16llx (A_EXIT_0) %s", A_EXIT_0, text); + pcmk__trace("Action %.16llx (A_EXIT_0) %s", A_EXIT_0, text); } if (pcmk__is_set(action, A_EXIT_1)) { - crm_trace("Action %.16llx (A_EXIT_1) %s", A_EXIT_1, text); + pcmk__trace("Action %.16llx (A_EXIT_1) %s", A_EXIT_1, text); } if (pcmk__is_set(action, A_CIB_START)) { - crm_trace("Action %.16llx (A_CIB_START) %s", A_CIB_START, text); + pcmk__trace("Action %.16llx (A_CIB_START) %s", A_CIB_START, text); } if (pcmk__is_set(action, A_CIB_STOP)) { - crm_trace("Action %.16llx (A_CIB_STOP) %s", A_CIB_STOP, text); + pcmk__trace("Action %.16llx (A_CIB_STOP) %s", A_CIB_STOP, text); } if (pcmk__is_set(action, A_TE_INVOKE)) { - crm_trace("Action %.16llx (A_TE_INVOKE) %s", A_TE_INVOKE, text); + pcmk__trace("Action %.16llx (A_TE_INVOKE) %s", A_TE_INVOKE, text); } if (pcmk__is_set(action, A_TE_START)) { - crm_trace("Action %.16llx (A_TE_START) %s", A_TE_START, text); + pcmk__trace("Action %.16llx (A_TE_START) %s", A_TE_START, text); } if (pcmk__is_set(action, A_TE_STOP)) { - crm_trace("Action %.16llx (A_TE_STOP) %s", A_TE_STOP, text); + pcmk__trace("Action %.16llx (A_TE_STOP) %s", A_TE_STOP, text); } if (pcmk__is_set(action, A_TE_CANCEL)) { - crm_trace("Action %.16llx (A_TE_CANCEL) %s", A_TE_CANCEL, text); + pcmk__trace("Action %.16llx (A_TE_CANCEL) %s", A_TE_CANCEL, text); } if (pcmk__is_set(action, A_PE_INVOKE)) { - crm_trace("Action %.16llx (A_PE_INVOKE) %s", A_PE_INVOKE, text); + pcmk__trace("Action %.16llx (A_PE_INVOKE) %s", A_PE_INVOKE, text); } if (pcmk__is_set(action, A_PE_START)) { - crm_trace("Action %.16llx (A_PE_START) %s", A_PE_START, text); + pcmk__trace("Action %.16llx (A_PE_START) %s", A_PE_START, text); } if (pcmk__is_set(action, A_PE_STOP)) { - crm_trace("Action %.16llx (A_PE_STOP) %s", A_PE_STOP, text); + pcmk__trace("Action %.16llx (A_PE_STOP) %s", A_PE_STOP, text); } if (pcmk__is_set(action, A_NODE_BLOCK)) { - crm_trace("Action %.16llx (A_NODE_BLOCK) %s", A_NODE_BLOCK, text); + pcmk__trace("Action %.16llx (A_NODE_BLOCK) %s", A_NODE_BLOCK, text); } if (pcmk__is_set(action, A_UPDATE_NODESTATUS)) { - crm_trace("Action %.16llx (A_UPDATE_NODESTATUS) %s", A_UPDATE_NODESTATUS, text); + pcmk__trace("Action %.16llx (A_UPDATE_NODESTATUS) %s", + A_UPDATE_NODESTATUS, text); } if (pcmk__is_set(action, A_LOG)) { - crm_trace("Action %.16llx (A_LOG ) %s", A_LOG, text); + pcmk__trace("Action %.16llx (A_LOG ) %s", A_LOG, text); } if (pcmk__is_set(action, A_ERROR)) { - crm_trace("Action %.16llx (A_ERROR ) %s", A_ERROR, text); + pcmk__trace("Action %.16llx (A_ERROR ) %s", A_ERROR, text); } if (pcmk__is_set(action, A_WARN)) { - crm_trace("Action %.16llx (A_WARN ) %s", A_WARN, text); + pcmk__trace("Action %.16llx (A_WARN ) %s", A_WARN, text); } } diff --git a/daemons/execd/execd_alerts.c b/daemons/execd/execd_alerts.c index 2427ed2a473..a3c1ec96973 100644 --- a/daemons/execd/execd_alerts.c +++ b/daemons/execd/execd_alerts.c @@ -173,8 +173,8 @@ drain_check(guint remaining_timeout_ms) guint count = g_hash_table_size(inflight_alerts); if (count > 0) { - crm_trace("%d alerts pending (%.3fs timeout remaining)", - count, remaining_timeout_ms / 1000.0); + pcmk__trace("%d alerts pending (%.3fs timeout remaining)", + count, (remaining_timeout_ms / 1000.0)); return TRUE; } } @@ -187,8 +187,8 @@ lrmd_drain_alerts(GMainLoop *mloop) if (inflight_alerts != NULL) { guint timer_ms = max_inflight_timeout() + 5000; - crm_trace("Draining in-flight alerts (timeout %.3fs)", - timer_ms / 1000.0); + pcmk__trace("Draining in-flight alerts (timeout %.3fs)", + (timer_ms / 1000.0)); draining_alerts = TRUE; pcmk_drain_main_loop(mloop, timer_ms, drain_check); g_hash_table_destroy(inflight_alerts); diff --git a/daemons/execd/execd_commands.c b/daemons/execd/execd_commands.c index baebf584644..d2739e60e4b 100644 --- a/daemons/execd/execd_commands.c +++ b/daemons/execd/execd_commands.c @@ -521,7 +521,7 @@ schedule_lrmd_cmd(lrmd_rsc_t * rsc, lrmd_cmd_t * cmd) CRM_CHECK(cmd != NULL, return); CRM_CHECK(rsc != NULL, return); - crm_trace("Scheduling %s on %s", cmd->action, rsc->rsc_id); + pcmk__trace("Scheduling %s on %s", cmd->action, rsc->rsc_id); if (merge_recurring_duplicate(rsc, cmd)) { // Equivalent of cmd has already been scheduled @@ -568,7 +568,7 @@ send_client_notify(gpointer key, gpointer value, gpointer user_data) CRM_CHECK(client != NULL, return); if (client->name == NULL) { - crm_trace("Skipping notification to client without name"); + pcmk__trace("Skipping notification to client without name"); return; } if (pcmk__is_set(client->flags, pcmk__client_to_proxy)) { @@ -576,8 +576,8 @@ send_client_notify(gpointer key, gpointer value, gpointer user_data) * running as Pacemaker Remote, we may have clients proxied to other * IPC services in the cluster, so skip those. */ - crm_trace("Skipping executor API notification to client %s", - pcmk__client_name(client)); + pcmk__trace("Skipping executor API notification to client %s", + pcmk__client_name(client)); return; } @@ -737,8 +737,9 @@ cmd_reset(lrmd_cmd_t * cmd) static void cmd_finalize(lrmd_cmd_t * cmd, lrmd_rsc_t * rsc) { - crm_trace("Resource operation rsc:%s action:%s completed (%p %p)", cmd->rsc_id, cmd->action, - rsc ? rsc->active : NULL, cmd); + pcmk__trace("Resource operation rsc:%s action:%s completed (%p %p)", + cmd->rsc_id, cmd->action, ((rsc != NULL)? rsc->active : NULL), + cmd); if (rsc && (rsc->active == cmd)) { rsc->active = NULL; @@ -1347,8 +1348,9 @@ execute_nonstonith_action(lrmd_rsc_t *rsc, lrmd_cmd_t *cmd) pcmk__assert((rsc != NULL) && (cmd != NULL)); - crm_trace("Creating action, resource:%s action:%s class:%s provider:%s agent:%s", - rsc->rsc_id, cmd->action, rsc->class, rsc->provider, rsc->type); + pcmk__trace("Creating action, resource:%s action:%s class:%s provider:%s " + "agent:%s", + rsc->rsc_id, cmd->action, rsc->class, rsc->provider, rsc->type); params_copy = pcmk__str_table_dup(cmd->params); @@ -1405,7 +1407,7 @@ execute_resource_action(gpointer user_data) CRM_CHECK(rsc != NULL, return FALSE); if (rsc->active) { - crm_trace("%s is still active", rsc->rsc_id); + pcmk__trace("%s is still active", rsc->rsc_id); return TRUE; } @@ -1414,9 +1416,9 @@ execute_resource_action(gpointer user_data) cmd = first->data; if (cmd->delay_id) { - crm_trace - ("Command %s %s was asked to run too early, waiting for start_delay timeout of %dms", - cmd->rsc_id, cmd->action, cmd->start_delay); + pcmk__trace("Command %s %s was asked to run too early, waiting for " + "start_delay timeout of %dms", + cmd->rsc_id, cmd->action, cmd->start_delay); return TRUE; } rsc->pending_ops = g_list_remove_link(rsc->pending_ops, first); @@ -1429,7 +1431,7 @@ execute_resource_action(gpointer user_data) } if (!cmd) { - crm_trace("Nothing further to do for %s", rsc->rsc_id); + pcmk__trace("Nothing further to do for %s", rsc->rsc_id); return TRUE; } @@ -1652,8 +1654,9 @@ process_lrmd_rsc_unregister(pcmk__client_t *client, uint32_t id, if (rsc->active) { /* let the caller know there are still active ops on this rsc to watch for */ - crm_trace("Operation (%p) still in progress for unregistered resource %s", - rsc->active, rsc_id); + pcmk__trace("Operation (%p) still in progress for unregistered " + "resource %s", + rsc->active, rsc_id); rc = -EINPROGRESS; } @@ -1888,7 +1891,7 @@ process_lrmd_message(pcmk__client_t *client, uint32_t id, xmlNode *request) */ bool allowed = pcmk__is_set(client->flags, pcmk__client_privileged); - crm_trace("Processing %s operation from %s", op, client->id); + pcmk__trace("Processing %s operation from %s", op, client->id); pcmk__xe_get_int(request, PCMK__XA_LRMD_CALLID, &call_id); if (pcmk__str_eq(op, CRM_OP_IPC_FWD, pcmk__str_none)) { diff --git a/daemons/execd/pacemaker-execd.c b/daemons/execd/pacemaker-execd.c index 6f8e9d75fa5..0dee5a7cbb9 100644 --- a/daemons/execd/pacemaker-execd.c +++ b/daemons/execd/pacemaker-execd.c @@ -101,7 +101,7 @@ get_stonith_connection(void) static int32_t lrmd_ipc_accept(qb_ipcs_connection_t * c, uid_t uid, gid_t gid) { - crm_trace("Connection %p", c); + pcmk__trace("Connection %p", c); if (pcmk__new_client(c, uid, gid) == NULL) { return -ENOMEM; } @@ -113,7 +113,7 @@ lrmd_ipc_created(qb_ipcs_connection_t * c) { pcmk__client_t *new_client = pcmk__find_client(c); - crm_trace("Connection %p", c); + pcmk__trace("Connection %p", c); pcmk__assert(new_client != NULL); /* Now that the connection is offically established, alert * the other clients a new connection exists. */ @@ -201,7 +201,7 @@ lrmd_ipc_closed(qb_ipcs_connection_t * c) return 0; } - crm_trace("Connection %p", c); + pcmk__trace("Connection %p", c); client_disconnect_cleanup(client->id); #ifdef PCMK__COMPILE_REMOTE ipc_proxy_remove_provider(client); @@ -214,7 +214,7 @@ static void lrmd_ipc_destroy(qb_ipcs_connection_t * c) { lrmd_ipc_closed(c); - crm_trace("Connection %p", c); + pcmk__trace("Connection %p", c); } static struct qb_ipcs_service_handlers lrmd_ipc_callbacks = { @@ -229,7 +229,7 @@ static struct qb_ipcs_service_handlers lrmd_ipc_callbacks = { int lrmd_server_send_reply(pcmk__client_t *client, uint32_t id, xmlNode *reply) { - crm_trace("Sending reply (%d) to client (%s)", id, client->id); + pcmk__trace("Sending reply (%d) to client (%s)", id, client->id); switch (PCMK__CLIENT_TYPE(client)) { case pcmk__client_ipc: return pcmk__ipc_send_xml(client, id, reply, FALSE); @@ -249,18 +249,18 @@ lrmd_server_send_reply(pcmk__client_t *client, uint32_t id, xmlNode *reply) int lrmd_server_send_notify(pcmk__client_t *client, xmlNode *msg) { - crm_trace("Sending notification to client (%s)", client->id); + pcmk__trace("Sending notification to client (%s)", client->id); switch (PCMK__CLIENT_TYPE(client)) { case pcmk__client_ipc: if (client->ipcs == NULL) { - crm_trace("Could not notify local client: disconnected"); + pcmk__trace("Could not notify local client: disconnected"); return ENOTCONN; } return pcmk__ipc_send_xml(client, 0, msg, crm_ipc_server_event); #ifdef PCMK__COMPILE_REMOTE case pcmk__client_tls: if (client->remote == NULL) { - crm_trace("Could not notify remote client: disconnected"); + pcmk__trace("Could not notify remote client: disconnected"); return ENOTCONN; } else { return lrmd__remote_send_xml(client->remote, msg, 0, "notify"); diff --git a/daemons/execd/remoted_proxy.c b/daemons/execd/remoted_proxy.c index 8db626f187f..0e2306f80d6 100644 --- a/daemons/execd/remoted_proxy.c +++ b/daemons/execd/remoted_proxy.c @@ -200,14 +200,15 @@ ipc_proxy_forward_client(pcmk__client_t *ipc_proxy, xmlNode *xml) */ if (pcmk__str_eq(msg_type, LRMD_IPC_OP_EVENT, pcmk__str_casei)) { - crm_trace("Sending event to %s", ipc_client->id); + pcmk__trace("Sending event to %s", ipc_client->id); rc = pcmk__ipc_send_xml(ipc_client, 0, msg, crm_ipc_server_event); } else if (pcmk__str_eq(msg_type, LRMD_IPC_OP_RESPONSE, pcmk__str_casei)) { int msg_id = 0; pcmk__xe_get_int(xml, PCMK__XA_LRMD_IPC_MSG_ID, &msg_id); - crm_trace("Sending response to %d - %s", ipc_client->request_id, ipc_client->id); + pcmk__trace("Sending response to %d - %s", ipc_client->request_id, + ipc_client->id); rc = pcmk__ipc_send_xml(ipc_client, msg_id, msg, FALSE); CRM_LOG_ASSERT(msg_id == ipc_client->request_id); @@ -331,7 +332,7 @@ ipc_proxy_closed(qb_ipcs_connection_t * c) ipc_proxy = pcmk__find_client_by_id(client->userdata); - crm_trace("Connection %p", c); + pcmk__trace("Connection %p", c); if (ipc_proxy) { xmlNode *msg = pcmk__xe_create(NULL, PCMK__XE_LRMD_IPC_PROXY); @@ -352,7 +353,7 @@ ipc_proxy_closed(qb_ipcs_connection_t * c) static void ipc_proxy_destroy(qb_ipcs_connection_t * c) { - crm_trace("Connection %p", c); + pcmk__trace("Connection %p", c); ipc_proxy_closed(c); } diff --git a/daemons/execd/remoted_tls.c b/daemons/execd/remoted_tls.c index fe8f796a0ba..046f376ec6c 100644 --- a/daemons/execd/remoted_tls.c +++ b/daemons/execd/remoted_tls.c @@ -130,7 +130,7 @@ lrmd_remote_client_msg(gpointer data) } pcmk__xe_get_int(request, PCMK__XA_LRMD_REMOTE_MSG_ID, &id); - crm_trace("Processing remote client request %d", id); + pcmk__trace("Processing remote client request %d", id); if (!client->name) { client->name = pcmk__xe_get_copy(request, PCMK__XA_LRMD_CLIENTNAME); } @@ -268,7 +268,7 @@ bind_and_listen(struct addrinfo *addr) char buffer[INET6_ADDRSTRLEN] = { 0, }; pcmk__sockaddr2str(addr->ai_addr, buffer); - crm_trace("Attempting to bind to address %s", buffer); + pcmk__trace("Attempting to bind to address %s", buffer); fd = socket(addr->ai_family, addr->ai_socktype, addr->ai_protocol); if (fd < 0) { diff --git a/daemons/fenced/fenced_cib.c b/daemons/fenced/fenced_cib.c index f1bae5572cd..b04d00e3be5 100644 --- a/daemons/fenced/fenced_cib.c +++ b/daemons/fenced/fenced_cib.c @@ -154,7 +154,7 @@ fencing_topology_init(void) xmlXPathObject *xpathObj = NULL; const char *xpath = "//" PCMK_XE_FENCING_LEVEL; - crm_trace("Full topology refresh"); + pcmk__trace("Full topology refresh"); free_topology_list(); init_topology_list(); @@ -302,7 +302,7 @@ update_cib_stonith_devices(const char *event, xmlNode * msg) cib_devices_update(); free(reason); } else { - crm_trace("No updates for device list found in CIB"); + pcmk__trace("No updates for device list found in CIB"); } } @@ -355,7 +355,7 @@ fenced_query_cib(void) { int rc = pcmk_ok; - crm_trace("Re-requesting full CIB"); + pcmk__trace("Re-requesting full CIB"); rc = cib_api->cmds->query(cib_api, NULL, &local_cib, cib_sync_call); rc = pcmk_legacy2rc(rc); if (rc == pcmk_rc_ok) { @@ -401,8 +401,8 @@ update_fencing_topology(const char *event, xmlNode *msg) if (strstr(xpath, "/" PCMK_XE_FENCING_LEVEL) != NULL) { // Change to a specific entry - crm_trace("Handling %s operation %d.%d.%d for %s", - op, add[0], add[1], add[2], xpath); + pcmk__trace("Handling %s operation %d.%d.%d for %s", op, + add[0], add[1], add[2], xpath); if (strcmp(op, PCMK_VALUE_DELETE) == 0) { /* We have only path and ID, which is not enough info to remove @@ -454,8 +454,8 @@ update_fencing_topology(const char *event, xmlNode *msg) return; } - crm_trace("Nothing for us in %s operation %d.%d.%d for %s", - op, add[0], add[1], add[2], xpath); + pcmk__trace("Nothing for us in %s operation %d.%d.%d for %s", op, + add[0], add[1], add[2], xpath); } } @@ -466,11 +466,11 @@ update_cib_cache_cb(const char *event, xmlNode * msg) bool need_full_refresh = false; if(!have_cib_devices) { - crm_trace("Skipping updates until we get a full dump"); + pcmk__trace("Skipping updates until we get a full dump"); return; } else if(msg == NULL) { - crm_trace("Missing %s update", event); + pcmk__trace("Missing %s update", event); return; } diff --git a/daemons/fenced/fenced_commands.c b/daemons/fenced/fenced_commands.c index cee4068f937..10cec2096d5 100644 --- a/daemons/fenced/fenced_commands.c +++ b/daemons/fenced/fenced_commands.c @@ -227,8 +227,9 @@ get_action_timeout(const stonith_device_t *device, const char *action, */ if (pcmk__str_eq(action, PCMK_ACTION_REBOOT, pcmk__str_none) && !pcmk__is_set(device->flags, st_device_supports_reboot)) { - crm_trace("%s doesn't support reboot, using timeout for off instead", - device->id); + pcmk__trace("%s doesn't support reboot, using timeout for off " + "instead", + device->id); action = PCMK_ACTION_OFF; } @@ -523,9 +524,9 @@ stonith_device_execute(stonith_device_t * device) active_cmds = get_active_cmds(device); action_limit = get_action_limit(device); if (action_limit > -1 && active_cmds >= action_limit) { - crm_trace("%s is over its action limit of %d (%u active action%s)", - device->id, action_limit, active_cmds, - pcmk__plural_s(active_cmds)); + pcmk__trace("%s is over its action limit of %d (%u active action%s)", + device->id, action_limit, active_cmds, + pcmk__plural_s(active_cmds)); return TRUE; } @@ -535,12 +536,12 @@ stonith_device_execute(stonith_device_t * device) gIterNext = gIter->next; if (pending_op && pending_op->delay_id) { - crm_trace("Operation '%s'%s%s using %s was asked to run too early, " - "waiting for start delay of %ds", - pending_op->action, - ((pending_op->target == NULL)? "" : " targeting "), - pcmk__s(pending_op->target, ""), - device->id, pending_op->start_delay); + pcmk__trace("Operation '%s'%s%s using %s was asked to run too " + "early, waiting for start delay of %ds", + pending_op->action, + ((pending_op->target != NULL)? " targeting ": ""), + pcmk__s(pending_op->target, ""), device->id, + pending_op->start_delay); continue; } @@ -552,7 +553,7 @@ stonith_device_execute(stonith_device_t * device) } if (cmd == NULL) { - crm_trace("No actions using %s are needed", device->id); + pcmk__trace("No actions using %s are needed", device->id); return TRUE; } @@ -1181,12 +1182,13 @@ status_search_cb(int pid, const pcmk__action_result_t *result, void *user_data) switch (result->exit_status) { case fence_status_unknown: - crm_trace("%s reported it cannot fence %s", dev->id, search->host); + pcmk__trace("%s reported it cannot fence %s", dev->id, + search->host); break; case fence_status_active: case fence_status_inactive: - crm_trace("%s reported it can fence %s", dev->id, search->host); + pcmk__trace("%s reported it can fence %s", dev->id, search->host); can = TRUE; break; @@ -1304,7 +1306,8 @@ device_params_diff(GHashTable *first, GHashTable *second) { char *other_value = g_hash_table_lookup(second, key); if (!other_value || !pcmk__str_eq(other_value, value, pcmk__str_casei)) { - crm_trace("Different value for %s: %s != %s", key, other_value, value); + pcmk__trace("Different value for %s: %s != %s", key, + other_value, value); return 1; } } @@ -1323,11 +1326,11 @@ device_has_duplicate(const stonith_device_t *device) stonith_device_t *dup = g_hash_table_lookup(device_list, device->id); if (!dup) { - crm_trace("No match for %s", device->id); + pcmk__trace("No match for %s", device->id); return NULL; } else if (!pcmk__str_eq(dup->agent, device->agent, pcmk__str_casei)) { - crm_trace("Different agent: %s != %s", dup->agent, device->agent); + pcmk__trace("Different agent: %s != %s", dup->agent, device->agent); return NULL; } @@ -1337,7 +1340,7 @@ device_has_duplicate(const stonith_device_t *device) return NULL; } - crm_trace("Match"); + pcmk__trace("Match"); return dup; } @@ -1471,14 +1474,14 @@ stonith_device_remove(const char *id, bool from_cib) if (!device->cib_registered && !device->api_registered) { g_hash_table_remove(device_list, id); ndevices = g_hash_table_size(device_list); - pcmk__info("Removed '%s' from device list (%d active device%s)", id, + pcmk__info("Removed '%s' from device list (%u active device%s)", id, ndevices, pcmk__plural_s(ndevices)); } else { - crm_trace("Not removing '%s' from device list (%d active) because " - "still registered via:%s%s", - id, g_hash_table_size(device_list), - (device->cib_registered? " cib" : ""), - (device->api_registered? " api" : "")); + pcmk__trace("Not removing '%s' from device list (%u active) because " + "still registered via:%s%s", + id, g_hash_table_size(device_list), + (device->cib_registered? " cib" : ""), + (device->api_registered? " api" : "")); } } @@ -1758,8 +1761,8 @@ fenced_register_level(xmlNode *msg, char **desc, pcmk__action_result_t *result) tp->target_attribute = pcmk__xe_get_copy(level, PCMK_XA_TARGET_ATTRIBUTE); g_hash_table_replace(topology, tp->target, tp); - crm_trace("Added %s (%d) to the topology (%d active entries)", - target, (int) mode, g_hash_table_size(topology)); + pcmk__trace("Added %s (%d) to the topology (%u active entries)", target, + (int) mode, g_hash_table_size(topology)); } else { free(target); } @@ -1773,7 +1776,7 @@ fenced_register_level(xmlNode *msg, char **desc, pcmk__action_result_t *result) for (dIter = devices; dIter; dIter = dIter->next) { const char *device = dIter->value; - crm_trace("Adding device '%s' for %s[%d]", device, tp->target, id); + pcmk__trace("Adding device '%s' for %s[%d]", device, tp->target, id); tp->levels[id] = g_list_append(tp->levels[id], pcmk__str_copy(device)); } stonith_key_value_freeall(devices, 1, 1); @@ -2044,13 +2047,14 @@ localhost_is_eligible(const stonith_device_t *device, const char *action, action) != NULL)) { if (!localhost_is_target) { - crm_trace("Operation '%s' using %s can only be executed for local " - "host, not %s", action, device->id, target); + pcmk__trace("Operation '%s' using %s can only be executed for " + "local host, not %s", + action, device->id, target); return FALSE; } } else if (localhost_is_target && !allow_self) { - crm_trace("'%s' operation does not support self-fencing", action); + pcmk__trace("'%s' operation does not support self-fencing", action); return FALSE; } return TRUE; @@ -2178,8 +2182,9 @@ can_fence_host_with_device(stonith_device_t *dev, search->per_device_timeout); } - crm_trace("Running '%s' to check whether %s is eligible to fence %s (%s)", - check_type, dev_id, target, action); + pcmk__trace("Running '%s' to check whether %s is eligible to fence " + "%s (%s)", + check_type, dev_id, target, action); schedule_internal_command(__func__, dev, PCMK_ACTION_LIST, NULL, search->per_device_timeout, search, dynamic_list_search_cb); @@ -2203,8 +2208,9 @@ can_fence_host_with_device(stonith_device_t *dev, device_timeout, dev_id, search->per_device_timeout); } - crm_trace("Running '%s' to check whether %s is eligible to fence %s (%s)", - check_type, dev_id, target, action); + pcmk__trace("Running '%s' to check whether %s is eligible to fence %s " + "(%s)", + check_type, dev_id, target, action); schedule_internal_command(__func__, dev, PCMK_ACTION_STATUS, target, search->per_device_timeout, search, status_search_cb); /* we'll respond to this search request async in the cb */ @@ -2303,23 +2309,23 @@ add_action_specific_attributes(xmlNode *xml, const char *action, // PCMK__XA_ST_REQUIRED is currently used only for unfencing if (is_action_required(action, device)) { - crm_trace("Action '%s' is required using %s", action, device->id); + pcmk__trace("Action '%s' is required using %s", action, device->id); pcmk__xe_set_int(xml, PCMK__XA_ST_REQUIRED, 1); } // pcmk__timeout if configured action_specific_timeout = get_action_timeout(device, action, 0); if (action_specific_timeout) { - crm_trace("Action '%s' has timeout %ds using %s", - action, action_specific_timeout, device->id); + pcmk__trace("Action '%s' has timeout %ds using %s", action, + action_specific_timeout, device->id); pcmk__xe_set_int(xml, PCMK__XA_ST_ACTION_TIMEOUT, action_specific_timeout); } delay_max = get_action_delay_max(device, action); if (delay_max > 0) { - crm_trace("Action '%s' has maximum random delay %ds using %s", - action, delay_max, device->id); + pcmk__trace("Action '%s' has maximum random delay %ds using %s", action, + delay_max, device->id); pcmk__xe_set_int(xml, PCMK__XA_ST_DELAY_MAX, delay_max); } @@ -2329,15 +2335,15 @@ add_action_specific_attributes(xmlNode *xml, const char *action, } if ((delay_max > 0) && (delay_base == 0)) { - crm_trace("Action '%s' has maximum random delay %ds using %s", - action, delay_max, device->id); + pcmk__trace("Action '%s' has maximum random delay %ds using %s", action, + delay_max, device->id); } else if ((delay_max == 0) && (delay_base > 0)) { - crm_trace("Action '%s' has a static delay of %ds using %s", - action, delay_base, device->id); + pcmk__trace("Action '%s' has a static delay of %ds using %s", action, + delay_base, device->id); } else if ((delay_max > 0) && (delay_base > 0)) { - crm_trace("Action '%s' has a minimum delay of %ds and a randomly chosen " - "maximum delay of %ds using %s", - action, delay_base, delay_max, device->id); + pcmk__trace("Action '%s' has a minimum delay of %ds and a randomly " + "chosen maximum delay of %ds using %s", + action, delay_base, delay_max, device->id); } } @@ -2356,8 +2362,8 @@ add_disallowed(xmlNode *xml, const char *action, const stonith_device_t *device, const char *target, gboolean allow_self) { if (!localhost_is_eligible(device, action, target, allow_self)) { - crm_trace("Action '%s' using %s is disallowed for local host", - action, device->id); + pcmk__trace("Action '%s' using %s is disallowed for local host", action, + device->id); pcmk__xe_set_bool_attr(xml, PCMK__XA_ST_ACTION_DISALLOWED, true); } } @@ -2424,8 +2430,8 @@ stonith_query_capable_device_cb(GList * devices, void *user_data) if (query->client_id != NULL) { client = pcmk__find_client_by_id(query->client_id); if ((client == NULL) && (query->remote_peer == NULL)) { - crm_trace("Skipping reply to %s: no longer a client", - query->client_id); + pcmk__trace("Skipping reply to %s: no longer a client", + query->client_id); goto done; } } @@ -2464,8 +2470,9 @@ stonith_query_capable_device_cb(GList * devices, void *user_data) if (!pcmk__is_set(device->flags, st_device_supports_reboot) && pcmk__str_eq(query->action, PCMK_ACTION_REBOOT, pcmk__str_none)) { - crm_trace("%s doesn't support reboot, using values for off instead", - device->id); + pcmk__trace("%s doesn't support reboot, using values for off " + "instead", + device->id); action = PCMK_ACTION_OFF; } @@ -2636,7 +2643,8 @@ send_async_reply(const async_command_t *cmd, const pcmk__action_result_t *result if (cmd->client != NULL) { client = pcmk__find_client_by_id(cmd->client); if ((client == NULL) && (cmd->origin == NULL)) { - crm_trace("Skipping reply to %s: no longer a client", cmd->client); + pcmk__trace("Skipping reply to %s: no longer a client", + cmd->client); return; } } @@ -2651,8 +2659,8 @@ send_async_reply(const async_command_t *cmd, const pcmk__action_result_t *result /* The target was also the originator, so broadcast the result on its * behalf (since it will be unable to). */ - crm_trace("Broadcast '%s' result for %s (target was also originator)", - cmd->action, cmd->target); + pcmk__trace("Broadcast '%s' result for %s (target was also originator)", + cmd->action, cmd->target); pcmk__xe_set(reply, PCMK__XA_SUBT, PCMK__VALUE_BROADCAST); pcmk__xe_set(reply, PCMK__XA_ST_OP, STONITH_OP_NOTIFY); pcmk__cluster_send_message(NULL, pcmk_ipc_fenced, reply); @@ -2671,8 +2679,8 @@ cancel_stonith_command(async_command_t * cmd) stonith_device_t *device = cmd_device(cmd); if (device) { - crm_trace("Cancel scheduled '%s' action using %s", - cmd->action, device->id); + pcmk__trace("Cancel scheduled '%s' action using %s", cmd->action, + device->id); device->pending_ops = g_list_remove(device->pending_ops, cmd); } } diff --git a/daemons/fenced/fenced_history.c b/daemons/fenced/fenced_history.c index 909bdf3221b..10526ff293d 100644 --- a/daemons/fenced/fenced_history.c +++ b/daemons/fenced/fenced_history.c @@ -211,8 +211,9 @@ stonith_fence_history_trim(void) if (g_hash_table_size(stonith_remote_op_list) > MAX_STONITH_HISTORY) { GList *ops = g_hash_table_get_values(stonith_remote_op_list); - crm_trace("More than %d entries in fencing history, purging oldest " - "completed operations", MAX_STONITH_HISTORY); + pcmk__trace("More than %d entries in fencing history, purging oldest " + "completed operations", + MAX_STONITH_HISTORY); ops = g_list_sort(ops, cmp_op_by_completion); @@ -257,7 +258,7 @@ stonith_xml_history_to_list(const xmlNode *history) continue; } - crm_trace("Attaching op %s to hashtable", id); + pcmk__trace("Attaching op %s to hashtable", id); op = pcmk__assert_alloc(1, sizeof(remote_fencing_op_t)); @@ -374,7 +375,7 @@ stonith_local_history_diff_and_merge(GHashTable *remote_history, } cnt++; - crm_trace("Attaching op %s", op->id); + pcmk__trace("Attaching op %s", op->id); entry = pcmk__xe_create(history, STONITH_OP_EXEC); if (add_id) { pcmk__xe_set(entry, PCMK__XA_ST_REMOTE_OP, op->id); @@ -500,8 +501,8 @@ stonith_fence_history(xmlNode *msg, xmlNode **output, if (options & st_opt_cleanup) { const char *call_id = pcmk__xe_get(msg, PCMK__XA_ST_CALLID); - crm_trace("Cleaning up operations on %s in %p", target, - stonith_remote_op_list); + pcmk__trace("Cleaning up operations on %s in %p", target, + stonith_remote_op_list); stonith_fence_history_cleanup(target, (call_id != NULL)); } else if (options & st_opt_broadcast) { @@ -519,7 +520,7 @@ stonith_fence_history(xmlNode *msg, xmlNode **output, * what it has on top */ out_history = stonith_local_history(TRUE, NULL); - crm_trace("Broadcasting history to peers"); + pcmk__trace("Broadcasting history to peers"); stonith_send_broadcast_history(out_history, st_opt_broadcast | st_opt_discard_reply, NULL); @@ -550,26 +551,26 @@ stonith_fence_history(xmlNode *msg, xmlNode **output, out_history = stonith_local_history_diff_and_merge(received_history, TRUE, NULL); if (out_history) { - crm_trace("Broadcasting history-diff to peers"); + pcmk__trace("Broadcasting history-diff to peers"); pcmk__xe_set_bool_attr(out_history, PCMK__XA_ST_DIFFERENTIAL, true); stonith_send_broadcast_history(out_history, st_opt_broadcast | st_opt_discard_reply, NULL); } else { - crm_trace("History-diff is empty - skip broadcast"); + pcmk__trace("History-diff is empty - skip broadcast"); } } } else { - crm_trace("Skipping history-query-broadcast (%s%s)" - " we sent ourselves", - remote_peer?"remote-peer=":"local-ipc", - remote_peer?remote_peer:""); + pcmk__trace("Skipping history-query-broadcast (%s%s) we sent " + "ourselves", + ((remote_peer != NULL)? "remote-peer=" : "local-ipc"), + pcmk__s(remote_peer, "")); } } else { /* plain history request */ - crm_trace("Looking for operations on %s in %p", target, - stonith_remote_op_list); + pcmk__trace("Looking for operations on %s in %p", target, + stonith_remote_op_list); *output = stonith_local_history(FALSE, target); } pcmk__xml_free(out_history); diff --git a/daemons/fenced/fenced_remote.c b/daemons/fenced/fenced_remote.c index 64870d2d726..0827105dd59 100644 --- a/daemons/fenced/fenced_remote.c +++ b/daemons/fenced/fenced_remote.c @@ -220,8 +220,8 @@ grab_peer_device(const remote_fencing_op_t *op, peer_device_info_t *peer, return FALSE; } - crm_trace("Removing %s from %s (%d remaining)", - device, peer->host, count_peer_devices(op, peer, FALSE, st_device_supports_none)); + pcmk__trace("Removing %s from %s (%d remaining)", device, peer->host, + count_peer_devices(op, peer, FALSE, st_device_supports_none)); props->executed[op->phase] = TRUE; return TRUE; } @@ -416,7 +416,7 @@ fenced_broadcast_op_result(const remote_fencing_op_t *op, bool op_merged) xmlNode *notify_data = NULL; count++; - crm_trace("Broadcasting result to peers"); + pcmk__trace("Broadcasting result to peers"); pcmk__xe_set(bcast, PCMK__XA_T, PCMK__VALUE_ST_NOTIFY); pcmk__xe_set(bcast, PCMK__XA_SUBT, PCMK__VALUE_BROADCAST); pcmk__xe_set(bcast, PCMK__XA_ST_OP, STONITH_OP_NOTIFY); @@ -466,7 +466,7 @@ handle_local_reply_and_notify(remote_fencing_op_t *op, xmlNode *data) /* Send fencing OP reply to local client that initiated fencing */ client = pcmk__find_client_by_id(op->client_id); if (client == NULL) { - crm_trace("Skipping reply to %s: no longer a client", op->client_id); + pcmk__trace("Skipping reply to %s: no longer a client", op->client_id); } else { do_local_reply(reply, client, op->call_options); } @@ -687,9 +687,9 @@ remote_op_timeout_one(gpointer userdata) // The requested delay has been applied for the first device if (op->client_delay > 0) { op->client_delay = 0; - crm_trace("Try another device for '%s' action targeting %s " - "for client %s without delay " QB_XS " id=%.8s", - op->action, op->target, op->client_name, op->id); + pcmk__trace("Try another device for '%s' action targeting %s for " + "client %s without delay " QB_XS " id=%.8s", + op->action, op->target, op->client_name, op->id); } // Try another device, if appropriate @@ -903,13 +903,13 @@ topology_matches(const stonith_topology_t *tp, const char *node) break; case fenced_target_by_name: - crm_trace("Testing %s against %s", node, tp->target); + pcmk__trace("Testing %s against %s", node, tp->target); return pcmk__str_eq(tp->target, node, pcmk__str_casei); default: break; } - crm_trace("No match for %s with %s", node, tp->target); + pcmk__trace("No match for %s with %s", node, tp->target); return FALSE; } @@ -920,19 +920,22 @@ find_topology_for_host(const char *host) stonith_topology_t *tp = g_hash_table_lookup(topology, host); if(tp != NULL) { - crm_trace("Found %s for %s in %d entries", tp->target, host, g_hash_table_size(topology)); + pcmk__trace("Found %s for %s in %u entries", tp->target, host, + g_hash_table_size(topology)); return tp; } g_hash_table_iter_init(&tIter, topology); while (g_hash_table_iter_next(&tIter, NULL, (gpointer *) & tp)) { if (topology_matches(tp, host)) { - crm_trace("Found %s for %s in %d entries", tp->target, host, g_hash_table_size(topology)); + pcmk__trace("Found %s for %s in %u entries", tp->target, host, + g_hash_table_size(topology)); return tp; } } - crm_trace("No matches for %s in %d topology entries", host, g_hash_table_size(topology)); + pcmk__trace("No matches for %s in %u topology entries", host, + g_hash_table_size(topology)); return NULL; } @@ -972,10 +975,10 @@ advance_topology_level(remote_fencing_op_t *op, bool empty_ok) } while (op->level < ST__LEVEL_COUNT && tp->levels[op->level] == NULL); if (op->level < ST__LEVEL_COUNT) { - crm_trace("Attempting fencing level %d targeting %s (%d devices) " - "for client %s@%s (id=%.8s)", - op->level, op->target, g_list_length(tp->levels[op->level]), - op->client_name, op->originator, op->id); + pcmk__trace("Attempting fencing level %d targeting %s (%d devices) for " + "client %s@%s (id=%.8s)", + op->level, op->target, g_list_length(tp->levels[op->level]), + op->client_name, op->originator, op->id); set_op_device_list(op, tp->levels[op->level]); // The requested delay has been applied for the first fencing level @@ -1025,28 +1028,28 @@ merge_duplicates(remote_fencing_op_t *op) continue; // Don't compare against self } if (other->state > st_exec) { - crm_trace("%.8s not duplicate of %.8s: not in progress", - op->id, other->id); + pcmk__trace("%.8s not duplicate of %.8s: not in progress", op->id, + other->id); continue; } if (!pcmk__str_eq(op->target, other->target, pcmk__str_casei)) { - crm_trace("%.8s not duplicate of %.8s: node %s vs. %s", - op->id, other->id, op->target, other->target); + pcmk__trace("%.8s not duplicate of %.8s: node %s vs. %s", op->id, + other->id, op->target, other->target); continue; } if (!pcmk__str_eq(op->action, other_action, pcmk__str_none)) { - crm_trace("%.8s not duplicate of %.8s: action %s vs. %s", - op->id, other->id, op->action, other_action); + pcmk__trace("%.8s not duplicate of %.8s: action %s vs. %s", op->id, + other->id, op->action, other_action); continue; } if (pcmk__str_eq(op->client_name, other->client_name, pcmk__str_casei)) { - crm_trace("%.8s not duplicate of %.8s: same client %s", - op->id, other->id, op->client_name); + pcmk__trace("%.8s not duplicate of %.8s: same client %s", op->id, + other->id, op->client_name); continue; } if (pcmk__str_eq(other->target, other->originator, pcmk__str_casei)) { - crm_trace("%.8s not duplicate of %.8s: self-fencing for %s", - op->id, other->id, other->target); + pcmk__trace("%.8s not duplicate of %.8s: self-fencing for %s", + op->id, other->id, other->target); continue; } @@ -1058,16 +1061,16 @@ merge_duplicates(remote_fencing_op_t *op) "client %s@%s: Originator is dead " QB_XS " id=%.8s", other->action, other->target, other->client_name, other->originator, other->id); - crm_trace("%.8s not duplicate of %.8s: originator dead", - op->id, other->id); + pcmk__trace("%.8s not duplicate of %.8s: originator dead", op->id, + other->id); other->state = st_failed; continue; } if ((other->total_timeout > 0) && (now > (other->total_timeout + other->created))) { - crm_trace("%.8s not duplicate of %.8s: old (%lld vs. %lld + %ds)", - op->id, other->id, (long long)now, (long long)other->created, - other->total_timeout); + pcmk__trace("%.8s not duplicate of %.8s: old (%lld vs. %lld + %ds)", + op->id, other->id, (long long) now, + (long long) other->created, other->total_timeout); continue; } @@ -1078,8 +1081,8 @@ merge_duplicates(remote_fencing_op_t *op) if (other->total_timeout == 0) { other->total_timeout = op->total_timeout = TIMEOUT_MULTIPLY_FACTOR * get_op_total_timeout(op, NULL); - crm_trace("Best guess as to timeout used for %.8s: %ds", - other->id, other->total_timeout); + pcmk__trace("Best guess as to timeout used for %.8s: %ds", + other->id, other->total_timeout); } pcmk__notice("Merging fencing action '%s' targeting %s originating " "from client %s with identical request from %s@%s " @@ -1246,12 +1249,12 @@ create_remote_stonith_op(const char *client, xmlNode *request, gboolean peer) pcmk__xe_get_int(request, PCMK__XA_ST_CALLID, &(op->client_callid)); - crm_trace("%s new fencing op %s ('%s' targeting %s for client %s, " - "base timeout %ds, %u %s expected)", - (peer && dev)? "Recorded" : "Generated", op->id, op->action, - op->target, op->client_name, op->base_timeout, - op->replies_expected, - pcmk__plural_alt(op->replies_expected, "reply", "replies")); + pcmk__trace("%s new fencing op %s ('%s' targeting %s for client %s, base " + "timeout %ds, %u %s expected)", + ((peer && (dev != NULL))? "Recorded" : "Generated"), op->id, + op->action, op->target, op->client_name, op->base_timeout, + op->replies_expected, + pcmk__plural_alt(op->replies_expected, "reply", "replies")); if (op->call_options & st_opt_cs_nodeid) { int nodeid; @@ -1413,9 +1416,10 @@ find_best_peer(const char *device, remote_fencing_op_t * op, enum find_best_peer for (iter = op->query_results; iter != NULL; iter = iter->next) { peer_device_info_t *peer = iter->data; - crm_trace("Testing result from %s targeting %s with %d device%s: %d %x", - peer->host, op->target, peer->ndevices, - pcmk__plural_s(peer->ndevices), peer->tried, options); + pcmk__trace("Testing result from %s targeting %s with %d device%s: %d " + "%x", + peer->host, op->target, peer->ndevices, + pcmk__plural_s(peer->ndevices), peer->tried, options); if ((options & FIND_PEER_SKIP_TARGET) && pcmk__str_eq(peer->host, op->target, pcmk__str_casei)) { continue; } @@ -1432,7 +1436,7 @@ find_best_peer(const char *device, remote_fencing_op_t * op, enum find_best_peer && count_peer_devices(op, peer, verified_devices_only, fenced_support_flag(op->action))) { /* No topology: Use the current best peer */ - crm_trace("Simple fencing"); + pcmk__trace("Simple fencing"); return peer; } } @@ -1450,29 +1454,32 @@ stonith_choose_peer(remote_fencing_op_t * op) do { if (op->devices) { device = op->devices->data; - crm_trace("Checking for someone to fence (%s) %s using %s", - op->action, op->target, device); + pcmk__trace("Checking for someone to fence (%s) %s using %s", + op->action, op->target, device); } else { - crm_trace("Checking for someone to fence (%s) %s", - op->action, op->target); + pcmk__trace("Checking for someone to fence (%s) %s", op->action, + op->target); } /* Best choice is a peer other than the target with verified access */ peer = find_best_peer(device, op, FIND_PEER_SKIP_TARGET|FIND_PEER_VERIFIED_ONLY); if (peer) { - crm_trace("Found verified peer %s for %s", peer->host, device?device:""); + pcmk__trace("Found verified peer %s for %s", peer->host, + pcmk__s(device, "")); return peer; } if(op->query_timer != 0 && op->replies < QB_MIN(op->replies_expected, active)) { - crm_trace("Waiting before looking for unverified devices to fence %s", op->target); + pcmk__trace("Waiting before looking for unverified devices to " + "fence %s", + op->target); return NULL; } /* If no other peer has verified access, next best is unverified access */ peer = find_best_peer(device, op, FIND_PEER_SKIP_TARGET); if (peer) { - crm_trace("Found best unverified peer %s", peer->host); + pcmk__trace("Found best unverified peer %s", peer->host); return peer; } @@ -1482,7 +1489,7 @@ stonith_choose_peer(remote_fencing_op_t * op) if (op->phase != st_phase_on) { peer = find_best_peer(device, op, FIND_PEER_TARGET_ONLY); if (peer) { - crm_trace("%s will fence itself", peer->host); + pcmk__trace("%s will fence itself", peer->host); return peer; } } @@ -1737,7 +1744,7 @@ report_timeout_period(remote_fencing_op_t * op, int op_timeout) return; } - crm_trace("Reporting timeout for %s (id=%.8s)", op->client_name, op->id); + pcmk__trace("Reporting timeout for %s (id=%.8s)", op->client_name, op->id); client_node = pcmk__xe_get(op->request, PCMK__XA_ST_CLIENTNODE); call_id = pcmk__xe_get(op->request, PCMK__XA_ST_CALLID); client_id = pcmk__xe_get(op->request, PCMK__XA_ST_CLIENTID); @@ -1767,8 +1774,8 @@ report_timeout_period(remote_fencing_op_t * op, int op_timeout) for (iter = op->duplicates; iter != NULL; iter = iter->next) { remote_fencing_op_t *dup = iter->data; - crm_trace("Reporting timeout for duplicate %.8s to client %s", - dup->id, dup->client_name); + pcmk__trace("Reporting timeout for duplicate %.8s to client %s", + dup->id, dup->client_name); report_timeout_period(iter->data, op_timeout); } } @@ -1817,8 +1824,8 @@ advance_topology_device_in_level(remote_fencing_op_t *op, const char *device, if (op->devices) { /* Necessary devices remain, so execute the next one */ - crm_trace("Next targeting %s on behalf of %s@%s", - op->target, op->client_name, op->originator); + pcmk__trace("Next targeting %s on behalf of %s@%s", op->target, + op->client_name, op->originator); // The requested delay has been applied for the first device if (op->client_delay > 0) { @@ -1828,8 +1835,8 @@ advance_topology_device_in_level(remote_fencing_op_t *op, const char *device, request_peer_fencing(op, NULL); } else { /* We're done with all devices and phases, so finalize operation */ - crm_trace("Marking complex fencing op targeting %s as complete", - op->target); + pcmk__trace("Marking complex fencing op targeting %s as complete", + op->target); op->state = st_done; finalize_op(op, msg, false); } @@ -1876,9 +1883,8 @@ request_peer_fencing(remote_fencing_op_t *op, peer_device_info_t *peer) CRM_CHECK(op != NULL, return); - crm_trace("Action %.8s targeting %s for %s is %s", - op->id, op->target, op->client_name, - stonith_op_state_str(op->state)); + pcmk__trace("Action %.8s targeting %s for %s is %s", op->id, op->target, + op->client_name, stonith_op_state_str(op->state)); if ((op->phase == st_phase_on) && (op->devices != NULL)) { /* We are in the "on" phase of a remapped topology reboot. If this @@ -2190,22 +2196,23 @@ parse_action_specific(const xmlNode *xml, const char *peer, const char *device, pcmk__xe_get_int(xml, PCMK__XA_ST_ACTION_TIMEOUT, &props->custom_action_timeout[phase]); if (props->custom_action_timeout[phase]) { - crm_trace("Peer %s with device %s returned %s action timeout %ds", - peer, device, action, props->custom_action_timeout[phase]); + pcmk__trace("Peer %s with device %s returned %s action timeout %ds", + peer, device, action, props->custom_action_timeout[phase]); } props->delay_max[phase] = 0; pcmk__xe_get_int(xml, PCMK__XA_ST_DELAY_MAX, &props->delay_max[phase]); if (props->delay_max[phase]) { - crm_trace("Peer %s with device %s returned maximum of random delay %ds for %s", - peer, device, props->delay_max[phase], action); + pcmk__trace("Peer %s with device %s returned maximum of random delay " + "%ds for %s", + peer, device, props->delay_max[phase], action); } props->delay_base[phase] = 0; pcmk__xe_get_int(xml, PCMK__XA_ST_DELAY_BASE, &props->delay_base[phase]); if (props->delay_base[phase]) { - crm_trace("Peer %s with device %s returned base delay %ds for %s", - peer, device, props->delay_base[phase], action); + pcmk__trace("Peer %s with device %s returned base delay %ds for %s", + peer, device, props->delay_base[phase], action); } /* Handle devices with automatic unfencing */ @@ -2214,8 +2221,8 @@ parse_action_specific(const xmlNode *xml, const char *peer, const char *device, pcmk__xe_get_int(xml, PCMK__XA_ST_REQUIRED, &required); if (required) { - crm_trace("Peer %s requires device %s to execute for action %s", - peer, device, action); + pcmk__trace("Peer %s requires device %s to execute for action %s", + peer, device, action); add_required_device(op, device); } } @@ -2225,8 +2232,8 @@ parse_action_specific(const xmlNode *xml, const char *peer, const char *device, */ if (pcmk__xe_attr_is_true(xml, PCMK__XA_ST_ACTION_DISALLOWED)) { props->disallowed[phase] = TRUE; - crm_trace("Peer %s is disallowed from executing %s for device %s", - peer, action, device); + pcmk__trace("Peer %s is disallowed from executing %s for device %s", + peer, action, device); } } @@ -2255,8 +2262,8 @@ add_device_properties(const xmlNode *xml, remote_fencing_op_t *op, /* Peers with verified (monitored) access will be preferred */ pcmk__xe_get_int(xml, PCMK__XA_ST_MONITOR_VERIFIED, &verified); if (verified) { - crm_trace("Peer %s has confirmed a verified device %s", - peer->host, device); + pcmk__trace("Peer %s has confirmed a verified device %s", peer->host, + device); props->verified = TRUE; } @@ -2404,7 +2411,7 @@ process_remote_stonith_query(xmlNode *msg) * query results. */ if (op->state == st_query && all_topology_devices_found(op)) { /* All the query results are in for the topology, start the fencing ops. */ - crm_trace("All topology devices found"); + pcmk__trace("All topology devices found"); request_peer_fencing(op, peer); } else if (have_all_replies) { @@ -2422,8 +2429,8 @@ process_remote_stonith_query(xmlNode *msg) * go ahead and start fencing before query timeout */ if ((peer != NULL) && !host_is_target && nverified) { /* we have a verified device living on a peer that is not the target */ - crm_trace("Found %d verified device%s", - nverified, pcmk__plural_s(nverified)); + pcmk__trace("Found %d verified device%s", nverified, + pcmk__plural_s(nverified)); request_peer_fencing(op, peer); } else if (have_all_replies) { @@ -2433,7 +2440,8 @@ process_remote_stonith_query(xmlNode *msg) request_peer_fencing(op, NULL); } else { - crm_trace("Waiting for more peer results before launching fencing operation"); + pcmk__trace("Waiting for more peer results before launching " + "fencing operation"); } } else if ((peer != NULL) && (op->state == st_done)) { @@ -2597,9 +2605,9 @@ fenced_process_fencing_reply(xmlNode *msg) } /* Retry on failure */ - crm_trace("Next for %s on behalf of %s@%s (result was: %s)", - op->target, op->originator, op->client_name, - pcmk_exec_status_str(op->result.execution_status)); + pcmk__trace("Next for %s on behalf of %s@%s (result was: %s)", op->target, + op->originator, op->client_name, + pcmk_exec_status_str(op->result.execution_status)); request_peer_fencing(op, NULL); } diff --git a/daemons/fenced/pacemaker-fenced.c b/daemons/fenced/pacemaker-fenced.c index cb2d918fff0..c6abe3964f6 100644 --- a/daemons/fenced/pacemaker-fenced.c +++ b/daemons/fenced/pacemaker-fenced.c @@ -134,8 +134,9 @@ st_ipc_dispatch(qb_ipcs_connection_t * qbc, void *data, size_t size) pcmk_rc_str(rc)); } - crm_trace("Flags %#08" PRIx32 "/%#08x for command %" PRIu32 - " from client %s", flags, call_options, id, pcmk__client_name(c)); + pcmk__trace("Flags %#08" PRIx32 "/%#08x for command %" PRIu32 + " from client %s", + flags, call_options, id, pcmk__client_name(c)); if (pcmk__is_set(call_options, st_opt_sync_call)) { pcmk__assert(pcmk__is_set(flags, crm_ipc_client_response)); @@ -164,7 +165,7 @@ st_ipc_closed(qb_ipcs_connection_t * c) return 0; } - crm_trace("Connection %p closed", c); + pcmk__trace("Connection %p closed", c); pcmk__free_client(client); /* 0 means: yes, go ahead and destroy the connection */ @@ -174,7 +175,7 @@ st_ipc_closed(qb_ipcs_connection_t * c) static void st_ipc_destroy(qb_ipcs_connection_t * c) { - crm_trace("Connection %p destroyed", c); + pcmk__trace("Connection %p destroyed", c); st_ipc_closed(c); } @@ -244,8 +245,8 @@ do_local_reply(const xmlNode *notify_src, pcmk__client_t *client, local_rc = pcmk__ipc_send_xml(client, rid, notify_src, ipc_flags); if (local_rc == pcmk_rc_ok) { - crm_trace("Sent response %d to client %s", - rid, pcmk__client_name(client)); + pcmk__trace("Sent response %d to client %s", rid, + pcmk__client_name(client)); } else { pcmk__warn("%synchronous reply to client %s failed: %s", (pcmk__is_set(call_options, st_opt_sync_call)? "S" : "As"), @@ -292,7 +293,7 @@ stonith_notify_client(gpointer key, gpointer value, gpointer user_data) CRM_CHECK(type != NULL, crm_log_xml_err(update_msg, "notify"); return); if (client->ipcs == NULL) { - crm_trace("Skipping client with NULL channel"); + pcmk__trace("Skipping client with NULL channel"); return; } @@ -306,8 +307,8 @@ stonith_notify_client(gpointer key, gpointer value, gpointer user_data) type, pcmk__client_name(client), pcmk_rc_str(rc), client->id, rc); } else { - crm_trace("Sent %s notification to client %s", - type, pcmk__client_name(client)); + pcmk__trace("Sent %s notification to client %s", type, + pcmk__client_name(client)); } } } @@ -332,7 +333,8 @@ do_stonith_async_timeout_update(const char *client_id, const char *call_id, int pcmk__xe_set(notify_data, PCMK__XA_ST_CALLID, call_id); pcmk__xe_set_int(notify_data, PCMK__XA_ST_TIMEOUT, timeout); - crm_trace("timeout update is %d for client %s and call id %s", timeout, client_id, call_id); + pcmk__trace("timeout update is %d for client %s and call id %s", timeout, + client_id, call_id); if (client) { pcmk__ipc_send_xml(client, 0, notify_data, crm_ipc_server_event); @@ -369,10 +371,10 @@ fenced_send_notification(const char *type, const pcmk__action_result_t *result, pcmk__xml_copy(wrapper, data); } - crm_trace("Notifying clients"); + pcmk__trace("Notifying clients"); pcmk__foreach_ipc_client(stonith_notify_client, update_msg); pcmk__xml_free(update_msg); - crm_trace("Notify complete"); + pcmk__trace("Notify complete"); } /*! diff --git a/daemons/pacemakerd/pacemakerd.c b/daemons/pacemakerd/pacemakerd.c index f2cb58cc626..0bff3b5b50b 100644 --- a/daemons/pacemakerd/pacemakerd.c +++ b/daemons/pacemakerd/pacemakerd.c @@ -222,10 +222,10 @@ remove_core_file_limit(void) } if (cores.rlim_cur == RLIM_INFINITY) { - crm_trace("Core file size is unlimited"); + pcmk__trace("Core file size is unlimited"); } else { - crm_trace("Core file size is limited to %llu bytes", - (unsigned long long) cores.rlim_cur); + pcmk__trace("Core file size is limited to %llu bytes", + (unsigned long long) cores.rlim_cur); } } @@ -463,7 +463,7 @@ main(int argc, char **argv) g_main_loop_run(mainloop); if (ipcs) { - crm_trace("Closing IPC server"); + pcmk__trace("Closing IPC server"); mainloop_del_ipc_server(ipcs); ipcs = NULL; } diff --git a/daemons/pacemakerd/pcmkd_corosync.c b/daemons/pacemakerd/pcmkd_corosync.c index acd9f69ff19..e6d4af54aaa 100644 --- a/daemons/pacemakerd/pcmkd_corosync.c +++ b/daemons/pacemakerd/pcmkd_corosync.c @@ -268,10 +268,11 @@ get_config_opt(uint64_t unused, cmap_handle_t object_handle, const char *key, ch cs_repeat(retries, 5, rc = cmap_get_string(object_handle, key, value)); if (rc != CS_OK) { - crm_trace("Search for %s failed %d, defaulting to %s", key, rc, fallback); + pcmk__trace("Search for %s failed %d, defaulting to %s", key, rc, + fallback); pcmk__str_update(value, fallback); } - crm_trace("%s: %s", key, *value); + pcmk__trace("%s: %s", key, *value); return rc; } diff --git a/daemons/pacemakerd/pcmkd_messages.c b/daemons/pacemakerd/pcmkd_messages.c index 34a2efba471..fa31e51b729 100644 --- a/daemons/pacemakerd/pcmkd_messages.c +++ b/daemons/pacemakerd/pcmkd_messages.c @@ -25,9 +25,9 @@ static GHashTable *pcmkd_handlers = NULL; static xmlNode * handle_node_cache_request(pcmk__request_t *request) { - crm_trace("Ignoring request from client %s to purge node " - "because peer cache is not used", - pcmk__client_name(request->ipc_client)); + pcmk__trace("Ignoring request from client %s to purge node because peer " + "cache is not used", + pcmk__client_name(request->ipc_client)); pcmk__ipc_send_ack(request->ipc_client, request->ipc_id, request->ipc_flags, PCMK__XE_ACK, NULL, CRM_EX_OK); @@ -45,10 +45,10 @@ handle_ping_request(pcmk__request_t *request) const char *from = pcmk__xe_get(msg, PCMK__XA_CRM_SYS_FROM); /* Pinged for status */ - crm_trace("Pinged from " PCMK__XA_CRM_SYS_FROM "='%s' " - PCMK_XA_ORIGIN "='%s'", - pcmk__s(from, ""), - pcmk__s(pcmk__xe_get(msg, PCMK_XA_ORIGIN), "")); + pcmk__trace("Pinged from " PCMK__XA_CRM_SYS_FROM "='%s' " + PCMK_XA_ORIGIN "='%s'", + pcmk__s(from, ""), + pcmk__s(pcmk__xe_get(msg, PCMK_XA_ORIGIN), "")); pcmk__ipc_send_ack(request->ipc_client, request->ipc_id, request->ipc_flags, PCMK__XE_ACK, NULL, CRM_EX_INDETERMINATE); @@ -170,7 +170,7 @@ pcmkd_register_handlers(void) static int32_t pcmk_ipc_accept(qb_ipcs_connection_t * c, uid_t uid, gid_t gid) { - crm_trace("Connection %p", c); + pcmk__trace("Connection %p", c); if (pcmk__new_client(c, uid, gid) == NULL) { return -ENOMEM; } @@ -186,7 +186,7 @@ pcmk_ipc_closed(qb_ipcs_connection_t * c) if (client == NULL) { return 0; } - crm_trace("Connection %p", c); + pcmk__trace("Connection %p", c); if (shutdown_complete_state_reported_to == client->pid) { shutdown_complete_state_reported_client_closed = TRUE; if (shutdown_trigger) { @@ -200,7 +200,7 @@ pcmk_ipc_closed(qb_ipcs_connection_t * c) static void pcmk_ipc_destroy(qb_ipcs_connection_t * c) { - crm_trace("Connection %p", c); + pcmk__trace("Connection %p", c); pcmk_ipc_closed(c); } diff --git a/daemons/pacemakerd/pcmkd_subdaemons.c b/daemons/pacemakerd/pcmkd_subdaemons.c index 11395c80ae9..4a2dc52a20e 100644 --- a/daemons/pacemakerd/pcmkd_subdaemons.c +++ b/daemons/pacemakerd/pcmkd_subdaemons.c @@ -139,8 +139,8 @@ check_next_subdaemon(gpointer user_data) const long long pid = PCMK__SPECIAL_PID_AS_0(child->pid); int rc = child_liveness(child); - crm_trace("Checked subdaemon %s[%lld]: %s (%d)", - name, pid, pcmk_rc_str(rc), rc); + pcmk__trace("Checked subdaemon %s[%lld]: %s (%d)", name, pid, + pcmk_rc_str(rc), rc); switch (rc) { case pcmk_rc_ok: @@ -191,7 +191,7 @@ check_next_subdaemon(gpointer user_data) } } if (!pcmk__is_set(child->flags, child_active_before_startup)) { - crm_trace("Subdaemon %s[%lld] terminated", name, pid); + pcmk__trace("Subdaemon %s[%lld] terminated", name, pid); break; } if (pcmk__is_set(child->flags, child_respawn)) { @@ -888,7 +888,7 @@ stop_child(pcmkd_child_t *child, int signal) } if (child->pid <= 0) { - crm_trace("Nothing to do to stop subdaemon %s: Not running", name); + pcmk__trace("Nothing to do to stop subdaemon %s: Not running", name); return TRUE; } diff --git a/daemons/schedulerd/pacemaker-schedulerd.c b/daemons/schedulerd/pacemaker-schedulerd.c index 07684e5e1f6..133e3d7f0d5 100644 --- a/daemons/schedulerd/pacemaker-schedulerd.c +++ b/daemons/schedulerd/pacemaker-schedulerd.c @@ -184,7 +184,7 @@ void pengine_shutdown(int nsig) { if (ipcs != NULL) { - crm_trace("Closing IPC server"); + pcmk__trace("Closing IPC server"); mainloop_del_ipc_server(ipcs); ipcs = NULL; } diff --git a/daemons/schedulerd/schedulerd_messages.c b/daemons/schedulerd/schedulerd_messages.c index 93bb647ffc5..af19ed189ae 100644 --- a/daemons/schedulerd/schedulerd_messages.c +++ b/daemons/schedulerd/schedulerd_messages.c @@ -124,8 +124,8 @@ handle_pecalc_request(pcmk__request_t *request) // @TODO maybe handle errors better ... seq = 0U; } - crm_trace("Series %s: wrap=%d, seq=%u, pref=%s", - series[series_id].name, series_wrap, seq, value); + pcmk__trace("Series %s: wrap=%d, seq=%u, pref=%s", series[series_id].name, + series_wrap, seq, value); reply = pcmk__new_reply(msg, scheduler->priv->graph); @@ -191,7 +191,8 @@ handle_hello_request(pcmk__request_t *request) pcmk__ipc_send_ack(request->ipc_client, request->ipc_id, request->ipc_flags, PCMK__XE_ACK, NULL, CRM_EX_INDETERMINATE); - crm_trace("Received IPC hello from %s", pcmk__client_name(request->ipc_client)); + pcmk__trace("Received IPC hello from %s", + pcmk__client_name(request->ipc_client)); pcmk__set_result(&request->result, CRM_EX_OK, PCMK_EXEC_DONE, NULL); return NULL; @@ -212,7 +213,7 @@ schedulerd_register_handlers(void) static int32_t pe_ipc_accept(qb_ipcs_connection_t * c, uid_t uid, gid_t gid) { - crm_trace("Connection %p", c); + pcmk__trace("Connection %p", c); if (pcmk__new_client(c, uid, gid) == NULL) { return -ENOMEM; } @@ -317,7 +318,7 @@ pe_ipc_closed(qb_ipcs_connection_t * c) if (client == NULL) { return 0; } - crm_trace("Connection %p", c); + pcmk__trace("Connection %p", c); pcmk__free_client(client); return 0; } @@ -325,7 +326,7 @@ pe_ipc_closed(qb_ipcs_connection_t * c) static void pe_ipc_destroy(qb_ipcs_connection_t * c) { - crm_trace("Connection %p", c); + pcmk__trace("Connection %p", c); pe_ipc_closed(c); } diff --git a/include/crm/common/logging_internal.h b/include/crm/common/logging_internal.h index b706713e2c5..7ef956d1dae 100644 --- a/include/crm/common/logging_internal.h +++ b/include/crm/common/logging_internal.h @@ -127,6 +127,15 @@ extern "C" { */ #define pcmk__debug(fmt, args...) do_crm_log_unlikely(LOG_DEBUG, fmt, ##args) +/*! + * \internal + * \brief Log a message at \c PCMK__LOG_TRACE level + * + * \param[in] fmt \c printf() format string for log message + * \param[in] args Format string arguments + */ +#define pcmk__trace(fmt, args...) do_crm_log_unlikely(LOG_TRACE, fmt, ##args) + /* Some warnings are too noisy when logged every time a given function is called * (for example, using a deprecated feature). As an alternative, we allow * warnings to be logged once per invocation of the calling program. Each of diff --git a/lib/cib/cib_attrs.c b/lib/cib/cib_attrs.c index df2ba0a422a..98bf954485e 100644 --- a/lib/cib/cib_attrs.c +++ b/lib/cib/cib_attrs.c @@ -137,10 +137,10 @@ find_attr(cib_t *cib, const char *section, const char *node_uuid, rc = pcmk_legacy2rc(rc); if (rc != pcmk_rc_ok) { - crm_trace("Query failed for attribute %s (section=%s, node=%s, set=%s, xpath=%s): %s", - attr_name, section, pcmk__s(node_uuid, ""), - pcmk__s(set_name, ""), (const char *) xpath->str, - pcmk_rc_str(rc)); + pcmk__trace("Query failed for attribute %s (section=%s, node=%s, " + "set=%s, xpath=%s): %s", + attr_name, section, pcmk__s(node_uuid, ""), + pcmk__s(set_name, ""), xpath->str, pcmk_rc_str(rc)); } else { crm_log_xml_debug(xml_search, "Match"); } @@ -203,7 +203,7 @@ cib__update_node_attr(pcmk__output_t *out, cib_t *cib, int call_options, const c } else { pcmk__xml_free(xml_search); - crm_trace("%s does not exist, create it", attr_name); + pcmk__trace("%s does not exist, create it", attr_name); if (pcmk__str_eq(section, PCMK_XE_TICKETS, pcmk__str_casei)) { node_uuid = NULL; section = PCMK_XE_STATUS; @@ -280,7 +280,7 @@ cib__update_node_attr(pcmk__output_t *out, cib_t *cib, int call_options, const c attr_name = attr_id; } - crm_trace("Creating %s/%s", section, tag); + pcmk__trace("Creating %s/%s", section, tag); if (tag != NULL) { xml_obj = pcmk__xe_create(xml_obj, tag); pcmk__xe_set(xml_obj, PCMK_XA_ID, node_uuid); @@ -361,10 +361,11 @@ cib__get_node_attrs(pcmk__output_t *out, cib_t *cib, const char *section, user_name, result); if (rc != pcmk_rc_ok) { - crm_trace("Query failed for attribute %s (section=%s node=%s set=%s): %s", - pcmk__s(attr_name, "with unspecified name"), - section, pcmk__s(set_name, ""), - pcmk__s(node_uuid, ""), pcmk_rc_str(rc)); + pcmk__trace("Query failed for attribute %s (section=%s node=%s " + "set=%s): %s", + pcmk__s(attr_name, "with unspecified name"), section, + pcmk__s(set_name, ""), pcmk__s(node_uuid, ""), + pcmk_rc_str(rc)); } return rc; diff --git a/lib/cib/cib_client.c b/lib/cib/cib_client.c index 008199b3e6f..5310ffa1745 100644 --- a/lib/cib/cib_client.c +++ b/lib/cib/cib_client.c @@ -39,12 +39,12 @@ ciblib_GCompareFunc(gconstpointer a, gconstpointer b) if (a_client->callback == b_client->callback) { return 0; } else if (((long)a_client->callback) < ((long)b_client->callback)) { - crm_trace("callbacks for %s are not equal: %p < %p", - a_client->event, a_client->callback, b_client->callback); + pcmk__trace("callbacks for %s are not equal: %p < %p", + a_client->event, a_client->callback, b_client->callback); return -1; } - crm_trace("callbacks for %s are not equal: %p > %p", - a_client->event, a_client->callback, b_client->callback); + pcmk__trace("callbacks for %s are not equal: %p > %p", a_client->event, + a_client->callback, b_client->callback); return 1; } return rc; @@ -62,8 +62,8 @@ cib_client_add_notify_callback(cib_t * cib, const char *event, return -EPROTONOSUPPORT; } - crm_trace("Adding callback for %s events (%d)", - event, g_list_length(cib->notify_list)); + pcmk__trace("Adding callback for %s events (%u)", event, + g_list_length(cib->notify_list)); new_client = pcmk__assert_alloc(1, sizeof(cib_notify_client_t)); new_client->event = event; @@ -82,7 +82,7 @@ cib_client_add_notify_callback(cib_t * cib, const char *event, cib->cmds->register_notification(cib, event, 1); - crm_trace("Callback added (%d)", g_list_length(cib->notify_list)); + pcmk__trace("Callback added (%d)", g_list_length(cib->notify_list)); } return pcmk_ok; } @@ -100,7 +100,7 @@ get_notify_list_event_count(cib_t *cib, const char *event) count++; } } - crm_trace("event(%s) count : %d", event, count); + pcmk__trace("event(%s) count : %d", event, count); return count; } @@ -135,10 +135,10 @@ cib_client_del_notify_callback(cib_t *cib, const char *event, cib->notify_list = g_list_remove(cib->notify_list, list_client); free(list_client); - crm_trace("Removed callback"); + pcmk__trace("Removed callback"); } else { - crm_trace("Callback not present"); + pcmk__trace("Callback not present"); } if (get_notify_list_event_count(cib, event) == 0) { @@ -206,7 +206,7 @@ cib_client_register_callback_full(cib_t *cib, int call_id, int timeout, async_timer); } - crm_trace("Adding callback %s for call %d", callback_name, call_id); + pcmk__trace("Adding callback %s for call %d", callback_name, call_id); pcmk__intkey_table_insert(cib_op_callback_table, call_id, blob); return TRUE; @@ -383,9 +383,9 @@ cib_client_end_transaction(cib_t *cib, bool commit, int call_options) } else { // Discard always succeeds if (cib->transaction != NULL) { - crm_trace("Discarded transaction for CIB client %s", client_id); + pcmk__trace("Discarded transaction for CIB client %s", client_id); } else { - crm_trace("No transaction found for CIB client %s", client_id); + pcmk__trace("No transaction found for CIB client %s", client_id); } } pcmk__xml_free(cib->transaction); diff --git a/lib/cib/cib_file.c b/lib/cib/cib_file.c index 47f35485bd0..e31f928a3d2 100644 --- a/lib/cib/cib_file.c +++ b/lib/cib/cib_file.c @@ -681,7 +681,7 @@ cib_file_new(const char *cib_location) private->flags = 0; if (cib_file_is_live(cib_location)) { cib_set_file_flags(private, cib_file_flag_live); - crm_trace("File %s detected as live CIB", cib_location); + pcmk__trace("File %s detected as live CIB", cib_location); } /* assign variant specific ops */ @@ -944,7 +944,7 @@ cib_file_write_with_digest(xmlNode *cib_root, const char *cib_dirname, char *tmp_digest = pcmk__assert_asprintf("%s/cib.XXXXXX", cib_dirname); /* Ensure the admin didn't modify the existing CIB underneath us */ - crm_trace("Reading cluster configuration file %s", cib_path); + pcmk__trace("Reading cluster configuration file %s", cib_path); rc = cib_file_read_and_verify(cib_path, NULL, NULL); if ((rc != pcmk_ok) && (rc != -ENOENT)) { pcmk__err("%s was manually modified while the cluster was active!", @@ -1088,9 +1088,9 @@ cib_file_process_transaction_requests(cib_t *cib, xmlNode *transaction) return rc; } - crm_trace("Applied %s request to transaction working CIB for CIB file " - "client (%s) on file '%s'", - op, private->id, private->filename); + pcmk__trace("Applied %s request to transaction working CIB for CIB " + "file client (%s) on file '%s'", + op, private->id, private->filename); crm_log_xml_trace(request, "Successful request"); } @@ -1132,18 +1132,18 @@ cib_file_commit_transaction(cib_t *cib, xmlNode *transaction, CRM_CHECK((*result_cib != NULL) && (*result_cib != private->cib_xml), *result_cib = pcmk__xml_copy(NULL, private->cib_xml)); - crm_trace("Committing transaction for CIB file client (%s) on file '%s' to " - "working CIB", - private->id, private->filename); + pcmk__trace("Committing transaction for CIB file client (%s) on file '%s' " + "to working CIB", + private->id, private->filename); // Apply all changes to a working copy of the CIB private->cib_xml = *result_cib; rc = cib_file_process_transaction_requests(cib, transaction); - crm_trace("Transaction commit %s for CIB file client (%s) on file '%s'", - ((rc == pcmk_rc_ok)? "succeeded" : "failed"), - private->id, private->filename); + pcmk__trace("Transaction commit %s for CIB file client (%s) on file '%s'", + ((rc == pcmk_rc_ok)? "succeeded" : "failed"), + private->id, private->filename); /* Some request types (for example, erase) may have freed private->cib_xml * (the working copy) and pointed it at a new XML object. In that case, it diff --git a/lib/cib/cib_native.c b/lib/cib/cib_native.c index a375006ca2d..f5733034103 100644 --- a/lib/cib/cib_native.c +++ b/lib/cib/cib_native.c @@ -76,7 +76,8 @@ cib_native_perform_op_delegate(cib_t *cib, const char *op, const char *host, goto done; } - crm_trace("Sending %s message to the CIB manager (timeout=%ds)", op, cib->call_timeout); + pcmk__trace("Sending %s message to the CIB manager (timeout=%ds)", op, + cib->call_timeout); rc = crm_ipc_send(native->ipc, op_msg, ipc_flags, cib->call_timeout * 1000, &op_reply); if (rc < 0) { @@ -89,7 +90,7 @@ cib_native_perform_op_delegate(cib_t *cib, const char *op, const char *host, crm_log_xml_trace(op_reply, "Reply"); if (!(call_options & cib_sync_call)) { - crm_trace("Async call, returning %d", cib->call_id); + pcmk__trace("Async call, returning %d", cib->call_id); CRM_CHECK(cib->call_id != 0, rc = -ENOMSG; goto done); rc = cib->call_id; @@ -103,13 +104,13 @@ cib_native_perform_op_delegate(cib_t *cib, const char *op, const char *host, NULL, NULL); xmlNode *tmp = pcmk__xe_first_child(wrapper, NULL, NULL, NULL); - crm_trace("Synchronous reply %d received", reply_id); + pcmk__trace("Synchronous reply %d received", reply_id); if (pcmk__xe_get_int(op_reply, PCMK__XA_CIB_RC, &rc) != pcmk_rc_ok) { rc = -EPROTO; } if (output_data == NULL || (call_options & cib_discard_reply)) { - crm_trace("Discarding reply"); + pcmk__trace("Discarding reply"); } else { *output_data = pcmk__xml_copy(NULL, tmp); } @@ -179,7 +180,7 @@ cib_native_dispatch_internal(const char *buffer, ssize_t length, cib_t *cib = userdata; - crm_trace("dispatching %p", userdata); + pcmk__trace("dispatching %p", userdata); if (cib == NULL) { pcmk__err("No CIB!"); @@ -195,7 +196,7 @@ cib_native_dispatch_internal(const char *buffer, ssize_t length, /* do callbacks */ type = pcmk__xe_get(msg, PCMK__XA_T); - crm_trace("Activating %s callbacks...", type); + pcmk__trace("Activating %s callbacks...", type); crm_log_xml_explicit(msg, "cib-reply"); if (pcmk__str_eq(type, PCMK__VALUE_CIB, pcmk__str_none)) { @@ -218,7 +219,7 @@ cib_native_destroy(void *userdata) cib_t *cib = userdata; cib_native_opaque_t *native = cib->variant_opaque; - crm_trace("destroying %p", userdata); + pcmk__trace("destroying %p", userdata); cib->state = cib_disconnected; native->source = NULL; native->ipc = NULL; @@ -295,7 +296,7 @@ cib_native_signon(cib_t *cib, const char *name, enum cib_conn_type type) return -ENOTCONN; } - crm_trace("Connecting %s channel", channel); + pcmk__trace("Connecting %s channel", channel); native->source = mainloop_add_ipc_client(channel, G_PRIORITY_HIGH, 512 * 1024, cib, &cib_callbacks); @@ -387,7 +388,7 @@ cib_native_register_notification(cib_t *cib, const char *callback, int enabled) rc = crm_ipc_send(native->ipc, notify_msg, crm_ipc_client_response, 1000 * cib->call_timeout, NULL); if (rc <= 0) { - crm_trace("Notification not registered: %d", rc); + pcmk__trace("Notification not registered: %d", rc); rc = -ECOMM; } } diff --git a/lib/cib/cib_ops.c b/lib/cib/cib_ops.c index 61102b6b3b0..4ae2befc0fe 100644 --- a/lib/cib/cib_ops.c +++ b/lib/cib/cib_ops.c @@ -172,8 +172,8 @@ cib_process_query(const char *op, int options, const char *section, xmlNode * re xmlNode *obj_root = NULL; int result = pcmk_ok; - crm_trace("Processing %s for %s section", - op, pcmk__s(section, "unspecified")); + pcmk__trace("Processing %s for %s section", op, + pcmk__s(section, "unspecified")); if (options & cib_xpath) { return cib_process_xpath(op, options, section, req, input, @@ -228,8 +228,8 @@ update_counter(xmlNode *xml_obj, const char *field, bool reset) new_value = pcmk__str_copy("1"); } - crm_trace("Update %s from %s to %s", - field, pcmk__s(old_value, "unset"), new_value); + pcmk__trace("Update %s from %s to %s", field, pcmk__s(old_value, "unset"), + new_value); pcmk__xe_set(xml_obj, field, new_value); free(new_value); @@ -244,7 +244,7 @@ cib_process_erase(const char *op, int options, const char *section, xmlNode * re { int result = pcmk_ok; - crm_trace("Processing \"%s\" event", op); + pcmk__trace("Processing \"%s\" event", op); if (*result_cib != existing_cib) { pcmk__xml_free(*result_cib); @@ -268,7 +268,7 @@ cib_process_upgrade(const char *op, int options, const char *section, xmlNode * const char *new_schema = NULL; *answer = NULL; - crm_trace("Processing \"%s\" event with max=%s", op, max_schema); + pcmk__trace("Processing \"%s\" event with max=%s", op, max_schema); original_schema = pcmk__xe_get(existing_cib, PCMK_XA_VALIDATE_WITH); rc = pcmk__update_schema(result_cib, max_schema, true, @@ -292,8 +292,8 @@ cib_process_bump(const char *op, int options, const char *section, xmlNode * req { int result = pcmk_ok; - crm_trace("Processing %s for epoch='%s'", op, - pcmk__s(pcmk__xe_get(existing_cib, PCMK_XA_EPOCH), "")); + pcmk__trace("Processing %s for epoch='%s'", op, + pcmk__s(pcmk__xe_get(existing_cib, PCMK_XA_EPOCH), "")); *answer = NULL; update_counter(*result_cib, PCMK_XA_EPOCH, false); @@ -308,8 +308,8 @@ cib_process_replace(const char *op, int options, const char *section, xmlNode * { int result = pcmk_ok; - crm_trace("Processing %s for %s section", - op, pcmk__s(section, "unspecified")); + pcmk__trace("Processing %s for %s section", op, + pcmk__s(section, "unspecified")); if (options & cib_xpath) { return cib_process_xpath(op, options, section, req, input, @@ -358,7 +358,7 @@ cib_process_replace(const char *op, int options, const char *section, xmlNode * free(digest_verify); } else { - crm_trace("No digest to verify"); + pcmk__trace("No digest to verify"); } cib_version_details(existing_cib, &admin_epoch, &epoch, &updates); @@ -406,7 +406,7 @@ cib_process_replace(const char *op, int options, const char *section, xmlNode * result = pcmk__xe_replace_match(obj_root, input); result = pcmk_rc2legacy(result); if (result != pcmk_ok) { - crm_trace("No matching object to replace"); + pcmk__trace("No matching object to replace"); } } @@ -419,8 +419,8 @@ delete_child(xmlNode *child, void *userdata) xmlNode *obj_root = userdata; if (pcmk__xe_delete_match(obj_root, child) != pcmk_rc_ok) { - crm_trace("No matching object to delete: %s=%s", - child->name, pcmk__xe_id(child)); + pcmk__trace("No matching object to delete: %s=%s", child->name, + pcmk__xe_id(child)); } return pcmk_rc_ok; @@ -432,7 +432,7 @@ cib_process_delete(const char *op, int options, const char *section, xmlNode * r { xmlNode *obj_root = NULL; - crm_trace("Processing \"%s\" event", op); + pcmk__trace("Processing \"%s\" event", op); if (options & cib_xpath) { return cib_process_xpath(op, options, section, req, input, @@ -461,7 +461,7 @@ cib_process_modify(const char *op, int options, const char *section, xmlNode * r xmlNode *obj_root = NULL; uint32_t flags = pcmk__xaf_none; - crm_trace("Processing \"%s\" event", op); + pcmk__trace("Processing \"%s\" event", op); if (options & cib_xpath) { return cib_process_xpath(op, options, section, req, input, @@ -530,10 +530,10 @@ add_cib_object(xmlNode * parent, xmlNode * new_obj) } if (object_id != NULL) { - crm_trace("Processing creation of <%s " PCMK_XA_ID "='%s'>", - object_name, object_id); + pcmk__trace("Processing creation of <%s " PCMK_XA_ID "='%s'>", + object_name, object_id); } else { - crm_trace("Processing creation of <%s>", object_name); + pcmk__trace("Processing creation of <%s>", object_name); } /* @COMPAT PCMK__XA_REPLACE is deprecated since 2.1.6. Due to a legacy use @@ -587,8 +587,8 @@ cib_process_create(const char *op, int options, const char *section, xmlNode * r int result = pcmk_ok; xmlNode *update_section = NULL; - crm_trace("Processing %s for %s section", - op, pcmk__s(section, "unspecified")); + pcmk__trace("Processing %s for %s section", op, + pcmk__s(section, "unspecified")); if (pcmk__str_eq(PCMK__XE_ALL, section, pcmk__str_casei)) { section = NULL; @@ -650,15 +650,15 @@ int cib_process_diff(const char *op, int options, const char *section, xmlNode * req, xmlNode * input, xmlNode * existing_cib, xmlNode ** result_cib, xmlNode ** answer) { + const bool force = pcmk__is_set(options, cib_force_diff); const char *originator = NULL; if (req != NULL) { originator = pcmk__xe_get(req, PCMK__XA_SRC); } - crm_trace("Processing \"%s\" event from %s%s", - op, originator, - (pcmk__is_set(options, cib_force_diff)? " (global update)" : "")); + pcmk__trace("Processing \"%s\" event from %s%s", op, originator, + (force? " (global update)" : "")); if (*result_cib != existing_cib) { pcmk__xml_free(*result_cib); @@ -681,7 +681,7 @@ cib_process_xpath(const char *op, int options, const char *section, pcmk__str_none); xmlXPathObject *xpathObj = NULL; - crm_trace("Processing \"%s\" event", op); + pcmk__trace("Processing \"%s\" event", op); if (is_query) { xpathObj = pcmk__xpath_search(existing_cib->doc, section); @@ -804,7 +804,7 @@ cib_process_xpath(const char *op, int options, const char *section, path = new_path; parent = parent->parent; } - crm_trace("Got: %s", path); + pcmk__trace("Got: %s", path); if (*answer == NULL) { *answer = pcmk__xe_create(NULL, PCMK__XE_XPATH_QUERY); diff --git a/lib/cib/cib_remote.c b/lib/cib/cib_remote.c index 93f76d16ae6..12d4c428588 100644 --- a/lib/cib/cib_remote.c +++ b/lib/cib/cib_remote.c @@ -91,7 +91,7 @@ cib_remote_perform_op(cib_t *cib, const char *op, const char *host, return rc; } - crm_trace("Sending %s message to the CIB manager", op); + pcmk__trace("Sending %s message to the CIB manager", op); if (!(call_options & cib_sync_call)) { pcmk__remote_send_xml(&private->callback, op_msg); } else { @@ -100,14 +100,14 @@ cib_remote_perform_op(cib_t *cib, const char *op, const char *host, pcmk__xml_free(op_msg); if ((call_options & cib_discard_reply)) { - crm_trace("Discarding reply"); + pcmk__trace("Discarding reply"); return pcmk_ok; } else if (!(call_options & cib_sync_call)) { return cib->call_id; } - crm_trace("Waiting for a synchronous reply"); + pcmk__trace("Waiting for a synchronous reply"); start_time = time(NULL); remaining_time = cib->call_timeout ? cib->call_timeout : 60; @@ -158,7 +158,7 @@ cib_remote_perform_op(cib_t *cib, const char *op, const char *host, return -ENOMSG; } - crm_trace("Synchronous reply received"); + pcmk__trace("Synchronous reply received"); /* Start processing the reply... */ if (pcmk__xe_get_int(op_reply, PCMK__XA_CIB_RC, &rc) != pcmk_rc_ok) { @@ -187,7 +187,8 @@ cib_remote_perform_op(cib_t *cib, const char *op, const char *host, xmlNode *tmp = pcmk__xe_first_child(wrapper, NULL, NULL, NULL); if (tmp == NULL) { - crm_trace("No output in reply to \"%s\" command %d", op, cib->call_id - 1); + pcmk__trace("No output in reply to \"%s\" command %d", op, + (cib->call_id - 1)); } else { *output_data = pcmk__xml_copy(NULL, tmp); } @@ -248,7 +249,7 @@ cib_remote_callback_dispatch(gpointer user_data) type = pcmk__xe_get(msg, PCMK__XA_T); - crm_trace("Activating %s callbacks...", type); + pcmk__trace("Activating %s callbacks...", type); if (pcmk__str_eq(type, PCMK__VALUE_CIB, pcmk__str_none)) { cib_native_callback(cib, msg, 0, 0); @@ -458,7 +459,7 @@ cib_tls_signon(cib_t *cib, pcmk__remote_t *connection, gboolean event_channel) return rc; } - crm_trace("remote client connection established"); + pcmk__trace("remote client connection established"); private->timeout_sec = 60; connection->source = mainloop_add_fd("cib-remote", G_PRIORITY_HIGH, connection->tcp_socket, cib, diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c index b5b2a394e77..47793beb392 100644 --- a/lib/cib/cib_utils.c +++ b/lib/cib/cib_utils.c @@ -167,7 +167,7 @@ cib_acl_enabled(xmlNode *xml, const char *user) g_hash_table_destroy(options); } - crm_trace("CIB ACL is %s", rc ? "enabled" : "disabled"); + pcmk__trace("CIB ACL is %s", (rc? "enabled" : "disabled")); return rc; } @@ -238,9 +238,9 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, const bool enable_acl = cib_acl_enabled(*current_cib, user); bool with_digest = false; - crm_trace("Begin %s%s%s op", - (pcmk__is_set(call_options, cib_dryrun)? "dry run of " : ""), - (is_query? "read-only " : ""), op); + pcmk__trace("Begin %s%s%s op", + (pcmk__is_set(call_options, cib_dryrun)? "dry run of " : ""), + (is_query? "read-only " : ""), op); CRM_CHECK(output != NULL, return -ENOMSG); CRM_CHECK(current_cib != NULL, return -ENOMSG); @@ -343,7 +343,7 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, * invalid now) for comparison. Confirm this, and check more clearly. */ if (!pcmk__xml_doc_all_flags_set(scratch->doc, pcmk__xf_tracking)) { - crm_trace("Inferring changes after %s op", op); + pcmk__trace("Inferring changes after %s op", op); pcmk__xml_commit_changes(scratch->doc); if (enable_acl) { pcmk__enable_acl(*current_cib, scratch, user); @@ -360,7 +360,7 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, goto done; } else if(rc == pcmk_ok && xml_acl_denied(scratch)) { - crm_trace("ACL rejected part or all of the proposed changes"); + pcmk__trace("ACL rejected part or all of the proposed changes"); rc = -EACCES; goto done; @@ -413,7 +413,7 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, } } - crm_trace("Massaging CIB contents"); + pcmk__trace("Massaging CIB contents"); pcmk__strip_xml_text(scratch); if (make_copy) { @@ -530,7 +530,7 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, } } - crm_trace("Perform validation: %s", pcmk__btoa(check_schema)); + pcmk__trace("Perform validation: %s", pcmk__btoa(check_schema)); if ((rc == pcmk_ok) && check_schema && !pcmk__configured_schema_validates(scratch)) { rc = -pcmk_err_schema_validation; @@ -559,7 +559,7 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, } pcmk__xml_free(top); - crm_trace("Done"); + pcmk__trace("Done"); return rc; } @@ -586,7 +586,8 @@ cib__create_op(cib_t *cib, const char *op, const char *host, pcmk__xe_set(*op_msg, PCMK__XA_CIB_CLIENTNAME, client_name); pcmk__xe_set_int(*op_msg, PCMK__XA_CIB_CALLID, cib->call_id); - crm_trace("Sending call options: %.8lx, %d", (long)call_options, call_options); + pcmk__trace("Sending call options: %.8lx, %d", (long) call_options, + call_options); pcmk__xe_set_int(*op_msg, PCMK__XA_CIB_CALLOPT, call_options); if (data != NULL) { @@ -689,7 +690,7 @@ cib_native_callback(cib_t * cib, xmlNode * msg, int call_id, int rc) blob = cib__lookup_id(call_id); if (blob == NULL) { - crm_trace("No callback found for call %d", call_id); + pcmk__trace("No callback found for call %d", call_id); } if (cib == NULL) { @@ -702,8 +703,8 @@ cib_native_callback(cib_t * cib, xmlNode * msg, int call_id, int rc) } if (blob && blob->callback && (rc == pcmk_ok || blob->only_success == FALSE)) { - crm_trace("Invoking callback %s for call %d", - pcmk__s(blob->id, "without ID"), call_id); + pcmk__trace("Invoking callback %s for call %d", + pcmk__s(blob->id, "without ID"), call_id); blob->callback(msg, call_id, rc, output, blob->user_data); } else if ((cib != NULL) && (rc != pcmk_ok)) { @@ -716,7 +717,7 @@ cib_native_callback(cib_t * cib, xmlNode * msg, int call_id, int rc) remove_cib_op_callback(call_id, FALSE); } - crm_trace("OP callback activated for %d", call_id); + pcmk__trace("OP callback activated for %d", call_id); } void @@ -742,13 +743,14 @@ cib_native_notify(gpointer data, gpointer user_data) return; } else if (!pcmk__str_eq(entry->event, event, pcmk__str_casei)) { - crm_trace("Skipping callback - event mismatch %p/%s vs. %s", entry, entry->event, event); + pcmk__trace("Skipping callback - event mismatch %p/%s vs. %s", entry, + entry->event, event); return; } - crm_trace("Invoking callback for %p/%s event...", entry, event); + pcmk__trace("Invoking callback for %p/%s event...", entry, event); entry->callback(event, msg); - crm_trace("Callback invoked..."); + pcmk__trace("Callback invoked..."); } gboolean @@ -850,7 +852,8 @@ cib_apply_patch_event(xmlNode *event, xmlNode *input, xmlNode **output, rc, *output); if (rc == -pcmk_err_old_data) { - crm_trace("Masking error, we already have the supplied update"); + pcmk__trace("Masking error, we already have the supplied " + "update"); return pcmk_ok; } pcmk__xml_free(*output); @@ -927,8 +930,8 @@ cib__signon_attempts(cib_t *cib, enum cib_conn_type type, int attempts) { int rc = pcmk_rc_ok; - crm_trace("Attempting connection to CIB manager (up to %d time%s)", - attempts, pcmk__plural_s(attempts)); + pcmk__trace("Attempting connection to CIB manager (up to %d time%s)", + attempts, pcmk__plural_s(attempts)); for (int remaining = attempts - 1; remaining >= 0; --remaining) { rc = cib->cmds->signon(cib, crm_system_name, type); diff --git a/lib/cluster/corosync.c b/lib/cluster/corosync.c index 660f4d644a1..7d8e42236a9 100644 --- a/lib/cluster/corosync.c +++ b/lib/cluster/corosync.c @@ -71,18 +71,18 @@ node_name_is_valid(const char *key, const char *name) int octet; if (name == NULL) { - crm_trace("%s is empty", key); + pcmk__trace("%s is empty", key); return false; } else if (sscanf(name, "%d.%d.%d.%d", &octet, &octet, &octet, &octet) == 4) { - crm_trace("%s contains an IPv4 address (%s), ignoring", key, name); + pcmk__trace("%s contains an IPv4 address (%s), ignoring", key, name); return false; } else if (strstr(name, ":") != NULL) { - crm_trace("%s contains an IPv6 address (%s), ignoring", key, name); + pcmk__trace("%s contains an IPv6 address (%s), ignoring", key, name); return false; } - crm_trace("'%s: %s' is valid", key, name); + pcmk__trace("'%s: %s' is valid", key, name); return true; } @@ -120,7 +120,7 @@ pcmk__corosync_name(uint64_t /*cmap_handle_t */ cmap_handle, uint32_t nodeid) if (cmap_handle == 0 && local_handle == 0) { retries = 0; - crm_trace("Initializing CMAP connection"); + pcmk__trace("Initializing CMAP connection"); do { rc = pcmk__init_cmap(&local_handle); if (rc != CS_OK) { @@ -171,7 +171,7 @@ pcmk__corosync_name(uint64_t /*cmap_handle_t */ cmap_handle, uint32_t nodeid) key = pcmk__assert_asprintf("nodelist.node.%d.nodeid", lpc); rc = cmap_get_uint32(cmap_handle, key, &id); - crm_trace("Checking %u vs %u from %s", nodeid, id, key); + pcmk__trace("Checking %u vs %u from %s", nodeid, id, key); free(key); if (rc != CS_OK) { @@ -179,18 +179,18 @@ pcmk__corosync_name(uint64_t /*cmap_handle_t */ cmap_handle, uint32_t nodeid) } if (nodeid == id) { - crm_trace("Searching for node name for %u in nodelist.node.%d %s", - nodeid, lpc, pcmk__s(name, "")); + pcmk__trace("Searching for node name for %u in nodelist.node.%d %s", + nodeid, lpc, pcmk__s(name, "")); if (name == NULL) { key = pcmk__assert_asprintf("nodelist.node.%d.name", lpc); cmap_get_string(cmap_handle, key, &name); - crm_trace("%s = %s", key, pcmk__s(name, "")); + pcmk__trace("%s = %s", key, pcmk__s(name, "")); free(key); } if (name == NULL) { key = pcmk__assert_asprintf("nodelist.node.%d.ring0_addr", lpc); cmap_get_string(cmap_handle, key, &name); - crm_trace("%s = %s", key, pcmk__s(name, "")); + pcmk__trace("%s = %s", key, pcmk__s(name, "")); if (!node_name_is_valid(key, name)) { free(name); @@ -539,17 +539,17 @@ bool pcmk__corosync_is_peer_active(const pcmk__node_status_t *node) { if (node == NULL) { - crm_trace("Corosync peer inactive: NULL"); + pcmk__trace("Corosync peer inactive: NULL"); return false; } if (!pcmk__str_eq(node->state, PCMK_VALUE_MEMBER, pcmk__str_none)) { - crm_trace("Corosync peer %s inactive: state=%s", - node->name, node->state); + pcmk__trace("Corosync peer %s inactive: state=%s", node->name, + node->state); return false; } if (!pcmk__is_set(node->processes, crm_proc_cpg)) { - crm_trace("Corosync peer %s inactive " QB_XS " processes=%.16" PRIx32, - node->name, node->processes); + pcmk__trace("Corosync peer %s inactive " QB_XS " processes=%.16" PRIx32, + node->name, node->processes); return false; } return true; @@ -617,7 +617,7 @@ pcmk__corosync_add_nodes(xmlNode *xml_parent) } pcmk__cluster_init_node_caches(); - crm_trace("Initializing Corosync node list"); + pcmk__trace("Initializing Corosync node list"); for (lpc = 0; TRUE; lpc++) { uint32_t nodeid = 0; char *name = NULL; @@ -652,7 +652,7 @@ pcmk__corosync_add_nodes(xmlNode *xml_parent) } if (nodeid > 0 || name != NULL) { - crm_trace("Initializing node[%d] %u = %s", lpc, nodeid, name); + pcmk__trace("Initializing node[%d] %u = %s", lpc, nodeid, name); pcmk__get_node(nodeid, name, NULL, pcmk__node_search_cluster_member); } diff --git a/lib/cluster/cpg.c b/lib/cluster/cpg.c index d710a323024..663b9be96ae 100644 --- a/lib/cluster/cpg.c +++ b/lib/cluster/cpg.c @@ -121,7 +121,7 @@ pcmk__cpg_local_nodeid(cpg_handle_t handle) } if (handle == 0) { - crm_trace("Creating connection"); + pcmk__trace("Creating connection"); cs_repeat(rc, retries, 5, cpg_model_initialize(&local_handle, CPG_MODEL_V1, (cpg_model_data_t *) &cpg_model_info, @@ -158,7 +158,7 @@ pcmk__cpg_local_nodeid(cpg_handle_t handle) if (rc == CS_OK) { retries = 0; - crm_trace("Performing lookup"); + pcmk__trace("Performing lookup"); cs_repeat(rc, retries, 5, cpg_local_get(local_handle, &local_nodeid)); } @@ -169,7 +169,7 @@ pcmk__cpg_local_nodeid(cpg_handle_t handle) bail: if (handle == 0) { - crm_trace("Closing connection"); + pcmk__trace("Closing connection"); cpg_finalize(local_handle); } pcmk__debug("Local nodeid is %u", local_nodeid); @@ -210,7 +210,7 @@ crm_cs_flush(gpointer data) cpg_handle_t *handle = (cpg_handle_t *) data; if (*handle == 0) { - crm_trace("Connection is dead"); + pcmk__trace("Connection is dead"); return; } @@ -224,7 +224,7 @@ crm_cs_flush(gpointer data) if (cs_message_timer != 0) { /* There is already a timer, wait until it goes off */ - crm_trace("Timer active %d", cs_message_timer); + pcmk__trace("Timer active %d", cs_message_timer); return; } @@ -237,7 +237,7 @@ crm_cs_flush(gpointer data) } sent++; - crm_trace("CPG message sent, size=%zu", iov->iov_len); + pcmk__trace("CPG message sent, size=%zu", iov->iov_len); cs_message_queue = g_list_remove(cs_message_queue, iov); free(iov->iov_base); @@ -364,11 +364,12 @@ check_message_sanity(const pcmk__cpg_msg_t *msg) return false; } - crm_trace("Verified %d-byte %sCPG message %d from %s[%u]@%s to %s@%s", - (int) msg->header.size, (msg->is_compressed? "compressed " : ""), - msg->id, msg_type2text(msg->sender.type), msg->sender.pid, - ais_dest(&(msg->sender)), - msg_type2text(msg->host.type), ais_dest(&(msg->host))); + pcmk__trace("Verified %d-byte %sCPG message %d from %s[%u]@%s to %s@%s", + (int) msg->header.size, + (msg->is_compressed? "compressed " : ""), msg->id, + msg_type2text(msg->sender.type), msg->sender.pid, + ais_dest(&(msg->sender)), + msg_type2text(msg->host.type), ais_dest(&(msg->host))); return true; } @@ -415,17 +416,17 @@ pcmk__cpg_message_data(cpg_handle_t handle, uint32_t sender_id, uint32_t pid, // Ignore messages that aren't for the local node if ((msg->host.id != 0) && (local_nodeid != msg->host.id)) { - crm_trace("Ignoring CPG message from ID %" PRIu32 " PID %" PRIu32 - ": for ID %" PRIu32 " not %" PRIu32, - sender_id, pid, msg->host.id, local_nodeid); + pcmk__trace("Ignoring CPG message from ID %" PRIu32 " PID %" PRIu32 + ": for ID %" PRIu32 " not %" PRIu32, + sender_id, pid, msg->host.id, local_nodeid); return NULL; } if ((msg->host.size > 0) && !pcmk__str_eq(msg->host.uname, local_name, pcmk__str_casei)) { - crm_trace("Ignoring CPG message from ID %" PRIu32 " PID %" PRIu32 - ": for name %s not %s", - sender_id, pid, msg->host.uname, local_name); + pcmk__trace("Ignoring CPG message from ID %" PRIu32 " PID %" PRIu32 + ": for name %s not %s", + sender_id, pid, msg->host.uname, local_name); return NULL; } @@ -487,10 +488,10 @@ pcmk__cpg_message_data(cpg_handle_t handle, uint32_t sender_id, uint32_t pid, data = pcmk__str_copy(msg->data); } - crm_trace("Received %sCPG message %d from %s (ID %" PRIu32 - " PID %" PRIu32 "): %.40s...", - (msg->is_compressed? "compressed " : ""), - msg->id, ais_dest(&(msg->sender)), sender_id, pid, msg->data); + pcmk__trace("Received %sCPG message %d from %s (ID %" PRIu32 + " PID %" PRIu32 "): %.40s...", + (msg->is_compressed? "compressed " : ""), + msg->id, ais_dest(&(msg->sender)), sender_id, pid, msg->data); return data; } @@ -891,7 +892,7 @@ pcmk__cpg_disconnect(pcmk_cluster_t *cluster) { pcmk_cpg_handle = 0; if (cluster->priv->cpg_handle != 0) { - crm_trace("Disconnecting CPG"); + pcmk__trace("Disconnecting CPG"); cpg_leave(cluster->priv->cpg_handle, &cluster->priv->group); cpg_finalize(cluster->priv->cpg_handle); cluster->priv->cpg_handle = 0; @@ -1007,13 +1008,13 @@ send_cpg_text(const char *data, const pcmk__node_status_t *node, iov->iov_len = msg->header.size; if (msg->compressed_size > 0) { - crm_trace("Queueing CPG message %" PRIu32 " to %s " - "(%zu bytes, %" PRIu32 " bytes compressed payload): %.200s", - msg->id, target, iov->iov_len, msg->compressed_size, data); + pcmk__trace("Queueing CPG message %" PRIu32 " to %s " + "(%zu bytes, %" PRIu32 " bytes compressed payload): %.200s", + msg->id, target, iov->iov_len, msg->compressed_size, data); } else { - crm_trace("Queueing CPG message %" PRIu32 " to %s " - "(%zu bytes, %" PRIu32 " bytes payload): %.200s", - msg->id, target, iov->iov_len, msg->size, data); + pcmk__trace("Queueing CPG message %" PRIu32 " to %s " + "(%zu bytes, %" PRIu32 " bytes payload): %.200s", + msg->id, target, iov->iov_len, msg->size, data); } free(target); diff --git a/lib/cluster/election.c b/lib/cluster/election.c index c1cc1b94599..a8ffb7c5649 100644 --- a/lib/cluster/election.c +++ b/lib/cluster/election.c @@ -119,7 +119,7 @@ election_remove(pcmk_cluster_t *cluster, const char *uname) { if ((cluster != NULL) && (cluster->priv->election != NULL) && (uname != NULL) && (cluster->priv->election->voted != NULL)) { - crm_trace("Discarding (no-)vote from lost peer %s", uname); + pcmk__trace("Discarding (no-)vote from lost peer %s", uname); g_hash_table_remove(cluster->priv->election->voted, uname); } } @@ -134,7 +134,7 @@ void election_reset(pcmk_cluster_t *cluster) { if ((cluster != NULL) && (cluster->priv->election != NULL)) { - crm_trace("Resetting election"); + pcmk__trace("Resetting election"); mainloop_timer_stop(cluster->priv->election->timeout); if (cluster->priv->election->voted != NULL) { g_hash_table_destroy(cluster->priv->election->voted); @@ -157,7 +157,7 @@ election_fini(pcmk_cluster_t *cluster) { if ((cluster != NULL) && (cluster->priv->election != NULL)) { election_reset(cluster); - crm_trace("Destroying election"); + pcmk__trace("Destroying election"); mainloop_timer_del(cluster->priv->election->timeout); free(cluster->priv->election); cluster->priv->election = NULL; @@ -297,7 +297,7 @@ election_vote(pcmk_cluster_t *cluster) our_node = pcmk__get_node(0, cluster->priv->node_name, NULL, pcmk__node_search_cluster_member); if (!pcmk__cluster_is_node_active(our_node)) { - crm_trace("Cannot vote yet: local node not connected to cluster"); + pcmk__trace("Cannot vote yet: local node not connected to cluster"); return; } @@ -356,7 +356,7 @@ election_check(pcmk_cluster_t *cluster) return false); if (cluster->priv->election->voted == NULL) { - crm_trace("Election check requested, but no votes received yet"); + pcmk__trace("Election check requested, but no votes received yet"); return FALSE; } diff --git a/lib/cluster/membership.c b/lib/cluster/membership.c index e5d0ddfeb9c..c485d8a066a 100644 --- a/lib/cluster/membership.c +++ b/lib/cluster/membership.c @@ -203,7 +203,7 @@ pcmk__cluster_lookup_remote_node(const char *node_name) /* Add the new entry to the cache */ g_hash_table_replace(pcmk__remote_peer_cache, node->xml_id, node); - crm_trace("added %s to remote cache", node_name); + pcmk__trace("added %s to remote cache", node_name); /* Update the entry's uname, ensuring peer status callbacks are called */ update_peer_uname(node, node_name); @@ -227,7 +227,7 @@ pcmk__cluster_forget_remote_node(const char *node_name) * being removed -- we can't log it *after* removing it. */ if (g_hash_table_lookup(pcmk__remote_peer_cache, node_name) != NULL) { - crm_trace("Removing %s from Pacemaker Remote node cache", node_name); + pcmk__trace("Removing %s from Pacemaker Remote node cache", node_name); g_hash_table_remove(pcmk__remote_peer_cache, node_name); } } @@ -475,7 +475,8 @@ pcmk__cluster_forget_cluster_node(uint32_t id, const char *node_name) guint matches = 0; if (pcmk__peer_cache == NULL) { - crm_trace("Membership cache not initialized, ignoring removal request"); + pcmk__trace("Membership cache not initialized, ignoring removal " + "request"); return; } @@ -549,8 +550,8 @@ destroy_crm_node(gpointer data) { pcmk__node_status_t *node = data; - crm_trace("Destroying entry for node %" PRIu32 ": %s", - node->cluster_layer_id, node->name); + pcmk__trace("Destroying entry for node %" PRIu32 ": %s", + node->cluster_layer_id, node->name); free(node->name); free(node->state); @@ -589,22 +590,22 @@ void pcmk__cluster_destroy_node_caches(void) { if (pcmk__peer_cache != NULL) { - crm_trace("Destroying peer cache with %d members", - g_hash_table_size(pcmk__peer_cache)); + pcmk__trace("Destroying peer cache with %u members", + g_hash_table_size(pcmk__peer_cache)); g_hash_table_destroy(pcmk__peer_cache); pcmk__peer_cache = NULL; } if (pcmk__remote_peer_cache != NULL) { - crm_trace("Destroying remote peer cache with %d members", - pcmk__cluster_num_remote_nodes()); + pcmk__trace("Destroying remote peer cache with %u members", + pcmk__cluster_num_remote_nodes()); g_hash_table_destroy(pcmk__remote_peer_cache); pcmk__remote_peer_cache = NULL; } if (cluster_node_cib_cache != NULL) { - crm_trace("Destroying configured cluster node cache with %d members", - g_hash_table_size(cluster_node_cib_cache)); + pcmk__trace("Destroying configured cluster node cache with %u members", + g_hash_table_size(cluster_node_cib_cache)); g_hash_table_destroy(cluster_node_cib_cache); cluster_node_cib_cache = NULL; } @@ -700,7 +701,7 @@ search_cluster_member_cache(unsigned int id, const char *uname, g_hash_table_iter_init(&iter, pcmk__peer_cache); while (g_hash_table_iter_next(&iter, NULL, (gpointer *) &node)) { if (pcmk__str_eq(node->name, uname, pcmk__str_casei)) { - crm_trace("Name match: %s", node->name); + pcmk__trace("Name match: %s", node->name); by_name = node; break; } @@ -711,7 +712,7 @@ search_cluster_member_cache(unsigned int id, const char *uname, g_hash_table_iter_init(&iter, pcmk__peer_cache); while (g_hash_table_iter_next(&iter, NULL, (gpointer *) &node)) { if (node->cluster_layer_id == id) { - crm_trace("ID match: %" PRIu32, node->cluster_layer_id); + pcmk__trace("ID match: %" PRIu32, node->cluster_layer_id); by_id = node; break; } @@ -723,8 +724,8 @@ search_cluster_member_cache(unsigned int id, const char *uname, const char *this_xml_id = pcmk__cluster_get_xml_id(node); if (pcmk__str_eq(uuid, this_xml_id, pcmk__str_none)) { - crm_trace("Found cluster node cache entry by XML ID %s", - this_xml_id); + pcmk__trace("Found cluster node cache entry by XML ID %s", + this_xml_id); by_id = node; break; } @@ -734,10 +735,10 @@ search_cluster_member_cache(unsigned int id, const char *uname, node = by_id; /* Good default */ if(by_id == by_name) { /* Nothing to do if they match (both NULL counts) */ - crm_trace("Consistent: %p for %u/%s", by_id, id, uname); + pcmk__trace("Consistent: %p for %u/%s", by_id, id, uname); } else if(by_id == NULL && by_name) { - crm_trace("Only one: %p for %u/%s", by_name, id, uname); + pcmk__trace("Only one: %p for %u/%s", by_name, id, uname); if (id && by_name->cluster_layer_id) { dump_peer_hash(LOG_WARNING, __func__); @@ -750,7 +751,7 @@ search_cluster_member_cache(unsigned int id, const char *uname, } } else if(by_name == NULL && by_id) { - crm_trace("Only one: %p for %u/%s", by_id, id, uname); + pcmk__trace("Only one: %p for %u/%s", by_id, id, uname); if ((uname != NULL) && (by_id->name != NULL)) { dump_peer_hash(LOG_WARNING, __func__); @@ -881,7 +882,7 @@ pcmk__purge_node_from_cache(const char *node_name, uint32_t node_id) node_name_copy = pcmk__str_copy(node_name); node_name = node_name_copy; - crm_trace("Purging %s from Pacemaker Remote node cache", node_name); + pcmk__trace("Purging %s from Pacemaker Remote node cache", node_name); g_hash_table_remove(pcmk__remote_peer_cache, node_name); } @@ -979,7 +980,7 @@ pcmk__get_node(unsigned int id, const char *uname, const char *xml_id, if (uname_lookup) { uname = uname_lookup; - crm_trace("Inferred a name of '%s' for node %u", uname, id); + pcmk__trace("Inferred a name of '%s' for node %u", uname, id); /* try to turn up the node one more time now that we know the uname. */ if (node == NULL) { @@ -1200,9 +1201,9 @@ crm_update_peer_proc(const char *source, pcmk__node_status_t *node, node = pcmk__update_peer_state(__func__, node, peer_state, 0); } } else { - crm_trace("%s: Node %s[%" PRIu32 "] - %s is unchanged (%s)", - source, node->name, node->cluster_layer_id, proc2text(flag), - status); + pcmk__trace("%s: Node %s[%" PRIu32 "] - %s is unchanged (%s)", source, + node->name, node->cluster_layer_id, proc2text(flag), + status); } return node; } @@ -1243,8 +1244,9 @@ pcmk__update_peer_expected(const char *source, pcmk__node_status_t *node, source, node->name, node->cluster_layer_id, expected, last); free(last); } else { - crm_trace("%s: Node %s[%" PRIu32 "] - expected state is unchanged (%s)", - source, node->name, node->cluster_layer_id, expected); + pcmk__trace("%s: Node %s[%" PRIu32 "] - expected state is unchanged " + "(%s)", + source, node->name, node->cluster_layer_id, expected); } } @@ -1325,9 +1327,9 @@ update_peer_state_iter(const char *source, pcmk__node_status_t *node, } } else { - crm_trace("Node %s state is unchanged (%s) " QB_XS - " nodeid=%" PRIu32 " source=%s", - node->name, state, node->cluster_layer_id, source); + pcmk__trace("Node %s state is unchanged (%s) " QB_XS + " nodeid=%" PRIu32 " source=%s", + node->name, state, node->cluster_layer_id, source); } return node; } @@ -1366,7 +1368,7 @@ pcmk__reap_unseen_nodes(uint64_t membership) GHashTableIter iter; pcmk__node_status_t *node = NULL; - crm_trace("Reaping unseen nodes..."); + pcmk__trace("Reaping unseen nodes..."); g_hash_table_iter_init(&iter, pcmk__peer_cache); while (g_hash_table_iter_next(&iter, NULL, (gpointer *)&node)) { if (node->membership_id != membership) { @@ -1397,7 +1399,7 @@ find_cib_cluster_node(const char *id, const char *uname) g_hash_table_iter_init(&iter, cluster_node_cib_cache); while (g_hash_table_iter_next(&iter, NULL, (gpointer *) &node)) { if (pcmk__str_eq(node->name, uname, pcmk__str_casei)) { - crm_trace("Name match: %s = %p", node->name, node); + pcmk__trace("Name match: %s = %p", node->name, node); by_name = node; break; } @@ -1409,7 +1411,7 @@ find_cib_cluster_node(const char *id, const char *uname) while (g_hash_table_iter_next(&iter, NULL, (gpointer *) &node)) { if (pcmk__str_eq(id, pcmk__cluster_get_xml_id(node), pcmk__str_none)) { - crm_trace("ID match: %s= %p", id, node); + pcmk__trace("ID match: %s= %p", id, node); by_id = node; break; } @@ -1419,10 +1421,10 @@ find_cib_cluster_node(const char *id, const char *uname) node = by_id; /* Good default */ if (by_id == by_name) { /* Nothing to do if they match (both NULL counts) */ - crm_trace("Consistent: %p for %s/%s", by_id, id, uname); + pcmk__trace("Consistent: %p for %s/%s", by_id, id, uname); } else if (by_id == NULL && by_name) { - crm_trace("Only one: %p for %s/%s", by_name, id, uname); + pcmk__trace("Only one: %p for %s/%s", by_name, id, uname); if (id) { node = NULL; @@ -1432,7 +1434,7 @@ find_cib_cluster_node(const char *id, const char *uname) } } else if (by_name == NULL && by_id) { - crm_trace("Only one: %p for %s/%s", by_id, id, uname); + pcmk__trace("Only one: %p for %s/%s", by_id, id, uname); if (uname) { node = NULL; diff --git a/lib/common/acl.c b/lib/common/acl.c index 3422ba148df..d974270ae32 100644 --- a/lib/common/acl.c +++ b/lib/common/acl.c @@ -60,8 +60,8 @@ create_acl(const xmlNode *xml, GList *acls, enum pcmk__xml_flags mode) if ((tag == NULL) && (ref == NULL) && (xpath == NULL)) { // Schema should prevent this, but to be safe ... - crm_trace("Ignoring ACL <%s> element without selection criteria", - xml->name); + pcmk__trace("Ignoring ACL <%s> element without selection criteria", + xml->name); return NULL; } @@ -70,8 +70,8 @@ create_acl(const xmlNode *xml, GList *acls, enum pcmk__xml_flags mode) acl->mode = mode; if (xpath) { acl->xpath = g_strdup(xpath); - crm_trace("Unpacked ACL <%s> element using xpath: %s", - xml->name, acl->xpath); + pcmk__trace("Unpacked ACL <%s> element using xpath: %s", xml->name, + acl->xpath); } else { GString *buf = g_string_sized_new(128); @@ -95,8 +95,8 @@ create_acl(const xmlNode *xml, GList *acls, enum pcmk__xml_flags mode) acl->xpath = buf->str; g_string_free(buf, FALSE); - crm_trace("Unpacked ACL <%s> element as xpath: %s", - xml->name, acl->xpath); + pcmk__trace("Unpacked ACL <%s> element as xpath: %s", xml->name, + acl->xpath); } return g_list_append(acls, acl); @@ -125,9 +125,9 @@ parse_acl_entry(const xmlNode *acl_top, const xmlNode *acl_entry, GList *acls) const char *kind = pcmk__xe_get(child, PCMK_XA_KIND); pcmk__assert(kind != NULL); - crm_trace("Unpacking <" PCMK_XE_ACL_PERMISSION "> element of " - "kind '%s'", - kind); + pcmk__trace("Unpacking <" PCMK_XE_ACL_PERMISSION "> element of " + "kind '%s'", + kind); if (pcmk__str_eq(kind, PCMK_VALUE_READ, pcmk__str_none)) { acls = create_acl(child, acls, pcmk__xf_acl_read); @@ -145,7 +145,7 @@ parse_acl_entry(const xmlNode *acl_top, const xmlNode *acl_entry, GList *acls) } else if (pcmk__xe_is(child, PCMK_XE_ROLE)) { const char *ref_role = pcmk__xe_get(child, PCMK_XA_ID); - crm_trace("Unpacking <" PCMK_XE_ROLE "> element"); + pcmk__trace("Unpacking <" PCMK_XE_ROLE "> element"); if (ref_role == NULL) { continue; @@ -164,8 +164,9 @@ parse_acl_entry(const xmlNode *acl_top, const xmlNode *acl_entry, GList *acls) role_id = pcmk__xe_get(role, PCMK_XA_ID); if (pcmk__str_eq(ref_role, role_id, pcmk__str_none)) { - crm_trace("Unpacking referenced role '%s' in <%s> element", - role_id, acl_entry->name); + pcmk__trace("Unpacking referenced role '%s' in <%s> " + "element", + role_id, acl_entry->name); acls = parse_acl_entry(acl_top, role, acls); break; } @@ -225,8 +226,9 @@ pcmk__apply_acl(xmlNode *xml) pcmk__assert(xml != NULL); if (!pcmk__xml_doc_all_flags_set(xml->doc, pcmk__xf_acl_enabled)) { - crm_trace("Skipping ACLs for user '%s' because not enabled for this XML", - docpriv->acl_user); + pcmk__trace("Skipping ACLs for user '%s' because not enabled for this " + "XML", + docpriv->acl_user); return; } @@ -290,16 +292,15 @@ pcmk__apply_acl(xmlNode *xml) pcmk__if_tracing( { GString *path = pcmk__element_xpath(match); - crm_trace("Applying %s ACL to %s matched by %s", - acl_to_text(acl->mode), path->str, acl->xpath); + pcmk__trace("Applying %s ACL to %s matched by %s", + acl_to_text(acl->mode), path->str, acl->xpath); g_string_free(path, TRUE); }, {} ); } - crm_trace("Applied %s ACL %s (%d match%s)", - acl_to_text(acl->mode), acl->xpath, max, - ((max == 1)? "" : "es")); + pcmk__trace("Applied %s ACL %s (%d match%s)", acl_to_text(acl->mode), + acl->xpath, max, ((max == 1)? "" : "es")); xmlXPathFreeObject(xpathObj); } } @@ -329,8 +330,8 @@ pcmk__unpack_acl(xmlNode *source, xmlNode *target, const char *user) docpriv = target->doc->_private; if (!pcmk_acl_required(user)) { - crm_trace("Not unpacking ACLs because not required for user '%s'", - user); + pcmk__trace("Not unpacking ACLs because not required for user '%s'", + user); } else if (docpriv->acls == NULL) { xmlNode *acls = pcmk__xpath_find_one(source->doc, "//" PCMK_XE_ACLS, @@ -432,8 +433,8 @@ purge_xml_attributes(xmlNode *xml) xml_node_private_t *nodepriv = xml->_private; if (test_acl_mode(nodepriv->flags, pcmk__xf_acl_read)) { - crm_trace("%s[@" PCMK_XA_ID "=%s] is readable", - xml->name, pcmk__xe_id(xml)); + pcmk__trace("%s[@" PCMK_XA_ID "=%s] is readable", xml->name, + pcmk__xe_id(xml)); return true; } @@ -486,12 +487,12 @@ xml_acl_filtered_copy(const char *user, xmlNode *acl_source, xmlNode *xml, *result = NULL; if ((xml == NULL) || !pcmk_acl_required(user)) { - crm_trace("Not filtering XML because ACLs not required for user '%s'", - user); + pcmk__trace("Not filtering XML because ACLs not required for user '%s'", + user); return false; } - crm_trace("Filtering XML copy using user '%s' ACLs", user); + pcmk__trace("Filtering XML copy using user '%s' ACLs", user); target = pcmk__xml_copy(NULL, xml); if (target == NULL) { return true; @@ -527,21 +528,22 @@ xml_acl_filtered_copy(const char *user, xmlNode *acl_source, xmlNode *xml, } if (!purge_xml_attributes(match) && (match == target)) { - crm_trace("ACLs deny user '%s' access to entire XML document", - user); + pcmk__trace("ACLs deny user '%s' access to entire XML " + "document", + user); xmlXPathFreeObject(xpathObj); return true; } } - crm_trace("ACLs deny user '%s' access to %s (%d %s)", - user, acl->xpath, max, - pcmk__plural_alt(max, "match", "matches")); + pcmk__trace("ACLs deny user '%s' access to %s (%d %s)", user, + acl->xpath, max, + pcmk__plural_alt(max, "match", "matches")); xmlXPathFreeObject(xpathObj); } } if (!purge_xml_attributes(target)) { - crm_trace("ACLs deny user '%s' access to entire XML document", user); + pcmk__trace("ACLs deny user '%s' access to entire XML document", user); return true; } @@ -550,8 +552,9 @@ xml_acl_filtered_copy(const char *user, xmlNode *acl_source, xmlNode *xml, docpriv->acls = NULL; } else { - crm_trace("User '%s' without ACLs denied access to entire XML document", - user); + pcmk__trace("User '%s' without ACLs denied access to entire XML " + "document", + user); pcmk__xml_free(target); target = NULL; } @@ -622,13 +625,14 @@ pcmk__apply_creation_acl(xmlNode *xml, bool check_top) if (pcmk__is_set(nodepriv->flags, pcmk__xf_created)) { if (implicitly_allowed(xml)) { - crm_trace("Creation of <%s> scaffolding with " PCMK_XA_ID "=\"%s\"" - " is implicitly allowed", - xml->name, display_id(xml)); + pcmk__trace("Creation of <%s> scaffolding with " + PCMK_XA_ID "=\"%s\" is implicitly allowed", + xml->name, display_id(xml)); } else if (pcmk__check_acl(xml, NULL, pcmk__xf_acl_write)) { - crm_trace("ACLs allow creation of <%s> with " PCMK_XA_ID "=\"%s\"", - xml->name, display_id(xml)); + pcmk__trace("ACLs allow creation of <%s> with " + PCMK_XA_ID "=\"%s\"", + xml->name, display_id(xml)); } else if (check_top) { /* is_root=true should be impossible with check_top=true, but check @@ -637,10 +641,10 @@ pcmk__apply_creation_acl(xmlNode *xml, bool check_top) bool is_root = (xmlDocGetRootElement(xml->doc) == xml); xml_doc_private_t *docpriv = xml->doc->_private; - crm_trace("ACLs disallow creation of %s<%s> with " - PCMK_XA_ID "=\"%s\"", - (is_root? "root element " : ""), xml->name, - display_id(xml)); + pcmk__trace("ACLs disallow creation of %s<%s> with " + PCMK_XA_ID "=\"%s\"", + (is_root? "root element " : ""), xml->name, + display_id(xml)); // pcmk__xml_free() checks ACLs if enabled, which would fail pcmk__clear_xml_flags(docpriv, pcmk__xf_acl_enabled); @@ -801,14 +805,14 @@ bool pcmk_acl_required(const char *user) { if (pcmk__str_empty(user)) { - crm_trace("ACLs not required because no user set"); + pcmk__trace("ACLs not required because no user set"); return false; } else if (!strcmp(user, CRM_DAEMON_USER) || !strcmp(user, "root")) { - crm_trace("ACLs not required for privileged user %s", user); + pcmk__trace("ACLs not required for privileged user %s", user); return false; } - crm_trace("ACLs required for %s", user); + pcmk__trace("ACLs required for %s", user); return true; } diff --git a/lib/common/alerts.c b/lib/common/alerts.c index daa6e280e22..efd40cae722 100644 --- a/lib/common/alerts.c +++ b/lib/common/alerts.c @@ -110,11 +110,11 @@ pcmk__add_alert_key(GHashTable *table, enum pcmk__alert_keys_e name, pcmk__assert((table != NULL) && (name >= 0) && (name < PCMK__ALERT_INTERNAL_KEY_MAX)); if (value == NULL) { - crm_trace("Removing alert key %s", pcmk__alert_keys[name]); + pcmk__trace("Removing alert key %s", pcmk__alert_keys[name]); g_hash_table_remove(table, pcmk__alert_keys[name]); } else { - crm_trace("Inserting alert key %s = '%s'", - pcmk__alert_keys[name], value); + pcmk__trace("Inserting alert key %s = '%s'", pcmk__alert_keys[name], + value); pcmk__insert_dup(table, pcmk__alert_keys[name], value); } } @@ -125,7 +125,7 @@ pcmk__add_alert_key_int(GHashTable *table, enum pcmk__alert_keys_e name, { pcmk__assert((table != NULL) && (name >= 0) && (name < PCMK__ALERT_INTERNAL_KEY_MAX)); - crm_trace("Inserting alert key %s = %d", pcmk__alert_keys[name], value); + pcmk__trace("Inserting alert key %s = %d", pcmk__alert_keys[name], value); g_hash_table_insert(table, pcmk__str_copy(pcmk__alert_keys[name]), pcmk__itoa(value)); } @@ -176,8 +176,8 @@ unpack_alert_options(xmlNode *xml, pcmk__alert_t *entry, guint *max_timeout) entry->timeout = PCMK__ALERT_DEFAULT_TIMEOUT_MS; if (timeout_ms == 0) { - crm_trace("Alert %s uses default timeout (%s)", - entry->id, READABLE_DEFAULT); + pcmk__trace("Alert %s uses default timeout (%s)", entry->id, + READABLE_DEFAULT); } else { pcmk__config_warn("Using default timeout (%s) for alert %s " "because '%s' is not a valid timeout", @@ -186,8 +186,8 @@ unpack_alert_options(xmlNode *xml, pcmk__alert_t *entry, guint *max_timeout) } else { entry->timeout = (int) QB_MIN(timeout_ms, INT_MAX); - crm_trace("Alert %s uses timeout of %s", - entry->id, pcmk__readable_interval(entry->timeout)); + pcmk__trace("Alert %s uses timeout of %s", entry->id, + pcmk__readable_interval(entry->timeout)); } if (entry->timeout > *max_timeout) { *max_timeout = entry->timeout; @@ -199,8 +199,8 @@ unpack_alert_options(xmlNode *xml, pcmk__alert_t *entry, guint *max_timeout) * can be a valid time-format-string */ entry->tstamp_format = strdup(value); - crm_trace("Alert %s uses timestamp format '%s'", - entry->id, entry->tstamp_format); + pcmk__trace("Alert %s uses timestamp format '%s'", entry->id, + entry->tstamp_format); } done: @@ -245,8 +245,8 @@ unpack_alert_parameters(const xmlNode *xml, pcmk__alert_t *entry) value = ""; } pcmk__insert_dup(entry->envvars, name, value); - crm_trace("Alert %s: added environment variable %s='%s'", - entry->id, name, value); + pcmk__trace("Alert %s: added environment variable %s='%s'", entry->id, + name, value); } } diff --git a/lib/common/attrs.c b/lib/common/attrs.c index b8b16fe33a3..032a137dd84 100644 --- a/lib/common/attrs.c +++ b/lib/common/attrs.c @@ -131,8 +131,8 @@ pcmk__node_attr(const pcmk_node_t *node, const char *name, const char *target, if (!pcmk__is_guest_or_bundle_node(node) || !pcmk__str_eq(target, PCMK_VALUE_HOST, pcmk__str_casei)) { value = g_hash_table_lookup(node->priv->attrs, name); - crm_trace("%s='%s' on %s", - name, pcmk__s(value, ""), pcmk__node_name(node)); + pcmk__trace("%s='%s' on %s", name, pcmk__s(value, ""), + pcmk__node_name(node)); return value; } @@ -146,9 +146,9 @@ pcmk__node_attr(const pcmk_node_t *node, const char *name, const char *target, case pcmk__rsc_node_assigned: host = container->priv->assigned_node; if (host == NULL) { - crm_trace("Skipping %s lookup for %s because " - "its container %s is unassigned", - name, pcmk__node_name(node), container->id); + pcmk__trace("Skipping %s lookup for %s because its container " + "%s is unassigned", + name, pcmk__node_name(node), container->id); return NULL; } node_type_s = "assigned"; @@ -159,9 +159,9 @@ pcmk__node_attr(const pcmk_node_t *node, const char *name, const char *target, host = container->priv->active_nodes->data; } if (host == NULL) { - crm_trace("Skipping %s lookup for %s because " - "its container %s is inactive", - name, pcmk__node_name(node), container->id); + pcmk__trace("Skipping %s lookup for %s because its container " + "%s is inactive", + name, pcmk__node_name(node), container->id); return NULL; } node_type_s = "current"; @@ -174,8 +174,8 @@ pcmk__node_attr(const pcmk_node_t *node, const char *name, const char *target, } value = g_hash_table_lookup(host->priv->attrs, name); - crm_trace("%s='%s' for %s on %s container host %s", - name, pcmk__s(value, ""), pcmk__node_name(node), node_type_s, - pcmk__node_name(host)); + pcmk__trace("%s='%s' for %s on %s container host %s", name, + pcmk__s(value, ""), pcmk__node_name(node), node_type_s, + pcmk__node_name(host)); return value; } diff --git a/lib/common/cib_secrets.c b/lib/common/cib_secrets.c index 4ea67b9a6a6..1d2931ac331 100644 --- a/lib/common/cib_secrets.c +++ b/lib/common/cib_secrets.c @@ -97,7 +97,7 @@ validate_hash(const char *filename, const char *secret_value, goto done; } - crm_trace("Stored hash: %s, calculated hash: %s", stored, calculated); + pcmk__trace("Stored hash: %s, calculated hash: %s", stored, calculated); if (!pcmk__str_eq(stored, calculated, pcmk__str_casei)) { pcmk__err("Calculated md5 sum for resource %s parameter '%s' does not " diff --git a/lib/common/digest.c b/lib/common/digest.c index 38e0b49c847..aef65125167 100644 --- a/lib/common/digest.c +++ b/lib/common/digest.c @@ -225,11 +225,10 @@ pcmk__digest_xml(const xmlNode *xml, bool filter) { char *trace_file = pcmk__assert_asprintf("digest-%s", digest); - crm_trace("Saving %s.%s.%s to %s", - pcmk__xe_get(xml, PCMK_XA_ADMIN_EPOCH), - pcmk__xe_get(xml, PCMK_XA_EPOCH), - pcmk__xe_get(xml, PCMK_XA_NUM_UPDATES), - trace_file); + pcmk__trace("Saving %s.%s.%s to %s", + pcmk__xe_get(xml, PCMK_XA_ADMIN_EPOCH), + pcmk__xe_get(xml, PCMK_XA_EPOCH), + pcmk__xe_get(xml, PCMK_XA_NUM_UPDATES), trace_file); pcmk__xml_write_temp_file(xml, "digest input", trace_file); free(trace_file); }, @@ -266,7 +265,7 @@ pcmk__verify_digest(const xmlNode *input, const char *expected) } passed = pcmk__str_eq(expected, calculated, pcmk__str_casei); if (passed) { - crm_trace("Digest comparison passed: %s", calculated); + pcmk__trace("Digest comparison passed: %s", calculated); } else { pcmk__err("Digest comparison failed: expected %s, calculated %s", expected, calculated); @@ -398,15 +397,15 @@ calculate_xml_versioned_digest(xmlNode *input, gboolean sort, input = sorted; } - crm_trace("Using v1 digest algorithm for %s", - pcmk__s(version, "unknown feature set")); + pcmk__trace("Using v1 digest algorithm for %s", + pcmk__s(version, "unknown feature set")); digest = calculate_xml_digest_v1(input); pcmk__xml_free(sorted); return digest; } - crm_trace("Using v2 digest algorithm for %s", version); + pcmk__trace("Using v2 digest algorithm for %s", version); return pcmk__digest_xml(input, do_filter); } @@ -430,7 +429,7 @@ crm_md5sum(const char *buffer) digest = pcmk__str_copy(raw_digest); g_free(raw_digest); - crm_trace("Digest %s.", digest); + pcmk__trace("Digest %s.", digest); return digest; } diff --git a/lib/common/io.c b/lib/common/io.c index 748e4ce05e5..77129cbfbea 100644 --- a/lib/common/io.c +++ b/lib/common/io.c @@ -160,8 +160,8 @@ pcmk__read_series_sequence(const char *directory, const char *series, return rc; } fclose(fp); - crm_trace("Found last sequence number %u in series file %s", - *seq, series_file); + pcmk__trace("Found last sequence number %u in series file %s", *seq, + series_file); free(series_file); return pcmk_rc_ok; } @@ -212,7 +212,7 @@ pcmk__write_series_sequence(const char *directory, const char *series, fclose(file_strm); } - crm_trace("Wrote %d to %s", sequence, series_file); + pcmk__trace("Wrote %d to %s", sequence, series_file); free(series_file); } diff --git a/lib/common/ipc_client.c b/lib/common/ipc_client.c index c3a98d97e08..036bb7607bc 100644 --- a/lib/common/ipc_client.c +++ b/lib/common/ipc_client.c @@ -120,7 +120,7 @@ pcmk_new_ipc_api(pcmk_ipc_api_t **api, enum pcmk_ipc_server server) return ENOMEM; } } - crm_trace("Created %s API IPC object", pcmk_ipc_name(*api, true)); + pcmk__trace("Created %s API IPC object", pcmk_ipc_name(*api, true)); return pcmk_rc_ok; } @@ -192,7 +192,7 @@ ipc_post_disconnect(gpointer user_data) * or api->cmds because this function needed them. Do that now. */ free_daemon_specific_data(api); - crm_trace("Freeing IPC API object after disconnect"); + pcmk__trace("Freeing IPC API object after disconnect"); free(api); } } @@ -229,7 +229,7 @@ pcmk_free_ipc_api(pcmk_ipc_api_t *api) } if (!free_on_disconnect) { free_daemon_specific_data(api); - crm_trace("Freeing IPC API object"); + pcmk__trace("Freeing IPC API object"); free(api); } } @@ -505,7 +505,7 @@ pcmk__connect_ipc(pcmk_ipc_api_t *api, enum pcmk_ipc_dispatch dispatch_type, } if (crm_ipc_connected(api->ipc)) { - crm_trace("Already connected to %s", pcmk_ipc_name(api, true)); + pcmk__trace("Already connected to %s", pcmk_ipc_name(api, true)); return pcmk_rc_ok; } @@ -987,8 +987,8 @@ crm_ipc_destroy(crm_ipc_t * client) */ /* crm_ipc_close(client); */ } else { - crm_trace("Destroying inactive %s IPC connection", - client->server_name); + pcmk__trace("Destroying inactive %s IPC connection", + client->server_name); } free(client->buffer); free(client->server_name); @@ -1038,15 +1038,15 @@ crm_ipc_connected(crm_ipc_t * client) bool rc = FALSE; if (client == NULL) { - crm_trace("No client"); + pcmk__trace("No client"); return FALSE; } else if (client->ipc == NULL) { - crm_trace("No connection"); + pcmk__trace("No connection"); return FALSE; } else if (client->pfd.fd < 0) { - crm_trace("Bad descriptor"); + pcmk__trace("Bad descriptor"); return FALSE; } @@ -1093,8 +1093,8 @@ crm_ipc_decompress(crm_ipc_t * client) unsigned int new_buf_size = QB_MAX((sizeof(pcmk__ipc_header_t) + size_u), client->max_buf_size); char *uncompressed = pcmk__assert_alloc(1, new_buf_size); - crm_trace("Decompressing message data %u bytes into %u bytes", - header->size_compressed, size_u); + pcmk__trace("Decompressing message data %u bytes into %u bytes", + header->size_compressed, size_u); rc = BZ2_bzBuffToBuffDecompress(uncompressed + sizeof(pcmk__ipc_header_t), &size_u, client->buffer + sizeof(pcmk__ipc_header_t), header->size_compressed, 1, 0); @@ -1145,14 +1145,14 @@ crm_ipc_read(crm_ipc_t * client) return -EBADMSG; } - crm_trace("Received %s IPC event %d size=%u rc=%d text='%.100s'", - client->server_name, header->qb.id, header->qb.size, - client->msg_size, - client->buffer + sizeof(pcmk__ipc_header_t)); + pcmk__trace("Received %s IPC event %d size=%u rc=%d text='%.100s'", + client->server_name, header->qb.id, header->qb.size, + client->msg_size, + (client->buffer + sizeof(pcmk__ipc_header_t))); } else { - crm_trace("No message received from %s IPC: %s", - client->server_name, pcmk_strerror(client->msg_size)); + pcmk__trace("No message received from %s IPC: %s", + client->server_name, pcmk_strerror(client->msg_size)); if (client->msg_size == -EAGAIN) { return -EAGAIN; @@ -1214,8 +1214,8 @@ internal_ipc_get_reply(crm_ipc_t *client, int request_id, int ms_timeout, } /* get the reply */ - crm_trace("Expecting reply to %s IPC message %d", client->server_name, - request_id); + pcmk__trace("Expecting reply to %s IPC message %d", client->server_name, + request_id); do { xmlNode *xml = NULL; @@ -1261,17 +1261,17 @@ internal_ipc_get_reply(crm_ipc_t *client, int request_id, int ms_timeout, } while (time(NULL) < timeout || (timeout == 0 && *bytes == -EAGAIN)); if (*bytes > 0) { - crm_trace("Received %zd-byte reply %" PRId32 " to %s IPC %d: %.100s", - *bytes, hdr->qb.id, client->server_name, request_id, - crm_ipc_buffer(client)); + pcmk__trace("Received %zd-byte reply %" PRId32 " to %s IPC %d: %.100s", + *bytes, hdr->qb.id, client->server_name, request_id, + crm_ipc_buffer(client)); if (reply != NULL) { *reply = pcmk__xml_parse(crm_ipc_buffer(client)); } } else if (*bytes < 0) { rc = (int) -*bytes; // System errno - crm_trace("No reply to %s IPC %d: %s " QB_XS " rc=%d", - client->server_name, request_id, pcmk_rc_str(rc), rc); + pcmk__trace("No reply to %s IPC %d: %s " QB_XS " rc=%d", + client->server_name, request_id, pcmk_rc_str(rc), rc); } /* If bytes == 0, we'll return that to crm_ipc_send which will interpret * that as pcmk_rc_ok, log that the IPC request failed (since we did not @@ -1367,8 +1367,9 @@ crm_ipc_send(crm_ipc_t *client, const xmlNode *message, } } - crm_trace("Sending %s IPC request %d of %u bytes using %dms timeout", - client->server_name, header->qb.id, header->qb.size, ms_timeout); + pcmk__trace("Sending %s IPC request %d of %u bytes using %dms timeout", + client->server_name, header->qb.id, header->qb.size, + ms_timeout); /* Send the IPC request, respecting any timeout we were passed */ if (ms_timeout > 0) { @@ -1386,8 +1387,8 @@ crm_ipc_send(crm_ipc_t *client, const xmlNode *message, /* If we should not wait for a response, bail now */ if (!pcmk__is_set(flags, crm_ipc_client_response)) { - crm_trace("Not waiting for reply to %s IPC request %d", - client->server_name, header->qb.id); + pcmk__trace("Not waiting for reply to %s IPC request %d", + client->server_name, header->qb.id); goto send_cleanup; } diff --git a/lib/common/ipc_controld.c b/lib/common/ipc_controld.c index 85f8b441645..f2ef03b56c0 100644 --- a/lib/common/ipc_controld.c +++ b/lib/common/ipc_controld.c @@ -230,8 +230,8 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) * connecting to cluster nodes <3.0.0, or rolling upgrades from <3.0.0, * we can drop this check. */ - crm_trace("Received a reply that was marked as a request " - "(bug unless sent by a controller <3.0.0)"); + pcmk__trace("Received a reply that was marked as a request (bug unless " + "sent by a controller <3.0.0)"); } else if (!pcmk__str_eq(value, PCMK__VALUE_RESPONSE, pcmk__str_none)) { pcmk__info("Unrecognizable message from controller: invalid message " @@ -671,6 +671,6 @@ create_hello_message(const char *uuid, const char *client_name, return NULL; } - crm_trace("Created hello message from %s (UUID %s)", client_name, uuid); + pcmk__trace("Created hello message from %s (UUID %s)", client_name, uuid); return hello; } diff --git a/lib/common/ipc_pacemakerd.c b/lib/common/ipc_pacemakerd.c index b5abdb8e021..dbd12527bcb 100644 --- a/lib/common/ipc_pacemakerd.c +++ b/lib/common/ipc_pacemakerd.c @@ -220,9 +220,9 @@ dispatch(pcmk_ipc_api_t *api, xmlNode *reply) * so we can't enforce this check until we no longer support * Pacemaker Remote nodes connecting to cluster nodes older than that. */ - crm_trace("Message from %s has unexpected message type '%s' " - "(bug if not from pacemakerd <3.0.0)", - pcmk_ipc_name(api, true), pcmk__s(value, "")); + pcmk__trace("Message from %s has unexpected message type '%s' (bug if " + "not from pacemakerd <3.0.0)", + pcmk_ipc_name(api, true), pcmk__s(value, "")); } value = pcmk__xe_get(reply, PCMK__XA_SUBT); diff --git a/lib/common/ipc_server.c b/lib/common/ipc_server.c index 08e1eb616d6..03e4e2bdf30 100644 --- a/lib/common/ipc_server.c +++ b/lib/common/ipc_server.c @@ -62,7 +62,7 @@ pcmk__find_client(const qb_ipcs_connection_t *c) return g_hash_table_lookup(client_connections, c); } - crm_trace("No client found for %p", c); + pcmk__trace("No client found for %p", c); return NULL; } @@ -81,7 +81,7 @@ pcmk__find_client_by_id(const char *id) } } } - crm_trace("No client found with id='%s'", pcmk__s(id, "")); + pcmk__trace("No client found with id='%s'", pcmk__s(id, "")); return NULL; } @@ -186,7 +186,7 @@ client_from_connection(qb_ipcs_connection_t *c, void *key, uid_t uid_client) key = client->id; } if (client_connections == NULL) { - crm_trace("Creating IPC client table"); + pcmk__trace("Creating IPC client table"); client_connections = g_hash_table_new(g_direct_hash, g_direct_equal); } g_hash_table_insert(client_connections, key, client); @@ -227,7 +227,8 @@ pcmk__new_client(qb_ipcs_connection_t *c, uid_t uid_client, gid_t gid_client) } if (uid_client != 0) { - crm_trace("Giving group %u access to new IPC connection", gid_cluster); + pcmk__trace("Giving group %u access to new IPC connection", + gid_cluster); /* Passing -1 to chown(2) means don't change */ qb_ipcs_connection_auth_set(c, -1, gid_cluster, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP); } @@ -290,13 +291,13 @@ pcmk__free_client(pcmk__client_t *c) if (client_connections) { if (c->ipcs) { - crm_trace("Destroying %p/%p (%d remaining)", - c, c->ipcs, g_hash_table_size(client_connections) - 1); + pcmk__trace("Destroying %p/%p (%u remaining)", c, c->ipcs, + (g_hash_table_size(client_connections) - 1)); g_hash_table_remove(client_connections, c->ipcs); } else { - crm_trace("Destroying remote connection %p (%d remaining)", - c, g_hash_table_size(client_connections) - 1); + pcmk__trace("Destroying remote connection %p (%u remaining)", c, + (g_hash_table_size(client_connections) - 1)); g_hash_table_remove(client_connections, c->id); } } @@ -426,8 +427,8 @@ pcmk__client_data2xml(pcmk__client_t *c, void *data, uint32_t *id, unsigned int size_u = 1 + header->size_uncompressed; uncompressed = pcmk__assert_alloc(1, size_u); - crm_trace("Decompressing message data %u bytes into %u bytes", - header->size_compressed, size_u); + pcmk__trace("Decompressing message data %u bytes into %u bytes", + header->size_compressed, size_u); rc = BZ2_bzBuffToBuffDecompress(uncompressed, &size_u, text, header->size_compressed, 1, 0); text = uncompressed; @@ -500,7 +501,7 @@ crm_ipcs_flush_events(pcmk__client_t *c) } else if (c->event_timer) { /* There is already a timer, wait until it goes off */ - crm_trace("Timer active for %p - %d", c->ipcs, c->event_timer); + pcmk__trace("Timer active for %p - %d", c->ipcs, c->event_timer); return rc; } @@ -529,20 +530,21 @@ crm_ipcs_flush_events(pcmk__client_t *c) sent++; header = event[0].iov_base; if (header->size_compressed) { - crm_trace("Event %" PRId32 " to %p[%u] (%zd compressed bytes) sent", - header->qb.id, c->ipcs, c->pid, qb_rc); + pcmk__trace("Event %" PRId32 " to %p[%u] (%zd compressed bytes) " + "sent", + header->qb.id, c->ipcs, c->pid, qb_rc); } else { - crm_trace("Event %" PRId32 " to %p[%u] (%zd bytes) sent: %.120s", - header->qb.id, c->ipcs, c->pid, qb_rc, - (char *) (event[1].iov_base)); + pcmk__trace("Event %" PRId32 " to %p[%u] (%zd bytes) sent: %.120s", + header->qb.id, c->ipcs, c->pid, qb_rc, + (const char *) event[1].iov_base); } pcmk_free_ipc_event(event); } queue_len -= sent; if (sent > 0 || queue_len) { - crm_trace("Sent %u events (%u remaining) for %p[%d]: %s (%zd)", - sent, queue_len, c->ipcs, c->pid, pcmk_rc_str(rc), qb_rc); + pcmk__trace("Sent %u events (%u remaining) for %p[%d]: %s (%zd)", sent, + queue_len, c->ipcs, c->pid, pcmk_rc_str(rc), qb_rc); } if (queue_len) { @@ -708,13 +710,13 @@ pcmk__ipc_send_iov(pcmk__client_t *c, struct iovec *iov, uint32_t flags) header->qb.id = id++; /* We don't really use it, but doesn't hurt to set one */ if (flags & crm_ipc_server_free) { - crm_trace("Sending the original to %p[%d]", c->ipcs, c->pid); + pcmk__trace("Sending the original to %p[%d]", c->ipcs, c->pid); add_event(c, iov); } else { struct iovec *iov_copy = pcmk__new_ipc_event(); - crm_trace("Sending a copy to %p[%d]", c->ipcs, c->pid); + pcmk__trace("Sending a copy to %p[%d]", c->ipcs, c->pid); iov_copy[0].iov_len = iov[0].iov_len; iov_copy[0].iov_base = malloc(iov[0].iov_len); memcpy(iov_copy[0].iov_base, iov[0].iov_base, iov[0].iov_len); @@ -742,8 +744,8 @@ pcmk__ipc_send_iov(pcmk__client_t *c, struct iovec *iov, uint32_t flags) header->qb.size, qb_rc, c->ipcs); } else { - crm_trace("Response %" PRId32 " sent, %zd bytes to %p[%u]", - header->qb.id, qb_rc, c->ipcs, c->pid); + pcmk__trace("Response %" PRId32 " sent, %zd bytes to %p[%u]", + header->qb.id, qb_rc, c->ipcs, c->pid); } if (flags & crm_ipc_server_free) { @@ -758,7 +760,7 @@ pcmk__ipc_send_iov(pcmk__client_t *c, struct iovec *iov, uint32_t flags) } if ((rc == EPIPE) || (rc == ENOTCONN)) { - crm_trace("Client %p disconnected", c->ipcs); + pcmk__trace("Client %p disconnected", c->ipcs); } return rc; } @@ -842,8 +844,8 @@ pcmk__ipc_send_ack_as(const char *function, int line, pcmk__client_t *c, xmlNode *ack = pcmk__ipc_create_ack_as(function, line, flags, tag, ver, status); if (ack != NULL) { - crm_trace("Ack'ing IPC message from client %s as <%s status=%d>", - pcmk__client_name(c), tag, status); + pcmk__trace("Ack'ing IPC message from client %s as <%s status=%d>", + pcmk__client_name(c), tag, status); crm_log_xml_trace(ack, "sent-ack"); c->request_id = 0; rc = pcmk__ipc_send_xml(c, request, ack, flags); diff --git a/lib/common/iso8601.c b/lib/common/iso8601.c index 99c210fdc69..91eac184004 100644 --- a/lib/common/iso8601.c +++ b/lib/common/iso8601.c @@ -186,8 +186,8 @@ crm_time_january1_weekday(int year) int G = YY + YY / 4; int jan1 = 1 + (((((C / 100) % 4) * 5) + G) % 7); - crm_trace("YY=%d, C=%d, G=%d", YY, C, G); - crm_trace("January 1 %.4d: %d", year, jan1); + pcmk__trace("YY=%d, C=%d, G=%d", YY, C, G); + pcmk__trace("January 1 %.4d: %d", year, jan1); return jan1; } @@ -306,8 +306,8 @@ crm_time_get_sec(int sec, uint32_t *h, uint32_t *m, uint32_t *s) minutes = seconds / 60; seconds -= 60 * minutes; - crm_trace("%d == %.2" PRIu32 ":%.2" PRIu32 ":%.2" PRIu32, - sec, hours, minutes, seconds); + pcmk__trace("%d == %.2" PRIu32 ":%.2" PRIu32 ":%.2" PRIu32, sec, hours, + minutes, seconds); *h = hours; *m = minutes; @@ -409,7 +409,8 @@ crm_time_get_gregorian(const crm_time_t *dt, uint32_t *y, uint32_t *m, *y = dt->years; *m = months; *d = days; - crm_trace("%.4d-%.3d -> %.4d-%.2d-%.2d", dt->years, dt->days, dt->years, months, days); + pcmk__trace("%.4d-%.3d -> %.4d-%.2d-%.2d", dt->years, dt->days, dt->years, + months, days); return TRUE; } @@ -441,7 +442,7 @@ crm_time_get_isoweek(const crm_time_t *dt, uint32_t *y, uint32_t *w, /* 7. Find if Y M D falls in YearNumber Y-1, WeekNumber 52 or 53 */ if (dt->days <= (8 - jan1) && jan1 > 4) { - crm_trace("year--, jan1=%d", jan1); + pcmk__trace("year--, jan1=%d", jan1); year_num = dt->years - 1; *w = crm_time_weeks_in_year(year_num); @@ -455,7 +456,8 @@ crm_time_get_isoweek(const crm_time_t *dt, uint32_t *y, uint32_t *w, int correction = 4 - *d; if ((dmax - dt->days) < correction) { - crm_trace("year++, jan1=%d, i=%d vs. %d", jan1, dmax - dt->days, correction); + pcmk__trace("year++, jan1=%d, i=%d vs. %d", jan1, (dmax - dt->days), + correction); year_num = dt->years + 1; *w = 1; } @@ -472,8 +474,8 @@ crm_time_get_isoweek(const crm_time_t *dt, uint32_t *y, uint32_t *w, } *y = year_num; - crm_trace("Converted %.4d-%.3d to %.4" PRIu32 "-W%.2" PRIu32 "-%" PRIu32, - dt->years, dt->days, *y, *w, *d); + pcmk__trace("Converted %.4d-%.3d to %.4" PRIu32 "-W%.2" PRIu32 "-%" PRIu32, + dt->years, dt->days, *y, *w, *d); return TRUE; } @@ -633,7 +635,7 @@ time_as_string_common(const crm_time_t *dt, int usec, uint32_t flags, // Convert to UTC if local timezone was not requested if ((dt->offset != 0) && !pcmk__is_set(flags, crm_time_log_with_timezone)) { - crm_trace("UTC conversion"); + pcmk__trace("UTC conversion"); utc = crm_get_utc_time(dt); dt = utc; } @@ -757,8 +759,8 @@ crm_time_parse_sec(const char *time_str, int *result) return FALSE; } - crm_trace("Got valid time: %.2" PRIu32 ":%.2" PRIu32 ":%.2" PRIu32, - hour, minute, second); + pcmk__trace("Got valid time: %.2" PRIu32 ":%.2" PRIu32 ":%.2" PRIu32, + hour, minute, second); if ((hour == 24) && (minute == 0) && (second == 0)) { // Equivalent to 00:00:00 of next day, return number of seconds in day @@ -873,8 +875,8 @@ crm_time_parse(const char *time_str, crm_time_t *a_time) return FALSE; } crm_time_get_sec(a_time->offset, &h, &m, &s); - crm_trace("Got tz: %c%2." PRIu32 ":%.2" PRIu32, - (a_time->offset < 0)? '-' : '+', h, m); + pcmk__trace("Got tz: %c%2." PRIu32 ":%.2" PRIu32, + (a_time->offset < 0)? '-' : '+', h, m); if (a_time->seconds == DAY_SECONDS) { // 24:00:00 == 00:00:00 of next day @@ -964,8 +966,9 @@ parse_date(const char *date_str) } else { dt->years = year; dt->days = get_ordinal_days(year, month, day); - crm_trace("Parsed Gregorian date '%.4" PRIu32 "-%.3d' " - "from date string '%s'", year, dt->days, date_str); + pcmk__trace("Parsed Gregorian date '%.4" PRIu32 "-%.3d' from date " + "string '%s'", + year, dt->days, date_str); } goto parse_time; } @@ -985,8 +988,8 @@ parse_date(const char *date_str) date_str, day, year, year_days(year)); goto invalid; } - crm_trace("Parsed ordinal year %d and days %d from date string '%s'", - year, day, date_str); + pcmk__trace("Parsed ordinal year %d and days %d from date string '%s'", + year, day, date_str); dt->days = day; dt->years = year; goto parse_time; @@ -1021,9 +1024,9 @@ parse_date(const char *date_str) */ int jan1 = crm_time_january1_weekday(year); - crm_trace("Parsed year %" PRIu32 " (Jan 1 = %d), week %" PRIu32 - ", and day %" PRIu32 " from date string '%s'", - year, jan1, week, day, date_str); + pcmk__trace("Parsed year %" PRIu32 " (Jan 1 = %d), week %" PRIu32 + ", and day %" PRIu32 " from date string '%s'", + year, jan1, week, day, date_str); dt->years = year; crm_time_add_days(dt, (week - 1) * 7); @@ -1399,7 +1402,7 @@ crm_time_free_period(crm_time_period_t *period) void crm_time_set(crm_time_t *target, const crm_time_t *source) { - crm_trace("target=%p, source=%p", target, source); + pcmk__trace("target=%p, source=%p", target, source); CRM_CHECK(target != NULL && source != NULL, return); @@ -1457,8 +1460,8 @@ ha_set_tm_time(crm_time_t *target, const struct tm *source) /* tm_gmtoff == offset from UTC in seconds */ h_offset = GMTOFF(source) / HOUR_SECONDS; m_offset = (GMTOFF(source) - (HOUR_SECONDS * h_offset)) / 60; - crm_trace("Time offset is %lds (%.2d:%.2d)", - GMTOFF(source), h_offset, m_offset); + pcmk__trace("Time offset is %lds (%.2d:%.2d)", GMTOFF(source), h_offset, + m_offset); target->offset += HOUR_SECONDS * h_offset; target->offset += 60 * m_offset; @@ -1738,17 +1741,15 @@ crm_time_check(const crm_time_t *dt) && (dt->seconds >= 0) && (dt->seconds < DAY_SECONDS); } -#define do_cmp_field(l, r, field) \ - if(rc == 0) { \ - if(l->field > r->field) { \ - crm_trace("%s: %d > %d", \ - #field, l->field, r->field); \ - rc = 1; \ - } else if(l->field < r->field) { \ - crm_trace("%s: %d < %d", \ - #field, l->field, r->field); \ - rc = -1; \ - } \ +#define do_cmp_field(l, r, field) \ + if (rc == 0) { \ + if (l->field > r->field) { \ + pcmk__trace("%s: %d > %d", #field, l->field, r->field); \ + rc = 1; \ + } else if (l->field < r->field) { \ + pcmk__trace("%s: %d < %d", #field, l->field, r->field); \ + rc = -1; \ + } \ } int @@ -1788,8 +1789,8 @@ crm_time_add_seconds(crm_time_t *a_time, int extra) pcmk__assert(a_time != NULL); - crm_trace("Adding %d seconds (including %d whole day%s) to %d", - extra, days, pcmk__plural_s(days), a_time->seconds); + pcmk__trace("Adding %d seconds (including %d whole day%s) to %d", extra, + days, pcmk__plural_s(days), a_time->seconds); a_time->seconds += extra % DAY_SECONDS; @@ -1819,7 +1820,8 @@ crm_time_add_days(crm_time_t *a_time, int extra) { pcmk__assert(a_time != NULL); - crm_trace("Adding %d days to %.4d-%.3d", extra, a_time->years, a_time->days); + pcmk__trace("Adding %d days to %.4d-%.3d", extra, a_time->years, + a_time->days); if (extra > 0) { while ((a_time->days + (long long) extra) > ydays(a_time)) { @@ -1852,8 +1854,8 @@ crm_time_add_months(crm_time_t * a_time, int extra) uint32_t y, m, d, dmax; crm_time_get_gregorian(a_time, &y, &m, &d); - crm_trace("Adding %d months to %.4" PRIu32 "-%.2" PRIu32 "-%.2" PRIu32, - extra, y, m, d); + pcmk__trace("Adding %d months to %.4" PRIu32 "-%.2" PRIu32 "-%.2" PRIu32, + extra, y, m, d); if (extra > 0) { for (lpc = extra; lpc > 0; lpc--) { @@ -1879,13 +1881,13 @@ crm_time_add_months(crm_time_t * a_time, int extra) d = dmax; } - crm_trace("Calculated %.4" PRIu32 "-%.2" PRIu32 "-%.2" PRIu32, y, m, d); + pcmk__trace("Calculated %.4" PRIu32 "-%.2" PRIu32 "-%.2" PRIu32, y, m, d); a_time->years = y; a_time->days = get_ordinal_days(y, m, d); crm_time_get_gregorian(a_time, &y, &m, &d); - crm_trace("Got %.4" PRIu32 "-%.2" PRIu32 "-%.2" PRIu32, y, m, d); + pcmk__trace("Got %.4" PRIu32 "-%.2" PRIu32 "-%.2" PRIu32, y, m, d); } void diff --git a/lib/common/logging.c b/lib/common/logging.c index d963a2c62b0..9900bc65a21 100644 --- a/lib/common/logging.c +++ b/lib/common/logging.c @@ -477,8 +477,9 @@ crm_control_blackbox(int nsig, bool enable) blackbox_trigger = qb_log_custom_open(blackbox_logger, NULL, NULL, NULL); qb_log_ctl(blackbox_trigger, QB_LOG_CONF_ENABLED, QB_TRUE); - crm_trace("Trigger: %d is %d %d", blackbox_trigger, - qb_log_ctl(blackbox_trigger, QB_LOG_CONF_STATE_GET, 0), QB_LOG_STATE_ENABLED); + pcmk__trace("Trigger: %d is %d %d", blackbox_trigger, + qb_log_ctl(blackbox_trigger, QB_LOG_CONF_STATE_GET, 0), + QB_LOG_STATE_ENABLED); crm_update_callsites(); @@ -1001,7 +1002,7 @@ crm_log_init(const char *entity, uint8_t level, gboolean daemon, gboolean to_std } /* Summary */ - crm_trace("Quiet: %d, facility %s", quiet, f_copy); + pcmk__trace("Quiet: %d, facility %s", quiet, f_copy); pcmk__env_option(PCMK__ENV_LOGFILE); pcmk__env_option(PCMK__ENV_LOGFACILITY); @@ -1014,7 +1015,7 @@ crm_log_init(const char *entity, uint8_t level, gboolean daemon, gboolean to_std const char *user = getenv("USER"); if (user != NULL && !pcmk__strcase_any_of(user, "root", CRM_DAEMON_USER, NULL)) { - crm_trace("Not switching to corefile directory for %s", user); + pcmk__trace("Not switching to corefile directory for %s", user); pcmk__is_daemon = false; } } @@ -1027,7 +1028,8 @@ crm_log_init(const char *entity, uint8_t level, gboolean daemon, gboolean to_std crm_perror(LOG_ERR, "Cannot get name for uid: %d", user); } else if (!pcmk__strcase_any_of(pwent->pw_name, "root", CRM_DAEMON_USER, NULL)) { - crm_trace("Don't change active directory for regular user: %s", pwent->pw_name); + pcmk__trace("Don't change active directory for regular user: %s", + pwent->pw_name); } else if (chdir(CRM_CORE_DIR) < 0) { crm_perror(LOG_INFO, "Cannot change active directory to " CRM_CORE_DIR); @@ -1067,7 +1069,7 @@ set_crm_log_level(unsigned int level) } crm_log_level = level; crm_update_callsites(); - crm_trace("New log level: %d", level); + pcmk__trace("New log level: %d", level); return old; } diff --git a/lib/common/mainloop.c b/lib/common/mainloop.c index 95dc3451055..cbf0abefe65 100644 --- a/lib/common/mainloop.c +++ b/lib/common/mainloop.c @@ -115,7 +115,7 @@ crm_trigger_dispatch(GSource *source, GSourceFunc callback, gpointer userdata) int callback_rc = callback(trig->user_data); if (callback_rc < 0) { - crm_trace("Trigger handler %p not yet complete", trig); + pcmk__trace("Trigger handler %p not yet complete", trig); trig->running = TRUE; } else if (callback_rc == 0) { rc = G_SOURCE_REMOVE; @@ -127,7 +127,7 @@ crm_trigger_dispatch(GSource *source, GSourceFunc callback, gpointer userdata) static void crm_trigger_finalize(GSource * source) { - crm_trace("Trigger %p destroyed", source); + pcmk__trace("Trigger %p destroyed", source); } static GSourceFuncs crm_trigger_funcs = { @@ -163,7 +163,7 @@ mainloop_setup_trigger(GSource * source, int priority, int (*dispatch) (gpointer void mainloop_trigger_complete(crm_trigger_t * trig) { - crm_trace("Trigger handler %p complete", trig); + pcmk__trace("Trigger handler %p complete", trig); trig->running = FALSE; } @@ -333,7 +333,7 @@ mainloop_destroy_signal_entry(int sig) if (tmp != NULL) { crm_signals[sig] = NULL; - crm_trace("Unregistering mainloop handler for signal %d", sig); + pcmk__trace("Unregistering mainloop handler for signal %d", sig); mainloop_destroy_trigger((crm_trigger_t *) tmp); } } @@ -368,7 +368,7 @@ mainloop_add_signal(int sig, void (*dispatch) (int sig)) return FALSE; } else if (crm_signals[sig] != NULL && crm_signals[sig]->handler == dispatch) { - crm_trace("Signal handler for %d is already installed", sig); + pcmk__trace("Signal handler for %d is already installed", sig); return TRUE; } else if (crm_signals[sig] != NULL) { @@ -444,7 +444,7 @@ gio_read_socket(GIOChannel * gio, GIOCondition condition, gpointer data) struct gio_to_qb_poll *adaptor = (struct gio_to_qb_poll *)data; gint fd = g_io_channel_unix_get_fd(gio); - crm_trace("%p.%d %d", data, fd, condition); + pcmk__trace("%p.%d %d", data, fd, condition); /* if this assert get's hit, then there is a race condition between * when we destroy a fd and when mainloop actually gives it up */ @@ -462,7 +462,7 @@ gio_poll_destroy(gpointer data) pcmk__assert(adaptor->is_used >= 0); if (adaptor->is_used == 0) { - crm_trace("Marking adaptor %p unused", adaptor); + pcmk__trace("Marking adaptor %p unused", adaptor); adaptor->source = 0; } } @@ -518,7 +518,7 @@ gio_poll_dispatch_update(enum qb_loop_priority p, int32_t fd, int32_t evts, return res; } - crm_trace("Adding fd=%d to mainloop as adaptor %p", fd, adaptor); + pcmk__trace("Adding fd=%d to mainloop as adaptor %p", fd, adaptor); if (add && adaptor->source) { pcmk__err("Adaptor for descriptor %d is still in-use", fd); @@ -564,7 +564,7 @@ gio_poll_dispatch_update(enum qb_loop_priority p, int32_t fd, int32_t evts, */ g_io_channel_unref(channel); - crm_trace("Added to mainloop with gsource id=%d", adaptor->source); + pcmk__trace("Added to mainloop with gsource id=%d", adaptor->source); if (adaptor->source > 0) { return 0; } @@ -591,7 +591,7 @@ gio_poll_dispatch_del(int32_t fd) { struct gio_to_qb_poll *adaptor; - crm_trace("Looking for fd=%d", fd); + pcmk__trace("Looking for fd=%d", fd); if (qb_array_index(gio_map, fd, (void **)&adaptor) == 0) { if (adaptor->source) { g_source_remove(adaptor->source); @@ -727,17 +727,18 @@ mainloop_gio_callback(GIOChannel *gio, GIOCondition condition, gpointer data) do { read_rc = crm_ipc_read(client->ipc); if (read_rc <= 0) { - crm_trace("Could not read IPC message from %s: %s (%ld)", - client->name, pcmk_strerror(read_rc), read_rc); + pcmk__trace("Could not read IPC message from %s: %s (%ld)", + client->name, pcmk_strerror(read_rc), read_rc); } else if (client->dispatch_fn_ipc) { const char *buffer = crm_ipc_buffer(client->ipc); - crm_trace("New %ld-byte IPC message from %s " - "after I/O condition %d", - read_rc, client->name, (int) condition); + pcmk__trace("New %ld-byte IPC message from %s after I/O " + "condition %d", + read_rc, client->name, (int) condition); if (client->dispatch_fn_ipc(buffer, read_rc, client->userdata) < 0) { - crm_trace("Connection to %s no longer required", client->name); + pcmk__trace("Connection to %s no longer required", + client->name); rc = G_SOURCE_REMOVE; } } @@ -745,11 +746,12 @@ mainloop_gio_callback(GIOChannel *gio, GIOCondition condition, gpointer data) } while ((rc == G_SOURCE_CONTINUE) && (read_rc > 0) && --max > 0); } else { - crm_trace("New I/O event for %s after I/O condition %d", - client->name, (int) condition); + pcmk__trace("New I/O event for %s after I/O condition %d", + client->name, (int) condition); if (client->dispatch_fn_io) { if (client->dispatch_fn_io(client->userdata) < 0) { - crm_trace("Connection to %s no longer required", client->name); + pcmk__trace("Connection to %s no longer required", + client->name); rc = G_SOURCE_REMOVE; } } @@ -762,8 +764,8 @@ mainloop_gio_callback(GIOChannel *gio, GIOCondition condition, gpointer data) rc = G_SOURCE_REMOVE; } else if (condition & (G_IO_HUP | G_IO_NVAL | G_IO_ERR)) { - crm_trace("The connection %s[%p] has been closed (I/O condition=%d)", - client->name, client, condition); + pcmk__trace("The connection %s[%p] has been closed (I/O condition=%d)", + client->name, client, condition); rc = G_SOURCE_REMOVE; } else if ((condition & G_IO_IN) == 0) { @@ -812,7 +814,7 @@ mainloop_gio_destroy(gpointer c) /* client->source is valid but about to be destroyed (ref_count == 0) in gmain.c * client->channel will still have ref_count > 0... should be == 1 */ - crm_trace("Destroying client %s[%p]", c_name, c); + pcmk__trace("Destroying client %s[%p]", c_name, c); if (client->ipc) { crm_ipc_close(client->ipc); @@ -832,7 +834,7 @@ mainloop_gio_destroy(gpointer c) crm_ipc_destroy(ipc); } - crm_trace("Destroyed client %s[%p]", c_name, c); + pcmk__trace("Destroyed client %s[%p]", c_name, c); free(client->name); client->name = NULL; free(client); @@ -989,7 +991,8 @@ mainloop_add_fd(const char *name, int priority, int fd, void *userdata, * shortly after mainloop_gio_destroy() completes */ g_io_channel_unref(client->channel); - crm_trace("Added connection %d for %s[%p].%d", client->source, client->name, client, fd); + pcmk__trace("Added connection %d for %s[%p].%d", client->source, + client->name, client, fd); } else { errno = EINVAL; } @@ -1001,7 +1004,7 @@ void mainloop_del_fd(mainloop_io_t * client) { if (client != NULL) { - crm_trace("Removing client %s[%p]", client->name, client); + pcmk__trace("Removing client %s[%p]", client->name, client); if (client->source) { /* Results in mainloop_gio_destroy() being called just * before the source is removed from mainloop @@ -1048,7 +1051,7 @@ static void child_free(mainloop_child_t *child) { if (child->timerid != 0) { - crm_trace("Removing timer %d", child->timerid); + pcmk__trace("Removing timer %d", child->timerid); g_source_remove(child->timerid); child->timerid = 0; } @@ -1118,8 +1121,8 @@ child_waitpid(mainloop_child_t *child, int flags) rc = waitpid(child->pid, &status, flags); if (rc == 0) { // WNOHANG in flags, and child status is not available - crm_trace("Child process %d (%s) still active", - child->pid, child->desc); + pcmk__trace("Child process %lld (%s) still active", + (long long) child->pid, child->desc); callback_needed = false; } else if (rc != child->pid) { @@ -1139,13 +1142,14 @@ child_waitpid(mainloop_child_t *child, int flags) } else if (WIFEXITED(status)) { exitcode = WEXITSTATUS(status); - crm_trace("Child process %d (%s) exited with status %d", - child->pid, child->desc, exitcode); + pcmk__trace("Child process %lld (%s) exited with status %d", + (long long) child->pid, child->desc, exitcode); } else if (WIFSIGNALED(status)) { signo = WTERMSIG(status); - crm_trace("Child process %d (%s) exited with signal %d (%s)", - child->pid, child->desc, signo, strsignal(signo)); + pcmk__trace("Child process %lld (%s) exited with signal %d (%s)", + (long long) child->pid, child->desc, signo, + strsignal(signo)); #ifdef WCOREDUMP // AIX, SunOS, maybe others } else if (WCOREDUMP(status)) { @@ -1154,8 +1158,8 @@ child_waitpid(mainloop_child_t *child, int flags) #endif } else { // flags must contain WUNTRACED and/or WCONTINUED to reach this - crm_trace("Child process %d (%s) stopped or continued", - child->pid, child->desc); + pcmk__trace("Child process %lld (%s) stopped or continued", + (long long) child->pid, child->desc); callback_needed = false; } @@ -1174,8 +1178,8 @@ child_death_dispatch(int signal) iter = iter->next; if (child_waitpid(child, WNOHANG)) { - crm_trace("Removing completed process %d from child list", - child->pid); + pcmk__trace("Removing completed process %lld from child list", + (long long) child->pid); child_list = g_list_remove_link(child_list, saved); g_list_free(saved); child_free(child); @@ -1186,7 +1190,7 @@ child_death_dispatch(int signal) static gboolean child_signal_init(gpointer p) { - crm_trace("Installed SIGCHLD handler"); + pcmk__trace("Installed SIGCHLD handler"); /* Do NOT use g_child_watch_add() and friends, they rely on pthreads */ mainloop_add_signal(SIGCHLD, child_death_dispatch); @@ -1223,8 +1227,8 @@ mainloop_child_kill(pid_t pid) * return code/status). The blocking alternative would be to call * child_waitpid(match, 0). */ - crm_trace("Waiting for signal that child process %d completed", - match->pid); + pcmk__trace("Waiting for signal that child process %lld completed", + (long long) match->pid); return TRUE; } else if(rc != 0) { @@ -1304,10 +1308,10 @@ mainloop_timer_cb(gpointer user_data) */ if(t->cb) { - crm_trace("Invoking callbacks for timer %s", t->name); + pcmk__trace("Invoking callbacks for timer %s", t->name); repeat = t->repeat; if(t->cb(t->userdata) == FALSE) { - crm_trace("Timer %s complete", t->name); + pcmk__trace("Timer %s complete", t->name); repeat = FALSE; } } @@ -1334,7 +1338,7 @@ mainloop_timer_start(mainloop_timer_t *t) { mainloop_timer_stop(t); if(t && t->period_ms > 0) { - crm_trace("Starting timer %s", t->name); + pcmk__trace("Starting timer %s", t->name); t->id = pcmk__create_timer(t->period_ms, mainloop_timer_cb, t); } } @@ -1343,7 +1347,7 @@ void mainloop_timer_stop(mainloop_timer_t *t) { if(t && t->id != 0) { - crm_trace("Stopping timer %s", t->name); + pcmk__trace("Stopping timer %s", t->name); g_source_remove(t->id); t->id = 0; } @@ -1380,7 +1384,7 @@ mainloop_timer_add(const char *name, guint period_ms, bool repeat, GSourceFunc c t->repeat = repeat; t->cb = cb; t->userdata = userdata; - crm_trace("Created timer %s with %p %p", t->name, userdata, t->userdata); + pcmk__trace("Created timer %s with %p %p", t->name, userdata, t->userdata); return t; } @@ -1388,7 +1392,7 @@ void mainloop_timer_del(mainloop_timer_t *t) { if(t) { - crm_trace("Destroying timer %s", t->name); + pcmk__trace("Destroying timer %s", t->name); mainloop_timer_stop(t); free(t->name); free(t); diff --git a/lib/common/messages.c b/lib/common/messages.c index a835b0134c2..f534ee68855 100644 --- a/lib/common/messages.c +++ b/lib/common/messages.c @@ -155,7 +155,7 @@ pcmk__new_reply_as(const char *origin, const xmlNode *original_request, /* Replies should only be generated for request messages, but it's possible * we expect replies to other messages right now so this can't be enforced. */ - crm_trace("Creating a reply for a non-request original message"); + pcmk__trace("Creating a reply for a non-request original message"); } // Since this is a reply, we reverse the sender and recipient info diff --git a/lib/common/nodes.c b/lib/common/nodes.c index b09a368ad1d..94a20bd13b0 100644 --- a/lib/common/nodes.c +++ b/lib/common/nodes.c @@ -22,6 +22,7 @@ void pcmk__free_node(gpointer user_data) { pcmk_node_t *node = user_data; + const bool is_remote = pcmk__is_pacemaker_remote_node(node); if (node == NULL) { return; @@ -34,8 +35,8 @@ pcmk__free_node(gpointer user_data) /* This may be called after freeing resources, which means that we can't * use node->private->name for Pacemaker Remote nodes. */ - crm_trace("Freeing node %s", (pcmk__is_pacemaker_remote_node(node)? - "(guest or remote)" : pcmk__node_name(node))); + pcmk__trace("Freeing node %s", + (is_remote? "(guest or remote)" : pcmk__node_name(node))); if (node->priv->attrs != NULL) { g_hash_table_destroy(node->priv->attrs); diff --git a/lib/common/nvpair.c b/lib/common/nvpair.c index 816a9533e0b..e0134b75b02 100644 --- a/lib/common/nvpair.c +++ b/lib/common/nvpair.c @@ -218,10 +218,10 @@ hash2smartfield(gpointer key, gpointer value, gpointer user_data) } else if (pcmk__xe_get(xml_node, name) == NULL) { pcmk__xe_set(xml_node, name, s_value); - crm_trace("dumped: %s=%s", name, s_value); + pcmk__trace("dumped: %s=%s", name, s_value); } else { - crm_trace("duplicate: %s=%s", name, s_value); + pcmk__trace("duplicate: %s=%s", name, s_value); } } @@ -248,7 +248,7 @@ hash2field(gpointer key, gpointer value, gpointer user_data) pcmk__xe_set(xml_node, name, s_value); } else { - crm_trace("duplicate: %s=%s", name, s_value); + pcmk__trace("duplicate: %s=%s", name, s_value); } } @@ -349,7 +349,7 @@ xml2list(const xmlNode *parent) nvpair_list = pcmk__xe_first_child(parent, PCMK__XE_ATTRIBUTES, NULL, NULL); if (nvpair_list == NULL) { - crm_trace("No attributes in %s", parent->name); + pcmk__trace("No attributes in %s", parent->name); crm_log_xml_trace(parent, "No attributes for resource op"); } @@ -361,7 +361,7 @@ xml2list(const xmlNode *parent) const char *p_name = (const char *)pIter->name; const char *p_value = pcmk__xml_attr_value(pIter); - crm_trace("Added %s=%s", p_name, p_value); + pcmk__trace("Added %s=%s", p_name, p_value); pcmk__insert_dup(nvpair_hash, p_name, p_value); } @@ -372,7 +372,7 @@ xml2list(const xmlNode *parent) const char *key = pcmk__xe_get(child, PCMK_XA_NAME); const char *value = pcmk__xe_get(child, PCMK_XA_VALUE); - crm_trace("Added %s=%s", key, value); + pcmk__trace("Added %s=%s", key, value); if (key != NULL && value != NULL) { pcmk__insert_dup(nvpair_hash, key, value); } @@ -426,8 +426,8 @@ unpack_nvpair(xmlNode *nvpair, void *userdata) } } else if ((old_value == NULL) || unpack_data->overwrite) { - crm_trace("Setting %s=\"%s\" (was %s)", - name, value, pcmk__s(old_value, "unset")); + pcmk__trace("Setting %s=\"%s\" (was %s)", name, value, + pcmk__s(old_value, "unset")); pcmk__insert_dup(unpack_data->values, name, value); } return pcmk_rc_ok; @@ -461,8 +461,9 @@ pcmk__unpack_nvpair_block(gpointer data, gpointer user_data) return; } - crm_trace("Adding name/value pairs from %s %s overwrite", - pcmk__xe_id(pair), (unpack_data->overwrite? "with" : "without")); + pcmk__trace("Adding name/value pairs from %s %s overwrite", + pcmk__xe_id(pair), + (unpack_data->overwrite? "with" : "without")); if (pcmk__xe_is(pair->children, PCMK__XE_ATTRIBUTES)) { pair = pair->children; } @@ -721,7 +722,7 @@ hash2nvpair(gpointer key, gpointer value, gpointer user_data) xmlNode *xml_node = user_data; crm_create_nvpair_xml(xml_node, name, name, s_value); - crm_trace("dumped: name=%s value=%s", name, s_value); + pcmk__trace("dumped: name=%s value=%s", name, s_value); } // LCOV_EXCL_STOP diff --git a/lib/common/options.c b/lib/common/options.c index f77e9da309d..3dfc83e52e5 100644 --- a/lib/common/options.c +++ b/lib/common/options.c @@ -1091,18 +1091,18 @@ pcmk__env_option(const char *option) } if (rv >= sizeof(env_name)) { - crm_trace("\"%s%s\" is too long", prefixes[i], option); + pcmk__trace("\"%s%s\" is too long", prefixes[i], option); continue; } value = getenv(env_name); if (value != NULL) { - crm_trace("Found %s = %s", env_name, value); + pcmk__trace("Found %s = %s", env_name, value); return value; } } - crm_trace("Nothing found for %s", option); + pcmk__trace("Nothing found for %s", option); return NULL; } @@ -1142,15 +1142,15 @@ pcmk__set_env_option(const char *option, const char *value, bool compat) } if (rv >= sizeof(env_name)) { - crm_trace("\"%s%s\" is too long", prefixes[i], option); + pcmk__trace("\"%s%s\" is too long", prefixes[i], option); continue; } if (value != NULL) { - crm_trace("Setting %s to %s", env_name, value); + pcmk__trace("Setting %s to %s", env_name, value); rv = setenv(env_name, value, 1); } else { - crm_trace("Unsetting %s", env_name); + pcmk__trace("Unsetting %s", env_name); rv = unsetenv(env_name); } @@ -1370,8 +1370,8 @@ cluster_option_value(GHashTable *table, const pcmk__cluster_option_t *option) value = option->default_value; if (value == NULL) { - crm_trace("No value or default provided for cluster option '%s'", - option->name); + pcmk__trace("No value or default provided for cluster option '%s'", + option->name); return NULL; } @@ -1380,8 +1380,8 @@ cluster_option_value(GHashTable *table, const pcmk__cluster_option_t *option) option->name); return NULL); - crm_trace("Using default value '%s' for cluster option '%s'", - value, option->name); + pcmk__trace("Using default value '%s' for cluster option '%s'", value, + option->name); if (table != NULL) { pcmk__insert_dup(table, option->name, value); } diff --git a/lib/common/patchset.c b/lib/common/patchset.c index 8003d725b86..66f26974d8a 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -137,9 +137,8 @@ add_xml_changes_to_patchset(xmlNode *xml, xmlNode *patchset) if ((patchset != NULL) && pcmk__is_set(nodepriv->flags, pcmk__xf_moved)) { GString *xpath = pcmk__element_xpath(xml); - crm_trace("%s.%s moved to position %d", - xml->name, pcmk__xe_id(xml), - pcmk__xml_position(xml, pcmk__xf_skip)); + pcmk__trace("%s.%s moved to position %d", xml->name, pcmk__xe_id(xml), + pcmk__xml_position(xml, pcmk__xf_skip)); if (xpath != NULL) { change = pcmk__xe_create(patchset, PCMK_XE_CHANGE); @@ -261,7 +260,7 @@ xml_create_patchset(int format, xmlNode *source, xmlNode *target, if ((target == NULL) || !pcmk__xml_doc_all_flags_set(target->doc, pcmk__xf_dirty)) { - crm_trace("No change %d", format); + pcmk__trace("No change %d", format); return NULL; } @@ -361,13 +360,13 @@ pcmk__xml_patchset_versions(const xmlNode *patchset, int source[3], &(source[i])) != pcmk_rc_ok) { return EINVAL; } - crm_trace("Got %d for source[%s]", source[i], vfields[i]); + pcmk__trace("Got %d for source[%s]", source[i], vfields[i]); if (pcmk__xe_get_int(target_xml, vfields[i], &(target[i])) != pcmk_rc_ok) { return EINVAL; } - crm_trace("Got %d for target[%s]", target[i], vfields[i]); + pcmk__trace("Got %d for target[%s]", target[i], vfields[i]); } return pcmk_rc_ok; @@ -399,9 +398,8 @@ check_patchset_versions(const xmlNode *cib_root, const xmlNode *patchset) */ if (pcmk__xe_get_int(cib_root, vfields[i], &(current[i])) == pcmk_rc_ok) { - crm_trace("Got %d for current[%s]%s", - current[i], vfields[i], - ((current[i] < 0)? ", using 0" : "")); + pcmk__trace("Got %d for current[%s]%s", current[i], vfields[i], + ((current[i] < 0)? ", using 0" : "")); } else { pcmk__debug("Failed to get value for current[%s], using 0", vfields[i]); @@ -520,7 +518,6 @@ search_v2_xpath(const xmlNode *top, const char *key, int target_position) char *remainder; char *id; char *tag; - char *path = NULL; int rc; size_t key_len; @@ -572,9 +569,15 @@ search_v2_xpath(const xmlNode *top, const char *key, int target_position) } while ((rc == 2) && target); if (target) { - crm_trace("Found %s for %s", - (path = (char *) xmlGetNodePath(target)), key); - free(path); + pcmk__if_tracing( + { + char *path = (char *) xmlGetNodePath(target); + + pcmk__trace("Found %s for %s", path, key); + free(path); + }, + {} + ); } else { pcmk__debug("No match for %s", key); } @@ -640,7 +643,7 @@ apply_v2_patchset(xmlNode *xml, const xmlNode *patchset) continue; } - crm_trace("Processing %s %s", change->name, op); + pcmk__trace("Processing %s %s", change->name, op); /* PCMK_VALUE_DELETE changes for XML comments are generated with * PCMK_XE_POSITION @@ -649,7 +652,7 @@ apply_v2_patchset(xmlNode *xml, const xmlNode *patchset) pcmk__xe_get_int(change, PCMK_XE_POSITION, &position); } match = search_v2_xpath(xml, xpath, position); - crm_trace("Performing %s on %s with %p", op, xpath, match); + pcmk__trace("Performing %s on %s with %p", op, xpath, match); if ((match == NULL) && (strcmp(op, PCMK_VALUE_DELETE) == 0)) { pcmk__debug("No %s match for %s in %p", op, xpath, xml->doc); @@ -723,7 +726,7 @@ apply_v2_patchset(xmlNode *xml, const xmlNode *patchset) op = pcmk__xe_get(change, PCMK_XA_OPERATION); xpath = pcmk__xe_get(change, PCMK_XA_PATH); - crm_trace("Continue performing %s on %s with %p", op, xpath, match); + pcmk__trace("Continue performing %s on %s with %p", op, xpath, match); if (strcmp(op, PCMK_VALUE_CREATE) == 0) { int position = 0; @@ -741,12 +744,12 @@ apply_v2_patchset(xmlNode *xml, const xmlNode *patchset) child = pcmk__xml_copy(match, change->children); if (match_child != NULL) { - crm_trace("Adding %s at position %d", child->name, position); + pcmk__trace("Adding %s at position %d", child->name, position); xmlAddPrevSibling(match_child, child); } else { - crm_trace("Adding %s at position %d (end)", - child->name, position); + pcmk__trace("Adding %s at position %d (end)", child->name, + position); } } else if (strcmp(op, PCMK_VALUE_MOVE) == 0) { @@ -769,11 +772,13 @@ apply_v2_patchset(xmlNode *xml, const xmlNode *patchset) match_child = match_child->next; } - crm_trace("Moving %s to position %d (was %d, prev %p, %s %p)", - match->name, position, - pcmk__xml_position(match, pcmk__xf_skip), - match->prev, (match_child? "next":"last"), - (match_child? match_child : match->parent->last)); + pcmk__trace("Moving %s to position %d (was %d, prev %p, %s %p)", + match->name, position, + pcmk__xml_position(match, pcmk__xf_skip), + match->prev, + ((match_child != NULL)? "next" : "last"), + ((match_child != NULL)? match_child + : match->parent->last)); if (match_child) { xmlAddPrevSibling(match_child, match); @@ -784,8 +789,8 @@ apply_v2_patchset(xmlNode *xml, const xmlNode *patchset) } } else { - crm_trace("%s is already in position %d", - match->name, position); + pcmk__trace("%s is already in position %d", match->name, + position); } if (position != pcmk__xml_position(match, pcmk__xf_skip)) { @@ -862,8 +867,8 @@ xml_apply_patchset(xmlNode *xml, const xmlNode *patchset, bool check_version) ); } else { - crm_trace("v%d digest matched: expected %s, calculated %s", - format, digest, new_digest); + pcmk__trace("v%d digest matched: expected %s, calculated %s", + format, digest, new_digest); } free(new_digest); } @@ -964,14 +969,14 @@ xml_patch_versions(const xmlNode *patchset, int add[3], int del[3]) if (source != NULL) { for (int i = 0; i < PCMK__NELEM(vfields); i++) { pcmk__xe_get_int(source, vfields[i], &(del[i])); - crm_trace("Got %d for del[%s]", del[i], vfields[i]); + pcmk__trace("Got %d for del[%s]", del[i], vfields[i]); } } if (target != NULL) { for (int i = 0; i < PCMK__NELEM(vfields); i++) { pcmk__xe_get_int(target, vfields[i], &(add[i])); - crm_trace("Got %d for add[%s]", add[i], vfields[i]); + pcmk__trace("Got %d for add[%s]", add[i], vfields[i]); } } return false; diff --git a/lib/common/patchset_display.c b/lib/common/patchset_display.c index c8b61212133..4c773b614d0 100644 --- a/lib/common/patchset_display.c +++ b/lib/common/patchset_display.c @@ -204,7 +204,7 @@ xml_patchset_default(pcmk__output_t *out, va_list args) int format = 1; if (patchset == NULL) { - crm_trace("Empty patch"); + pcmk__trace("Empty patch"); return pcmk_rc_no_output; } @@ -248,7 +248,7 @@ xml_patchset_log(pcmk__output_t *out, va_list args) } if (patchset == NULL) { - crm_trace("Empty patch"); + pcmk__trace("Empty patch"); return pcmk_rc_no_output; } @@ -303,7 +303,7 @@ xml_patchset_xml(pcmk__output_t *out, va_list args) g_string_free(buf, TRUE); return pcmk_rc_ok; } - crm_trace("Empty patch"); + pcmk__trace("Empty patch"); return pcmk_rc_no_output; } diff --git a/lib/common/pid.c b/lib/common/pid.c index 5efe9ca7598..f4ae4a13b57 100644 --- a/lib/common/pid.c +++ b/lib/common/pid.c @@ -139,7 +139,7 @@ pcmk__read_pidfile(const char *filename, pid_t *pid) } else { rc = pcmk_rc_ok; *pid = (pid_t) pid_read; - crm_trace("Read pid %lld from %s", pid_read, filename); + pcmk__trace("Read pid %lld from %s", pid_read, filename); } } else if (rc == 0) { rc = ENODATA; diff --git a/lib/common/procfs.c b/lib/common/procfs.c index 813b7af6b92..e76bbd38f26 100644 --- a/lib/common/procfs.c +++ b/lib/common/procfs.c @@ -373,7 +373,7 @@ pcmk__throttle_cib_load(const char *server, float *load) } ticks_per_s = sysconf(_SC_CLK_TCK); - crm_trace("Found %s", loadfile); + pcmk__trace("Found %s", loadfile); } stream = fopen(loadfile, "r"); diff --git a/lib/common/remote.c b/lib/common/remote.c index ee9fd34e6d4..509f8ff61b5 100644 --- a/lib/common/remote.c +++ b/lib/common/remote.c @@ -137,13 +137,13 @@ send_tls(gnutls_session_t session, struct iovec *iov) return EINVAL; } - crm_trace("Sending TLS message of %zu bytes", unsent_len); + pcmk__trace("Sending TLS message of %zu bytes", unsent_len); while (true) { gnutls_rc = gnutls_record_send(session, unsent, unsent_len); if (gnutls_rc == GNUTLS_E_INTERRUPTED || gnutls_rc == GNUTLS_E_AGAIN) { - crm_trace("Retrying to send %zu bytes remaining", unsent_len); + pcmk__trace("Retrying to send %zu bytes remaining", unsent_len); } else if (gnutls_rc < 0) { // Caller can log as error if necessary @@ -152,11 +152,12 @@ send_tls(gnutls_session_t session, struct iovec *iov) return ECONNABORTED; } else if (gnutls_rc < unsent_len) { - crm_trace("Sent %zd of %zu bytes remaining", gnutls_rc, unsent_len); + pcmk__trace("Sent %zd of %zu bytes remaining", gnutls_rc, + unsent_len); unsent_len -= gnutls_rc; unsent += gnutls_rc; } else { - crm_trace("Sent all %zd bytes remaining", gnutls_rc); + pcmk__trace("Sent all %zd bytes remaining", gnutls_rc); break; } } @@ -183,8 +184,8 @@ send_plaintext(int sock, struct iovec *iov) int rc = errno; if ((rc == EINTR) || (rc == EAGAIN) || (rc == EWOULDBLOCK)) { - crm_trace("Retrying to send %zu bytes remaining to socket %d", - unsent_len, sock); + pcmk__trace("Retrying to send %zu bytes remaining to socket %d", + unsent_len, sock); continue; } @@ -194,13 +195,14 @@ send_plaintext(int sock, struct iovec *iov) return rc; } else if (write_rc < unsent_len) { - crm_trace("Sent %zd of %zu bytes remaining", write_rc, unsent_len); + pcmk__trace("Sent %zd of %zu bytes remaining", write_rc, + unsent_len); unsent += write_rc; unsent_len -= write_rc; } else { - crm_trace("Sent all %zd bytes remaining: %.100s", - write_rc, (char *) (iov->iov_base)); + pcmk__trace("Sent all %zd bytes remaining: %.100s", write_rc, + (const char *) iov->iov_base); return pcmk_rc_ok; } } @@ -305,8 +307,8 @@ pcmk__remote_message_xml(pcmk__remote_t *remote) char *uncompressed = pcmk__assert_alloc(1, header->payload_offset + size_u); - crm_trace("Decompressing message data %d bytes into %d bytes", - header->payload_compressed, size_u); + pcmk__trace("Decompressing message data %d bytes into %d bytes", + header->payload_compressed, size_u); rc = BZ2_bzBuffToBuffDecompress(uncompressed + header->payload_offset, &size_u, remote->buffer + header->payload_offset, @@ -391,7 +393,7 @@ pcmk__remote_ready(const pcmk__remote_t *remote, int timeout_ms) sock = get_remote_socket(remote); if (sock < 0) { - crm_trace("No longer connected"); + pcmk__trace("No longer connected"); return ENOTCONN; } @@ -448,7 +450,7 @@ pcmk__read_available_remote_data(pcmk__remote_t *remote) /* automatically grow the buffer when needed */ if(remote->buffer_size < read_len) { remote->buffer_size = 2 * read_len; - crm_trace("Expanding buffer to %zu bytes", remote->buffer_size); + pcmk__trace("Expanding buffer to %zu bytes", remote->buffer_size); remote->buffer = pcmk__realloc(remote->buffer, remote->buffer_size + 1); } @@ -482,8 +484,8 @@ pcmk__read_available_remote_data(pcmk__remote_t *remote) remote->buffer_offset += read_rc; /* always null terminate buffer, the +1 to alloc always allows for this. */ remote->buffer[remote->buffer_offset] = '\0'; - crm_trace("Received %zd more bytes (%zu total)", - read_rc, remote->buffer_offset); + pcmk__trace("Received %zd more bytes (%zu total)", read_rc, + remote->buffer_offset); } else if (read_rc == 0) { pcmk__debug("End of remote data encountered after %zu bytes", @@ -491,8 +493,8 @@ pcmk__read_available_remote_data(pcmk__remote_t *remote) return ENOTCONN; } else if ((rc == EINTR) || (rc == EAGAIN) || (rc == EWOULDBLOCK)) { - crm_trace("No data available for non-blocking remote read: %s (%d)", - pcmk_rc_str(rc), rc); + pcmk__trace("No data available for non-blocking remote read: %s (%d)", + pcmk_rc_str(rc), rc); } else { pcmk__debug("Error receiving remote data after %zu bytes: %s (%d)", @@ -503,11 +505,12 @@ pcmk__read_available_remote_data(pcmk__remote_t *remote) header = localized_remote_header(remote); if(header) { if(remote->buffer_offset < header->size_total) { - crm_trace("Read partial remote message (%zu of %" PRIu32 " bytes)", - remote->buffer_offset, header->size_total); + pcmk__trace("Read partial remote message (%zu of %" PRIu32 + " bytes)", + remote->buffer_offset, header->size_total); } else { - crm_trace("Read full remote message of %zu bytes", - remote->buffer_offset); + pcmk__trace("Read full remote message of %zu bytes", + remote->buffer_offset); return pcmk_rc_ok; } } @@ -541,8 +544,9 @@ pcmk__read_remote_message(pcmk__remote_t *remote, int timeout_ms) remaining_timeout = timeout_ms; while (remaining_timeout > 0) { - crm_trace("Waiting for remote data (%d ms of %d ms timeout remaining)", - remaining_timeout, timeout_ms); + pcmk__trace("Waiting for remote data (%d ms of %d ms timeout " + "remaining)", + remaining_timeout, timeout_ms); rc = pcmk__remote_ready(remote, remaining_timeout); if (rc == ETIME) { @@ -560,7 +564,7 @@ pcmk__read_remote_message(pcmk__remote_t *remote, int timeout_ms) if (rc == pcmk_rc_ok) { return rc; } else if (rc == EAGAIN) { - crm_trace("Waiting for more remote data"); + pcmk__trace("Waiting for more remote data"); } else { pcmk__debug("Could not receive remote data: %s " QB_XS " rc=%d", pcmk_rc_str(rc), rc); @@ -616,8 +620,8 @@ check_connect_finished(gpointer userdata) rc = ETIMEDOUT; } } - crm_trace("Could not check socket %d for connection success: %s (%d)", - cb_data->sock, pcmk_rc_str(rc), rc); + pcmk__trace("Could not check socket %d for connection success: %s (%d)", + cb_data->sock, pcmk_rc_str(rc), rc); } else if (rc == 0) { // select() timeout if ((time(NULL) - cb_data->start) < pcmk__timeout_ms2s(cb_data->timeout_ms)) { @@ -638,25 +642,27 @@ check_connect_finished(gpointer userdata) if (getsockopt(cb_data->sock, SOL_SOCKET, SO_ERROR, &error, &len) < 0) { rc = errno; - crm_trace("Couldn't check socket %d for connection errors: %s (%d)", - cb_data->sock, pcmk_rc_str(rc), rc); + pcmk__trace("Couldn't check socket %d for connection errors: %s " + "(%d)", + cb_data->sock, pcmk_rc_str(rc), rc); } else if (error != 0) { rc = error; - crm_trace("Socket %d connected with error: %s (%d)", - cb_data->sock, pcmk_rc_str(rc), rc); + pcmk__trace("Socket %d connected with error: %s (%d)", + cb_data->sock, pcmk_rc_str(rc), rc); } else { rc = pcmk_rc_ok; } } else { // Should not be possible - crm_trace("select() succeeded, but socket %d not in resulting " - "read/write sets", cb_data->sock); + pcmk__trace("select() succeeded, but socket %d not in resulting " + "read/write sets", + cb_data->sock); rc = EAGAIN; } dispatch_done: if (rc == pcmk_rc_ok) { - crm_trace("Socket %d is connected", cb_data->sock); + pcmk__trace("Socket %d is connected", cb_data->sock); } else { close(cb_data->sock); cb_data->sock = -1; @@ -746,8 +752,9 @@ connect_socket_retry(int sock, const struct sockaddr *addr, socklen_t addrlen, * working at the moment though. (See connect(2) regarding EINPROGRESS * for possible new handling needed.) */ - crm_trace("Scheduling check in %dms for whether connect to fd %d finished", - interval, sock); + pcmk__trace("Scheduling check in %dms for whether connect to fd %d " + "finished", + interval, sock); timer = pcmk__create_timer(interval, check_connect_finished, cb_data); if (timer_id) { *timer_id = timer; diff --git a/lib/common/results.c b/lib/common/results.c index ba7042f9d5e..d9b79c43d4c 100644 --- a/lib/common/results.c +++ b/lib/common/results.c @@ -201,11 +201,12 @@ fail_assert_as(const char *file, const char *function, int line, } while (errno == EINTR); if (errno == ECHILD) { // crm_mon ignores SIGCHLD - crm_trace("Cannot wait on forked child [%d] " - "(SIGCHLD is probably ignored)", pid); + pcmk__trace("Cannot wait on forked child [%lld] (SIGCHLD is " + "probably ignored)", + (long long) pid); } else { - pcmk__err("Cannot wait on forked child [%d]: %s", pid, - pcmk_rc_str(errno)); + pcmk__err("Cannot wait on forked child [%lld]: %s", + (long long) pid, pcmk_rc_str(errno)); } break; } diff --git a/lib/common/rules.c b/lib/common/rules.c index fa1bfbb4fdf..e11315bae9c 100644 --- a/lib/common/rules.c +++ b/lib/common/rules.c @@ -133,9 +133,9 @@ check_range(const xmlNode *date_spec, const char *id, const char *attr, rc = pcmk_rc_after_range; } - crm_trace(PCMK_XE_DATE_EXPRESSION " %s: " PCMK_XE_DATE_SPEC - " %s='%s' for %" PRIu32 ": %s", - id, attr, pcmk__s(range, ""), value, pcmk_rc_str(rc)); + pcmk__trace(PCMK_XE_DATE_EXPRESSION " %s: " PCMK_XE_DATE_SPEC + " %s='%s' for %" PRIu32 ": %s", + id, attr, pcmk__s(range, ""), value, pcmk_rc_str(rc)); return rc; } @@ -520,8 +520,8 @@ pcmk__evaluate_date_expression(const xmlNode *date_expression, return pcmk_rc_unpack_error; } - crm_trace(PCMK_XE_DATE_EXPRESSION " %s (%s): %s (%d)", - id, op, pcmk_rc_str(rc), rc); + pcmk__trace(PCMK_XE_DATE_EXPRESSION " %s (%s): %s (%d)", id, op, + pcmk_rc_str(rc), rc); return rc; } @@ -1081,15 +1081,17 @@ pcmk__evaluate_attr_expression(const xmlNode *expression, switch (comparison) { case pcmk__comparison_defined: case pcmk__comparison_undefined: - crm_trace(PCMK_XE_EXPRESSION " %s result: %s (for attribute %s %s)", - id, pcmk_rc_str(rc), attr, op); + pcmk__trace(PCMK_XE_EXPRESSION " %s result: %s (for attribute %s " + "%s)", + id, pcmk_rc_str(rc), attr, op); break; default: - crm_trace(PCMK_XE_EXPRESSION " %s result: " - "%s (attribute %s %s '%s' via %s source as %s type)", - id, pcmk_rc_str(rc), attr, op, pcmk__s(reference, ""), - pcmk__s(source_s, "default"), pcmk__s(type_s, "default")); + pcmk__trace(PCMK_XE_EXPRESSION " %s result: %s (attribute %s %s " + "'%s' via %s source as %s type)", + id, pcmk_rc_str(rc), attr, op, pcmk__s(reference, ""), + pcmk__s(source_s, "default"), + pcmk__s(type_s, "default")); break; } @@ -1134,9 +1136,9 @@ pcmk__evaluate_rsc_expression(const xmlNode *rsc_expression, standard = pcmk__xe_get(rsc_expression, PCMK_XA_CLASS); if ((standard != NULL) && !pcmk__str_eq(standard, rule_input->rsc_standard, pcmk__str_none)) { - crm_trace(PCMK_XE_RSC_EXPRESSION " %s is unsatisfied because " - "actual standard '%s' doesn't match '%s'", - id, pcmk__s(rule_input->rsc_standard, ""), standard); + pcmk__trace(PCMK_XE_RSC_EXPRESSION " %s is unsatisfied because actual " + "standard '%s' doesn't match '%s'", + id, pcmk__s(rule_input->rsc_standard, ""), standard); return pcmk_rc_op_unsatisfied; } @@ -1144,9 +1146,9 @@ pcmk__evaluate_rsc_expression(const xmlNode *rsc_expression, provider = pcmk__xe_get(rsc_expression, PCMK_XA_PROVIDER); if ((provider != NULL) && !pcmk__str_eq(provider, rule_input->rsc_provider, pcmk__str_none)) { - crm_trace(PCMK_XE_RSC_EXPRESSION " %s is unsatisfied because " - "actual provider '%s' doesn't match '%s'", - id, pcmk__s(rule_input->rsc_provider, ""), provider); + pcmk__trace(PCMK_XE_RSC_EXPRESSION " %s is unsatisfied because actual " + "provider '%s' doesn't match '%s'", + id, pcmk__s(rule_input->rsc_provider, ""), provider); return pcmk_rc_op_unsatisfied; } @@ -1154,16 +1156,16 @@ pcmk__evaluate_rsc_expression(const xmlNode *rsc_expression, type = pcmk__xe_get(rsc_expression, PCMK_XA_TYPE); if ((type != NULL) && !pcmk__str_eq(type, rule_input->rsc_agent, pcmk__str_none)) { - crm_trace(PCMK_XE_RSC_EXPRESSION " %s is unsatisfied because " - "actual agent '%s' doesn't match '%s'", - id, pcmk__s(rule_input->rsc_agent, ""), type); + pcmk__trace(PCMK_XE_RSC_EXPRESSION " %s is unsatisfied because actual " + "agent '%s' doesn't match '%s'", + id, pcmk__s(rule_input->rsc_agent, ""), type); return pcmk_rc_op_unsatisfied; } - crm_trace(PCMK_XE_RSC_EXPRESSION " %s is satisfied by %s%s%s:%s", - id, pcmk__s(standard, ""), - ((provider == NULL)? "" : ":"), pcmk__s(provider, ""), - pcmk__s(type, "")); + pcmk__trace(PCMK_XE_RSC_EXPRESSION " %s is satisfied by %s%s%s:%s", id, + pcmk__s(standard, ""), + ((provider != NULL)? ":" : ""), pcmk__s(provider, ""), + pcmk__s(type, "")); return pcmk_rc_ok; } @@ -1218,23 +1220,23 @@ pcmk__evaluate_op_expression(const xmlNode *op_expression, // Compare operation name if (!pcmk__str_eq(name, rule_input->op_name, pcmk__str_none)) { - crm_trace(PCMK_XE_OP_EXPRESSION " %s is unsatisfied because " - "actual name '%s' doesn't match '%s'", - id, pcmk__s(rule_input->op_name, ""), name); + pcmk__trace(PCMK_XE_OP_EXPRESSION " %s is unsatisfied because actual " + "name '%s' doesn't match '%s'", + id, pcmk__s(rule_input->op_name, ""), name); return pcmk_rc_op_unsatisfied; } // Compare operation interval (unspecified interval matches all) if ((interval_s != NULL) && (interval_ms != rule_input->op_interval_ms)) { - crm_trace(PCMK_XE_OP_EXPRESSION " %s is unsatisfied because " - "actual interval %s doesn't match %s", - id, pcmk__readable_interval(rule_input->op_interval_ms), - pcmk__readable_interval(interval_ms)); + pcmk__trace(PCMK_XE_OP_EXPRESSION " %s is unsatisfied because actual " + "interval %s doesn't match %s", + id, pcmk__readable_interval(rule_input->op_interval_ms), + pcmk__readable_interval(interval_ms)); return pcmk_rc_op_unsatisfied; } - crm_trace(PCMK_XE_OP_EXPRESSION " %s is satisfied (name %s, interval %s)", - id, name, pcmk__readable_interval(rule_input->op_interval_ms)); + pcmk__trace(PCMK_XE_OP_EXPRESSION " %s is satisfied (name %s, interval %s)", + id, name, pcmk__readable_interval(rule_input->op_interval_ms)); return pcmk_rc_ok; } @@ -1372,6 +1374,7 @@ pcmk_evaluate_rule(xmlNode *rule, const pcmk_rule_input_t *rule_input, rc = pcmk_rc_ok; } - crm_trace("Rule %s is %ssatisfied", id, ((rc == pcmk_rc_ok)? "" : "not ")); + pcmk__trace("Rule %s is %ssatisfied", id, + ((rc == pcmk_rc_ok)? "" : "not ")); return rc; } diff --git a/lib/common/scheduler.c b/lib/common/scheduler.c index ecaacb3c8d9..8a18b1460ce 100644 --- a/lib/common/scheduler.c +++ b/lib/common/scheduler.c @@ -303,7 +303,7 @@ pcmk__scheduler_epoch_time(pcmk_scheduler_t *scheduler) return time(NULL); } if (scheduler->priv->now == NULL) { - crm_trace("Scheduler 'now' set to current time"); + pcmk__trace("Scheduler 'now' set to current time"); scheduler->priv->now = crm_time_new(NULL); } return crm_time_get_seconds_since_epoch(scheduler->priv->now); @@ -364,8 +364,8 @@ pcmk__add_param_check(const xmlNode *rsc_history, pcmk_resource_t *rsc, CRM_CHECK((rsc_history != NULL) && (rsc != NULL) && (node != NULL), return); - crm_trace("Deferring checks of %s until after assignment", - pcmk__xe_id(rsc_history)); + pcmk__trace("Deferring checks of %s until after assignment", + pcmk__xe_id(rsc_history)); param_check = pcmk__assert_alloc(1, sizeof(struct param_check)); param_check->rsc_history = rsc_history; param_check->rsc = rsc; diff --git a/lib/common/schemas.c b/lib/common/schemas.c index 3c8d80078f2..983a84e3894 100644 --- a/lib/common/schemas.c +++ b/lib/common/schemas.c @@ -172,13 +172,13 @@ schema_filter(const struct dirent *a) pcmk__schema_version_t version = SCHEMA_ZERO; if (strstr(a->d_name, "pacemaker-") != a->d_name) { - /* crm_trace("%s - wrong prefix", a->d_name); */ + // pcmk__trace("%s - wrong prefix", a->d_name); } else if (!pcmk__ends_with_ext(a->d_name, ".rng")) { - /* crm_trace("%s - wrong suffix", a->d_name); */ + // pcmk__trace("%s - wrong suffix", a->d_name); } else if (!version_from_filename(a->d_name, &version)) { - /* crm_trace("%s - wrong format", a->d_name); */ + // pcmk__trace("%s - wrong format", a->d_name); } else { // pcmk__debug("%s - candidate", a->d_name); @@ -764,8 +764,8 @@ validate_with(xmlNode *xml, pcmk__schema_t *schema, file = pcmk__xml_artefact_path(pcmk__xml_artefact_ns_legacy_rng, schema->name); - crm_trace("Validating with %s (type=%d)", - pcmk__s(file, "missing schema"), schema->validator); + pcmk__trace("Validating with %s (type=%d)",pcmk__s(file, "missing schema"), + schema->validator); switch (schema->validator) { case pcmk__schema_validator_rng: cache = (relaxng_ctx_cache_t **) &(schema->cache); diff --git a/lib/common/strings.c b/lib/common/strings.c index 008b96784b0..d7acbbe4dc4 100644 --- a/lib/common/strings.c +++ b/lib/common/strings.c @@ -277,8 +277,9 @@ pcmk__scan_double(const char *text, double *result, const char *default_text, } } else { - crm_trace("Floating-point value parsed successfully from " - "'%s': %g", text, *result); + pcmk__trace("Floating-point value parsed successfully from '%s': " + "%g", + text, *result); } if ((end_text == NULL) && !pcmk__str_empty(local_end_text)) { @@ -756,13 +757,13 @@ pcmk__compress(const char *data, unsigned int length, unsigned int max, #ifdef CLOCK_MONOTONIC clock_gettime(CLOCK_MONOTONIC, &after_t); - crm_trace("Compressed %d bytes into %d (ratio %d:1) in %.0fms", - length, *result_len, length / (*result_len), - (after_t.tv_sec - before_t.tv_sec) * 1000 + - (after_t.tv_nsec - before_t.tv_nsec) / 1e6); + pcmk__trace("Compressed %d bytes into %d (ratio %d:1) in %.0fms", length, + *result_len, (length / *result_len), + (((after_t.tv_sec - before_t.tv_sec) * 1000) + + ((after_t.tv_nsec - before_t.tv_nsec) / 1e6))); #else - crm_trace("Compressed %d bytes into %d (ratio %d:1)", - length, *result_len, length / (*result_len)); + pcmk__trace("Compressed %d bytes into %d (ratio %d:1)", length, *result_len, + (length / *result_len)); #endif *result = compressed; @@ -822,7 +823,7 @@ pcmk__parse_ll_range(const char *srcstring, long long *start, long long *end) // cppcheck-suppress ctunullpointer *end = PCMK__PARSE_INT_DEFAULT; - crm_trace("Attempting to decode: [%s]", srcstring); + pcmk__trace("Attempting to decode: [%s]", srcstring); if (pcmk__str_eq(srcstring, "", pcmk__str_null_matches)) { return ENODATA; } else if (pcmk__str_eq(srcstring, "-", pcmk__str_none)) { diff --git a/lib/common/tls.c b/lib/common/tls.c index a62a6ce0a89..0745532703b 100644 --- a/lib/common/tls.c +++ b/lib/common/tls.c @@ -140,7 +140,7 @@ verify_peer_cert(gnutls_session_t session) static void _gnutls_log_func(int level, const char *msg) { - crm_trace("%s", msg); + pcmk__trace("%s", msg); } void diff --git a/lib/common/utils.c b/lib/common/utils.c index dee7583868f..e173f66859c 100644 --- a/lib/common/utils.c +++ b/lib/common/utils.c @@ -130,8 +130,8 @@ pcmk__lookup_user(const char *name, uid_t *uid, gid_t *gid) if (gid != NULL) { *gid = pwentry->pw_gid; } - crm_trace("User %s has uid=%lld gid=%lld", name, - (long long) pwentry->pw_uid, (long long) pwentry->pw_gid); + pcmk__trace("User %s has uid=%lld gid=%lld", name, + (long long) pwentry->pw_uid, (long long) pwentry->pw_gid); return pcmk_rc_ok; } @@ -242,12 +242,12 @@ pcmk__compare_versions(const char *version1, const char *version2) } if (value1 < value2) { - crm_trace("%s < %s", version1, version2); + pcmk__trace("%s < %s", version1, version2); rc = -1; goto done; } if (value1 > value2) { - crm_trace("%s > %s", version1, version2); + pcmk__trace("%s > %s", version1, version2); rc = 1; goto done; } @@ -263,7 +263,7 @@ pcmk__compare_versions(const char *version1, const char *version2) } } - crm_trace("%s == %s", version1, version2); + pcmk__trace("%s == %s", version1, version2); done: regfree(®ex); @@ -471,7 +471,7 @@ pcmk__timeout_ms2s(guint timeout_ms) static void _gnutls_log_func(int level, const char *msg) { - crm_trace("%s", msg); + pcmk__trace("%s", msg); } void @@ -546,7 +546,8 @@ crm_user_lookup(const char *name, uid_t * uid, gid_t * gid) if (gid) { *gid = pwentry->pw_gid; } - crm_trace("User %s has uid=%d gid=%d", name, pwentry->pw_uid, pwentry->pw_gid); + pcmk__trace("User %s has uid=%d gid=%d", name, pwentry->pw_uid, + pwentry->pw_gid); } else { rc = rc? -rc : -EINVAL; @@ -669,11 +670,11 @@ compare_version(const char *version1, const char *version2) } if (rc == 0) { - crm_trace("%s == %s (%d)", version1, version2, lpc); + pcmk__trace("%s == %s (%d)", version1, version2, lpc); } else if (rc < 0) { - crm_trace("%s < %s (%d)", version1, version2, lpc); + pcmk__trace("%s < %s (%d)", version1, version2, lpc); } else if (rc > 0) { - crm_trace("%s > %s (%d)", version1, version2, lpc); + pcmk__trace("%s > %s (%d)", version1, version2, lpc); } return rc; diff --git a/lib/common/watchdog.c b/lib/common/watchdog.c index 24f50a3adda..9b4c6a01e48 100644 --- a/lib/common/watchdog.c +++ b/lib/common/watchdog.c @@ -177,21 +177,21 @@ pcmk__locate_sbd(void) /* Read the pid file */ rc = pcmk__pidfile_matches(pidfile, 0, SBIN_DIR "/sbd", &sbd_pid); if (rc == pcmk_rc_ok) { - crm_trace("SBD detected at pid %lld (via PID file %s)", - (long long) sbd_pid, pidfile); + pcmk__trace("SBD detected at pid %lld (via PID file %s)", + (long long) sbd_pid, pidfile); } else { /* Fall back to /proc for systems that support it */ sbd_pid = pcmk__procfs_pid_of("sbd"); if (sbd_pid != 0) { - crm_trace("SBD detected at pid %lld (via procfs)", - (long long) sbd_pid); + pcmk__trace("SBD detected at pid %lld (via procfs)", + (long long) sbd_pid); } } if(sbd_pid < 0) { sbd_pid = 0; - crm_trace("SBD not detected"); + pcmk__trace("SBD not detected"); } return sbd_pid; @@ -230,8 +230,8 @@ pcmk__get_sbd_sync_resource_startup(void) const char *sync_env = getenv("SBD_SYNC_RESOURCE_STARTUP"); if (sync_env == NULL) { - crm_trace("Defaulting to %sstart-up synchronization with sbd", - (PCMK__SBD_SYNC_DEFAULT? "" : "no ")); + pcmk__trace("Defaulting to %sstart-up synchronization with sbd", + (PCMK__SBD_SYNC_DEFAULT? "" : "no ")); } else if (pcmk__parse_bool(sync_env, &sync_resource_startup) != pcmk_rc_ok) { diff --git a/lib/common/xml.c b/lib/common/xml.c index 8bf2e741f26..3bb372912e1 100644 --- a/lib/common/xml.c +++ b/lib/common/xml.c @@ -779,7 +779,7 @@ free_xml_with_position(xmlNode *node, int position) if (xpath != NULL) { pcmk__deleted_xml_t *deleted_obj = NULL; - crm_trace("Deleting %s %p from %p", xpath->str, node, doc); + pcmk__trace("Deleting %s %p from %p", xpath->str, node, doc); deleted_obj = pcmk__assert_alloc(1, sizeof(pcmk__deleted_xml_t)); deleted_obj->path = g_string_free(xpath, FALSE); @@ -1125,8 +1125,8 @@ mark_attr_deleted(xmlNode *new_xml, const char *element, const char *attr_name, // Check ACLs and mark restored value for later removal pcmk__xa_remove(attr, false); - crm_trace("XML attribute %s=%s was removed from %s", - attr_name, old_value, element); + pcmk__trace("XML attribute %s=%s was removed from %s", attr_name, old_value, + element); } /* @@ -1140,8 +1140,8 @@ mark_attr_changed(xmlNode *new_xml, const char *element, const char *attr_name, xml_doc_private_t *docpriv = new_xml->doc->_private; char *vcopy = pcmk__xe_get_copy(new_xml, attr_name); - crm_trace("XML attribute %s was changed from '%s' to '%s' in %s", - attr_name, old_value, vcopy, element); + pcmk__trace("XML attribute %s was changed from '%s' to '%s' in %s", + attr_name, old_value, vcopy, element); // Restore the original value (without checking ACLs) pcmk__clear_xml_flags(docpriv, pcmk__xf_tracking); @@ -1170,8 +1170,8 @@ mark_attr_moved(xmlNode *new_xml, const char *element, xmlAttr *old_attr, { xml_node_private_t *nodepriv = new_attr->_private; - crm_trace("XML attribute %s moved from position %d to %d in %s", - old_attr->name, p_old, p_new, element); + pcmk__trace("XML attribute %s moved from position %d to %d in %s", + old_attr->name, p_old, p_new, element); // Mark document, element, and all element's parents as changed pcmk__mark_xml_node_dirty(new_xml); @@ -1258,9 +1258,8 @@ mark_created_attrs(xmlNode *new_xml) if (pcmk__is_set(nodepriv->flags, pcmk__xf_created)) { const char *attr_name = (const char *) new_attr->name; - crm_trace("Created new attribute %s=%s in %s", - attr_name, pcmk__xml_attr_value(new_attr), - new_xml->name); + pcmk__trace("Created new attribute %s=%s in %s", attr_name, + pcmk__xml_attr_value(new_attr), new_xml->name); /* Check ACLs (we can't use the remove-then-create trick because it * would modify the attribute position). @@ -1364,9 +1363,9 @@ mark_child_moved(xmlNode *old_child, xmlNode *new_child, int old_pos, xmlNode *new_parent = new_child->parent; xml_node_private_t *nodepriv = new_child->_private; - crm_trace("Child element %s with " PCMK_XA_ID "='%s' moved from position " - "%d to %d under %s", - new_child->name, id_s, old_pos, new_pos, new_parent->name); + pcmk__trace("Child element %s with " PCMK_XA_ID "='%s' moved from position " + "%d to %d under %s", + new_child->name, id_s, old_pos, new_pos, new_parent->name); pcmk__mark_xml_node_dirty(new_parent); pcmk__set_xml_flags(nodepriv, pcmk__xf_moved); @@ -1850,8 +1849,8 @@ xml_track_changes(xmlNode *xml, const char *user, xmlNode *acl_source, } pcmk__xml_commit_changes(xml->doc); - crm_trace("Tracking changes%s to %p", - (enforce_acls? " with ACLs" : ""), xml); + pcmk__trace("Tracking changes%s to %p", (enforce_acls? " with ACLs" : ""), + xml); pcmk__xml_doc_set_flags(xml->doc, pcmk__xf_tracking); if (enforce_acls) { if (acl_source == NULL) { diff --git a/lib/common/xml_attr.c b/lib/common/xml_attr.c index 2e78196260c..8621053bc6a 100644 --- a/lib/common/xml_attr.c +++ b/lib/common/xml_attr.c @@ -54,8 +54,8 @@ pcmk__xa_remove(xmlAttr *attr, bool force) if (!force && !pcmk__check_acl(element, NULL, pcmk__xf_acl_write)) { // ACLs apply to element, not to particular attributes - crm_trace("ACLs prevent removal of attributes from %s element", - (const char *) element->name); + pcmk__trace("ACLs prevent removal of attributes from %s element", + element->name); return EPERM; } diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index 4df3d7f77be..34dfd34e606 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -81,12 +81,11 @@ pcmk__xe_first_child(const xmlNode *parent, const char *node_name, } if (attr_n == NULL) { - crm_trace("%s XML has no child element of %s type", - (const char *) parent->name, pcmk__s(node_name, "any")); + pcmk__trace("%s XML has no child element of %s type", parent->name, + pcmk__s(node_name, "any")); } else { - crm_trace("%s XML has no child element of %s type with %s='%s'", - (const char *) parent->name, pcmk__s(node_name, "any"), - attr_n, attr_v); + pcmk__trace("%s XML has no child element of %s type with %s='%s'", + parent->name, pcmk__s(node_name, "any"), attr_n, attr_v); } return NULL; } @@ -204,8 +203,9 @@ pcmk__xe_set_score(xmlNode *target, const char *name, const char *value) rc = pcmk_parse_score(old_value, &old_value_i, 0); if (rc != pcmk_rc_ok) { // @TODO This is inconsistent with old_value==NULL - crm_trace("Using 0 before incrementing %s because '%s' " - "is not a score", name, old_value); + pcmk__trace("Using 0 before incrementing %s because '%s' " + "is not a score", + name, old_value); } } @@ -216,8 +216,9 @@ pcmk__xe_set_score(xmlNode *target, const char *name, const char *value) rc = pcmk_parse_score(++v, &add, 0); if (rc != pcmk_rc_ok) { // @TODO We should probably skip expansion instead - crm_trace("Not incrementing %s because '%s' does not have " - "a valid increment", name, value); + pcmk__trace("Not incrementing %s because '%s' does not " + "have a valid increment", + name, value); } } @@ -622,11 +623,11 @@ update_xe(xmlNode *parent, xmlNode *target, xmlNode *update, uint32_t flags) if (target == NULL) { // Recursive call with no existing matching child target = pcmk__xe_create(parent, update_name); - crm_trace("Added %s", pcmk__s(trace_s, update_name)); + pcmk__trace("Added %s", pcmk__s(trace_s, update_name)); } else { // Either recursive call with match, or top-level call - crm_trace("Found node %s to update", pcmk__s(trace_s, update_name)); + pcmk__trace("Found node %s to update", pcmk__s(trace_s, update_name)); } CRM_CHECK(pcmk__xe_is(target, (const char *) update->name), return); @@ -636,11 +637,11 @@ update_xe(xmlNode *parent, xmlNode *target, xmlNode *update, uint32_t flags) for (xmlNode *child = pcmk__xml_first_child(update); child != NULL; child = pcmk__xml_next(child)) { - crm_trace("Updating child of %s", pcmk__s(trace_s, update_name)); + pcmk__trace("Updating child of %s", pcmk__s(trace_s, update_name)); update_xe(target, NULL, child, flags); } - crm_trace("Finished with %s", pcmk__s(trace_s, update_name)); + pcmk__trace("Finished with %s", pcmk__s(trace_s, update_name)); done: free(trace_s); @@ -1062,8 +1063,7 @@ pcmk__xe_set(xmlNode *xml, const char *attr_name, const char *value) } if (dirty && !pcmk__check_acl(xml, attr_name, pcmk__xf_acl_create)) { - crm_trace("Cannot add %s=%s to %s", - attr_name, value, (const char *) xml->name); + pcmk__trace("Cannot add %s=%s to %s", attr_name, value, xml->name); return EACCES; } @@ -1585,7 +1585,7 @@ crm_xml_add(xmlNode *node, const char *name, const char *value) } if (dirty && (pcmk__check_acl(node, name, pcmk__xf_acl_create) == FALSE)) { - crm_trace("Cannot add %s=%s to %s", name, value, node->name); + pcmk__trace("Cannot add %s=%s to %s", name, value, node->name); return NULL; } diff --git a/lib/common/xml_idref.c b/lib/common/xml_idref.c index d808cc2d3fe..513a3085b2a 100644 --- a/lib/common/xml_idref.c +++ b/lib/common/xml_idref.c @@ -48,7 +48,7 @@ pcmk__add_idref(GHashTable *table, const char *id, const char *referrer) } } idref->refs = g_list_append(idref->refs, pcmk__str_copy(referrer)); - crm_trace("Added ID %s referrer %s", id, referrer); + pcmk__trace("Added ID %s referrer %s", id, referrer); } /*! diff --git a/lib/common/xml_io.c b/lib/common/xml_io.c index c8d4e1c57c0..0ca8b604782 100644 --- a/lib/common/xml_io.c +++ b/lib/common/xml_io.c @@ -65,7 +65,7 @@ decompress_file(const char *filename) read_len = BZ2_bzRead(&rc, bz_file, buffer + length, PCMK__BUFFER_SIZE); if ((rc == BZ_OK) || (rc == BZ_STREAM_END)) { - crm_trace("Read %ld bytes from file: %d", (long) read_len, rc); + pcmk__trace("Read %ld bytes from file: %d", (long) read_len, rc); length += read_len; } } while (rc == BZ_OK); @@ -371,7 +371,7 @@ pcmk__xml_string(const xmlNode *data, uint32_t options, GString *buffer, int depth) { if (data == NULL) { - crm_trace("Nothing to dump"); + pcmk__trace("Nothing to dump"); return; } @@ -449,8 +449,8 @@ write_compressed_stream(char *text, const char *filename, FILE *stream, goto done; } - crm_trace("Compressed XML for %s from %u bytes to %u", - filename, bytes_in, *bytes_out); + pcmk__trace("Compressed XML for %s from %u bytes to %u", filename, bytes_in, + *bytes_out); done: if (bz_file != NULL) { @@ -515,7 +515,7 @@ write_xml_stream(const xmlNode *xml, const char *filename, FILE *stream, } fclose(stream); - crm_trace("Saved %u bytes to %s as XML", bytes_out, filename); + pcmk__trace("Saved %u bytes to %s as XML", bytes_out, filename); g_string_free(buffer, TRUE); return rc; diff --git a/lib/fencing/st_actions.c b/lib/fencing/st_actions.c index c66b90ac666..686c080eebc 100644 --- a/lib/fencing/st_actions.c +++ b/lib/fencing/st_actions.c @@ -101,8 +101,8 @@ append_config_arg(gpointer key, gpointer value, gpointer user_data) && (strstr(key, CRM_META) == NULL) && !pcmk__str_eq(key, PCMK_XA_CRM_FEATURE_SET, pcmk__str_none)) { - crm_trace("Passing %s=%s with fence action", - (const char *) key, (const char *) (value? value : "")); + pcmk__trace("Passing %s=%s with fence action", (const char *) key, + pcmk__s((const char *) value, "")); pcmk__insert_dup((GHashTable *) user_data, key, pcmk__s(value, "")); } } @@ -575,8 +575,8 @@ stonith_action_async_forked(svc_action_t *svc_action) pcmk__set_result(&(action->result), PCMK_OCF_UNKNOWN, PCMK_EXEC_PENDING, NULL); - crm_trace("Child process %d performing action '%s' successfully forked", - action->pid, action->action); + pcmk__trace("Child process %d performing action '%s' successfully forked", + action->pid, action->action); } /*! diff --git a/lib/fencing/st_client.c b/lib/fencing/st_client.c index bc4e5f0e2f8..d364cc18af4 100644 --- a/lib/fencing/st_client.c +++ b/lib/fencing/st_client.c @@ -227,8 +227,8 @@ stonith__watchdog_fencing_enabled_for_node_api(stonith_t *st, const char *node) } else { pcmk__err("Stonith-API for watchdog-fencing-query couldn't be created"); } - crm_trace("Pacemaker assumes node %s %sto do watchdog-fencing.", - node, rv?"":"not "); + pcmk__trace("Pacemaker assumes node %s %sto do watchdog-fencing", node, + (rv? "" : "not ")); return rv; } @@ -277,7 +277,7 @@ stonith_connection_destroy(gpointer user_data) stonith_private_t *native = NULL; struct notify_blob_s blob; - crm_trace("Sending destroyed notification"); + pcmk__trace("Sending destroyed notification"); blob.stonith = stonith; blob.xml = pcmk__xe_create(NULL, PCMK__XE_NOTIFY); @@ -525,8 +525,8 @@ stonith_api_device_metadata(stonith_t *stonith, int call_options, timeout_sec = PCMK_DEFAULT_ACTION_TIMEOUT_MS; } - crm_trace("Looking up metadata for %s agent %s", - stonith_namespace2text(ns), agent); + pcmk__trace("Looking up metadata for %s agent %s", + stonith_namespace2text(ns), agent); switch (ns) { case st_namespace_rhcs: @@ -824,7 +824,8 @@ stonith_create_op(int call_id, const char *token, const char *op, xmlNode * data pcmk__xe_set(op_msg, PCMK__XA_T, PCMK__VALUE_STONITH_NG); pcmk__xe_set(op_msg, PCMK__XA_ST_OP, op); pcmk__xe_set_int(op_msg, PCMK__XA_ST_CALLID, call_id); - crm_trace("Sending call options: %.8lx, %d", (long)call_options, call_options); + pcmk__trace("Sending call options: %.8lx, %d", (long) call_options, + call_options); pcmk__xe_set_int(op_msg, PCMK__XA_ST_CALLOPT, call_options); if (data != NULL) { @@ -967,8 +968,8 @@ invoke_registered_callbacks(stonith_t *stonith, const xmlNode *msg, int call_id) if ((cb_info != NULL) && (cb_info->callback != NULL) && (pcmk__result_ok(&result) || !(cb_info->only_success))) { - crm_trace("Invoking callback %s for call %d", - pcmk__s(cb_info->id, "without ID"), call_id); + pcmk__trace("Invoking callback %s for call %d", + pcmk__s(cb_info->id, "without ID"), call_id); invoke_fence_action_callback(stonith, call_id, &result, cb_info->user_data, cb_info->callback); @@ -983,7 +984,7 @@ invoke_registered_callbacks(stonith_t *stonith, const xmlNode *msg, int call_id) } if (private->op_callback != NULL) { - crm_trace("Invoking global callback for call %d", call_id); + pcmk__trace("Invoking global callback for call %d", call_id); invoke_fence_action_callback(stonith, call_id, &result, NULL, private->op_callback); } @@ -1074,7 +1075,7 @@ stonith_dispatch_internal(const char *buffer, ssize_t length, gpointer userdata) /* do callbacks */ type = pcmk__xe_get(blob.xml, PCMK__XA_T); - crm_trace("Activating %s callbacks...", type); + pcmk__trace("Activating %s callbacks...", type); if (pcmk__str_eq(type, PCMK__VALUE_STONITH_NG, pcmk__str_none)) { invoke_registered_callbacks(st, blob.xml, 0); @@ -1243,7 +1244,8 @@ stonith_api_add_notification(stonith_t * stonith, const char *event, stonith_private_t *private = NULL; private = stonith->st_private; - crm_trace("Adding callback for %s events (%d)", event, g_list_length(private->notify_list)); + pcmk__trace("Adding callback for %s events (%u)", event, + g_list_length(private->notify_list)); new_client = pcmk__assert_alloc(1, sizeof(stonith_notify_client_t)); new_client->event = event; @@ -1261,7 +1263,7 @@ stonith_api_add_notification(stonith_t * stonith, const char *event, stonith_set_notification(stonith, event, 1); - crm_trace("Callback added (%d)", g_list_length(private->notify_list)); + pcmk__trace("Callback added (%u)", g_list_length(private->notify_list)); } return pcmk_ok; } @@ -1287,7 +1289,7 @@ stonith_api_del_notification(stonith_t * stonith, const char *event) if (event == NULL) { foreach_notify_entry(private, del_notify_entry, stonith); - crm_trace("Removed callback"); + pcmk__trace("Removed callback"); return pcmk_ok; } @@ -1313,10 +1315,10 @@ stonith_api_del_notification(stonith_t * stonith, const char *event) free(list_client); } - crm_trace("Removed callback"); + pcmk__trace("Removed callback"); } else { - crm_trace("Callback not present"); + pcmk__trace("Callback not present"); } free(new_client); return pcmk_ok; @@ -1341,7 +1343,8 @@ stonith_api_add_callback(stonith_t * stonith, int call_id, int timeout, int opti if (!(options & st_opt_report_only_success)) { pcmk__action_result_t result = PCMK__UNKNOWN_RESULT; - crm_trace("Call failed, calling %s: %s", callback_name, pcmk_strerror(call_id)); + pcmk__trace("Call failed, calling %s: %s", callback_name, + pcmk_strerror(call_id)); pcmk__set_result(&result, CRM_EX_ERROR, stonith__legacy2status(call_id), NULL); invoke_fence_action_callback(stonith, call_id, &result, @@ -1365,7 +1368,7 @@ stonith_api_add_callback(stonith_t * stonith, int call_id, int timeout, int opti pcmk__intkey_table_insert(private->stonith_op_callback_table, call_id, blob); - crm_trace("Added callback to %s for call %d", callback_name, call_id); + pcmk__trace("Added callback to %s for call %d", callback_name, call_id); return TRUE; } @@ -1519,7 +1522,7 @@ stonith_send_notification(gpointer data, gpointer user_data) return; } else if (entry->delete) { - crm_trace("Skipping callback - marked for deletion"); + pcmk__trace("Skipping callback - marked for deletion"); return; } else if (entry->notify == NULL) { @@ -1527,15 +1530,15 @@ stonith_send_notification(gpointer data, gpointer user_data) return; } else if (!pcmk__str_eq(entry->event, event, pcmk__str_none)) { - crm_trace("Skipping callback - event mismatch %p/%s vs. %s", entry, entry->event, event); + pcmk__trace("Skipping callback - event mismatch %p/%s vs. %s", entry, entry->event, event); return; } st_event = xml_to_event(blob->xml); - crm_trace("Invoking callback for %p/%s event...", entry, event); + pcmk__trace("Invoking callback for %p/%s event...", entry, event); entry->notify(blob->stonith, st_event); - crm_trace("Callback invoked..."); + pcmk__trace("Callback invoked..."); event_free(st_event); } @@ -1592,7 +1595,7 @@ stonith_send_command(stonith_t * stonith, const char *op, xmlNode * data, xmlNod } pcmk__xe_set_int(op_msg, PCMK__XA_ST_TIMEOUT, timeout); - crm_trace("Sending %s message to fencer with timeout %ds", op, timeout); + pcmk__trace("Sending %s message to fencer with timeout %ds", op, timeout); if (data) { const char *delay_s = pcmk__xe_get(data, PCMK__XA_ST_DELAY); @@ -1623,7 +1626,7 @@ stonith_send_command(stonith_t * stonith, const char *op, xmlNode * data, xmlNod crm_log_xml_trace(op_reply, "Reply"); if (!(call_options & st_opt_sync_call)) { - crm_trace("Async call %d, returning", stonith->call_id); + pcmk__trace("Async call %d, returning", stonith->call_id); pcmk__xml_free(op_reply); return stonith->call_id; } @@ -1633,14 +1636,14 @@ stonith_send_command(stonith_t * stonith, const char *op, xmlNode * data, xmlNod if (reply_id == stonith->call_id) { pcmk__action_result_t result = PCMK__UNKNOWN_RESULT; - crm_trace("Synchronous reply %d received", reply_id); + pcmk__trace("Synchronous reply %d received", reply_id); stonith__xe_get_result(op_reply, &result); rc = pcmk_rc2legacy(stonith__result2rc(&result)); pcmk__reset_result(&result); if ((call_options & st_opt_discard_reply) || output_data == NULL) { - crm_trace("Discarding reply"); + pcmk__trace("Discarding reply"); } else { *output_data = op_reply; @@ -1706,11 +1709,11 @@ stonith_api_free(stonith_t * stonith) { int rc = pcmk_ok; - crm_trace("Destroying %p", stonith); + pcmk__trace("Destroying %p", stonith); if (stonith->state != stonith_disconnected) { - crm_trace("Unregistering notifications and disconnecting %p first", - stonith); + pcmk__trace("Unregistering notifications and disconnecting %p first", + stonith); stonith->cmds->remove_notification(stonith, NULL); rc = stonith->cmds->disconnect(stonith); } @@ -1718,10 +1721,12 @@ stonith_api_free(stonith_t * stonith) if (stonith->state == stonith_disconnected) { stonith_private_t *private = stonith->st_private; - crm_trace("Removing %d callbacks", g_hash_table_size(private->stonith_op_callback_table)); + pcmk__trace("Removing %u callbacks", + g_hash_table_size(private->stonith_op_callback_table)); g_hash_table_destroy(private->stonith_op_callback_table); - crm_trace("Destroying %d notification clients", g_list_length(private->notify_list)); + pcmk__trace("Destroying %u notification clients", + g_list_length(private->notify_list)); g_list_free_full(private->notify_list, free); free(stonith->st_private); @@ -1739,7 +1744,7 @@ stonith_api_free(stonith_t * stonith) void stonith_api_delete(stonith_t * stonith) { - crm_trace("Destroying %p", stonith); + pcmk__trace("Destroying %p", stonith); if(stonith) { stonith->cmds->free(stonith); } diff --git a/lib/fencing/st_lha.c b/lib/fencing/st_lha.c index d5ff496a0d7..8de64971f1c 100644 --- a/lib/fencing/st_lha.c +++ b/lib/fencing/st_lha.c @@ -141,7 +141,7 @@ stonith__list_lha_agents(stonith_key_value_t **devices) } for (entry = type_list; entry != NULL && *entry; ++entry) { - crm_trace("Added: %s", *entry); + pcmk__trace("Added: %s", *entry); *devices = stonith_key_value_add(*devices, NULL, *entry); count++; } diff --git a/lib/lrmd/lrmd_alerts.c b/lib/lrmd/lrmd_alerts.c index 51439efbb79..1bc5abb7e9d 100644 --- a/lib/lrmd/lrmd_alerts.c +++ b/lib/lrmd/lrmd_alerts.c @@ -30,7 +30,7 @@ alert_key2param(lrmd_key_value_t *head, enum pcmk__alert_keys_e name, if (value == NULL) { value = ""; } - crm_trace("Setting alert key %s = '%s'", pcmk__alert_keys[name], value); + pcmk__trace("Setting alert key %s = '%s'", pcmk__alert_keys[name], value); return lrmd_key_value_add(head, pcmk__alert_keys[name], value); } @@ -62,8 +62,8 @@ set_ev_kv(gpointer key, gpointer value, gpointer user_data) lrmd_key_value_t **head = (lrmd_key_value_t **) user_data; if (value) { - crm_trace("Setting environment variable %s='%s'", - (char*)key, (char*)value); + pcmk__trace("Setting environment variable %s='%s'", (const char*) key, + (const char *) value); *head = lrmd_key_value_add(*head, key, value); } } @@ -142,16 +142,16 @@ exec_alert_list(lrmd_t *lrmd, const GList *alert_list, int rc; if (!pcmk__is_set(entry->flags, kind)) { - crm_trace("Filtering unwanted %s alert to %s via %s", - kind_s, entry->recipient, entry->id); + pcmk__trace("Filtering unwanted %s alert to %s via %s", kind_s, + entry->recipient, entry->id); continue; } if ((kind == pcmk__alert_attribute) && !is_target_alert(entry->select_attribute_name, attr_name)) { - crm_trace("Filtering unwanted attribute '%s' alert to %s via %s", - attr_name, entry->recipient, entry->id); + pcmk__trace("Filtering unwanted attribute '%s' alert to %s via %s", + attr_name, entry->recipient, entry->id); continue; } diff --git a/lib/lrmd/lrmd_client.c b/lib/lrmd/lrmd_client.c index c09151add1f..5724e20663b 100644 --- a/lib/lrmd/lrmd_client.c +++ b/lib/lrmd/lrmd_client.c @@ -278,7 +278,7 @@ lrmd_dispatch_internal(gpointer data, gpointer user_data) return; } else if (!native->callback) { /* no callback set */ - crm_trace("notify event received but client has not set callback"); + pcmk__trace("notify event received but client has not set callback"); return; } @@ -336,7 +336,7 @@ lrmd_dispatch_internal(gpointer data, gpointer user_data) return; } - crm_trace("op %s notify event received", type); + pcmk__trace("op %s notify event received", type); native->callback(&event); if (event.params) { @@ -426,7 +426,7 @@ process_pending_notifies(gpointer userdata) return G_SOURCE_CONTINUE; } - crm_trace("Processing pending notifies"); + pcmk__trace("Processing pending notifies"); g_list_foreach(native->pending_notify, lrmd_dispatch_internal, lrmd); g_list_free_full(native->pending_notify, lrmd_free_xml); native->pending_notify = NULL; @@ -451,11 +451,11 @@ lrmd_tls_dispatch(gpointer userdata) int rc = pcmk_rc_ok; if (!remote_executor_connected(lrmd)) { - crm_trace("TLS dispatch triggered after disconnect"); + pcmk__trace("TLS dispatch triggered after disconnect"); return -1; } - crm_trace("TLS dispatch triggered"); + pcmk__trace("TLS dispatch triggered"); rc = pcmk__remote_ready(native->remote, 0); if (rc == pcmk_rc_ok) { @@ -570,8 +570,8 @@ lrmd_create_op(const char *token, const char *op, xmlNode *data, int timeout, pcmk__xml_copy(wrapper, data); } - crm_trace("Created executor %s command with call options %.8lx (%d)", - op, (long)options, options); + pcmk__trace("Created executor %s command with call options %.8lx (%d)", + op, (long) options, options); return op_msg; } @@ -909,7 +909,7 @@ lrmd_send_command(lrmd_t *lrmd, const char *op, xmlNode *data, } CRM_LOG_ASSERT(native->token != NULL); - crm_trace("Sending %s op to executor", op); + pcmk__trace("Sending %s op to executor", op); op_msg = lrmd_create_op(native->token, op, data, timeout, options); @@ -934,7 +934,7 @@ lrmd_send_command(lrmd_t *lrmd, const char *op, xmlNode *data, } rc = pcmk_ok; - crm_trace("%s op reply received", op); + pcmk__trace("%s op reply received", op); if (pcmk__xe_get_int(op_reply, PCMK__XA_LRMD_RC, &rc) != pcmk_rc_ok) { rc = -ENOMSG; goto done; @@ -1050,7 +1050,7 @@ process_lrmd_handshake_reply(xmlNode *reply, lrmd_private_t *native) crm_log_xml_err(reply, "Bad reply"); rc = EPROTO; } else { - crm_trace("Obtained registration token: %s", tmp_ticket); + pcmk__trace("Obtained registration token: %s", tmp_ticket); native->token = strdup(tmp_ticket); native->peer_version = strdup(version?version:"1.0"); /* Included since 1.1 */ rc = pcmk_rc_ok; diff --git a/lib/lrmd/proxy_common.c b/lib/lrmd/proxy_common.c index 960f9f76fd2..dece80c7d45 100644 --- a/lib/lrmd/proxy_common.c +++ b/lib/lrmd/proxy_common.c @@ -108,7 +108,7 @@ remote_proxy_end_session(remote_proxy_t *proxy) if (proxy == NULL) { return; } - crm_trace("ending session ID %s", proxy->session_id); + pcmk__trace("ending session ID %s", proxy->session_id); if (proxy->source) { mainloop_del_ipc_client(proxy->source); @@ -120,7 +120,7 @@ remote_proxy_free(gpointer data) { remote_proxy_t *proxy = data; - crm_trace("freed proxy session ID %s", proxy->session_id); + pcmk__trace("freed proxy session ID %s", proxy->session_id); free(proxy->node_name); free(proxy->session_id); free(proxy); @@ -142,12 +142,16 @@ remote_proxy_dispatch(const char *buffer, ssize_t length, gpointer userdata) flags = crm_ipc_buffer_flags(proxy->ipc); if (flags & crm_ipc_proxied_relay_response) { - crm_trace("Passing response back to %.8s on %s: %.200s - request id: %d", proxy->session_id, proxy->node_name, buffer, proxy->last_request_id); + pcmk__trace("Passing response back to %.8s on %s: %.200s - request id: " + "%d", + proxy->session_id, proxy->node_name, buffer, + proxy->last_request_id); remote_proxy_relay_response(proxy, xml, proxy->last_request_id); proxy->last_request_id = 0; } else { - crm_trace("Passing event back to %.8s on %s: %.200s", proxy->session_id, proxy->node_name, buffer); + pcmk__trace("Passing event back to %.8s on %s: %.200s", + proxy->session_id, proxy->node_name, buffer); remote_proxy_relay_event(proxy, xml); } pcmk__xml_free(xml); @@ -160,7 +164,7 @@ remote_proxy_disconnected(gpointer userdata) { remote_proxy_t *proxy = userdata; - crm_trace("destroying %p", proxy); + pcmk__trace("destroying %p", proxy); proxy->source = NULL; proxy->ipc = NULL; @@ -206,8 +210,9 @@ remote_proxy_new(lrmd_t *lrmd, struct ipc_client_callbacks *proxy_callbacks, } } - crm_trace("new remote proxy client established to %s on %s, session id %s", - channel, node_name, session_id); + pcmk__trace("new remote proxy client established to %s on %s, session id " + "%s", + channel, node_name, session_id); g_hash_table_insert(proxy_table, proxy->session_id, proxy); return proxy; @@ -305,8 +310,9 @@ remote_proxy_cb(lrmd_t *lrmd, const char *node_name, xmlNode *msg) pcmk__xml_free(op_reply); } else { - crm_trace("Relayed %s request %d from %s to %s for %s", - op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name); + pcmk__trace("Relayed %s request %d from %s to %s for %s", op, + msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), + name); proxy->last_request_id = msg_id; } @@ -315,8 +321,9 @@ remote_proxy_cb(lrmd_t *lrmd, const char *node_name, xmlNode *msg) xmlNode *op_reply = NULL; // @COMPAT pacemaker_remoted <= 1.1.10 - crm_trace("Relaying %s request %d from %s to %s for %s", - op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name); + pcmk__trace("Relaying %s request %d from %s to %s for %s", op, + msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), + name); rc = crm_ipc_send(proxy->ipc, request, flags, 10000, &op_reply); if(rc < 0) { @@ -325,8 +332,9 @@ remote_proxy_cb(lrmd_t *lrmd, const char *node_name, xmlNode *msg) op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name, pcmk_strerror(rc), rc); } else { - crm_trace("Relayed %s request %d from %s to %s for %s", - op, msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), name); + pcmk__trace("Relayed %s request %d from %s to %s for %s", op, + msg_id, proxy->node_name, crm_ipc_name(proxy->ipc), + name); } if(op_reply) { diff --git a/lib/pacemaker/pcmk_graph_consumer.c b/lib/pacemaker/pcmk_graph_consumer.c index d701368a33e..bafd003f537 100644 --- a/lib/pacemaker/pcmk_graph_consumer.c +++ b/lib/pacemaker/pcmk_graph_consumer.c @@ -117,18 +117,18 @@ update_synapse_ready(pcmk__graph_synapse_t *synapse, int action_id) pcmk__graph_action_t *prereq = (pcmk__graph_action_t *) lpc->data; if (prereq->id == action_id) { - crm_trace("Confirming input %d of synapse %d", - action_id, synapse->id); + pcmk__trace("Confirming input %d of synapse %d", action_id, + synapse->id); pcmk__set_graph_action_flags(prereq, pcmk__graph_action_confirmed); } else if (!pcmk__is_set(prereq->flags, pcmk__graph_action_confirmed)) { pcmk__clear_synapse_flags(synapse, pcmk__synapse_ready); - crm_trace("Synapse %d still not ready after action %d", - synapse->id, action_id); + pcmk__trace("Synapse %d still not ready after action %d", + synapse->id, action_id); } } if (pcmk__is_set(synapse->flags, pcmk__synapse_ready)) { - crm_trace("Synapse %d is now ready to execute", synapse->id); + pcmk__trace("Synapse %d is now ready to execute", synapse->id); } } @@ -148,22 +148,22 @@ update_synapse_confirmed(pcmk__graph_synapse_t *synapse, int action_id) pcmk__graph_action_t *action = (pcmk__graph_action_t *) lpc->data; if (action->id == action_id) { - crm_trace("Confirmed action %d of synapse %d", - action_id, synapse->id); + pcmk__trace("Confirmed action %d of synapse %d", action_id, + synapse->id); pcmk__set_graph_action_flags(action, pcmk__graph_action_confirmed); } else if (all_confirmed && !pcmk__is_set(action->flags, pcmk__graph_action_confirmed)) { all_confirmed = false; - crm_trace("Synapse %d still not confirmed after action %d", - synapse->id, action_id); + pcmk__trace("Synapse %d still not confirmed after action %d", + synapse->id, action_id); } } if (all_confirmed && !pcmk__is_set(synapse->flags, pcmk__synapse_confirmed)) { - crm_trace("Confirmed synapse %d", synapse->id); + pcmk__trace("Confirmed synapse %d", synapse->id); pcmk__set_synapse_flags(synapse, pcmk__synapse_confirmed); } } @@ -241,20 +241,20 @@ should_fire_synapse(pcmk__graph_t *graph, pcmk__graph_synapse_t *synapse) pcmk__graph_action_t *prereq = (pcmk__graph_action_t *) lpc->data; if (!(pcmk__is_set(prereq->flags, pcmk__graph_action_confirmed))) { - crm_trace("Input %d for synapse %d not yet confirmed", - prereq->id, synapse->id); + pcmk__trace("Input %d for synapse %d not yet confirmed", prereq->id, + synapse->id); pcmk__clear_synapse_flags(synapse, pcmk__synapse_ready); break; } else if (pcmk__is_set(prereq->flags, pcmk__graph_action_failed)) { - crm_trace("Input %d for synapse %d confirmed but failed", - prereq->id, synapse->id); + pcmk__trace("Input %d for synapse %d confirmed but failed", + prereq->id, synapse->id); pcmk__clear_synapse_flags(synapse, pcmk__synapse_ready); break; } } if (pcmk__is_set(synapse->flags, pcmk__synapse_ready)) { - crm_trace("Synapse %d is ready to execute", synapse->id); + pcmk__trace("Synapse %d is ready to execute", synapse->id); } else { return false; } @@ -266,14 +266,14 @@ should_fire_synapse(pcmk__graph_t *graph, pcmk__graph_synapse_t *synapse) /* None of the below applies to pseudo ops */ } else if (synapse->priority < graph->abort_priority) { - crm_trace("Skipping synapse %d: priority %d is less than " - "abort priority %d", - synapse->id, synapse->priority, graph->abort_priority); + pcmk__trace("Skipping synapse %d: priority %d is less than abort " + "priority %d", + synapse->id, synapse->priority, graph->abort_priority); graph->skipped++; return false; } else if (graph_fns->allowed && !(graph_fns->allowed(graph, a))) { - crm_trace("Deferring synapse %d: not allowed", synapse->id); + pcmk__trace("Deferring synapse %d: not allowed", synapse->id); return false; } } @@ -302,21 +302,20 @@ initiate_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) pcmk__set_graph_action_flags(action, pcmk__graph_action_executed); switch (action->type) { case pcmk__pseudo_graph_action: - crm_trace("Executing pseudo-action %d (%s)", action->id, id); + pcmk__trace("Executing pseudo-action %d (%s)", action->id, id); return graph_fns->pseudo(graph, action); case pcmk__rsc_graph_action: - crm_trace("Executing resource action %d (%s)", action->id, id); + pcmk__trace("Executing resource action %d (%s)", action->id, id); return graph_fns->rsc(graph, action); case pcmk__cluster_graph_action: if (pcmk__str_eq(pcmk__xe_get(action->xml, PCMK_XA_OPERATION), PCMK_ACTION_STONITH, pcmk__str_none)) { - crm_trace("Executing fencing action %d (%s)", - action->id, id); + pcmk__trace("Executing fencing action %d (%s)", action->id, id); return graph_fns->fence(graph, action); } - crm_trace("Executing cluster action %d (%s)", action->id, id); + pcmk__trace("Executing cluster action %d (%s)", action->id, id); return graph_fns->cluster(graph, action); default: @@ -392,7 +391,7 @@ pseudo_action_dummy(pcmk__graph_t *graph, pcmk__graph_action_t *action) pcmk__set_graph_action_flags(action, pcmk__graph_action_failed); graph->abort_priority = PCMK_SCORE_INFINITY; } else { - crm_trace("Dummy event handler: action %d initiated", action->id); + pcmk__trace("Dummy event handler: action %d initiated", action->id); } pcmk__set_graph_action_flags(action, pcmk__graph_action_confirmed); pcmk__update_graph(graph, action); @@ -447,8 +446,9 @@ pcmk__execute_graph(pcmk__graph_t *graph) graph->pending++; } } - crm_trace("Executing graph %d (%d synapses already completed, %d pending)", - graph->id, graph->completed, graph->pending); + pcmk__trace("Executing graph %d (%d synapses already completed, %d " + "pending)", + graph->id, graph->completed, graph->pending); // Execute any synapses that are ready for (lpc = graph->synapses; lpc != NULL; lpc = lpc->next) { @@ -485,7 +485,7 @@ pcmk__execute_graph(pcmk__graph_t *graph) } } else { - crm_trace("Synapse %d cannot fire", synapse->id); + pcmk__trace("Synapse %d cannot fire", synapse->id); graph->incomplete++; } } @@ -600,7 +600,7 @@ unpack_action(pcmk__graph_synapse_t *parent, xmlNode *xml_action) action->interval_ms = 0; } - crm_trace("Action %d has timer set to %dms", action->id, action->timeout); + pcmk__trace("Action %d has timer set to %dms", action->id, action->timeout); return action; } @@ -621,7 +621,7 @@ unpack_synapse(pcmk__graph_t *new_graph, const xmlNode *xml_synapse) xmlNode *action_set = NULL; pcmk__graph_synapse_t *new_synapse = NULL; - crm_trace("Unpacking synapse %s", pcmk__xe_id(xml_synapse)); + pcmk__trace("Unpacking synapse %s", pcmk__xe_id(xml_synapse)); new_synapse = calloc(1, sizeof(pcmk__graph_synapse_t)); if (new_synapse == NULL) { @@ -638,8 +638,8 @@ unpack_synapse(pcmk__graph_t *new_graph, const xmlNode *xml_synapse) new_graph->num_synapses++; - crm_trace("Unpacking synapse %s action sets", - pcmk__xe_get(xml_synapse, PCMK_XA_ID)); + pcmk__trace("Unpacking synapse %s action sets", + pcmk__xe_get(xml_synapse, PCMK_XA_ID)); for (action_set = pcmk__xe_first_child(xml_synapse, PCMK__XE_ACTION_SET, NULL, NULL); @@ -657,15 +657,15 @@ unpack_synapse(pcmk__graph_t *new_graph, const xmlNode *xml_synapse) continue; } - crm_trace("Adding action %d to synapse %d", - new_action->id, new_synapse->id); + pcmk__trace("Adding action %d to synapse %d", new_action->id, + new_synapse->id); new_graph->num_actions++; new_synapse->actions = g_list_append(new_synapse->actions, new_action); } } - crm_trace("Unpacking synapse %s inputs", pcmk__xe_id(xml_synapse)); + pcmk__trace("Unpacking synapse %s inputs", pcmk__xe_id(xml_synapse)); for (xmlNode *inputs = pcmk__xe_first_child(xml_synapse, PCMK__XE_INPUTS, NULL, NULL); @@ -687,8 +687,8 @@ unpack_synapse(pcmk__graph_t *new_graph, const xmlNode *xml_synapse) continue; } - crm_trace("Adding input %d to synapse %d", - new_input->id, new_synapse->id); + pcmk__trace("Adding input %d to synapse %d", new_input->id, + new_synapse->id); new_synapse->inputs = g_list_append(new_synapse->inputs, new_input); diff --git a/lib/pacemaker/pcmk_graph_producer.c b/lib/pacemaker/pcmk_graph_producer.c index 35c7248a978..c72236ff82a 100644 --- a/lib/pacemaker/pcmk_graph_producer.c +++ b/lib/pacemaker/pcmk_graph_producer.c @@ -106,8 +106,8 @@ add_maintenance_nodes(xmlNode *xml, const pcmk_scheduler_t *scheduler) count++; } } - crm_trace("%s %d nodes in need of maintenance mode update in state", - ((maintenance == NULL)? "Counted" : "Added"), count); + pcmk__trace("%s %d nodes in need of maintenance mode update in state", + ((maintenance == NULL)? "Counted" : "Added"), count); return count; } @@ -497,15 +497,15 @@ static bool should_add_action_to_graph(pcmk_action_t *action) { if (!pcmk__is_set(action->flags, pcmk__action_runnable)) { - crm_trace("Ignoring action %s (%d): unrunnable", - action->uuid, action->id); + pcmk__trace("Ignoring action %s (%d): unrunnable", action->uuid, + action->id); return false; } if (pcmk__is_set(action->flags, pcmk__action_optional) && !pcmk__is_set(action->flags, pcmk__action_always_in_graph)) { - crm_trace("Ignoring action %s (%d): optional", - action->uuid, action->id); + pcmk__trace("Ignoring action %s (%d): optional", action->uuid, + action->id); return false; } @@ -525,8 +525,8 @@ should_add_action_to_graph(pcmk_action_t *action) */ interval_ms_s = g_hash_table_lookup(action->meta, PCMK_META_INTERVAL); if (pcmk__str_eq(interval_ms_s, "0", pcmk__str_null_matches)) { - crm_trace("Ignoring action %s (%d): for unmanaged resource (%s)", - action->uuid, action->id, action->rsc->id); + pcmk__trace("Ignoring action %s (%d): for unmanaged resource (%s)", + action->uuid, action->id, action->rsc->id); return false; } } @@ -550,16 +550,16 @@ should_add_action_to_graph(pcmk_action_t *action) } if (pcmk__is_set(action->flags, pcmk__action_on_dc)) { - crm_trace("Action %s (%d) should be dumped: " - "can run on DC instead of %s", - action->uuid, action->id, pcmk__node_name(action->node)); + pcmk__trace("Action %s (%d) should be dumped: " + "can run on DC instead of %s", + action->uuid, action->id, pcmk__node_name(action->node)); } else if (pcmk__is_guest_or_bundle_node(action->node) && !pcmk__is_set(action->node->priv->flags, pcmk__node_remote_reset)) { - crm_trace("Action %s (%d) should be dumped: " - "assuming will be runnable on guest %s", - action->uuid, action->id, pcmk__node_name(action->node)); + pcmk__trace("Action %s (%d) should be dumped: " + "assuming will be runnable on guest %s", + action->uuid, action->id, pcmk__node_name(action->node)); } else if (!action->node->details->online) { pcmk__sched_err(action->scheduler, @@ -617,51 +617,51 @@ should_add_input_to_graph(const pcmk_action_t *action, } if (input->flags == pcmk__ar_none) { - crm_trace("Ignoring %s (%d) input %s (%d): " - "ordering disabled", - action->uuid, action->id, - input->action->uuid, input->action->id); + pcmk__trace("Ignoring %s (%d) input %s (%d): " + "ordering disabled", + action->uuid, action->id, + input->action->uuid, input->action->id); return false; } else if (!pcmk__is_set(input->action->flags, pcmk__action_runnable) && !ordering_can_change_actions(input)) { - crm_trace("Ignoring %s (%d) input %s (%d): " - "optional and input unrunnable", - action->uuid, action->id, - input->action->uuid, input->action->id); + pcmk__trace("Ignoring %s (%d) input %s (%d): " + "optional and input unrunnable", + action->uuid, action->id, + input->action->uuid, input->action->id); return false; } else if (!pcmk__is_set(input->action->flags, pcmk__action_runnable) && pcmk__is_set(input->flags, pcmk__ar_min_runnable)) { - crm_trace("Ignoring %s (%d) input %s (%d): " - "minimum number of instances required but input unrunnable", - action->uuid, action->id, - input->action->uuid, input->action->id); + pcmk__trace("Ignoring %s (%d) input %s (%d): " + "minimum number of instances required but input unrunnable", + action->uuid, action->id, + input->action->uuid, input->action->id); return false; } else if (pcmk__is_set(input->flags, pcmk__ar_unmigratable_then_blocks) && !pcmk__is_set(input->action->flags, pcmk__action_runnable)) { - crm_trace("Ignoring %s (%d) input %s (%d): " - "input blocked if 'then' unmigratable", - action->uuid, action->id, - input->action->uuid, input->action->id); + pcmk__trace("Ignoring %s (%d) input %s (%d): " + "input blocked if 'then' unmigratable", + action->uuid, action->id, + input->action->uuid, input->action->id); return false; } else if (pcmk__is_set(input->flags, pcmk__ar_if_first_unmigratable) && pcmk__is_set(input->action->flags, pcmk__action_migratable)) { - crm_trace("Ignoring %s (%d) input %s (%d): ordering applies " - "only if input is unmigratable, but it is migratable", - action->uuid, action->id, - input->action->uuid, input->action->id); + pcmk__trace("Ignoring %s (%d) input %s (%d): ordering applies " + "only if input is unmigratable, but it is migratable", + action->uuid, action->id, + input->action->uuid, input->action->id); return false; } else if ((input->flags == pcmk__ar_ordered) && pcmk__is_set(input->action->flags, pcmk__action_migratable) && pcmk__ends_with(input->action->uuid, "_stop_0")) { - crm_trace("Ignoring %s (%d) input %s (%d): " - "optional but stop in migration", - action->uuid, action->id, - input->action->uuid, input->action->id); + pcmk__trace("Ignoring %s (%d) input %s (%d): " + "optional but stop in migration", + action->uuid, action->id, + input->action->uuid, input->action->id); return false; } else if (input->flags == pcmk__ar_if_on_same_node_or_target) { @@ -678,31 +678,31 @@ should_add_input_to_graph(const pcmk_action_t *action, * executed. */ if (!pcmk__same_node(input_node, assigned)) { - crm_trace("Ignoring %s (%d) input %s (%d): " - "migration target %s is not same as input node %s", - action->uuid, action->id, - input->action->uuid, input->action->id, - (assigned? assigned->priv->name : ""), - (input_node? input_node->priv->name : "")); + pcmk__trace("Ignoring %s (%d) input %s (%d): " + "migration target %s is not same as input node %s", + action->uuid, action->id, + input->action->uuid, input->action->id, + pcmk__node_name(assigned), + pcmk__node_name(input_node)); input->flags = pcmk__ar_none; return false; } } else if (!pcmk__same_node(input_node, action->node)) { - crm_trace("Ignoring %s (%d) input %s (%d): " - "not on same node (%s vs %s)", - action->uuid, action->id, - input->action->uuid, input->action->id, - (action->node? action->node->priv->name : ""), - (input_node? input_node->priv->name : "")); + pcmk__trace("Ignoring %s (%d) input %s (%d): " + "not on same node (%s vs %s)", + action->uuid, action->id, + input->action->uuid, input->action->id, + pcmk__node_name(action->node), + pcmk__node_name(input_node)); input->flags = pcmk__ar_none; return false; } else if (pcmk__is_set(input->action->flags, pcmk__action_optional)) { - crm_trace("Ignoring %s (%d) input %s (%d): " - "ordering optional", - action->uuid, action->id, - input->action->uuid, input->action->id); + pcmk__trace("Ignoring %s (%d) input %s (%d): " + "ordering optional", + action->uuid, action->id, + input->action->uuid, input->action->id); input->flags = pcmk__ar_none; return false; } @@ -710,19 +710,19 @@ should_add_input_to_graph(const pcmk_action_t *action, } else if (input->flags == pcmk__ar_if_required_on_same_node) { if (input->action->node && action->node && !pcmk__same_node(input->action->node, action->node)) { - crm_trace("Ignoring %s (%d) input %s (%d): " - "not on same node (%s vs %s)", - action->uuid, action->id, - input->action->uuid, input->action->id, - pcmk__node_name(action->node), - pcmk__node_name(input->action->node)); + pcmk__trace("Ignoring %s (%d) input %s (%d): " + "not on same node (%s vs %s)", + action->uuid, action->id, + input->action->uuid, input->action->id, + pcmk__node_name(action->node), + pcmk__node_name(input->action->node)); input->flags = pcmk__ar_none; return false; } else if (pcmk__is_set(input->action->flags, pcmk__action_optional)) { - crm_trace("Ignoring %s (%d) input %s (%d): optional", - action->uuid, action->id, - input->action->uuid, input->action->id); + pcmk__trace("Ignoring %s (%d) input %s (%d): optional", + action->uuid, action->id, + input->action->uuid, input->action->id); input->flags = pcmk__ar_none; return false; } @@ -743,19 +743,19 @@ should_add_input_to_graph(const pcmk_action_t *action, pcmk__action_always_in_graph |pcmk__action_added_to_graph) && !should_add_action_to_graph(input->action)) { - crm_trace("Ignoring %s (%d) input %s (%d): " - "input optional", - action->uuid, action->id, - input->action->uuid, input->action->id); + pcmk__trace("Ignoring %s (%d) input %s (%d): " + "input optional", + action->uuid, action->id, + input->action->uuid, input->action->id); return false; } - crm_trace("%s (%d) input %s %s (%d) on %s should be dumped: %s %s %#.6x", - action->uuid, action->id, action_type_str(input->action->flags), - input->action->uuid, input->action->id, - action_node_str(input->action), - action_runnable_str(input->action->flags), - action_optional_str(input->action->flags), input->flags); + pcmk__trace("%s (%d) input %s %s (%d) on %s should be dumped: %s %s %#.6x", + action->uuid, action->id, action_type_str(input->action->flags), + input->action->uuid, input->action->id, + action_node_str(input->action), + action_runnable_str(input->action->flags), + action_optional_str(input->action->flags), input->flags); return true; } @@ -778,12 +778,9 @@ pcmk__graph_has_loop(const pcmk_action_t *init_action, bool has_loop = false; if (pcmk__is_set(input->action->flags, pcmk__action_detect_loop)) { - crm_trace("Breaking tracking loop: %s@%s -> %s@%s (%#.6x)", - input->action->uuid, - input->action->node? input->action->node->priv->name : "", - action->uuid, - action->node? action->node->priv->name : "", - input->flags); + pcmk__trace("Breaking tracking loop: %s@%s -> %s@%s (%#.6x)", + input->action->uuid, pcmk__node_name(input->action->node), + action->uuid, pcmk__node_name(action->node), input->flags); return false; } @@ -801,15 +798,12 @@ pcmk__graph_has_loop(const pcmk_action_t *init_action, pcmk__set_action_flags(input->action, pcmk__action_detect_loop); - crm_trace("Checking inputs of action %s@%s input %s@%s (%#.6x)" - "for graph loop with %s@%s ", - action->uuid, - action->node? action->node->priv->name : "", - input->action->uuid, - input->action->node? input->action->node->priv->name : "", - input->flags, - init_action->uuid, - init_action->node? init_action->node->priv->name : ""); + pcmk__trace("Checking inputs of action %s@%s input %s@%s (%#.6x)" + "for graph loop with %s@%s ", + action->uuid, pcmk__node_name(action->node), + input->action->uuid, pcmk__node_name(input->action->node), + input->flags, + init_action->uuid, pcmk__node_name(init_action->node)); // Recursively check input itself for loops for (GList *iter = input->action->actions_before; @@ -826,12 +820,9 @@ pcmk__graph_has_loop(const pcmk_action_t *init_action, pcmk__clear_action_flags(input->action, pcmk__action_detect_loop); if (!has_loop) { - crm_trace("No input loop found in %s@%s -> %s@%s (%#.6x)", - input->action->uuid, - input->action->node? input->action->node->priv->name : "", - action->uuid, - action->node? action->node->priv->name : "", - input->flags); + pcmk__trace("No input loop found in %s@%s -> %s@%s (%#.6x)", + input->action->uuid, pcmk__node_name(input->action->node), + action->uuid, pcmk__node_name(action->node), input->flags); } return has_loop; } @@ -906,10 +897,9 @@ add_action_to_graph(gpointer data, gpointer user_data) } pcmk__set_action_flags(action, pcmk__action_added_to_graph); - crm_trace("Adding action %d (%s%s%s) to graph", - action->id, action->uuid, - ((action->node == NULL)? "" : " on "), - ((action->node == NULL)? "" : action->node->priv->name)); + pcmk__trace("Adding action %d (%s%s%s) to graph", + action->id, action->uuid, ((action->node != NULL)? " on " : ""), + pcmk__node_name(action->node)); syn = create_graph_synapse(action, scheduler); set = pcmk__xe_create(syn, PCMK__XE_ACTION_SET); @@ -1010,7 +1000,7 @@ pcmk__create_graph(pcmk_scheduler_t *scheduler) int rc = pcmk_rc_ok; transition_id++; - crm_trace("Creating transition graph %d", transition_id); + pcmk__trace("Creating transition graph %d", transition_id); scheduler->priv->graph = pcmk__xe_create(NULL, PCMK__XE_TRANSITION_GRAPH); diff --git a/lib/pacemaker/pcmk_injections.c b/lib/pacemaker/pcmk_injections.c index 09acfa261d0..bd4ac15e377 100644 --- a/lib/pacemaker/pcmk_injections.c +++ b/lib/pacemaker/pcmk_injections.c @@ -324,7 +324,7 @@ pcmk__inject_node(cib_t *cib_conn, const char *node, const char *uuid) rc = cib_conn->cmds->query(cib_conn, xpath, &cib_object, cib_xpath|cib_sync_call); - crm_trace("Injecting node state for %s (rc=%d)", node, rc); + pcmk__trace("Injecting node state for %s (rc=%d)", node, rc); } done: diff --git a/lib/pacemaker/pcmk_sched_actions.c b/lib/pacemaker/pcmk_sched_actions.c index 23b29399d44..b6fae5186c7 100644 --- a/lib/pacemaker/pcmk_sched_actions.c +++ b/lib/pacemaker/pcmk_sched_actions.c @@ -654,8 +654,9 @@ pcmk__update_action_for_orderings(pcmk_action_t *then, if (pcmk__is_set(changed, pcmk__updated_first)) { - crm_trace("Re-processing %s and its 'after' actions " - "because it changed", first->uuid); + pcmk__trace("Re-processing %s and its 'after' actions " + "because it changed", + first->uuid); for (GList *lpc2 = first->actions_after; lpc2 != NULL; lpc2 = lpc2->next) { pcmk__related_action_t *other = lpc2->data; @@ -675,8 +676,9 @@ pcmk__update_action_for_orderings(pcmk_action_t *then, } if (pcmk__is_set(changed, pcmk__updated_then)) { - crm_trace("Re-processing %s and its 'after' actions because it changed", - then->uuid); + pcmk__trace("Re-processing %s and its 'after' actions because it " + "changed", + then->uuid); if (pcmk__is_set(last_flags, pcmk__action_runnable) && !pcmk__is_set(then->flags, pcmk__action_runnable)) { pcmk__block_colocation_dependents(then); @@ -1008,13 +1010,14 @@ pcmk__log_action(const char *pre_text, const pcmk_action_t *action, } else { desc = "(Provisional) "; } - crm_trace("%s%s%sAction %d: %s%s%s%s%s%s", - ((pre_text == NULL)? "" : pre_text), - ((pre_text == NULL)? "" : ": "), - desc, action->id, action->uuid, - (node_uname? "\ton " : ""), (node_uname? node_uname : ""), - (node_uuid? "\t\t(" : ""), (node_uuid? node_uuid : ""), - (node_uuid? ")" : "")); + pcmk__trace("%s%s%sAction %d: %s%s%s%s%s%s", + pcmk__s(pre_text, ""), ((pre_text != NULL)? ": " : ""), + desc, action->id, action->uuid, + ((node_uname != NULL)? "\ton " : ""), + pcmk__s(node_uname, ""), + ((node_uuid != NULL)? "\t\t(" : ""), + pcmk__s(node_uuid, ""), + ((node_uuid != NULL)? ")" : "")); break; default: if (pcmk__is_set(action->flags, pcmk__action_optional)) { @@ -1026,14 +1029,15 @@ pcmk__log_action(const char *pre_text, const pcmk_action_t *action, } else { desc = "(Provisional) "; } - crm_trace("%s%s%sAction %d: %s %s%s%s%s%s%s", - ((pre_text == NULL)? "" : pre_text), - ((pre_text == NULL)? "" : ": "), - desc, action->id, action->uuid, - (action->rsc? action->rsc->id : ""), - (node_uname? "\ton " : ""), (node_uname? node_uname : ""), - (node_uuid? "\t\t(" : ""), (node_uuid? node_uuid : ""), - (node_uuid? ")" : "")); + pcmk__trace("%s%s%sAction %d: %s %s%s%s%s%s%s", + pcmk__s(pre_text, ""), ((pre_text != NULL)? ": " : ""), + desc, action->id, action->uuid, + ((action->rsc != NULL)? action->rsc->id : ""), + ((node_uname != NULL)? "\ton " : ""), + pcmk__s(node_uname, ""), + ((node_uuid != NULL)? "\t\t(" : ""), + pcmk__s(node_uuid, ""), + ((node_uuid != NULL)? ")" : "")); break; } @@ -1041,22 +1045,22 @@ pcmk__log_action(const char *pre_text, const pcmk_action_t *action, const GList *iter = NULL; const pcmk__related_action_t *other = NULL; - crm_trace("\t\t====== Preceding Actions"); + pcmk__trace("\t\t====== Preceding Actions"); for (iter = action->actions_before; iter != NULL; iter = iter->next) { other = (const pcmk__related_action_t *) iter->data; pcmk__log_action("\t\t", other->action, false); } - crm_trace("\t\t====== Subsequent Actions"); + pcmk__trace("\t\t====== Subsequent Actions"); for (iter = action->actions_after; iter != NULL; iter = iter->next) { other = (const pcmk__related_action_t *) iter->data; pcmk__log_action("\t\t", other->action, false); } - crm_trace("\t\t====== End"); + pcmk__trace("\t\t====== End"); } else { - crm_trace("\t\t(before=%d, after=%d)", - g_list_length(action->actions_before), - g_list_length(action->actions_after)); + pcmk__trace("\t\t(before=%u, after=%u)", + g_list_length(action->actions_before), + g_list_length(action->actions_after)); } } @@ -1147,10 +1151,10 @@ pcmk__create_history_xml(xmlNode *parent, lrmd_event_data_t *op, const char *task = NULL; CRM_CHECK(op != NULL, return NULL); - crm_trace("Creating history XML for %s-interval %s action for %s on %s " - "(DC version: %s, origin: %s)", - pcmk__readable_interval(op->interval_ms), op->op_type, op->rsc_id, - ((node == NULL)? "no node" : node), caller_version, origin); + pcmk__trace("Creating history XML for %s-interval %s action for %s on %s " + "(DC version: %s, origin: %s)", + pcmk__readable_interval(op->interval_ms), op->op_type, + op->rsc_id, pcmk__s(node, "no node"), caller_version, origin); task = op->op_type; @@ -1259,11 +1263,11 @@ pcmk__create_history_xml(xmlNode *parent, lrmd_event_data_t *op, if ((op->t_run > 0) || (op->t_rcchange > 0) || (op->exec_time > 0) || (op->queue_time > 0)) { - crm_trace("Timing data (" PCMK__OP_FMT "): " - "last=%lld change=%lld exec=%u queue=%u", - op->rsc_id, op->op_type, op->interval_ms, - (long long) op->t_run, (long long) op->t_rcchange, - op->exec_time, op->queue_time); + pcmk__trace("Timing data (" PCMK__OP_FMT "): " + "last=%lld change=%lld exec=%u queue=%u", + op->rsc_id, op->op_type, op->interval_ms, + (long long) op->t_run, (long long) op->t_rcchange, + op->exec_time, op->queue_time); if ((op->interval_ms > 0) && (op->t_rcchange > 0)) { // Recurring ops may have changed rc after initial run @@ -1385,9 +1389,9 @@ pcmk__deduplicate_action_inputs(pcmk_action_t *action) next = item->next; if ((last_input != NULL) && (input->action->id == last_input->action->id)) { - crm_trace("Input %s (%d) duplicate skipped for action %s (%d)", - input->action->uuid, input->action->id, - action->uuid, action->id); + pcmk__trace("Input %s (%d) duplicate skipped for action %s (%d)", + input->action->uuid, input->action->id, + action->uuid, action->id); /* For the purposes of scheduling, the ordering flags no longer * matter, but crm_simulate looks at certain ones when creating a @@ -1669,9 +1673,10 @@ pcmk__check_action_config(pcmk_resource_t *rsc, pcmk_node_t *node, } } - crm_trace("Checking %s-interval %s for %s on %s for configuration changes", - pcmk__readable_interval(interval_ms), task, rsc->id, - pcmk__node_name(node)); + pcmk__trace("Checking %s-interval %s for %s on %s for configuration " + "changes", + pcmk__readable_interval(interval_ms), task, rsc->id, + pcmk__node_name(node)); task = task_for_digest(task, interval_ms); digest_data = rsc_action_digest_cmp(rsc, xml_op, node, rsc->priv->scheduler); @@ -1889,7 +1894,7 @@ process_rsc_history(const xmlNode *rsc_entry, pcmk_resource_t *rsc, static void process_node_history(pcmk_node_t *node, const xmlNode *lrm_rscs) { - crm_trace("Processing node history for %s", pcmk__node_name(node)); + pcmk__trace("Processing node history for %s", pcmk__node_name(node)); for (const xmlNode *rsc_entry = pcmk__xe_first_child(lrm_rscs, PCMK__XE_LRM_RESOURCE, NULL, NULL); @@ -1933,7 +1938,7 @@ process_node_history(pcmk_node_t *node, const xmlNode *lrm_rscs) void pcmk__handle_rsc_config_changes(pcmk_scheduler_t *scheduler) { - crm_trace("Check resource and action configuration for changes"); + pcmk__trace("Check resource and action configuration for changes"); /* Rather than iterate through the status section, iterate through the nodes * and search for the appropriate status subsection for each. This skips diff --git a/lib/pacemaker/pcmk_sched_colocation.c b/lib/pacemaker/pcmk_sched_colocation.c index de18cdba55e..4f269889baa 100644 --- a/lib/pacemaker/pcmk_sched_colocation.c +++ b/lib/pacemaker/pcmk_sched_colocation.c @@ -500,8 +500,8 @@ unpack_colocation_set(xmlNode *set, int score, const char *coloc_id, } } if (local_score == 0) { - crm_trace("Ignoring colocation '%s' for set '%s' because score is 0", - coloc_id, set_id); + pcmk__trace("Ignoring colocation '%s' for set '%s' because score is 0", + coloc_id, set_id); return; } @@ -637,9 +637,9 @@ colocate_rsc_sets(const char *id, const xmlNode *set1, const xmlNode *set2, uint32_t flags = pcmk__coloc_none; if (score == 0) { - crm_trace("Ignoring colocation '%s' between sets %s and %s " - "because score is 0", - id, pcmk__xe_id(set1), pcmk__xe_id(set2)); + pcmk__trace("Ignoring colocation '%s' between sets %s and %s because " + "score is 0", + id, pcmk__xe_id(set1), pcmk__xe_id(set2)); return; } @@ -1171,15 +1171,15 @@ pcmk__block_colocation_dependents(pcmk_action_t *action) action->task, NULL); if ((child_action == NULL) || pcmk__is_set(child_action->flags, pcmk__action_runnable)) { - crm_trace("Not blocking %s colocation dependents because " - "at least %s has runnable %s", - rsc->id, child->id, action->task); + pcmk__trace("Not blocking %s colocation dependents because at " + "least %s has runnable %s", + rsc->id, child->id, action->task); return; // At least one child can reach desired role } } - crm_trace("Blocking %s colocation dependents due to unrunnable %s %s", - rsc->id, action->rsc->id, action->task); + pcmk__trace("Blocking %s colocation dependents due to unrunnable %s %s", + rsc->id, action->rsc->id, action->task); // Check each colocation where this resource is primary colocations = pcmk__with_this_colocations(rsc); @@ -1303,24 +1303,23 @@ pcmk__colocation_affects(const pcmk_resource_t *dependent, if ((colocation->dependent_role != pcmk_role_unknown) && (colocation->dependent_role != dependent_role_rsc->priv->next_role)) { - crm_trace("Skipping %scolocation '%s': dependent limited to %s role " - - "but %s next role is %s", - ((colocation->score < 0)? "anti-" : ""), - colocation->id, pcmk_role_text(colocation->dependent_role), - dependent_role_rsc->id, - pcmk_role_text(dependent_role_rsc->priv->next_role)); + pcmk__trace("Skipping %scolocation '%s': dependent limited to %s role " + "but %s next role is %s", + ((colocation->score < 0)? "anti-" : ""), + colocation->id, pcmk_role_text(colocation->dependent_role), + dependent_role_rsc->id, + pcmk_role_text(dependent_role_rsc->priv->next_role)); return pcmk__coloc_affects_nothing; } if ((colocation->primary_role != pcmk_role_unknown) && (colocation->primary_role != primary_role_rsc->priv->next_role)) { - crm_trace("Skipping %scolocation '%s': primary limited to %s role " - "but %s next role is %s", - ((colocation->score < 0)? "anti-" : ""), - colocation->id, pcmk_role_text(colocation->primary_role), - primary_role_rsc->id, - pcmk_role_text(primary_role_rsc->priv->next_role)); + pcmk__trace("Skipping %scolocation '%s': primary limited to %s role " + "but %s next role is %s", + ((colocation->score < 0)? "anti-" : ""), + colocation->id, pcmk_role_text(colocation->primary_role), + primary_role_rsc->id, + pcmk_role_text(primary_role_rsc->priv->next_role)); return pcmk__coloc_affects_nothing; } @@ -1707,18 +1706,18 @@ add_node_scores_matching_attr(GHashTable *nodes, if ((colocation->primary->priv->stickiness >= -score) || !pcmk__colocation_has_influence(colocation, NULL) || !allowed_on_one(colocation->dependent)) { - crm_trace("%s: Filtering %d + %f * %d " - "(double negative disallowed)", - pcmk__node_name(node), node->assign->score, factor, - score); + pcmk__trace("%s: Filtering %d + %f * %d " + "(double negative disallowed)", + pcmk__node_name(node), node->assign->score, factor, + score); continue; } } if (node->assign->score == INFINITY_HACK) { - crm_trace("%s: Filtering %d + %f * %d (node was marked unusable)", - pcmk__node_name(node), node->assign->score, factor, - score); + pcmk__trace("%s: Filtering %d + %f * %d (node was marked unusable)", + pcmk__node_name(node), node->assign->score, factor, + score); continue; } @@ -1742,23 +1741,23 @@ add_node_scores_matching_attr(GHashTable *nodes, new_score = pcmk__add_scores(delta, node->assign->score); if (only_positive && (new_score < 0) && (node->assign->score > 0)) { - crm_trace("%s: Filtering %d + %f * %d = %d " - "(negative disallowed, marking node unusable)", - pcmk__node_name(node), node->assign->score, factor, score, - new_score); + pcmk__trace("%s: Filtering %d + %f * %d = %d " + "(negative disallowed, marking node unusable)", + pcmk__node_name(node), node->assign->score, factor, + score, new_score); node->assign->score = INFINITY_HACK; continue; } if (only_positive && (new_score < 0) && (node->assign->score == 0)) { - crm_trace("%s: Filtering %d + %f * %d = %d (negative disallowed)", - pcmk__node_name(node), node->assign->score, factor, score, - new_score); + pcmk__trace("%s: Filtering %d + %f * %d = %d (negative disallowed)", + pcmk__node_name(node), node->assign->score, factor, + score, new_score); continue; } - crm_trace("%s: %d + %f * %d = %d", pcmk__node_name(node), - node->assign->score, factor, score, new_score); + pcmk__trace("%s: %d + %f * %d = %d", pcmk__node_name(node), + node->assign->score, factor, score, new_score); node->assign->score = new_score; } } diff --git a/lib/pacemaker/pcmk_sched_constraints.c b/lib/pacemaker/pcmk_sched_constraints.c index 950d77b1668..213f251c6aa 100644 --- a/lib/pacemaker/pcmk_sched_constraints.c +++ b/lib/pacemaker/pcmk_sched_constraints.c @@ -54,7 +54,7 @@ pcmk__unpack_constraints(pcmk_scheduler_t *scheduler) continue; } - crm_trace("Unpacking %s constraint '%s'", tag, id); + pcmk__trace("Unpacking %s constraint '%s'", tag, id); if (pcmk__str_eq(PCMK_XE_RSC_ORDER, tag, pcmk__str_none)) { pcmk__unpack_ordering(xml_obj, scheduler); @@ -95,7 +95,7 @@ pcmk__find_constraint_resource(GList *rsc_list, const char *id) return match; } } - crm_trace("No match for %s", id); + pcmk__trace("No match for %s", id); return NULL; } @@ -431,7 +431,7 @@ pcmk__tag_to_set(xmlNode *xml_obj, xmlNode **rsc_set, const char *attr, void pcmk__create_internal_constraints(pcmk_scheduler_t *scheduler) { - crm_trace("Create internal constraints"); + pcmk__trace("Create internal constraints"); for (GList *iter = scheduler->priv->resources; iter != NULL; iter = iter->next) { diff --git a/lib/pacemaker/pcmk_sched_group.c b/lib/pacemaker/pcmk_sched_group.c index ab9256a07ea..2b0a120c379 100644 --- a/lib/pacemaker/pcmk_sched_group.c +++ b/lib/pacemaker/pcmk_sched_group.c @@ -889,9 +889,9 @@ pcmk__group_with_colocations(const pcmk_resource_t *rsc, } if (!pcmk__is_set(member->flags, pcmk__rsc_managed)) { - crm_trace("Adding mandatory '%s with' colocations to list for " - "member %s because earlier member %s is unmanaged", - rsc->id, orig_rsc->id, member->id); + pcmk__trace("Adding mandatory '%s with' colocations to list for " + "member %s because earlier member %s is unmanaged", + rsc->id, orig_rsc->id, member->id); for (const GList *cons_iter = rsc->priv->this_with_colocations; cons_iter != NULL; cons_iter = cons_iter->next) { const pcmk__colocation_t *colocation = NULL; diff --git a/lib/pacemaker/pcmk_sched_instances.c b/lib/pacemaker/pcmk_sched_instances.c index 8007238f763..e759996b805 100644 --- a/lib/pacemaker/pcmk_sched_instances.c +++ b/lib/pacemaker/pcmk_sched_instances.c @@ -223,15 +223,17 @@ cmp_instance_by_colocation(const pcmk_resource_t *instance1, // Compare nodes by updated scores if (node1->assign->score < node2->assign->score) { - crm_trace("Assign %s (%d on %s) after %s (%d on %s)", - instance1->id, node1->assign->score, pcmk__node_name(node1), - instance2->id, node2->assign->score, pcmk__node_name(node2)); + pcmk__trace("Assign %s (%d on %s) after %s (%d on %s)", + instance1->id, node1->assign->score, pcmk__node_name(node1), + instance2->id, node2->assign->score, + pcmk__node_name(node2)); rc = 1; } else if (node1->assign->score > node2->assign->score) { - crm_trace("Assign %s (%d on %s) before %s (%d on %s)", - instance1->id, node1->assign->score, pcmk__node_name(node1), - instance2->id, node2->assign->score, pcmk__node_name(node2)); + pcmk__trace("Assign %s (%d on %s) before %s (%d on %s)", + instance1->id, node1->assign->score, pcmk__node_name(node1), + instance2->id, node2->assign->score, + pcmk__node_name(node2)); rc = -1; } @@ -376,15 +378,15 @@ pcmk__cmp_instance(gconstpointer a, gconstpointer b) */ if ((nnodes1 > 0) && (nnodes2 > 0)) { if (nnodes1 < nnodes2) { - crm_trace("Assign %s (active on %d) before %s (active on %d): " - "less multiply active", - instance1->id, nnodes1, instance2->id, nnodes2); + pcmk__trace("Assign %s (active on %d) before %s (active on %d): " + "less multiply active", + instance1->id, nnodes1, instance2->id, nnodes2); return -1; } else if (nnodes1 > nnodes2) { - crm_trace("Assign %s (active on %d) after %s (active on %d): " - "more multiply active", - instance1->id, nnodes1, instance2->id, nnodes2); + pcmk__trace("Assign %s (active on %d) after %s (active on %d): " + "more multiply active", + instance1->id, nnodes1, instance2->id, nnodes2); return 1; } } @@ -395,42 +397,43 @@ pcmk__cmp_instance(gconstpointer a, gconstpointer b) can1 = node_is_allowed(instance1, &node1); can2 = node_is_allowed(instance2, &node2); if (can1 && !can2) { - crm_trace("Assign %s before %s: not active on a disallowed node", - instance1->id, instance2->id); + pcmk__trace("Assign %s before %s: not active on a disallowed node", + instance1->id, instance2->id); return -1; } else if (!can1 && can2) { - crm_trace("Assign %s after %s: active on a disallowed node", - instance1->id, instance2->id); + pcmk__trace("Assign %s after %s: active on a disallowed node", + instance1->id, instance2->id); return 1; } // Prefer instance with higher configured priority if (instance1->priv->priority > instance2->priv->priority) { - crm_trace("Assign %s before %s: priority (%d > %d)", - instance1->id, instance2->id, - instance1->priv->priority, instance2->priv->priority); + pcmk__trace("Assign %s before %s: priority (%d > %d)", + instance1->id, instance2->id, + instance1->priv->priority, instance2->priv->priority); return -1; } else if (instance1->priv->priority < instance2->priv->priority) { - crm_trace("Assign %s after %s: priority (%d < %d)", - instance1->id, instance2->id, - instance1->priv->priority, instance2->priv->priority); + pcmk__trace("Assign %s after %s: priority (%d < %d)", + instance1->id, instance2->id, + instance1->priv->priority, instance2->priv->priority); return 1; } // Prefer active instance if ((node1 == NULL) && (node2 == NULL)) { - crm_trace("No assignment preference for %s vs. %s: inactive", - instance1->id, instance2->id); + pcmk__trace("No assignment preference for %s vs. %s: inactive", + instance1->id, instance2->id); return 0; } else if (node1 == NULL) { - crm_trace("Assign %s after %s: active", instance1->id, instance2->id); + pcmk__trace("Assign %s after %s: active", instance1->id, instance2->id); return 1; } else if (node2 == NULL) { - crm_trace("Assign %s before %s: active", instance1->id, instance2->id); + pcmk__trace("Assign %s before %s: active", instance1->id, + instance2->id); return -1; } @@ -438,13 +441,13 @@ pcmk__cmp_instance(gconstpointer a, gconstpointer b) can1 = pcmk__node_available(node1, false, false); can2 = pcmk__node_available(node2, false, false); if (can1 && !can2) { - crm_trace("Assign %s before %s: current node can run resources", - instance1->id, instance2->id); + pcmk__trace("Assign %s before %s: current node can run resources", + instance1->id, instance2->id); return -1; } else if (!can1 && can2) { - crm_trace("Assign %s after %s: current node can't run resources", - instance1->id, instance2->id); + pcmk__trace("Assign %s after %s: current node can't run resources", + instance1->id, instance2->id); return 1; } @@ -452,31 +455,32 @@ pcmk__cmp_instance(gconstpointer a, gconstpointer b) node1 = pcmk__top_allowed_node(instance1, node1); node2 = pcmk__top_allowed_node(instance2, node2); if ((node1 == NULL) && (node2 == NULL)) { - crm_trace("No assignment preference for %s vs. %s: " - "parent not allowed on either instance's current node", - instance1->id, instance2->id); + pcmk__trace("No assignment preference for %s vs. %s: " + "parent not allowed on either instance's current node", + instance1->id, instance2->id); return 0; } else if (node1 == NULL) { - crm_trace("Assign %s after %s: parent not allowed on current node", - instance1->id, instance2->id); + pcmk__trace("Assign %s after %s: parent not allowed on current node", + instance1->id, instance2->id); return 1; } else if (node2 == NULL) { - crm_trace("Assign %s before %s: parent allowed on current node", - instance1->id, instance2->id); + pcmk__trace("Assign %s before %s: parent allowed on current node", + instance1->id, instance2->id); return -1; } // Prefer instance whose current node is running fewer other instances if (node1->assign->count < node2->assign->count) { - crm_trace("Assign %s before %s: fewer active instances on current node", - instance1->id, instance2->id); + pcmk__trace("Assign %s before %s: fewer active instances on current " + "node", + instance1->id, instance2->id); return -1; } else if (node1->assign->count > node2->assign->count) { - crm_trace("Assign %s after %s: more active instances on current node", - instance1->id, instance2->id); + pcmk__trace("Assign %s after %s: more active instances on current node", + instance1->id, instance2->id); return 1; } @@ -484,12 +488,12 @@ pcmk__cmp_instance(gconstpointer a, gconstpointer b) can1 = did_fail(instance1); can2 = did_fail(instance2); if (!can1 && can2) { - crm_trace("Assign %s before %s: not failed", - instance1->id, instance2->id); + pcmk__trace("Assign %s before %s: not failed", + instance1->id, instance2->id); return -1; } else if (can1 && !can2) { - crm_trace("Assign %s after %s: failed", - instance1->id, instance2->id); + pcmk__trace("Assign %s after %s: failed", + instance1->id, instance2->id); return 1; } @@ -502,14 +506,14 @@ pcmk__cmp_instance(gconstpointer a, gconstpointer b) // Prefer instance with lower instance number rc = pcmk__cmp_instance_number(instance1, instance2); if (rc < 0) { - crm_trace("Assign %s before %s: instance number", - instance1->id, instance2->id); + pcmk__trace("Assign %s before %s: instance number", + instance1->id, instance2->id); } else if (rc > 0) { - crm_trace("Assign %s after %s: instance number", - instance1->id, instance2->id); + pcmk__trace("Assign %s after %s: instance number", + instance1->id, instance2->id); } else { - crm_trace("No assignment preference for %s vs. %s", - instance1->id, instance2->id); + pcmk__trace("No assignment preference for %s vs. %s", + instance1->id, instance2->id); } return rc; } @@ -1330,10 +1334,10 @@ find_instance_action(const pcmk_action_t *action, const pcmk_resource_t *instanc } if (pcmk__is_set(instance->flags, pcmk__rsc_removed)) { - crm_trace("No %s action found for orphan %s", action_name, - instance->id); + pcmk__trace("No %s action found for orphan %s", action_name, + instance->id); } else if (pcmk__is_down_action(action_name)) { - crm_trace("No %s action found for %s", action_name, instance->id); + pcmk__trace("No %s action found for %s", action_name, instance->id); } else { pcmk__err("No %s action found for %s to interleave (bug?)", action_name, instance->id); @@ -1478,21 +1482,21 @@ can_interleave_actions(const pcmk_action_t *first, const pcmk_action_t *then) pcmk_resource_t *rsc = NULL; if ((first->rsc == NULL) || (then->rsc == NULL)) { - crm_trace("Not interleaving %s with %s: not resource actions", - first->uuid, then->uuid); + pcmk__trace("Not interleaving %s with %s: not resource actions", + first->uuid, then->uuid); return false; } if (first->rsc == then->rsc) { - crm_trace("Not interleaving %s with %s: same resource", - first->uuid, then->uuid); + pcmk__trace("Not interleaving %s with %s: same resource", + first->uuid, then->uuid); return false; } if ((first->rsc->priv->variant < pcmk__rsc_variant_clone) || (then->rsc->priv->variant < pcmk__rsc_variant_clone)) { - crm_trace("Not interleaving %s with %s: not clones or bundles", - first->uuid, then->uuid); + pcmk__trace("Not interleaving %s with %s: not clones or bundles", + first->uuid, then->uuid); return false; } diff --git a/lib/pacemaker/pcmk_sched_location.c b/lib/pacemaker/pcmk_sched_location.c index c8e255fa53f..43a1d27ffed 100644 --- a/lib/pacemaker/pcmk_sched_location.c +++ b/lib/pacemaker/pcmk_sched_location.c @@ -224,7 +224,7 @@ generate_location_rule(pcmk_resource_t *rsc, xmlNode *rule_xml, role_spec = pcmk__xe_get(rule_xml, PCMK_XA_ROLE); if (parse_location_role(role_spec, &role)) { - crm_trace("Setting rule %s role filter to %s", rule_id, role_spec); + pcmk__trace("Setting rule %s role filter to %s", rule_id, role_spec); } else { pcmk__config_err("Ignoring location constraint '%s' because rule '%s' " "has invalid " PCMK_XA_ROLE " '%s'", @@ -293,10 +293,10 @@ generate_location_rule(pcmk_resource_t *rsc, xmlNode *rule_xml, free(local_score_attr); if (location_rule->nodes == NULL) { - crm_trace("No matching nodes for location constraint rule %s", rule_id); + pcmk__trace("No matching nodes for location constraint rule %s", rule_id); } else { - crm_trace("Location constraint rule %s matched %d nodes", - rule_id, g_list_length(location_rule->nodes)); + pcmk__trace("Location constraint rule %s matched %u nodes", rule_id, + g_list_length(location_rule->nodes)); } return true; } @@ -347,8 +347,8 @@ unpack_rsc_location(xmlNode *xml_obj, pcmk_resource_t *rsc, role_spec = pcmk__xe_get(xml_obj, PCMK_XA_ROLE); } if (parse_location_role(role_spec, &role)) { - crm_trace("Setting location constraint %s role filter: %s", - id, role_spec); + pcmk__trace("Setting location constraint %s role filter: %s", id, + role_spec); } else { // Not possible with schema validation enabled pcmk__config_err("Ignoring location constraint %s " "because '%s' is not a valid " PCMK_XA_ROLE, @@ -448,7 +448,8 @@ unpack_simple_location(xmlNode *xml_obj, pcmk_scheduler_t *scheduler) unpack_rsc_location(xml_obj, r, NULL, NULL, NULL, 0, NULL); } else { - crm_trace("'%s' does not match '%s' for %s", r->id, value, id); + pcmk__trace("'%s' does not match '%s' for %s", r->id, value, + id); } free(pmatch); diff --git a/lib/pacemaker/pcmk_sched_nodes.c b/lib/pacemaker/pcmk_sched_nodes.c index b89c88056ee..eb6c80dac08 100644 --- a/lib/pacemaker/pcmk_sched_nodes.c +++ b/lib/pacemaker/pcmk_sched_nodes.c @@ -235,16 +235,16 @@ compare_nodes(gconstpointer a, gconstpointer b, gpointer data) } if (node1_score > node2_score) { - crm_trace("%s before %s (score %d > %d)", - pcmk__node_name(node1), pcmk__node_name(node2), - node1_score, node2_score); + pcmk__trace("%s before %s (score %d > %d)", + pcmk__node_name(node1), pcmk__node_name(node2), + node1_score, node2_score); return -1; } if (node1_score < node2_score) { - crm_trace("%s after %s (score %d < %d)", - pcmk__node_name(node1), pcmk__node_name(node2), - node1_score, node2_score); + pcmk__trace("%s after %s (score %d < %d)", + pcmk__node_name(node1), pcmk__node_name(node2), + node1_score, node2_score); return 1; } @@ -260,13 +260,13 @@ compare_nodes(gconstpointer a, gconstpointer b, gpointer data) result = pcmk__compare_node_capacities(node1, node2); if (result < 0) { - crm_trace("%s before %s (greater capacity by %d attributes)", - pcmk__node_name(node1), pcmk__node_name(node2), - result * -1); + pcmk__trace("%s before %s (greater capacity by %d attributes)", + pcmk__node_name(node1), pcmk__node_name(node2), + (result * -1)); return -1; } else if (result > 0) { - crm_trace("%s after %s (lower capacity by %d attributes)", - pcmk__node_name(node1), pcmk__node_name(node2), result); + pcmk__trace("%s after %s (lower capacity by %d attributes)", + pcmk__node_name(node1), pcmk__node_name(node2), result); return 1; } } @@ -274,15 +274,15 @@ compare_nodes(gconstpointer a, gconstpointer b, gpointer data) // Compare number of resources already assigned to node if (node1->priv->num_resources < node2->priv->num_resources) { - crm_trace("%s before %s (%d resources < %d)", - pcmk__node_name(node1), pcmk__node_name(node2), - node1->priv->num_resources, node2->priv->num_resources); + pcmk__trace("%s before %s (%d resources < %d)", + pcmk__node_name(node1), pcmk__node_name(node2), + node1->priv->num_resources, node2->priv->num_resources); return -1; } else if (node1->priv->num_resources > node2->priv->num_resources) { - crm_trace("%s after %s (%d resources > %d)", - pcmk__node_name(node1), pcmk__node_name(node2), - node1->priv->num_resources, node2->priv->num_resources); + pcmk__trace("%s after %s (%d resources > %d)", + pcmk__node_name(node1), pcmk__node_name(node2), + node1->priv->num_resources, node2->priv->num_resources); return 1; } @@ -290,12 +290,12 @@ compare_nodes(gconstpointer a, gconstpointer b, gpointer data) if (preferred != NULL) { if (pcmk__same_node(preferred, node1)) { - crm_trace("%s before %s (preferred node)", - pcmk__node_name(node1), pcmk__node_name(node2)); + pcmk__trace("%s before %s (preferred node)", + pcmk__node_name(node1), pcmk__node_name(node2)); return -1; } else if (pcmk__same_node(preferred, node2)) { - crm_trace("%s after %s (not preferred node)", - pcmk__node_name(node1), pcmk__node_name(node2)); + pcmk__trace("%s after %s (not preferred node)", + pcmk__node_name(node1), pcmk__node_name(node2)); return 1; } } @@ -304,16 +304,16 @@ compare_nodes(gconstpointer a, gconstpointer b, gpointer data) equal: result = strcmp(node1->priv->name, node2->priv->name); if (result < 0) { - crm_trace("%s before %s (name)", - pcmk__node_name(node1), pcmk__node_name(node2)); + pcmk__trace("%s before %s (name)", + pcmk__node_name(node1), pcmk__node_name(node2)); return -1; } else if (result > 0) { - crm_trace("%s after %s (name)", - pcmk__node_name(node1), pcmk__node_name(node2)); + pcmk__trace("%s after %s (name)", + pcmk__node_name(node1), pcmk__node_name(node2)); return 1; } - crm_trace("%s == %s", pcmk__node_name(node1), pcmk__node_name(node2)); + pcmk__trace("%s == %s", pcmk__node_name(node1), pcmk__node_name(node2)); return 0; } diff --git a/lib/pacemaker/pcmk_sched_ordering.c b/lib/pacemaker/pcmk_sched_ordering.c index 90f1114ca96..e3900e20b3f 100644 --- a/lib/pacemaker/pcmk_sched_ordering.c +++ b/lib/pacemaker/pcmk_sched_ordering.c @@ -600,7 +600,7 @@ unpack_order_set(const xmlNode *set, enum pe_order_kind parent_kind, } if (pcmk__list_of_1(resources)) { - crm_trace("Single set: %s", id); + pcmk__trace("Single set: %s", id); goto done; } @@ -1390,7 +1390,7 @@ update_action_for_orderings(gpointer data, gpointer user_data) void pcmk__apply_orderings(pcmk_scheduler_t *sched) { - crm_trace("Applying ordering constraints"); + pcmk__trace("Applying ordering constraints"); /* Ordering constraints need to be processed in the order they were created. * rsc_order_first() and order_resource_actions_after() require the relevant @@ -1423,18 +1423,19 @@ pcmk__apply_orderings(pcmk_scheduler_t *sched) order_resource_actions_after(order->action1, rsc, order); } else { - crm_trace("Applying ordering constraint %d (non-resource actions)", - order->id); + pcmk__trace("Applying ordering constraint %d (non-resource " + "actions)", + order->id); order_actions(order->action1, order->action2, order->flags); } } g_list_foreach(sched->priv->actions, block_colocation_dependents, NULL); - crm_trace("Ordering probes"); + pcmk__trace("Ordering probes"); pcmk__order_probes(sched); - crm_trace("Updating %d actions", g_list_length(sched->priv->actions)); + pcmk__trace("Updating %u actions", g_list_length(sched->priv->actions)); g_list_foreach(sched->priv->actions, update_action_for_orderings, sched); pcmk__disable_invalid_orderings(sched); diff --git a/lib/pacemaker/pcmk_sched_primitive.c b/lib/pacemaker/pcmk_sched_primitive.c index 0c891d8ddd6..0cff31cd966 100644 --- a/lib/pacemaker/pcmk_sched_primitive.c +++ b/lib/pacemaker/pcmk_sched_primitive.c @@ -356,8 +356,8 @@ remote_connection_assigned(const pcmk_resource_t *connection) if ((connection->priv->assigned_node != NULL) && (connection->priv->next_role != pcmk_role_stopped)) { - crm_trace("Pacemaker Remote node %s will be online", - remote_node->priv->id); + pcmk__trace("Pacemaker Remote node %s will be online", + remote_node->priv->id); remote_node->details->online = TRUE; if (!pcmk__is_set(remote_node->priv->flags, pcmk__node_seen)) { // Avoid unnecessary fence, since we will attempt connection @@ -365,11 +365,11 @@ remote_connection_assigned(const pcmk_resource_t *connection) } } else { - crm_trace("Pacemaker Remote node %s will be shut down " - "(%sassigned connection's next role is %s)", - remote_node->priv->id, - ((connection->priv->assigned_node == NULL)? "un" : ""), - pcmk_role_text(connection->priv->next_role)); + pcmk__trace("Pacemaker Remote node %s will be shut down (%sassigned " + "connection's next role is %s)", + remote_node->priv->id, + ((connection->priv->assigned_node == NULL)? "un" : ""), + pcmk_role_text(connection->priv->next_role)); remote_node->details->shutdown = TRUE; } } @@ -1059,8 +1059,8 @@ pcmk__primitive_internal_constraints(pcmk_resource_t *rsc) */ int score; - crm_trace("Order and colocate %s relative to its launcher %s", - rsc->id, rsc->priv->launcher->id); + pcmk__trace("Order and colocate %s relative to its launcher %s", + rsc->id, rsc->priv->launcher->id); pcmk__new_ordering(rsc->priv->launcher, pcmk__op_key(rsc->priv->launcher->id, diff --git a/lib/pacemaker/pcmk_sched_probes.c b/lib/pacemaker/pcmk_sched_probes.c index 9ab4ac34bfb..fe6aea3627d 100644 --- a/lib/pacemaker/pcmk_sched_probes.c +++ b/lib/pacemaker/pcmk_sched_probes.c @@ -443,11 +443,11 @@ add_probe_orderings_for_stops(pcmk_scheduler_t *scheduler) } } - crm_trace("Implying 'probe then' orderings for '%s then %s' " - "(id=%d, type=%.6x)", - ((first == NULL)? order->task1 : first->uuid), - ((then == NULL)? order->task2 : then->uuid), - order->id, order->flags); + pcmk__trace("Implying 'probe then' orderings for '%s then %s' " + "(id=%d, type=%.6x)", + ((first != NULL)? first->uuid : order->task1), + ((then != NULL)? then->uuid : order->task2), + order->id, order->flags); for (GList *probe_iter = probes; probe_iter != NULL; probe_iter = probe_iter->next) { @@ -506,10 +506,10 @@ add_start_orderings_for_probe(pcmk_action_t *probe, return; } - crm_trace("Adding probe start orderings for 'unrunnable %s@%s " - "then instances of %s@%s'", - probe->uuid, pcmk__node_name(probe->node), - after->action->uuid, pcmk__node_name(after->action->node)); + pcmk__trace("Adding probe start orderings for 'unrunnable %s@%s " + "then instances of %s@%s'", + probe->uuid, pcmk__node_name(probe->node), + after->action->uuid, pcmk__node_name(after->action->node)); for (GList *then_iter = after->action->actions_after; then_iter != NULL; then_iter = then_iter->next) { @@ -524,11 +524,11 @@ add_start_orderings_for_probe(pcmk_action_t *probe, continue; } - crm_trace("Adding probe start ordering for 'unrunnable %s@%s " - "then %s@%s' (type=%#.6x)", - probe->uuid, pcmk__node_name(probe->node), - then->action->uuid, pcmk__node_name(then->action->node), - flags); + pcmk__trace("Adding probe start ordering for 'unrunnable %s@%s " + "then %s@%s' (type=%#.6x)", + probe->uuid, pcmk__node_name(probe->node), + then->action->uuid, pcmk__node_name(then->action->node), + flags); /* Prevent the instance from starting if the instance can't, but don't * cause any other intances to stop if already active. @@ -570,9 +570,9 @@ add_restart_orderings_for_probe(pcmk_action_t *probe, pcmk_action_t *after) } pcmk__set_action_flags(after, pcmk__action_detect_loop); - crm_trace("Adding probe restart orderings for '%s@%s then %s@%s'", - probe->uuid, pcmk__node_name(probe->node), - after->uuid, pcmk__node_name(after->node)); + pcmk__trace("Adding probe restart orderings for '%s@%s then %s@%s'", + probe->uuid, pcmk__node_name(probe->node), + after->uuid, pcmk__node_name(after->node)); /* Add restart orderings if "then" is for a different primitive. * Orderings for collective resources will be added later. @@ -667,12 +667,12 @@ add_restart_orderings_for_probe(pcmk_action_t *probe, pcmk_action_t *after) } } - crm_trace("Recursively adding probe restart orderings for " - "'%s@%s then %s@%s' (type=%#.6x)", - after->uuid, pcmk__node_name(after->node), - after_wrapper->action->uuid, - pcmk__node_name(after_wrapper->action->node), - after_wrapper->flags); + pcmk__trace("Recursively adding probe restart orderings for " + "'%s@%s then %s@%s' (type=%#.6x)", + after->uuid, pcmk__node_name(after->node), + after_wrapper->action->uuid, + pcmk__node_name(after_wrapper->action->node), + after_wrapper->flags); add_restart_orderings_for_probe(probe, after_wrapper->action); } @@ -814,8 +814,8 @@ order_then_probes(pcmk_scheduler_t *scheduler) before = clone_actions->data; - crm_trace("Testing '%s then %s' for %s", - first->uuid, before->action->uuid, start->uuid); + pcmk__trace("Testing '%s then %s' for %s", + first->uuid, before->action->uuid, start->uuid); pcmk__assert(before->action->rsc != NULL); first_rsc = before->action->rsc; @@ -824,7 +824,8 @@ order_then_probes(pcmk_scheduler_t *scheduler) } else if (!pcmk__str_eq(first->task, PCMK_ACTION_START, pcmk__str_none)) { - crm_trace("Not a start op %s for %s", first->uuid, start->uuid); + pcmk__trace("Not a start op %s for %s", first->uuid, + start->uuid); } if (first_rsc == NULL) { @@ -832,12 +833,14 @@ order_then_probes(pcmk_scheduler_t *scheduler) } else if (pe__const_top_resource(first_rsc, false) == pe__const_top_resource(start->rsc, false)) { - crm_trace("Same parent %s for %s", first_rsc->id, start->uuid); + pcmk__trace("Same parent %s for %s", first_rsc->id, + start->uuid); continue; } else if (!pcmk__is_clone(pe__const_top_resource(first_rsc, false))) { - crm_trace("Not a clone %s for %s", first_rsc->id, start->uuid); + pcmk__trace("Not a clone %s for %s", first_rsc->id, + start->uuid); continue; } diff --git a/lib/pacemaker/pcmk_sched_remote.c b/lib/pacemaker/pcmk_sched_remote.c index 1733bd1f93f..cbac9a8198b 100644 --- a/lib/pacemaker/pcmk_sched_remote.c +++ b/lib/pacemaker/pcmk_sched_remote.c @@ -185,10 +185,11 @@ apply_remote_ordering(pcmk_action_t *action) remote_rsc = action->node->priv->remote; pcmk__assert(remote_rsc != NULL); - crm_trace("Order %s action %s relative to %s%s (state: %s)", - action->task, action->uuid, - pcmk__is_set(remote_rsc->flags, pcmk__rsc_failed)? "failed " : "", - remote_rsc->id, state2text(state)); + pcmk__trace("Order %s action %s relative to %s%s (state: %s)", action->task, + action->uuid, + (pcmk__is_set(remote_rsc->flags, + pcmk__rsc_failed)? "failed " : ""), + remote_rsc->id, state2text(state)); if (pcmk__strcase_any_of(action->task, PCMK_ACTION_MIGRATE_TO, PCMK_ACTION_MIGRATE_FROM, NULL)) { @@ -319,12 +320,14 @@ apply_launcher_ordering(pcmk_action_t *action) "container failed", FALSE); } - crm_trace("Order %s action %s relative to %s%s for %s%s", - action->task, action->uuid, - pcmk__is_set(remote_rsc->flags, pcmk__rsc_failed)? "failed " : "", - remote_rsc->id, - pcmk__is_set(launcher->flags, pcmk__rsc_failed)? "failed " : "", - launcher->id); + pcmk__trace("Order %s action %s relative to %s%s for %s%s", action->task, + action->uuid, + (pcmk__is_set(remote_rsc->flags, + pcmk__rsc_failed)? "failed " : ""), + remote_rsc->id, + (pcmk__is_set(launcher->flags, + pcmk__rsc_failed)? "failed " : ""), + launcher->id); if (pcmk__strcase_any_of(action->task, PCMK_ACTION_MIGRATE_TO, PCMK_ACTION_MIGRATE_FROM, NULL)) { @@ -398,7 +401,7 @@ pcmk__order_remote_connection_actions(pcmk_scheduler_t *scheduler) return; } - crm_trace("Creating remote connection orderings"); + pcmk__trace("Creating remote connection orderings"); for (GList *iter = scheduler->priv->actions; iter != NULL; iter = iter->next) { @@ -481,11 +484,11 @@ pcmk__order_remote_connection_actions(pcmk_scheduler_t *scheduler) * this logic rather than create_graph_action(). */ if (remote->priv->launcher != NULL) { - crm_trace("Container ordering for %s", action->uuid); + pcmk__trace("Container ordering for %s", action->uuid); apply_launcher_ordering(action); } else { - crm_trace("Remote ordering for %s", action->uuid); + pcmk__trace("Remote ordering for %s", action->uuid); apply_remote_ordering(action); } } @@ -564,29 +567,32 @@ pcmk__connection_host_for_action(const pcmk_action_t *action) } if (began_on == NULL) { - crm_trace("Routing %s for %s through remote connection's " - "next node %s (starting)%s", - action->task, (action->rsc? action->rsc->id : "no resource"), - (ended_on? ended_on->priv->name : "none"), - partial_migration? " (partial migration)" : ""); + pcmk__trace("Routing %s for %s through remote connection's next node " + "%s (starting)%s", + action->task, + ((action->rsc != NULL)? action->rsc->id : "no resource"), + ((ended_on != NULL)? ended_on->priv->name : "none"), + (partial_migration? " (partial migration)" : "")); return ended_on; } if (ended_on == NULL) { - crm_trace("Routing %s for %s through remote connection's " - "current node %s (stopping)%s", - action->task, (action->rsc? action->rsc->id : "no resource"), - (began_on? began_on->priv->name : "none"), - partial_migration? " (partial migration)" : ""); + pcmk__trace("Routing %s for %s through remote connection's current " + "node %s (stopping)%s", + action->task, + ((action->rsc != NULL)? action->rsc->id : "no resource"), + ((began_on != NULL)? began_on->priv->name : "none"), + (partial_migration? " (partial migration)" : "")); return began_on; } if (pcmk__same_node(began_on, ended_on)) { - crm_trace("Routing %s for %s through remote connection's " - "current node %s (not moving)%s", - action->task, (action->rsc? action->rsc->id : "no resource"), - (began_on? began_on->priv->name : "none"), - partial_migration? " (partial migration)" : ""); + pcmk__trace("Routing %s for %s through remote connection's current " + "node %s (not moving)%s", + action->task, + ((action->rsc != NULL)? action->rsc->id : "no resource"), + ((began_on != NULL)? began_on->priv->name : "none"), + (partial_migration? " (partial migration)" : "")); return began_on; } @@ -617,11 +623,12 @@ pcmk__connection_host_for_action(const pcmk_action_t *action) PCMK_ACTION_DEMOTE, PCMK_ACTION_MIGRATE_FROM, PCMK_ACTION_MIGRATE_TO, NULL) && !partial_migration) { - crm_trace("Routing %s for %s through remote connection's " - "current node %s (moving)%s", - action->task, (action->rsc? action->rsc->id : "no resource"), - (began_on? began_on->priv->name : "none"), - partial_migration? " (partial migration)" : ""); + pcmk__trace("Routing %s for %s through remote connection's current " + "node %s (moving)%s", + action->task, + ((action->rsc != NULL)? action->rsc->id : "no resource"), + ((began_on != NULL)? began_on->priv->name : "none"), + (partial_migration? " (partial migration)" : "")); return began_on; } @@ -629,11 +636,12 @@ pcmk__connection_host_for_action(const pcmk_action_t *action) * clear failcount, delete, ...) must occur after the connection starts on * the node it is moving to. */ - crm_trace("Routing %s for %s through remote connection's " - "next node %s (moving)%s", - action->task, (action->rsc? action->rsc->id : "no resource"), - (ended_on? ended_on->priv->name : "none"), - partial_migration? " (partial migration)" : ""); + pcmk__trace("Routing %s for %s through remote connection's next node %s " + "(moving)%s", + action->task, + ((action->rsc != NULL)? action->rsc->id : "no resource"), + ((ended_on != NULL)? ended_on->priv->name : "none"), + (partial_migration? " (partial migration)" : "")); return ended_on; } diff --git a/lib/pacemaker/pcmk_sched_resource.c b/lib/pacemaker/pcmk_sched_resource.c index 7e123b38558..f02ffca6de6 100644 --- a/lib/pacemaker/pcmk_sched_resource.c +++ b/lib/pacemaker/pcmk_sched_resource.c @@ -765,15 +765,15 @@ cmp_resources(gconstpointer a, gconstpointer b, gpointer data) } done: - crm_trace("%s (%d)%s%s %c %s (%d)%s%s: %s", - resource1->id, r1_score, - ((r1_node == NULL)? "" : " on "), - ((r1_node == NULL)? "" : r1_node->priv->id), - ((rc < 0)? '>' : ((rc > 0)? '<' : '=')), - resource2->id, r2_score, - ((r2_node == NULL)? "" : " on "), - ((r2_node == NULL)? "" : r2_node->priv->id), - reason); + pcmk__trace("%s (%d)%s%s %c %s (%d)%s%s: %s", + resource1->id, r1_score, + ((r1_node == NULL)? "" : " on "), + ((r1_node == NULL)? "" : r1_node->priv->id), + ((rc < 0)? '>' : ((rc > 0)? '<' : '=')), + resource2->id, r2_score, + ((r2_node == NULL)? "" : " on "), + ((r2_node == NULL)? "" : r2_node->priv->id), + reason); if (r1_nodes != NULL) { g_hash_table_destroy(r1_nodes); } diff --git a/lib/pacemaker/pcmk_scheduler.c b/lib/pacemaker/pcmk_scheduler.c index b06f58b5086..2f7166b29f7 100644 --- a/lib/pacemaker/pcmk_scheduler.c +++ b/lib/pacemaker/pcmk_scheduler.c @@ -61,9 +61,9 @@ check_params(pcmk_resource_t *rsc, pcmk_node_t *node, const xmlNode *rsc_op, rsc->priv->scheduler); switch (digest_data->rc) { case pcmk__digest_unknown: - crm_trace("Resource %s history entry %s on %s has " - "no digest to compare", - rsc->id, pcmk__xe_id(rsc_op), node->priv->id); + pcmk__trace("Resource %s history entry %s on %s has " + "no digest to compare", + rsc->id, pcmk__xe_id(rsc_op), node->priv->id); break; case pcmk__digest_match: break; @@ -266,7 +266,7 @@ apply_shutdown_locks(pcmk_scheduler_t *scheduler) static void apply_node_criteria(pcmk_scheduler_t *scheduler) { - crm_trace("Applying node-specific scheduling criteria"); + pcmk__trace("Applying node-specific scheduling criteria"); apply_shutdown_locks(scheduler); pcmk__apply_locations(scheduler); g_list_foreach(scheduler->priv->resources, apply_stickiness, NULL); @@ -294,7 +294,7 @@ assign_resources(pcmk_scheduler_t *scheduler) { GList *iter = NULL; - crm_trace("Assigning resources to nodes"); + pcmk__trace("Assigning resources to nodes"); if (!pcmk__str_eq(scheduler->priv->placement_strategy, PCMK_VALUE_DEFAULT, pcmk__str_casei)) { @@ -350,7 +350,7 @@ clear_failcounts_if_orphaned(gpointer data, gpointer user_data) if (!pcmk__is_set(rsc->flags, pcmk__rsc_removed)) { return; } - crm_trace("Clear fail counts for orphaned resource %s", rsc->id); + pcmk__trace("Clear fail counts for orphaned resource %s", rsc->id); /* There's no need to recurse into rsc->private->children because those * should just be unassigned clone instances. @@ -394,7 +394,7 @@ schedule_resource_actions(pcmk_scheduler_t *scheduler) pcmk__free_param_checks(scheduler); if (pcmk__is_set(scheduler->flags, pcmk__sched_probe_resources)) { - crm_trace("Scheduling probes"); + pcmk__trace("Scheduling probes"); pcmk__schedule_probes(scheduler); } @@ -403,7 +403,7 @@ schedule_resource_actions(pcmk_scheduler_t *scheduler) NULL); } - crm_trace("Scheduling resource actions"); + pcmk__trace("Scheduling resource actions"); for (GList *iter = scheduler->priv->resources; iter != NULL; iter = iter->next) { @@ -552,7 +552,7 @@ schedule_fencing_and_shutdowns(pcmk_scheduler_t *scheduler) GList *fencing_ops = NULL; GList *shutdown_ops = NULL; - crm_trace("Scheduling fencing and shutdowns as needed"); + pcmk__trace("Scheduling fencing and shutdowns as needed"); if (!have_managed) { pcmk__notice("No fencing will be done until there are resources to " "manage"); @@ -719,7 +719,7 @@ log_unrunnable_actions(const pcmk_scheduler_t *scheduler) |pcmk__action_runnable |pcmk__action_pseudo; - crm_trace("Required but unrunnable actions:"); + pcmk__trace("Required but unrunnable actions:"); for (const GList *iter = scheduler->priv->actions; iter != NULL; iter = iter->next) { diff --git a/lib/pacemaker/pcmk_simulate.c b/lib/pacemaker/pcmk_simulate.c index b0785d18dfc..e6c26551c7e 100644 --- a/lib/pacemaker/pcmk_simulate.c +++ b/lib/pacemaker/pcmk_simulate.c @@ -345,17 +345,18 @@ profile_filter(const struct dirent *entry) goto done; } if (filename[0] == '.') { - crm_trace("Not profiling hidden file '%s'", filename); + pcmk__trace("Not profiling hidden file '%s'", filename); goto done; } if (!pcmk__ends_with_ext(filename, ".xml")) { - crm_trace("Not profiling file '%s' without '.xml' extension", filename); + pcmk__trace("Not profiling file '%s' without '.xml' extension", + filename); goto done; } buf = pcmk__assert_asprintf("%s/%s", profiling_dir, filename); if ((stat(buf, &sb) != 0) || !S_ISREG(sb.st_mode)) { - crm_trace("Not profiling file '%s': not a regular file", filename); + pcmk__trace("Not profiling file '%s': not a regular file", filename); goto done; } diff --git a/lib/pengine/bundle.c b/lib/pengine/bundle.c index b40907a9488..5c0afd30333 100644 --- a/lib/pengine/bundle.c +++ b/lib/pengine/bundle.c @@ -937,12 +937,13 @@ pe__add_bundle_remote_name(pcmk_resource_t *rsc, xmlNode *xml, } if(node == NULL) { - crm_trace("Cannot determine address for bundle connection %s", rsc->id); + pcmk__trace("Cannot determine address for bundle connection %s", + rsc->id); return NULL; } - crm_trace("Setting address for bundle connection %s to bundle host %s", - rsc->id, pcmk__node_name(node)); + pcmk__trace("Setting address for bundle connection %s to bundle host %s", + rsc->id, pcmk__node_name(node)); if(xml != NULL && field != NULL) { pcmk__xe_set(xml, field, node->priv->name); } diff --git a/lib/pengine/native.c b/lib/pengine/native.c index 44da930b564..4597f53e7cb 100644 --- a/lib/pengine/native.c +++ b/lib/pengine/native.c @@ -661,7 +661,7 @@ pe__common_output_html(pcmk__output_t *out, const pcmk_resource_t *rsc, PCMK__META_INTERNAL_RSC)) && !pcmk__is_set(show_opts, pcmk_show_implicit_rscs)) { - crm_trace("skipping print of internal resource %s", rsc->id); + pcmk__trace("skipping print of internal resource %s", rsc->id); return pcmk_rc_no_output; } target_role = g_hash_table_lookup(rsc->priv->meta, @@ -710,7 +710,7 @@ pe__common_output_text(pcmk__output_t *out, const pcmk_resource_t *rsc, PCMK__META_INTERNAL_RSC)) && !pcmk__is_set(show_opts, pcmk_show_implicit_rscs)) { - crm_trace("skipping print of internal resource %s", rsc->id); + pcmk__trace("skipping print of internal resource %s", rsc->id); return pcmk_rc_no_output; } target_role = g_hash_table_lookup(rsc->priv->meta, diff --git a/lib/pengine/pe_actions.c b/lib/pengine/pe_actions.c index 241c2c4e933..2db9a47016a 100644 --- a/lib/pengine/pe_actions.c +++ b/lib/pengine/pe_actions.c @@ -1360,8 +1360,9 @@ get_complex_task(const pcmk_resource_t *rsc, const char *name) case pcmk__action_started: case pcmk__action_demoted: case pcmk__action_promoted: - crm_trace("Folding %s back into its atomic counterpart for %s", - name, rsc->id); + pcmk__trace("Folding %s back into its atomic counterpart for " + "%s", + name, rsc->id); --task; break; default: @@ -1426,18 +1427,19 @@ find_actions(GList *input, const char *key, const pcmk_node_t *on_node) continue; } else if (on_node == NULL) { - crm_trace("Action %s matches (ignoring node)", key); + pcmk__trace("Action %s matches (ignoring node)", key); result = g_list_prepend(result, action); } else if (action->node == NULL) { - crm_trace("Action %s matches (unallocated, assigning to %s)", - key, pcmk__node_name(on_node)); + pcmk__trace("Action %s matches (unallocated, assigning to %s)", key, + pcmk__node_name(on_node)); action->node = pe__copy_node(on_node); result = g_list_prepend(result, action); } else if (pcmk__same_node(on_node, action->node)) { - crm_trace("Action %s on %s matches", key, pcmk__node_name(on_node)); + pcmk__trace("Action %s on %s matches", key, + pcmk__node_name(on_node)); result = g_list_prepend(result, action); } } @@ -1463,7 +1465,8 @@ find_actions_exact(GList *input, const char *key, const pcmk_node_t *on_node) && pcmk__str_eq(key, action->uuid, pcmk__str_casei) && pcmk__same_node(on_node, action->node)) { - crm_trace("Action %s on %s matches", key, pcmk__node_name(on_node)); + pcmk__trace("Action %s on %s matches", key, + pcmk__node_name(on_node)); result = g_list_prepend(result, action); } } @@ -1569,14 +1572,14 @@ pe__clear_resource_history(pcmk_resource_t *rsc, const pcmk_node_t *node) PCMK_ACTION_LRM_DELETE, node, FALSE, rsc->priv->scheduler); } -#define sort_return(an_int, why) do { \ - free(a_uuid); \ - free(b_uuid); \ - crm_trace("%s (%d) %c %s (%d) : %s", \ - a_xml_id, a_call_id, \ - (((an_int) > 0)? '>' : (((an_int) < 0)? '<' : '=')), \ - b_xml_id, b_call_id, why); \ - return an_int; \ +#define sort_return(an_int, why) do { \ + free(a_uuid); \ + free(b_uuid); \ + pcmk__trace("%s (%d) %c %s (%d) : %s", \ + a_xml_id, a_call_id, \ + (((an_int) > 0)? '>' : (((an_int) < 0)? '<' : '=')), \ + b_xml_id, b_call_id, why); \ + return an_int; \ } while(0) int @@ -1632,8 +1635,8 @@ pe__is_newer_op(const xmlNode *xml_a, const xmlNode *xml_b) pcmk__xe_get_time(xml_a, PCMK_XA_LAST_RC_CHANGE, &last_a); pcmk__xe_get_time(xml_b, PCMK_XA_LAST_RC_CHANGE, &last_b); - crm_trace("rc-change: %lld vs %lld", - (long long) last_a, (long long) last_b); + pcmk__trace("rc-change: %lld vs %lld", + (long long) last_a, (long long) last_b); if (last_a >= 0 && last_a < last_b) { sort_return(-1, "rc-change"); diff --git a/lib/pengine/pe_digest.c b/lib/pengine/pe_digest.c index af5adcfd2d9..3ee18a0f01c 100644 --- a/lib/pengine/pe_digest.c +++ b/lib/pengine/pe_digest.c @@ -56,8 +56,8 @@ attr_not_in_string(xmlAttrPtr a, void *user_data) char *name = pcmk__assert_asprintf(" %s ", (const char *) a->name); if (strstr((const char *) user_data, name) == NULL) { - crm_trace("Filtering %s (not found in '%s')", - (const char *) a->name, (const char *) user_data); + pcmk__trace("Filtering %s (not found in '%s')", + (const char *) a->name, (const char *) user_data); filter = true; } free(name); @@ -72,8 +72,8 @@ attr_in_string(xmlAttrPtr a, void *user_data) char *name = pcmk__assert_asprintf(" %s ", (const char *) a->name); if (strstr((const char *) user_data, name) != NULL) { - crm_trace("Filtering %s (found in '%s')", - (const char *) a->name, (const char *) user_data); + pcmk__trace("Filtering %s (found in '%s')", + (const char *) a->name, (const char *) user_data); filter = true; } free(name); @@ -521,8 +521,8 @@ unfencing_digest_matches(const char *rsc_id, const char *agent, * so there is no risk of collision using strstr(). */ matches = (strstr(node_summary, search_secure) != NULL); - crm_trace("Calculated unfencing digest '%s' %sfound in '%s'", - search_secure, matches? "" : "not ", node_summary); + pcmk__trace("Calculated unfencing digest '%s' %sfound in '%s'", + search_secure, (matches? "" : "not "), node_summary); free(search_secure); } return matches; diff --git a/lib/pengine/pe_health.c b/lib/pengine/pe_health.c index ee21cf79c7a..cb4af0eebbd 100644 --- a/lib/pengine/pe_health.c +++ b/lib/pengine/pe_health.c @@ -94,8 +94,8 @@ add_node_health_value(gpointer key, gpointer value, gpointer user_data) } health_sum->sum = pcmk__add_scores(score, health_sum->sum); - crm_trace("Combined '%s' into node health score (now %s)", - (const char *) value, pcmk_readable_score(health_sum->sum)); + pcmk__trace("Combined '%s' into node health score (now %s)", + (const char *) value, pcmk_readable_score(health_sum->sum)); } } diff --git a/lib/pengine/status.c b/lib/pengine/status.c index 7d42f3020be..b120609021d 100644 --- a/lib/pengine/status.c +++ b/lib/pengine/status.c @@ -89,7 +89,7 @@ cluster_status(pcmk_scheduler_t * scheduler) return FALSE; } - crm_trace("Beginning unpack"); + pcmk__trace("Beginning unpack"); pcmk__xml_free(scheduler->priv->failed); scheduler->priv->failed = pcmk__xe_create(NULL, "failed-ops"); @@ -159,10 +159,10 @@ cluster_status(pcmk_scheduler_t * scheduler) rsc->priv->fns->count(item->data); } - crm_trace("Cluster resource count: %d (%d disabled, %d blocked)", - scheduler->priv->ninstances, - scheduler->priv->disabled_resources, - scheduler->priv->blocked_resources); + pcmk__trace("Cluster resource count: %d (%d disabled, %d blocked)", + scheduler->priv->ninstances, + scheduler->priv->disabled_resources, + scheduler->priv->blocked_resources); } if ((scheduler->priv->local_node_name != NULL) @@ -198,7 +198,7 @@ pe_find_resource_with_flags(GList *rsc_list, const char *id, enum pe_find flags) return match; } } - crm_trace("No match for %s", id); + pcmk__trace("No match for %s", id); return NULL; } @@ -300,13 +300,13 @@ cleanup_calculations(pcmk_scheduler_t *scheduler) g_hash_table_destroy(scheduler->priv->tags); } - crm_trace("deleting resources"); + pcmk__trace("deleting resources"); g_list_free_full(scheduler->priv->resources, pcmk__free_resource); - crm_trace("deleting actions"); + pcmk__trace("deleting actions"); g_list_free_full(scheduler->priv->actions, pcmk__free_action); - crm_trace("deleting nodes"); + pcmk__trace("deleting nodes"); g_list_free_full(scheduler->nodes, pcmk__free_node); scheduler->nodes = NULL; diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c index 6f3e622e7bc..e5bce686022 100644 --- a/lib/pengine/unpack.c +++ b/lib/pengine/unpack.c @@ -175,10 +175,13 @@ pe_fence_node(pcmk_scheduler_t *scheduler, pcmk_node_t *node, pe_fence_op(node, NULL, TRUE, reason, FALSE, scheduler); } else if (node->details->unclean) { - crm_trace("Cluster node %s %s because %s", - pcmk__node_name(node), - pe_can_fence(scheduler, node)? "would also be fenced" : "also is unclean", - reason); + const char *fenced_s = "also is unclean"; + + if (pe_can_fence(scheduler, node)) { + fenced_s = "would also be fenced"; + } + pcmk__trace("Cluster node %s %s because %s", + pcmk__node_name(node), fenced_s, reason); } else { pcmk__sched_warn(scheduler, "Cluster node %s %s: %s", @@ -273,7 +276,7 @@ unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler) scheduler->priv->fence_action = pcmk__cluster_option(config_hash, PCMK_OPT_STONITH_ACTION); - crm_trace("STONITH will %s nodes", scheduler->priv->fence_action); + pcmk__trace("STONITH will %s nodes", scheduler->priv->fence_action); set_config_flag(scheduler, PCMK_OPT_CONCURRENT_FENCING, pcmk__sched_concurrent_fencing); @@ -285,10 +288,11 @@ unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler) value = pcmk__cluster_option(config_hash, PCMK_OPT_PRIORITY_FENCING_DELAY); if (value) { - pcmk_parse_interval_spec(value, - &(scheduler->priv->priority_fencing_ms)); - crm_trace("Priority fencing delay is %s", - pcmk__readable_interval(scheduler->priv->priority_fencing_ms)); + guint *delay_ms = &(scheduler->priv->priority_fencing_ms); + + pcmk_parse_interval_spec(value, delay_ms); + pcmk__trace("Priority fencing delay is %s", + pcmk__readable_interval(*delay_ms)); } set_config_flag(scheduler, PCMK_OPT_STOP_ALL_RESOURCES, @@ -364,30 +368,30 @@ unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler) set_config_flag(scheduler, PCMK_OPT_STOP_ORPHAN_RESOURCES, pcmk__sched_stop_removed_resources); if (pcmk__is_set(scheduler->flags, pcmk__sched_stop_removed_resources)) { - crm_trace("Orphan resources are stopped"); + pcmk__trace("Orphan resources are stopped"); } else { - crm_trace("Orphan resources are ignored"); + pcmk__trace("Orphan resources are ignored"); } set_config_flag(scheduler, PCMK_OPT_STOP_ORPHAN_ACTIONS, pcmk__sched_cancel_removed_actions); if (pcmk__is_set(scheduler->flags, pcmk__sched_cancel_removed_actions)) { - crm_trace("Orphan resource actions are stopped"); + pcmk__trace("Orphan resource actions are stopped"); } else { - crm_trace("Orphan resource actions are ignored"); + pcmk__trace("Orphan resource actions are ignored"); } set_config_flag(scheduler, PCMK_OPT_MAINTENANCE_MODE, pcmk__sched_in_maintenance); - crm_trace("Maintenance mode: %s", - pcmk__flag_text(scheduler->flags, pcmk__sched_in_maintenance)); + pcmk__trace("Maintenance mode: %s", + pcmk__flag_text(scheduler->flags, pcmk__sched_in_maintenance)); set_config_flag(scheduler, PCMK_OPT_START_FAILURE_IS_FATAL, pcmk__sched_start_failure_fatal); if (pcmk__is_set(scheduler->flags, pcmk__sched_start_failure_fatal)) { - crm_trace("Start failures are always fatal"); + pcmk__trace("Start failures are always fatal"); } else { - crm_trace("Start failures are handled by failcount"); + pcmk__trace("Start failures are handled by failcount"); } if (pcmk__is_set(scheduler->flags, pcmk__sched_fencing_enabled)) { @@ -395,7 +399,7 @@ unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler) pcmk__sched_startup_fencing); } if (pcmk__is_set(scheduler->flags, pcmk__sched_startup_fencing)) { - crm_trace("Unseen nodes will be fenced"); + pcmk__trace("Unseen nodes will be fenced"); } else { pcmk__warn_once(pcmk__wo_blind, "Blind faith: not fencing unseen nodes"); @@ -405,28 +409,28 @@ unpack_config(xmlNode *config, pcmk_scheduler_t *scheduler) scheduler->priv->placement_strategy = pcmk__cluster_option(config_hash, PCMK_OPT_PLACEMENT_STRATEGY); - crm_trace("Placement strategy: %s", scheduler->priv->placement_strategy); + pcmk__trace("Placement strategy: %s", scheduler->priv->placement_strategy); set_config_flag(scheduler, PCMK_OPT_SHUTDOWN_LOCK, pcmk__sched_shutdown_lock); if (pcmk__is_set(scheduler->flags, pcmk__sched_shutdown_lock)) { value = pcmk__cluster_option(config_hash, PCMK_OPT_SHUTDOWN_LOCK_LIMIT); pcmk_parse_interval_spec(value, &(scheduler->priv->shutdown_lock_ms)); - crm_trace("Resources will be locked to nodes that were cleanly " - "shut down (locks expire after %s)", - pcmk__readable_interval(scheduler->priv->shutdown_lock_ms)); + pcmk__trace("Resources will be locked to nodes that were cleanly " + "shut down (locks expire after %s)", + pcmk__readable_interval(scheduler->priv->shutdown_lock_ms)); } else { - crm_trace("Resources will not be locked to nodes that were cleanly " - "shut down"); + pcmk__trace("Resources will not be locked to nodes that were cleanly " + "shut down"); } value = pcmk__cluster_option(config_hash, PCMK_OPT_NODE_PENDING_TIMEOUT); pcmk_parse_interval_spec(value, &(scheduler->priv->node_pending_ms)); if (scheduler->priv->node_pending_ms == 0U) { - crm_trace("Do not fence pending nodes"); + pcmk__trace("Do not fence pending nodes"); } else { - crm_trace("Fence pending nodes after %s", - pcmk__readable_interval(scheduler->priv->node_pending_ms)); + pcmk__trace("Fence pending nodes after %s", + pcmk__readable_interval(scheduler->priv->node_pending_ms)); } return TRUE; @@ -491,7 +495,7 @@ pe_create_node(const char *id, const char *uname, const char *type, return NULL; } - crm_trace("Creating node for entry %s/%s", uname, id); + pcmk__trace("Creating node for entry %s/%s", uname, id); new_node->assign->score = score; new_node->priv->id = id; new_node->priv->name = uname; @@ -624,7 +628,7 @@ unpack_nodes(xmlNode *xml_nodes, pcmk_scheduler_t *scheduler) id = pcmk__xe_get(xml_obj, PCMK_XA_ID); uname = pcmk__xe_get(xml_obj, PCMK_XA_UNAME); type = pcmk__xe_get(xml_obj, PCMK_XA_TYPE); - crm_trace("Processing node %s/%s", uname, id); + pcmk__trace("Processing node %s/%s", uname, id); if (id == NULL) { pcmk__config_err("Ignoring <" PCMK_XE_NODE @@ -649,7 +653,7 @@ unpack_nodes(xmlNode *xml_nodes, pcmk_scheduler_t *scheduler) add_node_attrs(xml_obj, new_node, FALSE, scheduler); - crm_trace("Done with node %s", pcmk__xe_get(xml_obj, PCMK_XA_UNAME)); + pcmk__trace("Done with node %s", pcmk__xe_get(xml_obj, PCMK_XA_UNAME)); } return TRUE; @@ -708,8 +712,8 @@ unpack_remote_nodes(xmlNode *xml_resources, pcmk_scheduler_t *scheduler) */ if (new_node_id && (pcmk_find_node(scheduler, new_node_id) == NULL)) { - crm_trace("Found remote node %s defined by resource %s", - new_node_id, pcmk__xe_id(xml_obj)); + pcmk__trace("Found remote node %s defined by resource %s", + new_node_id, pcmk__xe_id(xml_obj)); pe_create_node(new_node_id, new_node_id, PCMK_VALUE_REMOTE, 0, scheduler); } @@ -728,8 +732,8 @@ unpack_remote_nodes(xmlNode *xml_resources, pcmk_scheduler_t *scheduler) scheduler); if (new_node_id && (pcmk_find_node(scheduler, new_node_id) == NULL)) { - crm_trace("Found guest node %s in resource %s", - new_node_id, pcmk__xe_id(xml_obj)); + pcmk__trace("Found guest node %s in resource %s", + new_node_id, pcmk__xe_id(xml_obj)); pe_create_node(new_node_id, new_node_id, PCMK_VALUE_REMOTE, 0, scheduler); } @@ -749,9 +753,10 @@ unpack_remote_nodes(xmlNode *xml_resources, pcmk_scheduler_t *scheduler) if (new_node_id && (pcmk_find_node(scheduler, new_node_id) == NULL)) { - crm_trace("Found guest node %s in resource %s inside group %s", - new_node_id, pcmk__xe_id(xml_obj2), - pcmk__xe_id(xml_obj)); + pcmk__trace("Found guest node %s in resource %s inside " + "group %s", + new_node_id, pcmk__xe_id(xml_obj2), + pcmk__xe_id(xml_obj)); pe_create_node(new_node_id, new_node_id, PCMK_VALUE_REMOTE, 0, scheduler); } @@ -846,7 +851,7 @@ unpack_resources(const xmlNode *xml_resources, pcmk_scheduler_t *scheduler) continue; } - crm_trace("Unpacking <%s " PCMK_XA_ID "='%s'>", xml_obj->name, id); + pcmk__trace("Unpacking <%s " PCMK_XA_ID "='%s'>", xml_obj->name, id); if (pe__unpack_resource(xml_obj, &new_rsc, NULL, scheduler) == pcmk_rc_ok) { scheduler->priv->resources = @@ -993,7 +998,7 @@ unpack_ticket_state(xmlNode *xml_ticket, void *userdata) return pcmk_rc_ok; } - crm_trace("Processing ticket state for %s", ticket_id); + pcmk__trace("Processing ticket state for %s", ticket_id); ticket = g_hash_table_lookup(scheduler->priv->ticket_constraints, ticket_id); @@ -1047,7 +1052,7 @@ unpack_ticket_state(xmlNode *xml_ticket, void *userdata) pcmk__clear_ticket_flags(ticket, pcmk__ticket_standby); } - crm_trace("Done with ticket state for %s", ticket_id); + pcmk__trace("Done with ticket state for %s", ticket_id); return pcmk_rc_ok; } @@ -1068,8 +1073,8 @@ unpack_handle_remote_attrs(pcmk_node_t *this_node, const xmlNode *state, if ((this_node == NULL) || !pcmk__is_pacemaker_remote_node(this_node)) { return; } - crm_trace("Processing Pacemaker Remote node %s", - pcmk__node_name(this_node)); + pcmk__trace("Processing Pacemaker Remote node %s", + pcmk__node_name(this_node)); pcmk__scan_min_int(pcmk__xe_get(state, PCMK__XA_NODE_IN_MAINTENANCE), &maint, 0); @@ -1214,9 +1219,9 @@ unpack_node_state(const xmlNode *state, pcmk_scheduler_t *scheduler) * PCMK_XA_UNAME yet. Recognize the node as pending and wait for it to * join CPG. */ - crm_trace("Handling " PCMK__XE_NODE_STATE " entry with id=\"%s\" " - "without " PCMK_XA_UNAME, - id); + pcmk__trace("Handling " PCMK__XE_NODE_STATE " entry with id=\"%s\" " + "without " PCMK_XA_UNAME, + id); } this_node = pe_find_node_any(scheduler->nodes, id, uname); @@ -1253,8 +1258,8 @@ unpack_node_state(const xmlNode *state, pcmk_scheduler_t *scheduler) this_node->details->unclean = FALSE; pcmk__set_node_flags(this_node, pcmk__node_seen); - crm_trace("Determining online status of cluster node %s (id %s)", - pcmk__node_name(this_node), id); + pcmk__trace("Determining online status of cluster node %s (id %s)", + pcmk__node_name(this_node), id); determine_online_status(state, this_node, scheduler); if (!pcmk__is_set(scheduler->flags, pcmk__sched_quorate) @@ -1304,22 +1309,24 @@ unpack_node_history(const xmlNode *status, bool fence, if ((id == NULL) || (uname == NULL)) { // Warning already logged in first pass through status section - crm_trace("Not unpacking resource history from malformed " - PCMK__XE_NODE_STATE " without id and/or uname"); + pcmk__trace("Not unpacking resource history from malformed " + PCMK__XE_NODE_STATE " without id and/or uname"); continue; } this_node = pe_find_node_any(scheduler->nodes, id, uname); if (this_node == NULL) { // Warning already logged in first pass through status section - crm_trace("Not unpacking resource history for node %s because " - "no longer in configuration", id); + pcmk__trace("Not unpacking resource history for node %s because " + "no longer in configuration", + id); continue; } if (pcmk__is_set(this_node->priv->flags, pcmk__node_unpacked)) { - crm_trace("Not unpacking resource history for node %s because " - "already unpacked", id); + pcmk__trace("Not unpacking resource history for node %s because " + "already unpacked", + id); continue; } @@ -1336,9 +1343,10 @@ unpack_node_history(const xmlNode *status, bool fence, if ((remote->priv->orig_role != pcmk_role_started) || (launcher->priv->orig_role != pcmk_role_started)) { - crm_trace("Not unpacking resource history for guest node %s " - "because launcher and connection are not known to " - "be up", id); + pcmk__trace("Not unpacking resource history for guest node %s " + "because launcher and connection are not known to " + "be up", + id); continue; } @@ -1353,8 +1361,9 @@ unpack_node_history(const xmlNode *status, bool fence, if ((rsc == NULL) || (!pcmk__is_set(scheduler->flags, pcmk__sched_shutdown_lock) && (rsc->priv->orig_role != pcmk_role_started))) { - crm_trace("Not unpacking resource history for remote node %s " - "because connection is not known to be up", id); + pcmk__trace("Not unpacking resource history for remote node %s " + "because connection is not known to be up", + id); continue; } @@ -1367,8 +1376,9 @@ unpack_node_history(const xmlNode *status, bool fence, pcmk__sched_fencing_enabled |pcmk__sched_shutdown_lock) && !this_node->details->online) { - crm_trace("Not unpacking resource history for offline " - "cluster node %s", id); + pcmk__trace("Not unpacking resource history for offline " + "cluster node %s", + id); continue; } @@ -1377,8 +1387,8 @@ unpack_node_history(const xmlNode *status, bool fence, unpack_handle_remote_attrs(this_node, state, scheduler); } - crm_trace("Unpacking resource history for %snode %s", - (fence? "unseen " : ""), id); + pcmk__trace("Unpacking resource history for %snode %s", + (fence? "unseen " : ""), id); pcmk__set_node_flags(this_node, pcmk__node_unpacked); unpack_node_lrm(this_node, state, scheduler); @@ -1396,7 +1406,7 @@ unpack_status(xmlNode *status, pcmk_scheduler_t *scheduler) { xmlNode *state = NULL; - crm_trace("Beginning unpack"); + pcmk__trace("Beginning unpack"); if (scheduler->priv->ticket_constraints == NULL) { scheduler->priv->ticket_constraints = @@ -1416,7 +1426,7 @@ unpack_status(xmlNode *status, pcmk_scheduler_t *scheduler) } while (unpack_node_history(status, FALSE, scheduler) == EAGAIN) { - crm_trace("Another pass through node resource histories is needed"); + pcmk__trace("Another pass through node resource histories is needed"); } // Now catch any nodes we didn't see @@ -1594,8 +1604,8 @@ determine_online_status_no_fencing(pcmk_scheduler_t *scheduler, long long when_online = unpack_node_online(node_state); if (when_member <= 0) { - crm_trace("Node %s is %sdown", pcmk__node_name(this_node), - ((when_member < 0)? "presumed " : "")); + pcmk__trace("Node %s is %sdown", pcmk__node_name(this_node), + ((when_member < 0)? "presumed " : "")); } else if (when_online > 0) { if (pcmk__str_eq(join, CRMD_JOINSTATE_MEMBER, pcmk__str_casei)) { @@ -1607,10 +1617,10 @@ determine_online_status_no_fencing(pcmk_scheduler_t *scheduler, } else if (!pcmk__is_set(this_node->priv->flags, pcmk__node_expected_up)) { - crm_trace("Node %s controller is down: " - "member@%lld online@%lld join=%s expected=%s", - pcmk__node_name(this_node), when_member, when_online, - pcmk__s(join, ""), pcmk__s(exp_state, "")); + pcmk__trace("Node %s controller is down: " + "member@%lld online@%lld join=%s expected=%s", + pcmk__node_name(this_node), when_member, when_online, + pcmk__s(join, ""), pcmk__s(exp_state, "")); } else { /* mark it unclean */ @@ -1685,10 +1695,10 @@ determine_online_status_fencing(pcmk_scheduler_t *scheduler, in CPG. */ - crm_trace("Node %s member@%lld online@%lld join=%s expected=%s%s", - pcmk__node_name(this_node), when_member, when_online, - pcmk__s(join, ""), pcmk__s(exp_state, ""), - (termination_requested? " (termination requested)" : "")); + pcmk__trace("Node %s member@%lld online@%lld join=%s expected=%s%s", + pcmk__node_name(this_node), when_member, when_online, + pcmk__s(join, ""), pcmk__s(exp_state, ""), + (termination_requested? " (termination requested)" : "")); if (this_node->details->shutdown) { pcmk__debug("%s is shutting down", pcmk__node_name(this_node)); @@ -1731,8 +1741,8 @@ determine_online_status_fencing(pcmk_scheduler_t *scheduler, this_node->details->pending = TRUE; } else { - crm_trace("%s is down or still coming up", - pcmk__node_name(this_node)); + pcmk__trace("%s is down or still coming up", + pcmk__node_name(this_node)); } } else if (when_member <= 0) { @@ -1777,9 +1787,9 @@ determine_remote_online_status(pcmk_scheduler_t *scheduler, /* This is a leftover node state entry for a former Pacemaker Remote * node whose connection resource was removed. Consider it offline. */ - crm_trace("Pacemaker Remote node %s is considered OFFLINE because " - "its connection resource has been removed from the CIB", - this_node->priv->id); + pcmk__trace("Pacemaker Remote node %s is considered OFFLINE because " + "its connection resource has been removed from the CIB", + this_node->priv->id); this_node->details->online = FALSE; return; } @@ -1801,43 +1811,44 @@ determine_remote_online_status(pcmk_scheduler_t *scheduler, if ((rsc->priv->orig_role == pcmk_role_started) && (rsc->priv->next_role == pcmk_role_stopped)) { - crm_trace("%s node %s shutting down because connection resource is stopping", - node_type, this_node->priv->id); + pcmk__trace("%s node %s shutting down because connection resource is " + "stopping", + node_type, this_node->priv->id); this_node->details->shutdown = TRUE; } /* Now check all the failure conditions. */ if ((launcher != NULL) && pcmk__is_set(launcher->flags, pcmk__rsc_failed)) { - crm_trace("Guest node %s UNCLEAN because guest resource failed", - this_node->priv->id); + pcmk__trace("Guest node %s UNCLEAN because guest resource failed", + this_node->priv->id); this_node->details->online = FALSE; pcmk__set_node_flags(this_node, pcmk__node_remote_reset); } else if (pcmk__is_set(rsc->flags, pcmk__rsc_failed)) { - crm_trace("%s node %s OFFLINE because connection resource failed", - node_type, this_node->priv->id); + pcmk__trace("%s node %s OFFLINE because connection resource failed", + node_type, this_node->priv->id); this_node->details->online = FALSE; } else if ((rsc->priv->orig_role == pcmk_role_stopped) || ((launcher != NULL) && (launcher->priv->orig_role == pcmk_role_stopped))) { - crm_trace("%s node %s OFFLINE because its resource is stopped", - node_type, this_node->priv->id); + pcmk__trace("%s node %s OFFLINE because its resource is stopped", + node_type, this_node->priv->id); this_node->details->online = FALSE; pcmk__clear_node_flags(this_node, pcmk__node_remote_reset); } else if (host && (host->details->online == FALSE) && host->details->unclean) { - crm_trace("Guest node %s UNCLEAN because host is unclean", - this_node->priv->id); + pcmk__trace("Guest node %s UNCLEAN because host is unclean", + this_node->priv->id); this_node->details->online = FALSE; pcmk__set_node_flags(this_node, pcmk__node_remote_reset); } else { - crm_trace("%s node %s is %s", - node_type, this_node->priv->id, - this_node->details->online? "ONLINE" : "OFFLINE"); + pcmk__trace("%s node %s is %s", + node_type, this_node->priv->id, + (this_node->details->online? "ONLINE" : "OFFLINE")); } } @@ -1886,7 +1897,7 @@ determine_online_status(const xmlNode *node_state, pcmk_node_t *this_node, pcmk__node_name(this_node)); } else if (!this_node->details->online) { - crm_trace("%s is offline", pcmk__node_name(this_node)); + pcmk__trace("%s is offline", pcmk__node_name(this_node)); } else if (this_node->details->shutdown) { pcmk__info("%s is shutting down", pcmk__node_name(this_node)); @@ -2017,15 +2028,17 @@ create_fake_resource(const char *rsc_id, const xmlNode *rsc_entry, link_rsc2remotenode(scheduler, rsc); if (node) { - crm_trace("Setting node %s as shutting down due to orphaned connection resource", rsc_id); + pcmk__trace("Setting node %s as shutting down due to orphaned " + "connection resource", + rsc_id); node->details->shutdown = TRUE; } } if (pcmk__xe_get(rsc_entry, PCMK__META_CONTAINER)) { // This removed resource needs to be mapped to a launcher - crm_trace("Launched resource %s was removed from the configuration", - rsc_id); + pcmk__trace("Launched resource %s was removed from the configuration", + rsc_id); pcmk__set_rsc_flags(rsc, pcmk__rsc_removed_launched); } pcmk__set_rsc_flags(rsc, pcmk__rsc_removed); @@ -2218,7 +2231,7 @@ unpack_find_resource(pcmk_scheduler_t *scheduler, const pcmk_node_t *node, pcmk_resource_t *rsc = NULL; pcmk_resource_t *parent = NULL; - crm_trace("looking for %s", rsc_id); + pcmk__trace("looking for %s", rsc_id); rsc = pe_find_resource(scheduler->priv->resources, rsc_id); if (rsc == NULL) { @@ -2235,16 +2248,17 @@ unpack_find_resource(pcmk_scheduler_t *scheduler, const pcmk_node_t *node, rsc = clone0; parent = uber_parent(clone0); - crm_trace("%s found as %s (%s)", rsc_id, clone0_id, parent->id); + pcmk__trace("%s found as %s (%s)", rsc_id, clone0_id, parent->id); } else { - crm_trace("%s is not known as %s either (orphan)", - rsc_id, clone0_id); + pcmk__trace("%s is not known as %s either (orphan)", + rsc_id, clone0_id); } free(clone0_id); } else if (rsc->priv->variant > pcmk__rsc_variant_primitive) { - crm_trace("Resource history for %s is orphaned " - "because it is no longer primitive", rsc_id); + pcmk__trace("Resource history for %s is orphaned " + "because it is no longer primitive", + rsc_id); return NULL; } else { @@ -2767,8 +2781,8 @@ unpack_lrm_resource(pcmk_node_t *node, const xmlNode *lrm_resource, crm_log_xml_info(lrm_resource, "missing-id"); return NULL; } - crm_trace("Unpacking " PCMK__XE_LRM_RESOURCE " for %s on %s", - rsc_id, pcmk__node_name(node)); + pcmk__trace("Unpacking " PCMK__XE_LRM_RESOURCE " for %s on %s", rsc_id, + pcmk__node_name(node)); /* Build a list of individual PCMK__XE_LRM_RSC_OP entries, so we can sort * them @@ -3534,14 +3548,14 @@ record_failed_op(struct action_history *history) if (pcmk__str_eq(history->key, key, pcmk__str_none) && pcmk__str_eq(uname, history->node->priv->name, pcmk__str_casei)) { - crm_trace("Skipping duplicate entry %s on %s", - history->key, pcmk__node_name(history->node)); + pcmk__trace("Skipping duplicate entry %s on %s", history->key, + pcmk__node_name(history->node)); return; } } - crm_trace("Adding entry for %s on %s to failed action list", - history->key, pcmk__node_name(history->node)); + pcmk__trace("Adding entry for %s on %s to failed action list", + history->key, pcmk__node_name(history->node)); pcmk__xe_set(history->xml, PCMK_XA_UNAME, history->node->priv->name); pcmk__xe_set(history->xml, PCMK__XA_RSC_ID, history->rsc->id); pcmk__xml_copy(scheduler->priv->failed, history->xml); @@ -3661,14 +3675,14 @@ unpack_rsc_op_failure(struct action_history *history, if (!pcmk__is_set(scheduler->flags, pcmk__sched_symmetric_cluster) && (history->exit_status == PCMK_OCF_NOT_INSTALLED)) { - crm_trace("Unexpected result (%s%s%s) was recorded for " - "%s of %s on %s at %s " QB_XS " exit-status=%d id=%s", - crm_exit_str(history->exit_status), - (pcmk__str_empty(history->exit_reason)? "" : ": "), - pcmk__s(history->exit_reason, ""), - (is_probe? "probe" : history->task), history->rsc->id, - pcmk__node_name(history->node), last_change_s, - history->exit_status, history->id); + pcmk__trace("Unexpected result (%s%s%s) was recorded for " + "%s of %s on %s at %s " QB_XS " exit-status=%d id=%s", + crm_exit_str(history->exit_status), + (pcmk__str_empty(history->exit_reason)? "" : ": "), + pcmk__s(history->exit_reason, ""), + (is_probe? "probe" : history->task), history->rsc->id, + pcmk__node_name(history->node), last_change_s, + history->exit_status, history->id); } else { pcmk__sched_warn(scheduler, "Unexpected result (%s%s%s) was recorded for %s of " @@ -4072,10 +4086,10 @@ should_clear_for_param_change(const xmlNode *xml_op, const char *task, rsc->priv->scheduler); switch (digest_data->rc) { case pcmk__digest_unknown: - crm_trace("Resource %s history entry %s on %s" - " has no digest to compare", - rsc->id, pcmk__xe_history_key(xml_op), - node->priv->id); + pcmk__trace("Resource %s history entry %s on %s" + " has no digest to compare", + rsc->id, pcmk__xe_history_key(xml_op), + node->priv->id); break; case pcmk__digest_match: break; @@ -4212,12 +4226,12 @@ check_operation_expiry(struct action_history *history) history->xml); // Update scheduler recheck time according to *last* failure - crm_trace("%s@%lld is %sexpired @%lld with unexpired_failures=%d " - "expiration=%s last-failure@%lld", - history->id, (long long) last_run, (expired? "" : "not "), - (long long) now, unexpired_fail_count, - pcmk__readable_interval(expiration_sec * 1000), - (long long) last_failure); + pcmk__trace("%s@%lld is %sexpired @%lld with unexpired_failures=%d " + "expiration=%s last-failure@%lld", + history->id, (long long) last_run, (expired? "" : "not "), + (long long) now, unexpired_fail_count, + pcmk__readable_interval(expiration_sec * 1000), + (long long) last_failure); last_failure += expiration_sec + 1; if (unexpired_fail_count && (now < last_failure)) { pcmk__update_recheck_time(last_failure, scheduler, @@ -4512,10 +4526,10 @@ process_expired_result(struct action_history *history, int orig_exit_status) if (history->rsc->priv->orig_role <= pcmk_role_stopped) { history->rsc->priv->orig_role = pcmk_role_unknown; } - crm_trace("Ignoring resource history entry %s for probe of %s on %s: " - "Masked failure expired", - history->id, history->rsc->id, - pcmk__node_name(history->node)); + pcmk__trace("Ignoring resource history entry %s for probe of %s on %s: " + "Masked failure expired", + history->id, history->rsc->id, + pcmk__node_name(history->node)); return pcmk_rc_ok; } @@ -5047,11 +5061,11 @@ extract_operations(const char *node, const char *rsc, xmlNode * rsc_entry, gbool counter++; if (start_index < stop_index) { - crm_trace("Skipping %s: not active", pcmk__xe_id(rsc_entry)); + pcmk__trace("Skipping %s: not active", pcmk__xe_id(rsc_entry)); break; } else if (counter < start_index) { - crm_trace("Skipping %s: old", pcmk__xe_id(rsc_op)); + pcmk__trace("Skipping %s: old", pcmk__xe_id(rsc_op)); continue; } op_list = g_list_append(op_list, rsc_op); diff --git a/lib/pengine/utils.c b/lib/pengine/utils.c index 77e0065ad87..4d38b94e663 100644 --- a/lib/pengine/utils.c +++ b/lib/pengine/utils.c @@ -74,7 +74,7 @@ pe_can_fence(const pcmk_scheduler_t *scheduler, const pcmk_node_t *node) return true; } - crm_trace("Cannot fence %s", pcmk__node_name(node)); + pcmk__trace("Cannot fence %s", pcmk__node_name(node)); return false; } @@ -462,8 +462,8 @@ order_actions(pcmk_action_t *first, pcmk_action_t *then, uint32_t flags) return FALSE; } - crm_trace("Creating action wrappers for ordering: %s then %s", - first->uuid, then->uuid); + pcmk__trace("Creating action wrappers for ordering: %s then %s", + first->uuid, then->uuid); /* Ensure we never create a dependency on ourselves... it's happened */ pcmk__assert(first != then); @@ -532,7 +532,7 @@ ticket_new(const char *ticket_id, pcmk_scheduler_t *scheduler) return NULL; } - crm_trace("Creating ticket entry for %s", ticket_id); + pcmk__trace("Creating ticket entry for %s", ticket_id); ticket->id = strdup(ticket_id); ticket->last_granted = -1; diff --git a/lib/services/dbus.c b/lib/services/dbus.c index f0bf141cee7..90a29a0010b 100644 --- a/lib/services/dbus.c +++ b/lib/services/dbus.c @@ -38,11 +38,12 @@ update_dispatch_status(DBusConnection *connection, DBusDispatchStatus new_status, void *data) { if (new_status == DBUS_DISPATCH_DATA_REMAINS) { - crm_trace("DBus connection has messages available for dispatch"); + pcmk__trace("DBus connection has messages available for dispatch"); conn_dispatches = g_list_prepend(conn_dispatches, connection); } else { - crm_trace("DBus connection has no messages available for dispatch " - "(status %d)", new_status); + pcmk__trace("DBus connection has no messages available for dispatch " + "(status %d)", + new_status); } } @@ -58,7 +59,7 @@ dispatch_messages(void) while (dbus_connection_get_dispatch_status(connection) == DBUS_DISPATCH_DATA_REMAINS) { - crm_trace("Dispatching available messages on DBus connection"); + pcmk__trace("Dispatching available messages on DBus connection"); dbus_connection_dispatch(connection); } } @@ -111,10 +112,10 @@ dispatch_fd_data(gpointer userdata) int flags = dbus_watch_get_flags(watch); bool enabled = dbus_watch_get_enabled (watch); - crm_trace("Dispatching DBus watch for file descriptor %d " - "with flags %#x (%s)", - dbus_watch_get_unix_fd(watch), flags, - dbus_watch_flags_to_string(flags)); + pcmk__trace("Dispatching DBus watch for file descriptor %d " + "with flags %#x (%s)", + dbus_watch_get_unix_fd(watch), flags, + dbus_watch_flags_to_string(flags)); if (enabled && (flags & (DBUS_WATCH_READABLE|DBUS_WATCH_WRITABLE))) { oom = !dbus_watch_handle(watch, flags); @@ -125,8 +126,8 @@ dispatch_fd_data(gpointer userdata) if (flags != dbus_watch_get_flags(watch)) { flags = dbus_watch_get_flags(watch); - crm_trace("Dispatched DBus file descriptor watch: now %#x (%s)", - flags, dbus_watch_flags_to_string(flags)); + pcmk__trace("Dispatched DBus file descriptor watch: now %#x (%s)", + flags, dbus_watch_flags_to_string(flags)); } if (oom) { @@ -141,8 +142,8 @@ dispatch_fd_data(gpointer userdata) static void watch_fd_closed(gpointer userdata) { - crm_trace("DBus watch for file descriptor %d is now closed", - dbus_watch_get_unix_fd((DBusWatch *) userdata)); + pcmk__trace("DBus watch for file descriptor %d is now closed", + dbus_watch_get_unix_fd((DBusWatch *) userdata)); } static struct mainloop_fd_callbacks pcmk_dbus_cb = { @@ -158,7 +159,7 @@ add_dbus_watch(DBusWatch *watch, void *data) mainloop_io_t *client = mainloop_add_fd("dbus", G_PRIORITY_DEFAULT, fd, watch, &pcmk_dbus_cb); - crm_trace("Added DBus watch for file descriptor %d", fd); + pcmk__trace("Added DBus watch for file descriptor %d", fd); dbus_watch_set_data(watch, client, NULL); return TRUE; } @@ -175,8 +176,8 @@ toggle_dbus_watch(DBusWatch *watch, void *data) static void remove_dbus_watch(DBusWatch *watch, void *data) { - crm_trace("Removed DBus watch for file descriptor %d", - dbus_watch_get_unix_fd(watch)); + pcmk__trace("Removed DBus watch for file descriptor %d", + dbus_watch_get_unix_fd(watch)); mainloop_del_fd((mainloop_io_t *) dbus_watch_get_data(watch)); } @@ -213,7 +214,7 @@ add_dbus_timer(DBusTimeout *timeout, void *data) if (id) { dbus_timeout_set_data(timeout, GUINT_TO_POINTER(id), NULL); } - crm_trace("Added %dms DBus timer", interval_ms); + pcmk__trace("Added %dms DBus timer", interval_ms); return TRUE; } @@ -223,7 +224,7 @@ remove_dbus_timer(DBusTimeout *timeout, void *data) void *vid = dbus_timeout_get_data(timeout); guint id = GPOINTER_TO_UINT(vid); - crm_trace("Removing %dms DBus timer", dbus_timeout_get_interval(timeout)); + pcmk__trace("Removing %dms DBus timer", dbus_timeout_get_interval(timeout)); if (id) { g_source_remove(id); dbus_timeout_set_data(timeout, 0, NULL); @@ -235,8 +236,8 @@ toggle_dbus_timer(DBusTimeout *timeout, void *data) { bool enabled = dbus_timeout_get_enabled(timeout); - crm_trace("Toggling %dms DBus timer %s", - dbus_timeout_get_interval(timeout), (enabled? "off": "on")); + pcmk__trace("Toggling %dms DBus timer %s", + dbus_timeout_get_interval(timeout), (enabled? "off": "on")); if (enabled) { add_dbus_timer(timeout, data); } else { @@ -347,16 +348,18 @@ pcmk_dbus_find_error(const DBusPendingCall *pending, DBusMessage *reply, switch (dtype) { case DBUS_MESSAGE_TYPE_METHOD_RETURN: - { - char *sig = NULL; - - dbus_message_iter_init(reply, &args); - crm_trace("Received DBus reply with argument type '%s'", - (sig = dbus_message_iter_get_signature(&args))); - if (sig != NULL) { + dbus_message_iter_init(reply, &args); + pcmk__if_tracing( + { + char *sig = dbus_message_iter_get_signature(&args); + + pcmk__trace("Received DBus reply with argument type " + "'%s'", + pcmk__s(sig, "(bad signature)")); dbus_free(sig); - } - } + }, + {} + ); break; case DBUS_MESSAGE_TYPE_INVALID: dbus_set_error_const(&error, ERR_INVALID_REPLY, @@ -380,8 +383,8 @@ pcmk_dbus_find_error(const DBusPendingCall *pending, DBusMessage *reply, } if (dbus_error_is_set(&error)) { - crm_trace("DBus reply indicated error '%s' (%s)", - error.name, error.message); + pcmk__trace("DBus reply indicated error '%s' (%s)", + error.name, error.message); if (ret) { dbus_error_init(ret); dbus_move_error(&error, ret); @@ -642,8 +645,8 @@ handle_query_result(DBusMessage *reply, struct property_query *data) goto cleanup; } - crm_trace("DBus query result for %s: %s='%s'", - data->object, data->name, (value.str? value.str : "")); + pcmk__trace("DBus query result for %s: %s='%s'", + data->object, data->name, pcmk__s(value.str, "")); if (data->callback) { // Query was asynchronous data->callback(data->name, (value.str? value.str : ""), data->userdata); @@ -708,8 +711,7 @@ pcmk_dbus_get_property(DBusConnection *connection, const char *target, CRM_CHECK((connection != NULL) && (target != NULL) && (obj != NULL) && (iface != NULL) && (name != NULL), return NULL); - crm_trace("Querying DBus %s for %s property '%s'", - target, obj, name); + pcmk__trace("Querying DBus %s for %s property '%s'", target, obj, name); // Create a new message to use to invoke method msg = dbus_message_new_method_call(target, obj, BUS_PROPERTY_IFACE, "Get"); diff --git a/lib/services/services.c b/lib/services/services.c index ad99ba96c64..90be29d6c4b 100644 --- a/lib/services/services.c +++ b/lib/services/services.c @@ -483,15 +483,16 @@ services_set_op_pending(svc_action_t *op, DBusPendingCall *pending) pcmk__info("Lost pending %s DBus call (%p)", op->id, op->opaque->pending); } else { - crm_trace("Done with pending %s DBus call (%p)", op->id, op->opaque->pending); + pcmk__trace("Done with pending %s DBus call (%p)", op->id, + op->opaque->pending); } dbus_pending_call_unref(op->opaque->pending); } op->opaque->pending = pending; if (pending) { - crm_trace("Updated pending %s DBus call (%p)", op->id, pending); + pcmk__trace("Updated pending %s DBus call (%p)", op->id, pending); } else { - crm_trace("Cleared pending %s DBus call", op->id); + pcmk__trace("Cleared pending %s DBus call", op->id); } } #endif @@ -505,7 +506,7 @@ services_action_cleanup(svc_action_t * op) #if HAVE_DBUS if(op->opaque->timerid != 0) { - crm_trace("Removing timer for call %s to %s", op->action, op->rsc); + pcmk__trace("Removing timer for call %s to %s", op->action, op->rsc); g_source_remove(op->opaque->timerid); op->opaque->timerid = 0; } @@ -1007,7 +1008,7 @@ services_action_sync(svc_action_t * op) gboolean rc = TRUE; if (op == NULL) { - crm_trace("No operation to execute"); + pcmk__trace("No operation to execute"); return FALSE; } @@ -1025,13 +1026,13 @@ services_action_sync(svc_action_t * op) } else { rc = (execute_action(op) == pcmk_rc_ok); } - crm_trace(" > " PCMK__OP_FMT ": %s = %d", - op->rsc, op->action, op->interval_ms, op->opaque->exec, op->rc); + pcmk__trace(" > " PCMK__OP_FMT ": %s = %d", op->rsc, op->action, + op->interval_ms, op->opaque->exec, op->rc); if (op->stdout_data) { - crm_trace(" > stdout: %s", op->stdout_data); + pcmk__trace(" > stdout: %s", op->stdout_data); } if (op->stderr_data) { - crm_trace(" > stderr: %s", op->stderr_data); + pcmk__trace(" > stderr: %s", op->stderr_data); } return rc; } diff --git a/lib/services/services_linux.c b/lib/services/services_linux.c index fcc87d04f5d..de0862a7804 100644 --- a/lib/services/services_linux.c +++ b/lib/services/services_linux.c @@ -301,22 +301,22 @@ svc_read_output(int fd, svc_action_t * op, bool is_stderr) static const size_t buf_read_len = sizeof(buf) - 1; if (fd < 0) { - crm_trace("No fd for %s", op->id); + pcmk__trace("No fd for %s", op->id); return FALSE; } if (is_stderr && op->stderr_data) { len = strlen(op->stderr_data); data = op->stderr_data; - crm_trace("Reading %s stderr into offset %zu", op->id, len); + pcmk__trace("Reading %s stderr into offset %zu", op->id, len); } else if (is_stderr == FALSE && op->stdout_data) { len = strlen(op->stdout_data); data = op->stdout_data; - crm_trace("Reading %s stdout into offset %zu", op->id, len); + pcmk__trace("Reading %s stdout into offset %zu", op->id, len); } else { - crm_trace("Reading %s %s", op->id, out_type(is_stderr)); + pcmk__trace("Reading %s %s", op->id, out_type(is_stderr)); } do { @@ -325,8 +325,8 @@ svc_read_output(int fd, svc_action_t * op, bool is_stderr) if (rc > 0) { if (len < MAX_OUTPUT) { buf[rc] = 0; - crm_trace("Received %zd bytes of %s %s: %.80s", - rc, op->id, out_type(is_stderr), buf); + pcmk__trace("Received %zd bytes of %s %s: %.80s", rc, op->id, + out_type(is_stderr), buf); data = pcmk__realloc(data, len + rc + 1); strcpy(data + len, buf); len += rc; @@ -375,7 +375,7 @@ pipe_out_done(gpointer user_data) { svc_action_t *op = (svc_action_t *) user_data; - crm_trace("%p", op); + pcmk__trace("%p", op); op->opaque->stdout_gsource = NULL; if (op->opaque->stdout_fd > STDOUT_FILENO) { @@ -438,7 +438,8 @@ set_alert_env(gpointer key, gpointer value, gpointer user_data) crm_perror(LOG_ERR, "setenv %s=%s", (char*)key, (value? (char*)value : "")); } else { - crm_trace("setenv %s=%s", (char*)key, (value? (char*)value : "")); + pcmk__trace("setenv %s=%s", + (const char *) key, pcmk__s((const char *) value, "")); } } @@ -614,8 +615,8 @@ finish_op_output(svc_action_t *op, bool is_stderr) } if (op->synchronous || *source) { - crm_trace("Finish reading %s[%d] %s", - op->id, op->pid, (is_stderr? "stderr" : "stdout")); + pcmk__trace("Finish reading %s[%d] %s", op->id, op->pid, + (is_stderr? "stderr" : "stdout")); svc_read_output(fd, op, is_stderr); if (op->synchronous) { close(fd); @@ -1078,7 +1079,7 @@ wait_for_sync_result(svc_action_t *op, struct sigchld_data_s *data) fds[2].events = POLLIN; fds[2].revents = 0; - crm_trace("Waiting for %s[%d]", op->id, op->pid); + pcmk__trace("Waiting for %s[%d]", op->id, op->pid); do { int poll_rc = poll(fds, 3, timeout); @@ -1138,7 +1139,7 @@ wait_for_sync_result(svc_action_t *op, struct sigchld_data_s *data) } while ((op->timeout < 0 || timeout > 0)); - crm_trace("Stopped waiting for %s[%d]", op->id, op->pid); + pcmk__trace("Stopped waiting for %s[%d]", op->id, op->pid); finish_op_output(op, true); finish_op_output(op, false); close_op_input(op); @@ -1385,7 +1386,7 @@ services__execute_file(svc_action_t *op) goto done; } - crm_trace("Waiting async for '%s'[%d]", op->opaque->exec, op->pid); + pcmk__trace("Waiting async for '%s'[%d]", op->opaque->exec, op->pid); if (pcmk__is_set(op->flags, SVC_ACTION_LEAVE_GROUP)) { mainloop_child_add_with_flags(op->pid, op->timeout, op->id, op, mainloop_leave_pid_group, diff --git a/lib/services/services_lsb.c b/lib/services/services_lsb.c index 1c9d1c8f6d5..c2687b459cf 100644 --- a/lib/services/services_lsb.c +++ b/lib/services/services_lsb.c @@ -123,7 +123,7 @@ services__get_lsb_metadata(const char *type, char **output) PCMK__LSB_INIT_DIR, type); } - crm_trace("Looking into %s", ra_pathname); + pcmk__trace("Looking into %s", ra_pathname); fp = fopen(ra_pathname, "r"); if (fp == NULL) { return -errno; diff --git a/lib/services/systemd.c b/lib/services/systemd.c index 6128b7f74b7..a2570e16a70 100644 --- a/lib/services/systemd.c +++ b/lib/services/systemd.c @@ -71,7 +71,7 @@ services__systemd2ocf(int exit_status) static inline DBusMessage * systemd_new_method(const char *method) { - crm_trace("Calling: %s on " BUS_NAME_MANAGER, method); + pcmk__trace("Calling: %s on " BUS_NAME_MANAGER, method); return dbus_message_new_method_call(BUS_NAME, BUS_PATH, BUS_NAME_MANAGER, method); } @@ -317,7 +317,7 @@ systemd_daemon_reload_complete(DBusPendingCall *pending, void *user_data) dbus_error_free(&error); } else { - crm_trace("Reload %d complete", reload_count); + pcmk__trace("Reload %d complete", reload_count); } if(pending) { @@ -361,9 +361,9 @@ set_result_from_method_error(svc_action_t *op, const DBusError *error) || strstr(error->name, "org.freedesktop.systemd1.NoSuchUnit")) { if (pcmk__str_eq(op->action, PCMK_ACTION_STOP, pcmk__str_casei)) { - crm_trace("Masking systemd stop failure (%s) for %s " - "because unknown service can be considered stopped", - error->name, pcmk__s(op->rsc, "unknown resource")); + pcmk__trace("Masking systemd stop failure (%s) for %s " + "because unknown service can be considered stopped", + error->name, pcmk__s(op->rsc, "unknown resource")); services__set_result(op, PCMK_OCF_OK, PCMK_EXEC_DONE, NULL); return; } @@ -451,7 +451,7 @@ loadunit_completed(DBusPendingCall *pending, void *user_data) DBusMessage *reply = NULL; svc_action_t *op = user_data; - crm_trace("LoadUnit result for %s arrived", op->id); + pcmk__trace("LoadUnit result for %s arrived", op->id); // Grab the reply if (pending != NULL) { @@ -656,7 +656,7 @@ systemd_unit_listall(void) pcmk__debug("ListUnitFiles reply did not provide a string"); continue; } - crm_trace("DBus ListUnitFiles listed: %s", value.str); + pcmk__trace("DBus ListUnitFiles listed: %s", value.str); match = systemd_unit_extension(value.str); if (match == NULL) { @@ -687,7 +687,7 @@ systemd_unit_listall(void) dbus_message_unref(reply); - crm_trace("Found %d manageable systemd unit files", nfiles); + pcmk__trace("Found %d manageable systemd unit files", nfiles); units = g_list_sort(units, sort_str); return units; } @@ -907,8 +907,9 @@ job_removed_filter(DBusConnection *connection, DBusMessage *message, action_name = pcmk__s(action->action, "(unknown)"); - crm_trace("Setting %s result for %s (JobRemoved id=%" PRIu32 ", result=%s", - action_name, unit_name, job_id, result); + pcmk__trace("Setting %s result for %s (JobRemoved id=%" PRIu32 + ", result=%s", + action_name, unit_name, job_id, result); if (pcmk__str_eq(result, "done", pcmk__str_none)) { services__set_result(action, PCMK_OCF_OK, PCMK_EXEC_DONE, NULL); @@ -958,7 +959,7 @@ unit_method_complete(DBusPendingCall *pending, void *user_data) DBusMessage *reply = NULL; svc_action_t *op = user_data; - crm_trace("Result for %s arrived", op->id); + pcmk__trace("Result for %s arrived", op->id); // Grab the reply if (pending != NULL) { @@ -1187,9 +1188,8 @@ parse_status_result(const char *name, const char *state, void *userdata) { svc_action_t *op = userdata; - crm_trace("Resource %s has %s='%s'", - pcmk__s(op->rsc, "(unspecified)"), name, - pcmk__s(state, "")); + pcmk__trace("Resource %s has %s='%s'", pcmk__s(op->rsc, "(unspecified)"), + name, pcmk__s(state, "")); if (pcmk__str_eq(state, "active", pcmk__str_none)) { services__set_result(op, PCMK_OCF_OK, PCMK_EXEC_DONE, NULL); @@ -1286,9 +1286,9 @@ invoke_unit_by_path(svc_action_t *op, const char *unit) return; } - crm_trace("Calling %s for unit path %s%s%s", - method, unit, - ((op->rsc == NULL)? "" : " for resource "), pcmk__s(op->rsc, "")); + pcmk__trace("Calling %s for unit path %s%s%s", method, unit, + ((op->rsc != NULL)? " for resource " : ""), + pcmk__s(op->rsc, "")); msg = systemd_new_method(method); pcmk__assert(msg != NULL); diff --git a/tools/cibadmin.c b/tools/cibadmin.c index b8ef163edc0..449b329a541 100644 --- a/tools/cibadmin.c +++ b/tools/cibadmin.c @@ -837,7 +837,7 @@ main(int argc, char **argv) print_xml_output(output); } - crm_trace("%s exiting normally", crm_system_name); + pcmk__trace("%s exiting normally", crm_system_name); done: g_strfreev(processed_args); @@ -877,7 +877,7 @@ do_work(xmlNode *input, xmlNode **output) } } - crm_trace("Passing \"%s\" to variant_op...", options.cib_action); + pcmk__trace("Passing \"%s\" to variant_op...", options.cib_action); return cib_internal_op(the_cib, options.cib_action, options.dest_node, options.cib_section, input, output, options.cmd_options, options.cib_user); diff --git a/tools/crm_mon.c b/tools/crm_mon.c index cede67dc27d..2ce1f1c4ef3 100644 --- a/tools/crm_mon.c +++ b/tools/crm_mon.c @@ -866,7 +866,7 @@ setup_fencer_connection(void) rc = st->cmds->connect(st, crm_system_name, NULL); if (rc == pcmk_ok) { - crm_trace("Setting up stonith callbacks"); + pcmk__trace("Setting up stonith callbacks"); if (options.watch_fencing) { st->cmds->register_notification(st, PCMK__VALUE_ST_NOTIFY_DISCONNECT, @@ -1719,7 +1719,8 @@ send_custom_trap(const char *node, const char *rsc, const char *task, int target crm_exit(CRM_EX_ERROR); } - crm_trace("Finished running custom notification program '%s'.", options.external_agent); + pcmk__trace("Finished running custom notification program '%s'", + options.external_agent); free(target_rc_s); free(status_s); free(rc_s); @@ -1873,7 +1874,7 @@ crm_diff_update_element(xmlNode *change, void *userdata) name = (const char *)match->name; } - crm_trace("Handling %s operation for %s %p, %s", op, xpath, match, name); + pcmk__trace("Handling %s operation for %s %p, %s", op, xpath, match, name); if(xpath == NULL) { /* Version field, ignore */ @@ -1920,7 +1921,8 @@ crm_diff_update_element(xmlNode *change, void *userdata) free(local_node); } else { - crm_trace("Ignoring %s operation for %s %p, %s", op, xpath, match, name); + pcmk__trace("Ignoring %s operation for %s %p, %s", op, xpath, match, + name); } return pcmk_rc_ok; @@ -1959,7 +1961,7 @@ crm_diff_update(const char *event, xmlNode * msg) } if (current_cib == NULL) { - crm_trace("Re-requesting the full cib"); + pcmk__trace("Re-requesting the full cib"); cib->cmds->query(cib, NULL, ¤t_cib, cib_sync_call); } diff --git a/tools/crm_resource_ban.c b/tools/crm_resource_ban.c index fbdc086c2a8..7166a1a281c 100644 --- a/tools/crm_resource_ban.c +++ b/tools/crm_resource_ban.c @@ -484,9 +484,9 @@ cli_resource_clear_all_expired(xmlNode *root, cib_t *cib_conn, const char *rsc, */ rc = pcmk__xe_get_datetime(date_expr_node, PCMK_XA_END, &end); if (rc != pcmk_rc_ok) { - crm_trace("Date expression %s has invalid " PCMK_XA_END ": %s", - pcmk__s(pcmk__xe_id(date_expr_node), "without ID"), - pcmk_rc_str(rc)); + pcmk__trace("Date expression %s has invalid " PCMK_XA_END ": %s", + pcmk__s(pcmk__xe_id(date_expr_node), "without ID"), + pcmk_rc_str(rc)); continue; // Treat as unexpired } diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c index bb42b2f2a6b..d3421ef5ed7 100644 --- a/tools/crm_resource_runtime.c +++ b/tools/crm_resource_runtime.c @@ -837,11 +837,11 @@ clear_rsc_history(pcmk_ipc_api_t *controld_api, pcmk_resource_t *rsc, return rc; } - crm_trace("Processing %d mainloop inputs", - pcmk_controld_api_replies_expected(controld_api)); + pcmk__trace("Processing %d mainloop inputs", + pcmk_controld_api_replies_expected(controld_api)); while (g_main_context_iteration(NULL, FALSE)) { - crm_trace("Processed mainloop input, %d still remaining", - pcmk_controld_api_replies_expected(controld_api)); + pcmk__trace("Processed mainloop input, %d still remaining", + pcmk_controld_api_replies_expected(controld_api)); } return rc; } @@ -1333,17 +1333,17 @@ bool resource_is_running_on(pcmk_resource_t *rsc, const char *host) if (pcmk__strcase_any_of(host, node->priv->name, node->priv->id, NULL)) { - crm_trace("Resource %s is running on %s\n", rsc->id, host); + pcmk__trace("Resource %s is running on %s\n", rsc->id, host); goto done; } } if (host != NULL) { - crm_trace("Resource %s is not running on: %s\n", rsc->id, host); + pcmk__trace("Resource %s is not running on: %s\n", rsc->id, host); found = false; } else if(host == NULL && hosts == NULL) { - crm_trace("Resource %s is not running\n", rsc->id); + pcmk__trace("Resource %s is not running\n", rsc->id); found = false; } @@ -1392,7 +1392,7 @@ static void dump_list(GList *items, const char *tag) GList *item = NULL; for (item = items; item != NULL; item = item->next) { - crm_trace("%s[%d]: %s", tag, lpc, (char*)item->data); + pcmk__trace("%s[%d]: %s", tag, lpc, (char*)item->data); lpc++; } } @@ -1678,7 +1678,7 @@ cli_resource_restart(pcmk__output_t *out, pcmk_resource_t *rsc, { int rc = pcmk_rc_ok; int lpc = 0; - int before = 0; + guint before = 0; guint step_timeout_s = 0; /* @TODO Due to this sleep interval, a timeout <2s will cause problems and @@ -1867,7 +1867,7 @@ cli_resource_restart(pcmk__output_t *out, pcmk_resource_t *rsc, sleep(sleep_interval); if(timeout) { timeout -= sleep_interval; - crm_trace("%us remaining", timeout); + pcmk__trace("%us remaining", timeout); } rc = update_dataset(cib, scheduler, &cib_xml_orig, false); if(rc != pcmk_rc_ok) { @@ -1888,7 +1888,8 @@ cli_resource_restart(pcmk__output_t *out, pcmk_resource_t *rsc, dump_list(list_delta, "Delta"); } - crm_trace("%d (was %d) resources remaining", g_list_length(list_delta), before); + pcmk__trace("%u (was %u) resources remaining", + g_list_length(list_delta), before); if(before == g_list_length(list_delta)) { /* aborted during stop phase, print the contents of list_delta */ out->err(out, "Could not complete shutdown of %s, %d resources remaining", rsc_id, g_list_length(list_delta)); @@ -1947,7 +1948,7 @@ cli_resource_restart(pcmk__output_t *out, pcmk_resource_t *rsc, sleep(sleep_interval); if(timeout) { timeout -= sleep_interval; - crm_trace("%ds remaining", timeout); + pcmk__trace("%ds remaining", timeout); } rc = update_dataset(cib, scheduler, &cib_xml_orig, false); @@ -2549,9 +2550,9 @@ cli_resource_move(pcmk_resource_t *rsc, const char *rsc_id, rc = cli_resource_prefer(out, rsc_id, dest->priv->name, move_lifetime, cib, promoted_role_only, PCMK_ROLE_PROMOTED); - crm_trace("%s%s now prefers %s%s", - rsc->id, (promoted_role_only? " (promoted)" : ""), - pcmk__node_name(dest), (force? " (forced)" : "")); + pcmk__trace("%s%s now prefers %s%s", + rsc->id, (promoted_role_only? " (promoted)" : ""), + pcmk__node_name(dest), (force? " (forced)" : "")); /* Ban the current location if force is set and the current location is not * the destination. It is possible to use move to enforce a location without @@ -2574,8 +2575,8 @@ cli_resource_move(pcmk_resource_t *rsc, const char *rsc_id, rsc_id, active_s); } else { - crm_trace("Not banning %s from its current location: not active", - rsc_id); + pcmk__trace("Not banning %s from its current location: not active", + rsc_id); } } diff --git a/tools/crmadmin.c b/tools/crmadmin.c index 275d51bad2c..6cf9b13ebe8 100644 --- a/tools/crmadmin.c +++ b/tools/crmadmin.c @@ -103,7 +103,7 @@ command_cb(const gchar *option_name, const gchar *optarg, gpointer data, GError { if (!strcmp(option_name, "--status") || !strcmp(option_name, "-S")) { command = cmd_health; - crm_trace("Option %c => %s", 'S', optarg); + pcmk__trace("Option %c => %s", 'S', optarg); } if (!strcmp(option_name, "--pacemakerd") || !strcmp(option_name, "-P")) { From a3037090f1eb1b1c151934cd5039da39fff2bc70 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 27 Mar 2025 18:00:24 -0700 Subject: [PATCH 173/186] API: libcrmcommon: Deprecate crm_trace() Pacemaker should not be used for general-purpose logging. Ref T622 Signed-off-by: Reid Wahl --- include/crm/common/logging.h | 2 -- include/crm/common/logging_compat.h | 3 +++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/include/crm/common/logging.h b/include/crm/common/logging.h index d3c00bda268..d9db75acb87 100644 --- a/include/crm/common/logging.h +++ b/include/crm/common/logging.h @@ -346,8 +346,6 @@ pcmk__clip_log_level(int level) } \ } while (0) -#define crm_trace(fmt, args...) do_crm_log_unlikely(LOG_TRACE, fmt ,##args) - #define crm_log_xml_crit(xml, text) do_crm_log_xml(LOG_CRIT, text, xml) #define crm_log_xml_err(xml, text) do_crm_log_xml(LOG_ERR, text, xml) #define crm_log_xml_warn(xml, text) do_crm_log_xml(LOG_WARNING, text, xml) diff --git a/include/crm/common/logging_compat.h b/include/crm/common/logging_compat.h index 82458738d08..9a1c5f0718e 100644 --- a/include/crm/common/logging_compat.h +++ b/include/crm/common/logging_compat.h @@ -47,6 +47,9 @@ extern "C" { //! \deprecated Do not use #define crm_debug(fmt, args...) do_crm_log_unlikely(LOG_DEBUG, fmt, ##args) +//! \deprecated Do not use +#define crm_trace(fmt, args...) do_crm_log_unlikely(LOG_TRACE, fmt, ##args) + #ifdef __cplusplus } #endif From f026af7929ef705ed5e228d91befcd061173a43e Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 27 Mar 2025 18:56:55 -0700 Subject: [PATCH 174/186] API: libcrmcommon: Deprecate crm_log_xml_crit() Pacemaker should not be used for general-purpose logging. Ref T622 Signed-off-by: Reid Wahl --- include/crm/common/logging.h | 1 - include/crm/common/logging_compat.h | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/include/crm/common/logging.h b/include/crm/common/logging.h index d9db75acb87..ced7fe89972 100644 --- a/include/crm/common/logging.h +++ b/include/crm/common/logging.h @@ -346,7 +346,6 @@ pcmk__clip_log_level(int level) } \ } while (0) -#define crm_log_xml_crit(xml, text) do_crm_log_xml(LOG_CRIT, text, xml) #define crm_log_xml_err(xml, text) do_crm_log_xml(LOG_ERR, text, xml) #define crm_log_xml_warn(xml, text) do_crm_log_xml(LOG_WARNING, text, xml) #define crm_log_xml_notice(xml, text) do_crm_log_xml(LOG_NOTICE, text, xml) diff --git a/include/crm/common/logging_compat.h b/include/crm/common/logging_compat.h index 9a1c5f0718e..fc7ec9e56d4 100644 --- a/include/crm/common/logging_compat.h +++ b/include/crm/common/logging_compat.h @@ -50,6 +50,9 @@ extern "C" { //! \deprecated Do not use #define crm_trace(fmt, args...) do_crm_log_unlikely(LOG_TRACE, fmt, ##args) +//! \deprecated Do not use +#define crm_log_xml_crit(xml, text) do_crm_log_xml(LOG_CRIT, text, xml) + #ifdef __cplusplus } #endif From 0ed695c71d99802a46dc74a7bcc9fadd42e231ab Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 27 Mar 2025 19:02:45 -0700 Subject: [PATCH 175/186] Refactor: libcrmcommon: New pcmk__log_xml_err() To replace crm_log_xml_err() Signed-off-by: Reid Wahl --- daemons/based/based_callbacks.c | 2 +- daemons/controld/controld_execd.c | 6 +++--- daemons/controld/controld_messages.c | 2 +- daemons/controld/controld_te_actions.c | 2 +- daemons/controld/controld_transition.c | 4 ++-- daemons/fenced/pacemaker-fenced.c | 2 +- include/crm/common/logging_internal.h | 9 +++++++++ lib/cib/cib_native.c | 6 +++--- lib/cib/cib_ops.c | 2 +- lib/fencing/st_client.c | 4 ++-- lib/lrmd/lrmd_client.c | 6 +++--- lib/pacemaker/pcmk_simulate.c | 4 ++-- 12 files changed, 29 insertions(+), 20 deletions(-) diff --git a/daemons/based/based_callbacks.c b/daemons/based/based_callbacks.c index 4d0efd2c0ae..3aa7adafd44 100644 --- a/daemons/based/based_callbacks.c +++ b/daemons/based/based_callbacks.c @@ -925,7 +925,7 @@ cib_process_request(xmlNode *request, gboolean privileged, if (op_reply == NULL && (needs_reply || local_notify)) { pcmk__err("Unexpected NULL reply to message"); - crm_log_xml_err(request, "null reply"); + pcmk__log_xml_err(request, "null reply"); needs_reply = FALSE; local_notify = FALSE; } diff --git a/daemons/controld/controld_execd.c b/daemons/controld/controld_execd.c index 74592cb6ef6..ae8e79582f0 100644 --- a/daemons/controld/controld_execd.c +++ b/daemons/controld/controld_execd.c @@ -1241,7 +1241,7 @@ handle_reprobe_op(lrm_state_t *lrm_state, xmlNode *msg, const char *from_sys, pcmk__debug("ACK'ing re-probe from %s (%s)", from_sys, from_host); if (relay_message(reply, TRUE) == FALSE) { - crm_log_xml_err(reply, "Unable to route reply"); + pcmk__log_xml_err(reply, "Unable to route reply"); } pcmk__xml_free(reply); } @@ -1777,7 +1777,7 @@ controld_ack_event_directly(const char *to_host, const char *to_sys, pcmk__xe_get(reply, PCMK_XA_REFERENCE)); if (relay_message(reply, TRUE) == FALSE) { - crm_log_xml_err(reply, "Unable to route reply"); + pcmk__log_xml_err(reply, "Unable to route reply"); } pcmk__xml_free(update); @@ -1925,7 +1925,7 @@ do_lrm_rsc_op(lrm_state_t *lrm_state, lrmd_rsc_info_t *rsc, xmlNode *msg, transition = pcmk__xe_get(msg, PCMK__XA_TRANSITION_KEY); if (pcmk__str_empty(transition)) { - crm_log_xml_err(msg, "Missing transition number"); + pcmk__log_xml_err(msg, "Missing transition number"); } if (lrm_state == NULL) { diff --git a/daemons/controld/controld_messages.c b/daemons/controld/controld_messages.c index 4b54374cc1e..a582d26e0cc 100644 --- a/daemons/controld/controld_messages.c +++ b/daemons/controld/controld_messages.c @@ -1228,7 +1228,7 @@ handle_request(xmlNode *stored_msg, enum crmd_fsa_cause cause) } else { pcmk__err("Unexpected request (%s) sent to %s", op, (AM_I_DC ? "the DC" : "non-DC node")); - crm_log_xml_err(stored_msg, "Unexpected"); + pcmk__log_xml_err(stored_msg, "Unexpected"); } return I_NULL; diff --git a/daemons/controld/controld_te_actions.c b/daemons/controld/controld_te_actions.c index a2df5221748..8d9c9ae7bf6 100644 --- a/daemons/controld/controld_te_actions.c +++ b/daemons/controld/controld_te_actions.c @@ -279,7 +279,7 @@ controld_record_action_event(pcmk__graph_action_t *action, rsc_id = pcmk__xe_id(action_rsc); CRM_CHECK(rsc_id != NULL, - crm_log_xml_err(action->xml, "Bad:action"); return); + pcmk__log_xml_err(action->xml, "Bad:action"); return); /* update the CIB diff --git a/daemons/controld/controld_transition.c b/daemons/controld/controld_transition.c index 1414bb787f6..e561ac8ee13 100644 --- a/daemons/controld/controld_transition.c +++ b/daemons/controld/controld_transition.c @@ -132,7 +132,7 @@ do_te_invoke(long long action, PCMK__XA_CRM_TGRAPH_IN); if (graph_data == NULL) { - crm_log_xml_err(input->msg, "Bad command"); + pcmk__log_xml_err(input->msg, "Bad command"); register_fsa_error(C_FSA_INTERNAL, I_FAIL, NULL); return; } @@ -161,7 +161,7 @@ do_te_invoke(long long action, CRM_CHECK(graph_data != NULL, pcmk__err("Input raised by %s is invalid", msg_data->origin); - crm_log_xml_err(input->msg, "Bad command"); + pcmk__log_xml_err(input->msg, "Bad command"); return); pcmk__free_graph(controld_globals.transition_graph); diff --git a/daemons/fenced/pacemaker-fenced.c b/daemons/fenced/pacemaker-fenced.c index c6abe3964f6..e6c50d88797 100644 --- a/daemons/fenced/pacemaker-fenced.c +++ b/daemons/fenced/pacemaker-fenced.c @@ -290,7 +290,7 @@ stonith_notify_client(gpointer key, gpointer value, gpointer user_data) CRM_CHECK(update_msg != NULL, return); type = pcmk__xe_get(update_msg, PCMK__XA_SUBT); - CRM_CHECK(type != NULL, crm_log_xml_err(update_msg, "notify"); return); + CRM_CHECK(type != NULL, pcmk__log_xml_err(update_msg, "notify"); return); if (client->ipcs == NULL) { pcmk__trace("Skipping client with NULL channel"); diff --git a/include/crm/common/logging_internal.h b/include/crm/common/logging_internal.h index 7ef956d1dae..ebaffb4836d 100644 --- a/include/crm/common/logging_internal.h +++ b/include/crm/common/logging_internal.h @@ -136,6 +136,15 @@ extern "C" { */ #define pcmk__trace(fmt, args...) do_crm_log_unlikely(LOG_TRACE, fmt, ##args) +/*! + * \internal + * \brief Log XML line-by-line in a formatted fashion at \c LOG_ERR level + * + * \param[in] prefix Prefix for each line + * \param[in] xml XML to log + */ +#define pcmk__log_xml_err(xml, prefix) do_crm_log_xml(LOG_ERR, prefix, xml) + /* Some warnings are too noisy when logged every time a given function is called * (for example, using a deprecated feature). As an alternative, we allow * warnings to be logged once per invocation of the calling program. Each of diff --git a/lib/cib/cib_native.c b/lib/cib/cib_native.c index f5733034103..a637798a5b5 100644 --- a/lib/cib/cib_native.c +++ b/lib/cib/cib_native.c @@ -117,13 +117,13 @@ cib_native_perform_op_delegate(cib_t *cib, const char *op, const char *host, } else if (reply_id <= 0) { pcmk__err("Received bad reply: No id set"); - crm_log_xml_err(op_reply, "Bad reply"); + pcmk__log_xml_err(op_reply, "Bad reply"); rc = -ENOMSG; goto done; } else { pcmk__err("Received bad reply: %d (wanted %d)", reply_id, cib->call_id); - crm_log_xml_err(op_reply, "Old reply"); + pcmk__log_xml_err(op_reply, "Old reply"); rc = -ENOMSG; goto done; } @@ -150,7 +150,7 @@ cib_native_perform_op_delegate(cib_t *cib, const char *op, const char *host, case -ENOMSG: pcmk__err("Call failed: %s", pcmk_strerror(rc)); if (op_reply) { - crm_log_xml_err(op_reply, "Invalid reply"); + pcmk__log_xml_err(op_reply, "Invalid reply"); } break; diff --git a/lib/cib/cib_ops.c b/lib/cib/cib_ops.c index 4ae2befc0fe..ca7788f2b4d 100644 --- a/lib/cib/cib_ops.c +++ b/lib/cib/cib_ops.c @@ -636,7 +636,7 @@ cib_process_create(const char *op, int options, const char *section, xmlNode * r } if (result != pcmk_ok) { - crm_log_xml_err(failed, "CIB Update failures"); + pcmk__log_xml_err(failed, "CIB Update failures"); *answer = failed; } else { diff --git a/lib/fencing/st_client.c b/lib/fencing/st_client.c index d364cc18af4..cafcf08959f 100644 --- a/lib/fencing/st_client.c +++ b/lib/fencing/st_client.c @@ -1652,7 +1652,7 @@ stonith_send_command(stonith_t * stonith, const char *op, xmlNode * data, xmlNod } else if (reply_id <= 0) { pcmk__err("Received bad reply: No id set"); - crm_log_xml_err(op_reply, "Bad reply"); + pcmk__log_xml_err(op_reply, "Bad reply"); pcmk__xml_free(op_reply); op_reply = NULL; rc = -ENOMSG; @@ -1660,7 +1660,7 @@ stonith_send_command(stonith_t * stonith, const char *op, xmlNode * data, xmlNod } else { pcmk__err("Received bad reply: %d (wanted %d)", reply_id, stonith->call_id); - crm_log_xml_err(op_reply, "Old reply"); + pcmk__log_xml_err(op_reply, "Old reply"); pcmk__xml_free(op_reply); op_reply = NULL; rc = -ENOMSG; diff --git a/lib/lrmd/lrmd_client.c b/lib/lrmd/lrmd_client.c index 5724e20663b..777c693dbd9 100644 --- a/lib/lrmd/lrmd_client.c +++ b/lib/lrmd/lrmd_client.c @@ -1040,14 +1040,14 @@ process_lrmd_handshake_reply(xmlNode *reply, lrmd_private_t *native) pcmk__err("Executor protocol version mismatch between client " "(" LRMD_PROTOCOL_VERSION ") and server (%s)", version); - crm_log_xml_err(reply, "Protocol Error"); + pcmk__log_xml_err(reply, "Protocol Error"); } else if (!pcmk__str_eq(msg_type, CRM_OP_REGISTER, pcmk__str_casei)) { pcmk__err("Invalid registration message: %s", msg_type); - crm_log_xml_err(reply, "Bad reply"); + pcmk__log_xml_err(reply, "Bad reply"); rc = EPROTO; } else if (tmp_ticket == NULL) { pcmk__err("No registration token provided"); - crm_log_xml_err(reply, "Bad reply"); + pcmk__log_xml_err(reply, "Bad reply"); rc = EPROTO; } else { pcmk__trace("Obtained registration token: %s", tmp_ticket); diff --git a/lib/pacemaker/pcmk_simulate.c b/lib/pacemaker/pcmk_simulate.c index e6c26551c7e..d17e2912f94 100644 --- a/lib/pacemaker/pcmk_simulate.c +++ b/lib/pacemaker/pcmk_simulate.c @@ -592,7 +592,7 @@ simulate_resource_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) } if (action_rsc == NULL) { // Shouldn't be possible - crm_log_xml_err(action->xml, "Bad"); + pcmk__log_xml_err(action->xml, "Bad"); free(node); return EPROTO; } @@ -604,7 +604,7 @@ simulate_resource_action(pcmk__graph_t *graph, pcmk__graph_action_t *action) */ resource_config_name = pcmk__xe_get(action_rsc, PCMK_XA_ID); if (resource_config_name == NULL) { // Shouldn't be possible - crm_log_xml_err(action->xml, "No ID"); + pcmk__log_xml_err(action->xml, "No ID"); free(node); return EPROTO; } From 1c6e786ef714775aa6e6e73d53b83166aad46d61 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 27 Mar 2025 19:03:54 -0700 Subject: [PATCH 176/186] API: libcrmcommon: Deprecate crm_log_xml_err() Pacemaker should not be used for general-purpose logging. Ref T622 Signed-off-by: Reid Wahl --- include/crm/common/logging.h | 1 - include/crm/common/logging_compat.h | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/include/crm/common/logging.h b/include/crm/common/logging.h index ced7fe89972..1d11b443b1a 100644 --- a/include/crm/common/logging.h +++ b/include/crm/common/logging.h @@ -346,7 +346,6 @@ pcmk__clip_log_level(int level) } \ } while (0) -#define crm_log_xml_err(xml, text) do_crm_log_xml(LOG_ERR, text, xml) #define crm_log_xml_warn(xml, text) do_crm_log_xml(LOG_WARNING, text, xml) #define crm_log_xml_notice(xml, text) do_crm_log_xml(LOG_NOTICE, text, xml) #define crm_log_xml_info(xml, text) do_crm_log_xml(LOG_INFO, text, xml) diff --git a/include/crm/common/logging_compat.h b/include/crm/common/logging_compat.h index fc7ec9e56d4..1f1b0643fc2 100644 --- a/include/crm/common/logging_compat.h +++ b/include/crm/common/logging_compat.h @@ -53,6 +53,9 @@ extern "C" { //! \deprecated Do not use #define crm_log_xml_crit(xml, text) do_crm_log_xml(LOG_CRIT, text, xml) +//! \deprecated Do not use +#define crm_log_xml_err(xml, text) do_crm_log_xml(LOG_ERR, text, xml) + #ifdef __cplusplus } #endif From 7b9b087a97a1be21d4c46997c6eb5282ac443e7e Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 27 Mar 2025 19:06:06 -0700 Subject: [PATCH 177/186] Refactor: libcrmcommon: New pcmk__log_xml_warn() To replace crm_log_xml_warn() Signed-off-by: Reid Wahl --- daemons/controld/controld_execd.c | 8 ++++---- daemons/controld/controld_fencing.c | 4 ++-- daemons/controld/controld_messages.c | 2 +- daemons/fenced/fenced_commands.c | 6 +++--- include/crm/common/logging_internal.h | 9 +++++++++ lib/cib/cib_remote.c | 2 +- lib/cib/cib_utils.c | 8 ++++---- lib/fencing/st_client.c | 4 ++-- lib/pacemaker/pcmk_graph_consumer.c | 4 ++-- lib/pacemaker/pcmk_injections.c | 2 +- 10 files changed, 29 insertions(+), 20 deletions(-) diff --git a/daemons/controld/controld_execd.c b/daemons/controld/controld_execd.c index ae8e79582f0..2061d66f2b6 100644 --- a/daemons/controld/controld_execd.c +++ b/daemons/controld/controld_execd.c @@ -1216,7 +1216,7 @@ fail_lrm_resource(xmlNode *xml, lrm_state_t *lrm_state, const char *user_name, } else { pcmk__info("Cannot find/create resource in order to fail it..."); - crm_log_xml_warn(xml, "bad input"); + pcmk__log_xml_warn(xml, "bad input"); fake_op_status(lrm_state, op, PCMK_EXEC_ERROR, PCMK_OCF_UNKNOWN_ERROR, "Cannot fail unknown resource"); } @@ -1506,7 +1506,7 @@ do_lrm_invoke(long long action, // Resource operation on malformed resource pcmk__err("Invalid resource definition for %s", pcmk__xe_id(xml_rsc)); - crm_log_xml_warn(input->msg, "invalid resource"); + pcmk__log_xml_warn(input->msg, "invalid resource"); synthesize_lrmd_failure(lrm_state, input->xml, PCMK_EXEC_ERROR, PCMK_OCF_NOT_CONFIGURED, // fatal error "Invalid resource definition"); @@ -1517,7 +1517,7 @@ do_lrm_invoke(long long action, pcmk__err("Could not register resource '%s' with executor: %s " QB_XS " rc=%d", pcmk__xe_id(xml_rsc), pcmk_strerror(rc), rc); - crm_log_xml_warn(input->msg, "failed registration"); + pcmk__log_xml_warn(input->msg, "failed registration"); synthesize_lrmd_failure(lrm_state, input->xml, PCMK_EXEC_ERROR, PCMK_OCF_INVALID_PARAM, // hard error "Could not register resource with executor"); @@ -1526,7 +1526,7 @@ do_lrm_invoke(long long action, if (pcmk__str_eq(operation, PCMK_ACTION_CANCEL, pcmk__str_none)) { if (!do_lrm_cancel(input, lrm_state, rsc, from_host, from_sys)) { - crm_log_xml_warn(input->xml, "Bad command"); + pcmk__log_xml_warn(input->xml, "Bad command"); } } else if (pcmk__str_eq(operation, PCMK_ACTION_DELETE, diff --git a/daemons/controld/controld_fencing.c b/daemons/controld/controld_fencing.c index 44fb80fc76d..9303df08f51 100644 --- a/daemons/controld/controld_fencing.c +++ b/daemons/controld/controld_fencing.c @@ -202,7 +202,7 @@ cib_fencing_updated(xmlNode *msg, int call_id, int rc, xmlNode *output, if (rc < pcmk_ok) { pcmk__err("Fencing update %d for %s: failed - %s (%d)", call_id, (char *)user_data, pcmk_strerror(rc), rc); - crm_log_xml_warn(msg, "Failed update"); + pcmk__log_xml_warn(msg, "Failed update"); abort_transition(PCMK_SCORE_INFINITY, pcmk__graph_shutdown, "CIB update failed", NULL); @@ -983,7 +983,7 @@ controld_execute_fence_action(pcmk__graph_t *graph, CRM_CHECK(target != NULL, invalid_action = TRUE); if (invalid_action) { - crm_log_xml_warn(action->xml, "BadAction"); + pcmk__log_xml_warn(action->xml, "BadAction"); return EPROTO; } diff --git a/daemons/controld/controld_messages.c b/daemons/controld/controld_messages.c index a582d26e0cc..7a076a4c8ef 100644 --- a/daemons/controld/controld_messages.c +++ b/daemons/controld/controld_messages.c @@ -672,7 +672,7 @@ handle_failcount_op(xmlNode * stored_msg) uname = pcmk__xe_get(xml_op, PCMK__META_ON_NODE); if ((rsc == NULL) || (uname == NULL)) { - crm_log_xml_warn(stored_msg, "invalid failcount op"); + pcmk__log_xml_warn(stored_msg, "invalid failcount op"); return I_NULL; } diff --git a/daemons/fenced/fenced_commands.c b/daemons/fenced/fenced_commands.c index 10cec2096d5..1ae2b48fdc8 100644 --- a/daemons/fenced/fenced_commands.c +++ b/daemons/fenced/fenced_commands.c @@ -1982,7 +1982,7 @@ execute_agent_action(xmlNode *msg, pcmk__action_result_t *result) cmd = create_async_command(msg); if (cmd == NULL) { - crm_log_xml_warn(msg, "invalid"); + pcmk__log_xml_warn(msg, "invalid"); fenced_set_protocol_error(result); return; } @@ -2897,7 +2897,7 @@ fence_locally(xmlNode *msg, pcmk__action_result_t *result) cmd = create_async_command(msg); if (cmd == NULL) { - crm_log_xml_warn(msg, "invalid"); + pcmk__log_xml_warn(msg, "invalid"); fenced_set_protocol_error(result); return; } @@ -3624,7 +3624,7 @@ handle_reply(pcmk__client_t *client, xmlNode *request, const char *remote_peer) pcmk__err("Ignoring unknown %s reply from %s %s", pcmk__s(op, "untyped"), ((client != NULL)? "client" : "peer"), ((client != NULL)? pcmk__client_name(client) : remote_peer)); - crm_log_xml_warn(request, "UnknownOp"); + pcmk__log_xml_warn(request, "UnknownOp"); free(op); return; } diff --git a/include/crm/common/logging_internal.h b/include/crm/common/logging_internal.h index ebaffb4836d..e9b1cc6a755 100644 --- a/include/crm/common/logging_internal.h +++ b/include/crm/common/logging_internal.h @@ -145,6 +145,15 @@ extern "C" { */ #define pcmk__log_xml_err(xml, prefix) do_crm_log_xml(LOG_ERR, prefix, xml) +/*! + * \internal + * \brief Log XML line-by-line in a formatted fashion at \c LOG_WARNING level + * + * \param[in] prefix Prefix for each line + * \param[in] xml XML to log + */ +#define pcmk__log_xml_warn(xml, prefix) do_crm_log_xml(LOG_WARNING, prefix, xml) + /* Some warnings are too noisy when logged every time a given function is called * (for example, using a deprecated feature). As an alternative, we allow * warnings to be logged once per invocation of the calling program. Each of diff --git a/lib/cib/cib_remote.c b/lib/cib/cib_remote.c index 12d4c428588..2796b429853 100644 --- a/lib/cib/cib_remote.c +++ b/lib/cib/cib_remote.c @@ -175,7 +175,7 @@ cib_remote_perform_op(cib_t *cib, const char *op, const char *host, } else { pcmk__err("Call failed: %s", pcmk_strerror(rc)); - crm_log_xml_warn(op_reply, "failed"); + pcmk__log_xml_warn(op_reply, "failed"); } if (output_data == NULL) { diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c index 47793beb392..8df8f51e79d 100644 --- a/lib/cib/cib_utils.c +++ b/lib/cib/cib_utils.c @@ -396,8 +396,8 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, if (old > new) { pcmk__err("%s went backwards: %d -> %d (Opts: %#x)", PCMK_XA_ADMIN_EPOCH, old, new, call_options); - crm_log_xml_warn(req, "Bad Op"); - crm_log_xml_warn(input, "Bad Data"); + pcmk__log_xml_warn(req, "Bad Op"); + pcmk__log_xml_warn(input, "Bad Data"); rc = -pcmk_err_old_data; } else if (old == new) { @@ -406,8 +406,8 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, if (old > new) { pcmk__err("%s went backwards: %d -> %d (Opts: %#x)", PCMK_XA_EPOCH, old, new, call_options); - crm_log_xml_warn(req, "Bad Op"); - crm_log_xml_warn(input, "Bad Data"); + pcmk__log_xml_warn(req, "Bad Op"); + pcmk__log_xml_warn(input, "Bad Data"); rc = -pcmk_err_old_data; } } diff --git a/lib/fencing/st_client.c b/lib/fencing/st_client.c index cafcf08959f..83217b3266a 100644 --- a/lib/fencing/st_client.c +++ b/lib/fencing/st_client.c @@ -956,7 +956,7 @@ invoke_registered_callbacks(stonith_t *stonith, const xmlNode *msg, int call_id) // We have the fencer reply if ((pcmk__xe_get_int(msg, PCMK__XA_ST_CALLID, &call_id) != pcmk_rc_ok) || (call_id <= 0)) { - crm_log_xml_warn(msg, "Bad fencer reply"); + pcmk__log_xml_warn(msg, "Bad fencer reply"); } stonith__xe_get_result(msg, &result); } @@ -1094,7 +1094,7 @@ stonith_dispatch_internal(const char *buffer, ssize_t length, gpointer userdata) update_callback_timeout(call_id, timeout, st); } else { pcmk__err("Unknown message type: %s", type); - crm_log_xml_warn(blob.xml, "BadReply"); + pcmk__log_xml_warn(blob.xml, "BadReply"); } pcmk__xml_free(blob.xml); diff --git a/lib/pacemaker/pcmk_graph_consumer.c b/lib/pacemaker/pcmk_graph_consumer.c index bafd003f537..51ed65e7194 100644 --- a/lib/pacemaker/pcmk_graph_consumer.c +++ b/lib/pacemaker/pcmk_graph_consumer.c @@ -837,8 +837,8 @@ pcmk__event_from_graph_action(const xmlNode *resource, action_resource = pcmk__xe_first_child(action->xml, PCMK_XE_PRIMITIVE, NULL, NULL); - CRM_CHECK(action_resource != NULL, crm_log_xml_warn(action->xml, "invalid"); - return NULL); + CRM_CHECK(action_resource != NULL, + pcmk__log_xml_warn(action->xml, "invalid"); return NULL); op = lrmd_new_event(pcmk__xe_id(action_resource), pcmk__xe_get(action->xml, PCMK_XA_OPERATION), diff --git a/lib/pacemaker/pcmk_injections.c b/lib/pacemaker/pcmk_injections.c index bd4ac15e377..7a307e9c50e 100644 --- a/lib/pacemaker/pcmk_injections.c +++ b/lib/pacemaker/pcmk_injections.c @@ -332,7 +332,7 @@ pcmk__inject_node(cib_t *cib_conn, const char *node, const char *uuid) free(xpath); if (duplicate) { - crm_log_xml_warn(cib_object, "Duplicates"); + pcmk__log_xml_warn(cib_object, "Duplicates"); crm_exit(CRM_EX_SOFTWARE); return NULL; // not reached, but makes static analysis happy } From 8fd55290d8ec677d8a884963fb2719c5c0a3b111 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 27 Mar 2025 19:06:42 -0700 Subject: [PATCH 178/186] API: libcrmcommon: Deprecate crm_log_xml_warn() Pacemaker should not be used for general-purpose logging. Ref T622 Signed-off-by: Reid Wahl --- include/crm/common/logging.h | 1 - include/crm/common/logging_compat.h | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/include/crm/common/logging.h b/include/crm/common/logging.h index 1d11b443b1a..09fbf422df5 100644 --- a/include/crm/common/logging.h +++ b/include/crm/common/logging.h @@ -346,7 +346,6 @@ pcmk__clip_log_level(int level) } \ } while (0) -#define crm_log_xml_warn(xml, text) do_crm_log_xml(LOG_WARNING, text, xml) #define crm_log_xml_notice(xml, text) do_crm_log_xml(LOG_NOTICE, text, xml) #define crm_log_xml_info(xml, text) do_crm_log_xml(LOG_INFO, text, xml) #define crm_log_xml_debug(xml, text) do_crm_log_xml(LOG_DEBUG, text, xml) diff --git a/include/crm/common/logging_compat.h b/include/crm/common/logging_compat.h index 1f1b0643fc2..b0792e7ee8c 100644 --- a/include/crm/common/logging_compat.h +++ b/include/crm/common/logging_compat.h @@ -56,6 +56,9 @@ extern "C" { //! \deprecated Do not use #define crm_log_xml_err(xml, text) do_crm_log_xml(LOG_ERR, text, xml) +//! \deprecated Do not use +#define crm_log_xml_warn(xml, text) do_crm_log_xml(LOG_WARNING, text, xml) + #ifdef __cplusplus } #endif From b7e365332946f3db8b27ea459a999a5d7e264d36 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 27 Mar 2025 19:09:39 -0700 Subject: [PATCH 179/186] Refactor: libcrmcommon: New pcmk__log_xml_notice() To replace crm_log_xml_notice() Signed-off-by: Reid Wahl --- include/crm/common/logging_internal.h | 10 ++++++++++ lib/common/ipc_client.c | 4 ++-- lib/fencing/st_client.c | 4 ++-- tools/crm_resource_ban.c | 2 +- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/include/crm/common/logging_internal.h b/include/crm/common/logging_internal.h index e9b1cc6a755..55c0bc5883f 100644 --- a/include/crm/common/logging_internal.h +++ b/include/crm/common/logging_internal.h @@ -154,6 +154,16 @@ extern "C" { */ #define pcmk__log_xml_warn(xml, prefix) do_crm_log_xml(LOG_WARNING, prefix, xml) +/*! + * \internal + * \brief Log XML line-by-line in a formatted fashion at \c LOG_NOTICE level + * + * \param[in] prefix Prefix for each line + * \param[in] xml XML to log + */ +#define pcmk__log_xml_notice(xml, prefix) \ + do_crm_log_xml(LOG_NOTICE, prefix, xml) + /* Some warnings are too noisy when logged every time a given function is called * (for example, using a deprecated feature). As an alternative, we allow * warnings to be logged once per invocation of the calling program. Each of diff --git a/lib/common/ipc_client.c b/lib/common/ipc_client.c index 036bb7607bc..bc4618b3ec2 100644 --- a/lib/common/ipc_client.c +++ b/lib/common/ipc_client.c @@ -1251,11 +1251,11 @@ internal_ipc_get_reply(crm_ipc_t *client, int request_id, int ms_timeout, if (hdr->qb.id < request_id) { pcmk__err("Discarding old reply %d (need %d)", hdr->qb.id, request_id); - crm_log_xml_notice(xml, "OldIpcReply"); + pcmk__log_xml_notice(xml, "OldIpcReply"); } else if (hdr->qb.id > request_id) { pcmk__err("Discarding newer reply %d (need %d)", hdr->qb.id, request_id); - crm_log_xml_notice(xml, "ImpossibleReply"); + pcmk__log_xml_notice(xml, "ImpossibleReply"); pcmk__assert(hdr->qb.id <= request_id); } } while (time(NULL) < timeout || (timeout == 0 && *bytes == -EAGAIN)); diff --git a/lib/fencing/st_client.c b/lib/fencing/st_client.c index 83217b3266a..40ee2a6e402 100644 --- a/lib/fencing/st_client.c +++ b/lib/fencing/st_client.c @@ -1455,7 +1455,7 @@ xml_to_event(xmlNode *msg) if (data == NULL) { pcmk__err("No data for %s event", event->operation); - crm_log_xml_notice(msg, "BadEvent"); + pcmk__log_xml_notice(msg, "BadEvent"); } else { event->origin = pcmk__xe_get_copy(data, PCMK__XA_ST_ORIGIN); event->action = pcmk__xe_get_copy(data, PCMK__XA_ST_DEVICE_ACTION); @@ -1475,7 +1475,7 @@ xml_to_event(xmlNode *msg) if (data == NULL) { pcmk__err("No data for %s event", event->operation); - crm_log_xml_notice(msg, "BadEvent"); + pcmk__log_xml_notice(msg, "BadEvent"); } else { event->device = pcmk__xe_get_copy(data, PCMK__XA_ST_DEVICE_ID); } diff --git a/tools/crm_resource_ban.c b/tools/crm_resource_ban.c index 7166a1a281c..bde53d351e7 100644 --- a/tools/crm_resource_ban.c +++ b/tools/crm_resource_ban.c @@ -123,7 +123,7 @@ cli_resource_ban(pcmk__output_t *out, const char *rsc_id, const char *host, pcmk__xe_set(expr, PCMK_XA_END, later_s); } - crm_log_xml_notice(fragment, "Modify"); + pcmk__log_xml_notice(fragment, "Modify"); rc = cib_conn->cmds->modify(cib_conn, PCMK_XE_CONSTRAINTS, fragment, cib_sync_call); rc = pcmk_legacy2rc(rc); From 11c591d34d3343544344bf6a2f918bd401c33575 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 27 Mar 2025 19:10:12 -0700 Subject: [PATCH 180/186] API: libcrmcommon: Deprecate crm_log_xml_notice() Pacemaker should not be used for general-purpose logging. Ref T622 Signed-off-by: Reid Wahl --- include/crm/common/logging.h | 1 - include/crm/common/logging_compat.h | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/include/crm/common/logging.h b/include/crm/common/logging.h index 09fbf422df5..087659c8efc 100644 --- a/include/crm/common/logging.h +++ b/include/crm/common/logging.h @@ -346,7 +346,6 @@ pcmk__clip_log_level(int level) } \ } while (0) -#define crm_log_xml_notice(xml, text) do_crm_log_xml(LOG_NOTICE, text, xml) #define crm_log_xml_info(xml, text) do_crm_log_xml(LOG_INFO, text, xml) #define crm_log_xml_debug(xml, text) do_crm_log_xml(LOG_DEBUG, text, xml) #define crm_log_xml_trace(xml, text) do_crm_log_xml(LOG_TRACE, text, xml) diff --git a/include/crm/common/logging_compat.h b/include/crm/common/logging_compat.h index b0792e7ee8c..6bb552b2c01 100644 --- a/include/crm/common/logging_compat.h +++ b/include/crm/common/logging_compat.h @@ -59,6 +59,9 @@ extern "C" { //! \deprecated Do not use #define crm_log_xml_warn(xml, text) do_crm_log_xml(LOG_WARNING, text, xml) +//! \deprecated Do not use +#define crm_log_xml_notice(xml, text) do_crm_log_xml(LOG_NOTICE, text, xml) + #ifdef __cplusplus } #endif From 3278bb0d27b0a49336f239343947cb70bc00f252 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 27 Mar 2025 19:11:34 -0700 Subject: [PATCH 181/186] Refactor: libcrmcommon: New pcmk__log_xml_info() To replace crm_log_xml_info() Signed-off-by: Reid Wahl --- daemons/based/based_callbacks.c | 2 +- daemons/based/based_transaction.c | 2 +- include/crm/common/logging_internal.h | 9 +++++++++ lib/cib/cib_attrs.c | 2 +- lib/cib/cib_file.c | 2 +- lib/cib/cib_utils.c | 2 +- lib/common/patchset.c | 2 +- lib/common/xml_io.c | 2 +- lib/pengine/unpack.c | 4 ++-- tools/crm_resource_ban.c | 6 +++--- 10 files changed, 21 insertions(+), 12 deletions(-) diff --git a/daemons/based/based_callbacks.c b/daemons/based/based_callbacks.c index 3aa7adafd44..fea6b918161 100644 --- a/daemons/based/based_callbacks.c +++ b/daemons/based/based_callbacks.c @@ -1177,7 +1177,7 @@ cib_process_command(xmlNode *request, const cib__operation_t *operation, pcmk__assert(result_cib != the_cib); if (output != NULL) { - crm_log_xml_info(output, "cib:output"); + pcmk__log_xml_info(output, "cib:output"); pcmk__xml_free(output); } diff --git a/daemons/based/based_transaction.c b/daemons/based/based_transaction.c index 4b59a2ceb62..4d1562d09f1 100644 --- a/daemons/based/based_transaction.c +++ b/daemons/based/based_transaction.c @@ -84,7 +84,7 @@ process_transaction_requests(xmlNodePtr transaction, pcmk__err("Aborting CIB transaction for %s due to failed %s " "request: %s", source, op, pcmk_rc_str(rc)); - crm_log_xml_info(request, "Failed request"); + pcmk__log_xml_info(request, "Failed request"); return rc; } diff --git a/include/crm/common/logging_internal.h b/include/crm/common/logging_internal.h index 55c0bc5883f..d8c6dec11f5 100644 --- a/include/crm/common/logging_internal.h +++ b/include/crm/common/logging_internal.h @@ -164,6 +164,15 @@ extern "C" { #define pcmk__log_xml_notice(xml, prefix) \ do_crm_log_xml(LOG_NOTICE, prefix, xml) +/*! + * \internal + * \brief Log XML line-by-line in a formatted fashion at \c LOG_INFO level + * + * \param[in] prefix Prefix for each line + * \param[in] xml XML to log + */ +#define pcmk__log_xml_info(xml, prefix) do_crm_log_xml(LOG_INFO, prefix, xml) + /* Some warnings are too noisy when logged every time a given function is called * (for example, using a deprecated feature). As an alternative, we allow * warnings to be logged once per invocation of the calling program. Each of diff --git a/lib/cib/cib_attrs.c b/lib/cib/cib_attrs.c index 98bf954485e..d01a9dfceba 100644 --- a/lib/cib/cib_attrs.c +++ b/lib/cib/cib_attrs.c @@ -334,7 +334,7 @@ cib__update_node_attr(pcmk__output_t *out, cib_t *cib, int call_options, const c out->err(out, "Error setting %s=%s (section=%s, set=%s): %s", attr_name, attr_value, section, pcmk__s(set_name, ""), pcmk_rc_str(rc)); - crm_log_xml_info(xml_top, "Update"); + pcmk__log_xml_info(xml_top, "Update"); } free(local_set_name); diff --git a/lib/cib/cib_file.c b/lib/cib/cib_file.c index e31f928a3d2..db2c4e64b38 100644 --- a/lib/cib/cib_file.c +++ b/lib/cib/cib_file.c @@ -1084,7 +1084,7 @@ cib_file_process_transaction_requests(cib_t *cib, xmlNode *transaction) pcmk__err("Aborting transaction for CIB file client (%s) on file " "'%s' due to failed %s request: %s", private->id, private->filename, op, pcmk_rc_str(rc)); - crm_log_xml_info(request, "Failed request"); + pcmk__log_xml_info(request, "Failed request"); return rc; } diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c index 8df8f51e79d..f6e20b9ac12 100644 --- a/lib/cib/cib_utils.c +++ b/lib/cib/cib_utils.c @@ -667,7 +667,7 @@ cib__extend_transaction(cib_t *cib, xmlNode *request) pcmk__err("Failed to add '%s' operation to transaction for client %s: " "%s", op, pcmk__s(client_id, "(unidentified)"), pcmk_rc_str(rc)); - crm_log_xml_info(request, "failed"); + pcmk__log_xml_info(request, "failed"); } return pcmk_rc2legacy(rc); } diff --git a/lib/common/patchset.c b/lib/common/patchset.c index 66f26974d8a..e80071aff0d 100644 --- a/lib/common/patchset.c +++ b/lib/common/patchset.c @@ -445,7 +445,7 @@ check_patchset_versions(const xmlNode *cib_root, const xmlNode *patchset) vfields[i], current[0], current[1], current[2], source[0], source[1], source[2], target[0], target[1], target[2]); - crm_log_xml_info(patchset, "OldPatch"); + pcmk__log_xml_info(patchset, "OldPatch"); return pcmk_rc_old_data; } } diff --git a/lib/common/xml_io.c b/lib/common/xml_io.c index 0ca8b604782..abc54835181 100644 --- a/lib/common/xml_io.c +++ b/lib/common/xml_io.c @@ -481,7 +481,7 @@ write_xml_stream(const xmlNode *xml, const char *filename, FILE *stream, pcmk__xml_string(xml, pcmk__xml_fmt_pretty, buffer, 0); CRM_CHECK(!pcmk__str_empty(buffer->str), - crm_log_xml_info(xml, "dump-failed"); + pcmk__log_xml_info(xml, "dump-failed"); rc = pcmk_rc_error; goto done); diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c index e5bce686022..e6bf22f2169 100644 --- a/lib/pengine/unpack.c +++ b/lib/pengine/unpack.c @@ -1207,7 +1207,7 @@ unpack_node_state(const xmlNode *state, pcmk_scheduler_t *scheduler) if (id == NULL) { pcmk__config_err("Ignoring invalid " PCMK__XE_NODE_STATE " entry without " PCMK_XA_ID); - crm_log_xml_info(state, "missing-id"); + pcmk__log_xml_info(state, "missing-id"); return; } @@ -2778,7 +2778,7 @@ unpack_lrm_resource(pcmk_node_t *node, const xmlNode *lrm_resource, if (rsc_id == NULL) { pcmk__config_err("Ignoring invalid " PCMK__XE_LRM_RESOURCE " entry: No " PCMK_XA_ID); - crm_log_xml_info(lrm_resource, "missing-id"); + pcmk__log_xml_info(lrm_resource, "missing-id"); return NULL; } pcmk__trace("Unpacking " PCMK__XE_LRM_RESOURCE " for %s on %s", rsc_id, diff --git a/tools/crm_resource_ban.c b/tools/crm_resource_ban.c index bde53d351e7..e57c7a22b60 100644 --- a/tools/crm_resource_ban.c +++ b/tools/crm_resource_ban.c @@ -203,7 +203,7 @@ cli_resource_prefer(pcmk__output_t *out,const char *rsc_id, const char *host, pcmk__xe_set(expr, PCMK_XA_END, later_s); } - crm_log_xml_info(fragment, "Modify"); + pcmk__log_xml_info(fragment, "Modify"); rc = cib_conn->cmds->modify(cib_conn, PCMK_XE_CONSTRAINTS, fragment, cib_sync_call); rc = pcmk_legacy2rc(rc); @@ -299,7 +299,7 @@ resource_clear_node_in_location(const char *rsc_id, const char *host, cib_t * ci pcmk__xe_set(location, PCMK_XE_NODE, host); } - crm_log_xml_info(fragment, "Delete"); + pcmk__log_xml_info(fragment, "Delete"); rc = cib_conn->cmds->remove(cib_conn, PCMK_XE_CONSTRAINTS, fragment, cib_sync_call); if (rc == -ENXIO) { @@ -497,7 +497,7 @@ cli_resource_clear_all_expired(xmlNode *root, cib_t *cib_conn, const char *rsc, fragment = pcmk__xe_create(NULL, PCMK_XE_CONSTRAINTS); location = pcmk__xe_create(fragment, PCMK_XE_RSC_LOCATION); pcmk__xe_set_id(location, "%s", pcmk__xe_id(constraint_node)); - crm_log_xml_info(fragment, "Delete"); + pcmk__log_xml_info(fragment, "Delete"); rc = cib_conn->cmds->remove(cib_conn, PCMK_XE_CONSTRAINTS, fragment, cib_sync_call); From 719e7d2c280c2c091c2929a757b2103910315ce6 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 27 Mar 2025 19:12:08 -0700 Subject: [PATCH 182/186] API: libcrmcommon: Deprecate crm_log_xml_info() Pacemaker should not be used for general-purpose logging. Ref T622 Signed-off-by: Reid Wahl --- include/crm/common/logging.h | 1 - include/crm/common/logging_compat.h | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/include/crm/common/logging.h b/include/crm/common/logging.h index 087659c8efc..28813d020ae 100644 --- a/include/crm/common/logging.h +++ b/include/crm/common/logging.h @@ -346,7 +346,6 @@ pcmk__clip_log_level(int level) } \ } while (0) -#define crm_log_xml_info(xml, text) do_crm_log_xml(LOG_INFO, text, xml) #define crm_log_xml_debug(xml, text) do_crm_log_xml(LOG_DEBUG, text, xml) #define crm_log_xml_trace(xml, text) do_crm_log_xml(LOG_TRACE, text, xml) diff --git a/include/crm/common/logging_compat.h b/include/crm/common/logging_compat.h index 6bb552b2c01..88d0be43928 100644 --- a/include/crm/common/logging_compat.h +++ b/include/crm/common/logging_compat.h @@ -62,6 +62,9 @@ extern "C" { //! \deprecated Do not use #define crm_log_xml_notice(xml, text) do_crm_log_xml(LOG_NOTICE, text, xml) +//! \deprecated Do not use +#define crm_log_xml_info(xml, text) do_crm_log_xml(LOG_INFO, text, xml) + #ifdef __cplusplus } #endif From c2be820df486839a1adfe6ad2f99aed08aaab0ba Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 27 Mar 2025 19:17:59 -0700 Subject: [PATCH 183/186] Refactor: libcrmcommon: New pcmk__log_xml_debug() To replace crm_log_xml_debug() Signed-off-by: Reid Wahl --- daemons/based/based_remote.c | 8 ++++---- daemons/controld/controld_fsa.c | 4 ++-- daemons/controld/controld_join_dc.c | 6 +++--- daemons/controld/controld_membership.c | 10 +++++----- daemons/controld/controld_te_events.c | 2 +- daemons/fenced/fenced_remote.c | 2 +- include/crm/common/logging_internal.h | 9 +++++++++ lib/cib/cib_attrs.c | 2 +- lib/cib/cib_remote.c | 2 +- lib/cib/cib_utils.c | 4 ++-- lib/common/schemas.c | 2 +- lib/common/xml_io.c | 4 ++-- lib/fencing/st_client.c | 6 +++--- lib/pacemaker/pcmk_injections.c | 2 +- lib/pacemaker/pcmk_sched_actions.c | 11 ++++++----- lib/pacemaker/pcmk_ticket.c | 8 ++++---- lib/pengine/unpack.c | 2 +- tools/cibadmin.c | 2 +- tools/crm_diff.c | 2 +- tools/crm_resource_runtime.c | 6 +++--- 20 files changed, 52 insertions(+), 42 deletions(-) diff --git a/daemons/based/based_remote.c b/daemons/based/based_remote.c index 8dcb514872a..799f3b21216 100644 --- a/daemons/based/based_remote.c +++ b/daemons/based/based_remote.c @@ -205,7 +205,7 @@ cib_remote_auth(xmlNode * login) pcmk__warn("Rejecting remote client: Unrecognizable message (element " "'%s' not '" PCMK__XE_CIB_COMMAND "')", login->name); - crm_log_xml_debug(login, "bad"); + pcmk__log_xml_debug(login, "bad"); return FALSE; } @@ -214,7 +214,7 @@ cib_remote_auth(xmlNode * login) pcmk__warn("Rejecting remote client: Unrecognizable message (operation " "'%s' not 'authenticate')", tmp); - crm_log_xml_debug(login, "bad"); + pcmk__log_xml_debug(login, "bad"); return FALSE; } @@ -223,11 +223,11 @@ cib_remote_auth(xmlNode * login) if (!user || !pass) { pcmk__warn("Rejecting remote client: No %s given", ((user == NULL)? "username" : "password")); - crm_log_xml_debug(login, "bad"); + pcmk__log_xml_debug(login, "bad"); return FALSE; } - crm_log_xml_debug(login, "auth"); + pcmk__log_xml_debug(login, "auth"); return check_group_membership(user, CRM_DAEMON_GROUP) && authenticate_user(user, pass); diff --git a/daemons/controld/controld_fsa.c b/daemons/controld/controld_fsa.c index c6673155e31..e95b96961e1 100644 --- a/daemons/controld/controld_fsa.c +++ b/daemons/controld/controld_fsa.c @@ -74,12 +74,12 @@ do_log(long long action, enum crmd_fsa_cause cause, if (msg_data->data_type == fsa_dt_ha_msg) { ha_msg_input_t *input = fsa_typed_data(msg_data->data_type); - crm_log_xml_debug(input->msg, __func__); + pcmk__log_xml_debug(input->msg, __func__); } else if (msg_data->data_type == fsa_dt_xml) { xmlNode *input = fsa_typed_data(msg_data->data_type); - crm_log_xml_debug(input, __func__); + pcmk__log_xml_debug(input, __func__); } else if (msg_data->data_type == fsa_dt_lrm) { lrmd_event_data_t *input = fsa_typed_data(msg_data->data_type); diff --git a/daemons/controld/controld_join_dc.c b/daemons/controld/controld_join_dc.c index a732e6ce36d..a7a2351931a 100644 --- a/daemons/controld/controld_join_dc.c +++ b/daemons/controld/controld_join_dc.c @@ -582,8 +582,8 @@ do_dc_join_filter_offer(long long action, pcmk__debug("Accepting join-%d request from %s (with better CIB " "generation than current best from %s) " QB_XS " ref=%s", join_id, join_from, max_generation_from, ref); - crm_log_xml_debug(max_generation_xml, "Old max generation"); - crm_log_xml_debug(generation, "New max generation"); + pcmk__log_xml_debug(max_generation_xml, "Old max generation"); + pcmk__log_xml_debug(generation, "New max generation"); pcmk__xml_free(max_generation_xml); max_generation_xml = pcmk__xml_copy(NULL, join_ack->xml); @@ -757,7 +757,7 @@ join_node_state_commit_callback(xmlNode *msg, int call_id, int rc, pcmk__crit("join-%d node history update (via CIB call %d) for node %s " "failed: %s", current_join_id, call_id, node, pcmk_strerror(rc)); - crm_log_xml_debug(msg, "failed"); + pcmk__log_xml_debug(msg, "failed"); register_fsa_error(C_FSA_INTERNAL, I_ERROR, NULL); } diff --git a/daemons/controld/controld_membership.c b/daemons/controld/controld_membership.c index 49bdc42b0b9..ccc37c97fae 100644 --- a/daemons/controld/controld_membership.c +++ b/daemons/controld/controld_membership.c @@ -102,13 +102,13 @@ crmd_node_update_complete(xmlNode * msg, int call_id, int rc, xmlNode * output, } else if(call_id < pcmk_ok) { pcmk__err("Node update failed: %s (%d)", pcmk_strerror(call_id), call_id); - crm_log_xml_debug(msg, "failed"); + pcmk__log_xml_debug(msg, "failed"); register_fsa_error(C_FSA_INTERNAL, I_ERROR, NULL); } else { pcmk__err("Node update %d failed: %s (%d)", call_id, pcmk_strerror(rc), rc); - crm_log_xml_debug(msg, "failed"); + pcmk__log_xml_debug(msg, "failed"); register_fsa_error(C_FSA_INTERNAL, I_ERROR, NULL); } } @@ -301,13 +301,13 @@ node_list_update_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, if(call_id < pcmk_ok) { pcmk__err("Node list update failed: %s (%d)", pcmk_strerror(call_id), call_id); - crm_log_xml_debug(msg, "update:failed"); + pcmk__log_xml_debug(msg, "update:failed"); register_fsa_error(C_FSA_INTERNAL, I_ERROR, NULL); } else if(rc < pcmk_ok) { pcmk__err("Node update %d failed: %s (%d)", call_id, pcmk_strerror(rc), rc); - crm_log_xml_debug(msg, "update:failed"); + pcmk__log_xml_debug(msg, "update:failed"); register_fsa_error(C_FSA_INTERNAL, I_ERROR, NULL); } } @@ -417,7 +417,7 @@ cib_quorum_update_complete(xmlNode * msg, int call_id, int rc, xmlNode * output, } else { pcmk__err("Quorum update %d failed: %s (%d)", call_id, pcmk_strerror(rc), rc); - crm_log_xml_debug(msg, "failed"); + pcmk__log_xml_debug(msg, "failed"); register_fsa_error(C_FSA_INTERNAL, I_ERROR, NULL); } } diff --git a/daemons/controld/controld_te_events.c b/daemons/controld/controld_te_events.c index 7e939edfef4..ad0e04d5a0f 100644 --- a/daemons/controld/controld_te_events.c +++ b/daemons/controld/controld_te_events.c @@ -543,7 +543,7 @@ process_graph_event(xmlNode *event, const char *event_node) * history record, which would otherwise result in incorrectly * bumping the fail count twice. */ - crm_log_xml_debug(event, "Event already confirmed:"); + pcmk__log_xml_debug(event, "Event already confirmed:"); goto bail; } else { diff --git a/daemons/fenced/fenced_remote.c b/daemons/fenced/fenced_remote.c index 0827105dd59..de195daa6ff 100644 --- a/daemons/fenced/fenced_remote.c +++ b/daemons/fenced/fenced_remote.c @@ -248,7 +248,7 @@ free_remote_op(gpointer data) { remote_fencing_op_t *op = data; - crm_log_xml_debug(op->request, "Destroying"); + pcmk__log_xml_debug(op->request, "Destroying"); clear_remote_op_timers(op); diff --git a/include/crm/common/logging_internal.h b/include/crm/common/logging_internal.h index d8c6dec11f5..cc44e0db0ce 100644 --- a/include/crm/common/logging_internal.h +++ b/include/crm/common/logging_internal.h @@ -173,6 +173,15 @@ extern "C" { */ #define pcmk__log_xml_info(xml, prefix) do_crm_log_xml(LOG_INFO, prefix, xml) +/*! + * \internal + * \brief Log XML line-by-line in a formatted fashion at \c LOG_DEBUG level + * + * \param[in] prefix Prefix for each line + * \param[in] xml XML to log + */ +#define pcmk__log_xml_debug(xml, prefix) do_crm_log_xml(LOG_DEBUG, prefix, xml) + /* Some warnings are too noisy when logged every time a given function is called * (for example, using a deprecated feature). As an alternative, we allow * warnings to be logged once per invocation of the calling program. Each of diff --git a/lib/cib/cib_attrs.c b/lib/cib/cib_attrs.c index d01a9dfceba..87b81a9e449 100644 --- a/lib/cib/cib_attrs.c +++ b/lib/cib/cib_attrs.c @@ -142,7 +142,7 @@ find_attr(cib_t *cib, const char *section, const char *node_uuid, attr_name, section, pcmk__s(node_uuid, ""), pcmk__s(set_name, ""), xpath->str, pcmk_rc_str(rc)); } else { - crm_log_xml_debug(xml_search, "Match"); + pcmk__log_xml_debug(xml_search, "Match"); } g_string_free(xpath, TRUE); diff --git a/lib/cib/cib_remote.c b/lib/cib/cib_remote.c index 2796b429853..3eaa223b58d 100644 --- a/lib/cib/cib_remote.c +++ b/lib/cib/cib_remote.c @@ -171,7 +171,7 @@ cib_remote_perform_op(cib_t *cib, const char *op, const char *host, } if (rc == pcmk_ok || rc == -EPERM) { - crm_log_xml_debug(op_reply, "passed"); + pcmk__log_xml_debug(op_reply, "passed"); } else { pcmk__err("Call failed: %s", pcmk_strerror(rc)); diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c index f6e20b9ac12..ace576eb65b 100644 --- a/lib/cib/cib_utils.c +++ b/lib/cib/cib_utils.c @@ -90,7 +90,7 @@ cib__get_notify_patchset(const xmlNode *msg, const xmlNode **patchset) pcmk__warn("Ignore failed CIB update: %s " QB_XS " rc=%d", pcmk_strerror(rc), rc); - crm_log_xml_debug(msg, "failed"); + pcmk__log_xml_debug(msg, "failed"); return pcmk_legacy2rc(rc); } @@ -709,7 +709,7 @@ cib_native_callback(cib_t * cib, xmlNode * msg, int call_id, int rc) } else if ((cib != NULL) && (rc != pcmk_ok)) { pcmk__warn("CIB command failed: %s", pcmk_strerror(rc)); - crm_log_xml_debug(msg, "Failed CIB Update"); + pcmk__log_xml_debug(msg, "Failed CIB Update"); } /* This may free user_data, so do it after the callback */ diff --git a/lib/common/schemas.c b/lib/common/schemas.c index 983a84e3894..0ea16437165 100644 --- a/lib/common/schemas.c +++ b/lib/common/schemas.c @@ -1068,7 +1068,7 @@ apply_upgrade(const xmlNode *input_xml, int schema_index, gboolean to_logs) pcmk__err("Schema upgrade from %s to %s failed: XSL transform pipeline " "produced an invalid configuration", schema->name, upgraded_schema->name); - crm_log_xml_debug(new_xml, "bad-transform-result"); + pcmk__log_xml_debug(new_xml, "bad-transform-result"); pcmk__xml_free(new_xml); return NULL; } diff --git a/lib/common/xml_io.c b/lib/common/xml_io.c index abc54835181..4eefbdf8ae9 100644 --- a/lib/common/xml_io.c +++ b/lib/common/xml_io.c @@ -146,7 +146,7 @@ pcmk__xml_read(const char *filename) last_error = xmlCtxtGetLastError(ctxt); if ((last_error != NULL) && (xml != NULL)) { - crm_log_xml_debug(xml, "partial"); + pcmk__log_xml_debug(xml, "partial"); pcmk__xml_free(xml); xml = NULL; } @@ -192,7 +192,7 @@ pcmk__xml_parse(const char *input) last_error = xmlCtxtGetLastError(ctxt); if ((last_error != NULL) && (xml != NULL)) { - crm_log_xml_debug(xml, "partial"); + pcmk__log_xml_debug(xml, "partial"); pcmk__xml_free(xml); xml = NULL; } diff --git a/lib/fencing/st_client.c b/lib/fencing/st_client.c index 40ee2a6e402..9c3c4c1a297 100644 --- a/lib/fencing/st_client.c +++ b/lib/fencing/st_client.c @@ -980,7 +980,7 @@ invoke_registered_callbacks(stonith_t *stonith, const xmlNode *msg, int call_id) pcmk_exec_status_str(result.execution_status), ((result.exit_reason != NULL)? ": " : ""), pcmk__s(result.exit_reason, "")); - crm_log_xml_debug(msg, "Failed fence update"); + pcmk__log_xml_debug(msg, "Failed fence update"); } if (private->op_callback != NULL) { @@ -1176,13 +1176,13 @@ stonith_api_signon(stonith_t * stonith, const char *name, int *stonith_fd) pcmk__debug("Couldn't register with the fencer: invalid reply " "type '%s'", pcmk__s(msg_type, "(missing)")); - crm_log_xml_debug(reply, "Invalid fencer reply"); + pcmk__log_xml_debug(reply, "Invalid fencer reply"); rc = -EPROTO; } else if (native->token == NULL) { pcmk__debug("Couldn't register with the fencer: no token in " "reply"); - crm_log_xml_debug(reply, "Invalid fencer reply"); + pcmk__log_xml_debug(reply, "Invalid fencer reply"); rc = -EPROTO; } else { diff --git a/lib/pacemaker/pcmk_injections.c b/lib/pacemaker/pcmk_injections.c index 7a307e9c50e..d205bf2ebee 100644 --- a/lib/pacemaker/pcmk_injections.c +++ b/lib/pacemaker/pcmk_injections.c @@ -539,7 +539,7 @@ set_ticket_state_attr(pcmk__output_t *out, const char *ticket_id, // Add the attribute to the ticket state pcmk__xe_set_bool_attr(ticket_state_xml, attr_name, attr_value); - crm_log_xml_debug(xml_top, "Update"); + pcmk__log_xml_debug(xml_top, "Update"); // Commit the change to the CIB rc = cib->cmds->modify(cib, PCMK_XE_STATUS, xml_top, cib_sync_call); diff --git a/lib/pacemaker/pcmk_sched_actions.c b/lib/pacemaker/pcmk_sched_actions.c index b6fae5186c7..39ef6d68eaa 100644 --- a/lib/pacemaker/pcmk_sched_actions.c +++ b/lib/pacemaker/pcmk_sched_actions.c @@ -1697,7 +1697,7 @@ pcmk__check_action_config(pcmk_resource_t *rsc, pcmk_node_t *node, switch (digest_data->rc) { case pcmk__digest_restart: - crm_log_xml_debug(digest_data->params_restart, "params:restart"); + pcmk__log_xml_debug(digest_data->params_restart, "params:restart"); force_restart(rsc, task, interval_ms, node); return true; @@ -1710,7 +1710,8 @@ pcmk__check_action_config(pcmk_resource_t *rsc, pcmk_node_t *node, * re-scheduled so the next run uses the new parameters. * The old instance will be cancelled automatically. */ - crm_log_xml_debug(digest_data->params_all, "params:reschedule"); + pcmk__log_xml_debug(digest_data->params_all, + "params:reschedule"); pcmk__reschedule_recurring(rsc, task, interval_ms, node); } else if (pcmk__xe_get(xml_op, @@ -1719,7 +1720,7 @@ pcmk__check_action_config(pcmk_resource_t *rsc, pcmk_node_t *node, trigger_unfencing(rsc, node, "Device parameters changed (reload)", NULL, rsc->priv->scheduler); - crm_log_xml_debug(digest_data->params_all, "params:reload"); + pcmk__log_xml_debug(digest_data->params_all, "params:reload"); schedule_reload((gpointer) rsc, (gpointer) node); } else { @@ -1727,8 +1728,8 @@ pcmk__check_action_config(pcmk_resource_t *rsc, pcmk_node_t *node, "Restarting %s " "because agent doesn't support reload", rsc->id); - crm_log_xml_debug(digest_data->params_restart, - "params:restart"); + pcmk__log_xml_debug(digest_data->params_restart, + "params:restart"); force_restart(rsc, task, interval_ms, node); } return true; diff --git a/lib/pacemaker/pcmk_ticket.c b/lib/pacemaker/pcmk_ticket.c index d4b26d6ab0e..df49ff24b97 100644 --- a/lib/pacemaker/pcmk_ticket.c +++ b/lib/pacemaker/pcmk_ticket.c @@ -101,7 +101,7 @@ pcmk__get_ticket_state(cib_t *cib, const char *ticket_id, xmlNode **state) rc = pcmk_legacy2rc(rc); if (rc == pcmk_rc_ok) { - crm_log_xml_debug(xml_search, "Match"); + pcmk__log_xml_debug(xml_search, "Match"); if (xml_search->children != NULL && ticket_id != NULL) { rc = pcmk_rc_duplicate_id; @@ -222,7 +222,7 @@ pcmk__ticket_delete(pcmk__output_t *out, cib_t *cib, pcmk_scheduler_t *scheduler return rc; } - crm_log_xml_debug(state, "Delete"); + pcmk__log_xml_debug(state, "Delete"); if (rc == pcmk_rc_duplicate_id) { rc = pcmk__xe_foreach_child(state, NULL, delete_single_ticket, cib); @@ -416,7 +416,7 @@ pcmk__ticket_remove_attr(pcmk__output_t *out, cib_t *cib, pcmk_scheduler_t *sche pcmk__xe_remove_attr(ticket_state_xml, key); } - crm_log_xml_debug(xml_top, "Replace"); + pcmk__log_xml_debug(xml_top, "Replace"); rc = cib->cmds->replace(cib, PCMK_XE_STATUS, ticket_state_xml, cib_sync_call); rc = pcmk_legacy2rc(rc); @@ -484,7 +484,7 @@ pcmk__ticket_set_attr(pcmk__output_t *out, cib_t *cib, pcmk_scheduler_t *schedul add_attribute_xml(scheduler, ticket_id, attr_set, &ticket_state_xml); - crm_log_xml_debug(xml_top, "Update"); + pcmk__log_xml_debug(xml_top, "Update"); rc = cib->cmds->modify(cib, PCMK_XE_STATUS, xml_top, cib_sync_call); rc = pcmk_legacy2rc(rc); diff --git a/lib/pengine/unpack.c b/lib/pengine/unpack.c index e6bf22f2169..df88025555f 100644 --- a/lib/pengine/unpack.c +++ b/lib/pengine/unpack.c @@ -2010,7 +2010,7 @@ create_fake_resource(const char *rsc_id, const xmlNode *rsc_entry, pcmk__xe_copy_attrs(xml_rsc, rsc_entry, pcmk__xaf_none); pcmk__xe_set(xml_rsc, PCMK_XA_ID, rsc_id); - crm_log_xml_debug(xml_rsc, "Orphan resource"); + pcmk__log_xml_debug(xml_rsc, "Orphan resource"); if (pe__unpack_resource(xml_rsc, &rsc, NULL, scheduler) != pcmk_rc_ok) { return NULL; diff --git a/tools/cibadmin.c b/tools/cibadmin.c index 449b329a541..ee5562f344a 100644 --- a/tools/cibadmin.c +++ b/tools/cibadmin.c @@ -713,7 +713,7 @@ main(int argc, char **argv) } if (input != NULL) { - crm_log_xml_debug(input, "[admin input]"); + pcmk__log_xml_debug(input, "[admin input]"); } else if (source != NULL) { exit_code = CRM_EX_CONFIG; diff --git a/tools/crm_diff.c b/tools/crm_diff.c index 9c2ec9d6797..6f084651e82 100644 --- a/tools/crm_diff.c +++ b/tools/crm_diff.c @@ -158,7 +158,7 @@ generate_patch(pcmk__output_t *out, xmlNode *source, xmlNode *target, pcmk__xml_doc_set_flags(target->doc, pcmk__xf_ignore_attr_pos); } pcmk__xml_mark_changes(source, target); - crm_log_xml_debug(target, "target"); + pcmk__log_xml_debug(target, "target"); patchset = xml_create_patchset(0, source, target, NULL, false); diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c index d3421ef5ed7..7b02bf68914 100644 --- a/tools/crm_resource_runtime.c +++ b/tools/crm_resource_runtime.c @@ -165,7 +165,7 @@ find_resource_attr(pcmk__output_t *out, cib_t * the_cib, const char *attr, rc = pcmk_legacy2rc(rc); if (rc == pcmk_rc_ok) { - crm_log_xml_debug(xml_search, "Match"); + pcmk__log_xml_debug(xml_search, "Match"); if (xml_search->children != NULL) { rc = ENOTUNIQ; pcmk__warn_multiple_name_matches(out, xml_search, attr_name); @@ -504,7 +504,7 @@ update_attribute(pcmk_resource_t *rsc, const char *requested_name, xml_top = xml_obj; } - crm_log_xml_debug(xml_top, "Update"); + pcmk__log_xml_debug(xml_top, "Update"); rc = cib->cmds->modify(cib, PCMK_XE_RESOURCES, xml_top, cib_sync_call); rc = pcmk_legacy2rc(rc); @@ -702,7 +702,7 @@ cli_resource_delete_attribute(pcmk_resource_t *rsc, const char *requested_name, } xml_obj = crm_create_nvpair_xml(NULL, rsc_attr_id, attr_name, NULL); - crm_log_xml_debug(xml_obj, "Delete"); + pcmk__log_xml_debug(xml_obj, "Delete"); rc = cib->cmds->remove(cib, PCMK_XE_RESOURCES, xml_obj, cib_sync_call); rc = pcmk_legacy2rc(rc); From 78b0665cae0ca2084637363a782928675963244f Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 27 Mar 2025 19:18:42 -0700 Subject: [PATCH 184/186] API: libcrmcommon: Deprecate crm_log_xml_debug() Pacemaker should not be used for general-purpose logging. Ref T622 Signed-off-by: Reid Wahl --- include/crm/common/logging.h | 1 - include/crm/common/logging_compat.h | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/include/crm/common/logging.h b/include/crm/common/logging.h index 28813d020ae..3c8f595a2a0 100644 --- a/include/crm/common/logging.h +++ b/include/crm/common/logging.h @@ -346,7 +346,6 @@ pcmk__clip_log_level(int level) } \ } while (0) -#define crm_log_xml_debug(xml, text) do_crm_log_xml(LOG_DEBUG, text, xml) #define crm_log_xml_trace(xml, text) do_crm_log_xml(LOG_TRACE, text, xml) #define crm_log_xml_explicit(xml, text) do { \ diff --git a/include/crm/common/logging_compat.h b/include/crm/common/logging_compat.h index 88d0be43928..0bc0f5a9707 100644 --- a/include/crm/common/logging_compat.h +++ b/include/crm/common/logging_compat.h @@ -65,6 +65,9 @@ extern "C" { //! \deprecated Do not use #define crm_log_xml_info(xml, text) do_crm_log_xml(LOG_INFO, text, xml) +//! \deprecated Do not use +#define crm_log_xml_debug(xml, text) do_crm_log_xml(LOG_DEBUG, text, xml) + #ifdef __cplusplus } #endif From 25863cea521b9da1fc1a72233710fbb612394ec9 Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 27 Mar 2025 19:24:05 -0700 Subject: [PATCH 185/186] Refactor: libcrmcommon: New pcmk__log_xml_trace() To replace crm_log_xml_trace() Signed-off-by: Reid Wahl --- daemons/attrd/attrd_messages.c | 2 +- daemons/based/based_callbacks.c | 2 +- daemons/based/based_io.c | 2 +- daemons/based/based_notify.c | 2 +- daemons/based/based_remote.c | 4 ++-- daemons/based/based_transaction.c | 2 +- daemons/controld/controld_callbacks.c | 2 +- daemons/controld/controld_cib.c | 4 ++-- daemons/controld/controld_execd.c | 4 ++-- daemons/controld/controld_execd_state.c | 4 ++-- daemons/controld/controld_fsa.c | 2 +- daemons/controld/controld_messages.c | 30 ++++++++++++------------ daemons/controld/controld_te_callbacks.c | 4 ++-- daemons/fenced/fenced_commands.c | 14 +++++------ daemons/fenced/pacemaker-fenced.c | 4 ++-- include/crm/common/logging_internal.h | 10 ++++++++ lib/cib/cib_attrs.c | 2 +- lib/cib/cib_file.c | 2 +- lib/cib/cib_native.c | 4 ++-- lib/cib/cib_remote.c | 6 ++--- lib/cib/cib_utils.c | 4 ++-- lib/cluster/election.c | 2 +- lib/common/ipc_client.c | 4 ++-- lib/common/ipc_server.c | 6 ++--- lib/common/nvpair.c | 4 ++-- lib/common/remote.c | 2 +- lib/common/xml_element.c | 16 ++++++------- lib/common/xml_io.c | 2 +- lib/fencing/st_client.c | 4 ++-- lib/lrmd/lrmd_client.c | 6 ++--- lib/pacemaker/pcmk_graph_consumer.c | 6 ++--- lib/pacemaker/pcmk_graph_producer.c | 2 +- lib/pacemaker/pcmk_sched_colocation.c | 4 ++-- lib/pacemaker/pcmk_sched_location.c | 4 ++-- lib/pacemaker/pcmk_sched_ordering.c | 4 ++-- lib/pacemaker/pcmk_sched_tickets.c | 2 +- lib/pengine/complex.c | 4 ++-- 37 files changed, 96 insertions(+), 86 deletions(-) diff --git a/daemons/attrd/attrd_messages.c b/daemons/attrd/attrd_messages.c index 4e8a3de0ee9..7d146a93890 100644 --- a/daemons/attrd/attrd_messages.c +++ b/daemons/attrd/attrd_messages.c @@ -271,7 +271,7 @@ attrd_handle_request(pcmk__request_t *request) reply = pcmk__process_request(request, attrd_handlers); if (reply != NULL) { - crm_log_xml_trace(reply, "Reply"); + pcmk__log_xml_trace(reply, "Reply"); if (request->ipc_client != NULL) { pcmk__ipc_send_xml(request->ipc_client, request->ipc_id, reply, diff --git a/daemons/based/based_callbacks.c b/daemons/based/based_callbacks.c index fea6b918161..4d2df2a371e 100644 --- a/daemons/based/based_callbacks.c +++ b/daemons/based/based_callbacks.c @@ -1231,7 +1231,7 @@ cib_peer_callback(xmlNode * msg, void *private_data) pcmk__xe_set(msg, PCMK__XA_CIB_CLIENTNAME, originator); } - /* crm_log_xml_trace(msg, "Peer[inbound]"); */ + // pcmk__log_xml_trace(msg, "Peer[inbound]"); cib_process_request(msg, TRUE, NULL); return; diff --git a/daemons/based/based_io.c b/daemons/based/based_io.c index bca21a4d9c3..79c2bb13c23 100644 --- a/daemons/based/based_io.c +++ b/daemons/based/based_io.c @@ -269,7 +269,7 @@ readCibXmlFile(const char *dir, const char *file, gboolean discard_status) pcmk__xe_remove_attr(root, PCMK_XA_DC_UUID); if (discard_status) { - crm_log_xml_trace(root, "[on-disk]"); + pcmk__log_xml_trace(root, "[on-disk]"); } if (!pcmk__configured_schema_validates(root)) { diff --git a/daemons/based/based_notify.c b/daemons/based/based_notify.c index 66ae13b2503..0ca3ef4dc1b 100644 --- a/daemons/based/based_notify.c +++ b/daemons/based/based_notify.c @@ -192,7 +192,7 @@ cib_diff_notify(const char *op, int result, const char *call_id, wrapper = pcmk__xe_create(update_msg, PCMK__XE_CIB_UPDATE_RESULT); pcmk__xml_copy(wrapper, diff); - crm_log_xml_trace(update_msg, "diff-notify"); + pcmk__log_xml_trace(update_msg, "diff-notify"); cib_notify_send(update_msg); pcmk__xml_free(update_msg); } diff --git a/daemons/based/based_remote.c b/daemons/based/based_remote.c index 799f3b21216..4581699bc11 100644 --- a/daemons/based/based_remote.c +++ b/daemons/based/based_remote.c @@ -378,7 +378,7 @@ static void cib_handle_remote_msg(pcmk__client_t *client, xmlNode *command) { if (!pcmk__xe_is(command, PCMK__XE_CIB_COMMAND)) { - crm_log_xml_trace(command, "bad"); + pcmk__log_xml_trace(command, "bad"); return; } @@ -408,7 +408,7 @@ cib_handle_remote_msg(pcmk__client_t *client, xmlNode *command) pcmk__xe_set_int(command, PCMK__XA_CIB_CALLOPT, 0); } - crm_log_xml_trace(command, "Remote command: "); + pcmk__log_xml_trace(command, "Remote command: "); cib_common_callback_worker(0, 0, command, client, TRUE); } diff --git a/daemons/based/based_transaction.c b/daemons/based/based_transaction.c index 4d1562d09f1..ca3c660dfea 100644 --- a/daemons/based/based_transaction.c +++ b/daemons/based/based_transaction.c @@ -90,7 +90,7 @@ process_transaction_requests(xmlNodePtr transaction, pcmk__trace("Applied %s request to transaction working CIB for %s", op, source); - crm_log_xml_trace(request, "Successful request"); + pcmk__log_xml_trace(request, "Successful request"); } return pcmk_rc_ok; diff --git a/daemons/controld/controld_callbacks.c b/daemons/controld/controld_callbacks.c index 58ede25cfcb..a226cc8e4b1 100644 --- a/daemons/controld/controld_callbacks.c +++ b/daemons/controld/controld_callbacks.c @@ -63,7 +63,7 @@ crmd_ha_msg_filter(xmlNode * msg) } } - /* crm_log_xml_trace(msg, "HA[inbound]"); */ + // pcmk__log_xml_trace(msg, "HA[inbound]"); route_message(C_HA_MESSAGE, msg); done: diff --git a/daemons/controld/controld_cib.c b/daemons/controld/controld_cib.c index 91e95835e26..559a2d11079 100644 --- a/daemons/controld/controld_cib.c +++ b/daemons/controld/controld_cib.c @@ -949,7 +949,7 @@ controld_update_resource_history(const char *node_name, * discovered during the next election. Worst case, the node is wrongly * fenced for running a resource it isn't. */ - crm_log_xml_trace(update, __func__); + pcmk__log_xml_trace(update, __func__); controld_update_cib(PCMK_XE_STATUS, update, call_opt, cib_rsc_callback); pcmk__xml_free(update); } @@ -985,7 +985,7 @@ controld_delete_action_history(const lrmd_event_data_t *op) controld_globals.cib_conn->cmds->remove(controld_globals.cib_conn, PCMK_XE_STATUS, xml_top, cib_none); - crm_log_xml_trace(xml_top, "op:cancel"); + pcmk__log_xml_trace(xml_top, "op:cancel"); pcmk__xml_free(xml_top); } diff --git a/daemons/controld/controld_execd.c b/daemons/controld/controld_execd.c index 2061d66f2b6..fe425a3b10b 100644 --- a/daemons/controld/controld_execd.c +++ b/daemons/controld/controld_execd.c @@ -610,7 +610,7 @@ controld_query_executor_state(void) // Build a list of active (not necessarily running) resources build_active_RAs(lrm_state, rsc_list); - crm_log_xml_trace(xml_state, "Current executor state"); + pcmk__log_xml_trace(xml_state, "Current executor state"); return xml_state; } @@ -1770,7 +1770,7 @@ controld_ack_event_directly(const char *to_host, const char *to_sys, reply = pcmk__new_message(pcmk_ipc_controld, "direct-ack", CRM_SYSTEM_LRMD, to_host, to_sys, CRM_OP_INVOKE_LRM, update); - crm_log_xml_trace(update, "[direct ACK]"); + pcmk__log_xml_trace(update, "[direct ACK]"); pcmk__debug("ACK'ing resource op " PCMK__OP_FMT " from %s: %s", op->rsc_id, op->op_type, op->interval_ms, op->user_data, diff --git a/daemons/controld/controld_execd_state.c b/daemons/controld/controld_execd_state.c index e28e633ca4b..7af912d71cc 100644 --- a/daemons/controld/controld_execd_state.c +++ b/daemons/controld/controld_execd_state.c @@ -442,7 +442,7 @@ crmd_proxy_send(const char *session, xmlNode *msg) if (!proxy) { return; } - crm_log_xml_trace(msg, "to-proxy"); + pcmk__log_xml_trace(msg, "to-proxy"); lrm_state = controld_get_executor_state(proxy->node_name, false); if (lrm_state) { pcmk__trace("Sending event to %.8s on %s", proxy->session_id, @@ -455,7 +455,7 @@ static void crmd_proxy_dispatch(const char *session, xmlNode *msg) { pcmk__trace("Processing proxied IPC message from session %s", session); - crm_log_xml_trace(msg, "controller[inbound]"); + pcmk__log_xml_trace(msg, "controller[inbound]"); pcmk__xe_set(msg, PCMK__XA_CRM_SYS_FROM, session); if (controld_authorize_ipc_message(msg, NULL, session)) { route_message(C_IPC_MESSAGE, msg); diff --git a/daemons/controld/controld_fsa.c b/daemons/controld/controld_fsa.c index e95b96961e1..fd0282cd43b 100644 --- a/daemons/controld/controld_fsa.c +++ b/daemons/controld/controld_fsa.c @@ -480,7 +480,7 @@ log_fsa_input(fsa_data_t * stored_msg) __func__); pcmk__trace("FSA processing XML message from %s", stored_msg->origin); - crm_log_xml_trace(ha_input->xml, "FSA message data"); + pcmk__log_xml_trace(ha_input->xml, "FSA message data"); } } diff --git a/daemons/controld/controld_messages.c b/daemons/controld/controld_messages.c index 7a076a4c8ef..613df46ca32 100644 --- a/daemons/controld/controld_messages.c +++ b/daemons/controld/controld_messages.c @@ -367,7 +367,7 @@ relay_message(xmlNode * msg, gboolean originated_locally) if (pcmk__str_eq(task, CRM_OP_HELLO, pcmk__str_casei)) { pcmk__trace("Received hello %s from %s (no processing needed)", ref, pcmk__s(sys_from, "unidentified source")); - crm_log_xml_trace(msg, "hello"); + pcmk__log_xml_trace(msg, "hello"); return TRUE; } @@ -376,7 +376,7 @@ relay_message(xmlNode * msg, gboolean originated_locally) pcmk__warn("Ignoring invalid message %s with type '%s' " "(not '" PCMK__VALUE_CRMD "')", ref, pcmk__s(type, "")); - crm_log_xml_trace(msg, "ignored"); + pcmk__log_xml_trace(msg, "ignored"); return TRUE; } @@ -384,7 +384,7 @@ relay_message(xmlNode * msg, gboolean originated_locally) if (sys_to == NULL) { pcmk__warn("Ignoring invalid message %s with no " PCMK__XA_CRM_SYS_TO, ref); - crm_log_xml_trace(msg, "ignored"); + pcmk__log_xml_trace(msg, "ignored"); return TRUE; } @@ -463,7 +463,7 @@ relay_message(xmlNode * msg, gboolean originated_locally) if (is_for_te) { pcmk__trace("Route message %s locally as transition request", ref); - crm_log_xml_trace(msg, sys_to); + pcmk__log_xml_trace(msg, sys_to); send_msg_via_ipc(msg, sys_to, controld_globals.cluster->priv->node_name); return TRUE; // No further processing of message is needed @@ -477,7 +477,7 @@ relay_message(xmlNode * msg, gboolean originated_locally) CRM_SYSTEM_TENGINE, NULL)) { pcmk__trace("Relay message %s to DC (via %s)", ref, pcmk__s(host_to, "broadcast")); - crm_log_xml_trace(msg, "relayed"); + pcmk__log_xml_trace(msg, "relayed"); if (!broadcast) { node_to = pcmk__get_node(0, host_to, NULL, pcmk__node_search_cluster_member); @@ -490,7 +490,7 @@ relay_message(xmlNode * msg, gboolean originated_locally) * the same node. If we are no longer the DC, discard this message. */ pcmk__trace("Ignoring message %s because we are no longer DC", ref); - crm_log_xml_trace(msg, "ignored"); + pcmk__log_xml_trace(msg, "ignored"); return TRUE; // No further processing of message is needed } @@ -500,7 +500,7 @@ relay_message(xmlNode * msg, gboolean originated_locally) return FALSE; // More to be done by caller } pcmk__trace("Relay message %s locally to %s", ref, sys_to); - crm_log_xml_trace(msg, "IPC-relay"); + pcmk__log_xml_trace(msg, "IPC-relay"); send_msg_via_ipc(msg, sys_to, controld_globals.cluster->priv->node_name); return TRUE; } @@ -511,13 +511,13 @@ relay_message(xmlNode * msg, gboolean originated_locally) if (node_to == NULL) { pcmk__warn("Ignoring message %s because node %s is unknown", ref, host_to); - crm_log_xml_trace(msg, "ignored"); + pcmk__log_xml_trace(msg, "ignored"); return TRUE; } } pcmk__trace("Relay message %s to %s", ref, pcmk__s(host_to, "all peers")); - crm_log_xml_trace(msg, "relayed"); + pcmk__log_xml_trace(msg, "relayed"); pcmk__cluster_send_message(node_to, dest, msg); return TRUE; } @@ -600,7 +600,7 @@ controld_authorize_ipc_message(const xmlNode *client_msg, pcmk__client_t *curr_c } pcmk__trace("Validated IPC hello from client %s", client_name); - crm_log_xml_trace(client_msg, "hello"); + pcmk__log_xml_trace(client_msg, "hello"); if (curr_client) { curr_client->userdata = pcmk__str_copy(client_name); } @@ -608,7 +608,7 @@ controld_authorize_ipc_message(const xmlNode *client_msg, pcmk__client_t *curr_c return false; rejected: - crm_log_xml_trace(client_msg, "rejected"); + pcmk__log_xml_trace(client_msg, "rejected"); if (curr_client) { qb_ipcs_disconnect(curr_client->ipcs); } @@ -634,7 +634,7 @@ handle_message(xmlNode *msg, enum crmd_fsa_cause cause) pcmk__warn("Ignoring message with unknown " PCMK__XA_SUBT" '%s'", pcmk__s(type, "")); - crm_log_xml_trace(msg, "bad"); + pcmk__log_xml_trace(msg, "bad"); return I_NULL; } @@ -1068,7 +1068,7 @@ handle_request(xmlNode *stored_msg, enum crmd_fsa_cause cause) /* Optimize this for the DC - it has the most to do */ - crm_log_xml_trace(stored_msg, "request"); + pcmk__log_xml_trace(stored_msg, "request"); if (op == NULL) { pcmk__warn("Ignoring request without " PCMK__XA_CRM_TASK); return I_NULL; @@ -1239,7 +1239,7 @@ handle_response(xmlNode *stored_msg) { const char *op = pcmk__xe_get(stored_msg, PCMK__XA_CRM_TASK); - crm_log_xml_trace(stored_msg, "reply"); + pcmk__log_xml_trace(stored_msg, "reply"); if (op == NULL) { pcmk__warn("Ignoring reply without " PCMK__XA_CRM_TASK); @@ -1293,7 +1293,7 @@ handle_shutdown_request(xmlNode * stored_msg) pcmk__info("Creating shutdown request for %s (state=%s)", host_from, fsa_state2string(controld_globals.fsa_state)); - crm_log_xml_trace(stored_msg, "message"); + pcmk__log_xml_trace(stored_msg, "message"); now_s = pcmk__ttoa(time(NULL)); update_attrd(host_from, PCMK__NODE_ATTR_SHUTDOWN, now_s, NULL, FALSE); diff --git a/daemons/controld/controld_te_callbacks.c b/daemons/controld/controld_te_callbacks.c index 59f9b5b6bc3..ae1c966cd9c 100644 --- a/daemons/controld/controld_te_callbacks.c +++ b/daemons/controld/controld_te_callbacks.c @@ -77,7 +77,7 @@ process_resource_updates(const char *node, xmlNode *xml, xmlNode *change, if ((controld_globals.transition_graph->pending == 0) && (xml->children != NULL) && (xml->children->next != NULL)) { - crm_log_xml_trace(change, "lrm-refresh"); + pcmk__log_xml_trace(change, "lrm-refresh"); abort_transition(PCMK_SCORE_INFINITY, pcmk__graph_restart, "History refresh", NULL); return; @@ -399,7 +399,7 @@ te_update_diff(const char *event, xmlNode * msg) pcmk__xe_get_int(diff, PCMK_XA_FORMAT, &format); if (format == 2) { - crm_log_xml_trace(diff, "patch"); + pcmk__log_xml_trace(diff, "patch"); pcmk__xe_foreach_child(diff, NULL, te_update_diff_element, NULL); } else { diff --git a/daemons/fenced/fenced_commands.c b/daemons/fenced/fenced_commands.c index 1ae2b48fdc8..be5eade10aa 100644 --- a/daemons/fenced/fenced_commands.c +++ b/daemons/fenced/fenced_commands.c @@ -1716,7 +1716,7 @@ fenced_register_level(xmlNode *msg, char **desc, pcmk__action_result_t *result) if (pcmk__str_empty(pcmk__xe_id(level))) { pcmk__warn("Ignoring registration for topology level without ID"); free(target); - crm_log_xml_trace(level, "Bad level"); + pcmk__log_xml_trace(level, "Bad level"); pcmk__format_result(result, CRM_EX_INVALID_PARAM, PCMK_EXEC_INVALID, "Topology level is invalid without ID"); return; @@ -1728,7 +1728,7 @@ fenced_register_level(xmlNode *msg, char **desc, pcmk__action_result_t *result) "valid target", pcmk__xe_id(level)); free(target); - crm_log_xml_trace(level, "Bad level"); + pcmk__log_xml_trace(level, "Bad level"); pcmk__format_result(result, CRM_EX_INVALID_PARAM, PCMK_EXEC_INVALID, "Invalid target for topology level '%s'", pcmk__xe_id(level)); @@ -1741,7 +1741,7 @@ fenced_register_level(xmlNode *msg, char **desc, pcmk__action_result_t *result) "%d", target, id); free(target); - crm_log_xml_trace(level, "Bad level"); + pcmk__log_xml_trace(level, "Bad level"); pcmk__format_result(result, CRM_EX_INVALID_PARAM, PCMK_EXEC_INVALID, "Invalid level number '%s' for topology level '%s'", pcmk__s(pcmk__xe_get(level, PCMK_XA_INDEX), ""), @@ -1826,7 +1826,7 @@ fenced_unregister_level(xmlNode *msg, char **desc, "%d", target, id); free(target); - crm_log_xml_trace(level, "Bad level"); + pcmk__log_xml_trace(level, "Bad level"); pcmk__format_result(result, CRM_EX_INVALID_PARAM, PCMK_EXEC_INVALID, "Invalid level number '%s' for topology level %s", pcmk__s(pcmk__xe_get(level, PCMK_XA_INDEX), @@ -2517,7 +2517,7 @@ stonith_query_capable_device_cb(GList * devices, void *user_data) pcmk__plural_s(available_devices)); } - crm_log_xml_trace(list, "query-result"); + pcmk__log_xml_trace(list, "query-result"); stonith_send_reply(query->reply, query->call_options, query->remote_peer, client); @@ -2669,7 +2669,7 @@ send_async_reply(const async_command_t *cmd, const pcmk__action_result_t *result stonith_send_reply(reply, cmd->options, cmd->origin, client); } - crm_log_xml_trace(reply, "Reply"); + pcmk__log_xml_trace(reply, "Reply"); pcmk__xml_free(reply); } @@ -3236,7 +3236,7 @@ handle_query_request(pcmk__request_t *request) action = pcmk__xe_get(dev, PCMK__XA_ST_DEVICE_ACTION); } - crm_log_xml_trace(request->xml, "Query"); + pcmk__log_xml_trace(request->xml, "Query"); query = pcmk__assert_alloc(1, sizeof(struct st_query_data)); diff --git a/daemons/fenced/pacemaker-fenced.c b/daemons/fenced/pacemaker-fenced.c index e6c50d88797..fc53e4f5864 100644 --- a/daemons/fenced/pacemaker-fenced.c +++ b/daemons/fenced/pacemaker-fenced.c @@ -148,7 +148,7 @@ st_ipc_dispatch(qb_ipcs_connection_t * qbc, void *data, size_t size) pcmk__xe_set(request, PCMK__XA_ST_CLIENTNAME, pcmk__client_name(c)); pcmk__xe_set(request, PCMK__XA_ST_CLIENTNODE, fenced_get_local_node()); - crm_log_xml_trace(request, "ipc-received"); + pcmk__log_xml_trace(request, "ipc-received"); stonith_command(c, id, flags, request, NULL); pcmk__xml_free(request); @@ -189,7 +189,7 @@ stonith_peer_callback(xmlNode * msg, void *private_data) return; } - crm_log_xml_trace(msg, "Peer[inbound]"); + pcmk__log_xml_trace(msg, "Peer[inbound]"); stonith_command(NULL, 0, 0, msg, remote_peer); } diff --git a/include/crm/common/logging_internal.h b/include/crm/common/logging_internal.h index cc44e0db0ce..2b01ba0e03c 100644 --- a/include/crm/common/logging_internal.h +++ b/include/crm/common/logging_internal.h @@ -182,6 +182,16 @@ extern "C" { */ #define pcmk__log_xml_debug(xml, prefix) do_crm_log_xml(LOG_DEBUG, prefix, xml) +/*! + * \internal + * \brief Log XML line-by-line in a formatted fashion at \c PCMK__LOG_TRACE level + * + * \param[in] prefix Prefix for each line + * \param[in] xml XML to log + */ +#define pcmk__log_xml_trace(xml, prefix) \ + do_crm_log_xml(PCMK__LOG_TRACE, prefix, xml) + /* Some warnings are too noisy when logged every time a given function is called * (for example, using a deprecated feature). As an alternative, we allow * warnings to be logged once per invocation of the calling program. Each of diff --git a/lib/cib/cib_attrs.c b/lib/cib/cib_attrs.c index 87b81a9e449..31ec789cb50 100644 --- a/lib/cib/cib_attrs.c +++ b/lib/cib/cib_attrs.c @@ -318,7 +318,7 @@ cib__update_node_attr(pcmk__output_t *out, cib_t *cib, int call_options, const c xml_top = xml_obj; } - crm_log_xml_trace(xml_top, "update_attr"); + pcmk__log_xml_trace(xml_top, "update_attr"); rc = cib_internal_op(cib, PCMK__CIB_REQUEST_MODIFY, NULL, section, xml_top, NULL, call_options, user_name); diff --git a/lib/cib/cib_file.c b/lib/cib/cib_file.c index db2c4e64b38..850581575bc 100644 --- a/lib/cib/cib_file.c +++ b/lib/cib/cib_file.c @@ -1091,7 +1091,7 @@ cib_file_process_transaction_requests(cib_t *cib, xmlNode *transaction) pcmk__trace("Applied %s request to transaction working CIB for CIB " "file client (%s) on file '%s'", op, private->id, private->filename); - crm_log_xml_trace(request, "Successful request"); + pcmk__log_xml_trace(request, "Successful request"); } return pcmk_rc_ok; diff --git a/lib/cib/cib_native.c b/lib/cib/cib_native.c index a637798a5b5..869130c0823 100644 --- a/lib/cib/cib_native.c +++ b/lib/cib/cib_native.c @@ -87,7 +87,7 @@ cib_native_perform_op_delegate(cib_t *cib, const char *op, const char *host, goto done; } - crm_log_xml_trace(op_reply, "Reply"); + pcmk__log_xml_trace(op_reply, "Reply"); if (!(call_options & cib_sync_call)) { pcmk__trace("Async call, returning %d", cib->call_id); @@ -319,7 +319,7 @@ cib_native_signon(cib_t *cib, const char *name, enum cib_conn_type type) &reply) > 0) { const char *msg_type = pcmk__xe_get(reply, PCMK__XA_CIB_OP); - crm_log_xml_trace(reply, "reg-reply"); + pcmk__log_xml_trace(reply, "reg-reply"); if (!pcmk__str_eq(msg_type, CRM_OP_REGISTER, pcmk__str_casei)) { pcmk__info("Reply to CIB registration message has unknown type " diff --git a/lib/cib/cib_remote.c b/lib/cib/cib_remote.c index 3eaa223b58d..f674daa3d9b 100644 --- a/lib/cib/cib_remote.c +++ b/lib/cib/cib_remote.c @@ -132,12 +132,12 @@ cib_remote_perform_op(cib_t *cib, const char *op, const char *host, } else if (reply_id < msg_id) { pcmk__debug("Received old reply: %d (wanted %d)", reply_id, msg_id); - crm_log_xml_trace(op_reply, "Old reply"); + pcmk__log_xml_trace(op_reply, "Old reply"); } else if ((reply_id - 10000) > msg_id) { /* wrap-around case */ pcmk__debug("Received old reply: %d (wanted %d)", reply_id, msg_id); - crm_log_xml_trace(op_reply, "Old reply"); + pcmk__log_xml_trace(op_reply, "Old reply"); } else { pcmk__err("Received a __future__ reply:" " %d (wanted %d)", reply_id, msg_id); @@ -431,7 +431,7 @@ cib_tls_signon(cib_t *cib, pcmk__remote_t *connection, gboolean event_channel) answer = pcmk__remote_message_xml(connection); - crm_log_xml_trace(answer, "Reply"); + pcmk__log_xml_trace(answer, "Reply"); if (answer == NULL) { rc = -EPROTO; diff --git a/lib/cib/cib_utils.c b/lib/cib/cib_utils.c index ace576eb65b..587706d41d6 100644 --- a/lib/cib/cib_utils.c +++ b/lib/cib/cib_utils.c @@ -271,7 +271,7 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, return -EACCES; } cib_ro = cib_filtered; - crm_log_xml_trace(cib_ro, "filtered"); + pcmk__log_xml_trace(cib_ro, "filtered"); } rc = (*fn) (op, call_options, section, req, input, cib_ro, result_cib, output); @@ -437,7 +437,7 @@ cib_perform_op(cib_t *cib, const char *op, uint32_t call_options, pcmk__xml_patchset_add_digest(local_diff, scratch); } pcmk__log_xml_patchset(LOG_INFO, local_diff); - crm_log_xml_trace(local_diff, "raw patch"); + pcmk__log_xml_trace(local_diff, "raw patch"); } if (make_copy && (local_diff != NULL)) { diff --git a/lib/cluster/election.c b/lib/cluster/election.c index a8ffb7c5649..99e07d5ec5e 100644 --- a/lib/cluster/election.c +++ b/lib/cluster/election.c @@ -446,7 +446,7 @@ parse_election_message(const xmlNode *message, struct vote *vote) pcmk__warn("Invalid %s message from %s", pcmk__s(vote->op, "election"), pcmk__s(vote->from, "unspecified node")); - crm_log_xml_trace(message, "bad-vote"); + pcmk__log_xml_trace(message, "bad-vote"); return FALSE; } diff --git a/lib/common/ipc_client.c b/lib/common/ipc_client.c index bc4618b3ec2..dcfe8f18afd 100644 --- a/lib/common/ipc_client.c +++ b/lib/common/ipc_client.c @@ -293,7 +293,7 @@ pcmk_ipc_is_connected(pcmk_ipc_api_t *api) static bool call_api_dispatch(pcmk_ipc_api_t *api, xmlNode *message) { - crm_log_xml_trace(message, "ipc-received"); + pcmk__log_xml_trace(message, "ipc-received"); if ((api->cmds != NULL) && (api->cmds->dispatch != NULL)) { return api->cmds->dispatch(api, message); } @@ -664,7 +664,7 @@ pcmk__send_ipc_request(pcmk_ipc_api_t *api, const xmlNode *request) if ((api == NULL) || (api->ipc == NULL) || (request == NULL)) { return EINVAL; } - crm_log_xml_trace(request, "ipc-sent"); + pcmk__log_xml_trace(request, "ipc-sent"); // Synchronous dispatch requires waiting for a reply if ((api->dispatch_type == pcmk_ipc_dispatch_sync) diff --git a/lib/common/ipc_server.c b/lib/common/ipc_server.c index 03e4e2bdf30..5b81d54801a 100644 --- a/lib/common/ipc_server.c +++ b/lib/common/ipc_server.c @@ -446,7 +446,7 @@ pcmk__client_data2xml(pcmk__client_t *c, void *data, uint32_t *id, pcmk__assert(text[header->size_uncompressed - 1] == 0); xml = pcmk__xml_parse(text); - crm_log_xml_trace(xml, "[IPC received]"); + pcmk__log_xml_trace(xml, "[IPC received]"); free(uncompressed); return xml; @@ -655,7 +655,7 @@ pcmk__ipc_prepare_iov(uint32_t request, const xmlNode *message, biggest = QB_MAX(header->size_compressed, biggest); } else { - crm_log_xml_trace(message, "EMSGSIZE"); + pcmk__log_xml_trace(message, "EMSGSIZE"); biggest = QB_MAX(header->size_uncompressed, biggest); pcmk__err("Could not compress %u-byte message into less than IPC " @@ -846,7 +846,7 @@ pcmk__ipc_send_ack_as(const char *function, int line, pcmk__client_t *c, if (ack != NULL) { pcmk__trace("Ack'ing IPC message from client %s as <%s status=%d>", pcmk__client_name(c), tag, status); - crm_log_xml_trace(ack, "sent-ack"); + pcmk__log_xml_trace(ack, "sent-ack"); c->request_id = 0; rc = pcmk__ipc_send_xml(c, request, ack, flags); pcmk__xml_free(ack); diff --git a/lib/common/nvpair.c b/lib/common/nvpair.c index e0134b75b02..ae103ae510c 100644 --- a/lib/common/nvpair.c +++ b/lib/common/nvpair.c @@ -350,10 +350,10 @@ xml2list(const xmlNode *parent) nvpair_list = pcmk__xe_first_child(parent, PCMK__XE_ATTRIBUTES, NULL, NULL); if (nvpair_list == NULL) { pcmk__trace("No attributes in %s", parent->name); - crm_log_xml_trace(parent, "No attributes for resource op"); + pcmk__log_xml_trace(parent, "No attributes for resource op"); } - crm_log_xml_trace(nvpair_list, "Unpacking"); + pcmk__log_xml_trace(nvpair_list, "Unpacking"); for (pIter = pcmk__xe_first_attr(nvpair_list); pIter != NULL; pIter = pIter->next) { diff --git a/lib/common/remote.c b/lib/common/remote.c index 509f8ff61b5..8a33d20223e 100644 --- a/lib/common/remote.c +++ b/lib/common/remote.c @@ -354,7 +354,7 @@ pcmk__remote_message_xml(pcmk__remote_t *remote) remote->buffer + header->payload_offset); } - crm_log_xml_trace(xml, "[remote msg]"); + pcmk__log_xml_trace(xml, "[remote msg]"); return xml; } diff --git a/lib/common/xml_element.c b/lib/common/xml_element.c index 34dfd34e606..1b296cd402a 100644 --- a/lib/common/xml_element.c +++ b/lib/common/xml_element.c @@ -575,8 +575,8 @@ update_xe(xmlNode *parent, xmlNode *target, xmlNode *update, uint32_t flags) const char *update_id_val = NULL; char *trace_s = NULL; - crm_log_xml_trace(update, "update"); - crm_log_xml_trace(target, "target"); + pcmk__log_xml_trace(update, "update"); + pcmk__log_xml_trace(target, "target"); CRM_CHECK(update != NULL, goto done); @@ -687,8 +687,8 @@ delete_xe_if_matching(xmlNode *xml, void *user_data) } } - crm_log_xml_trace(xml, "delete-match"); - crm_log_xml_trace(search, "delete-search"); + pcmk__log_xml_trace(xml, "delete-match"); + pcmk__log_xml_trace(search, "delete-search"); pcmk__xml_free(xml); // Found a match and deleted it; stop traversing tree @@ -803,8 +803,8 @@ replace_xe_if_matching(xmlNode *xml, void *user_data) return true; } - crm_log_xml_trace(xml, "replace-match"); - crm_log_xml_trace(replace, "replace-with"); + pcmk__log_xml_trace(xml, "replace-match"); + pcmk__log_xml_trace(replace, "replace-with"); replace_node(xml, replace); // Found a match and replaced it; stop traversing tree @@ -895,8 +895,8 @@ update_xe_if_matching(xmlNode *xml, void *user_data) return true; } - crm_log_xml_trace(xml, "update-match"); - crm_log_xml_trace(update, "update-with"); + pcmk__log_xml_trace(xml, "update-match"); + pcmk__log_xml_trace(update, "update-with"); update_xe(NULL, xml, update, data->flags); // Found a match and replaced it; stop traversing tree diff --git a/lib/common/xml_io.c b/lib/common/xml_io.c index 4eefbdf8ae9..6df12101237 100644 --- a/lib/common/xml_io.c +++ b/lib/common/xml_io.c @@ -485,7 +485,7 @@ write_xml_stream(const xmlNode *xml, const char *filename, FILE *stream, rc = pcmk_rc_error; goto done); - crm_log_xml_trace(xml, "writing"); + pcmk__log_xml_trace(xml, "writing"); if (compress && (write_compressed_stream(buffer->str, filename, stream, diff --git a/lib/fencing/st_client.c b/lib/fencing/st_client.c index 9c3c4c1a297..c89939adc62 100644 --- a/lib/fencing/st_client.c +++ b/lib/fencing/st_client.c @@ -1438,7 +1438,7 @@ xml_to_event(xmlNode *msg) event->opaque = pcmk__assert_alloc(1, sizeof(struct event_private)); event_private = (struct event_private *) event->opaque; - crm_log_xml_trace(msg, "stonith_notify"); + pcmk__log_xml_trace(msg, "stonith_notify"); // All notification types have the operation result and notification subtype stonith__xe_get_result(msg, &event_private->result); @@ -1623,7 +1623,7 @@ stonith_send_command(stonith_t * stonith, const char *op, xmlNode * data, xmlNod goto done; } - crm_log_xml_trace(op_reply, "Reply"); + pcmk__log_xml_trace(op_reply, "Reply"); if (!(call_options & st_opt_sync_call)) { pcmk__trace("Async call %d, returning", stonith->call_id); diff --git a/lib/lrmd/lrmd_client.c b/lib/lrmd/lrmd_client.c index 777c693dbd9..fa8ff81d71e 100644 --- a/lib/lrmd/lrmd_client.c +++ b/lib/lrmd/lrmd_client.c @@ -940,7 +940,7 @@ lrmd_send_command(lrmd_t *lrmd, const char *op, xmlNode *data, goto done; } - crm_log_xml_trace(op_reply, "Reply"); + pcmk__log_xml_trace(op_reply, "Reply"); if (output_data) { *output_data = op_reply; @@ -2037,7 +2037,7 @@ lrmd_internal_proxy_dispatch(lrmd_t *lrmd, xmlNode *msg) lrmd_private_t *native = lrmd->lrmd_private; if (native->proxy_callback) { - crm_log_xml_trace(msg, "PROXY_INBOUND"); + pcmk__log_xml_trace(msg, "PROXY_INBOUND"); native->proxy_callback(lrmd, native->proxy_callback_userdata, msg); } } @@ -2050,7 +2050,7 @@ lrmd_internal_proxy_send(lrmd_t * lrmd, xmlNode *msg) } pcmk__xe_set(msg, PCMK__XA_LRMD_OP, CRM_OP_IPC_FWD); - crm_log_xml_trace(msg, "PROXY_OUTBOUND"); + pcmk__log_xml_trace(msg, "PROXY_OUTBOUND"); return lrmd_send_xml_no_reply(lrmd, msg); } diff --git a/lib/pacemaker/pcmk_graph_consumer.c b/lib/pacemaker/pcmk_graph_consumer.c index 51ed65e7194..5a4b0636b6d 100644 --- a/lib/pacemaker/pcmk_graph_consumer.c +++ b/lib/pacemaker/pcmk_graph_consumer.c @@ -546,7 +546,7 @@ unpack_action(pcmk__graph_synapse_t *parent, xmlNode *xml_action) if (value == NULL) { pcmk__err("Ignoring transition graph action without " PCMK_XA_ID " (bug?)"); - crm_log_xml_trace(xml_action, "invalid"); + pcmk__log_xml_trace(xml_action, "invalid"); return NULL; } @@ -563,14 +563,14 @@ unpack_action(pcmk__graph_synapse_t *parent, xmlNode *xml_action) pcmk__err("Ignoring transition graph action of unknown type '%s' " "(bug?)", xml_action->name); - crm_log_xml_trace(xml_action, "invalid"); + pcmk__log_xml_trace(xml_action, "invalid"); return NULL; } action = calloc(1, sizeof(pcmk__graph_action_t)); if (action == NULL) { crm_perror(LOG_CRIT, "Cannot unpack transition graph action"); - crm_log_xml_trace(xml_action, "lost"); + pcmk__log_xml_trace(xml_action, "lost"); return NULL; } diff --git a/lib/pacemaker/pcmk_graph_producer.c b/lib/pacemaker/pcmk_graph_producer.c index c72236ff82a..4d6ed1f43fd 100644 --- a/lib/pacemaker/pcmk_graph_producer.c +++ b/lib/pacemaker/pcmk_graph_producer.c @@ -1091,5 +1091,5 @@ pcmk__create_graph(pcmk_scheduler_t *scheduler) add_action_to_graph((gpointer) action, (gpointer) scheduler); } - crm_log_xml_trace(scheduler->priv->graph, "graph"); + pcmk__log_xml_trace(scheduler->priv->graph, "graph"); } diff --git a/lib/pacemaker/pcmk_sched_colocation.c b/lib/pacemaker/pcmk_sched_colocation.c index 4f269889baa..538ff9c9771 100644 --- a/lib/pacemaker/pcmk_sched_colocation.c +++ b/lib/pacemaker/pcmk_sched_colocation.c @@ -867,7 +867,7 @@ unpack_colocation_tags(xmlNode *xml_obj, xmlNode **expanded_xml, // Check whether there are any resource sets with template or tag references *expanded_xml = pcmk__expand_tags_in_sets(xml_obj, scheduler); if (*expanded_xml != NULL) { - crm_log_xml_trace(*expanded_xml, "Expanded " PCMK_XE_RSC_COLOCATION); + pcmk__log_xml_trace(*expanded_xml, "Expanded " PCMK_XE_RSC_COLOCATION); return pcmk_rc_ok; } @@ -951,7 +951,7 @@ unpack_colocation_tags(xmlNode *xml_obj, xmlNode **expanded_xml, } if (any_sets) { - crm_log_xml_trace(*expanded_xml, "Expanded " PCMK_XE_RSC_COLOCATION); + pcmk__log_xml_trace(*expanded_xml, "Expanded " PCMK_XE_RSC_COLOCATION); } else { pcmk__xml_free(*expanded_xml); *expanded_xml = NULL; diff --git a/lib/pacemaker/pcmk_sched_location.c b/lib/pacemaker/pcmk_sched_location.c index 43a1d27ffed..45c9281bf90 100644 --- a/lib/pacemaker/pcmk_sched_location.c +++ b/lib/pacemaker/pcmk_sched_location.c @@ -487,7 +487,7 @@ unpack_location_tags(xmlNode *xml_obj, xmlNode **expanded_xml, // Check whether there are any resource sets with template or tag references *expanded_xml = pcmk__expand_tags_in_sets(xml_obj, scheduler); if (*expanded_xml != NULL) { - crm_log_xml_trace(*expanded_xml, "Expanded " PCMK_XE_RSC_LOCATION); + pcmk__log_xml_trace(*expanded_xml, "Expanded " PCMK_XE_RSC_LOCATION); return pcmk_rc_ok; } @@ -528,7 +528,7 @@ unpack_location_tags(xmlNode *xml_obj, xmlNode **expanded_xml, pcmk__xe_set(rsc_set, PCMK_XA_ROLE, state); pcmk__xe_remove_attr(*expanded_xml, PCMK_XA_ROLE); } - crm_log_xml_trace(*expanded_xml, "Expanded " PCMK_XE_RSC_LOCATION); + pcmk__log_xml_trace(*expanded_xml, "Expanded " PCMK_XE_RSC_LOCATION); } else { // No sets diff --git a/lib/pacemaker/pcmk_sched_ordering.c b/lib/pacemaker/pcmk_sched_ordering.c index e3900e20b3f..1e58d142b34 100644 --- a/lib/pacemaker/pcmk_sched_ordering.c +++ b/lib/pacemaker/pcmk_sched_ordering.c @@ -896,7 +896,7 @@ unpack_order_tags(xmlNode *xml_obj, xmlNode **expanded_xml, // Check whether there are any resource sets with template or tag references *expanded_xml = pcmk__expand_tags_in_sets(xml_obj, scheduler); if (*expanded_xml != NULL) { - crm_log_xml_trace(*expanded_xml, "Expanded " PCMK_XE_RSC_ORDER); + pcmk__log_xml_trace(*expanded_xml, "Expanded " PCMK_XE_RSC_ORDER); return pcmk_rc_ok; } @@ -975,7 +975,7 @@ unpack_order_tags(xmlNode *xml_obj, xmlNode **expanded_xml, } if (any_sets) { - crm_log_xml_trace(*expanded_xml, "Expanded " PCMK_XE_RSC_ORDER); + pcmk__log_xml_trace(*expanded_xml, "Expanded " PCMK_XE_RSC_ORDER); } else { pcmk__xml_free(*expanded_xml); *expanded_xml = NULL; diff --git a/lib/pacemaker/pcmk_sched_tickets.c b/lib/pacemaker/pcmk_sched_tickets.c index 0a9287cb228..aaf1bba77ba 100644 --- a/lib/pacemaker/pcmk_sched_tickets.c +++ b/lib/pacemaker/pcmk_sched_tickets.c @@ -363,7 +363,7 @@ unpack_rsc_ticket_tags(xmlNode *xml_obj, xmlNode **expanded_xml, // Check whether there are any resource sets with template or tag references *expanded_xml = pcmk__expand_tags_in_sets(xml_obj, scheduler); if (*expanded_xml != NULL) { - crm_log_xml_trace(*expanded_xml, "Expanded rsc_ticket"); + pcmk__log_xml_trace(*expanded_xml, "Expanded rsc_ticket"); return pcmk_rc_ok; } diff --git a/lib/pengine/complex.c b/lib/pengine/complex.c index 80e3c1ce7f3..30e8fa75cee 100644 --- a/lib/pengine/complex.c +++ b/lib/pengine/complex.c @@ -709,7 +709,7 @@ pe__unpack_resource(xmlNode *xml_obj, pcmk_resource_t **rsc, rule_input.now = scheduler->priv->now; - crm_log_xml_trace(xml_obj, "[raw XML]"); + pcmk__log_xml_trace(xml_obj, "[raw XML]"); id = pcmk__xe_get(xml_obj, PCMK_XA_ID); if (id == NULL) { @@ -741,7 +741,7 @@ pe__unpack_resource(xmlNode *xml_obj, pcmk_resource_t **rsc, rsc_private->scheduler = scheduler; if (expanded_xml) { - crm_log_xml_trace(expanded_xml, "[expanded XML]"); + pcmk__log_xml_trace(expanded_xml, "[expanded XML]"); rsc_private->xml = expanded_xml; rsc_private->orig_xml = xml_obj; From 966f5f65cf49894fb5d121d75bb0e9fa5664437a Mon Sep 17 00:00:00 2001 From: Reid Wahl Date: Thu, 27 Mar 2025 19:24:46 -0700 Subject: [PATCH 186/186] API: libcrmcommon: Deprecate crm_log_xml_trace() Pacemaker should not be used for general-purpose logging. Ref T622 Signed-off-by: Reid Wahl --- include/crm/common/logging.h | 2 -- include/crm/common/logging_compat.h | 3 +++ 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/include/crm/common/logging.h b/include/crm/common/logging.h index 3c8f595a2a0..822a7f10342 100644 --- a/include/crm/common/logging.h +++ b/include/crm/common/logging.h @@ -346,8 +346,6 @@ pcmk__clip_log_level(int level) } \ } while (0) -#define crm_log_xml_trace(xml, text) do_crm_log_xml(LOG_TRACE, text, xml) - #define crm_log_xml_explicit(xml, text) do { \ static struct qb_log_callsite *digest_cs = NULL; \ digest_cs = qb_log_callsite_get( \ diff --git a/include/crm/common/logging_compat.h b/include/crm/common/logging_compat.h index 0bc0f5a9707..88f11b32899 100644 --- a/include/crm/common/logging_compat.h +++ b/include/crm/common/logging_compat.h @@ -68,6 +68,9 @@ extern "C" { //! \deprecated Do not use #define crm_log_xml_debug(xml, text) do_crm_log_xml(LOG_DEBUG, text, xml) +//! \deprecated Do not use +#define crm_log_xml_trace(xml, text) do_crm_log_xml(LOG_TRACE, text, xml) + #ifdef __cplusplus } #endif