From: Michael Friedrich Date: Tue, 9 Jul 2013 16:09:03 +0000 (+0200) Subject: livestatus: add commands table (thruk now shows extinfo) X-Git-Tag: v0.0.3~872 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6ce71489c8bd8d43563787b56eb71fbf3cb08823;p=icinga2 livestatus: add commands table (thruk now shows extinfo) refs #4372 --- diff --git a/components/livestatus/Makefile.am b/components/livestatus/Makefile.am index 3a16b1109..2bfaa58d9 100644 --- a/components/livestatus/Makefile.am +++ b/components/livestatus/Makefile.am @@ -18,6 +18,8 @@ liblivestatus_la_SOURCES = \ column.h \ combinerfilter.cpp \ combinerfilter.h \ + commandstable.cpp \ + commandstable.h \ commentstable.cpp \ commentstable.h \ component.cpp \ diff --git a/components/livestatus/commandstable.cpp b/components/livestatus/commandstable.cpp new file mode 100644 index 000000000..4c86e7236 --- /dev/null +++ b/components/livestatus/commandstable.cpp @@ -0,0 +1,71 @@ +/****************************************************************************** + * Icinga 2 * + * Copyright (C) 2012 Icinga Development Team (http://www.icinga.org/) * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License * + * as published by the Free Software Foundation; either version 2 * + * of the License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the Free Software Foundation * + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * + ******************************************************************************/ + +#include "livestatus/commandstable.h" +#include "icinga/icingaapplication.h" +#include "icinga/checkcommand.h" +#include "icinga/eventcommand.h" +#include "icinga/notificationcommand.h" +#include "base/dynamictype.h" +#include + +using namespace icinga; +using namespace livestatus; + +CommandsTable::CommandsTable(void) +{ + AddColumns(this); +} + +void CommandsTable::AddColumns(Table *table, const String& prefix, + const Column::ObjectAccessor& objectAccessor) +{ + table->AddColumn(prefix + "name", Column(&CommandsTable::NameAccessor, objectAccessor)); + table->AddColumn(prefix + "line", Column(&CommandsTable::LineAccessor, objectAccessor)); +} + +String CommandsTable::GetName(void) const +{ + return "command"; +} + +void CommandsTable::FetchRows(const AddRowFunction& addRowFn) +{ + BOOST_FOREACH(const DynamicObject::Ptr& object, DynamicType::GetObjects("CheckCommand")) { + addRowFn(object); + } + BOOST_FOREACH(const DynamicObject::Ptr& object, DynamicType::GetObjects("EventCommand")) { + addRowFn(object); + } + BOOST_FOREACH(const DynamicObject::Ptr& object, DynamicType::GetObjects("NotificationCommand")) { + addRowFn(object); + } +} + +Value CommandsTable::NameAccessor(const Object::Ptr& object) +{ + /* TODO */ + return Value(); +} + +Value CommandsTable::LineAccessor(const Object::Ptr& object) +{ + /* TODO */ + return Value(); +} diff --git a/components/livestatus/commandstable.h b/components/livestatus/commandstable.h new file mode 100644 index 000000000..aca18d624 --- /dev/null +++ b/components/livestatus/commandstable.h @@ -0,0 +1,54 @@ +/****************************************************************************** + * Icinga 2 * + * Copyright (C) 2012 Icinga Development Team (http://www.icinga.org/) * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License * + * as published by the Free Software Foundation; either version 2 * + * of the License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the Free Software Foundation * + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * + ******************************************************************************/ + +#ifndef COMMANDSTABLE_H +#define COMMANDSTABLE_H + +#include "livestatus/table.h" + +using namespace icinga; + +namespace livestatus +{ + +/** + * @ingroup livestatus + */ +class CommandsTable : public Table +{ +public: + DECLARE_PTR_TYPEDEFS(CommandsTable); + + CommandsTable(void); + + static void AddColumns(Table *table, const String& prefix = String(), + const Column::ObjectAccessor& objectAccessor = Column::ObjectAccessor()); + + virtual String GetName(void) const; + +protected: + virtual void FetchRows(const AddRowFunction& addRowFn); + + static Value NameAccessor(const Object::Ptr& object); + static Value LineAccessor(const Object::Ptr& object); +}; + +} + +#endif /* COMMANDSTABLE_H */ diff --git a/components/livestatus/livestatus.vcxproj b/components/livestatus/livestatus.vcxproj index 891587b5c..f6e66b707 100644 --- a/components/livestatus/livestatus.vcxproj +++ b/components/livestatus/livestatus.vcxproj @@ -23,6 +23,7 @@ + @@ -44,6 +45,7 @@ + diff --git a/components/livestatus/livestatus.vcxproj.filters b/components/livestatus/livestatus.vcxproj.filters index cb27231b4..38b49902c 100644 --- a/components/livestatus/livestatus.vcxproj.filters +++ b/components/livestatus/livestatus.vcxproj.filters @@ -60,6 +60,9 @@ Headerdateien + + Headerdateien + Headerdateien @@ -116,6 +119,9 @@ Quelldateien + + Quelldateien + Quelldateien diff --git a/components/livestatus/table.cpp b/components/livestatus/table.cpp index bdb70d192..7c6a18fe2 100644 --- a/components/livestatus/table.cpp +++ b/components/livestatus/table.cpp @@ -23,6 +23,7 @@ #include "livestatus/contactstable.h" #include "livestatus/hoststable.h" #include "livestatus/servicestable.h" +#include "livestatus/commandstable.h" #include "livestatus/commentstable.h" #include "livestatus/downtimestable.h" #include "livestatus/logtable.h" @@ -52,6 +53,8 @@ Table::Ptr Table::GetByName(const String& name) return boost::make_shared(); else if (name == "services") return boost::make_shared(); + else if (name == "commands") + return boost::make_shared(); else if (name == "comments") return boost::make_shared(); else if (name == "downtimes")