On Fri, May 14, 2010 at 4:58 PM, Сева Глущенко <seva.glusche...@gmail.com>wrote:

> The following promise
>
> "myarray[$(mykeys)]" string => execresult("/usr/bin/ps -f | grep
> $(mylist[$(mykeys)])","useshell");
>
> will expand not the way you expecting it. It doesn't mean
>
> "myarray[a]" string => execresult("/usr/bin/ps -f | grep
> $(mylist[a])","useshell");
> "myarray[b]" string => execresult("/usr/bin/ps -f | grep
> $(mylist[b])","useshell");
> "myarray[c]" string => execresult("/usr/bin/ps -f | grep
> $(mylist[c])","useshell");
>
> Instead, it means
>
> "myarray[a]" string => execresult("/usr/bin/ps -f | grep
> $(mylist[a])","useshell");
> "myarray[a]" string => execresult("/usr/bin/ps -f | grep
> $(mylist[b])","useshell");
> "myarray[a]" string => execresult("/usr/bin/ps -f | grep
> $(mylist[c])","useshell");
>
>  and so forth.
>


I am not sure this is correct. For example, this bundle...

bundle agent atest {

vars:

    "mylist[a]" string => "1";
    "mylist[b]" string => "2";
    "mylist[c]" string => "3";

    "mykeys" slist => getindices("mylist");

    "myarray[$(mykeys)]" string => execresult("/bin/echo
say_$(mylist[$(mykeys)]) | grep $(mylist[$(mykeys)])","useshell");


reports:

    Yr2010::

    ">>$(myarray[$(mykeys)])";

}


...will print out reports as I expect, and without the error messages
before. So clearly, I can iterate over a list as part of an lvar in an
expression.

$ cf-agent -KI -f ./testbundle.cf
R: >>say_1
R: >>say_2
R: >>say_3

There seems to be something particular output the output of 'ps' that is
somehow causing it to trip up...that being said I can always run without -I
(which is what I do anyway), and the errors are not displayed but the result
is OK.


> If you really need to operate processes, I'd rather suggest you using
> process_select. If your task lays somewhere else, describe it more
> clearly.
>
> 2010/5/14  <mega...@gmail.com>:
> > For me, the following bundle:
> >
> > bundle agent atest {
> >
> > vars:
> >
> > "mylist[a]" string => "1";
> > "mylist[b]" string => "2";
> > "mylist[c]" string => "3";
> >
> > "mykeys" slist => getindices("mylist");
> >
> > "myarray[$(mykeys)]" string => execresult("/usr/bin/ps -f | grep
> > $(mylist[$(mykeys)])","useshell");
> > }
> >
> > Produces the following errors:
> >
> > $ cf-agent -KI -f ./testbundle.cf
> > Truncating long file /opt/atws/files/BUILT4 in readfile to max limit 4
> > !! Duplicate selection of value for variable "myarray[a]" in scope atest
> > Rule from ./roles/vnc.cf at/before line 27
> > !! Duplicate selection of value for variable "myarray[b]" in scope atest
> > Rule from ./roles/vnc.cf at/before line 27
> > !! Duplicate selection of value for variable "myarray[c]" in scope atest
> > Rule from ./roles/vnc.cf at/before line 27
> >
> > Can anyone else replicate this? And/or tell me what the issue is?
> >
> > I am using stock 3.04 on Solaris10/SPARC.
> >
> > Cheers
> > _______________________________________________
> > Help-cfengine mailing list
> > Help-cfengine@cfengine.org
> > https://cfengine.org/mailman/listinfo/help-cfengine
> >
> >
>
>
>
> --
> SY, Seva Gluschenko.
>
_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to