Jesse,

unfortunately, the Cfengine has limitations when evaluating variables,
so deep nesting should be avoided as far as possible. I'm not the
Cfengine developer to tell for sure whether you met the natural limit
of the evaluation depth, or is it just a bug, but this behaviour
remains pretty the same since 3.0.4.

2010/12/18 Jesse Becker <becker...@mail.nih.gov>:
> 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?
>
>
> --
> Jesse Becker
> NHGRI Linux support (Digicon Contractor)
> _______________________________________________
> 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