Why couldn't you do things like this now with lockfile? Test for /.preserved, and set a class.
Its more verbose, nothing a little m4 couldn't solve. Russell On Fri, May 13, 2005 at 02:58:32PM -0500, Brendan Strejcek wrote: > Brendan Strejcek wrote: > > > Moore, Joe wrote: > > > > > The trouble comes in that state is not preserved across cfengine > > > invokations. The restart_inetd class that's defined when you editfiles > > > /etc/inetd.conf won't be defined the next time cfengine runs. > > > > > > So one option for cfengine3 could be to preserve more state, and have > > > actions explicitly clear that state... idea: classes that are defined > > > by an action (using the new "set" keyword) are kept until they are > > > cleared. (this might be implemented by a state DB or by giving them to > > > cfenvd) > > > > An interesting idea. One could think about this as exceptions that can > > be raised during one cfagent run and handled in a subsequent run. > > > > We might be able to do this now with: > > > > SetState("preserved_class",10,Preserve) > > SetState(non_preserved_class,60,Reset) > > UnsetState(myclass) > > > > (See http://www.cfengine.org/docs/cfengine-Reference.html#alerts ) > > > > All those are used in the "alerts" sections, which would just be weird > > to use for what you discuss above, not in the least because "alerts" is > > one of those magic non-actionsequence actions. > > Here are some code examples: > > $ cat preserve > #!/usr/sbin/cfagent -qKf > > control: > actionsequence = ( shellcommands ) > > shellcommands: > any:: > "/bin/echo setting a class" > define=create_preserved > preserved:: > "/bin/echo preserved set" > define=remove_preserved > > alerts: > create_preserved:: > SetState("preserved",999,Preserve) > remove_preserved:: > UnsetState(preserved) > $ ./preserve > cfengine::/bin/echo setti: setting a class > $ ./preserve > cfengine::/bin/echo setti: setting a class > cfengine::/bin/echo prese: preserved set > $ ./preserve > cfengine::/bin/echo setti: setting a class > $ > > One could use this like: > > editfiles: > { /some/file > # SomeEdits > DefineClasses "restart_daemon:doublecheck_restart" > } > > shellcommands: > restart_daemon:: > "/etc/init.d/daemon restart" > define=clear_restart > restart_again:: > "/etc/init.d/daemon restart" > define=clear_restart > > alerts: > doublecheck_restart:: > SetState("restart_again",999,Preserve) > clear_restart:: > UnsetState(restart_again) > > The idea that I tried to encode above was: "if we were not able to > restart the daemon this time, try next time, and so on until we are > successful." > > I'm not sure exactly what the utility of this is, since I think that > alerts happen after everything else, so if the run is interrupted, the > "restart_again" class won't be set anyways. > > It would also be nice if we could use "inf" as a duration as well, to > force a set class to be manually cleared. > > > _______________________________________________ > Help-cfengine mailing list > Help-cfengine@gnu.org > http://lists.gnu.org/mailman/listinfo/help-cfengine _______________________________________________ Help-cfengine mailing list Help-cfengine@gnu.org http://lists.gnu.org/mailman/listinfo/help-cfengine