Pad positional args in rules up to number required by schema.
The eliminate_column_references methods are slightly extended
to also pad positional arguments even when no column refs
are present.
The change makes it so that adding new data columns (to the right
of existing ones) in datasource drivers do not break existing
policy rules.
For example,
nova:flavors(x) is automatically expanded to something like
nova:flavors(x, _x1, _x2, _x3), just like if the input was
nova:flavors(id=x). The behavior is consistent with that of
optional parameters Python and C++.
We discussed on IRC how to keep backward compatibility with existing
policy rules when we add new information to data source drivers.
There was some agreement that versioning the schema was the most
complete solution, as it allows for the removal of tables/columns as
well as additions.
But even with the adoption explicit versioning, the allowance for too
few positional arguments is still a great convenience for deployers
because it makes the adding of data columns a backward compatible
version change rather than a backward incompatible version change.
That is, the deployer can take advantage of the new data columns in
new policy, without having to rewrite all the existing policy.
Related-Bug: 1674537
Change-Id: Iac817f0a5c6dbb8c94804097d84f9541e1f22b1e