Proposed Pacemaker API Changes

These are proposed Pacemaker changes that are significant enough for a major or minor version bump (2.x or 3.0). They are subject to change and discussion, and could be rejected.

These are proposed backward-compatible changes to Pacemaker's public C API.

All applications linking against the Pacemaker libraries would need to be recompiled if any of these changes were implemented.

For some of these changes, applications can continue to use the old symbols by including <crm/compatibility.h>. However, that should be used only to allow a gradual transition to using the newer names. The old symbols will be removed from compatibility.h at the next major version.

Library changes

libcrmcluster will likely be renamed libpacemaker-cluster and explicitly considered internal API only.

Removed with no replacement

Preprocessor symbols
XML_RSC_OP_LAST_RUN
Library functions
create_hello_message()
enums
pe_restart
enum values and global variables
pe_order_stonith_stop
pe_link_dup
pe_print_dev
cib_inhibit_bcast
Structure members
pe_working_set_t:stonith_timeout and max_valid_nodes

Search-and-replace changes

Legacy usage Current usage
deprecated functions in rules.h new equivalents
action_t pe_action_t
action_wrapper_t pe_action_wrapper_t
node_t pe_node_t
resource_t pe_resource_t
action_t pe_action_t
tag_t pe_tag_t
ticket_t pe_ticket_t
no_quorum_policy_t enum no_quorum_policy
do_crm_log_always() appropriate level-specific logging function (crm_err(), crm_warn(), etc.)
crm_signal(sig, dispatch) crm_signal_handler(sig, dispatch) != SIG_ERR
crm_get_interval() crm_parse_interval_spec()
crm_provider_required() equivalent call to pcmk_get_ra_caps()
get_stonith_provider(agent, provider) stonith_namespace2text(stonith_get_namespace(agent, provider)
INFINITY CRM_SCORE_INFINITY
INFINITY_S CRM_INFINITY_S
MINUS_INFINITY_S CRM_MINUS_INFINITY_S

Changes in function interfaces

  • "log level" arguments should be uint8_t in various functions that take it
  • unused sort argument to calculate_xml_versioned_digest() has been removed

Changes in structs

  • lrmd_event_data_t t_run etc. should be time_t
  • pe_node_shared_s gboolean arguments should be replaced with a single bitmask argument
  • pe_action_wrapper_s:type is now uint32_t order_flags
  • pe_resource_s restart_type, is_remote_node, and exclusive_discover members have been replaced with bits in the flags member