Stable class identifier
Class outcomes are based on a class prefix. Currently this class prefix is based on a class parameter.
When this parameter changes, the outcome name change, which means we have to modify all conditions based on it.
Reports are based on the same class prefix and the method name.
When we call twice the same methods with the same parameter, the reports will be done only once.
When we call twice a method with a variable, Rudder will be unable to distinguish between both reports.
The solution to these problems is to have a new identifier. It will be based on the promiser stack.
This promiser stack is currently only a patch https://github.com/cfengine/core/pull/2301 but has a chance to make it to the next cfengine version.
We will keep a compatibility code as long as it is needed.
This issues tracks all the steps needed to implement this.
Updated by Alexis Mousset about 4 years ago
The promiser stack solution will not be implemented, we will instead generate unique IDs like for Rudder built-in directives, it is easier to use, maintain and debug.
We can keep this issue open, as the goal will still be to have stable classes.