| 20 | }); |
| 21 | |
| 22 | bool HostGroup::EvaluateObjectRule(const Host::Ptr& host, const ConfigItem::Ptr& group) |
| 23 | { |
| 24 | String groupName = group->GetName(); |
| 25 | |
| 26 | CONTEXT("Evaluating rule for group '" << groupName << "'"); |
| 27 | |
| 28 | ScriptFrame frame(true); |
| 29 | if (group->GetScope()) |
| 30 | group->GetScope()->CopyTo(frame.Locals); |
| 31 | frame.Locals->Set("host", host); |
| 32 | |
| 33 | if (!group->GetFilter()->Evaluate(frame).GetValue().ToBool()) |
| 34 | return false; |
| 35 | |
| 36 | Log(LogDebug, "HostGroup") |
| 37 | << "Assigning membership for group '" << groupName << "' to host '" << host->GetName() << "'"; |
| 38 | |
| 39 | Array::Ptr groups = host->GetGroups(); |
| 40 | |
| 41 | if (groups && !groups->Contains(groupName)) |
| 42 | groups->Add(groupName); |
| 43 | |
| 44 | return true; |
| 45 | } |
| 46 | |
| 47 | void HostGroup::EvaluateObjectRules(const Host::Ptr& host) |
| 48 | { |