mirror of
				https://github.com/Icinga/icinga2.git
				synced 2025-11-03 21:25:56 +01:00 
			
		
		
		
	Implement external command DEL_DOWNTIME_BY_HOST_NAME
Required by Classic UI 1.x, this will hopefully reduce the noise on non-working commands with the old legacy stuff. fixes #8979
This commit is contained in:
		
							parent
							
								
									1314cba61b
								
							
						
					
					
						commit
						766e2d73f4
					
				@ -49,6 +49,7 @@ Additional details can be found in the [Icinga 1.x Documentation](http://docs.ic
 | 
			
		||||
  DEL_SVC_DOWNTIME                          | ;<downtime_id> (1)   | -
 | 
			
		||||
  SCHEDULE_HOST_DOWNTIME                    | ;<host_name>;<start_time>;<end_time>;<fixed>;<trigger_id>;<duration>;<author>;<comment> (8)  | -
 | 
			
		||||
  DEL_HOST_DOWNTIME                         | ;<downtime_id> (1)  | -
 | 
			
		||||
  DEL_DOWNTIME_BY_HOST_NAME                 | ;<host_name>[;<service_name;>[;<start_time;>[;<comment_text;>]]] (1)  | -
 | 
			
		||||
  SCHEDULE_HOST_SVC_DOWNTIME                | ;<host_name>;<start_time>;<end_time>;<fixed>;<trigger_id>;<duration>;<author>;<comment> (8)  | -
 | 
			
		||||
  SCHEDULE_HOSTGROUP_HOST_DOWNTIME          | ;<hostgroup_name>;<start_time>;<end_time>;<fixed>;<trigger_id>;<duration>;<author>;<comment> (8)  | -
 | 
			
		||||
  SCHEDULE_HOSTGROUP_SVC_DOWNTIME           | ;<hostgroup_name>;<start_time>;<end_time>;<fixed>;<trigger_id>;<duration>;<author>;<comment> (8)  | -
 | 
			
		||||
 | 
			
		||||
@ -215,6 +215,7 @@ void ExternalCommandProcessor::StaticInitialize(void)
 | 
			
		||||
	RegisterCommand("DEL_SVC_DOWNTIME", &ExternalCommandProcessor::DelSvcDowntime, 1);
 | 
			
		||||
	RegisterCommand("SCHEDULE_HOST_DOWNTIME", &ExternalCommandProcessor::ScheduleHostDowntime, 8);
 | 
			
		||||
	RegisterCommand("DEL_HOST_DOWNTIME", &ExternalCommandProcessor::DelHostDowntime, 1);
 | 
			
		||||
	RegisterCommand("DEL_DOWNTIME_BY_HOST_NAME", &ExternalCommandProcessor::DelDowntimeByHostName, 1);
 | 
			
		||||
	RegisterCommand("SCHEDULE_HOST_SVC_DOWNTIME", &ExternalCommandProcessor::ScheduleHostSvcDowntime, 8);
 | 
			
		||||
	RegisterCommand("SCHEDULE_HOSTGROUP_HOST_DOWNTIME", &ExternalCommandProcessor::ScheduleHostgroupHostDowntime, 8);
 | 
			
		||||
	RegisterCommand("SCHEDULE_HOSTGROUP_SVC_DOWNTIME", &ExternalCommandProcessor::ScheduleHostgroupSvcDowntime, 8);
 | 
			
		||||
@ -1077,6 +1078,67 @@ void ExternalCommandProcessor::DelHostDowntime(double, const std::vector<String>
 | 
			
		||||
	Service::RemoveDowntime(rid, true);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ExternalCommandProcessor::DelDowntimeByHostName(double, const std::vector<String>& arguments)
 | 
			
		||||
{
 | 
			
		||||
	Host::Ptr host = Host::GetByName(arguments[0]);
 | 
			
		||||
 | 
			
		||||
	if (!host)
 | 
			
		||||
		BOOST_THROW_EXCEPTION(std::invalid_argument("Cannot schedule host services downtime for non-existent host '" + arguments[0] + "'"));
 | 
			
		||||
 | 
			
		||||
	String serviceName;
 | 
			
		||||
	if (arguments.size() >= 2)
 | 
			
		||||
		serviceName = arguments[1];
 | 
			
		||||
 | 
			
		||||
	String startTime;
 | 
			
		||||
	if (arguments.size() >= 3)
 | 
			
		||||
		startTime = arguments[2];
 | 
			
		||||
 | 
			
		||||
	String commentString;
 | 
			
		||||
	if (arguments.size() >= 4)
 | 
			
		||||
		commentString = arguments[3];
 | 
			
		||||
 | 
			
		||||
	if (arguments.size() > 5)
 | 
			
		||||
		Log(LogWarning, "ExternalCommandProcessor")
 | 
			
		||||
		    << ("Ignoring additional parameters for host '" + arguments[0] + "' downtime deletion.");
 | 
			
		||||
 | 
			
		||||
	std::vector<String> ids;
 | 
			
		||||
 | 
			
		||||
	Dictionary::Ptr hostDowntimes = host->GetDowntimes();
 | 
			
		||||
	{
 | 
			
		||||
		ObjectLock dhlock(hostDowntimes);
 | 
			
		||||
		BOOST_FOREACH(const Dictionary::Pair& kv, hostDowntimes) {
 | 
			
		||||
			ids.push_back(kv.first);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	BOOST_FOREACH(const Service::Ptr& service, host->GetServices()) {
 | 
			
		||||
		if (!serviceName.IsEmpty() && serviceName != service->GetName())
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
		Dictionary::Ptr serviceDowntimes = service->GetDowntimes();
 | 
			
		||||
		{
 | 
			
		||||
			ObjectLock dslock(serviceDowntimes);
 | 
			
		||||
			BOOST_FOREACH(const Dictionary::Pair& kv, serviceDowntimes) {
 | 
			
		||||
				ids.push_back(kv.first);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	BOOST_FOREACH(const String& id, ids) {
 | 
			
		||||
		Downtime::Ptr downtime = Service::GetDowntimeByID(id);
 | 
			
		||||
 | 
			
		||||
		if (!startTime.IsEmpty() && downtime->GetStartTime() != Convert::ToDouble(startTime))
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
		if (!commentString.IsEmpty() && downtime->GetComment() != commentString)
 | 
			
		||||
			continue;
 | 
			
		||||
 | 
			
		||||
		Log(LogNotice, "ExternalCommandProcessor")
 | 
			
		||||
		    << "Removing downtime ID " << id;
 | 
			
		||||
		Service::RemoveDowntime(id, true);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ExternalCommandProcessor::ScheduleHostSvcDowntime(double, const std::vector<String>& arguments)
 | 
			
		||||
{
 | 
			
		||||
	Host::Ptr host = Host::GetByName(arguments[0]);
 | 
			
		||||
 | 
			
		||||
@ -81,6 +81,7 @@ private:
 | 
			
		||||
	static void DelSvcDowntime(double time, const std::vector<String>& arguments);
 | 
			
		||||
	static void ScheduleHostDowntime(double time, const std::vector<String>& arguments);
 | 
			
		||||
	static void DelHostDowntime(double time, const std::vector<String>& arguments);
 | 
			
		||||
	static void DelDowntimeByHostName(double, const std::vector<String>& arguments);
 | 
			
		||||
	static void ScheduleHostSvcDowntime(double time, const std::vector<String>& arguments);
 | 
			
		||||
	static void ScheduleHostgroupHostDowntime(double time, const std::vector<String>& arguments);
 | 
			
		||||
	static void ScheduleHostgroupSvcDowntime(double time, const std::vector<String>& arguments);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user