Hi Sil, The syntax for an array and a list is not the same, hence the problem. The @ is only for list, to pass an array, you only pass its name (with the context) as a parameter, and then you use its name to get the values, as in the following code.
bundle agent pip_example { vars: any:: # # Define the packages to install/delete # "pkgadd[yolk]" string => "0.4.3"; methods: "any" usebundle => pip_install_pkg("pip_example.pkgadd"); } ### pip_lib.cf ### bundle agent pip_install_pkg(pkgs_array) { vars: any:: "pip_install" slist => getindices("$(pkgs_array)"); Regards Nicolas On 30/03/2012 17:57, Sil Westerveld wrote: > Hello, > > We're trying to pass an array as an argument to a bundle. However, it > doesn't work like expected. > > The relevant code-snippets (in the files promises.cf and pip_lib.cf) are: > > > > ### promises.cf ### > body common control > { > bundlesequence => { pip_example }; > > inputs => { > "cfengine_stdlib.cf", > "pip_lib.cf", > }; > } > > bundle agent pip_example > { > vars: > any:: > # > # Define the packages to install/delete > # > "pkgadd[yolk]" string => "0.4.3"; > > methods: > "any" usebundle => pip_install_pkg(@(pip_example.pkgadd))); > > } > > > > > > > ### pip_lib.cf ### > bundle agent pip_install_pkg(pkgs_array) > { > vars: > any:: > "pip_install" slist => getindices("@(pkgs_array)"); > > > > When we run the code, the following 'error' is printed in the (verbose) > output: > {{{ > cf3> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * > cf3> BUNDLE pip_install_pkg( {'@(pip_example.pkgadd)'} ) > cf3> * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * > cf3> > cf3> Initiate variable convergence... > cf3> ? Augment scope pip_install_pkg with pkgs_array (s) > cf3> !! List parameter "pip_example.pkgadd" not found while > constructing scope "pip_install_pkg" - use @(scope.variable) in calling > reference > }}} > > > > > > We're using CFEngine Core 3.4.0a1.0530a8f. > > If we use the same syntax to pass a list, it goes well. > > Can anyone tell me if it's possible to pass arrays, and how it has to be > done? > _______________________________________________ > Help-cfengine mailing list > Help-cfengine@cfengine.org > https://cfengine.org/mailman/listinfo/help-cfengine _______________________________________________ Help-cfengine mailing list Help-cfengine@cfengine.org https://cfengine.org/mailman/listinfo/help-cfengine