On Wed, Apr 21, 2010 at 06:16:11PM -0400, Justin Lloyd wrote:
>Dan,
>
>The part about classes being stored in a database has me confused. I
>thought that classes were in-memory for each run of a component
>(cf-agent, cf-serverd, etc.). Are you saying classes are something like
>a shared value between the components, rather than each component
>essentially having its own view of the world, so to speak?

It is possible to define "persistent" classes.  I've not used them, but
it should be possible in theory.

Have a look at section 6.4.2, 11.65 (persistant classes from
remote cfservd systems!), and 5.2.11.


>I assume you're referring to cf_classes.tcdb. Can you elaborate a bit
>more on how that file is used? The reference manual says the file is a
>"database of classes that have been defined on the current host,
>including their relative frequences, scaled like a probability". That
>sounds to me like it's statistical/historical, rather than realtime,
>information.

I think that cf_state.tcdb is more appropriate:  "A database of
persistent classes active on this current host."


>
>Thanks,
>Justin
>
>-----Original Message-----
>From: d...@lonewolf.com [mailto:d...@lonewolf.com] On Behalf Of
>daniel.kl...@cfengine.com
>Sent: Wednesday, April 21, 2010 4:08 PM
>To: Lebel, Marco
>Cc: Justin Lloyd; fo...@cfengine.com; help-cfengine@cfengine.org
>Subject: Re: Cfengine Help: Re: RE: Cfengine Help: cfengine program flow
>
>
>Kinda-sorta :-)
>
>Classes that are defined in a "common" bundle are global.  Classes that
>are
>defined in any other kind of bundle are local to that bundle.  See
>section
>1.6 of the manual.
>
>Likewise, classes are cached with an expiration time, but they do go
>away.
>Although they can be set with a test, the condition which sets them is
>not
>continuously evaluated - so they stick around a bit.  Classes are stored
>in
>a database - so that the various components of Cfengine can share them.
>You can clear a class with the -U switch, if you need to.
>
>-Dan
>
>> Justin,
>> 
>> You are bringing an interesting point since I struggle with classes in
>this c
>> ontext.  But I have not done any structured testing but I am under the
>impres
>> sion that once a class has been set it never gets unset.
>> 
>> Again I want to stress that I never did any exhaustive testing on this
>but I 
>> believe that classes once set they are set globally (i.e. visible in
>all subs
>> equent bundle) and never get unset even if the condition that
>initially creat
>> ed it is no longer true... Again the key word is an impression that
>needs to 
>> be confirmed by someone in the know or has done the necessary testing.
>> 
>> Marco
>> 
>> -----Original Message-----
>> From: help-cfengine-boun...@cfengine.org
>[mailto:help-cfengine-boun...@cfengi
>> ne.org] On Behalf Of Justin Lloyd
>> Sent: Wednesday, April 21, 2010 5:31 PM
>> To: fo...@cfengine.com; help-cfengine@cfengine.org
>> Subject: RE: Cfengine Help: Re: RE: Cfengine Help: cfengine program
>flow
>> 
>> As I understand it, it will reevalute the class promise, and therefore
>> check for the file's existence, on all three iterations. A good way to
>> see what is happening is to run cf-agent in verbose mode (cf-agent
>-vK)
>> and write its output to a file then read through it. You'll see lines
>> like this (yours will be prefixed with something other than "nova>"):
>> 
>> [r...@rhn ~]# cf-agent -vK > /tmp/out
>> [r...@rhn ~]# grep '^nova>.* in bundle .* ([1-3])' /tmp/out
>> nova>    vars in bundle def (1)
>> nova>    classes in bundle def (1)
>> nova>    vars in bundle def (2)
>> nova>    classes in bundle def (2)
>> nova>    vars in bundle def (3)
>> nova>    classes in bundle def (3)
>> nova>    vars in bundle update (1)
>> nova>    classes in bundle update (1)
>> nova>    processes in bundle update (1)
>> nova>    commands in bundle update (1)
>> nova>    files in bundle update (1)
>> nova>    services in bundle update (1)
>> nova>    vars in bundle update (2)
>> nova>    classes in bundle update (2)
>> nova>    processes in bundle update (2)
>> nova>    commands in bundle update (2)
>> nova>    files in bundle update (2)
>> nova>    services in bundle update (2)
>> nova>    vars in bundle update (3)
>> nova>    classes in bundle update (3)
>> nova>    processes in bundle update (3)
>> nova>    commands in bundle update (3)
>> nova>    files in bundle update (3)
>> nova>    services in bundle update (3)
>> nova>    vars in bundle dg (1)
>> nova>    classes in bundle dg (1)
>> nova>    vars in bundle dg (2)
>> nova>    classes in bundle dg (2)
>> nova>    vars in bundle dg (3)
>> nova>    classes in bundle dg (3)
>> 
>> Note how it does 3 iterations of the promise types in bundle "def",
>then
>> 3 of bundle "update", etc. ("dg" is a custom bundle of mine).
>> 
>> Justin
>> 
>> -----Original Message-----
>> From: help-cfengine-boun...@cfengine.org
>> [mailto:help-cfengine-boun...@cfengine.org] On Behalf Of
>> fo...@cfengine.com
>> Sent: Wednesday, April 21, 2010 3:22 PM
>> To: help-cfengine@cfengine.org
>> Subject: Cfengine Help: Re: RE: Cfengine Help: cfengine program flow
>> 
>> Forum: Cfengine Help
>> Subject: Re: RE: Cfengine Help: cfengine program flow
>> Author: nicolas
>> Link to topic:
>> https://cfengine.com/forum/read.php?3,16959,16960#msg-16960
>> 
>> thanks for the fast response.
>> 
>it helps, i thought this is a recommendation :-/ (i should read more
>> exactly)
>> 
>> but one question i still have: 
>> 
>> if i define a class:
>> 
>> classes:
>> 
>> "xy_installed" expression => fileexists("/usr/example");
>> 
>> does it recheck this value each time i use 
>> 
>> xy_installed::
>> 
>> or only once at the beginning of each of the 3 times?
>> 
>> regards 
>> 
>> nicolas
>> 
>> _______________________________________________
>> Help-cfengine mailing list
>> Help-cfengine@cfengine.org
>> https://cfengine.org/mailman/listinfo/help-cfengine
>> 
>> 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
>
>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

-- 
Jesse Becker
NHGRI Linux support (Digicon Contractor)
_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to