]> granicus.if.org Git - icinga2/blobdiff - lib/livestatus/endpointstable.cpp
Remove more redundant wrappers from CompatUtility class
[icinga2] / lib / livestatus / endpointstable.cpp
index c3d1e37dc5e96c4553a06f13dc44395021cce249..89443ef34276139f06f2ab4dae09cf8f206b2685 100644 (file)
@@ -1,6 +1,6 @@
 /******************************************************************************
  * Icinga 2                                                                   *
- * Copyright (C) 2012-2014 Icinga Development Team (http://www.icinga.org)    *
+ * Copyright (C) 2012-2018 Icinga Development Team (https://www.icinga.com/)  *
  *                                                                            *
  * This program is free software; you can redistribute it and/or              *
  * modify it under the terms of the GNU General Public License                *
 #include "icinga/service.hpp"
 #include "icinga/icingaapplication.hpp"
 #include "remote/endpoint.hpp"
-#include "base/dynamictype.hpp"
+#include "remote/zone.hpp"
+#include "base/configtype.hpp"
 #include "base/objectlock.hpp"
 #include "base/convert.hpp"
 #include "base/utility.hpp"
 #include <boost/algorithm/string/classification.hpp>
-#include <boost/foreach.hpp>
 #include <boost/tuple/tuple.hpp>
 #include <boost/algorithm/string/replace.hpp>
 #include <boost/algorithm/string/split.hpp>
 
 using namespace icinga;
 
-EndpointsTable::EndpointsTable(void)
+EndpointsTable::EndpointsTable()
 {
        AddColumns(this);
 }
 
 void EndpointsTable::AddColumns(Table *table, const String& prefix,
-    const Column::ObjectAccessor& objectAccessor)
+       const Column::ObjectAccessor& objectAccessor)
 {
        table->AddColumn(prefix + "name", Column(&EndpointsTable::NameAccessor, objectAccessor));
        table->AddColumn(prefix + "identity", Column(&EndpointsTable::IdentityAccessor, objectAccessor));
        table->AddColumn(prefix + "node", Column(&EndpointsTable::NodeAccessor, objectAccessor));
        table->AddColumn(prefix + "is_connected", Column(&EndpointsTable::IsConnectedAccessor, objectAccessor));
+       table->AddColumn(prefix + "zone", Column(&EndpointsTable::ZoneAccessor, objectAccessor));
 }
 
-String EndpointsTable::GetName(void) const
+String EndpointsTable::GetName() const
 {
        return "endpoints";
 }
 
-String EndpointsTable::GetPrefix(void) const
+String EndpointsTable::GetPrefix() const
 {
        return "endpoint";
 }
 
 void EndpointsTable::FetchRows(const AddRowFunction& addRowFn)
 {
-       BOOST_FOREACH(const Endpoint::Ptr& endpoint, DynamicType::GetObjectsByType<Endpoint>()) {
-               addRowFn(endpoint);
+       for (const Endpoint::Ptr& endpoint : ConfigType::GetObjectsByType<Endpoint>()) {
+               if (!addRowFn(endpoint, LivestatusGroupByNone, Empty))
+                       return;
        }
 }
 
@@ -102,7 +104,7 @@ Value EndpointsTable::IsConnectedAccessor(const Value& row)
        if (!endpoint)
                return Empty;
 
-       unsigned int is_connected = endpoint->IsConnected() ? 1 : 0;
+       unsigned int is_connected = endpoint->GetConnected() ? 1 : 0;
 
        /* if identity is equal to node, fake is_connected */
        if (endpoint->GetName() == IcingaApplication::GetInstance()->GetNodeName())
@@ -111,5 +113,17 @@ Value EndpointsTable::IsConnectedAccessor(const Value& row)
        return is_connected;
 }
 
+Value EndpointsTable::ZoneAccessor(const Value& row)
+{
+       Endpoint::Ptr endpoint = static_cast<Endpoint::Ptr>(row);
+
+       if (!endpoint)
+               return Empty;
+
+       Zone::Ptr zone = endpoint->GetZone();
 
+       if (!zone)
+               return Empty;
 
+       return zone->GetName();
+}