]> granicus.if.org Git - icinga2/commitdiff
Fix timeperiod update bug.
authorGunnar Beutner <gunnar.beutner@netways.de>
Wed, 18 Sep 2013 22:01:18 +0000 (00:01 +0200)
committerGunnar Beutner <gunnar.beutner@netways.de>
Wed, 18 Sep 2013 22:01:18 +0000 (00:01 +0200)
lib/icinga/timeperiod.cpp

index f5d73f5acfb10b9676d9757aca3a9cc508ba061c..98dc67fd1ee02aae2156e03698648ca90d5de918 100644 (file)
@@ -70,6 +70,8 @@ void TimePeriod::AddSegment(double begin, double end)
 {
        ASSERT(OwnsLock());
 
+       Log(LogDebug, "icinga", "Adding segment '" + Utility::FormatDateTime("%c", begin) + "' <-> '" + Utility::FormatDateTime("%c", end) + "' to TimePeriod '" + GetName() + "'");
+
        if (m_ValidBegin.IsEmpty() || begin < m_ValidBegin)
                m_ValidBegin = begin;
 
@@ -119,6 +121,8 @@ void TimePeriod::RemoveSegment(double begin, double end)
 {
        ASSERT(OwnsLock());
 
+       Log(LogDebug, "icinga", "Removing segment '" + Utility::FormatDateTime("%c", begin) + "' <-> '" + Utility::FormatDateTime("%c", end) + "' from TimePeriod '" + GetName() + "'");
+
        if (m_ValidBegin.IsEmpty() || begin < m_ValidBegin)
                m_ValidBegin = begin;
 
@@ -147,22 +151,26 @@ void TimePeriod::RemoveSegment(double begin, double end)
                }
 
                /* Adjust the begin/end timestamps so as to not overlap with the specified range. */
-               if (segment->Get("begin") < end)
+               if (segment->Get("begin") > begin && segment->Get("begin") < end)
                        segment->Set("begin", end);
 
-               if (segment->Get("end") > begin)
+               if (segment->Get("end") > begin && segment->Get("end") < end)
                        segment->Set("end", begin);
 
                newSegments->Add(segment);
        }
 
        m_Segments = newSegments;
+
+       Dump();
 }
 
 void TimePeriod::PurgeSegments(double end)
 {
        ASSERT(OwnsLock());
 
+       Log(LogDebug, "icinga", "Purging segments older than '" + Utility::FormatDateTime("%c", end) + "' from TimePeriod '" + GetName() + "'");
+
        if (m_ValidBegin.IsEmpty() || end < m_ValidBegin)
                return;
 
@@ -306,6 +314,7 @@ void TimePeriod::Dump(void)
        Array::Ptr segments = m_Segments;
 
        Log(LogDebug, "icinga", "Dumping TimePeriod '" + GetName() + "'");
+       Log(LogDebug, "icinga", "Valid from '" + Utility::FormatDateTime("%c", m_ValidBegin) + "' until '" + Utility::FormatDateTime("%c", m_ValidEnd));
 
        if (segments) {
                ObjectLock dlock(segments);