HomeClusterLabs Projects

XML: schemas.c: shortcut upgrade transformation when not needed

Description

XML: schemas.c: shortcut upgrade transformation when not needed

When the CIB is readily compatible across the major version boundary
(which is where currently the upgrade transformation are employed),
it would be wasteful to invoke the process yielding no gain
(which lies only in making the document conformant to the new
schema version) -- pacemaker manages @validate-with on its own,
independly of what the upgrade XSLT transformation sets (it does
that, too, however only to satisfy it's standalone usage scenario).

Moreover, it's anticipated that prior to running upgrade
transformations, the configuration will get normalized so that it
contains no id-ref based "syntactic sugar" (or shortcuts, if you
want), so this change also prepares for preserving these unless
the transformation is assuredly needed. Note that work-in-progress
upgrade-2.10.xsl already silently relies on such normalization, and
relaxing that, i.e., making it work with arbitrary CIB 2.x valid
document is unlikely because it would impose a lot of new complexity
to an already complex stylesheet (not a theoretical conclusion,
some step were already attempted in that direction).

On the other hand, the whole arrangement will remain under rather
strict control regardless -- elaborating on the idea stated in the
commit message for 14adc58d4, the boundary, "transitional" version
of the schema (here 3.0) will serve as a barrier keenly enforcing the
deep upgrade process with the lower-versioned input, simply for being
more picky about what is allowed than any other subsequent schema
version in the same major line (here 3.1+).

Note that, retrospectively, the upgrade transformation will indeed
be enforced iff the old-style ACLs were present when going from
1.X to 2.Y version of CIB schema (but not otherwise). Speaking
of that, in order not to introduce new validation error messages
in "acl" test set in cli-test suite and in general -- only the result
of this "tryout" validation is what matters. Also the expected
results for "validation" test set of that suite required some
slight adjustment to reflect the new reality of not performing
the upgrade any more in some cases.

Details

Provenance
Jan Pokorný <jpokorny@redhat.com>Authored on May 30 2018, 8:32 AM
Parents
rPb502c3c8a9fd: Refactor: schemas.c: remove superfluous branching (after 6d1fbc7a7)
Branches
Unknown
Tags
Unknown

Event Timeline