On 04/13/2012 10:16 AM, Bas van der Vlies wrote:
I am using the new template functionality in 3.3.0 and using a default set of variables and can override them. But my set of variables are list and strings. For strings it is easy but what about lists?Here is an example of what i am trying to accomplish. cfg[ldap_servers] is a slist and want to override the default value. In my real world i have more slists variables. {{{ body common control { bundlesequence => { "test" }; inputs => { "cfengine_stdlib.cf" }; } bundle agent template(params) { vars: any:: # An array of configuration parameters used in template files # "cfg[ldap_servers]" slist => { "cua.irc.sara.nl", "ldap.cua.sara.nl" }, policy => "overridable"; "cfg[ldap_base]" string => "dc=hpcv,dc=sara,dc=nl", policy => "overridable"; "cfg[ldap_user]" string => "ou=Users,dc=hpcv,dc=sara,dc=nl"; "cfg[ldap_group]" string => "ou=Groups,dc=hpcv,dc=sara,dc=nl"; "cfg[ldap_netgroup]" string => "ou-Netgroups,dc=hpcv,dc=sara,dc=nl"; "cfg[cacert_file]" string => "/etc/ssl/certs/ca-certificates.crt"; # Copy configuration parameters passed, into a local array "param_keys" slist => getindices("$(params)"); "cfg[$(param_keys)]" string => "$($(params)[$(param_keys)])", policy => "overridable"; reports: debian:: "bas params array $(param_keys)"; "bas string $(cfg[ldap_base])"; "bas string $(cfg[ldap_user])"; "bas list $(cfg[ldap_servers])"; } bundle agent test { vars: any:: "varray[ldap_servers]" slist => { "A", "B", "C" }; "varray[ldap_base]" string => "jaap"; methods: "template" usebundle => template("test.varray"); }
I can insert a list in array with the aid of the '@' operator. This only works for variable list but not for an associative array variablelist, see below: {{{ "local_list" slist => { "bas", "sil" }; "cfg[ldap_servers]" slist => { "cua.irc.sara.nl", "ldap.cua.sara.nl" }, policy => "overridable"; "cfg[$(param_keys)]" slist => { @(cfg[ldap_servers]) }, policy => "overridable"; #"cfg[$(param_keys)]" slist => { @(local_list) }, # policy => "overridable"; }}} It works for @(local_list) but for @(cfg[ldap_servers]) i get parsing errors: {{{cf3> ./template.cf:32,45: syntax error, near token '@' cf3> ./cfengine_stdlib.cf:1,2: syntax error, near token '(' cf3> ./cfengine_stdlib.cf:1,5: syntax error, near token 'cfg' cf3> ./cfengine_stdlib.cf:1,6: syntax error, near token '[' cf3> ./cfengine_stdlib.cf:1,18: syntax error, near token 'ldap_servers' cf3> ./cfengine_stdlib.cf:1,19: syntax error, near token ']' cf3> ./cfengine_stdlib.cf:1,20: syntax error, near token ')' cf3> ./cfengine_stdlib.cf:1,22: syntax error, near token '}' cf3> ./cfengine_stdlib.cf:1,23: syntax error, near token ',' cf3> ./cfengine_stdlib.cf:2,22: syntax error, near token 'policy' cf3> ./cfengine_stdlib.cf:2,25: syntax }}} How can i insert the cfg[ldap_servers] into a slist variable? -- ******************************************************************** * Bas van der Vlies e-mail: b...@sara.nl * * SARA - Academic Computing Services Amsterdam, The Netherlands * ********************************************************************
smime.p7s
Description: S/MIME Cryptographic Signature
_______________________________________________ Help-cfengine mailing list Help-cfengine@cfengine.org https://cfengine.org/mailman/listinfo/help-cfengine