]> granicus.if.org Git - icinga2/commitdiff
Fix perfdata macros.
authorGunnar Beutner <gunnar.beutner@netways.de>
Fri, 15 Mar 2013 12:29:41 +0000 (13:29 +0100)
committerGunnar Beutner <gunnar.beutner@netways.de>
Fri, 15 Mar 2013 12:30:30 +0000 (13:30 +0100)
lib/icinga/service-check.cpp
lib/icinga/service.cpp
lib/icinga/service.h

index f5fe1117fed6200ab321358190c4ec9dac9af038..0ca50cb8b8bbd4d3dad2aca17cae7b4734d9973e 100644 (file)
@@ -468,7 +468,7 @@ void Service::ProcessCheckResult(const Dictionary::Ptr& cr)
        olock.Unlock();
 
        /* Update macros - these are used by event handlers and notifications. */
-       cr->Set("macros", CalculateAllMacros());
+       cr->Set("macros", CalculateAllMacros(cr));
 
        cr->Seal();
 
index cd37f0f917da4e9b9cadd5b1d0f93e52eb0897f3..a7a545a63fee20ddc0ead7a30a43621ecaa2a61e 100644 (file)
@@ -429,7 +429,7 @@ set<Service::Ptr> Service::GetParentServices(void) const
 /**
  * @threadsafety Always.
  */
-Dictionary::Ptr Service::CalculateDynamicMacros(void) const
+Dictionary::Ptr Service::CalculateDynamicMacros(const Dictionary::Ptr& crOverride) const
 {
        Dictionary::Ptr macros = boost::make_shared<Dictionary>();
 
@@ -453,8 +453,11 @@ Dictionary::Ptr Service::CalculateDynamicMacros(void) const
                cr = GetLastCheckResult();
        }
 
+       if (crOverride)
+               cr = crOverride;
+
        if (cr) {
-               ASSERT(cr->IsSealed());
+               ASSERT(crOverride || cr->IsSealed());
 
                macros->Set("SERVICELATENCY", Service::CalculateLatency(cr));
                macros->Set("SERVICEEXECUTIONTIME", Service::CalculateExecutionTime(cr));
@@ -470,14 +473,14 @@ Dictionary::Ptr Service::CalculateDynamicMacros(void) const
        return macros;
 }
 
-Dictionary::Ptr Service::CalculateAllMacros(void) const
+Dictionary::Ptr Service::CalculateAllMacros(const Dictionary::Ptr& crOverride) const
 {
        vector<Dictionary::Ptr> macroDicts;
        macroDicts.push_back(GetMacros());
 
        Host::Ptr host = GetHost();
 
-       macroDicts.push_back(CalculateDynamicMacros());
+       macroDicts.push_back(CalculateDynamicMacros(crOverride));
 
        if (host) {
                macroDicts.push_back(host->GetMacros());
index 328483153082a1b63c6ac68a52c17a0c6cbbe3a7..08ba0caeacf8156189579f10aa07727e2a75923c 100644 (file)
@@ -95,8 +95,8 @@ public:
        String GetHostName(void) const;
        String GetShortName(void) const;
 
-       Dictionary::Ptr CalculateDynamicMacros(void) const;
-       Dictionary::Ptr CalculateAllMacros(void) const;
+       Dictionary::Ptr CalculateDynamicMacros(const Dictionary::Ptr& crOverride = Dictionary::Ptr()) const;
+       Dictionary::Ptr CalculateAllMacros(const Dictionary::Ptr& crOverride = Dictionary::Ptr()) const;
 
        set<Host::Ptr> GetParentHosts(void) const;
        set<Service::Ptr> GetParentServices(void) const;