From: Michael Friedrich Date: Thu, 26 Sep 2013 19:53:43 +0000 (+0200) Subject: Add check authority to service. X-Git-Tag: v0.0.3~383 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e07183d4816998c92749fee061df8cf12b26bc1c;p=icinga2 Add check authority to service. fixes #4762 --- diff --git a/components/compat/statusdatawriter.cpp b/components/compat/statusdatawriter.cpp index 0c4bcc131..56a98506c 100644 --- a/components/compat/statusdatawriter.cpp +++ b/components/compat/statusdatawriter.cpp @@ -334,6 +334,7 @@ void StatusDataWriter::DumpServiceStatusAttrs(std::ostream& fp, const Service::P << "\t" << "plugin_output=" << attrs->Get("plugin_output") << "\n" << "\t" << "long_plugin_output=" << attrs->Get("long_plugin_output") << "\n" << "\t" << "performance_data=" << attrs->Get("performance_data") << "\n" + << "\t" << "check_source=" << attrs->Get("check_source") << "\n" << "\t" << "last_check=" << static_cast(attrs->Get("last_check")) << "\n" << "\t" << "next_check=" << static_cast(attrs->Get("next_check")) << "\n" << "\t" << "current_attempt=" << attrs->Get("current_attempt") << "\n" diff --git a/lib/icinga/compatutility.cpp b/lib/icinga/compatutility.cpp index 103f8cf1f..1932b1d56 100644 --- a/lib/icinga/compatutility.cpp +++ b/lib/icinga/compatutility.cpp @@ -285,6 +285,10 @@ Dictionary::Ptr CompatUtility::GetServiceStatusAttributes(const Service::Ptr& se attr->Set("next_notification", next_notification); attr->Set("current_notification_number", notification_number); + String authority = service->GetCheckResultAuthority(); + if (!authority.IsEmpty()) + attr->Set("check_source", authority); + return attr; } diff --git a/lib/icinga/service-check.cpp b/lib/icinga/service-check.cpp index 5d4fe64ed..ca22a56b4 100644 --- a/lib/icinga/service-check.cpp +++ b/lib/icinga/service-check.cpp @@ -603,6 +603,9 @@ void Service::ProcessCheckResult(const Dictionary::Ptr& cr, const String& author olock.Lock(); SetLastCheckResult(cr); + if (!authority.IsEmpty()) + SetCheckResultAuthority(authority); + bool was_flapping, is_flapping; was_flapping = IsFlapping(); diff --git a/lib/icinga/service.cpp b/lib/icinga/service.cpp index 465befd99..7dcb94cfe 100644 --- a/lib/icinga/service.cpp +++ b/lib/icinga/service.cpp @@ -328,6 +328,19 @@ std::set Service::GetParentServices(void) const return parents; } +void Service::SetCheckResultAuthority(const String& authority) +{ + m_CheckResultAuthority = authority; +} + +String Service::GetCheckResultAuthority(void) const +{ + if (m_CheckResultAuthority.IsEmpty()) + return "(local)"; + else + return m_CheckResultAuthority; +} + bool Service::ResolveMacro(const String& macro, const Dictionary::Ptr& cr, String *result) const { if (macro == "SERVICEDESC") { diff --git a/lib/icinga/service.h b/lib/icinga/service.h index 4d4203c5d..1fbcfc865 100644 --- a/lib/icinga/service.h +++ b/lib/icinga/service.h @@ -142,6 +142,9 @@ public: void AcknowledgeProblem(const String& author, const String& comment, AcknowledgementType type, double expiry = 0, const String& authority = String()); void ClearAcknowledgement(const String& authority = String()); + void SetCheckResultAuthority(const String& authority); + String GetCheckResultAuthority(void) const; + /* Checks */ shared_ptr GetCheckCommand(void) const; long GetMaxCheckAttempts(void) const; @@ -352,6 +355,7 @@ private: Value m_AcknowledgementExpiry; String m_HostName; Value m_Volatile; + String m_CheckResultAuthority; /* Checks */ String m_CheckCommand;