9f52ebbf68
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 |
||
---|---|---|
.. | ||
__init__.py | ||
test_builtin.py | ||
test_compiler.py | ||
test_factset.py | ||
test_materialized.py | ||
test_nonrecur.py | ||
test_ordered_set.py | ||
test_ruleset.py | ||
test_unify.py | ||
test_utility.py |