add simple prefix filtering to vmware inventory
Significantly speeds up inventory collection on systems with many excluded machines.
This commit is contained in:
parent
0c27315648
commit
410285ecd6
2 changed files with 13 additions and 1 deletions
|
@ -23,6 +23,10 @@ guests_only = True
|
|||
# caching will be disabled.
|
||||
#cache_dir = ~/.cache/ansible
|
||||
|
||||
# Specify a prefix filter. Any VMs with names beginning with this string will
|
||||
# not be returned.
|
||||
# prefix_filter = test_
|
||||
|
||||
[auth]
|
||||
|
||||
# Specify hostname or IP address of vCenter/ESXi server. A port may be
|
||||
|
|
|
@ -55,7 +55,7 @@ from suds.sudsobject import Object as SudsObject
|
|||
|
||||
|
||||
class VMwareInventory(object):
|
||||
|
||||
|
||||
def __init__(self, guests_only=None):
|
||||
self.config = ConfigParser.SafeConfigParser()
|
||||
if os.environ.get('VMWARE_INI', ''):
|
||||
|
@ -305,6 +305,11 @@ class VMwareInventory(object):
|
|||
else:
|
||||
vm_group = default_group + '_vm'
|
||||
|
||||
if self.config.has_option('defaults', 'prefix_filter'):
|
||||
prefix_filter = self.config.get('defaults', 'prefix_filter')
|
||||
else:
|
||||
prefix_filter = None
|
||||
|
||||
# Loop through physical hosts:
|
||||
for host in HostSystem.all(self.client):
|
||||
|
||||
|
@ -318,6 +323,9 @@ class VMwareInventory(object):
|
|||
|
||||
# Loop through all VMs on physical host.
|
||||
for vm in host.vm:
|
||||
if prefix_filter:
|
||||
if vm.name.startswith( prefix_filter ):
|
||||
continue
|
||||
self._add_host(inv, 'all', vm.name)
|
||||
self._add_host(inv, vm_group, vm.name)
|
||||
vm_info = self._get_vm_info(vm)
|
||||
|
|
Loading…
Reference in a new issue