Nagios module: minor change, added "start" parameter (#61562)
* Finished implementing the "start" parameter to the nagios module. The backend functions already had it; this change just exposes it. This allows setting the time a Nagios outage begins rather than always starting at the time the module was run. If not provided, "start" defaults to the current time (preserving compability with existing playbooks). * Changed default start time to None, as per comment by @goneri. This avoids initializing the variable twice.
This commit is contained in:
parent
b8cd4c5409
commit
09fca101b7
2 changed files with 42 additions and 19 deletions
5
changelogs/fragments/61562-nagios-start.yaml
Normal file
5
changelogs/fragments/61562-nagios-start.yaml
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
minor_changes:
|
||||||
|
- nagios module - a start parameter has been added, allowing the time a
|
||||||
|
Nagios outage starts to be set. It defaults to the current time if not
|
||||||
|
provided, preserving the previous behavior and ensuring compatibility with
|
||||||
|
existing playbooks.
|
|
@ -61,6 +61,10 @@ options:
|
||||||
description:
|
description:
|
||||||
- Comment for C(downtime) action.
|
- Comment for C(downtime) action.
|
||||||
default: Scheduling downtime
|
default: Scheduling downtime
|
||||||
|
start:
|
||||||
|
version_added: "2.10"
|
||||||
|
description:
|
||||||
|
- When downtime should start, in time_t format (epoch seconds).
|
||||||
minutes:
|
minutes:
|
||||||
description:
|
description:
|
||||||
- Minutes to schedule downtime for.
|
- Minutes to schedule downtime for.
|
||||||
|
@ -104,6 +108,14 @@ EXAMPLES = '''
|
||||||
service: host
|
service: host
|
||||||
host: '{{ inventory_hostname }}'
|
host: '{{ inventory_hostname }}'
|
||||||
|
|
||||||
|
# schedule an hour of HOST downtime starting at 2019-04-23T02:00:00+00:00
|
||||||
|
- nagios:
|
||||||
|
action: downtime
|
||||||
|
start: 1555984800
|
||||||
|
minutes: 60
|
||||||
|
service: host
|
||||||
|
host: '{{ inventory_hostname }}'
|
||||||
|
|
||||||
# schedule an hour of HOST downtime, with a comment describing the reason
|
# schedule an hour of HOST downtime, with a comment describing the reason
|
||||||
- nagios:
|
- nagios:
|
||||||
action: downtime
|
action: downtime
|
||||||
|
@ -261,6 +273,7 @@ def main():
|
||||||
comment=dict(default='Scheduling downtime'),
|
comment=dict(default='Scheduling downtime'),
|
||||||
host=dict(required=False, default=None),
|
host=dict(required=False, default=None),
|
||||||
servicegroup=dict(required=False, default=None),
|
servicegroup=dict(required=False, default=None),
|
||||||
|
start=dict(required=False, default=None),
|
||||||
minutes=dict(default=30, type='int'),
|
minutes=dict(default=30, type='int'),
|
||||||
cmdfile=dict(default=which_cmdfile()),
|
cmdfile=dict(default=which_cmdfile()),
|
||||||
services=dict(default=None, aliases=['service']),
|
services=dict(default=None, aliases=['service']),
|
||||||
|
@ -271,6 +284,7 @@ def main():
|
||||||
action = module.params['action']
|
action = module.params['action']
|
||||||
host = module.params['host']
|
host = module.params['host']
|
||||||
servicegroup = module.params['servicegroup']
|
servicegroup = module.params['servicegroup']
|
||||||
|
start = module.params['start']
|
||||||
services = module.params['services']
|
services = module.params['services']
|
||||||
cmdfile = module.params['cmdfile']
|
cmdfile = module.params['cmdfile']
|
||||||
command = module.params['command']
|
command = module.params['command']
|
||||||
|
@ -352,6 +366,7 @@ class Nagios(object):
|
||||||
self.comment = kwargs['comment']
|
self.comment = kwargs['comment']
|
||||||
self.host = kwargs['host']
|
self.host = kwargs['host']
|
||||||
self.servicegroup = kwargs['servicegroup']
|
self.servicegroup = kwargs['servicegroup']
|
||||||
|
self.start = int(kwargs['start'])
|
||||||
self.minutes = kwargs['minutes']
|
self.minutes = kwargs['minutes']
|
||||||
self.cmdfile = kwargs['cmdfile']
|
self.cmdfile = kwargs['cmdfile']
|
||||||
self.command = kwargs['command']
|
self.command = kwargs['command']
|
||||||
|
@ -507,7 +522,7 @@ class Nagios(object):
|
||||||
|
|
||||||
return notif_str
|
return notif_str
|
||||||
|
|
||||||
def schedule_svc_downtime(self, host, services=None, minutes=30):
|
def schedule_svc_downtime(self, host, services=None, minutes=30, start=None):
|
||||||
"""
|
"""
|
||||||
This command is used to schedule downtime for a particular
|
This command is used to schedule downtime for a particular
|
||||||
service.
|
service.
|
||||||
|
@ -526,10 +541,10 @@ class Nagios(object):
|
||||||
services = []
|
services = []
|
||||||
|
|
||||||
for service in services:
|
for service in services:
|
||||||
dt_cmd_str = self._fmt_dt_str(cmd, host, minutes, svc=service)
|
dt_cmd_str = self._fmt_dt_str(cmd, host, minutes, start=start, svc=service)
|
||||||
self._write_command(dt_cmd_str)
|
self._write_command(dt_cmd_str)
|
||||||
|
|
||||||
def schedule_host_downtime(self, host, minutes=30):
|
def schedule_host_downtime(self, host, minutes=30, start=None):
|
||||||
"""
|
"""
|
||||||
This command is used to schedule downtime for a particular
|
This command is used to schedule downtime for a particular
|
||||||
host.
|
host.
|
||||||
|
@ -542,10 +557,10 @@ class Nagios(object):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
cmd = "SCHEDULE_HOST_DOWNTIME"
|
cmd = "SCHEDULE_HOST_DOWNTIME"
|
||||||
dt_cmd_str = self._fmt_dt_str(cmd, host, minutes)
|
dt_cmd_str = self._fmt_dt_str(cmd, host, minutes, start=start)
|
||||||
self._write_command(dt_cmd_str)
|
self._write_command(dt_cmd_str)
|
||||||
|
|
||||||
def schedule_host_svc_downtime(self, host, minutes=30):
|
def schedule_host_svc_downtime(self, host, minutes=30, start=None):
|
||||||
"""
|
"""
|
||||||
This command is used to schedule downtime for
|
This command is used to schedule downtime for
|
||||||
all services associated with a particular host.
|
all services associated with a particular host.
|
||||||
|
@ -558,7 +573,7 @@ class Nagios(object):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
cmd = "SCHEDULE_HOST_SVC_DOWNTIME"
|
cmd = "SCHEDULE_HOST_SVC_DOWNTIME"
|
||||||
dt_cmd_str = self._fmt_dt_str(cmd, host, minutes)
|
dt_cmd_str = self._fmt_dt_str(cmd, host, minutes, start=start)
|
||||||
self._write_command(dt_cmd_str)
|
self._write_command(dt_cmd_str)
|
||||||
|
|
||||||
def delete_host_downtime(self, host, services=None, comment=None):
|
def delete_host_downtime(self, host, services=None, comment=None):
|
||||||
|
@ -580,7 +595,7 @@ class Nagios(object):
|
||||||
dt_del_cmd_str = self._fmt_dt_del_str(cmd, host, svc=service, comment=comment)
|
dt_del_cmd_str = self._fmt_dt_del_str(cmd, host, svc=service, comment=comment)
|
||||||
self._write_command(dt_del_cmd_str)
|
self._write_command(dt_del_cmd_str)
|
||||||
|
|
||||||
def schedule_hostgroup_host_downtime(self, hostgroup, minutes=30):
|
def schedule_hostgroup_host_downtime(self, hostgroup, minutes=30, start=None):
|
||||||
"""
|
"""
|
||||||
This command is used to schedule downtime for all hosts in a
|
This command is used to schedule downtime for all hosts in a
|
||||||
particular hostgroup.
|
particular hostgroup.
|
||||||
|
@ -593,10 +608,10 @@ class Nagios(object):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
cmd = "SCHEDULE_HOSTGROUP_HOST_DOWNTIME"
|
cmd = "SCHEDULE_HOSTGROUP_HOST_DOWNTIME"
|
||||||
dt_cmd_str = self._fmt_dt_str(cmd, hostgroup, minutes)
|
dt_cmd_str = self._fmt_dt_str(cmd, hostgroup, minutes, start=start)
|
||||||
self._write_command(dt_cmd_str)
|
self._write_command(dt_cmd_str)
|
||||||
|
|
||||||
def schedule_hostgroup_svc_downtime(self, hostgroup, minutes=30):
|
def schedule_hostgroup_svc_downtime(self, hostgroup, minutes=30, start=None):
|
||||||
"""
|
"""
|
||||||
This command is used to schedule downtime for all services in
|
This command is used to schedule downtime for all services in
|
||||||
a particular hostgroup.
|
a particular hostgroup.
|
||||||
|
@ -613,10 +628,10 @@ class Nagios(object):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
cmd = "SCHEDULE_HOSTGROUP_SVC_DOWNTIME"
|
cmd = "SCHEDULE_HOSTGROUP_SVC_DOWNTIME"
|
||||||
dt_cmd_str = self._fmt_dt_str(cmd, hostgroup, minutes)
|
dt_cmd_str = self._fmt_dt_str(cmd, hostgroup, minutes, start=start)
|
||||||
self._write_command(dt_cmd_str)
|
self._write_command(dt_cmd_str)
|
||||||
|
|
||||||
def schedule_servicegroup_host_downtime(self, servicegroup, minutes=30):
|
def schedule_servicegroup_host_downtime(self, servicegroup, minutes=30, start=None):
|
||||||
"""
|
"""
|
||||||
This command is used to schedule downtime for all hosts in a
|
This command is used to schedule downtime for all hosts in a
|
||||||
particular servicegroup.
|
particular servicegroup.
|
||||||
|
@ -630,10 +645,10 @@ class Nagios(object):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
cmd = "SCHEDULE_SERVICEGROUP_HOST_DOWNTIME"
|
cmd = "SCHEDULE_SERVICEGROUP_HOST_DOWNTIME"
|
||||||
dt_cmd_str = self._fmt_dt_str(cmd, servicegroup, minutes)
|
dt_cmd_str = self._fmt_dt_str(cmd, servicegroup, minutes, start=start)
|
||||||
self._write_command(dt_cmd_str)
|
self._write_command(dt_cmd_str)
|
||||||
|
|
||||||
def schedule_servicegroup_svc_downtime(self, servicegroup, minutes=30):
|
def schedule_servicegroup_svc_downtime(self, servicegroup, minutes=30, start=None):
|
||||||
"""
|
"""
|
||||||
This command is used to schedule downtime for all services in
|
This command is used to schedule downtime for all services in
|
||||||
a particular servicegroup.
|
a particular servicegroup.
|
||||||
|
@ -651,7 +666,7 @@ class Nagios(object):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
cmd = "SCHEDULE_SERVICEGROUP_SVC_DOWNTIME"
|
cmd = "SCHEDULE_SERVICEGROUP_SVC_DOWNTIME"
|
||||||
dt_cmd_str = self._fmt_dt_str(cmd, servicegroup, minutes)
|
dt_cmd_str = self._fmt_dt_str(cmd, servicegroup, minutes, start=start)
|
||||||
self._write_command(dt_cmd_str)
|
self._write_command(dt_cmd_str)
|
||||||
|
|
||||||
def disable_host_svc_notifications(self, host):
|
def disable_host_svc_notifications(self, host):
|
||||||
|
@ -1002,13 +1017,16 @@ class Nagios(object):
|
||||||
# host or service downtime?
|
# host or service downtime?
|
||||||
if self.action == 'downtime':
|
if self.action == 'downtime':
|
||||||
if self.services == 'host':
|
if self.services == 'host':
|
||||||
self.schedule_host_downtime(self.host, self.minutes)
|
self.schedule_host_downtime(self.host, minutes=self.minutes,
|
||||||
|
start=self.start)
|
||||||
elif self.services == 'all':
|
elif self.services == 'all':
|
||||||
self.schedule_host_svc_downtime(self.host, self.minutes)
|
self.schedule_host_svc_downtime(self.host, minutes=self.minutes,
|
||||||
|
start=self.start)
|
||||||
else:
|
else:
|
||||||
self.schedule_svc_downtime(self.host,
|
self.schedule_svc_downtime(self.host,
|
||||||
services=self.services,
|
services=self.services,
|
||||||
minutes=self.minutes)
|
minutes=self.minutes,
|
||||||
|
start=self.start)
|
||||||
|
|
||||||
elif self.action == 'delete_downtime':
|
elif self.action == 'delete_downtime':
|
||||||
if self.services == 'host':
|
if self.services == 'host':
|
||||||
|
@ -1020,10 +1038,10 @@ class Nagios(object):
|
||||||
|
|
||||||
elif self.action == "servicegroup_host_downtime":
|
elif self.action == "servicegroup_host_downtime":
|
||||||
if self.servicegroup:
|
if self.servicegroup:
|
||||||
self.schedule_servicegroup_host_downtime(servicegroup=self.servicegroup, minutes=self.minutes)
|
self.schedule_servicegroup_host_downtime(servicegroup=self.servicegroup, minutes=self.minutes, start=self.start)
|
||||||
elif self.action == "servicegroup_service_downtime":
|
elif self.action == "servicegroup_service_downtime":
|
||||||
if self.servicegroup:
|
if self.servicegroup:
|
||||||
self.schedule_servicegroup_svc_downtime(servicegroup=self.servicegroup, minutes=self.minutes)
|
self.schedule_servicegroup_svc_downtime(servicegroup=self.servicegroup, minutes=self.minutes, start=self.start)
|
||||||
|
|
||||||
# toggle the host AND service alerts
|
# toggle the host AND service alerts
|
||||||
elif self.action == 'silence':
|
elif self.action == 'silence':
|
||||||
|
|
Loading…
Reference in a new issue