mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Adds group_by_hostgroups parameter to Icinga2 inventory (#7998)
* (lots of commit messages) --------- Co-authored-by: Gianluca Salvo <gianluca.salvo@gruppomol.it> Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
parent
fb67df3051
commit
4947786d36
3 changed files with 19 additions and 5 deletions
|
@ -0,0 +1,2 @@
|
|||
minor_changes:
|
||||
- icinga2 inventory plugin - adds new parameter ``group_by_hostgroups`` in order to make grouping by Icinga2 hostgroups optional (https://github.com/ansible-collections/community.general/pull/7998).
|
|
@ -63,6 +63,12 @@ DOCUMENTATION = '''
|
|||
default: address
|
||||
choices: ['name', 'display_name', 'address']
|
||||
version_added: 4.2.0
|
||||
group_by_hostgroups:
|
||||
description:
|
||||
- Uses Icinga2 hostgroups as groups.
|
||||
type: boolean
|
||||
default: true
|
||||
version_added: 8.4.0
|
||||
'''
|
||||
|
||||
EXAMPLES = r'''
|
||||
|
@ -114,6 +120,7 @@ class InventoryModule(BaseInventoryPlugin, Constructable):
|
|||
self.ssl_verify = None
|
||||
self.host_filter = None
|
||||
self.inventory_attr = None
|
||||
self.group_by_hostgroups = None
|
||||
|
||||
self.cache_key = None
|
||||
self.use_cache = None
|
||||
|
@ -248,12 +255,13 @@ class InventoryModule(BaseInventoryPlugin, Constructable):
|
|||
host_attrs['state'] = 'on'
|
||||
else:
|
||||
host_attrs['state'] = 'off'
|
||||
host_groups = host_attrs.get('groups')
|
||||
self.inventory.add_host(host_name)
|
||||
for group in host_groups:
|
||||
if group not in self.inventory.groups.keys():
|
||||
self.inventory.add_group(group)
|
||||
self.inventory.add_child(group, host_name)
|
||||
if self.group_by_hostgroups:
|
||||
host_groups = host_attrs.get('groups')
|
||||
for group in host_groups:
|
||||
if group not in self.inventory.groups.keys():
|
||||
self.inventory.add_group(group)
|
||||
self.inventory.add_child(group, host_name)
|
||||
# If the address attribute is populated, override ansible_host with the value
|
||||
if host_attrs.get('address') != '':
|
||||
self.inventory.set_variable(host_name, 'ansible_host', host_attrs.get('address'))
|
||||
|
@ -283,6 +291,7 @@ class InventoryModule(BaseInventoryPlugin, Constructable):
|
|||
self.ssl_verify = self.get_option('validate_certs')
|
||||
self.host_filter = self.get_option('host_filter')
|
||||
self.inventory_attr = self.get_option('inventory_attr')
|
||||
self.group_by_hostgroups = self.get_option('group_by_hostgroups')
|
||||
|
||||
if self.templar.is_template(self.icinga2_url):
|
||||
self.icinga2_url = self.templar.template(variable=self.icinga2_url, disable_lookups=False)
|
||||
|
|
|
@ -86,6 +86,8 @@ def get_option(option):
|
|||
return {}
|
||||
elif option == 'strict':
|
||||
return False
|
||||
elif option == 'group_by_hostgroups':
|
||||
return True
|
||||
else:
|
||||
return None
|
||||
|
||||
|
@ -96,6 +98,7 @@ def test_populate(inventory, mocker):
|
|||
inventory.icinga2_password = 'password'
|
||||
inventory.icinga2_url = 'https://localhost:5665' + '/v1'
|
||||
inventory.inventory_attr = "address"
|
||||
inventory.group_by_hostgroups = True
|
||||
|
||||
# bypass authentication and API fetch calls
|
||||
inventory._check_api = mocker.MagicMock(side_effect=check_api)
|
||||
|
|
Loading…
Reference in a new issue