Bug #3716
closedParametrization of directive with rule parameter must be the whole value
Description
In #3689, we change the behavior of node id parametrization so that they can be in the middle of other value. We didn't change the behavior of rule parametrization, so here it is.
Updated by Nicolas PERRON over 11 years ago
- Target version changed from 2.4.7 to 2.4.8
Updated by Nicolas PERRON about 11 years ago
- Target version changed from 2.4.8 to 2.4.9
Updated by Nicolas PERRON about 11 years ago
- Target version changed from 2.4.9 to 2.4.10
Updated by Nicolas PERRON about 11 years ago
- Target version changed from 2.4.10 to 2.4.11
Updated by Nicolas PERRON about 11 years ago
- Status changed from New to Discussion
- Assignee set to François ARMAND
- Target version changed from 2.4.11 to 2.4.12
I don't understand the issue. Could you explain, François ?
Updated by François ARMAND about 11 years ago
See #3689 for details:
The rudder variables ${rudder.(.*).(.*)} only work when the complete value of the variable is this rudder variable
It is not possible to do "datacenter-${rudder.param.datacenter1}", which is a bit of a shame
It's true for all variables:node variable (2.4)
rule variable (2.4)
param variable (2.7)
[...]
Well, I believe there is two completly different topic here:
- parameter and node parametrization (ie: ${rudder.param.XXX} and ${rudder.node.XXXX}) : parametrization binding does not change the cardinality of parametrized variable (ie: if a variable has 3 values with one containing ${rudder.node.id}, then after binding, it still has 3 values, one changed)
- rule parametrization: binding can change (and actually do change, has we are using it almost exclusively to get the list of hostname on which is applied the "hasPolicyServer" rule). That case is hard (what about a variable containing two such parametrization ? How do you specify if you want the full combination space (ie [a,b] & [1,2] => [ [a,1], [a,2], [b,1], [b.2]]), or a sequential walk ([a,1], [b,2]). On which order is the walk is that case ? Etc etc).So, I think we don't want to expose the second case to user for now, and perhaps we have to think back about how to manage it - I'm not really sur it's "paramtrization" has in "replace that ${} by a value", but more a kind of magic API call that give back a SET of values, and the number of such API call is clearly defined. On the other hand, if we want to expose inventories parameter in ${}, we will have to manage multivalued parametrization.
All in all, implementing the first case will be mostly trivial in 2.7 (not before, because of the refactoring work in deployment service done at that point). The second point need more thinking.
The "second case" above is the one we are talking about in that ticket.
Updated by Nicolas PERRON about 11 years ago
- Target version changed from 2.4.12 to 2.4.13
Updated by Vincent MEMBRÉ almost 11 years ago
- Target version changed from 2.4.13 to 2.6.11
Since 2.4 is not maintained anymore, retargeting to branch 2.6
Updated by Vincent MEMBRÉ over 10 years ago
- Target version changed from 2.6.11 to 2.6.12
Updated by Vincent MEMBRÉ over 10 years ago
- Target version changed from 2.6.12 to 2.6.13
Updated by Vincent MEMBRÉ over 10 years ago
- Target version changed from 2.6.13 to 2.6.14
Updated by Jonathan CLARKE over 10 years ago
- Target version changed from 2.6.14 to 2.6.16
Updated by Jonathan CLARKE over 10 years ago
- Target version changed from 2.6.16 to 2.6.17
Updated by Nicolas PERRON over 10 years ago
- Target version changed from 2.6.17 to 2.6.18
Updated by Matthieu CERDA about 10 years ago
- Target version changed from 2.6.18 to 2.6.19
Updated by Vincent MEMBRÉ about 10 years ago
- Target version changed from 2.6.19 to 2.6.20
Updated by François ARMAND almost 10 years ago
- Status changed from Discussion to Rejected
- Target version changed from 2.6.20 to 2.10.10
Rule parametrization was an obscure, undocumented feature that we get ride of in 2.10, so I'm gladly rejecting that one.