Hello,
Iterations do not behave as expected for vars sections, in my opinion
at least, because vars section seems to be evaluated only once.
- The manual
cf3 Reference Manual explains (2. A simple crash course in concepts /
2.8 Normal ordering) :
"Within a bundle, the promise types are executed in a round-robin
fashion [...]. The actual sequence continues for up to three
iterations of the following:
vars
classes
interfaces
processes
storage
packages
commands
methods
files
reports"
- The test :
In the example below, I observe that vars promises are executed only once.
The promise "varnewclass", that depends on a user-defined class
evaluated in the same bundle, will not be held :
<code>
body common control
{
bundlesequence => { "test" };
}
bundle agent test
{
vars:
any::
"varany" string => "abc";
newclass::
"varnewclass" string => "def";
classes:
any::
"newclass" expression => strcmp("$(varany)", "abc");
reports:
newclass::
"newclass defined, varnewclass: $(varnewclass)";
}
</code>
The result is :
# cf-agent -Kf ./test-converge.cf
R: newclass defined, varnewclass: $(varnewclass)
The verbose option shows that only classes and reports sections are
iterated, not vars. Extract :
cf3 vars in bundle test (1)
cf3 classes in bundle test (1)
cf3 reports in bundle test (1)
cf3 classes in bundle test (2)
cf3 reports in bundle test (2)
cf3 classes in bundle test (3)
cf3 reports in bundle test (3)
>From my point of view, this tends to break the declarative approach in bundles.
Any convergent, or divergent, opinion among other users ?
Frederic Le Foll
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine