1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

plugins/inventory/cobbler: Add exclude/include_mgmt_classes (#7184)

This commit is contained in:
Orion Poplawski 2023-09-05 12:36:12 -06:00 committed by GitHub
parent 631d215fe8
commit 0c03f34f54
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 26 additions and 3 deletions

View file

@ -0,0 +1,2 @@
minor_changes:
- cobbler inventory plugin - add ``exclude_mgmt_classes`` and ``include_mgmt_classes`` options to exclude or include hosts based on management classes (https://github.com/ansible-collections/community.general/pull/7184).

View file

@ -42,6 +42,12 @@ DOCUMENTATION = '''
description: Fallback to cached results if connection to cobbler fails. description: Fallback to cached results if connection to cobbler fails.
type: boolean type: boolean
default: false default: false
exclude_mgmt_classes:
description: Management classes to exclude from inventory.
type: list
default: []
elements: str
version_added: 7.4.0
exclude_profiles: exclude_profiles:
description: description:
- Profiles to exclude from inventory. - Profiles to exclude from inventory.
@ -49,6 +55,12 @@ DOCUMENTATION = '''
type: list type: list
default: [] default: []
elements: str elements: str
include_mgmt_classes:
description: Management classes to include from inventory.
type: list
default: []
elements: str
version_added: 7.4.0
include_profiles: include_profiles:
description: description:
- Profiles to include from inventory. - Profiles to include from inventory.
@ -216,6 +228,8 @@ class InventoryModule(BaseInventoryPlugin, Cacheable):
self.cache_key = self.get_cache_key(path) self.cache_key = self.get_cache_key(path)
self.use_cache = cache and self.get_option('cache') self.use_cache = cache and self.get_option('cache')
self.exclude_mgmt_classes = self.get_option('exclude_mgmt_classes')
self.include_mgmt_classes = self.get_option('include_mgmt_classes')
self.exclude_profiles = self.get_option('exclude_profiles') self.exclude_profiles = self.get_option('exclude_profiles')
self.include_profiles = self.get_option('include_profiles') self.include_profiles = self.get_option('include_profiles')
self.group_by = self.get_option('group_by') self.group_by = self.get_option('group_by')
@ -265,9 +279,16 @@ class InventoryModule(BaseInventoryPlugin, Cacheable):
hostname = host['hostname'] # None hostname = host['hostname'] # None
interfaces = host['interfaces'] interfaces = host['interfaces']
if self._exclude_profile(host['profile']): if set(host['mgmt_classes']) & set(self.include_mgmt_classes):
self.display.vvvv('Excluding host %s in profile %s\n' % (host['name'], host['profile'])) self.display.vvvv('Including host %s in mgmt_classes %s\n' % (host['name'], host['mgmt_classes']))
continue else:
if self._exclude_profile(host['profile']):
self.display.vvvv('Excluding host %s in profile %s\n' % (host['name'], host['profile']))
continue
if set(host['mgmt_classes']) & set(self.exclude_mgmt_classes):
self.display.vvvv('Excluding host %s in mgmt_classes %s\n' % (host['name'], host['mgmt_classes']))
continue
# hostname is often empty for non-static IP hosts # hostname is often empty for non-static IP hosts
if hostname == '': if hostname == '':