]> granicus.if.org Git - icinga2/commitdiff
Add missing service name in check results
authorGunnar Beutner <gunnar@beutner.name>
Thu, 5 Mar 2015 19:50:27 +0000 (20:50 +0100)
committerGunnar Beutner <gunnar@beutner.name>
Thu, 5 Mar 2015 19:50:27 +0000 (20:50 +0100)
refs #8257

lib/base/dictionary.cpp
lib/base/dictionary.hpp
lib/icinga/apievents.cpp

index 509da9565b78f17db31ebc69e0053adac0d8af72..10c5f7bf1248d7deec2edb94de59200a9afff5fb 100644 (file)
@@ -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());
index d6fdefdfd84e44a4b42401cab1289afc127043ba..71b206f601831f1212efc43801fa49e2b2c2a7fc 100644 (file)
@@ -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;
 
index c9ca1ea53d93e096d329574f6113c141839e6b76..a7b0a31e96be5477b6afa0df005ac0b2193cd039 100644 (file)
@@ -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<DynamicObject>(host)->OnStateLoaded();