Forum: CFEngine Help
Subject: Re: On persistent classes
Author: sauer
Link to topic: https://cfengine.com/forum/read.php?3,24095,24148#msg-24148

The classes body applies to all promise types, including class promises, right? 
 I wonder what happens if you just specify a persist_time attribute in a 
classes compound body, and use that in a class promise? :)

So I tried with this little bit of demo code, and it does't appear that the 
classes attribute is actually used for a class promise. :/  I'd think that 
specifying a persist_time ( perhaps with a promise_kept => "$(this.promiser)" ) 
would be the way this should work.  But it seemingly does not work that way.


#!/var/cfengine/bin/cf-agent -Kf
body common control{ bundlesequence => { "a" }; }
bundle agent a {
vars:
  true::  "cmd" string => "/bin/true";
  false:: "cmd" string => "/bin/false";
classes:
  any::
  "controlclasst"  expression => returnszero("/bin/true",  "noshell");
  "controlclassf"  expression => returnszero("/bin/false", "noshell");
  "transientclass" expression => returnszero("$(cmd)",     "noshell");
  "persistclass"   expression => returnszero("$(cmd)",     "noshell"),
                   classes    => stickaround;
reports:
  linux|!linux::   "Command is '$(cmd)'";
  controlclasst::  "True control is working.";
  controlclassf::  "False control is not working.";
  transientclass:: "Transient class is set";
  persistclass::   "Persistent class is set";
  persist::        "stickaround was called";
  persistclass&!persist:: "stickaround was apparently not called";
}
body classes stickaround {
  persist_time     => "2";
  timer_policy     => "reset";
  promise_kept     => { "$(this.promiser)", "persist" };
  promise_repaired => { "$(this.promiser)", "persist" };
  repair_failed    => { "persist" };
  repair_denied    => { "persist" };
  repair_timeout   => { "persist" };
}



$ ./persist.cf -Dtrue
R: Command is '/bin/true'
R: True control is working.
R: Transient class is set
R: Persistent class is set
R: stickaround was apparently not called



$ ./persist.cf -Dfalse
R: Command is '/bin/false'
R: True control is working.


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

Reply via email to