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?
--
Jesse Becker
NHGRI Linux support (Digicon Contractor)
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine