Forum: CFEngine Help
Subject: Re: reasonable "list append" workaround?
Author: zzamboni
Link to topic: https://cfengine.com/forum/read.php?3,23935,24011#msg-24011

Matt, your approach almost works. The problem is that for classes that are not 
defined, the variable will not be expanded and you will get the literal string 
'${backup_server}' (for example) in the list.

You can fix this and make the approach more general by making the variables 
slist instead of string, and using policy => "ifdefined" in the assignment to 
testfiles. Something like this:

body common control {
     bundlesequence => { "test2" };
}

bundle agent test2
{
    vars:
        backup_server::
            "backup_svr_file" slist => { "/tmp/test_backup_server", 
"/tmp/test_backup_server2" };

        dns_server::
            "dns_svr_file"    slist => { "/tmp/test_dns_server" };

        utility_net::
            "util_svr_file"   slist => { "/tmp/test_utility_net" };

        redserver::
            "redserver_file"   slist => { "/tmp/test_redserver" };

        blueserver::
            "blueserver_file" slist => { "/tmp/test_blueserver", "/tmp/blue2" };

        any::
            "testfiles" slist => {
                "@{backup_svr_file}",
                "@{dns_svr_file}",
                "@{util_svr_file}",
                "@{redserver_file}",
                "@{blueserver_file}"
            },
               policy => "ifdefined";

   reports:
     cfengine::
       "${testfiles}";
}


Neil, the meaning in your example is very clear, but I worry about the 
explosion in states, since you have to express all the possible combinations of 
classes in which you are interested.

Best regards,

_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to