]> granicus.if.org Git - icinga2/commitdiff
livestatus: more attributes
authorMichael Friedrich <michael.friedrich@netways.de>
Fri, 19 Jul 2013 11:59:39 +0000 (13:59 +0200)
committerMichael Friedrich <michael.friedrich@netways.de>
Fri, 19 Jul 2013 11:59:39 +0000 (13:59 +0200)
refs #4372

components/livestatus/hoststable.cpp
components/livestatus/servicestable.cpp
components/livestatus/statustable.cpp

index 4a9de43935e21539bb07aef3a1aaf92d0d22c1f2..2ad7c0eb92e0a4879fac135b32e17799ccc99836 100644 (file)
 #include "base/dynamictype.h"
 #include "base/objectlock.h"
 #include "base/convert.h"
+#include <boost/algorithm/string/classification.hpp>
 #include <boost/foreach.hpp>
 #include <boost/smart_ptr/make_shared.hpp>
 #include <boost/tuple/tuple.hpp>
+#include <boost/algorithm/string/split.hpp>
 
 using namespace icinga;
 using namespace livestatus;
@@ -537,14 +539,14 @@ Value HostsTable::FlapDetectionEnabledAccessor(const Value& row)
 
 Value HostsTable::CheckFreshnessAccessor(const Value& row)
 {
-       /* TODO */
-       return Empty;
+       /* always enabled */
+       return 1;
 }
 
 Value HostsTable::ProcessPerformanceDataAccessor(const Value& row)
 {
-       /* TODO always enabled */
-       return Value(1);
+       /* always enabled */
+       return 1;
 }
 
 Value HostsTable::AcceptPassiveChecksAccessor(const Value& row)
@@ -560,8 +562,8 @@ Value HostsTable::AcceptPassiveChecksAccessor(const Value& row)
 
 Value HostsTable::EventHandlerEnabledAccessor(const Value& row)
 {
-       /* TODO always enabled */
-       return Value(1);
+       /* always enabled */
+       return 1;
 }
 
 Value HostsTable::AcknowledgementTypeAccessor(const Value& row)
@@ -700,7 +702,7 @@ Value HostsTable::CurrentNotificationNumberAccessor(const Value& row)
 
 Value HostsTable::PendingFlexDowntimeAccessor(const Value& row)
 {
-       /* TODO Host->Service->GetDowntimes->(loop) type flexible? */
+       /* not supported */
        return Empty;
 }
 
@@ -778,8 +780,8 @@ Value HostsTable::NoMoreNotificationsAccessor(const Value& row)
 
 Value HostsTable::CheckFlappingRecoveryNotificationAccessor(const Value& row)
 {
-       /* TODO: if we're flapping, state != OK && notified once, set to true */
-       return Value(0);
+       /* not supported */
+       return Empty;
 }
 
 Value HostsTable::LastCheckAccessor(const Value& row)
@@ -928,14 +930,24 @@ Value HostsTable::FirstNotificationDelayAccessor(const Value& row)
 
 Value HostsTable::LowFlapThresholdAccessor(const Value& row)
 {
-       /* TODO */
-       return Empty;
+       /* use hostcheck service */
+       Service::Ptr hc = static_cast<Host::Ptr>(row)->GetHostCheckService();
+
+       if (!hc)
+               return Empty;
+
+       return hc->GetFlappingThreshold();
 }
 
 Value HostsTable::HighFlapThresholdAccessor(const Value& row)
 {
-       /* TODO */
-       return Empty;
+       /* use hostcheck service */
+       Service::Ptr hc = static_cast<Host::Ptr>(row)->GetHostCheckService();
+
+       if (!hc)
+               return Empty;
+
+       return hc->GetFlappingThreshold();
 }
 
 Value HostsTable::X3dAccessor(const Value& row)
@@ -958,14 +970,38 @@ Value HostsTable::Z3dAccessor(const Value& row)
 
 Value HostsTable::X2dAccessor(const Value& row)
 {
-       /* TODO */
-       return Empty;
+       Dictionary::Ptr custom = static_cast<Host::Ptr>(row)->GetCustom();
+
+       if (!custom)
+               return Empty;
+
+       String coords = custom->Get("2d_coords");
+
+       std::vector<String> tokens;
+       boost::algorithm::split(tokens, coords, boost::is_any_of(","));
+
+       if (tokens.size() != 2)
+               return Empty;
+
+       return tokens[0];
 }
 
 Value HostsTable::Y2dAccessor(const Value& row)
 {
-       /* TODO */
-       return Empty;
+       Dictionary::Ptr custom = static_cast<Host::Ptr>(row)->GetCustom();
+
+       if (!custom)
+               return Empty;
+
+       String coords = custom->Get("2d_coords");
+
+       std::vector<String> tokens;
+       boost::algorithm::split(tokens, coords, boost::is_any_of(","));
+
+       if (tokens.size() != 2)
+               return Empty;
+
+       return tokens[1];
 }
 
 Value HostsTable::LatencyAccessor(const Value& row)
@@ -1019,7 +1055,8 @@ Value HostsTable::InNotificationPeriodAccessor(const Value& row)
                        return (timeperiod->IsInside(Utility::GetTime()) ? 1 : 0);
        }
 
-       return 0;
+       /* none set means always notified */
+       return 1;
 }
 
 Value HostsTable::InCheckPeriodAccessor(const Value& row)
@@ -1032,8 +1069,9 @@ Value HostsTable::InCheckPeriodAccessor(const Value& row)
 
        TimePeriod::Ptr timeperiod = hc->GetCheckPeriod();
 
+       /* none set means always checked */
        if (!timeperiod)
-               return Empty;
+               return 1;
 
        return (timeperiod->IsInside(Utility::GetTime()) ? 1 : 0);
 }
index e99f4ab5869dafb7fb10ce6f16b0e80ba256fbda..5a499f19036e7f7685a55777fc2ec097df1c1c7a 100644 (file)
@@ -583,8 +583,8 @@ Value ServicesTable::AcceptPassiveChecksAccessor(const Value& row)
 
 Value ServicesTable::EventHandlerEnabledAccessor(const Value& row)
 {
-       /* TODO always enabled*/
-       return Value(1);
+       /* always enabled */
+       return 1;
 }
 
 Value ServicesTable::NotificationsEnabledAccessor(const Value& row)
@@ -594,13 +594,13 @@ Value ServicesTable::NotificationsEnabledAccessor(const Value& row)
 
 Value ServicesTable::ProcessPerformanceDataAccessor(const Value& row)
 {
-       /* TODO always enabled */
-       return Value(1);
+       /* always enabled */
+       return 1;
 }
 
 Value ServicesTable::IsExecutingAccessor(const Value& row)
 {
-       /* TODO does that make sense with Icinga2? */
+       /* not supported */
        return Empty;
 }
 
@@ -622,8 +622,8 @@ Value ServicesTable::FlapDetectionEnabledAccessor(const Value& row)
 
 Value ServicesTable::CheckFreshnessAccessor(const Value& row)
 {
-       /* TODO */
-       return Empty;
+       /* always enabled */
+       return 1;
 }
 
 Value ServicesTable::ObsessOverServiceAccessor(const Value& row)
@@ -685,14 +685,12 @@ Value ServicesTable::FirstNotificationDelayAccessor(const Value& row)
 
 Value ServicesTable::LowFlapThresholdAccessor(const Value& row)
 {
-       /* TODO */
-       return Empty;
+       return static_cast<Service::Ptr>(row)->GetFlappingThreshold();
 }
 
 Value ServicesTable::HighFlapThresholdAccessor(const Value& row)
 {
-       /* TODO */
-       return Empty;
+       return static_cast<Service::Ptr>(row)->GetFlappingThreshold();
 }
 
 Value ServicesTable::LatencyAccessor(const Value& row)
@@ -714,8 +712,9 @@ Value ServicesTable::InCheckPeriodAccessor(const Value& row)
 {
        TimePeriod::Ptr timeperiod = static_cast<Service::Ptr>(row)->GetCheckPeriod();
 
+       /* none set means always checked */
        if (!timeperiod)
-               return Empty;
+               return 1;
 
        return (timeperiod->IsInside(Utility::GetTime()) ? 1 : 0);
 }
@@ -732,7 +731,8 @@ Value ServicesTable::InNotificationPeriodAccessor(const Value& row)
                        return (timeperiod->IsInside(Utility::GetTime()) ? 1 : 0);
        }
 
-       return 0;
+       /* none set means always notified */
+       return 1;
 }
 
 Value ServicesTable::ContactsAccessor(const Value& row)
index 2b55375e9d47286914bb416d80e9dbc832d396b7..3524eda4cfedf77952d6ffb980da2b13035e13cc 100644 (file)
@@ -122,13 +122,13 @@ Value StatusTable::NebCallbacksRateAccessor(const Value& row)
 
 Value StatusTable::RequestsAccessor(const Value& row)
 {
-       /* TODO */
+       /* not supported */
        return Empty;
 }
 
 Value StatusTable::RequestsRateAccessor(const Value& row)
 {
-       /* TODO */
+       /* not supported */
        return Empty;
 }
 
@@ -146,49 +146,49 @@ Value StatusTable::ConnectionsRateAccessor(const Value& row)
 
 Value StatusTable::ServiceChecksAccessor(const Value& row)
 {
-       /* TODO */
+       /* not supported */
        return Empty;
 }
 
 Value StatusTable::ServiceChecksRateAccessor(const Value& row)
 {
-       /* TODO */
+       /* not supported */
        return Empty;
 }
 
 Value StatusTable::HostChecksAccessor(const Value& row)
 {
-       /* TODO */
+       /* not supported */
        return Empty;
 }
 
 Value StatusTable::HostChecksRateAccessor(const Value& row)
 {
-       /* TODO */
+       /* not supported */
        return Empty;
 }
 
 Value StatusTable::ForksAccessor(const Value& row)
 {
-       /* TODO */
+       /* not supported */
        return Empty;
 }
 
 Value StatusTable::ForksRateAccessor(const Value& row)
 {
-       /* TODO */
+       /* not supported */
        return Empty;
 }
 
 Value StatusTable::LogMessagesAccessor(const Value& row)
 {
-       /* TODO */
+       /* not supported */
        return Empty;
 }
 
 Value StatusTable::LogMessagesRateAccessor(const Value& row)
 {
-       /* TODO */
+       /* not supported */
        return Empty;
 }
 
@@ -206,25 +206,25 @@ Value StatusTable::ExternalCommandsRateAccessor(const Value& row)
 
 Value StatusTable::LivechecksAccessor(const Value& row)
 {
-       /* TODO */
+       /* not supported */
        return Empty;
 }
 
 Value StatusTable::LivechecksRateAccessor(const Value& row)
 {
-       /* TODO */
+       /* not supported */
        return Empty;
 }
 
 Value StatusTable::LivecheckOverflowsAccessor(const Value& row)
 {
-       /* TODO */
+       /* not supported */
        return Empty;
 }
 
 Value StatusTable::LivecheckOverflowsRateAccessor(const Value& row)
 {
-       /* TODO */
+       /* not supported */
        return Empty;
 }
 
@@ -235,37 +235,37 @@ Value StatusTable::NagiosPidAccessor(const Value& row)
 
 Value StatusTable::EnableNotificationsAccessor(const Value& row)
 {
-       /* TODO - enabled by default*/
+       /* enabled by default*/
        return 1;
 }
 
 Value StatusTable::ExecuteServiceChecksAccessor(const Value& row)
 {
-       /* TODO - enabled by default*/
+       /* enabled by default*/
        return 1;
 }
 
 Value StatusTable::AcceptPassiveServiceChecksAccessor(const Value& row)
 {
-       /* TODO - enabled by default*/
+       /* enabled by default*/
        return 1;
 }
 
 Value StatusTable::ExecuteHostChecksAccessor(const Value& row)
 {
-       /* TODO - enabled by default*/
+       /* enabled by default*/
        return 1;
 }
 
 Value StatusTable::AcceptPassiveHostChecksAccessor(const Value& row)
 {
-       /* TODO - enabled by default*/
+       /* enabled by default*/
        return 1;
 }
 
 Value StatusTable::EnableEventHandlersAccessor(const Value& row)
 {
-       /* TODO - enabled by default*/
+       /* enabled by default*/
        return 1;
 }
 
@@ -283,8 +283,8 @@ Value StatusTable::ObsessOverHostsAccessor(const Value& row)
 
 Value StatusTable::CheckServiceFreshnessAccessor(const Value& row)
 {
-       /* TODO */
-       return Empty;
+       /* enable by default */
+       return 1;
 }
 
 Value StatusTable::CheckHostFreshnessAccessor(const Value& row)
@@ -295,19 +295,19 @@ Value StatusTable::CheckHostFreshnessAccessor(const Value& row)
 
 Value StatusTable::EnableFlapDetectionAccessor(const Value& row)
 {
-       /* TODO - enabled by default*/
+       /* enabled by default*/
        return 1;
 }
 
 Value StatusTable::ProcessPerformanceDataAccessor(const Value& row)
 {
-       /* TODO - enabled by default*/
+       /* enabled by default*/
        return 1;
 }
 
 Value StatusTable::CheckExternalCommandsAccessor(const Value& row)
 {
-       /* TODO - enabled by default*/
+       /* enabled by default*/
        return 1;
 }
 
@@ -318,8 +318,8 @@ Value StatusTable::ProgramStartAccessor(const Value& row)
 
 Value StatusTable::LastCommandCheckAccessor(const Value& row)
 {
-       /* TODO */
-       return Empty;
+       /* always == now */
+       return static_cast<int>(Utility::GetTime());
 }
 
 Value StatusTable::LastLogRotationAccessor(const Value& row)
@@ -351,32 +351,31 @@ Value StatusTable::ProgramVersionAccessor(const Value& row)
 
 Value StatusTable::ExternalCommandBufferSlotsAccessor(const Value& row)
 {
-       /* TODO */
+       /* infinite */
        return Empty;
 }
 
 Value StatusTable::ExternalCommandBufferUsageAccessor(const Value& row)
 {
-       /* TODO */
+       /* not supported */
        return Empty;
 }
 
 Value StatusTable::ExternalCommandBufferMaxAccessor(const Value& row)
 {
-       /* TODO */
+       /* not supported */
        return Empty;
 }
 
 Value StatusTable::CachedLogMessagesAccessor(const Value& row)
 {
-       /* TODO */
+       /* not supported */
        return Empty;
 }
 
 Value StatusTable::LivestatusVersionAccessor(const Value& row)
 {
-       /* TODO */
-       return Empty;
+       return "2.0";
 }
 
 Value StatusTable::LivestatusActiveConnectionsAccessor(const Value& row)
@@ -387,7 +386,7 @@ Value StatusTable::LivestatusActiveConnectionsAccessor(const Value& row)
 
 Value StatusTable::LivestatusQueuedConnectionsAccessor(const Value& row)
 {
-       /* TODO */
+       /* not supported */
        return Empty;
 }