From 020ca0b2e9edc036b4ebb9afd983ed0cb3f5c40f Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Fri, 9 May 2014 10:33:22 +0200 Subject: [PATCH] Apply: Inherit zone from parent object. Refs #6107 --- lib/icinga/dependency-apply.cpp | 9 +++++++++ lib/icinga/notification-apply.cpp | 9 +++++++++ lib/icinga/scheduleddowntime-apply.cpp | 9 +++++++++ lib/icinga/service-apply.cpp | 9 +++++++++ 4 files changed, 36 insertions(+) diff --git a/lib/icinga/dependency-apply.cpp b/lib/icinga/dependency-apply.cpp index feb111926..2ce1c4964 100644 --- a/lib/icinga/dependency-apply.cpp +++ b/lib/icinga/dependency-apply.cpp @@ -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::OpSet, + make_shared(&AExpression::OpLiteral, "zone", di), + make_shared(&AExpression::OpLiteral, zone, di), + di)); + } + builder->AddExpression(rule.GetExpression()); ConfigItem::Ptr dependencyItem = builder->Compile(); diff --git a/lib/icinga/notification-apply.cpp b/lib/icinga/notification-apply.cpp index 8037cc72c..8db32796b 100644 --- a/lib/icinga/notification-apply.cpp +++ b/lib/icinga/notification-apply.cpp @@ -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::OpSet, + make_shared(&AExpression::OpLiteral, "zone", di), + make_shared(&AExpression::OpLiteral, zone, di), + di)); + } + builder->AddExpression(rule.GetExpression()); ConfigItem::Ptr notificationItem = builder->Compile(); diff --git a/lib/icinga/scheduleddowntime-apply.cpp b/lib/icinga/scheduleddowntime-apply.cpp index 1142d5652..0d33ef539 100644 --- a/lib/icinga/scheduleddowntime-apply.cpp +++ b/lib/icinga/scheduleddowntime-apply.cpp @@ -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::OpSet, + make_shared(&AExpression::OpLiteral, "zone", di), + make_shared(&AExpression::OpLiteral, zone, di), + di)); + } + builder->AddExpression(rule.GetExpression()); ConfigItem::Ptr downtimeItem = builder->Compile(); diff --git a/lib/icinga/service-apply.cpp b/lib/icinga/service-apply.cpp index bf6a93036..8ca91081f 100644 --- a/lib/icinga/service-apply.cpp +++ b/lib/icinga/service-apply.cpp @@ -70,6 +70,15 @@ bool Service::EvaluateApplyRule(const Host::Ptr& host, const ApplyRule& rule) make_shared(&AExpression::OpLiteral, rule.GetName(), di), di)); + String zone = host->GetZone(); + + if (!zone.IsEmpty()) { + builder->AddExpression(make_shared(&AExpression::OpSet, + make_shared(&AExpression::OpLiteral, "zone", di), + make_shared(&AExpression::OpLiteral, zone, di), + di)); + } + builder->AddExpression(rule.GetExpression()); ConfigItem::Ptr serviceItem = builder->Compile(); -- 2.40.0