Ah. The "Mcafee" fooled me: I was not aware that they made any Linux products, and even a quick scan of their web site did not yield that nugget.
For the most part, however, that does not change my previous comments. In particular, if you set a Service's 'hasstatus' parameter to 'false' then you need to specify a custom status command via the 'status' parameter.
On CentOS, `Service` resources will, by default, use the host's 'chkcfg' and 'service' commands to manage services. They will check services' status via the exit code of '/sbin/service <service-name> status', which is interpreted according to the
LSB specifications. They will try to start, stop, or restart services analogously (e.g. '/sbin/service <service-name> start'). You should be able to see the exact commands the agent issues by running it with '--debug' output enabled.
Evidently, you do have initscripts for the "cma" and "nails" services (else I would expect Puppet to complain), but it may be that their behavior does not comply with LSB. You can test that by exercising them manually via the 'service' command. In that case, your options are to fix the initscript(s), or to specify custom 'status' commands, and possibly other custom service-management commands.
John