]> granicus.if.org Git - icinga2/commitdiff
Apply: Inherit zone from parent object.
authorGunnar Beutner <gunnar.beutner@netways.de>
Fri, 9 May 2014 08:33:22 +0000 (10:33 +0200)
committerGunnar Beutner <gunnar.beutner@netways.de>
Fri, 9 May 2014 08:36:26 +0000 (10:36 +0200)
Refs #6107

lib/icinga/dependency-apply.cpp
lib/icinga/notification-apply.cpp
lib/icinga/scheduleddowntime-apply.cpp
lib/icinga/service-apply.cpp

index feb111926c9de581f316872999f27b1486cc93bb..2ce1c4964c1189d2bf5870e8cfee5069b5618c7b 100644 (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();
index 8037cc72c5cebdabc2d8dd9703aba673af878c3b..8db32796b2b966ce6b1ff1cc02a13eabc22b5987 100644 (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();
index 1142d5652d1565bb19a32e0d28a536e2de0d9b3a..0d33ef53963d616c7c0d7190156a0a08e6e98740 100644 (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();
index bf6a93036b4e2dcd0d42c66ff98f4d5aef94c8bc..8ca91081fa9488b20e572e238678b4df88c78b94 100644 (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();