It is known that the iteration depth of variables is limited in
Cfengine. As of 3.0.4p2 the following test.cf
body common control
{
bundlesequence => { "outer", "inner" };
}
bundle agent outer
{
vars:
"arr[idx1]" string => "this is an array element";
"arr[idx2]" slist => { "This", "is", "an", "array", "element", "too" };
"choice" string => "idx2";
reports:
Yr2010::
"outer: $(arr[$(choice)])";
}
bundle agent inner
{
vars:
"idx" slist => getindices("outer.arr");
reports:
Yr2010::
"inner: $(outer.arr[$(idx)])";
}
produced the following output:
R: outer: This
R: outer: is
R: outer: an
R: outer: array
R: outer: element
R: outer: too
R: inner: this is an array element
R: inner: $(outer.arr[idx2])
and 3.0.4 wasn't even capable to iterate over an slist in an array in
the outer bundle, so you're using some version earlier than 3.0.4p2, I
guess.
2010/6/7 Daniel Dehennin <[email protected]>:
> Hello,
>
> In the reference manual I found that array can be of type scalar or
> list, but I did not manage to use list iteration:
>
> --8<---------------cut here---------------start------------->8---
> body common control
> {
> bundlesequence => { "test" };
> version => "0.0.2";
> }
>
> bundle agent test
> {
>
> vars:
>
> any::
>
> "array[key1]" slist => {"val1"};
> "array[key2]" slist => {"val2.1", "val2.2"};
> "array[key3]" slist => {"val3"};
>
> "keys" slist => getindices("array");
>
> commands:
>
> "/bin/echo $(keys) "
> args => "$(array[$(keys)])";
> }
> --8<---------------cut here---------------end--------------->8---
>
> Results in:
>
> --8<---------------cut here---------------start------------->8---
> /usr/sbin/cf-agent -K
> Q: ".../bin/echo key1 ": key1 $(array[key1])
> I: Last 1 QUOTEed lines were generated by promiser "/bin/echo key1
> $(array[key1])"
> I: Made in version '0.0.2' of '/home/dad/.cfagent/inputs/promises.cf' near
> line 23
> Q: ".../bin/echo key2 ": key2 $(array[key2])
> I: Last 1 QUOTEed lines were generated by promiser "/bin/echo key2
> $(array[key2])"
> I: Made in version '0.0.2' of '/home/dad/.cfagent/inputs/promises.cf' near
> line 23
> Q: ".../bin/echo key3 ": key3 $(array[key3])
> I: Last 1 QUOTEed lines were generated by promiser "/bin/echo key3
> $(array[key3])"
> I: Made in version '0.0.2' of '/home/dad/.cfagent/inputs/promises.cf' near
> line 23
> --8<---------------cut here---------------end--------------->8---
>
> I found no example, in tutorial, reference manual, solution guide or
> policy starter kit.
>
> Any hints?
>
> Thanks.
> --
> Daniel Dehennin
> Récupérer ma clef GPG:
> gpg --keyserver pgp.mit.edu --recv-keys 0x6A2540D1
>
> _______________________________________________
> Help-cfengine mailing list
> [email protected]
> https://cfengine.org/mailman/listinfo/help-cfengine
>
>
--
SY, Seva Gluschenko.
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine