From ccf031f1c528242f6bdd8acee85b666464734e3e Mon Sep 17 00:00:00 2001 From: Alexander Bulimov Date: Fri, 14 Mar 2014 14:21:19 +0400 Subject: [PATCH] zabbix_maintenance fixes and parameter names update --- library/monitoring/zabbix_maintenance | 101 +++++++++++++------------- 1 file changed, 51 insertions(+), 50 deletions(-) diff --git a/library/monitoring/zabbix_maintenance b/library/monitoring/zabbix_maintenance index 73942eec275..b30be6964e6 100644 --- a/library/monitoring/zabbix_maintenance +++ b/library/monitoring/zabbix_maintenance @@ -25,7 +25,7 @@ module: zabbix_maintenance short_description: Create Zabbix maintenance windows description: - This module will let you create Zabbix maintenance windows. -version_added: "1.5" +version_added: "1.6" author: Alexander Bulimov requirements: - zabbix-api python module @@ -36,38 +36,39 @@ options: required: true default: null choices: [ "present", "absent" ] - server: + server_url: description: - - Url of Zabbix server, with schema (http or https). + - Url of Zabbix server, with protocol (http or https). + C(url) is an alias for C(server_url). required: true default: null aliases: [ "url" ] - user: + login_user: description: - Zabbix user name. required: true default: null - passwd: + login_password: description: - Zabbix user password. required: true default: null - hosts: + host_names: description: - Hosts to manage maintenance window for. Separate multiple hosts with commas. - C(host) is an alias for C(hosts). - B(Required) option when C(state) is I(present) and no C(groups) specified. + C(host_name) is an alias for C(host_names). + B(Required) option when C(state) is I(present) and no C(host_groups) specified. required: false default: null - aliases: [ "host" ] - groups: + aliases: [ "host_name" ] + host_groups: description: - Host groups to manage maintenance window for. Separate multiple groups with commas. - C(group) is an alias for C(groups). - B(Required) option when C(state) is I(present) and no C(hosts) specified. + C(host_group) is an alias for C(host_groups). + B(Required) option when C(state) is I(present) and no C(host_names) specified. required: false default: null - aliases: [ "group" ] + aliases: [ "host_group" ] minutes: description: - Length of maintenance window in minutes. @@ -102,39 +103,39 @@ EXAMPLES = ''' # Create maintenance window named "Update of www1" # for host www1.example.com for 90 minutes - zabbix_maintenance: name="Update of www1" - host=www1.example.com + host_name=www1.example.com state=present minutes=90 - server=https://monitoring.example.com - user=ansible - passwd=pAsSwOrD + server_url=https://monitoring.example.com + login_user=ansible + login_password=pAsSwOrD # Create maintenance window named "Mass update" # for host www1.example.com and host groups Office and Dev - zabbix_maintenance: name="Update of www1" - host=www1.example.com - group=Office,Dev + host_name=www1.example.com + host_groups=Office,Dev state=present - server=https://monitoring.example.com - user=ansible - passwd=pAsSwOrD + server_url=https://monitoring.example.com + login_user=ansible + login_password=pAsSwOrD # Create maintenance window named "update" -# for host www1.example.com and without data collection. +# for hosts www1.example.com and db1.example.com and without data collection. - zabbix_maintenance: name=update - host=www1.example.com + host_names=www1.example.com,db1.example.com state=present collect_data=false - server=https://monitoring.example.com - user=ansible - passwd=pAsSwOrD + server_url=https://monitoring.example.com + login_user=ansible + login_password=pAsSwOrD # Remove maintenance window named "Test1" - zabbix_maintenance: name=Test1 state=absent - server=https://monitoring.example.com - user=ansible - passwd=pAsSwOrD + server_url=https://monitoring.example.com + login_user=ansible + login_password=pAsSwOrD ''' import datetime, time @@ -205,9 +206,9 @@ def check_maintenance(zbx, name): return 1, None, str(e) return 0, result, None -def get_group_ids(zbx, group_names): +def get_group_ids(zbx, host_groups): group_ids = [] - for group in group_names: + for group in host_groups: try: result = zbx.hostgroup.get( { @@ -256,12 +257,12 @@ def main(): module = AnsibleModule( argument_spec=dict( state=dict(required=True, default=None, choices=['present', 'absent']), - server=dict(required=True, default=None, aliases=['url']), - hosts=dict(type='list', required=False, default=None, aliases=['host']), + server_url=dict(required=True, default=None, aliases=['url']), + host_names=dict(type='list', required=False, default=None, aliases=['host_name']), minutes=dict(type='int', required=False, default=10), - groups=dict(type='list', required=False, default=None, aliases=['group']), - user=dict(required=True, default=None), - passwd=dict(required=True, default=None), + host_groups=dict(type='list', required=False, default=None, aliases=['host_group']), + login_user=dict(required=True, default=None), + login_password=dict(required=True, default=None), name=dict(required=True, default=None), desc=dict(required=False, default="Created by Ansible"), collect_data=dict(type='bool', required=False, default=True), @@ -272,15 +273,15 @@ def main(): if not HAS_ZABBIX_API: module.fail_json(msg="Missing requried zabbix-api module (check docs or install with: pip install zabbix-api)") - hosts = module.params['hosts'] - groups = module.params['groups'] + host_names = module.params['host_names'] + host_groups = module.params['host_groups'] state = module.params['state'] - user = module.params['user'] - passwd = module.params['passwd'] + login_user = module.params['login_user'] + login_password = module.params['login_password'] minutes = module.params['minutes'] name = module.params['name'] desc = module.params['desc'] - server = module.params['server'] + server_url = module.params['server_url'] collect_data = module.params['collect_data'] if collect_data: maintenance_type = 0 @@ -289,8 +290,8 @@ def main(): try: - zbx = ZabbixAPI(server) - zbx.login(user, passwd) + zbx = ZabbixAPI(server_url) + zbx.login(login_user, login_password) except BaseException as e: module.fail_json(msg="Failed to connect to Zabbix server: %s"%e) @@ -302,15 +303,15 @@ def main(): start_time = time.mktime(now.timetuple()) period = 60 * int(minutes) #N * 60 seconds - if groups: - (rc, group_ids, error) = get_group_ids(zbx, groups) + if host_groups: + (rc, group_ids, error) = get_group_ids(zbx, host_groups) if rc != 0: module.fail_json(msg="Failed to get group_ids: %s"%error) else: group_ids = [] - if hosts: - (rc, host_ids, error) = get_host_ids(zbx, hosts) + if host_names: + (rc, host_ids, error) = get_host_ids(zbx, host_names) if rc != 0: module.fail_json(msg="Failed to get host_ids: %s"%error) else: @@ -321,8 +322,8 @@ def main(): module.fail_json(msg="Failed to check maintenance %s existance: %s"%(name, error)) if not exists: - if not hosts and not groups: - module.fail_json(msg="At least one host or host group must be defined for each created maintenance.") + if not host_names and not host_groups: + module.fail_json(msg="At least one host_name or host_group must be defined for each created maintenance.") if module.check_mode: changed = True