Hi List I'm seeing some confusing behaviour in 3.0.4 that wasn't occurring in 3.0.3. Consider the following 2 bundles, designed to populate 2 independent files with 2 fields of the form <name>=<value> :
(note: target files are blanked before each test run.) ============ bundle agent write_fileA { vars: "value_map[keyA][0]" string => "alpha"; "value_map[keyA][1]" string => "beta"; "fileA[fieldA]" string => "$(value_map[keyA][0])"; "fileA[fieldB]" string => "$(value_map[keyA][1])"; files: "/tmp/fileA" edit_defaults => empty, edit_line => set_variable_values("write_fileA.fileA"); } ============ bundle agent write_fileB { vars: "value_map[keyA][0]" string => "charlie"; "value_map[keyA][1]" string => "delta"; "fileB[fieldA]" string => "$(value_map[keyA][0])"; "fileB[fieldB]" string => "$(value_map[keyA][1])"; files: "/tmp/fileB" edit_defaults => empty, edit_line => set_variable_values("write_fileB.fileB"); } ============ In CF3.0.3 when I execute the above bundles I get 2 files with the correct, desired contents: [r...@host bin]# cat /tmp/fileA fieldA=alpha fieldB=beta [r...@host bin]# cat /tmp/fileB fieldA=charlie fieldB=delta [r...@host bin]# If I add an additional field to the fileA bundle, such that the array looks like this: "fileA[fieldA]" string => "$(value_map[keyA][0])"; "fileA[fieldB]" string => "$(value_map[keyA][1])"; "fileA[fieldC]" string => "$(value_map[keyA][1])"; I see the correct file contents: [r...@host bin]# cat /tmp/fileB fieldA=charlie fieldB=delta [r...@host bin]# cat /tmp/fileA fieldA=alpha fieldB=beta fieldC=beta [r...@host bin]# At this point I substitute 3.0.3 binaries for 3.0.4 binaries and re-run the first test (2 fields defined per bundle). Post execution, I see the following correct output: [r...@host bin]# cat /tmp/fileB fieldA=charlie fieldB=delta [r...@host bin]# cat /tmp/fileA fieldA=alpha fieldB=beta [r...@host bin]# If I now add a 3rd field to the fileA bundle (as before), I get the following output: [r...@host bin]# cat /tmp/fileA fieldA=alpha fieldB=beta fieldC=beta [r...@host bin]# cat /tmp/fileB fieldA=charlie fieldB=delta fieldC=$(write_fileB.fileB[fieldC]) Conversely, if I add the 3rd field definition to fileB only, I see the following file contents: [r...@host bin]# cat /tmp/fileA fieldA=alpha fieldB=beta [r...@host bin]# cat /tmp/fileB fieldA=charlie fieldB=delta [r...@host bin]# ...the 3rd field definition is missing entirely. Finally, if I add the 3rd field definition to both bundles, I get the expected output: [r...@host bin]# cat /tmp/fileA fieldA=alpha fieldB=beta fieldC=beta [r...@host bin]# cat /tmp/fileB fieldA=charlie fieldB=delta fieldC=delta [r...@host bin]# Is this behaviour the result of a bugfix in 3.0.4 and my approach was wrong in the first place? I rm -rf'd /var/cfengine directory and performed a fresh install of 3.0.4 to confirm it wasn't residual incompatibility between 3.0.4 binaries in a 3.0.3 environment, but the behavior persists. I also tried adjusting the variable names to remove any possible ambiguity or naming conflicts, but that didn't help either. ...or is this all just because it's 1am on a weeknight? ;) Regards Steve _______________________________________________ Help-cfengine mailing list Help-cfengine@cfengine.org https://cfengine.org/mailman/listinfo/help-cfengine