Aleksey, Not sure why this behaves like that.
As a solution, you could use the second method described by Neil (and which I very much prefer) of having a fixed bundlesequence, and use methods: to call the different bundles. --Diego On Feb 24, 2012, at 12:29 AM, Aleksey Tsalolikhin wrote: > Hi. I am in communication with a CFEngine 2 site that would like to > move to CFEngine 3, but the ability to specify the lists of inputs and > bundlesequence is a potential showstopper. > > > I pointed them to Neil's > http://watson-wilson.ca/2011/09/dynamic-bundlesequence-in-cfengine.html > but it does not work if the classes are specified within the common > bundle (i.e. instead of specifying -Dcf_dbs on the command line, the > policy contains a promise to define "cf_dbs" inline: > > classes: > "cf_dbs" > expression => "linux"; > > ) > > > cf-agent then complains: > > Scalar variable "bseq" contains itself (non-convergent): @{bseq} > Variable "bseq" contains itself indirectly - an unkeepable promise > > > Here is the complete self-contained example (it's just Neil's example > plus the classes promise above): > > --start quote-- > > bundle common g { > > classes: > "cf_dbs" > expression => "linux"; > > vars: > > any:: > > "bseq" slist => { > "site", > "ntp", > "hard" > }, > policy => "free"; > > cf_dbs:: > > "bseq" slist => { > @{bseq}, > "db2", > "mysql" > }, > policy => "free"; > > cf_webfarm:: > > "bseq" slist => { > @{bseq}, > "httpd", > "proxy" > }, > policy => "free"; > } > > body common control { > > bundlesequence => { "@{g.bseq}" }; > > } > > bundle agent site{ > reports: > cfengine_3:: > "site bundle"; > } > bundle agent ntp{ > reports: > cfengine_3:: > "ntp bundle"; > } > bundle agent hard{ > reports: > cfengine_3:: > "hard bundle"; > } > bundle agent db2{ > reports: > cfengine_3:: > "db2 bundle"; > } > bundle agent mysql{ > reports: > cfengine_3:: > "mysql bundle"; > } > bundle agent httpd{ > reports: > cfengine_3:: > "httpd bundle"; > } > bundle agent proxy{ > reports: > cfengine_3:: > "proxy bundle"; > } > --end quote-- > > Why does Neil's example work with -Dcf_dbs but does not work when the > class is defined in the promise file? (If I remove the classes > promise, the code runs under cf-agent just fine.) > > So - is it possible to have a dynamic bundlesequence when there are > custom classes in play? If so, how? > > Yours truly, > -at > _______________________________________________ > 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