I still think you're making future development/debugging a difficult process, but I also like the way you're setting things up - it is clean and easy to understand, and that is _always_ a good thing :-)
-Dan On Nov 9, 2010, at 2:51 AM, Marc Baudoin wrote: > Marc Baudoin <baud...@stg-interactive.com> écrit : >> >> As the number of different types of hosts in my configuration >> grows, I wonder what are the strategies for making bundlesequence >> and inputs more modular. >> >> I define a class for each type of hosts so, of course, there's >> the class approach: >> >> body common control >> { >> class1:: >> >> bundlesequence => { "common" , "specific1"} ; >> inputs => { "common.cf" , "specific1.cf" } ; >> >> class2:: >> >> bundlesequence => { "common" , "specific2"} ; >> inputs => { "common.cf" , "specific2.cf" } ; >> } >> >> But what if a client belongs both to class1 and class2? >> >> My main goal is to avoid redundancies. The common parts of >> bundlesequence and inputs can go into an slist, that's fine. >> >> I tried to define another slist variable to handle the specific >> parts of bundlesequence and inputs. My idea was to begin vith an >> empty slist (now that we can use "cf_null") and then add bundles >> and inputs for each class the client belongs to. But it's not >> possible to use the slist as in: >> >> "specific" slist => { @(specific) , "other_stuff" } ; >> >> and I found no way to add elements to an existing slist. >> >> So I'm stuck here with no elegant solution to my problem. >> >> How do people with a non-trivial configuration deal with this? > > Thank you to Daniel V. Klein, Michael Potter and Bas van der > Vlies for their replies. > > I went for this approach: > > promises.cf: > ----------------------------------------------------------------- > body common control > { > bundlesequence => > { > @(g.bundlesequence) , > } ; > > ignore_missing_inputs => "true" ; > > inputs => > { > "cfengine_stdlib.cf" , > "common.cf" , > @(g.inputs) , > } ; > } > ----------------------------------------------------------------- > > common.cf: > ----------------------------------------------------------------- > bundle common g > { > classes: > > # definition of classes > > vars: > > dns:: > > "bundlesequence_dns" > comment => "bundlesequence for DNS servers" , > slist => > { > "dns" , > } ; > > "inputs_dns" > comment => "inputs for DNS servers" , > slist => > { > "dns.cf" , > } ; > > # add more classes here > > any:: > > "bundlesequence" > comment => "bundlesequence" , > policy => "ifdefined" , > slist => > { > "common_bundlesequences" , > @(bundlesequence_dns) , > # add more here > } ; > > "inputs" > comment => "inputs" , > policy => "ifdefined" , > slist => > { > "common_inputs.cf" , > @(inputs_dns) , > # add more here > } ; > } > ----------------------------------------------------------------- > > -- > Marc Baudoin > STG Interactive > _______________________________________________ > Help-cfengine mailing list > Help-cfengine@cfengine.org > https://cfengine.org/mailman/listinfo/help-cfengine _______________________________________________ Help-cfengine mailing list Help-cfengine@cfengine.org https://cfengine.org/mailman/listinfo/help-cfengine