From d793cd18347ff6ccc21a98c5151cbc42caa1acd4 Mon Sep 17 00:00:00 2001 From: Daniel Herzig Date: Tue, 8 Apr 2025 15:24:30 +0200 Subject: [PATCH] listvms: exclude VMs without datastore_name from manifest.json On newer ESXI-8x versions, the diskless vCLS machines in an ESXI-cluster are not stored on a datastore anymore. Instead, they are placed under `/var/run/crx` on the ESXI-hosts' filesystem. This can lead to issues with the ESXI-storage not being activated on the PVE-side [0]. This commit prevents these machines from being included in `manifest.json`. It also excludes VMs without a datastore string in its configuration. [0] https://forum.proxmox.com/threads/new-import-wizard-available-for-migrating-vmware-esxi-based-virtual-machines.144023/post-759288 --- listvms.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/listvms.py b/listvms.py index a2fb2a5..89ddfb2 100755 --- a/listvms.py +++ b/listvms.py @@ -265,6 +265,20 @@ def main(): with connect_to_esxi_host(connection_args) as connection: data = {} for vm in list_vms(connection): + # drop vCLS machines + vCLS = any(cfg.key == "HDCS.agent" + and cfg.value.lower() == "true" + for cfg in vm.config.extraConfig) + if vCLS: + 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) + continue try: fetch_and_update_vm_data(vm, data) except Exception as err: