While at it, factor out the checks to make the control flow a little easier to read and add information why there is an extra check for the vm.config.
Signed-off-by: Daniel Kral <d.k...@proxmox.com> --- This is not essential, but I thought it wouldn't hurt to let people know of both types being skipped, but could also get quite noisy if there are vCLS and/or diskless VMs. listvms.py | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/listvms.py b/listvms.py index bd0adcf..be03759 100755 --- a/listvms.py +++ b/listvms.py @@ -251,6 +251,20 @@ def fetch_and_update_vm_data(vm: vim.VirtualMachine, data: dict[Any, Any]): datastores.update({ds.name: ds.url for ds in vm.config.datastoreUrl}) +def is_vcls_agent_vm(vm: vim.VirtualMachine) -> bool: + # older ESXi installations seem to not expose the vm config + if vm.config is not None: + return False + + return any(cfg.key == "HDCS.agent" + and cfg.value.lower() == "true" + for cfg in vm.config.extraConfig) + +def is_diskless_vm(vm: vim.VirtualMachine) -> bool: + datastore_name, _ = parse_file_path(vm.config.files.vmPathName) + + return not datastore_name + def main(): args = parse_args() @@ -266,20 +280,12 @@ def main(): data = {} for vm in list_vms(connection): # drop vCLS machines - vCLS = vm.config is not None and any( - cfg.key == "HDCS.agent" - and cfg.value.lower() == "true" - for cfg in vm.config.extraConfig - ) - if vCLS: + if is_vcls_agent_vm(vm): + print(f"Skipping vCLS agent VM: {vm.name}", file=sys.stderr) continue # drop vms with empty datastore - datastore_name, relative_vmx_path = parse_file_path( - vm.config.files.vmPathName - ) - if not datastore_name: - print(f"Skipping VM (no datastore value): {vm.name}", - file=sys.stderr) + if is_diskless_vm(vm): + print(f"Skipping diskless VM: {vm.name}", file=sys.stderr) continue try: fetch_and_update_vm_data(vm, data) -- 2.39.5 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel