Page MenuHomeClusterLabs Projects

Deprecate public API access to most of libcrmcluster
Open, HighPublic

Assigned To
None
Authored By
kgaillot
Wed, Mar 27, 1:15 PM
Tags
  • Restricted Project
  • Restricted Project
  • Restricted Project
Referenced Files
None
Subscribers

Description

For 2.1.8 (this task), we should deprecate (via doxygen comments) all current libcrmcluster public APIs (in include/crm/cluster.h), except the following APIs that need special handling:

  • enum cluster_type_e: deprecate this name and create an equivalent enum pcmk_cluster_type (the enum value names are fine and do not need to be deprecated)
  • Make crm_cluster_t a deprecated type alias for a new name pcmk_cluster_t
    • Deprecate direct access to all members
    • Create new public API functions to set destroy() (note: the destroy function is passed a void pointer to the pcmk_cluster_t as its argument) and cpg.cpg_confchg_fn
  • Make get_cluster_type(), name_for_cluster_type(), and crm_cluster_connect() deprecated wrappers for new public API equivalents pcmk_cluster_type(), pcmk_cluster_type_text(), and pcmk_cluster_connect()
  • Keep pcmk_cluster_new() and pcmk_cluster_free() public (do not deprecate)

For 3.0.0 (T793), drop any deprecated APIs not used internally except the ones handled specially above, and make the remaining deprecated APIs internal. For pcmk_cluster_t, we can replace all deprecated struct members except destroy() and cpg with a void *private member that can be used internally for a new internal struct containing the deprecated members. (We may want to re-expose certain APIs after a redesign, but that can wait.)

SBD will need to be updated (T794), but Pacemaker and SBD should be able to build together regardless of their versions.

Event Timeline

kgaillot created this task.
kgaillot created this object with edit policy "Restricted Project (Project)".
kgaillot moved this task from Restricted Project Column to Restricted Project Column on the Restricted Project board.
kgaillot added a parent task: Restricted Maniphest Task.Wed, Mar 27, 1:20 PM
kgaillot renamed this task from Deprecate and drop public API access to most of libcrmcluster to Deprecate public API access to most of libcrmcluster.Wed, Mar 27, 5:44 PM
kgaillot updated the task description. (Show Details)
kgaillot edited projects, added Restricted Project; removed Restricted Project, Restricted Project, Restricted Project.