]> granicus.if.org Git - icinga2/commitdiff
DB IDO: Only update 'next_check' column when manually scheduling a check
authorMichael Friedrich <michael.friedrich@netways.de>
Fri, 22 Jan 2016 17:42:15 +0000 (18:42 +0100)
committerMichael Friedrich <michael.friedrich@netways.de>
Fri, 22 Jan 2016 17:42:15 +0000 (18:42 +0100)
Otherwise the changes from #7287 already take care of setting
the proper next check time from inside ProcessCheckResult().

There is no need to use the generic OnNextCheckChanged signal
but instead we're using a new one, locally just for DB IDO.

fixes #11019

lib/db_ido/dbevents.cpp
lib/db_ido/dbevents.hpp
lib/icinga/apiactions.cpp
lib/icinga/checkable-check.cpp
lib/icinga/checkable.hpp
lib/icinga/externalcommandprocessor.cpp

index bcd86b80d37968e0259e9a628685d2b790101e4a..e621ea8e55a8e0ede53199858f1e3d09839de9ff 100644 (file)
@@ -51,7 +51,7 @@ void DbEvents::StaticInitialize(void)
        Checkable::OnAcknowledgementSet.connect(boost::bind(&DbEvents::AddAcknowledgement, _1, _4));
        Checkable::OnAcknowledgementCleared.connect(boost::bind(&DbEvents::RemoveAcknowledgement, _1));
 
-       Checkable::OnNextCheckChanged.connect(boost::bind(&DbEvents::NextCheckChangedHandler, _1));
+       Checkable::OnNextCheckUpdated.connect(boost::bind(&DbEvents::NextCheckUpdatedHandler, _1));
        Checkable::OnFlappingChanged.connect(boost::bind(&DbEvents::FlappingChangedHandler, _1));
        Checkable::OnNotificationSentToAllUsers.connect(boost::bind(&DbEvents::LastNotificationChangedHandler, _1, _2));
 
@@ -89,7 +89,7 @@ void DbEvents::StaticInitialize(void)
 }
 
 /* check events */
-void DbEvents::NextCheckChangedHandler(const Checkable::Ptr& checkable)
+void DbEvents::NextCheckUpdatedHandler(const Checkable::Ptr& checkable)
 {
        Host::Ptr host;
        Service::Ptr service;
index 89df2b4690e14f85e58792fa2680fc3ffa513dc4..8b870a13f8d7efe358c88dd5c6656151f604ad56 100644 (file)
@@ -69,7 +69,7 @@ public:
        static void AddLogHistory(const Checkable::Ptr& checkable, String buffer, LogEntryType type);
 
        /* Status */
-       static void NextCheckChangedHandler(const Checkable::Ptr& checkable);
+       static void NextCheckUpdatedHandler(const Checkable::Ptr& checkable);
        static void FlappingChangedHandler(const Checkable::Ptr& checkable);
        static void LastNotificationChangedHandler(const Notification::Ptr& notification, const Checkable::Ptr& checkable);
 
index c24ec908e99e45de133c4fb2ca33262565b83dce..db8e8c3f26792ae6115d8c8b9c03bc445d5203dc 100644 (file)
@@ -128,6 +128,9 @@ Dictionary::Ptr ApiActions::RescheduleCheck(const ConfigObject::Ptr& object,
 
        checkable->SetNextCheck(nextCheck);
 
+       /* trigger update event for DB IDO */
+       Checkable::OnNextCheckUpdated(checkable);
+
        return ApiActions::CreateResult(200, "Successfully rescheduled check for object '" + checkable->GetName() + "'.");
 }
 
index 5be258ff631aef02d6f37b19855a185adaddfc1a..0091748dff6967d12704a2163a5c7af01b3468df 100644 (file)
@@ -39,6 +39,7 @@ boost::signals2::signal<void (const Checkable::Ptr&, const CheckResult::Ptr&, co
 boost::signals2::signal<void (const Checkable::Ptr&, const CheckResult::Ptr&, StateType, const MessageOrigin::Ptr&)> Checkable::OnStateChange;
 boost::signals2::signal<void (const Checkable::Ptr&, const CheckResult::Ptr&, std::set<Checkable::Ptr>, const MessageOrigin::Ptr&)> Checkable::OnReachabilityChanged;
 boost::signals2::signal<void (const Checkable::Ptr&, NotificationType, const CheckResult::Ptr&, const String&, const String&)> Checkable::OnNotificationsRequested;
+boost::signals2::signal<void (const Checkable::Ptr&)> Checkable::OnNextCheckUpdated;
 
 CheckCommand::Ptr Checkable::GetCheckCommand(void) const
 {
index 7ba0fad21ab73e6e07b589758660c8ad4267945b..9ce25dbd1c745b91cfd20a56db0d702ff949a3ad 100644 (file)
@@ -126,6 +126,7 @@ public:
        static boost::signals2::signal<void (const Checkable::Ptr&, const String&, const String&, AcknowledgementType,
                                             bool, double, const MessageOrigin::Ptr&)> OnAcknowledgementSet;
        static boost::signals2::signal<void (const Checkable::Ptr&, const MessageOrigin::Ptr&)> OnAcknowledgementCleared;
+       static boost::signals2::signal<void (const Checkable::Ptr&)> OnNextCheckUpdated;
        static boost::signals2::signal<void (const Checkable::Ptr&)> OnEventCommandExecuted;
 
        /* Downtimes */
index fa1ff7f0eabde90da2e0a0d5878b61eba39a11d0..e0a6b317efd2deb4a5a84e0008745af46e7fb103 100644 (file)
@@ -382,6 +382,9 @@ void ExternalCommandProcessor::ScheduleHostCheck(double, const std::vector<Strin
                planned_check = Utility::GetTime();
 
        host->SetNextCheck(planned_check);
+
+       /* trigger update event for DB IDO */
+       Checkable::OnNextCheckUpdated(host);
 }
 
 void ExternalCommandProcessor::ScheduleForcedHostCheck(double, const std::vector<String>& arguments)
@@ -396,6 +399,9 @@ void ExternalCommandProcessor::ScheduleForcedHostCheck(double, const std::vector
 
        host->SetForceNextCheck(true);
        host->SetNextCheck(Convert::ToDouble(arguments[1]));
+
+       /* trigger update event for DB IDO */
+       Checkable::OnNextCheckUpdated(host);
 }
 
 void ExternalCommandProcessor::ScheduleSvcCheck(double, const std::vector<String>& arguments)
@@ -421,6 +427,9 @@ void ExternalCommandProcessor::ScheduleSvcCheck(double, const std::vector<String
                planned_check = Utility::GetTime();
 
        service->SetNextCheck(planned_check);
+
+       /* trigger update event for DB IDO */
+       Checkable::OnNextCheckUpdated(service);
 }
 
 void ExternalCommandProcessor::ScheduleForcedSvcCheck(double, const std::vector<String>& arguments)
@@ -435,6 +444,9 @@ void ExternalCommandProcessor::ScheduleForcedSvcCheck(double, const std::vector<
 
        service->SetForceNextCheck(true);
        service->SetNextCheck(Convert::ToDouble(arguments[2]));
+
+       /* trigger update event for DB IDO */
+       Checkable::OnNextCheckUpdated(service);
 }
 
 void ExternalCommandProcessor::EnableHostCheck(double, const std::vector<String>& arguments)
@@ -516,6 +528,9 @@ void ExternalCommandProcessor::ScheduleForcedHostSvcChecks(double, const std::ve
 
                service->SetNextCheck(planned_check);
                service->SetForceNextCheck(true);
+
+               /* trigger update event for DB IDO */
+               Checkable::OnNextCheckUpdated(service);
        }
 }
 
@@ -543,6 +558,9 @@ void ExternalCommandProcessor::ScheduleHostSvcChecks(double, const std::vector<S
                    << "Rescheduling next check for service '" << service->GetName() << "'";
 
                service->SetNextCheck(planned_check);
+
+               /* trigger update event for DB IDO */
+               Checkable::OnNextCheckUpdated(service);
        }
 }