Proposed Pacemaker API Changes

'''These are proposed changes for Pacemaker 2.1.0, which is in the early stages of planning. Which changes will be included in the release and their final details remain open to change.'''

This page describes backward-incompatible changes in Pacemaker's public C API made between the Pacemaker 2.0 and 2.1 release series.

All applications linking against the Pacemaker libraries will need to be recompiled. It is unlikely that any user code will be affected by these changes.

For some of these changes, applications can continue to use the old symbols by including . 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 (3.0).

Library consolidation
One of the main goals of 2.1 is to reduce the number of pacemaker libraries. Most likely, libcib, libstonithd, liblrmd, libpe_status, libpe_rules, and libcrmservice will all become deprecated and consist solely of old function names as simple wrappers calling the new equivalents in either libcrmcommon or libpacemaker.

libcrmcluster will remain separate, but will likely be renamed libpacemaker-cluster and explicitly considered internal API only.

libcrmcommon might remain separate, or be folded into libpacemaker.

Building the deprecated libraries will likely be controlled by a new --enable-legacy-libs configure option, which will default to enabled for now, and change to disabled in a future release.

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