Architecture #4585
closedRemove Rule-dependant parameters like ${rudder.common.target.nodeid}
Description
We have a mostly unknown and unused feature in the parameter expansion allowing to refer a rule ID and then some of its property as a parameter.
That feature was only used for the common system technique, to allow to use technique section and variable to be used to build the list of children node id of a policy server. But we didn't had all the needed information to be able to implement relay server, and so we chose to use a system variable.
Moreover, the feature is quite complex:
- from an user point of view, because it breaks the natural ordering of Rudder configuration object between rules, groups and directives. In particular, when using it, it's quite easy to introduce cycle leading to unsoundness or to completly unwanted side-effects when modifying something that seems complettly independant, but has an hidden dependency
- from a code point of wiew, because it makes impossible to build static dependency graph between directives and rules, and so forbid a whole class of optimization in the promise generation process (and of course, the code to support that feature is quite hairy and impose in itself both a maintenance penalty for dev and a processing time penalty for users).
- from an evolution point of view, it makes any kind of autorization scheme almost impossible to build efficiently (or at all).
So, now that #4573 is merged and no technique use that feature anymore, we should also remove that "feature".
Remain the question of the removing timeframe. We should deprecate it for one revision before removing it, and so only mark it "deprecated" in 2.10, even if I'm pretty sure that nobody use that feature (even the available documentation at http://www.rudder-project.org/foswiki/Development/ContextedVariables is not correct about it...)
Updated by François ARMAND over 10 years ago
- Description updated (diff)
We will have to be very careful of the use of that notation directly in some system vars code. As of 2.10, there seems to have some strange things like that in SystemVariableServiceImpl (see: https://github.com/Normation/rudder/blob/6cc235bb9d668b8d78e96b2696150e4d87f86cf8/rudder-core/src/main/scala/com/normation/rudder/services/policies/SystemVariableService.scala#L135)
Updated by Vincent MEMBRÉ over 10 years ago
- Target version changed from 2.10.0~beta1 to 2.10.0
Updated by Nicolas CHARLES over 10 years ago
indeed, we will need to change this. fortunately, with the allNodeInfos, we already have everything handy, and we could drop the target selector
Updated by Vincent MEMBRÉ over 10 years ago
- Target version changed from 2.10.0 to 2.11.0~beta1
Updated by François ARMAND over 10 years ago
- Status changed from New to Rejected
Duplicated by #4778