From 13fa284946ce57805b9a359a9741ff9827686519 Mon Sep 17 00:00:00 2001 From: Ruben Tsirunyan Date: Tue, 19 Feb 2019 12:44:00 +0400 Subject: [PATCH] zabbix_action: Adding an option for pausing operations while in maintenance (#52500) * zabbix_action: Adding an option for pausing operations while in maintenance * zabbix_action: Correcting linting errors --- .../monitoring/zabbix/zabbix_action.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/ansible/modules/monitoring/zabbix/zabbix_action.py b/lib/ansible/modules/monitoring/zabbix/zabbix_action.py index e90d43be61f..9c885691388 100644 --- a/lib/ansible/modules/monitoring/zabbix/zabbix_action.py +++ b/lib/ansible/modules/monitoring/zabbix/zabbix_action.py @@ -54,6 +54,12 @@ options: - Status of the action. choices: ['enabled', 'disabled'] default: 'enabled' + pause_in_maintenance: + description: + - Whether to pause escalation during maintenance periods or not. + - Can be used when I(event_source=trigger). + type: 'bool' + default: true esc_period: description: - Default operation step duration. Must be greater than 60 seconds. Accepts seconds, time unit with suffix and user macro. @@ -761,7 +767,8 @@ class Action(object): Returns: dict: dictionary of specified parameters """ - return { + + _params = { 'name': kwargs['name'], 'eventsource': to_numeric_value([ 'trigger', @@ -783,6 +790,12 @@ class Action(object): 'enabled', 'disabled'], kwargs['status']) } + if float(self._zapi.api_version().rsplit('.', 1)[0]) >= 4.0: + _params['pause_suppressed'] = '1' if kwargs['pause_in_maintenance'] else '0' + else: + _params['maintenance_mode'] = '1' if kwargs['pause_in_maintenance'] else '0' + + return _params def check_difference(self, **kwargs): """Check difference between action and user specified parameters. @@ -1609,6 +1622,7 @@ def main(): event_source=dict(type='str', required=True, choices=['trigger', 'discovery', 'auto_registration', 'internal']), state=dict(type='str', required=False, default='present', choices=['present', 'absent']), status=dict(type='str', required=False, default='enabled', choices=['enabled', 'disabled']), + pause_in_maintenance=dict(type='bool', required=False, default=True), default_message=dict(type='str', required=False, default=None), default_subject=dict(type='str', required=False, default=None), recovery_default_message=dict(type='str', required=False, default=None), @@ -1640,6 +1654,7 @@ def main(): event_source = module.params['event_source'] state = module.params['state'] status = module.params['status'] + pause_in_maintenance = module.params['pause_in_maintenance'] default_message = module.params['default_message'] default_subject = module.params['default_subject'] recovery_default_message = module.params['recovery_default_message'] @@ -1682,6 +1697,7 @@ def main(): event_source=event_source, esc_period=esc_period, status=status, + pause_in_maintenance=pause_in_maintenance, default_message=default_message, default_subject=default_subject, recovery_default_message=recovery_default_message, @@ -1711,6 +1727,7 @@ def main(): event_source=event_source, esc_period=esc_period, status=status, + pause_in_maintenance=pause_in_maintenance, default_message=default_message, default_subject=default_subject, recovery_default_message=recovery_default_message,