]> granicus.if.org Git - icinga2/commitdiff
Trigger downtimes for NOT-OK states after OnDowntimeAdded()
authorMichael Friedrich <michael.friedrich@netways.de>
Sun, 12 Apr 2015 12:38:35 +0000 (14:38 +0200)
committerMichael Friedrich <michael.friedrich@netways.de>
Sun, 12 Apr 2015 12:41:30 +0000 (14:41 +0200)
The fix in #8389 must happen *after* adding the downtime which signals an
insert into the IDO DB.
Once the downtimes have been added to the database, the additional
trigger_time and is_in_effect can be updated accordingly, *if* the
current object is already in a NOT-OK state.

fixes #9016

lib/icinga/checkable-downtime.cpp

index e32b5356aa15fd79ab01be7741678a60b7e9cc79..bfeda84b2c64856972baecd2231ae18b0800110e 100644 (file)
@@ -104,14 +104,6 @@ String Checkable::AddDowntime(const String& author, const String& comment,
                l_DowntimesCache[uid] = this;
        }
 
-       /* if this object is already in a NOT-OK state trigger this downtime now */
-       if (GetStateRaw() != ServiceOK) {
-               Log(LogNotice, "Checkable")
-                   << "Checkable '" << GetName() << "' already in a NOT-OK state."
-                   << " Triggering downtime now.";
-               TriggerDowntime(uid);
-       }
-
        Log(LogNotice, "Checkable")
            << "Added downtime with ID '" << downtime->GetLegacyId()
            << "' between '" << Utility::FormatDateTime("%Y-%m-%d %H:%M:%S", startTime)
@@ -119,6 +111,17 @@ String Checkable::AddDowntime(const String& author, const String& comment,
 
        OnDowntimeAdded(this, downtime, origin);
 
+       /* if this object is already in a NOT-OK state trigger
+        * this downtime now *after* it has been added (important
+        * for DB IDO, etc.)
+        */
+       if (GetStateRaw() != ServiceOK) {
+               Log(LogNotice, "Checkable")
+                   << "Checkable '" << GetName() << "' already in a NOT-OK state."
+                   << " Triggering downtime now.";
+               TriggerDowntime(uid);
+       }
+
        return uid;
 }