mirror of https://github.com/Icinga/icinga2.git
livestatus: add commandstable name/line
requires conversion of commandline (plain text or array). refs #4372
This commit is contained in:
parent
0a033b0f87
commit
96e1935fb4
|
@ -23,7 +23,10 @@
|
|||
#include "icinga/eventcommand.h"
|
||||
#include "icinga/notificationcommand.h"
|
||||
#include "base/dynamictype.h"
|
||||
#include "base/objectlock.h"
|
||||
#include "base/convert.h"
|
||||
#include <boost/foreach.hpp>
|
||||
#include <boost/algorithm/string/replace.hpp>
|
||||
|
||||
using namespace icinga;
|
||||
using namespace livestatus;
|
||||
|
@ -60,12 +63,46 @@ void CommandsTable::FetchRows(const AddRowFunction& addRowFn)
|
|||
|
||||
Value CommandsTable::NameAccessor(const Value& row)
|
||||
{
|
||||
/* TODO */
|
||||
return Value();
|
||||
String buf;
|
||||
Command::Ptr command = static_cast<Command::Ptr>(row);
|
||||
|
||||
if (command->GetType() == DynamicType::GetByName("CheckCommand"))
|
||||
buf += "check_";
|
||||
if (command->GetType() == DynamicType::GetByName("NotificationCommand"))
|
||||
buf += "notification_";
|
||||
if (command->GetType() == DynamicType::GetByName("EventCommand"))
|
||||
buf += "event_";
|
||||
|
||||
buf += command->GetName();
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
Value CommandsTable::LineAccessor(const Value& row)
|
||||
{
|
||||
/* TODO */
|
||||
return Value();
|
||||
String buf;
|
||||
Command::Ptr command = static_cast<Command::Ptr>(row);
|
||||
|
||||
Value commandLine = command->GetCommandLine();
|
||||
|
||||
if (commandLine.IsObjectType<Array>()) {
|
||||
Array::Ptr args = commandLine;
|
||||
|
||||
ObjectLock olock(args);
|
||||
String arg;
|
||||
BOOST_FOREACH(arg, args) {
|
||||
// This is obviously incorrect for non-trivial cases.
|
||||
String argitem = " \"" + arg + "\"";
|
||||
boost::algorithm::replace_all(argitem, "\n", "\\n");
|
||||
buf += argitem;
|
||||
}
|
||||
} else if (!commandLine.IsEmpty()) {
|
||||
String args = Convert::ToString(commandLine);
|
||||
boost::algorithm::replace_all(args, "\n", "\\n");
|
||||
buf += args;
|
||||
} else {
|
||||
buf += "<internal>";
|
||||
}
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue