From: Michael Friedrich Date: Sat, 11 Apr 2015 09:40:14 +0000 (+0200) Subject: DB IDO: Fix status table scheduled_downtime_depth column not updated on downtime... X-Git-Tag: v2.3.4~18 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=876bccd745141d407ffd1d9d5205e27c68dbf043;p=icinga2 DB IDO: Fix status table scheduled_downtime_depth column not updated on downtime removal/end fixes #9017 --- diff --git a/lib/db_ido/dbevents.cpp b/lib/db_ido/dbevents.cpp index 5e5da592a..fe04c8a43 100644 --- a/lib/db_ido/dbevents.cpp +++ b/lib/db_ido/dbevents.cpp @@ -610,6 +610,37 @@ void DbEvents::RemoveDowntime(const Checkable::Ptr& checkable, const Downtime::P query3.WhereCriteria->Set("instance_id", 0); /* DbConnection class fills in real ID */ DbObject::OnQuery(query3); + + /* host/service status */ + Host::Ptr host; + Service::Ptr service; + tie(host, service) = GetHostService(checkable); + + DbQuery query4; + if (service) + query4.Table = "servicestatus"; + else + query4.Table = "hoststatus"; + + query4.Type = DbQueryInsert | DbQueryUpdate; + query4.Category = DbCatState; + query4.StatusUpdate = true; + query4.Object = DbObject::GetOrCreateByObject(checkable); + + Dictionary::Ptr fields4 = new Dictionary(); + fields4->Set("scheduled_downtime_depth", checkable->GetDowntimeDepth()); + + query4.Fields = fields4; + + query4.WhereCriteria = new Dictionary(); + if (service) + query4.WhereCriteria->Set("service_object_id", service); + else + query4.WhereCriteria->Set("host_object_id", host); + + query4.WhereCriteria->Set("instance_id", 0); /* DbConnection class fills in real ID */ + + DbObject::OnQuery(query4); } void DbEvents::TriggerDowntime(const Checkable::Ptr& checkable, const Downtime::Ptr& downtime)