]> granicus.if.org Git - icinga2/commitdiff
Update service state when delegation is unsuccessful
authorGunnar Beutner <gunnar.beutner@netways.de>
Thu, 24 Jan 2013 09:40:31 +0000 (10:40 +0100)
committerGunnar Beutner <gunnar.beutner@netways.de>
Thu, 24 Jan 2013 09:40:31 +0000 (10:40 +0100)
Fixes #3548

components/delegation/delegationcomponent.cpp

index 7dff383d29553aa1838c914e0caf71bdd6b8ba90..d7937ece41882136f6aba1100e36833017040c46 100644 (file)
@@ -163,7 +163,28 @@ void DelegationComponent::DelegationTimerHandler(void)
                        break;
                }
 
-               assert(candidates.size() == 0 || !service->GetChecker().IsEmpty());
+               if (candidates.size() == 0) {
+                       if (service->GetState() != StateUncheckable && service->GetEnableChecks()) {
+                               Dictionary::Ptr cr = boost::make_shared<Dictionary>();
+
+                               double now = Utility::GetTime();
+                               cr->Set("schedule_start", now);
+                               cr->Set("schedule_end", now);
+                               cr->Set("execution_start", now);
+                               cr->Set("execution_end", now);
+
+                               cr->Set("state", StateUncheckable);
+                               cr->Set("output", "No checker is available for this service.");
+
+                               service->ProcessCheckResult(cr);
+
+                               Logger::Write(LogWarning, "delegation", "Can't delegate service: " + service->GetName());
+                       }
+
+                       continue;
+               }
+
+               assert(!service->GetChecker().IsEmpty());
        }
 
        Endpoint::Ptr endpoint;