A new 'deep_compare' parameter gets added to resources and bundles
(defaulting to false). The rationale is the following:
By default pacemaker does not update resources and will keep doing so.
This happens for a number of mostly historical reasons (old non HA-NG
OSP releases had way too many relationships between pacemaker resources
and puppet-triggered restart would cause havoc on the overcloud, also
lack of the code for doing this in puppet-pacemaker was a factor).
When set to true additional code comparison logic will be triggered and
we will actually update pacemaker resources. We do so by modifying an
offline CIB with the manifests resources and then running crm_simulate
on it in order to determine if pacemaker would trigger a restart of the
resource if the CIB was to be pushed for real on to the cluster. We
currently cannot use crm_diff due to a bug where it would trigger too
many false positives. Using crm_simulate has one small limitation.
Namely, changes in resource operation timeouts normally do not trigger a
resource restart and hence they won't update a resource. Also note that
this is currently only supported for resources and bundles (not
constraints nor stonith resources).
Some thought has been put into whether we should be having the
'deep_compare' parameter a global pacemaker::corosync one or a
per-resource parameter. I chose the latter for the following reasons:
- It might be useful to let the operator decide for which resources the
deep comparison is enabled (think tripleo upgrades where we want to
make sure only certain resources are upgraded)
- It makes it much clearer which resources support this deeper
comparison feature.
Change-Id: I11b5f9097694b88431f21e1e806bc1823386528f