mirror of
https://github.com/Icinga/icinga2.git
synced 2025-07-23 21:55:03 +02:00
T::EvaluateApplyRule(): K. I. S. S. while iterating over a dict
to also save locks and malloc().
This commit is contained in:
parent
8c6bb1f46c
commit
957be31cd7
@ -112,12 +112,13 @@ bool Dependency::EvaluateApplyRule(const Checkable::Ptr& checkable, const ApplyR
|
||||
BOOST_THROW_EXCEPTION(ScriptError("Array iterator requires value to be an array.", di));
|
||||
|
||||
Dictionary::Ptr dict = vinstances;
|
||||
ObjectLock olock (dict);
|
||||
|
||||
for (const String& key : dict->GetKeys()) {
|
||||
frame.Locals->Set(rule.GetFKVar(), key);
|
||||
frame.Locals->Set(rule.GetFVVar(), dict->Get(key));
|
||||
for (auto& kv : dict) {
|
||||
frame.Locals->Set(rule.GetFKVar(), kv.first);
|
||||
frame.Locals->Set(rule.GetFVVar(), kv.second);
|
||||
|
||||
if (EvaluateApplyRuleInstance(checkable, rule.GetName() + key, frame, rule, skipFilter))
|
||||
if (EvaluateApplyRuleInstance(checkable, rule.GetName() + kv.first, frame, rule, skipFilter))
|
||||
match = true;
|
||||
}
|
||||
}
|
||||
|
@ -111,12 +111,13 @@ bool Notification::EvaluateApplyRule(const Checkable::Ptr& checkable, const Appl
|
||||
BOOST_THROW_EXCEPTION(ScriptError("Array iterator requires value to be an array.", di));
|
||||
|
||||
Dictionary::Ptr dict = vinstances;
|
||||
ObjectLock olock (dict);
|
||||
|
||||
for (const String& key : dict->GetKeys()) {
|
||||
frame.Locals->Set(rule.GetFKVar(), key);
|
||||
frame.Locals->Set(rule.GetFVVar(), dict->Get(key));
|
||||
for (auto& kv : dict) {
|
||||
frame.Locals->Set(rule.GetFKVar(), kv.first);
|
||||
frame.Locals->Set(rule.GetFVVar(), kv.second);
|
||||
|
||||
if (EvaluateApplyRuleInstance(checkable, rule.GetName() + key, frame, rule, skipFilter))
|
||||
if (EvaluateApplyRuleInstance(checkable, rule.GetName() + kv.first, frame, rule, skipFilter))
|
||||
match = true;
|
||||
}
|
||||
}
|
||||
|
@ -110,12 +110,13 @@ bool ScheduledDowntime::EvaluateApplyRule(const Checkable::Ptr& checkable, const
|
||||
BOOST_THROW_EXCEPTION(ScriptError("Array iterator requires value to be an array.", di));
|
||||
|
||||
Dictionary::Ptr dict = vinstances;
|
||||
ObjectLock olock (dict);
|
||||
|
||||
for (const String& key : dict->GetKeys()) {
|
||||
frame.Locals->Set(rule.GetFKVar(), key);
|
||||
frame.Locals->Set(rule.GetFVVar(), dict->Get(key));
|
||||
for (auto& kv : dict) {
|
||||
frame.Locals->Set(rule.GetFKVar(), kv.first);
|
||||
frame.Locals->Set(rule.GetFVVar(), kv.second);
|
||||
|
||||
if (EvaluateApplyRuleInstance(checkable, rule.GetName() + key, frame, rule, skipFilter))
|
||||
if (EvaluateApplyRuleInstance(checkable, rule.GetName() + kv.first, frame, rule, skipFilter))
|
||||
match = true;
|
||||
}
|
||||
}
|
||||
|
@ -101,12 +101,13 @@ bool Service::EvaluateApplyRule(const Host::Ptr& host, const ApplyRule& rule, bo
|
||||
BOOST_THROW_EXCEPTION(ScriptError("Array iterator requires value to be an array.", di));
|
||||
|
||||
Dictionary::Ptr dict = vinstances;
|
||||
ObjectLock olock (dict);
|
||||
|
||||
for (const String& key : dict->GetKeys()) {
|
||||
frame.Locals->Set(rule.GetFKVar(), key);
|
||||
frame.Locals->Set(rule.GetFVVar(), dict->Get(key));
|
||||
for (auto& kv : dict) {
|
||||
frame.Locals->Set(rule.GetFKVar(), kv.first);
|
||||
frame.Locals->Set(rule.GetFVVar(), kv.second);
|
||||
|
||||
if (EvaluateApplyRuleInstance(host, rule.GetName() + key, frame, rule, skipFilter))
|
||||
if (EvaluateApplyRuleInstance(host, rule.GetName() + kv.first, frame, rule, skipFilter))
|
||||
match = true;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user