**This describes proposed configuration changes for a possible Pacemaker 3.0.0 release. Discussion should be directed to the [[ /w/clusterlabs/clusterlabs_mailing_lists/ | users mailing list]].**
These changes are only proposed and may not make it into the final release.
== The build process ==
=== Dependencies ===
In general, Pacemaker 3 will support dependency versions that are available in supported releases of major Linux distributions (usually but not always including long-term support releases). The following are specifically targeted for support:
* Debian 10 "buster" and later
* RHEL 8.0 and later
* SUSE 15.0 and later
* Ubuntu 18 "bionic" and later
The only changes are these new minimum dependency versions:
* libdbus 1.5.12
* libgnutls 2.12.0 (previously optional, this is now a required build dependency)
* libqb 1.0.1
* libxml2 2.9.2
* pkg-config 0.28 (or pkgconf)
* Python 3.6
=== configure script ===
The following configure script options are no longer supported:
* `--enable-legacy-links` //(deprecated in Pacemaker 2.1.0)//
* `--enable-compat-2.0` //(introduced in 2.1.0 explicitly for the 2.1 series only)//
* `--enable-upstart` //(deprecated in Pacemaker 2.1.0)//
* `--with-gnutls` //(GnuTLS is now required and cannot be disabled)//
* `--with-nagios` //(deprecated in Pacemaker 2.1.6)//
=== RPMs ===
* The `RPMDEST` Makefile variable may no longer be set to `toplevel`. The default of `subtree`, and explicit paths, are still supported.
* The spec file now longer supports the `--with-doc` and `--without-doc` options. Documentation will always be built.
* Pacemaker's logrotate script is now part of the pacemaker package instead of the pacemaker-cli package.
* The `--with stonithd`/`--without stonithd` spec file option, which controls support for Linux-HA fencing agents, has been renamed to `--with linuxha/--without linuxha`
== Resource agents ==
* The obsolete and deprecated **ocf:pacemaker:o2cb** resource agent (which manages the ocf_controld.pcmk daemon for OCFS2 file systems) has been dropped.
== Configuration Information Base (CIB) XML changes ==
**XML syntax in the CIB must now be correctly formed.** Previously, some simple XML syntax errors would be ignored. Upgrades will not succeed if the XML syntax is invalid, so ensure it is valid before upgrading any node in the cluster.
**Schema validation is now required for the CIB.** The `validate-with` attribute of the `cib` XML element must be specified, and may no longer be set to the deprecated values `none`, `pacemaker-0.6`, `transitional-0.6`, `pacemaker-0.7`, `pacemaker-1.1`, or `pacemaker-next`. Upgrades will not succeed unless the CIB has a supported value for `validate-with` //before// the upgrade, so ensure one is set before upgrading any node in the cluster.
The following will be automatically and silently dropped or converted to current syntax when used in existing configurations, but disallowed in new ones (as well as existing ones after running `cibadmin --upgrade`).
* The schema will have stricter error checking.
** Clones using non-OCF resource agents and the `globally-unique` meta-attribute set to `true` will be considered an error and ignored (currently, a warning is logged but the resource is allowed)
** Invalid topology levels will be disallowed in the CIB rather than wait until they are rejected by the fencer (valid levels are 1 through 9)
** The value of an `acl_target` element's `id` attribute must be of the XML ID type (noncompliant names will be given an auto-generated ID and moved to the `name` attribute)
** Empty groups will be ignored (currently they can have some effect in constraints)
* Support for these deprecated (and mostly undocumented) features will be dropped.
** `nagios` class resources
** `upstart` class resources
** bundles using `rkt` to launch containers
** `master` resources (they will be converted to `clone` elements with the `promotable` meta-attribute set to `true`)
** `remove-after-stop` cluster option
** `moon` in `date_spec` elements in rules
** Nodes with `type` set to `ping`
** `ordering` attribute of resource sets in colocation constraints
** `can-fail` (or `can_fail`) resource meta-attribute (if possible, it will converted to `on-fail` operation meta-attributes set to `ignore`)
** `restart-type` resource meta-attribute
** `role-after-failure` resource meta-attribute
** `score` in an ordering constraint (if possible, a value of 0 will be transformed to a `kind` of `optional`)
** `stonith-action` cluster option set to `poweroff` (it will be transformed to `off`)
** `collocated` and `ordered` group options (if possible, a value of `false` will be transformed to resource sets in a colocation or ordering constraint instead)
** `lifetime` elements inside a constraint (any rules they contain will be left inside the constraint directly)
* Rules will now be more strictly interpreted, with the following options causing an error rather than being silently ignored where they aren't relevant.
** `op_expression` in a rule anywhere other than `op_defaults`
** `rsc_expression` in a rule anywhere other than `rsc_defaults` or `op_defaults`
** `score` or `score-attribute` in a rule anywhere other than a location constraint
** `value-source` in a rule `expression` anywhere other than a location constraint
** `monthdays`, `weekdays`, `weekyears`, or `moon` in a `duration`
** `yearsdays` anywhere (`yeardays` is allowed only in a `time_spec`)
** An invalid `role` name in any `rule`