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
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to