[pve-devel] [PATCH esxi-import-tools v2] listvms: exclude VMs without datastore_name from manifest.json
Daniel Herzig
d.herzig at proxmox.com
Tue Apr 8 15:24:30 CEST 2025
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
---
This supersedes: https://lore.proxmox.com/pve-devel/875xjft34o.fsf@proxmox.com/T/#t
Changes from v1:
* query the ESXI VM config more purposefully -- thanks @Wolfgang
* prepare logging of dropped VMs to stderr
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:
--
2.39.5
More information about the pve-devel
mailing list