Forum: CFEngine Help
Subject: Re: Class not being defined correctly
Author: zzamboni
Link to topic: https://cfengine.com/forum/read.php?3,23121,23124#msg-23124
The way Nakarin suggests would work. Alternatively, you can use your bundle as
is, but you need to include the username in each class name. Remember that
cfengine iterates over your "classes:" statement for every single user *before*
going to the reports: section, so the class "valid_user" will only contain the
value corresponding to the last user in the iteration. You need something like
this:
bundle agent check_user(user)
{
vars:
"index" slist => getindices("$(user)");
"cindex[$(index)]" string => canonify("$(index)");
classes:
"valid_user_$(cindex[$(index)])" expression =>
strcmp("true","$($(user)[$(index)])");
reports:
"USER: $(index) is showing up as valid with a status of $($(user)[$(index)])"
ifvarclass => "valid_user_$(cindex[$(index)])";
"USER: $(index) is showing up as invalid with a status of
$($(user)[$(index)])"
ifvarclass => "!valid_user_$(cindex[$(index)])";
Note that I'm defining another array containing the canonified usernames, just
in case (usernames should be pretty canonical, but you never know) and then
using those values as part of the classnames, to be able to decide on each
individual user.
_______________________________________________
Help-cfengine mailing list
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine