Yes this is possible. See promise_* cancel_*
http://www.cfengine.org/manuals/cf3-reference.html#classes-in-_002a http://www.cfengine.org/manuals/CfengineStdLibrary.html#body-classes-if_005frepaired Jesse Becker wrote: > Is it possible to assert (or de-assert) a class based on a package > promise? What I really want to do is check to see if a package is > already installed, but not duplicate work by calling both a packages: > action, and second returnszero() call. > > For example, I have this (and it works): > > <------------snip--------------> > bundle agent mpt { > > vars: > 'mpt_packages' slist => { > 'mpt-status', > }; > > classes: > any:: > "has_mpt_controller" expression => returnszero('/sbin/lspci | > /bin/grep -q Fusion-MPT', 'useshell'); > > has_mpt_controller:: > "has_mptctl" expression => isplain("/dev/mptctl"); > "has_mpt_status" expression => returnszero("/bin/rpm -q --quiet > mpt-status",'noshell'); > > > commands: > has_mpt_controller.!has_mptctl:: > "/sbin/modprobe mptctl" contain => cmdnoshell; > > has_mpt_controller.has_mpt_status:: > "/usr/local/adm/bin/mpt_status_wrapper.sh" contain => > cmdnoshell; > > packages: > has_mpt_controller:: > "${fileserver_packages}" > package_policy => "add", > package_method => yum, > package_architectures => { "x86_64" }; > } > <------------snip--------------> > > > At issue is that there are two separate checks for the 'mpt_status' > package. One happens in packages:, the other in classes:. What I'd > like, sort of, is something like this: > > packages: > has_mpt_controller:: > "${fileserver_packages}" > package_policy => "add", > package_method => yum, > package_architectures => { "x86_64" }, > classes => > is_okay("package_installed_${fileserver_packages}"); > > This would define a new class for each element of the > ${fileserver_packages} list. > > Am I completely missing the ability to do this somewhere already? > > -- Mark Burgess ------------------------------------------------- Professor of Network and System Administration Oslo University College, Norway Personal Web: http://www.iu.hio.no/~mark Office Telf : +47 22453272 ------------------------------------------------- _______________________________________________ Help-cfengine mailing list Help-cfengine@cfengine.org https://cfengine.org/mailman/listinfo/help-cfengine