]> granicus.if.org Git - icinga2/commitdiff
Cleaned up status calculation code.
authorGunnar Beutner <gunnar.beutner@netways.de>
Tue, 24 Jul 2012 13:38:30 +0000 (15:38 +0200)
committerGunnar Beutner <gunnar.beutner@netways.de>
Tue, 24 Jul 2012 13:38:30 +0000 (15:38 +0200)
cib/service.cpp
cib/servicestatusmessage.cpp
cib/servicestatusmessage.h
components/checker/checkercomponent.cpp
components/cibsync/cibsynccomponent.cpp
components/convenience/conveniencecomponent.cpp

index 75ec64a353ff92b93a5df38c68cc76bfe26fb584..ff9ccd8d00e4d35a7847532dcfeb9ab6b27a22f4 100644 (file)
@@ -301,6 +301,12 @@ time_t Service::GetLastHardStateChange(void) const
 
 void Service::ApplyCheckResult(const CheckResult& cr)
 {
+       time_t now;
+       time(&now);
+
+       ServiceState old_state = GetState();
+       ServiceStateType old_stateType = GetStateType();
+
        long attempt = GetCurrentCheckAttempt();
 
        if (cr.GetState() == StateOK) {
@@ -320,6 +326,17 @@ void Service::ApplyCheckResult(const CheckResult& cr)
 
        SetCurrentCheckAttempt(attempt);
        SetState(cr.GetState());
+
+       SetLastCheckResult(cr);
+
+       if (old_state != GetState()) {
+               SetLastStateChange(now);
+
+               if (old_stateType != GetStateType())
+                       SetLastHardStateChange(now);
+       }
+
+       UpdateNextCheck();
 }
 
 ServiceState Service::StateFromString(const string& state)
index 02c6a3f16c0807c64b476fba007293b3111b07cd..3b0e95adb0f7f1d17e858c2d15d76f9a2e43d62f 100644 (file)
@@ -61,16 +61,6 @@ void ServiceStatusMessage::SetStateType(ServiceStateType type)
        Set("state_type", static_cast<long>(type));
 }
 
-bool ServiceStatusMessage::GetCurrentCheckAttempt(long *attempt) const
-{
-       return Get("current_attempt", attempt);
-}
-
-void ServiceStatusMessage::SetCurrentCheckAttempt(long attempt)
-{
-       Set("current_attempt", attempt);
-}
-
 bool ServiceStatusMessage::GetCheckResult(CheckResult *cr) const
 {
        Dictionary::Ptr obj;
index 74fca85a98e251304d220711cfb3289b140bc2d3..6d67d1d3b821fe946e8132f50114298ea558b462 100644 (file)
@@ -38,9 +38,6 @@ public:
        bool GetStateType(ServiceStateType *type) const;
        void SetStateType(ServiceStateType type);
 
-       bool GetCurrentCheckAttempt(long *attempt) const;
-       void SetCurrentCheckAttempt(long attempt);
-
        bool GetCheckResult(CheckResult *cr) const;
        void SetCheckResult(CheckResult cr);
 };
index 4ef7dda1ae27cddcb372f7980d149c40db30d857..24a437231fb7faecd5fde5fcb1c84e8fc9b6423a 100644 (file)
@@ -107,17 +107,11 @@ void CheckerComponent::CheckCompletedHandler(Service service, const ScriptTask::
                if (vresult.IsObjectType<Dictionary>()) {
                        CheckResult result = CheckResult(static_cast<Dictionary::Ptr>(vresult));
 
-                       /* update service state */
-                       service.ApplyCheckResult(result);
-
                        RequestMessage rm;
                        rm.SetMethod("checker::CheckResult");
 
                        ServiceStatusMessage params;
                        params.SetService(service.GetName());
-                       params.SetState(service.GetState());
-                       params.SetStateType(service.GetStateType());
-                       params.SetCurrentCheckAttempt(service.GetCurrentCheckAttempt());
                        params.SetCheckResult(result);
 
                        rm.SetParams(params);
index d3fc478df6070780fdf1c3d325138fa497ef6dfd..a3df2adea73208ffc19fb217652833326cd4081b 100644 (file)
@@ -91,35 +91,9 @@ void CIBSyncComponent::ServiceStatusRequestHandler(const Endpoint::Ptr& sender,
 
        Service service = Service::GetByName(svcname);
 
-       ServiceState state;
-       ServiceStateType stateType;
-       if (params.GetState(&state) && params.GetStateType(&stateType)) {
-               ServiceState old_state = service.GetState();
-               ServiceStateType old_stateType = service.GetStateType();
-
-               if (state != old_state) {
-                       time_t now;
-                       time(&now);
-
-                       service.SetLastStateChange(now);
-
-                       if (old_stateType != stateType)
-                               service.SetLastHardStateChange(now);
-               }
-
-               service.SetState(state);
-               service.SetStateType(stateType);
-       }
-
-       long attempt;
-       if (params.GetCurrentCheckAttempt(&attempt))
-               service.SetCurrentCheckAttempt(attempt);
-
        CheckResult cr;
        if (params.GetCheckResult(&cr))
-               service.SetLastCheckResult(cr);
-
-       service.UpdateNextCheck();
+               service.ApplyCheckResult(cr);
 
        time_t now;
        time(&now);
index 129d61f4c11d5f6384e35c342ecb234111536467..6a21e6182728a28f80a4c9deb6f5bd4266d6fa9e 100644 (file)
@@ -152,6 +152,9 @@ void ConvenienceComponent::HostCommittedHandler(const ConfigItem::Ptr& item)
        if (oldServices) {
                ConfigItem::Ptr service;
                BOOST_FOREACH(tie(tuples::ignore, service), oldServices) {
+                       if (!service)
+                               continue;
+
                        if (!newServices->Contains(service->GetName()))
                                service->Unregister();
                }