From: Gunnar Beutner Date: Thu, 5 Mar 2015 19:50:27 +0000 (+0100) Subject: Add missing service name in check results X-Git-Tag: v2.3.0~24 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9181d7ae0551fd80c2d55750bd77f42c620fdd75;p=icinga2 Add missing service name in check results refs #8257 --- diff --git a/lib/base/dictionary.cpp b/lib/base/dictionary.cpp index 509da9565..10c5f7bf1 100644 --- a/lib/base/dictionary.cpp +++ b/lib/base/dictionary.cpp @@ -194,6 +194,17 @@ void Dictionary::Remove(Dictionary::Iterator it) m_Data.erase(it); } +/** + * Removes all dictionary items. + */ +void Dictionary::Clear(void) +{ + ASSERT(!OwnsLock()); + ObjectLock olock(this); + + m_Data.clear(); +} + void Dictionary::CopyTo(const Dictionary::Ptr& dest) const { ASSERT(!OwnsLock()); diff --git a/lib/base/dictionary.hpp b/lib/base/dictionary.hpp index d6fdefdfd..71b206f60 100644 --- a/lib/base/dictionary.hpp +++ b/lib/base/dictionary.hpp @@ -62,6 +62,8 @@ public: void Remove(const String& key); void Remove(Iterator it); + void Clear(void); + void CopyTo(const Dictionary::Ptr& dest) const; Dictionary::Ptr ShallowClone(void) const; diff --git a/lib/icinga/apievents.cpp b/lib/icinga/apievents.cpp index c9ca1ea53..a7b0a31e9 100644 --- a/lib/icinga/apievents.cpp +++ b/lib/icinga/apievents.cpp @@ -1535,9 +1535,12 @@ Value ApiEvents::ExecuteCommandAPIHandler(const MessageOrigin& origin, const Dic Deserialize(host, attrs, false, FAConfig); + if (params->Contains("service")) + host->SetExtension("agent_service_name", params->Get("service")); + CheckResult::Ptr cr = new CheckResult(); cr->SetState(ServiceUnknown); - cr->SetOutput("'" + listener->GetName() + "' does not accept commands."); + cr->SetOutput("Endpoint '" + Endpoint::GetLocalEndpoint()->GetName() + "' does not accept commands."); Dictionary::Ptr message = MakeCheckResultMessage(host, cr); listener->SyncSendMessage(sourceEndpoint, message); @@ -1551,6 +1554,11 @@ Value ApiEvents::ExecuteCommandAPIHandler(const MessageOrigin& origin, const Dic attrs->Set("__name", params->Get("host")); attrs->Set("type", "Host"); + Deserialize(host, attrs, false, FAConfig); + + if (params->Contains("service")) + host->SetExtension("agent_service_name", params->Get("service")); + String command = params->Get("command"); String command_type = params->Get("command_type"); @@ -1569,14 +1577,12 @@ Value ApiEvents::ExecuteCommandAPIHandler(const MessageOrigin& origin, const Dic } else return Empty; + attrs->Clear(); attrs->Set(command_type, params->Get("command")); attrs->Set("command_endpoint", sourceEndpoint->GetName()); Deserialize(host, attrs, false, FAConfig); - if (params->Contains("service")) - host->SetExtension("agent_service_name", params->Get("service")); - host->SetExtension("agent_check", true); static_pointer_cast(host)->OnStateLoaded();