* Tue Dec 19 2023 Ken Gaillot Pacemaker-2.1.7 - 1388 commits with 358 files changed, 23771 insertions(+), 17219 deletions(-) - Features added since Pacemaker-2.1.6 + build: allow building with libxml2 2.12.0 and greater + CIB: deprecate "ordering" attribute of "resource_set" + CIB: new cluster option "node-pending-timeout" (defaulting to 0, meaning no timeout, to preserve existing behavior) allows fencing of nodes that do not join Pacemaker's controller group within this much time after joining the cluster + controller: PCMK_node_start_state now works with Pacemaker Remote nodes + tools: crm_verify now supports --quiet option (currently same as default behavior, but in the future, verbose behavior might become the default, so script writers are recommended to explicitly add --quiet if they do not want output) + tools: crm_node supports standard --output-as/--output-to arguments + tests: CTSlab.py was renamed to cts-lab - Fixes since Pacemaker-2.1.6 + logging: restore ability to enable XML trace logs by file and function (regression introduced in 2.1.6) + scheduler: avoid double free with disabled recurring actions (regression introduced in 2.1.5) + tools: consider dampening argument when setting values with attrd_updater (regression introduced in 2.1.5) + tools: wait for reply from crm_node -R (regression introduced in 2.0.5) + agents: handle dampening parameter consistently and correctly + CIB: be more strict about ignoring colocation elements without an ID + controller: do not check whether watchdog fencing is enabled if "stonith-watchdog-timeout" is not configured + controller: don't try to execute agent action at shutdown + controller: avoid race condition when updating node state during join + controller: correctly determine state of a fenced node without a name + controller: wait a second between fencer connection attempts + libpacemaker: avoid shuffling clone instances unnecessarily + libpacemaker: get bundle container's promotion score from correct node + libpacemaker: role-based colocations now work with bundles + libpacemaker: clone-node-max now works with cloned groups + scheduler: compare anti-colocation dependent negative preferences against stickiness + scheduler: consider explicit colocations with group members + scheduler: avoid fencing a pending node without a name + scheduler: properly evaluate rules in action meta-attributes + scheduler: properly sort rule-based blocks when overwriting values + tools: crm_resource --wait will now wait if any actions are pending (previously it would wait only if new actions were planned) + tools: crm_verify --output-as=xml now includes detailed messages + tools: avoid showing pending nodes as having "<3.15.1" feature set in crm_mon + tools: fix display of clone descriptions + tools: crm_resource now reports an error rather than timing out when trying to restart an unmanaged resource + tools: crm_resource now properly detects which promoted role name to use in ban and move constraints - Public API changes since Pacemaker-2.1.6 (all API/ABI backward-compatible) + libcib: cib_t now supports transactions via new cib_api_operations_t methods, new cib_transaction value in enum cib_call_options, and new cib_t transaction and user members + libcib: cib_t now supports setting the ACL user for methods via new cib_api_operations_t set_user() method + libcib: deprecate cib_api_operations_t methods inputfd(), noop(), quit(), set_op_callback(), and signon_raw() + libcib: deprecate cib_call_options values cib_mixed_update, cib_scope_local, and cib_zero_copy + libcib: deprecate cib_t op_callback member + libcrmcluster: deprecate set_uuid() + libcrmcluster: send_cluster_message()'s data argument is const + libcrmcommon: add enum pcmk_rc_e values pcmk_rc_compression, pcmk_rc_ns_resolution, and pcmk_rc_no_transaction + libcrmcommon,libpe_rules,libpe_status: many APIs have been moved from libpe_rules and libpe_status to libcrmcommon, sometimes with new names (deprecating the old ones), as described below + libcrmcommon: add (and deprecate) PCMK_DEFAULT_METADATA_TIMEOUT_MS defined constant + libcrmcommon: add enum pcmk_rsc_flags + libcrmcommon: add enum pcmk_scheduler_flags + libcrmcommon: add pcmk_action_added_to_graph + libcrmcommon: add pcmk_action_always_in_graph + libcrmcommon: add pcmk_action_attrs_evaluated + libcrmcommon: add PCMK_ACTION_CANCEL string constant + libcrmcommon: add PCMK_ACTION_CLEAR_FAILCOUNT string constant + libcrmcommon: add PCMK_ACTION_CLONE_ONE_OR_MORE string constant + libcrmcommon: add PCMK_ACTION_DELETE string constant + libcrmcommon: add PCMK_ACTION_DEMOTE string constant + libcrmcommon: add pcmk_action_demote to enum action_tasks + libcrmcommon: add PCMK_ACTION_DEMOTED string constant + libcrmcommon: add pcmk_action_demoted to enum action_tasks + libcrmcommon: add pcmk_action_detect_loop + libcrmcommon: add PCMK_ACTION_DO_SHUTDOWN string constant + libcrmcommon: add pcmk_action_fence to enum action_tasks + libcrmcommon: add pcmk_action_inputs_deduplicated + libcrmcommon: add PCMK_ACTION_LIST string constant + libcrmcommon: add PCMK_ACTION_LOAD_STOPPED string constant + libcrmcommon: add PCMK_ACTION_LRM_DELETE string constant + libcrmcommon: add PCMK_ACTION_MAINTENANCE_NODES string constant + libcrmcommon: add PCMK_ACTION_META_DATA string constant + libcrmcommon: add pcmk_action_migratable + libcrmcommon: add PCMK_ACTION_MIGRATE_FROM string constant + libcrmcommon: add PCMK_ACTION_MIGRATE_TO string constant + libcrmcommon: add pcmk_action_migration_abort + libcrmcommon: add pcmk_action_min_runnable + libcrmcommon: add PCMK_ACTION_MONITOR string constant + libcrmcommon: add pcmk_action_monitor to enum action_tasks + libcrmcommon: add PCMK_ACTION_NOTIFIED string constant + libcrmcommon: add pcmk_action_notified to enum action_tasks + libcrmcommon: add PCMK_ACTION_NOTIFY string constant + libcrmcommon: add pcmk_action_notify to enum action_tasks + libcrmcommon: add PCMK_ACTION_OFF string constant + libcrmcommon: add PCMK_ACTION_ON string constant + libcrmcommon: add PCMK_ACTION_ONE_OR_MORE string constant + libcrmcommon: add pcmk_action_on_dc + libcrmcommon: add pcmk_action_optional + libcrmcommon: add PCMK_ACTION_PROMOTE string constant + libcrmcommon: add pcmk_action_promote to enum action_tasks + libcrmcommon: add PCMK_ACTION_PROMOTED string constant + libcrmcommon: add pcmk_action_promoted to enum action_tasks + libcrmcommon: add pcmk_action_pseudo + libcrmcommon: add PCMK_ACTION_REBOOT string constant + libcrmcommon: add PCMK_ACTION_RELOAD string constant + libcrmcommon: add PCMK_ACTION_RELOAD_AGENT string constant + libcrmcommon: add pcmk_action_reschedule + libcrmcommon: add pcmk_action_runnable + libcrmcommon: add PCMK_ACTION_RUNNING string constant + libcrmcommon: add pcmk_action_shutdown to enum action_tasks + libcrmcommon: add PCMK_ACTION_START string constant + libcrmcommon: add pcmk_action_start to enum action_tasks + libcrmcommon: add pcmk_action_started to enum action_tasks + libcrmcommon: add PCMK_ACTION_STATUS string constant + libcrmcommon: add PCMK_ACTION_STONITH string constant + libcrmcommon: add PCMK_ACTION_STOP string constant + libcrmcommon: add pcmk_action_stop to enum action_tasks + libcrmcommon: add PCMK_ACTION_STOPPED string constant + libcrmcommon: add pcmk_action_stopped to enum action_tasks + libcrmcommon: add pcmk_action_t type + libcrmcommon: add pcmk_action_unspecified to enum action_tasks + libcrmcommon: add PCMK_ACTION_VALIDATE_ALL string constant + libcrmcommon: add pcmk_assignment_methods_t type + libcrmcommon: add PCMK_DEFAULT_ACTION_TIMEOUT_MS defined constant + libcrmcommon: add pcmk_log_xml_as() + libcrmcommon: add PCMK_META_CLONE_MAX string constant + libcrmcommon: add PCMK_META_CLONE_MIN string constant + libcrmcommon: add PCMK_META_CLONE_NODE_MAX string constant + libcrmcommon: add PCMK_META_FAILURE_TIMEOUT string constant + libcrmcommon: add PCMK_META_MIGRATION_THRESHOLD string constant + libcrmcommon: add PCMK_META_PROMOTED_MAX string constant + libcrmcommon: add PCMK_META_PROMOTED_NODE_MAX string constant + libcrmcommon: add pcmk_multiply_active_block to enum rsc_recovery_type + libcrmcommon: add pcmk_multiply_active_restart to enum rsc_recovery_type + libcrmcommon: add pcmk_multiply_active_stop to enum rsc_recovery_type + libcrmcommon: add pcmk_multiply_active_unexpected to enum rsc_recovery_type + libcrmcommon: add PCMK_NODE_ATTR_TERMINATE string constant + libcrmcommon: add pcmk_node_t type + libcrmcommon: add pcmk_node_variant_cluster + libcrmcommon: add pcmk_node_variant_remote + libcrmcommon: add pcmk_no_action_flags + libcrmcommon: add pcmk_no_quorum_demote + libcrmcommon: add pcmk_no_quorum_fence + libcrmcommon: add pcmk_no_quorum_freeze + libcrmcommon: add pcmk_no_quorum_ignore + libcrmcommon: add pcmk_no_quorum_stop + libcrmcommon: add pcmk_on_fail_ban to enum action_fail_response + libcrmcommon: add pcmk_on_fail_block to enum action_fail_response + libcrmcommon: add pcmk_on_fail_demote to enum action_fail_response + libcrmcommon: add pcmk_on_fail_fence_node to enum action_fail_response + libcrmcommon: add pcmk_on_fail_ignore to enum action_fail_response + libcrmcommon: add pcmk_on_fail_reset_remote to enum action_fail_response + libcrmcommon: add pcmk_on_fail_restart to enum action_fail_response + libcrmcommon: add pcmk_on_fail_restart_container to enum action_fail_response + libcrmcommon: add pcmk_on_fail_standby_node to action_fail_response + libcrmcommon: add pcmk_on_fail_stop to enum action_fail_response + libcrmcommon: add pcmk_probe_always to enum pe_discover_e + libcrmcommon: add pcmk_probe_exclusive to enum pe_discover_e + libcrmcommon: add pcmk_probe_never to enum pe_discover_e + libcrmcommon: add pcmk_requires_fencing to enum rsc_start_requirement + libcrmcommon: add pcmk_requires_nothing to enum rsc_start_requirement + libcrmcommon: add pcmk_requires_quorum to enum rsc_start_requirement + libcrmcommon: add pcmk_resource_t type + libcrmcommon: add pcmk_role_promoted to enum rsc_role_e + libcrmcommon: add pcmk_role_started to enum rsc_role_e + libcrmcommon: add pcmk_role_stopped to enum rsc_role_e + libcrmcommon: add pcmk_role_unknown to enum rsc_role_e + libcrmcommon: add pcmk_role_unpromoted to enum rsc_role_e + libcrmcommon: add pcmk_rsc_match_anon_basename + libcrmcommon: add pcmk_rsc_match_basename + libcrmcommon: add pcmk_rsc_match_clone_only + libcrmcommon: add pcmk_rsc_match_current_node + libcrmcommon: add pcmk_rsc_match_history + libcrmcommon: add pcmk_rsc_methods_t type + libcrmcommon: add pcmk_rsc_variant_bundle + libcrmcommon: add pcmk_rsc_variant_clone + libcrmcommon: add pcmk_rsc_variant_group + libcrmcommon: add pcmk_rsc_variant_primitive + libcrmcommon: add pcmk_rsc_variant_unknown + libcrmcommon: add pcmk_scheduler_t type + libcrmcommon: add pcmk_tag_t type + libcrmcommon: add pcmk_ticket_t type + libcrmcommon: add PCMK_XA_FORMAT string constant + libcrmcommon: crm_ipc_send()'s message argument is now const + libcrmcommon: deprecate action_demote in enum action_tasks + libcrmcommon: deprecate action_demoted in enum action_tasks + libcrmcommon: deprecate action_fail_block in enum action_fail_response + libcrmcommon: deprecate action_fail_demote in enum action_fail_response + libcrmcommon: deprecate action_fail_fence in enum action_fail_response + libcrmcommon: deprecate action_fail_ignore in enum action_fail_response + libcrmcommon: deprecate action_fail_migrate in enum action_fail_response + libcrmcommon: deprecate action_fail_recover in enum action_fail_response + libcrmcommon: deprecate action_fail_reset_remote in enum action_fail_response + libcrmcommon: deprecate action_fail_standby in enum action_fail_response + libcrmcommon: deprecate action_fail_stop in action_fail_response + libcrmcommon: deprecate action_notified in enum action_tasks + libcrmcommon: deprecate action_notify in enum action_tasks + libcrmcommon: deprecate action_promote in enum action_tasks + libcrmcommon: deprecate action_promoted in enum action_tasks + libcrmcommon: deprecate action_restart_container in enum action_fail_response + libcrmcommon: deprecate CRMD_ACTION_CANCEL string constant + libcrmcommon: deprecate CRMD_ACTION_DELETE string constant + libcrmcommon: deprecate CRMD_ACTION_DEMOTE string constant + libcrmcommon: deprecate CRMD_ACTION_DEMOTED string constant + libcrmcommon: deprecate CRMD_ACTION_METADATA string constant + libcrmcommon: deprecate CRMD_ACTION_MIGRATE string constant + libcrmcommon: deprecate CRMD_ACTION_MIGRATED string constant + libcrmcommon: deprecate CRMD_ACTION_NOTIFIED string constant + libcrmcommon: deprecate CRMD_ACTION_NOTIFY string constant + libcrmcommon: deprecate CRMD_ACTION_PROMOTE string constant + libcrmcommon: deprecate CRMD_ACTION_PROMOTED string constant + libcrmcommon: deprecate CRMD_ACTION_RELOAD string constant + libcrmcommon: deprecate CRMD_ACTION_RELOAD_AGENT string constant + libcrmcommon: deprecate CRMD_ACTION_START string constant + libcrmcommon: deprecate CRMD_ACTION_STARTED string constant + libcrmcommon: deprecate CRMD_ACTION_STATUS string constant + libcrmcommon: deprecate CRMD_ACTION_STOP string constant + libcrmcommon: deprecate CRMD_ACTION_STOPPED string constant + libcrmcommon: deprecate CRMD_METADATA_CALL_TIMEOUT defined constant + libcrmcommon: deprecate crm_action_str() + libcrmcommon: deprecate CRM_DEFAULT_OP_TIMEOUT_S string constant + libcrmcommon: deprecate crm_element_name() + libcrmcommon: deprecate CRM_OP_FENCE string constant + libcrmcommon: deprecate CRM_OP_RELAXED_CLONE string constant + libcrmcommon: deprecate CRM_OP_RELAXED_SET string constant + libcrmcommon: deprecate crm_xml_replace() + libcrmcommon: deprecate enum pe_link_state + libcrmcommon: deprecate getDocPtr() + libcrmcommon: deprecate monitor_rsc in enum action_tasks + libcrmcommon: deprecate node_member + libcrmcommon: deprecate node_remote + libcrmcommon: deprecate no_action in enum action_tasks + libcrmcommon: deprecate no_quorum_demote + libcrmcommon: deprecate no_quorum_freeze + libcrmcommon: deprecate no_quorum_ignore + libcrmcommon: deprecate no_quorum_stop + libcrmcommon: deprecate no_quorum_suicide + libcrmcommon: deprecate pcmk_log_xml_impl() + libcrmcommon: deprecate pcmk_scheduler_t localhost member + libcrmcommon: deprecate pe_action_dangle + libcrmcommon: deprecate pe_action_dc + libcrmcommon: deprecate pe_action_dedup + libcrmcommon: deprecate pe_action_dumped + libcrmcommon: deprecate pe_action_have_node_attrs + libcrmcommon: deprecate pe_action_implied_by_stonith + libcrmcommon: deprecate pe_action_migrate_runnable + libcrmcommon: deprecate pe_action_optional + libcrmcommon: deprecate pe_action_print_always + libcrmcommon: deprecate pe_action_processed + libcrmcommon: deprecate pe_action_pseudo + libcrmcommon: deprecate pe_action_requires_any + libcrmcommon: deprecate pe_action_reschedule + libcrmcommon: deprecate pe_action_runnable + libcrmcommon: deprecate pe_action_tracking + libcrmcommon: deprecate pe_clone + libcrmcommon: deprecate pe_container + libcrmcommon: deprecate pe_discover_always in enum pe_discover_e + libcrmcommon: deprecate pe_discover_exclusive in enum pe_discover_e + libcrmcommon: deprecate pe_discover_never in enum pe_discover_e + libcrmcommon: deprecate pe_find_anon + libcrmcommon: deprecate pe_find_any + libcrmcommon: deprecate pe_find_clone + libcrmcommon: deprecate pe_find_current + libcrmcommon: deprecate pe_find_inactive + libcrmcommon: deprecate pe_find_renamed + libcrmcommon: deprecate pe_group + libcrmcommon: deprecate pe_native + libcrmcommon: deprecate pe_unknown + libcrmcommon: deprecate recovery_block in enum rsc_recovery_type + libcrmcommon: deprecate recovery_stop_only in enum rsc_recovery_type + libcrmcommon: deprecate recovery_stop_start in enum rsc_recovery_type + libcrmcommon: deprecate recovery_stop_unexpected in enum rsc_recovery_type + libcrmcommon: deprecate RSC_CANCEL string constant + libcrmcommon: deprecate RSC_DELETE string constant + libcrmcommon: deprecate RSC_DEMOTE string constant + libcrmcommon: deprecate RSC_DEMOTED string constant + libcrmcommon: deprecate RSC_METADATA string constant + libcrmcommon: deprecate RSC_MIGRATE string constant + libcrmcommon: deprecate RSC_MIGRATED string constant + libcrmcommon: deprecate RSC_NOTIFIED string constant + libcrmcommon: deprecate RSC_NOTIFY string constant + libcrmcommon: deprecate RSC_PROMOTE string constant + libcrmcommon: deprecate RSC_PROMOTED string constant + libcrmcommon: deprecate rsc_req_nothing in enum rsc_start_requirement + libcrmcommon: deprecate rsc_req_quorum in enum rsc_start_requirement + libcrmcommon: deprecate rsc_req_stonith in enum rsc_start_requirement + libcrmcommon: deprecate RSC_ROLE_PROMOTED in enum rsc_role_e + libcrmcommon: deprecate RSC_ROLE_STARTED in enum rsc_role_e + libcrmcommon: deprecate RSC_ROLE_STOPPED in enum rsc_role_e + libcrmcommon: deprecate RSC_ROLE_UNKNOWN in enum rsc_role_e + libcrmcommon: deprecate RSC_ROLE_UNPROMOTED + libcrmcommon: deprecate RSC_START string constant + libcrmcommon: deprecate RSC_STARTED string constant + libcrmcommon: deprecate RSC_STATUS string constant + libcrmcommon: deprecate RSC_STOP string constant + libcrmcommon: deprecate RSC_STOPPED string constant + libcrmcommon: deprecate shutdown_crm in enum action_tasks + libcrmcommon: deprecate started_rsc in enum action_tasks + libcrmcommon: deprecate start_rsc in enum action_tasks + libcrmcommon: deprecate stonith_node in enum action_tasks + libcrmcommon: deprecate stopped_rsc in enum action_tasks + libcrmcommon: deprecate stop_rsc in enum action_tasks + libcrmcommon: deprecate TYPE() macro + libcrmcommon: deprecate XML_ATTR_VERBOSE string constant + libcrmcommon: deprecate XML_CIB_ATTR_SOURCE string constant + libcrmcommon: deprecate XML_CIB_TAG_DOMAINS string constant + libcrmcommon: deprecate xml_has_children() + libcrmcommon: deprecate XML_NODE_EXPECTED string constant + libcrmcommon: deprecate XML_NODE_IN_CLUSTER string constant + libcrmcommon: deprecate XML_NODE_IS_PEER string constant + libcrmcommon: deprecate XML_NODE_JOIN_STATE string constant + libcrmcommon: deprecate XML_RSC_ATTR_FAIL_STICKINESS string constant + libcrmcommon: deprecate XML_RSC_ATTR_FAIL_TIMEOUT string constant + libcrmcommon: deprecate XML_RSC_ATTR_INCARNATION_MAX string constant + libcrmcommon: deprecate XML_RSC_ATTR_INCARNATION_MIN string constant + libcrmcommon: deprecate XML_RSC_ATTR_INCARNATION_NODEMAX string constant + libcrmcommon: deprecate XML_RSC_ATTR_PROMOTED_MAX string constant + libcrmcommon: deprecate XML_RSC_ATTR_PROMOTED_NODEMAX string constant + libcrmcommon: deprecate XML_TAG_DIFF_ADDED string constant + libcrmcommon: deprecate XML_TAG_DIFF_REMOVED string constant + libcrmcommon: deprecate XML_TAG_FRAGMENT + libcrmcommon: dump_xml_formatted()'s argument is now const + libcrmcommon: dump_xml_formatted_with_text()'s argument is const + libcrmcommon: dump_xml_unformatted()'s argument is now const + libcrmcommon: save_xml_to_file()'s xml argument is now const + libcrmcommon: validate_xml_verbose()'s xml_blob argument is const + libcrmcommon: write_xml_fd()'s xml argument is now const + libcrmcommon: write_xml_file()'s xml argument is now const + libcrmcommon: xml_top argument of xpath_search() is now const + libcrmcommon,libpe_rules,libpe_status: move enum pe_ordering, struct pe_action_wrapper_s, struct pe_tag_s, struct pe_ticket_s, struct resource_object_functions_s, enum node_type, enum pe_action_flags, enum pe_discover_e, enum pe_find, enum pe_link_state, enum pe_obj_types, enum pe_quorum_policy, enum pe_restart, struct pe_action_s, struct pe_node_s, struct pe_node_shared_s, struct pe_resource_s, struct pe_working_set_s, enum action_fail_response, enum action_tasks, enum pe_print_options, enum rsc_recovery_type, enum rsc_role_e, and enum rsc_start_requirement to libcrmcommon + libpacemaker,libpe_rules,libpe_status: use pcmk_action_t instead of pe_action_t, pcmk_node_t instead of pe_node_t, pcmk_resource_t instead of pe_resource_t, and pcmk_scheduler_t instead of pe_working_set_t in all API structs and functions + libpacemaker: add pcmk_list_alternatives(), pcmk_list_providers(), pcmk_list_standards(), and pcmk_list_agents() for functionality equivalent to crm_resource --list-ocf-alternatives, --list-ocf-providers, --list-standards, and --list-agents + libpe_rules,libpe_status: deprecate pe_action_t type + libpe_rules,libpe_status: deprecate pe_action_wrapper_t + libpe_rules,libpe_status: deprecate pe_node_t type + libpe_rules,libpe_status: deprecate pe_resource_t type + libpe_rules,libpe_status: deprecate pe_tag_t + libpe_rules,libpe_status: deprecate pe_ticket_t + libpe_rules,libpe_status: deprecate pe_working_set_t type + libpe_rules,libpe_status: deprecate resource_alloc_functions_t type + libpe_rules,libpe_status: deprecate resource_object_functions_t + libpe_status,libpe_rules: deprecate enum pe_ordering and all its values + libpe_status,libpe_rules: deprecate RSC_ROLE_MAX + libpe_status,libpe_rules: deprecate RSC_ROLE_PROMOTED_LEGACY_S string constant + libpe_status,libpe_rules: deprecate RSC_ROLE_PROMOTED_S string constant + libpe_status,libpe_rules: deprecate RSC_ROLE_STARTED_S string constant + libpe_status,libpe_rules: deprecate RSC_ROLE_STOPPED_S string constant + libpe_status,libpe_rules: deprecate RSC_ROLE_UNKNOWN_S + libpe_status,libpe_rules: deprecate RSC_ROLE_UNPROMOTED_LEGACY_S string constant + libpe_status,libpe_rules: deprecate RSC_ROLE_UNPROMOTED_S string constant + libpe_status: deprecate enum pe_check_parameters + libpe_status: deprecate pe_flag_check_config + libpe_status: deprecate pe_flag_concurrent_fencing + libpe_status: deprecate pe_flag_enable_unfencing + libpe_status: deprecate pe_flag_have_quorum + libpe_status: deprecate pe_flag_have_remote_nodes + libpe_status: deprecate pe_flag_have_status + libpe_status: deprecate pe_flag_have_stonith_resource + libpe_status: deprecate pe_flag_maintenance_mode + libpe_status: deprecate pe_flag_no_compat + libpe_status: deprecate pe_flag_no_counts + libpe_status: deprecate pe_flag_quick_location + libpe_status: deprecate pe_flag_sanitized + libpe_status: deprecate pe_flag_show_scores + libpe_status: deprecate pe_flag_show_utilization + libpe_status: deprecate pe_flag_shutdown_lock + libpe_status: deprecate pe_flag_startup_fencing + libpe_status: deprecate pe_flag_startup_probes + libpe_status: deprecate pe_flag_start_failure_fatal + libpe_status: deprecate pe_flag_stonith_enabled + libpe_status: deprecate pe_flag_stop_action_orphans + libpe_status: deprecate pe_flag_stop_everything + libpe_status: deprecate pe_flag_stop_rsc_orphans + libpe_status: deprecate pe_flag_symmetric_cluster + libpe_status: deprecate pe_rsc_allow_migrate + libpe_status: deprecate pe_rsc_allow_remote_remotes + libpe_status: deprecate pe_rsc_assigning + libpe_status: deprecate pe_rsc_block + libpe_status: deprecate pe_rsc_critical + libpe_status: deprecate pe_rsc_detect_loop + libpe_status: deprecate pe_rsc_failed + libpe_status: deprecate pe_rsc_failure_ignored + libpe_status: deprecate pe_rsc_fence_device + libpe_status: deprecate pe_rsc_is_container + libpe_status: deprecate pe_rsc_maintenance + libpe_status: deprecate pe_rsc_managed + libpe_status: deprecate pe_rsc_merging + libpe_status: deprecate pe_rsc_needs_fencing + libpe_status: deprecate pe_rsc_needs_quorum + libpe_status: deprecate pe_rsc_needs_unfencing + libpe_status: deprecate pe_rsc_notify + libpe_status: deprecate pe_rsc_orphan + libpe_status: deprecate pe_rsc_orphan_container_filler + libpe_status: deprecate pe_rsc_promotable + libpe_status: deprecate pe_rsc_provisional + libpe_status: deprecate pe_rsc_reload + libpe_status: deprecate pe_rsc_replica_container + libpe_status: deprecate pe_rsc_restarting + libpe_status: deprecate pe_rsc_runnable + libpe_status: deprecate pe_rsc_start_pending + libpe_status: deprecate pe_rsc_stop + libpe_status: deprecate pe_rsc_stop_unexpected + libpe_status: deprecate pe_rsc_unique * Wed May 24 2023 Ken Gaillot Pacemaker-2.1.6 - 1124 commits with 402 files changed, 25220 insertions(+), 14751 deletions(-) - Features added since Pacemaker-2.1.5 + CIB: deprecate "moon" in date_spec elements in rules + CIB: deprecate support for Nagios resources + CIB: utilization attributes may be set as transient + CIB: alerts and alert recipients support an "enabled" meta-attribute + All daemons support --output-as/--output-to options including XML output with interactive options + tools: attrd_updater supports --wait parameter that can be set to "no" (return immediately after submitting request, which is the default and previous behavior), "local" (return after the new value has taken effect on the local node), or "cluster" (return after new value has taken effect on all nodes) + tools: attrd_updater supports -z/--utilization to modify utilization attributes + tools: attrd_updater supports --pattern to affect all attributes matching a given pattern + tools: crm_attribute supports --pattern with permanent node attributes (in addition to previous support for transient attributes) + tools: crm_mon displays resource descriptions if --show-description or --show-detail is given + tools: crm_mon shows maintenance mode when enabled per-resource + tools: crm_mon --interval can be used to update XML and text output (in addition to previous support for HTML) + tools: crm_mon fencing history includes microseconds in timestamps + tools: crm_mon shows which node it was run on + tools: crm_mon shows whether Pacemaker or Pacemaker Remote is running or shutting down + tools: deprecate crm_mon --simple-status + tools: crm_resource --element option can be used with --get-parameter, --set-parameter, and --delete-parameter to modify resource properties such as class, provider, type, and description + tools: crm_resource --list shows resource descriptions better (including when --output-as=xml is used) + tools: crm_shadow supports standard --output-as/--output-to arguments - Fixes since Pacemaker-2.1.5 + pacemakerd: -S should wait for cluster to shut down before returning (regression introduced in 2.1.1) + Pacemaker Remote: remote nodes wait for all-clear from cluster before shutting down (regression introduced in 2.1.5) + tools: attrd_updater --query without --node shows attributes from all nodes instead of local node (regression introduced in 2.1.5) + pacemaker-attrd: Preserve a Pacemaker Remote node's transient attributes if its connection to the cluster is lost but reconnects + CIB manager: successful CIB schema upgrade always forces a write + controller: avoid election storm when joining node has CIB newer than DC can accept + controller: avoid election storm due to incompatible CIB + controller: avoid use-after-free when disconnecting proxy IPCs during shutdown + controller: avoid double-incrementing failcount for simulated failures + controller: avoid reprobing remote nodes when target is a cluster node + controller: delay join finalization if a transition is in progress + controller: initial fencing timeout includes any priority-fencing-delay + controller: shutdown gracefully if scheduler connection is interrupted during shutdown + fencer: avoid crash during shutdown when action is pending + fencer: calculate fencing timeout correctly when watchdog is used with topology + fencer: apply priority-fencing-delay only to first device tried + fencer: total and per-device fencing timeouts include any priority-fencing-delay and pcmk_delay_base + scheduler: fix a number of corner cases with colocations, including preventing a resource from starting if it has a mandatory colocation with a group whose start is blocked, preventing optional anti-colocation from overriding infinite stickiness, and correctly considering a group's colocation dependents when the group is itself colocated with a clone + scheduler: honor as many mandatory colocations as possible before considering any optional ones + scheduler: ensure earlier group member starts occur after later member stops + scheduler: handle orderings with bundles more correctly + scheduler: ensure expired results never affect resource state + scheduler: handle cleaned migrate_from history correctly + scheduler: prevent pending monitor of one clone instance from causing unexpected stop of other instances + scheduler: prevent inactive clone instances from starting if probe is unrunnable on any node + agents: SysInfo calculates cpu_load correctly + tools: cibadmin --scope accepts status + tools: crm_attribute -p "" works same as -p when called from resource agent + tools: crm_attribute recognizes "-INFINITY" as value instead of options + tools: crm_mon avoids displaying recurring monitors as pending if first attempt fails + tools: crm_mon --daemonize shows disconnected message when CIB connection is lost instead of continuing to display last known state + tools: crm_mon avoids crash when built without curses library support + tools: crm_mon supports --output-as=none correctly + tools: crm_resource --ban or --move works with single-replica bundles + tools: crm_shadow --commit now works with CIB_file + tools: crm_simulate failure injection avoids crash if node name is unknown - Public API changes since Pacemaker-2.1.5 + Python: New "pacemaker" Python module (packaged as python3-pacemaker in RPMs built with "make rpm") contains supported public API with BuildOptions and ExitStatus classes + libcib: add client_id() method member to cib_api_operations_t + libcib: deprecate cib_database + libcib: deprecate cib_quorum_override + libcib: deprecate the cib_api_operations_t:update() method + libcrmcluster: add pcmk_cluster_new() + libcrmcluster: add crm_join_nack_quiet + libcrmcluster: add pcmk_cluster_free() + libcrmcluster: node argument to send_cluster_message() is now const + libcrmcluster: node argument to send_cluster_text() is now const + libcrmcommon: add crm_time_usecs + libcrmcommon: add PCMK_META_ENABLED + libcrmcommon: add pcmk_pacemakerd_state_remote + libcrmcommon: add pcmk_rc_bad_xml_patch + libcrmcommon: add pcmk_rc_bad_input + libcrmcommon: add pcmk_rc_disabled + libcrmcommon: deprecate add_xml_nocopy() + libcrmcommon: deprecate log_data_element() + libcrmcommon: deprecate PCMK_RESOURCE_CLASS_NAGIOS + libcrmcommon: deprecate PCMK_RESOURCE_CLASS_UPSTART + libcrmcommon: deprecate XML_ATTR_UUID + libcrmcommon: deprecate XML_CIB_ATTR_REPLACE + libcrmcommon: deprecate xml_log_changes() + libcrmcommon: deprecate xml_log_options enum + libcrmcommon: deprecate xml_log_patchset() + libcrmcommon: argument to pcmk_xe_is_probe() is now const + libcrmcommon: argument to pcmk_xe_mask_probe_failure() is now const + libcrmcommon: patchset argument of xml_log_patchset() is now const + libcrmcommon: rsc_op_expected_rc() argument is now const + libcrmcommon: second argument to copy_in_properties() is now const + libcrmcommon: xml argument of xml_log_changes() is now const + libcrmservice: deprecate enum nagios_exitcode + libpacemaker: add pcmk_query_node_info() + libpacemaker: add pcmk_query_node_name() + libpacemaker: multiple arguments to pcmk_simulate() are now const + libpacemaker: node argument to pcmk_resource_digests() is now const + libpacemaker: node_types argument to pcmk_list_nodes() is now const + libpacemaker: pcmk_controller_status() node name arg is now const + libpe_rules: last argument to pe_expand_re_matches() is now const + libpe_rules: rule_data argument to pe_eval_nvpairs() is now const + libpe_rules: second argument to pe_eval_expr() and pe_eval_subexpr() is now const + libpe_rules: second argument to pe_eval_rules() is now const + libpe_rules: second argument to pe_unpack_nvpairs() is now const + libpe_status: add pe_rsc_detect_loop + libpe_status: add pe_rsc_replica_container + libpe_status: deprecate fixed member of pe_node_t + libpe_status: argument to pe_rsc_is_bundled() is now const + libpe_status: argument to rsc_printable_id() is now const + libpe_status: first argument to calculate_active_ops() is now const + libpe_status: first argument to pe_find_node() is now const + libpe_status: first argument to pe_find_node_any() is now const + libpe_status: first argument to pe_find_node_id() is now const + libpe_status: first argument to resource_object_functions_t:is_filtered() is now const * Wed Dec 7 2022 Ken Gaillot Pacemaker-2.1.5 - 1287 commits with 447 files changed, 33546 insertions(+), 21518 deletions(-) - Features added since Pacemaker-2.1.4 + CIB: access control lists (ACLs) for groups are supported + CIB: ACL target and group XML supports "name" attribute to specify a name that is not a unique XML ID + CIB: deprecate pacemaker-next schema + CIB: deprecate first-instance and then-instance in ordering constraints and rsc-instance and with-rsc-instance in colocation constraints (only usable with pacemaker-next schema) + CIB: deprecate "collocated" and "ordered" meta-attributes for groups (true is default, and resource sets should be used instead of false) + build: support building with -D_TIME_BITS=64 + build: support building with compilers that are strict about void + build: allow building RPMs from source distribution + fencer: deprecate stand-alone mode + agents: ClusterMon, controld, HealthCPU, ifspeed, and SysInfo agents support OCF 1.1 standard + agents: non-functional SystemHealth agent has been removed + tools: non-functional ipmiservicelogd and notifyServicelogEvent tools have been removed + tools: crm_attribute supports querying all attributes on a given node + tools: crm_attribute --query, --delete, and --update support regular expressions + tools: crm_error supports standard --output-as/--output-to arguments + tools: crm_error lists all return codes if none are specified + tools: crm_mon --show-detail displays the CRM feature set of each node and makes display of fencing actions more technical + tools: crm_resource --why checks node health + tools: crm_resource --constraints now accepts --recursive (equivalent to --stack) and --force (to show constraints for a group member instead of the group) - Fixes since Pacemaker-2.1.4 + tools: crm_error does not print spurious output when given a negative return code argument (regression introduced in 2.0.4) + tools: avoid crash if crm_resource is given extraneous arguments (regression introduced in 2.0.5) + tools: stonith_admin --validate XML output shows correct validation status and errors (regressions introduced in 2.0.5 and 2.1.2) + tools: crm_resource --list-operations shows pending operations as pending instead of complete (regression introduced in 2.1.0) + controller: move resources if appropriate after they are reordered in CIB (regression introduced in 2.1.3) + fencing: allow fence devices to be registered if local node is not in CIB (regression introduced in 2.1.3) + tools: crm_mon --one-shot should succeed even if pacemaker is shutting down (regression introduced in 2.1.3) + tools: avoid memory leak in crm_mon (regression introduced in 2.1.3) + tools: crm_attribute --quiet outputs nothing instead of "(null)" if attribute has no value (regression introduced in 2.1.3) + tools: accept deprecated and unused attrd_updater --quiet option (regression introduced in 2.1.3) + CIB: avoid crashes when XML IDs grow very long + controller: pre-load agent metadata asynchronously to avoid timeout when agent's metadata action runs crm_node + controller: avoid timing issue that increments resource fail count twice + fencing: unfence all nodes after device configuration changes + fencing: avoid memory leaks when processing topology requests + fencing: ignore node that executed action when checking whether actions are equivalent + scheduler,controller: calculate secure digest consistently + scheduler: consider roles when blocking colocation dependents + scheduler: prioritize group colocations properly + scheduler: properly consider effect of "with group" colocations + scheduler: handle corner cases in live migrations + scheduler: avoid perpetual moving of bundle containers in certain situations + scheduler: properly calculate resource parameter digests without history + scheduler: do not enforce stop if newer monitor indicates resource was not running on target of failed migrate_to + scheduler: do not enforce stop on rejoined node after failed migrate_to + scheduler: don't demote on expected node when multiple-active is set to stop_unexpected + scheduler: prevent resources running on multiple nodes after partial live migration + scheduler: restart resource instead of reload if extra parameters in operation change + schemas: Consider days, minutes, seconds, and yeardays in date expressions valid + schemas: Consider in_range with an end and duration valid + schemas: Consider score and score-attribute optional in rules + tools: crm_resource --digests uses most recent operation history entry + tools: if multiple return code options are given to crm_error, use the last one + tools: crm_resource correctly detects if a resource is unmanaged or disabled even if there are multiple settings using rules - Public API changes since Pacemaker-2.1.4 + libcib: add cib_api_operations_t:set_primary + libcib: add cib_api_operations_t:set_secondary + libcib: deprecate cib_api_operations_t:delete_absolute() + libcib: deprecate cib_api_operations_t:is_master + libcib: deprecate cib_api_operations_t:set_master + libcib: deprecate cib_api_operations_t:set_slave + libcib: deprecate cib_api_operations_t:set_slave_all + libcrmcommon: deprecated XML_CIB_TAG_MASTER constant is usable again (regression introduced in 2.1.0) + libcrmcommon: pcmk_ipc_api_t supports attribute manager IPC + libcrmcommon: add pcmk_rc_unpack_error + libcrmcommon: add CRM_EX_FAILED_PROMOTED + libcrmcommon: add CRM_EX_NONE + libcrmcommon: add CRM_EX_PROMOTED + libcrmcommon: add pcmk_readable_score() + libcrmcommon: add PCMK_XA_PROMOTED_MAX_LEGACY string constant + libcrmcommon: add PCMK_XA_PROMOTED_NODE_MAX_LEGACY string constant + libcrmcommon: argument to crm_time_check() is now const + libcrmcommon: argument to pcmk_controld_api_replies_expected() is now const + libcrmcommon: argument to pcmk_xml_attrs2nvpairs() is now const + libcrmcommon: argument to xml2list() is now const + libcrmcommon: argument to xml_acl_denied() is now const + libcrmcommon: argument to xml_acl_enabled() is now const + libcrmcommon: argument to xml_get_path() is now const + libcrmcommon: arguments to crm_time_add() are now const + libcrmcommon: arguments to crm_time_compare() are now const + libcrmcommon: arguments to crm_time_subtract() are now const + libcrmcommon: argv argument to crm_log_preinit() is now char *const * + libcrmcommon: crm_time_calculate_duration() arguments are now const + libcrmcommon: deprecate CRM_ATTR_RA_VERSION + libcrmcommon: deprecate crm_destroy_xml() + libcrmcommon: deprecate crm_ipc_server_error + libcrmcommon: deprecate crm_ipc_server_info + libcrmcommon: deprecate CRM_OP_LRM_QUERY + libcrmcommon: deprecate crm_str() + libcrmcommon: deprecate PCMK_XE_PROMOTED_MAX_LEGACY string constant + libcrmcommon: deprecate PCMK_XE_PROMOTED_NODE_MAX_LEGACY constant + libcrmcommon: deprecate score2char() + libcrmcommon: deprecate score2char_stack() + libcrmcommon: deprecate XML_ATTR_RA_VERSION + libcrmcommon: deprecate xml_get_path() + libcrmcommon: deprecate XML_PARANOIA_CHECKS + libcrmcommon: deprecate XML_TAG_OP_VER_ATTRS + libcrmcommon: deprecate XML_TAG_OP_VER_META + libcrmcommon: deprecate XML_TAG_RSC_VER_ATTRS + libcrmcommon: dt argument of crm_time_get_gregorian() is now const + libcrmcommon: dt argument of crm_time_get_isoweek() is now const + libcrmcommon: dt argument of crm_time_get_ordinal() is now const + libcrmcommon: dt argument of crm_time_get_timeofday() is now const + libcrmcommon: dt argument of crm_time_get_timezone() is now const + libcrmcommon: first argument to create_reply() is now const + libcrmcommon: first argument to crm_copy_xml_element() is now const + libcrmcommon: first argument to find_xml_node() is now const + libcrmcommon: first argument to get_message_xml() is now const + libcrmcommon: first argument to pcmk_ipc_name() is now const + libcrmcommon: first argument to xml_patch_versions() is now const + libcrmcommon: last argument to crm_write_blackbox() is now const + libcrmcommon: add pcmk_rc_duplicate_id + libcrmcommon: add pcmk_result_get_strings() + libcrmcommon: add pcmk_result_type enum + libcrmcommon: add PCMK_XE_DATE_EXPRESSION constant + libcrmcommon: add PCMK_XE_OP_EXPRESSION constant + libcrmcommon: add PCMK_XE_RSC_EXPRESSION constant + libcrmcommon: first argument to crm_time_as_string() is now const + libcrmcommon: crm_time_t argument to crm_time_log_alias() is now const + libcrmcommon: argument to crm_time_get_seconds() is now const + libcrmcommon: argument to crm_time_get_seconds_since_epoch() is now const + libcrmcommon: sixth argument to log_data_element() is now const + libcrmcommon: source argument to crm_time_set() is now const + libcrmcommon: source argument to crm_time_set_timet() is now const + libcrmcommon: source argument to pcmk_copy_time() is now const + libpacemaker: add pcmk_check_rule() + libpacemaker: add pcmk_check_rules() + libpacemaker: add pcmk_show_result_code() + libpacemaker: add pcmk_list_result_codes() + libpacemaker: add pcmk_rc_disp_flags enum + libpacemaker: ipc_name argument to pcmk_pacemakerd_status() is now const + libpe_rules: deprecate version_expr enum value + libpe_rules: second argument to pe_eval_nvpairs() is now const + libpe_status: argument to pe_rsc_is_anon_clone() is now const + libpe_status: argument to pe_rsc_is_unique_clone() is now const + libpe_status: deprecate enum pe_graph_flags + libpe_status: first argument to pe_rsc_is_clone() is now const + libpe_status: two arguments to get_rsc_attributes() are now const + libpe_status: second argument to pe_eval_versioned_attributes() is now const + libpe_status: second argument to pe_rsc_params() is now const + libstonithd: deprecate stonith_event_t:message + libstonithd: deprecate stonith_event_t:type + libstonithd: last argument to stonith_api_operations_t:register_device() is now const + libstonithd: last argument to stonith_api_operations_t:register_level() is now const + libstonithd: last argument to stonith_api_operations_t:register_level_full() is now const + libstonithd: params argument to stonith_api_operations_t:validate() is now const * Mon Jun 13 2022 Ken Gaillot Pacemaker-2.1.4 - Changesets: 17 - Diff: 9 files changed, 52 insertions(+), 18 deletions(-) - Fixes since Pacemaker-2.1.3 + fencing: get target-by-attribute working again (regression in 2.1.3) + fencing: avoid use-after-free when processing self-fencing requests with topology (regression in 2.1.3) + resources: typo in HealthSMART meta-data (regression in 2.1.3) + fencing: avoid memory leaks when processing topology requests + fencing: delegate shouldn't matter when checking equivalent fencing + tools: fix CSS syntax error in crm_mon --output-as=html * Wed Jun 1 2022 Ken Gaillot Pacemaker-2.1.3 - Changesets: 814 - Diff: 332 files changed, 23435 insertions(+), 12137 deletions(-) - Features added since Pacemaker-2.1.2 + Internal failures of resource actions (such as an OCF agent not being found) are shown with a detailed exit reason in logs, crm_mon output, etc. + Support for CIB entries with type="ping" is deprecated (this was an undocumented means of defining a quorum-only node) + build: configure script supports experimental --enable-nls option to enable native language translations (currently only Chinese translations of certain help text are available) + rpm: crm_attribute is now part of the pacemaker-cli package instead of the pacemaker package + CIB: resources support allow-unhealthy-nodes meta-attribute to exempt the resource from bans due to node health checks (particularly useful for health monitoring resources themselves) + CIB: multiple-active cluster property can be set to "stop_unexpected" to leave the expected instance running and stop only any unexpected ones + CIB: bundles support resource utilization + pacemakerd: regularly check that subdaemons are active and accepting IPC connections so sbd can self-fence a node with a malfunctioning subdaemon + pacemaker-schedulerd: support --output-as/--output-to options including XML output with interactive options + tools: cibadmin --show-access option to show CIB colorized for ACLs + tools: crm_attribute supports standard --output-as/--output-to options + tools: crm_mon output indicates if a node's health is yellow or red + tools: for probes that failed because the service is not installed or locally configured, crm_mon displays the resource as stopped rather than failed + tools: crm_rule supports standard --output-as/--output-to options, allows passing multiple -r options, and is no longer experimental + tools: stonith_admin fencing commands display reasons for failures + resource agents: HealthSMART supports OCF 1.1 standard and new OCF_RESKEY_dampen and OCF_RESKEY_smartctl parameters - Fixes since Pacemaker-2.1.2 + build: avoid circular library dependency (regression introduced in 2.1.0) + systemd: if pacemakerd exits immediately after starting, wait 1 second before trying to respawn, and allow 5 attempts + fencer: get fencing completion time correctly (regression introduced in 2.1.2) + fencer: avoid memory leak when broadcasting history differences (regression introduced in 2.1.0) + controller: correctly match "node down" events so remote nodes don't get fenced when connection is stopped (regression introduced in 2.1.2) + executor: avoid possible double free during notify operation (regression introduced in 2.1.1) + tools: get stonith_admin -T/--tag option working again (regression introduced in 2.0.3) + resources: use correct syntax in Stateful meta-data (regression introduced in 2.1.0) + corosync: repeat corosync_cfg_trackstart if first attempt fails + libcrmcommon: retry IPC requests after EAGAIN errors + executor,scheduler: treat "no secrets" fence results as a hard error + fencing: handle dynamic target query failures better + fencing: don't set stonith action to pending if fork fails + pacemakerd: avoid race condition when subdaemaon is checked while exiting + scheduler: avoid memory leak when displaying clones in certain conditions + scheduler: properly set data set flags when scheduling actions + tools: support command-line crm_attribute calls on Pacemaker remote nodes whose node name in the cluster differs from their local hostname + tools: prevent possible crm_resource crashes if multiple commands specified - Public API changes since Pacemaker-2.1.2 + libcrmcommon: pcmk_ipc_api_t supports scheduler IPC + libpacemaker: add pcmk_status() (equivalent to crm_mon) + libcib: deprecate get_object_parent() + libcib: deprecate get_object_path() + libcib: deprecate get_object_root() + libcrmcommon: add pcmk_cib_parent_name_for() + libcrmcommon: add pcmk_cib_xpath_for() + libcrmcommon: add pcmk_find_cib_element() + libcrmcommon: deprecate crm_xml_add_boolean() + libpe_status: add pe_flag_check_config + libpe_status: add pe_node_shared_s:data_set + libpe_status: add pe_rsc_restarting flag + libpe_status: add pe_rsc_stop_unexpected flag + libpe_status: add recovery_stop_unexpected to enum rsc_recovery_type + libpe_status: deprecate node_ping + libpe_status: deprecate pe_order_stonith_stop + libpe_status: deprecate pe_rsc_starting and pe_rsc_stopping + libstonithd: add exit_reason member to stonith_history_t + libstonithd: deprecate stonith_t:call_timeout + libstonithd: stonith_api_del_notification() with NULL second argument removes all notifications * Tue Nov 23 2021 Ken Gaillot Pacemaker-2.1.2 - Changesets: 462 - Diff: 223 files changed, 16518 insertions(+), 11743 deletions(-) - Features added since Pacemaker-2.1.1 + build: when built with --with-initdir, Pacemaker uses the value to find LSB resources (in addition to being where Pacemaker's own init scripts are installed) + build: cmocka is new dependency for unit tests ("make check") + rpm: fence_watchdog now comes with pacemaker package (not pacemaker-cli) + daemons: metadata for cluster options supports OCF 1.1 standard + executor: nagios warning results now map to OCF "degraded" result code + fencing: pcmk_delay_base can optionally specify different delays per node + fencing: pcmk_host_map supports escaped characters such as spaces in values + resources: HealthIOWait agent supports OCF 1.1 standard, and validate works + tools: crm_mon shows exit reasons for actions failed due to internal errors + tools: crm_mon failed action display is more human-friendly by default + tools: crm_resource --force-* now outputs exit reasons if available - Fixes since Pacemaker-2.1.1 + pkg-config: return correct value for ocfdir (regression introduced in 2.1.0) + tools: fix crm_mon --hide-headers and related options (regression introduced in 2.0.4) + attrd: check election status upon node loss to avoid election timeout + controller: improved handling of executor connection failures + executor: properly detect systemd unit existence + pacemakerd: recover properly from Corosync crash + fencing: fencing results are now sorted with sub-second resolution + fencing: fix fence_watchdog version output, metadata output, and man page + fencing: mark state as done if remapped "on" times out + tools: map LSB status to OCF correctly with crm_resource --force-check - Public API changes since Pacemaker-2.1.1 + libcrmcommon: deprecate PCMK_OCF_EXEC_ERROR + libcrmcommon: deprecate PCMK_OCF_PENDING + libcrmcommon: deprecate PCMK_OCF_SIGNAL + libcrmcommon: add CRM_EX_DEGRADED and CRM_EX_DEGRADED_PROMOTED + libcrmcommon: add enum pcmk_exec_status + libcrmcommon: add PCMK_EXEC_MAX + libcrmcommon: add PCMK_EXEC_NO_FENCE_DEVICE + libcrmcommon: add PCMK_EXEC_NO_SECRETS + libcrmcommon: add pcmk_exec_status_str() + libcrmcommon: add pcmk_rc2ocf() + libcrmcommon: deprecate PCMK_OCF_TIMEOUT + libcrmservice: add services_result2ocf() + libcrmservice: deprecate enum op_status + libcrmservice: deprecate LSB_ROOT_DIR + libcrmservice: deprecate NAGIOS_NOT_INSTALLED + libcrmservice: deprecate NAGIOS_STATE_DEPENDENT + libcrmservice: deprecate services_get_ocf_exitcode() + libcrmservice: deprecate services_list() and services_action_create() + libcrmservice: deprecate services_lrm_status_str() + libpacemaker: add enum pcmk_sim_flags + libpacemaker: add pcmk_injections_t + libpacemaker: add pcmk_free_injections() + libpacemaker: add pcmk_simulate() + libstonithd: add opaque member to stonith_event_t + libstonithd: add opaque member to stonith_callback_data_t * Thu Sep 09 2021 Ken Gaillot Pacemaker-2.1.1 - Changesets: 231 - Diff: 102 files changed, 4912 insertions(+), 3428 deletions(-) - Features added since Pacemaker-2.1.0 + enhanced support for OCF Resource Agent API 1.1 standard + ocf:pacemaker:attribute and ocf:pacemaker:ping agents now support 1.1 + tools: crm_resource passes output format to agents so they will use it if supported + tools: crm_resource --validate and --force-check options accept optional check level to pass to agent + tools: crm_mon XML output includes stonith-timeout-ms and priority-fencing-delay-ms cluster properties + pacemakerd: support --output-as/--output-to options including XML output with interactive options such as --features - Fixes since Pacemaker-2.1.0 + pacemaker-attrd: avoid repeated unfencing of remote nodes when DC joined cluster after remote was up + controller: ensure newly joining node learns the node names of non-DCs + controller: ensure lost node's transient attributes are cleared without DC + scheduler: avoid invalid transition when group member is unmanaged (CLBZ#5423) + scheduler: don't schedule probes of unmanaged resources on pending nodes + executor: avoid crash after TLS connection errors (regression introduced in 2.0.4) + fencing: avoid repeated attempts to get (nonexistent) meta-data for watchdog device (regression introduced in 2.1.0) + fencing: select correct device when pcmk_host_check="dynamic-list" and pcmk_host_map are both specified (CLBZ#5474) + tools: crm_attribute supports node attribute values starting with a '-' again (regression introduced in 2.1.0) + tools: crm_attribute deprecated --get-value option does not require an argument (regression introduced in 2.1.0) + tools: avoid crm_mon memory leaks when filtering by resource or node (regressions introduced in 2.0.4 and 2.0.5) + tools: exit with status 0 (not 64) for --version argument to crm_rule, crm_error, crm_diff, and crm_node (regression introduced in 2.0.4) and crm_attribute (regression introduced in 2.1.0) + tools: crm_mon should show active unmanaged resources on offline nodes without requiring -r/--inactive + tools: better crm_resource error messages for unsupported resource types + tools: crm_simulate --show-failcounts includes all relevant information + tools: crm_mon should not show inactive group members without --inactive + tools: crm_mon XML output should show members of cloned groups + libcrmcommon: correctly handle case-sensitive XML IDs - Public API changes since Pacemaker-2.1.0 + libcrmcommon: add pcmk_section_e type + libcrmcommon: add pcmk_show_opt_e type + libcrmcommon: add pcmk_pacemakerd_api_shutdown() + libpe_status: deprecate enum pe_print_options * Tue Jun 08 2021 Ken Gaillot Pacemaker-2.1.0 - Changesets: 849 - Diff: 327 files changed, 22089 insertions(+), 12633 deletions(-) - Features added since Pacemaker-2.0.5 + support for OCF Resource Agent API 1.1 standard - allow Promoted and Unpromoted role names in CIB (in addition to Master and Slave, which are deprecated), and use new role names in output, logs, and constraints created by crm_resource --ban - advertise 1.1 support to agents, and provide notify_promoted_* and notify_unpromoted_* environment variables to agents with notify actions - support "reloadable" parameter attribute and "reload-agent" action in agents that advertise 1.1 support - support 1.1 standard in ocf:pacemaker:Dummy, ocf:pacemaker:remote, and ocf:pacemaker:Stateful resource agents - add "promoted-only" (in addition to "master-only", which is deprecated) in crm_mon XML output for bans + support for noncritical resources - colocation constraints accept an "influence" attribute that determines whether dependent influences main resource's location (the default of "true" preserves the previous behavior, while "false" makes the dependent stop if it reaches its migration-threshold in failures rather than cause both resources to move to another node) - resources accept a "critical" meta-attribute that serves as default for all colocation constraints involving the resource as the dependent, as well as groups involving the resource + detail log uses millisecond-resolution timestamps when Pacemaker is built with libqb 2.0 or later + CIB: deprecate the remove-after-stop cluster property, can_fail action meta-attribute, and support for Upstart-based resources + controller: the PCMK_panic_action environment variable may be set to sync-crash or sync-reboot to attempt to synchronize local disks before crashing or rebooting, which can be helpful to record cached log messages but runs the risk of the sync hanging and leaving the host running after a critical error + tools: CIB_file="-" can be used to get the CIB from standard input + tools: crmadmin, crm_resource, crm_simulate, and crm_verify support standard --output-as/--output-to options (including XML output, intended for parsing by scripts and higher-level tools) + tools: crm_attribute accepts -p/--promotion option to operate on promotion score (replacing crm_master, which is deprecated) + tools: crm_resource accepts --promoted option (replacing --master, which is deprecated) + tools: crm_resource accepts --digests advanced option + tools: crm_simulate accepts --show-attrs and --show-failcounts options - Build process changes since Pacemaker-2.0.5 + Pacemaker requires newer versions of certain dependencies, including Python 3.2 or later (support for Python 2 has been dropped), glib 2.32.0 or later, libqb 0.17.0 or later, GnuTLS 2.12.0 or later (to enable Pacemaker Remote support), rpm 4.11.0 (if building RPMs), and a C library that provides setenv() and unsetenv() + configure: --enable-legacy-links (which is deprecated) defaults to "no", meaning that symbolic links will not be created for the Pacemaker 1 daemon names + configure: --enable-compat-2.0 prevents certain output changes (most significantly role names) to maintain compatibility with older tools, scripts, and resource agents that rely on previous output + configure: --with-resource-stickiness-default sets a resource-stickiness default in newly created CIBs + configure: --with-concurrent-fencing-default specifies default for concurrent-fencing cluster property + configure: --with-sbd-sync-default specifies default for syncing start-up with sbd + configure: --with-ocfrapath specifies resource agent directories to search + configure: --with-ocfrainstalldir specifies where to install ocf:pacemaker agents + configure: --with-gnutls="no" explicitly disables support for Pacemaker Remote and the remote-tls-port cluster property + configure: --with-acl has been removed (support for ACLs is always built) + configure: deprecated --with-pkgname, --with-pkg-name, --with-brand, --enable-ansi, and --enable-no-stack options have been removed + environment variables file (typically /etc/sysconfig/pacemaker or /etc/default/pacemaker) will be installed when "make install" is run + documentation has dependency on python3-sphinx instead of publican, and is generated beneath doc/sphinx - Fixes since Pacemaker-2.0.5 + controller: always refresh agent meta-data after start, in case agent was updated (regression introduced in 1.1.18) + tools: avoid crash when running crm_mon in daemonized mode with CGI output (regression introduced in 2.0.3) + tools: correctly treat unspecified node as all nodes instead of local node when attrd_updater --query or crm_resource --cleanup is run on a Pacemaker Remote node (regressions introduced in 1.1.14 and 1.1.17) + tools: exit with status 0 (not 64) for --version argument to crm_simulate (regression introduced in 2.0.4) and crm_resource and crmadmin (regression introduced in 2.0.5) + pacemaker-attrd: avoid race condition where transient attributes for a leaving node could be reinstated when the node rejoins, potentially causing a node that was just rebooted to exit the cluster immediately after rejoining + controller,scheduler: fix year 2038 issues affecting shutdowns, remote node fencing, last-rc-change, and ticket last-granted dates + controller: retry scheduler connection after failure, to avoid cluster stopping on a node without stopping resources (clbz#5445) + fencing: avoid pending fencing entry getting "stuck" in history if originating node was unreachable when result was received + fencing: retry getting agent meta-data if initial attempt fails + fencing: detect when devices have been removed from configuration + scheduler: constrain clone-min, clone-max, clone-node-max, promoted-max, and promoted-node-max options to non-negative values + scheduler: constrain resource priorities and node-health-base to score range + scheduler: treat invalid duration fields in time-based rules as 0, not -1 + scheduler: node attribute rule expressions with a value-source of "param" or "meta" work when rsc or rsc-pattern with an inverted match is given, as well as when rsc-pattern with a regular match is given + scheduler: node attribute rule expressions with a value-source of "param" work with a resource parameter that itself is determined by a node attribute rule expression + scheduler: avoid remote connection shutdown hanging when connection history for node hosting connection is not last in CIB status + scheduler: route monitor cancellations behind moving remote connections correctly + libcrmcommon: avoid potential integer overflow when adding seconds to times + tools: cibsecret syncs to remote nodes and guest nodes as well as cluster nodes + tools: show other available cluster information in crm_mon even if fence history is not available + tools: retry failed fencer and CIB connections in crm_mon + tools: crm_mon reports if Pacemaker is waiting for sbd at start-up + tools: respect rules when showing node attributes in crm_mon + tools: improve messages when crm_mon is run on disconnected remote node + tools: constrain node IDs to non-negative values for crm_node -N + tools: crm_node -l on restarted node works even when Corosync 2 is used without node names specified in Corosync configuration + tools: fix issues in calculation of non-sensitive resource parameter digests that made crm_simulate wrongly think configuration changed - C API changes since Pacemaker-2.0.5 + all: new PCMK_ALLOW_DEPRECATED constant controls API availability + libcrmcluster: deprecate crm_terminate_member() + libcrmcluster: deprecate crm_terminate_member_no_mainloop() + libcrmcommon: add CRMD_ACTION_RELOAD_AGENT string constant + libcrmcommon: add PCMK_OCF_MAJOR_VERSION string constant + libcrmcommon: add PCMK_OCF_MINOR_VERSION string constant + libcrmcommon: add PCMK_OCF_RUNNING_PROMOTED enum value + libcrmcommon: add PCMK_OCF_VERSION string constant + libcrmcommon: add PCMK_XE_PROMOTABLE_LEGACY string constant + libcrmcommon: add PCMK_XE_PROMOTED_MAX_LEGACY string constant + libcrmcommon: add PCMK_XE_PROMOTED_NODE_MAX_LEGACY string constant + libcrmcommon: add enum ocf_exitcode (moved from libcrmservice) + libcrmcommon: deprecate __builtin_expect() + libcrmcommon: deprecate __likely() + libcrmcommon: deprecate __unlikely() + libcrmcommon: deprecate crm_atoi() + libcrmcommon: deprecate crm_build_path() + libcrmcommon: deprecate crm_config_error global variable + libcrmcommon: deprecate crm_config_warning global variable + libcrmcommon: deprecate crm_ftoa() + libcrmcommon: deprecate crm_hash_table_size() + libcrmcommon: deprecate crm_itoa() + libcrmcommon: deprecate crm_itoa_stack() + libcrmcommon: deprecate crm_log_cli_init() + libcrmcommon: deprecate crm_parse_int() + libcrmcommon: deprecate crm_parse_ll() + libcrmcommon: deprecate crm_str_hash() + libcrmcommon: deprecate crm_str_table_dup() + libcrmcommon: deprecate crm_str_table_new() + libcrmcommon: deprecate crm_strcase_equal() + libcrmcommon: deprecate crm_strcase_hash() + libcrmcommon: deprecate crm_strcase_table_new() + libcrmcommon: deprecate crm_strip_trailing_newline() + libcrmcommon: deprecate crm_ttoa() + libcrmcommon: deprecate EOS constant + libcrmcommon: deprecate GListPtr type + libcrmcommon: deprecate g_str_hash_traditional() + libcrmcommon: deprecate MAX_IPC_DELAY constant + libcrmcommon: deprecate pcmk_format_named_time() + libcrmcommon: deprecate pcmk_format_nvpair() + libcrmcommon: deprecate pcmk_numeric_strcasecmp() + libcrmcommon: deprecate PCMK_OCF_DEGRADED_MASTER enum value + libcrmcommon: deprecate PCMK_OCF_FAILED_MASTER enum value + libcrmcommon: deprecate PCMK_OCF_RUNNING_MASTER enum value + libcrmcommon: deprecate pcmk_scan_nvpair() + libcrmcommon: deprecate XML_CIB_TAG_MASTER string constant + libcrmcommon: deprecate XML_RSC_ATTR_MASTER_MAX string constant + libcrmcommon: deprecate XML_RSC_ATTR_MASTER_NODEMAX string constant + libcrmservice: enum ocf_exitcode is obtained from libcrmcommon + libpacemaker: add pcmk_controller_status() function + libpacemaker: add pcmk_designated_controller() function + libpacemaker: add pcmk_list_nodes() function + libpacemaker: add pcmk_pacemakerd_status() function + libpacemaker: add pcmk_resource_digests() function + libpe_status: add parameter_cache member to pe_resource_t + libpe_status: add pe_order_promoted_implies_first enum value + libpe_status: add pe_rsc_params() + libpe_status: add RSC_ROLE_PROMOTED enum value + libpe_status: add RSC_ROLE_PROMOTED_LEGACY_S string constant + libpe_status: add RSC_ROLE_PROMOTED_S string constant + libpe_status: add RSC_ROLE_UNPROMOTED enum value + libpe_status: add RSC_ROLE_UNPROMOTED_LEGACY_S string constant + libpe_status: add RSC_ROLE_UNPROMOTED_S string constant + libpe_status: add priv member to pcmk_working_set_t, for Pacemaker use only + libpe_status: deprecate pe_order_implies_first_master enum value + libpe_status: deprecate pe_print_details enum value + libpe_status: deprecate pe_print_dev enum value + libpe_status: deprecate pe_print_html enum value + libpe_status: deprecate pe_print_log enum value + libpe_status: deprecate pe_print_max_details enum value + libpe_status: deprecate pe_print_ncurses enum value + libpe_status: deprecate pe_print_xml enum value + libpe_status: deprecate pe_resource_t parameters member + libpe_status: deprecate RSC_ROLE_MASTER enum value + libpe_status: deprecate RSC_ROLE_MASTER_S string constant + libpe_status: deprecate RSC_ROLE_SLAVE enum value + libpe_status: deprecate RSC_ROLE_SLAVE_S string constant + libpe_status: ignore ->parameter() resource object function's create argument * Wed Dec 02 2020 Chris Lumens Pacemaker-2.0.5 - Changesets: 534 - Diff: 286 files changed, 23133 insertions(+), 14626 deletions(-) - Features added since Pacemaker-2.0.4 + configuration: Add type="integer" to rule elements, allowing for specifying 64-bit integers and specifying double-precision floating point numbers when type="number". + daemons: Recognize new OCF agent status codes 190 (degraded) and 191 (degraded master) to be treated as success but displayed as errors. + sbd-integration: support SBD_SYNC_RESOURCE_STARTUP environment variable to better synchronize Pacemaker start-up and shutdown with SBD + scheduler: Add rule-based tests to op_defaults and rsc_defaults. + scheduler: Add on-fail=demote and no-quorum-policy=demote recovery policies for promoted resources. + tools: Add --resource= to filter crm_mon output for a resource. + tools: Add -P to crmadmin to show pacemakerd status. + tools: In cibsecret, read value to set from input (or stdin) if not specified. - Fixes for regressions introduced in Pacemaker-2.0.4 + tools: Add the node name back to bundle instances in crm_mon. + tools: get stonith_admin --list-targets working again - Fixes for regressions introduced in Pacemaker-2.0.3 + tools: Fix adding HTTP headers to crm_mon in daemon mode. + tools: Show expected score of ping attributes in crm_mon XML output - Fixes for regressions introduced in Pacemaker-2.0.1 + scheduler: require pre-/post-start notifications correctly. - Changes since Pacemaker-2.0.4 + Prevent the bypassing of ACLs by direct IPC (CVE-2020-25654) + build: Fix a build issue on Fedora s390x. + build: Fix python2 vs. python3 packaging problems on openSUSE Tumbleweed + build: Update pkgconfig files for CI testing + controller: avoid recovery delay when shutdown locks expire + controller: Log correct timeout for timed-out stonith monitor + fencer: avoid infinite loop if device is removed during operation + fencer: avoid possible use-of-NULL when parsing metadata + libfencing: add `port` or `plug` parameter according to metadata on `validate` if no `pcmk_host_argument` specified + libfencing: respect `pcmk_host_argument=none` on `validate` + scheduler: disallow on-fail=stop for stop operations + scheduler: don't schedule a dangling migration stop if one already occurred + scheduler: don't select instance to be promoted on a guest that can't run + scheduler: fix build when DEFAULT_CONCURRENT_FENCING_TRUE is set + scheduler: Remove pe_print_expanded_xml print option. + scheduler: Use pcmk_monitor_timeout as stonith start timeout + tools: Add management status to crm_mon's group output. + tools: Add "No active resources" to one case in crm_mon output. + tools: Allow tags and alerts in cibadmin --scope + tools: Avoid crm_node on Pacemaker Remote nodes failing when other executor actions are occurring. + tools: Avoid pending fence actions getting stuck in crm_mon display + tools: "Connectivity is lost" may not be displayed even if the ping communication is lost. + tools: Display stop-all-resources in crm_mon's cluster options. + tools: don't use pssh -q option in cibsecret unless supported + tools: Fix adding the http-equiv header to crm_mon in daemon mode. + tools: If a clone or group is disabled, display that in crm_mon as part of the resource's header. + tools: crm_node -l and -p now work from Pacemaker Remote nodes + tools: Don't display crm_resource error messages twice. + tools: Print inactive resources by default with crm_mon xml output. + tools: properly detect local node name in cibsecret + tools: Revert some crm_resource string-related checks on variables that aren't strings. + tools: Use bash in cibsecret + xml: Mark new crm_mon attributes as optional in schema * Mon Jun 15 2020 Klaus Wenninger Pacemaker-2.0.4 - Changesets: 515 - Diff: 269 files changed, 22560 insertions(+), 13726 deletions(-) - Features added since Pacemaker-2.0.3 + build: Add support for glib-based unit tests. + controller: add new feature 'shutdown-locks' Optionally allow a gracefully shutdown node to have the resources locked to it for a configurable time. So that it can be restarted with exactly the same resources running as before. + controller/fencing/scheduler: add new feature 'priority-fencing-delay' Optionally derive the priority of a node from the resource-priorities of the resources it is running. In a fencing-race the node with the highest priority has a certain advantage over the others as fencing requests for that node are executed with an additional delay. controlled via cluster option priority-fencing-delay (default = 0) + stonith_admin: add --delay option (default = 0) to support enforced fencing delay + tools: Add --include= and --exclude= to crm_mon. + tools: Add --node= to filter crm_mon output for a node (or tag). + tools: Allow more fine grained filtering of fence-history in crm_mon. + tools: Allow crm_rule to check some date_specs. - Fixes for regressions introduced in Pacemaker-2.0.0 + tools: ensure that getting the local node name using crm_node always works from Pacemaker Remote node command line - Changes since Pacemaker-2.0.3 + build: improve checking headers for C++ fitness + build: restore build on latest OpenSUSE + fencing: Report an error getting history in output instead of empty history + fencing: Improve parameter handling for RHCS-style fence-agents - make parameter `action` shown as not required - add `port` or `plug` parameter according to metadata - `plug` parameter shown as non-required in the metadata + controller: clear leaving node's transient attributes even if there is no DC + controller: don't ack same request twice + iso8601: Fix crm_time_parse_offset() to parse offset with plus sign. + libcrmcommon, libpe: validate interval specs correctly + libcrmcommon: Add pcmk_str_is_infinity, pcmk_str_is_minus_infinity and pcmk__unregister_formats. + libcrmcommon: Extend what pcmk__split_range can do. + libfencing: Export formatted output functions. + libpe_status: Add node list arg to output messages preventing weird behavior + potential segfaults + libpe_status: Update the maint mode message for HTML output. + fencing, tools: Fix arguments to stonith-event. + scheduler: don't incorporate dependencies' colocations multiple times + scheduler: ensure attenuated scores still have some effect + scheduler: ignore colocation constraints with 0 score + scheduler: make sure cluster-wide maintenance-mode=true overrides per-resource settings + scheduler: properly detect whether guest node is fenceable + scheduler: do not differentiate case where all the nodes have equal priority + tests: Add tests for pe_cron_range_satisfied. + tests: Add tests for the current behavior of pcmk__split_range. + tools, lib: Use standard pacemaker return codes in crm_rule. + tools: Correct stonith-event arguments in crm_mon. + tools: Fix man pages for crm_mon & crm_diff. + tools: Make crm_mon --interval understand more formats. + tools: Fix --html-title= in crm_mon. + tools: Print errors to stderr for crm_mon's legacy xml. + tools: use return codes consistently in stonith_admin + tools: Use glib for cmdline handling in crm_diff, crm_simulate & crm_error + xml: Add a new version of the tags schema. + based: populate cib_nodes when 'cibadmin -R -scope=configuration' + cibsecret: don't use pssh -q option unless supported + fencing: avoid infinite loop if device is removed during operation + fencing: avoid possible use-of-NULL when parsing metadata + fencing: Remove dangling 'pending' for completed DC fencing. (CLBZ#5401) * Mon Nov 25 2019 Ken Gaillot Pacemaker-2.0.3 - Changesets: 601 - Diff: 227 files changed, 17862 insertions(+), 10471 deletions(-) - Features added since Pacemaker-2.0.2 + controller: new 'fence-reaction' cluster option specifies whether local node should 'stop' or 'panic' if notified of own fencing + controller: more cluster properties support ISO 8601 time specifications + controller: calculate cluster recheck interval dynamically when possible + Pacemaker Remote: allow file for environment variables when used in bundle + Pacemaker Remote: allow configurable listen address and TLS priorities + tools: crm_mon now supports standard --output-as/--output-to options + tools: crm_mon HTML output supports user-defined CSS stylesheet + tools: stonith_admin supports HTML output in addition to text and XML + tools: crm_simulate supports --repeat option to repeat profiling tests + tools: new pcmk_simtimes tool compares crm_simulate profiling output + agents: SysInfo supports K, T, and P units in addition to Kb and G - Changes since Pacemaker-2.0.2 + fencer: do not block concurrent fencing actions on a device (regression since 2.0.2) + all: avoid Year 2038 issues + all: allow ISO 8601 strings of form "T