mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-26 06:31:23 -07:00
Refactor getvm method (#27188)
Fix refactors getvm method and modules which are using it. Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com>
This commit is contained in:
parent
eff757eeb8
commit
9649195c26
6 changed files with 117 additions and 126 deletions
|
@ -170,17 +170,13 @@ def find_hostsystem_by_name(content, hostname):
|
|||
return None
|
||||
|
||||
|
||||
def find_vm_by_id(content, vm_id, vm_id_type="vm_name", datacenter=None, cluster=None):
|
||||
def find_vm_by_id(content, vm_id, vm_id_type="vm_name", datacenter=None, cluster=None, folder=None, match_first=False):
|
||||
""" UUID is unique to a VM, every other id returns the first match. """
|
||||
si = content.searchIndex
|
||||
vm = None
|
||||
|
||||
if vm_id_type == 'dns_name':
|
||||
vm = si.FindByDnsName(datacenter=datacenter, dnsName=vm_id, vmSearch=True)
|
||||
elif vm_id_type == 'inventory_path':
|
||||
vm = si.FindByInventoryPath(inventoryPath=vm_id)
|
||||
if isinstance(vm, vim.VirtualMachine):
|
||||
vm = None
|
||||
elif vm_id_type == 'uuid':
|
||||
# Search By BIOS UUID rather than instance UUID
|
||||
vm = si.FindByUuid(datacenter=datacenter, instanceUuid=False, uuid=vm_id, vmSearch=True)
|
||||
|
@ -193,7 +189,20 @@ def find_vm_by_id(content, vm_id, vm_id_type="vm_name", datacenter=None, cluster
|
|||
elif datacenter:
|
||||
folder = datacenter.hostFolder
|
||||
vm = find_vm_by_name(content, vm_id, folder)
|
||||
|
||||
elif vm_id_type == 'inventory_path':
|
||||
searchpath = folder
|
||||
# get all objects for this path
|
||||
f_obj = si.FindByInventoryPath(searchpath)
|
||||
if f_obj:
|
||||
if isinstance(f_obj, vim.Datacenter):
|
||||
f_obj = f_obj.vmFolder
|
||||
for c_obj in f_obj.childEntity:
|
||||
if not isinstance(c_obj, vim.VirtualMachine):
|
||||
continue
|
||||
if c_obj.name == vm_id:
|
||||
vm = c_obj
|
||||
if match_first:
|
||||
break
|
||||
return vm
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue