diff --git a/components/livestatus/hoststable.cpp b/components/livestatus/hoststable.cpp index 27437617b..819802d67 100644 --- a/components/livestatus/hoststable.cpp +++ b/components/livestatus/hoststable.cpp @@ -681,8 +681,21 @@ Value HostsTable::HasBeenCheckedAccessor(const Value& row) Value HostsTable::CurrentNotificationNumberAccessor(const Value& row) { - /* TODO Host->Service->GetNotifications->(loop) new attribute */ - return Empty; + /* use hostcheck service */ + Service::Ptr hc = static_cast(row)->GetHostCheckService(); + + if (!hc) + return Empty; + + /* XXX Service -> Notifications, biggest wins */ + int notification_number = 0; + BOOST_FOREACH(const Notification::Ptr& notification, hc->GetNotifications()) { + if (notification->GetNotificationNumber() > notification_number) + notification_number = notification->GetNotificationNumber(); + } + + return notification_number; + } Value HostsTable::PendingFlexDowntimeAccessor(const Value& row) diff --git a/components/livestatus/servicestable.cpp b/components/livestatus/servicestable.cpp index 0b2d67d34..b914ad4e3 100644 --- a/components/livestatus/servicestable.cpp +++ b/components/livestatus/servicestable.cpp @@ -543,8 +543,16 @@ Value ServicesTable::NextNotificationAccessor(const Value& row) Value ServicesTable::CurrentNotificationNumberAccessor(const Value& row) { - /* TODO not implemented yet */ - return Empty; + Service::Ptr service = static_cast(row); + + /* XXX Service -> Notifications, biggest wins */ + int notification_number = 0; + BOOST_FOREACH(const Notification::Ptr& notification, service->GetNotifications()) { + if (notification->GetNotificationNumber() > notification_number) + notification_number = notification->GetNotificationNumber(); + } + + return notification_number; } Value ServicesTable::LastStateChangeAccessor(const Value& row)