**This describes proposed configuration changes for a possible Pacemaker 3.0.0 release. Discussion should be directed to the [[Mailing lists|users mailing list]].**
These changes are only proposed and may not make it into the final release.
== The build process ==
=== Dependencies ===
The intent would be to support dependency versions that are available in supported releases of major Linux distributions (ideally but not always including long-term support), specifically including:
* Debian 10 "buster" and later
* RHEL 8.0 and later
* SUSE 15.0 and later
* Ubuntu 18 "bionic" and later
The only expected changes would be these new minimum dependency versions:
* automake 1.14
* gettext 0.19.6
* libdbus 1.5.12
* libxml2 2.9.2
* pkg-config 0.28 (or pkgconf)
* Python 3.5
=== configure script ===
**Drop support** for the following options:
* `--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-nagios` //(deprecated in Pacemaker 2.1.6)//
=== RPMs ===
* Drop support for setting the `RPMDEST` Makefile variable to `toplevel` (the default of `subtree` and explicit paths will still be supported)
* Drop support for the `--with-doc` and `--without-doc` spec file options (documentation will always be built)
* The `--with-stonithd` and `--without-stonithd` spec file option will be renamed to something more descriptive (it enables support for Linux-HA fencing agents)
== Configuration Information Base (CIB) XML changes ==
XML syntax will now be strictly interpreted. Previously, some simple XML syntax errors would be ignored.
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)
* Drop support for deprecated (and mostly undocumented) features:
** `nagios` class resources
** `upstart` class resources
** `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
** The `0.6`, `0.7`, and `pacemaker-next` CIB schemas (used as the value of the `validate-with` CIB property)
** 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`