Apply: Inherit zone from parent object.

Refs #6107
This commit is contained in:
Gunnar Beutner 2014-05-09 10:33:22 +02:00
parent dade476533
commit 020ca0b2e9
4 changed files with 36 additions and 0 deletions

View File

@ -80,6 +80,15 @@ bool Dependency::EvaluateApplyRule(const Checkable::Ptr& checkable, const ApplyR
di));
}
String zone = checkable->GetZone();
if (!zone.IsEmpty()) {
builder->AddExpression(make_shared<AExpression>(&AExpression::OpSet,
make_shared<AExpression>(&AExpression::OpLiteral, "zone", di),
make_shared<AExpression>(&AExpression::OpLiteral, zone, di),
di));
}
builder->AddExpression(rule.GetExpression());
ConfigItem::Ptr dependencyItem = builder->Compile();

View File

@ -79,6 +79,15 @@ bool Notification::EvaluateApplyRule(const Checkable::Ptr& checkable, const Appl
di));
}
String zone = checkable->GetZone();
if (!zone.IsEmpty()) {
builder->AddExpression(make_shared<AExpression>(&AExpression::OpSet,
make_shared<AExpression>(&AExpression::OpLiteral, "zone", di),
make_shared<AExpression>(&AExpression::OpLiteral, zone, di),
di));
}
builder->AddExpression(rule.GetExpression());
ConfigItem::Ptr notificationItem = builder->Compile();

View File

@ -79,6 +79,15 @@ bool ScheduledDowntime::EvaluateApplyRule(const Checkable::Ptr& checkable, const
di));
}
String zone = checkable->GetZone();
if (!zone.IsEmpty()) {
builder->AddExpression(make_shared<AExpression>(&AExpression::OpSet,
make_shared<AExpression>(&AExpression::OpLiteral, "zone", di),
make_shared<AExpression>(&AExpression::OpLiteral, zone, di),
di));
}
builder->AddExpression(rule.GetExpression());
ConfigItem::Ptr downtimeItem = builder->Compile();

View File

@ -70,6 +70,15 @@ bool Service::EvaluateApplyRule(const Host::Ptr& host, const ApplyRule& rule)
make_shared<AExpression>(&AExpression::OpLiteral, rule.GetName(), di),
di));
String zone = host->GetZone();
if (!zone.IsEmpty()) {
builder->AddExpression(make_shared<AExpression>(&AExpression::OpSet,
make_shared<AExpression>(&AExpression::OpLiteral, "zone", di),
make_shared<AExpression>(&AExpression::OpLiteral, zone, di),
di));
}
builder->AddExpression(rule.GetExpression());
ConfigItem::Ptr serviceItem = builder->Compile();