mirror of https://github.com/Icinga/icinga2.git
Add SCHEDULE_AND_PROPAGATE{,_TRIGGERED}_HOST_DOWNTIME external commands
refs #10896 refs #10897
This commit is contained in:
parent
f48e99c710
commit
86f162af85
|
@ -1137,8 +1137,6 @@ The following external commands are not supported:
|
|||
ENABLE_SERVICE_FRESHNESS_CHECKS
|
||||
READ_STATE_INFORMATION
|
||||
SAVE_STATE_INFORMATION
|
||||
SCHEDULE_AND_PROPAGATE_HOST_DOWNTIME
|
||||
SCHEDULE_AND_PROPAGATE_TRIGGERED_HOST_DOWNTIME
|
||||
SET_HOST_NOTIFICATION_NUMBER
|
||||
SET_SVC_NOTIFICATION_NUMBER
|
||||
START_ACCEPTING_PASSIVE_HOST_CHECKS
|
||||
|
|
|
@ -47,6 +47,8 @@ Additional details can be found in the [Icinga 1.x Documentation](http://docs.ic
|
|||
PROCESS_FILE | ;<file_name>;<delete> (2) | -
|
||||
SCHEDULE_SVC_DOWNTIME | ;<host_name>;<service_name>;<start_time>;<end_time>;<fixed>;<trigger_id>;<duration>;<author>;<comment> (9) | -
|
||||
DEL_SVC_DOWNTIME | ;<downtime_id> (1) | -
|
||||
SCHEDULE_AND_PROPAGATE_HOST_DOWNTIME | ;<host_name>;<start_time>;<end_time>;<fixed>;<trigger_id>;<duration>;<author>;<comment> (8) | -
|
||||
SCHEDULE_AND_PROPAGATE_TRIGGERED_HOST_DOWNTIME | ;<host_name>;<start_time>;<end_time>;<fixed>;<trigger_id>;<duration>;<author>;<comment> (8) | -
|
||||
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) | -
|
||||
|
|
|
@ -193,6 +193,8 @@ void ExternalCommandProcessor::StaticInitialize(void)
|
|||
RegisterCommand("SCHEDULE_SVC_DOWNTIME", &ExternalCommandProcessor::ScheduleSvcDowntime, 9);
|
||||
RegisterCommand("DEL_SVC_DOWNTIME", &ExternalCommandProcessor::DelSvcDowntime, 1);
|
||||
RegisterCommand("SCHEDULE_HOST_DOWNTIME", &ExternalCommandProcessor::ScheduleHostDowntime, 8);
|
||||
RegisterCommand("SCHEDULE_AND_PROPAGATE_HOST_DOWNTIME", &ExternalCommandProcessor::ScheduleAndPropagateHostDowntime, 8);
|
||||
RegisterCommand("SCHEDULE_AND_PROPAGATE_TRIGGERED_HOST_DOWNTIME", &ExternalCommandProcessor::ScheduleAndPropagateTriggeredHostDowntime, 8);
|
||||
RegisterCommand("DEL_HOST_DOWNTIME", &ExternalCommandProcessor::DelHostDowntime, 1);
|
||||
RegisterCommand("DEL_DOWNTIME_BY_HOST_NAME", &ExternalCommandProcessor::DelDowntimeByHostName, 1, 4);
|
||||
RegisterCommand("SCHEDULE_HOST_SVC_DOWNTIME", &ExternalCommandProcessor::ScheduleHostSvcDowntime, 8);
|
||||
|
@ -1001,6 +1003,78 @@ void ExternalCommandProcessor::ScheduleHostDowntime(double, const std::vector<St
|
|||
Convert::ToBool(is_fixed), triggeredBy, Convert::ToDouble(arguments[5]));
|
||||
}
|
||||
|
||||
void ExternalCommandProcessor::ScheduleAndPropagateHostDowntime(double, const std::vector<String>& arguments)
|
||||
{
|
||||
Host::Ptr host = Host::GetByName(arguments[0]);
|
||||
|
||||
if (!host)
|
||||
BOOST_THROW_EXCEPTION(std::invalid_argument("Cannot schedule and propagate host downtime for non-existent host '" + arguments[0] + "'"));
|
||||
|
||||
String triggeredBy;
|
||||
int triggeredByLegacy = Convert::ToLong(arguments[4]);
|
||||
int is_fixed = Convert::ToLong(arguments[3]);
|
||||
if (triggeredByLegacy != 0)
|
||||
triggeredBy = Downtime::GetDowntimeIDFromLegacyID(triggeredByLegacy);
|
||||
|
||||
Log(LogNotice, "ExternalCommandProcessor")
|
||||
<< "Creating downtime for host " << host->GetName();
|
||||
|
||||
(void) Downtime::AddDowntime(host, arguments[6], arguments[7],
|
||||
Convert::ToDouble(arguments[1]), Convert::ToDouble(arguments[2]),
|
||||
Convert::ToBool(is_fixed), triggeredBy, Convert::ToDouble(arguments[5]));
|
||||
|
||||
/* Schedule downtime for all child hosts */
|
||||
BOOST_FOREACH(const Checkable::Ptr& child, host->GetChildren()) {
|
||||
Host::Ptr host;
|
||||
Service::Ptr service;
|
||||
tie(host, service) = GetHostService(child);
|
||||
|
||||
/* ignore all service children */
|
||||
if (service)
|
||||
continue;
|
||||
|
||||
(void) Downtime::AddDowntime(child, arguments[6], arguments[7],
|
||||
Convert::ToDouble(arguments[1]), Convert::ToDouble(arguments[2]),
|
||||
Convert::ToBool(is_fixed), triggeredBy, Convert::ToDouble(arguments[5]));
|
||||
}
|
||||
}
|
||||
|
||||
void ExternalCommandProcessor::ScheduleAndPropagateTriggeredHostDowntime(double, const std::vector<String>& arguments)
|
||||
{
|
||||
Host::Ptr host = Host::GetByName(arguments[0]);
|
||||
|
||||
if (!host)
|
||||
BOOST_THROW_EXCEPTION(std::invalid_argument("Cannot schedule and propagate triggered host downtime for non-existent host '" + arguments[0] + "'"));
|
||||
|
||||
String triggeredBy;
|
||||
int triggeredByLegacy = Convert::ToLong(arguments[4]);
|
||||
int is_fixed = Convert::ToLong(arguments[3]);
|
||||
if (triggeredByLegacy != 0)
|
||||
triggeredBy = Downtime::GetDowntimeIDFromLegacyID(triggeredByLegacy);
|
||||
|
||||
Log(LogNotice, "ExternalCommandProcessor")
|
||||
<< "Creating downtime for host " << host->GetName();
|
||||
|
||||
String parentDowntime = Downtime::AddDowntime(host, arguments[6], arguments[7],
|
||||
Convert::ToDouble(arguments[1]), Convert::ToDouble(arguments[2]),
|
||||
Convert::ToBool(is_fixed), triggeredBy, Convert::ToDouble(arguments[5]));
|
||||
|
||||
/* Schedule downtime for all child hosts and explicitely trigger them through the parent host's downtime */
|
||||
BOOST_FOREACH(const Checkable::Ptr& child, host->GetChildren()) {
|
||||
Host::Ptr host;
|
||||
Service::Ptr service;
|
||||
tie(host, service) = GetHostService(child);
|
||||
|
||||
/* ignore all service children */
|
||||
if (service)
|
||||
continue;
|
||||
|
||||
(void) Downtime::AddDowntime(child, arguments[6], arguments[7],
|
||||
Convert::ToDouble(arguments[1]), Convert::ToDouble(arguments[2]),
|
||||
Convert::ToBool(is_fixed), parentDowntime, Convert::ToDouble(arguments[5]));
|
||||
}
|
||||
}
|
||||
|
||||
void ExternalCommandProcessor::DelHostDowntime(double, const std::vector<String>& arguments)
|
||||
{
|
||||
int id = Convert::ToLong(arguments[0]);
|
||||
|
|
|
@ -82,6 +82,8 @@ private:
|
|||
static void ScheduleSvcDowntime(double time, const std::vector<String>& arguments);
|
||||
static void DelSvcDowntime(double time, const std::vector<String>& arguments);
|
||||
static void ScheduleHostDowntime(double time, const std::vector<String>& arguments);
|
||||
static void ScheduleAndPropagateHostDowntime(double, const std::vector<String>& arguments);
|
||||
static void ScheduleAndPropagateTriggeredHostDowntime(double, 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);
|
||||
|
|
Loading…
Reference in New Issue