About well know issue concerned to isnt cleaned variables from upper bundle again

29 views
Skip to first unread message

Igor Goncharenko

unread,
Dec 29, 2016, 10:50:48 AM12/29/16
to help-cfengine
Hi!

This is one more example about change behavior in preevaluate stage(compared versions 3.7 and 3.10):

With this code:

unit_test_merged.cf:
#####################################
body common control

{
bundlesequence  => { "test_merged"  };
}

bundle agent test_merged
{
vars:

"a" string => "string a";
"b" string => "string b";

"vars1[a]" string => "$(a)";
"vars1[b]" string => "$(b)";

methods:
"run_low_test_merged" usebundle => test_merged_low;

}

bundle agent test_merged_low
{
vars:
"c" string => "string c";
"vars1[c]" string => "$(c)";

"merged_data_vars" data => mergedata('{ "vars1": vars1 }');
"merged_data_vars_str" string => storejson(merged_data_vars);

reports:
"$(this.bundle) : merged_data_vars_str : $(merged_data_vars_str)";

}

---
I see in 3.7.3 (expected behavior):

[root@]# cf-agent -I -K -f unit_test_merged.cf
R: test_merged_low : merged_data_vars_str : {
  "vars1": {
    "c": "string c"
  }
}

In 3.10 release:
[root@]$ cf-agent -I -K -f unit_test_merged.cf
R: test_merged_low : merged_data_vars_str : {
  "vars1": {
    "a": "string a",
    "b": "string b",
    "c": "string c"
  }
}

So, we can see "foreign" variables vars1[a] and vars1[b] from upper bundle.

This is a piece of debug log:
verbose: ----------------------------------------------------------------
 verbose:  Loading policy
 verbose: ----------------------------------------------------------------
   debug: Hashed policy file /var/cfengine/inputs/unit_test_merged.cf to {checksum}MD5=a792a4d12dec7bfb510809808f3dc7f3
   debug: Loading policy file /var/cfengine/inputs/unit_test_merged.cf
 verbose: BEGIN parsing file: /var/cfengine/inputs/unit_test_merged.cf
 verbose: END   parsing file: /var/cfengine/inputs/unit_test_merged.cf
   debug: Resolving classes and variables in 'bundle agent test_merged'

{skip}

   debug: DeRefCopyPromise(): promiser:'merged_data_vars_str'
   debug: DeRefCopyPromise():     copying constraint: 'string'
   debug: Evaluating function: storejson("merged_data_vars")
   debug: storejson: from data container merged_data_vars, got JSON data '{
  "vars1": {
    "a": "string a",
    "b": "string b",
    "c": "string c"
  }
}'
   debug: Evaluating vars promise: merged_data_vars_str
   debug: Initiate control variable convergence for scope 'control_common'
 verbose: Running full policy integrity checks
 verbose: ----------------------------------------------------------------


Can we hope for fixing it sometime in future?

---
Igor

Nick Anderson

unread,
Dec 29, 2016, 1:57:35 PM12/29/16
to Igor Goncharenko, help-cfengine

Igor Goncharenko writes:

> Hi!
>
> This is one more example about change behavior in preevaluate
> stage(compared versions 3.7 and 3.10):
>
> With this code:
>

> unittestmerged.cf:
> #####################################
> body common control
>
> {
> bundlesequence => { "testmerged" };
> }
>
> bundle agent testmerged


> {
> vars:
>
> "a" string => "string a";
> "b" string => "string b";
>

> "vars1[a]" string => "latex22442Aho_20a709a7292fe566963bb27a64cf5564bbd8415f.png(b)";
>
> methods:
> "runlowtestmerged" usebundle => testmergedlow;
>
> }
>
> bundle agent testmergedlow


> {
> vars:
> "c" string => "string c";

> "vars1[c]" string => "latex22442a10_e207896b097a7075c54d56a69be4f0ece47f75d6.png(this.bundle) : mergeddatavarsstr : latex22442ZJK_d48ccd2c05dec047b5f28943fcb1ef73a391282d.png cf-agent -I -K -f unittestmerged.cf
> R: testmergedlow : mergeddatavarsstr : {


> "vars1": {
> "a": "string a",
> "b": "string b",
> "c": "string c"
> }
> }

Is there an issue open for this already? If not can you please open one.
It's also very useful if you include an acceptance test with the report.


Nick Anderson
Doer of things, CFEngine

Igor Goncharenko

unread,
Dec 30, 2016, 3:22:37 AM12/30/16
to help-cfengine, igor.gon...@gmail.com

Ticket CFE-2551 opened.
Reply all
Reply to author
Forward
0 new messages