mirror of https://github.com/Icinga/icinga2.git
Prevent duplicate donwtimes when combining child_options and all_services
This commit is contained in:
parent
e556d3c489
commit
bb0dcdf0b4
|
@ -434,7 +434,21 @@ Dictionary::Ptr ApiActions::ScheduleDowntime(const ConfigObject::Ptr& object,
|
||||||
|
|
||||||
ArrayData childDowntimes;
|
ArrayData childDowntimes;
|
||||||
|
|
||||||
for (const Checkable::Ptr& child : checkable->GetAllChildren()) {
|
std::set<Checkable::Ptr> allChildren = checkable->GetAllChildren();
|
||||||
|
for (const Checkable::Ptr& child : allChildren) {
|
||||||
|
Host::Ptr childHost;
|
||||||
|
Service::Ptr childService;
|
||||||
|
tie(childHost, childService) = GetHostService(child);
|
||||||
|
|
||||||
|
if (allServices && childService &&
|
||||||
|
allChildren.find(static_pointer_cast<Checkable>(childHost)) != allChildren.end()) {
|
||||||
|
/* When scheduling downtimes for all service and all children, the current child is a service, and its
|
||||||
|
* host is also a child, skip it here. The downtime for this service will be scheduled below together
|
||||||
|
* with the downtimes of all services for that host. Scheduling it below ensures that the relation
|
||||||
|
* from the child service downtime to the child host downtime is set properly. */
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
Log(LogNotice, "ApiActions")
|
Log(LogNotice, "ApiActions")
|
||||||
<< "Scheduling downtime for child object " << child->GetName();
|
<< "Scheduling downtime for child object " << child->GetName();
|
||||||
|
|
||||||
|
@ -451,10 +465,6 @@ Dictionary::Ptr ApiActions::ScheduleDowntime(const ConfigObject::Ptr& object,
|
||||||
});
|
});
|
||||||
|
|
||||||
/* For a host, also schedule all service downtimes if requested. */
|
/* For a host, also schedule all service downtimes if requested. */
|
||||||
Host::Ptr childHost;
|
|
||||||
Service::Ptr childService;
|
|
||||||
tie(childHost, childService) = GetHostService(child);
|
|
||||||
|
|
||||||
if (allServices && !childService) {
|
if (allServices && !childService) {
|
||||||
ArrayData childServiceDowntimes;
|
ArrayData childServiceDowntimes;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue