This looks like a bug - although reading the code, I am not sure where it is. Even setting the persist time to 0 doesn't change things, but what I am seeing is not what I'd expect. I would expect either "n% of the time, you will see exactly one class_n" or else "n% of the time, you will see all the classes which are class_n or above (or below)". The distribution of classes below satisfies neither constraint.
howl# cf-agent -Kf ./foo.cf R: d50 R: d30 howl# cf-agent -Kf ./foo.cf R: d50 R: d20 howl# cf-agent -Kf ./foo.cf R: d50 R: d10 howl# cf-agent -Kf ./foo.cf R: d10 R: d20 howl# cf-agent -Kf ./foo.cf R: d10 R: d50 R: d30 body common control { bundlesequence => { "testbundle" }; } bundle agent testbundle { classes: "d" dist => {10,20,30,50}, Zclasses => immediate; reports: d_10:: "d10"; d_20:: "d20"; d_30:: "d30"; d_50:: "d50"; } body classes immediate { persist_time => "0"; } > Mark, > > I just re-read the documentation on this (since I'm going back to fill > in comments in my policy files) and noticed that the notes for dist say > that it assigns "one generic class (always) and ONE additional class" > (emphasis mine), e.g. my_dist and my_dist_10. That makes it sound like > the result I saw where two such classes were defined (see below) was > erroneous. Which is correct, the behavior or the documentation? > > By the way, I remember in class when you were discussing this feature > and I wondered when you'd ever want it. Now I know, so thanks for such a > great feature! :) > > Thanks, > Justin > > -----Original Message----- > From: Mark Burgess [mailto:mark.burg...@iu.hio.no] > Sent: Wednesday, March 10, 2010 12:25 PM > To: Justin Lloyd > Cc: help-cfengine@cfengine.org > Subject: Re: Defining classes using "dist" > > > I mean the reevaluation of dist classes. > > Don't open a ticket, I already reported this. > > Justin Lloyd wrote: > > Which part, the re-evaluation of the dist class on each iteration or > the > > existence of multiple classes from the same base dist class? I'll open > a > > ticket based on your response. > > > > Thanks, > > Justin > > > > -----Original Message----- > > From: Mark Burgess [mailto:mark.burg...@iu.hio.no] > > Sent: Wednesday, March 10, 2010 12:11 PM > > To: Justin Lloyd > > Cc: help-cfengine@cfengine.org > > Subject: Re: Defining classes using "dist" > > > > > > This sounds like a bug. > > > > Justin Lloyd wrote: > >> This is just an FYI post, so feel free to ignore my rambling if > you're > >> not interested in some slightly deeper mechanics. :) > >> > >> So, I've learned something this morning. As I recall from reading, > >> Cfengine iterates its agent ordering (vars, classes, etc.) up to > three > >> times. A close examination of verbose agent output shows this in > lines > >> like "files in bundle dg (1)", etc. > >> > >> In further diagnosing an issue I'm having, I noticed that the > >> dist_percent class I created is evaluated during each such ordering > >> iteration, rather than once for each invocation of cf-agent as I had > >> originally thought. Thus, my promise that is conditional based upon > > the > >> existence of dist_percent_1 might be evaluated during the second > >> iteration, where dist_percent_1 might be true for any or none of the > >> three iterations of a given cf-agent invocation. So rather than my > >> original statement that cf-agent runs 288 times per day (12 times per > >> hour * 24 hours), the dist promise happens up to three times as > often, > >> meaning the number of times dist_percent_1 being defined is not 1% of > >> 288 but 1% of 288*3, or 2.8*3 = 8-9 times per day. > >> > >> However, since the specific class promise I want evaluated only > > happens > >> during one of the three ordering iterations, the chances of > >> percent_dist_1 occurring during the iteration when the desired > promise > >> would be evaluated would be 1/3rd of the total percent, bringing it > > back > >> down to the original 2-3 times per day. I only discuss this since it > > is > >> good to understand the actual mechanics of what is happening with > dist > >> promises. > >> > >> On a related note, I had another question in my mind answered by > > verbose > >> output during my testing: > >> > >> nova> ========================================================= > >> nova> classes in bundle asset (3) > >> nova> ========================================================= > >> nova> > >> nova> > >> nova> + Private classes augmented: > >> nova> + dist_percent_99 > >> nova> + dist_percent > >> nova> + dist_percent_1 > >> nova> + fetched_asset_data > >> nova> + dg_runtime_gold > >> > >> As you can see, dist classes are NOT mutually exclusive, as the _1 > and > >> _99 classes are both defined at the same time during this particular > >> iteration of the asset bundle. I wasn't sure from the documentation > >> whether this was the case, but this confirms it. The documentation > > does > >> state, however, that the base dist_percent class would always be > >> defined. > >> > >> Justin > >> > >> > >> -----Original Message----- > >> From: help-cfengine-boun...@cfengine.org > >> [mailto:help-cfengine-boun...@cfengine.org] On Behalf Of Justin Lloyd > >> Sent: Wednesday, March 10, 2010 10:02 AM > >> To: nwat...@symcor.com > >> Cc: help-cfengine@cfengine.org; help-cfengine-boun...@cfengine.org > >> Subject: RE: Evaluating a promise occasionally > >> > >> Now that I re-read the splayclass description in the morning when I'm > >> fresh and not in the evening when I'm worn out, I actually understand > >> it. For this specific case, however, it appears slightly too limited, > >> since I want the class defined 2-3 times per day. Splayclass can only > >> take "hourly" or "daily" as its second argument. > >> > >> At least now I know I can use it for other stuff in the future now > > that > >> I understand it. :) > >> > >> Thanks, > >> Justin > >> > >> -----Original Message----- > >> From: nwat...@symcor.com [mailto:nwat...@symcor.com] > >> Sent: Wednesday, March 10, 2010 9:58 AM > >> To: Justin Lloyd > >> Cc: help-cfengine@cfengine.org; help-cfengine-boun...@cfengine.org > >> Subject: RE: Evaluating a promise occasionally > >> > >> Splayclass? > >> > >> Sincerely, > >> -- > >> Neil Watson > >> 416-673-3465 > >> > >> This electronic communication and any attachments may contain > >> confidential and proprietary > >> information of DigitalGlobe, Inc. If you are not the intended > > recipient, > >> or an agent or employee > >> responsible for delivering this communication to the intended > > recipient, > >> or if you have received > >> this communication in error, please do not print, copy, retransmit, > >> disseminate or > >> otherwise use the information. Please indicate to the sender that you > >> have received this > >> communication in error, and delete the copy you received. > DigitalGlobe > >> reserves the > >> right to monitor any electronic communication sent or received by its > >> employees, agents > >> or representatives. > >> > >> _______________________________________________ > >> 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 > > > > -- > Mark Burgess > > ------------------------------------------------- > Professor of Network and System Administration > Oslo University College, Norway > > Personal Web: http://www.iu.hio.no/~mark > Office Telf : +47 22453272 > ------------------------------------------------- > > This electronic communication and any attachments may contain confidential an > d proprietary > information of DigitalGlobe, Inc. If you are not the intended recipient, or a > n agent or employee > responsible for delivering this communication to the intended recipient, or i > f you have received > this communication in error, please do not print, copy, retransmit, dissemina > te or > otherwise use the information. Please indicate to the sender that you have re > ceived this > communication in error, and delete the copy you received. DigitalGlobe reserv > es the > right to monitor any electronic communication sent or received by its employe > es, agents > or representatives. > > _______________________________________________ > 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