[icinga-checkins] icinga.org: icinga2/master: objects.cache: Implement service dependencies

git at icinga.org git at icinga.org
Wed Feb 6 22:41:52 CET 2013


Module: icinga2
Branch: master
Commit: a64fa1b9944a9a8522502563181e31bb153c1fe9
URL:    https://git.icinga.org/?p=icinga2.git;a=commit;h=a64fa1b9944a9a8522502563181e31bb153c1fe9

Author: Gunnar Beutner <gunnar.beutner at netways.de>
Date:   Wed Feb  6 22:41:40 2013 +0100

objects.cache: Implement service dependencies

Fixes #3639

---

 components/compat/compatcomponent.cpp |   25 +++++++++++++++++++++++--
 1 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/components/compat/compatcomponent.cpp b/components/compat/compatcomponent.cpp
index 65354c5..4b294c7 100644
--- a/components/compat/compatcomponent.cpp
+++ b/components/compat/compatcomponent.cpp
@@ -36,7 +36,7 @@ String CompatComponent::GetStatusPath(void) const
 {
 	Value statusPath = GetConfig()->Get("status_path");
 	if (statusPath.IsEmpty())
-		return Application::GetLocalStateDir() + "/cache/status.dat";
+		return Application::GetLocalStateDir() + "/cache/icinga2/status.dat";
 	else
 		return statusPath;
 }
@@ -50,7 +50,7 @@ String CompatComponent::GetObjectsPath(void) const
 {
 	Value objectsPath = GetConfig()->Get("objects_path");
 	if (objectsPath.IsEmpty())
-		return Application::GetLocalStateDir() + "/cache/objects.cache";
+		return Application::GetLocalStateDir() + "/cache/icinga2/objects.cache";
 	else
 		return objectsPath;
 }
@@ -384,6 +384,27 @@ void CompatComponent::DumpServiceObject(ofstream& fp, const Service::Ptr& servic
 	   << "\t" << "passive_checks_enabled" << "\t" << (service->GetEnablePassiveChecks() ? 1 : 0) << "\n"
 	   << "\t" << "}" << "\n"
 	   << "\n";
+
+	Dictionary::Ptr dependencies = boost::make_shared<Dictionary>();
+	service->GetDependenciesRecursive(dependencies);
+
+	Value dependency;
+	BOOST_FOREACH(tie(tuples::ignore, dependency), dependencies) {
+		Service::Ptr depService = Service::GetByName(dependency);
+
+		/* ignore ourselves */
+		if (depService->GetName() == service->GetName())
+			continue;
+
+		fp << "define servicedependency {" << "\n"
+		   << "\t" << "dependent_host_name" << "\t" << service->GetHost()->GetName() << "\n"
+		   << "\t" << "dependent_service_description" << "\t" << service->GetName() << "\n"
+		   << "\t" << "host_name" << "\t" << depService->GetHost()->GetName() << "\n"
+		   << "\t" << "service_description" << "\t" << depService->GetName() << "\n"
+		   << "\t" << "execution_failure_criteria" << "\t" << "n" << "\n"
+		   << "\t" << "}" << "\n"
+		   << "\n";
+	}
 }
 
 /**





More information about the icinga-checkins mailing list