mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
zabbix_template: Fixed interactions between options and data within JSON object (#51222)
This commit is contained in:
parent
a8116497ba
commit
2133f0821a
2 changed files with 24 additions and 6 deletions
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
minor_changes:
|
||||||
|
- zabbix_template - Module no longer requires ``template_name`` to be provided when importing with ``template_json`` option (https://github.com/ansible/ansible/issues/50833)
|
||||||
|
bugfixes:
|
||||||
|
- zabbix_template - Fixed cryptic error when ``template_groups`` option wasn't provided (https://github.com/ansible/ansible/issues/50834)
|
||||||
|
- zabbix_template - Failed template import will no longer leave empty templates configured on Zabbix server
|
|
@ -30,7 +30,8 @@ options:
|
||||||
template_name:
|
template_name:
|
||||||
description:
|
description:
|
||||||
- Name of Zabbix template.
|
- Name of Zabbix template.
|
||||||
required: true
|
- Required when I(template_json) is not used.
|
||||||
|
required: false
|
||||||
template_json:
|
template_json:
|
||||||
description:
|
description:
|
||||||
- JSON dump of template to import.
|
- JSON dump of template to import.
|
||||||
|
@ -38,6 +39,7 @@ options:
|
||||||
template_groups:
|
template_groups:
|
||||||
description:
|
description:
|
||||||
- List of template groups to create or delete.
|
- List of template groups to create or delete.
|
||||||
|
- Required when I(template_name) is used and C(state=present).
|
||||||
required: false
|
required: false
|
||||||
link_templates:
|
link_templates:
|
||||||
description:
|
description:
|
||||||
|
@ -253,12 +255,14 @@ class Template(object):
|
||||||
child_template_ids, macros):
|
child_template_ids, macros):
|
||||||
if self._module.check_mode:
|
if self._module.check_mode:
|
||||||
self._module.exit_json(changed=True)
|
self._module.exit_json(changed=True)
|
||||||
self._zapi.template.create({'host': template_name,
|
|
||||||
'groups': group_ids,
|
|
||||||
'templates': child_template_ids,
|
|
||||||
'macros': macros})
|
|
||||||
if template_json:
|
if template_json:
|
||||||
self.import_template(template_json, template_name)
|
self.import_template(template_json, template_name)
|
||||||
|
else:
|
||||||
|
self._zapi.template.create({'host': template_name,
|
||||||
|
'groups': group_ids,
|
||||||
|
'templates': child_template_ids,
|
||||||
|
'macros': macros})
|
||||||
|
|
||||||
def update_template(self, templateids, template_json,
|
def update_template(self, templateids, template_json,
|
||||||
group_ids, child_template_ids,
|
group_ids, child_template_ids,
|
||||||
|
@ -448,7 +452,7 @@ def main():
|
||||||
http_login_password=dict(type='str', required=False,
|
http_login_password=dict(type='str', required=False,
|
||||||
default=None, no_log=True),
|
default=None, no_log=True),
|
||||||
validate_certs=dict(type='bool', required=False, default=True),
|
validate_certs=dict(type='bool', required=False, default=True),
|
||||||
template_name=dict(type='str', required=True),
|
template_name=dict(type='str', required=False),
|
||||||
template_json=dict(type='json', required=False),
|
template_json=dict(type='json', required=False),
|
||||||
template_groups=dict(type='list', required=False),
|
template_groups=dict(type='list', required=False),
|
||||||
link_templates=dict(type='list', required=False),
|
link_templates=dict(type='list', required=False),
|
||||||
|
@ -458,6 +462,7 @@ def main():
|
||||||
'dump']),
|
'dump']),
|
||||||
timeout=dict(type='int', default=10)
|
timeout=dict(type='int', default=10)
|
||||||
),
|
),
|
||||||
|
required_one_of=[['template_name', 'template_json']],
|
||||||
supports_check_mode=True
|
supports_check_mode=True
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -492,6 +497,13 @@ def main():
|
||||||
module.fail_json(msg="Failed to connect to Zabbix server: %s" % e)
|
module.fail_json(msg="Failed to connect to Zabbix server: %s" % e)
|
||||||
|
|
||||||
template = Template(module, zbx)
|
template = Template(module, zbx)
|
||||||
|
if template_json and not template_name:
|
||||||
|
# Ensure template_name is not empty for safety check in import_template
|
||||||
|
template_loaded = template.load_json_template(template_json)
|
||||||
|
template_name = template_loaded['zabbix_export']['templates'][0]['template']
|
||||||
|
elif template_name and not template_groups and state == 'present':
|
||||||
|
module.fail_json(msg="Option template_groups is required when template_json is not used")
|
||||||
|
|
||||||
template_ids = template.get_template_ids([template_name])
|
template_ids = template.get_template_ids([template_name])
|
||||||
existing_template_json = None
|
existing_template_json = None
|
||||||
if template_ids:
|
if template_ids:
|
||||||
|
|
Loading…
Reference in a new issue