diff --git a/library/Director/Objects/IcingaServiceSet.php b/library/Director/Objects/IcingaServiceSet.php index 4ce8c6f2..70903b7d 100644 --- a/library/Director/Objects/IcingaServiceSet.php +++ b/library/Director/Objects/IcingaServiceSet.php @@ -219,11 +219,13 @@ class IcingaServiceSet extends IcingaObject implements ExportInterface 's.*' )->where('service_set_id = ?', $setId); $existingServices = IcingaService::loadAll($db, $sQuery, 'object_name'); + $serviceNames = []; foreach ($services as $service) { if (isset($service->fields)) { unset($service->fields); } $name = $service->object_name; + $serviceNames[] = $name; if (isset($existingServices[$name])) { $existing = $existingServices[$name]; $existing->setProperties((array) $service); @@ -238,6 +240,12 @@ class IcingaServiceSet extends IcingaObject implements ExportInterface } } + foreach ($existingServices as $existing) { + if (!in_array($existing->getObjectName(), $serviceNames)) { + $existing->delete(); + } + } + return $object; }