Jesse and Seva,

thank you for pointing out this problem. It was a simple typo (actually
failure to substitute some old code for new) that resulted in this
deficiency. Of course this should work. Latest SVN fixes this bug.

BTW - note that the classes alpha,beta etc are somewhat redundant in
your example, since the real selection is made by $sys.uqhost

M

On 12/18/2010 12:37 AM, Jesse Becker wrote:
> So, the snipped below does not work, but I wish that it did.  It also
> isn't limited to package promises either, I can think of cases for file
> and command promises as well.
> 
> At a high level, I am trying to define per-host lists, then iterate over
> those lists, but only on the appropriate host.
> 
> <-----snip----->
> 
> bundle agent testing {
> 
> vars:
>      any::   'common'      slist => { 'foo', 'quux', 'fubar' };
>      alpha:: 'pkgs[alpha]' slist => { 'foo', 'bar', 'baz' };
>      beta::  'pkgs[beta]'  slist => { @{common}, 'yipyip' };
>      delta:: 'pkgs[delta]' slist => {  'yipyip' };
>          
> packages:
> 
>      # only "NY" is needed, since the others are squished into this in
>      # yum.cf
>      centos.!NY::
>          "${pkgs[${sys.uqhost}]}"
>              handle         => "per_host_packages_for_${sys.uqhost}",
>              package_policy => 'add',
>              package_method => yum,
>              ifvarclass     => isvariable("pkgs[${sys.uqhost}]"),
>              package_architectures => { 'x86_64' }; 
> }
> 
> <-----snip----->
> 
> 
> What happens is that "${pkgs[${sys.uqhost}]}" is evaluated once, with
> only "${sys.uqhost}" getting processed, leaving the string as a literal
> "${pkgs[alpha]}" ).  This will, of course, fail when passed to the
> actual promise in question.
> 
> I do have a workaround, but it's inelegant.  Bascially, flatten the
> array into multiple slists, and have a separate promise for each one,
> based on the hostnames.
> 
> So my question:  Is there a concise way to do something like what I've
> posted above?
> 
> 
_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to