Forum: CFEngine Help
Subject: Re: About "new" templates correct usage or limitations
Author: th
Link to topic: https://cfengine.com/forum/read.php?3,26723,26814#msg-26814
th Wrote:
-------------------------------------------------------
> One more thing I'm noticing :
>
> - edit_template seems to start emptying the file,
> so execution time is the same for each run, again
> quite too long for big files (template below is relatively small for the sake
> of the example) since it checks for
> duplicate lines
>
> - expand_template is quite faster if the file does
> not exist, but if it does, it checks for already
> inserted lines, which can make subsequent runs
> quite long as well
>
> With the a template file such as :
>
>
> # wc -l test.tmpl
> 515 test.tmpl
>
> # cat test.tmpl
>
> This is the test template line number 1
>
>
>
>
> This is the test template line number 2
>
>
> # Comment
> # Comment
> # Comment
>
> This is the test template line number 3
> This is the test template line number 4
>
> VAR1 = $(test_tmpl.var1)
> This is the test template line number 5
> This is the test template line number 6
>
> VAR2 = $(test_tmpl.var2)
>
> This is the test template line number 7
> [...]
> This is the test template line number 500
>
>
> 1. Using edit_template
>
>
> body common control
> {
> bundlesequence => { "test_tmpl" };
> inputs => { "cfengine_stdlib.cf" } ;
>
> }
>
> bundle agent test_tmpl
> {
>
> vars:
>
> "dir" string => "/root/TEMPLATES" ;
> "test_tmpl" string => "test.tmpl" ;
> "test" string => "test" ;
>
> "var1" string => "VALUE1" ;
> "var2" string => "VALUE2" ;
>
>
>
> files:
>
> "$(dir)/$(test)"
>
> edit_template => "$(dir)/$(test_tmpl)",
> create => "true";
> }
>
>
> 1.a) first run, starting with a non-existent file
> :
>
>
> # ls -l test
> ls: cannot access test: No such file or directory
>
> # time cf-agent -K -f ./test-templates.cf
>
> real 0m0.193s
> user 0m0.183s
> sys 0m0.011s
>
>
> 1.b) second run :
>
>
> # ls -l test
> -rw------- 1 root root 20931 Jul 31 18:51 test
>
> # time cf-agent -K -f ./test-templates.cf
>
> real 0m0.192s
> user 0m0.179s
> sys 0m0.015s
>
>
> 2. Using expand_template
>
>
> # cat test-templates.cf
> body common control
> {
> bundlesequence => { "test_tmpl" };
> inputs => { "cfengine_stdlib.cf" } ;
>
> }
>
> bundle agent test_tmpl
> {
>
> vars:
>
> "dir" string => "/root/TEMPLATES" ;
> "test_tmpl" string => "test.tmpl" ;
> "test" string => "test" ;
>
> "var1" string => "VALUE1" ;
> "var2" string => "VALUE2" ;
>
>
>
> files:
>
> "$(dir)/$(test)"
>
> edit_line =>
> expand_template("$(dir)/$(test_tmpl)"),
> create => "true";
> }
>
>
>
> 2.a) first run, starting with an empty file
>
>
> # ls -l test
> ls: cannot access test: No such file or directory
>
> # time cf-agent -K -f ./test-templates.cf
>
> real 0m0.045s
> user 0m0.031s
> sys 0m0.014s
>
>
> 2.b) second run
>
>
> # ls -l test
> -rw------- 1 root root 20960 Jul 31 18:58 test
>
> # time cf-agent -K -f ./test-templates.cf
>
> real 0m0.094s
> user 0m0.083s
> sys 0m0.009s
>
>
>
> So, I'm sorry but I still don't quite understand
> what is the best way to promise a whole, possibly
> large file (~3000 lines like a user base "dump" for instance)
>
> Seems to me that either edit_template or
> expand_template could be too long for "large"
> files and using edit_lines with iteration over the
> content of an array would require building
> manually a huge array (even if it can then take
> advantage of the auto-looping feature)...
>
> Thanks for your patience...
>
> --
> TH
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine