all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH esxi-import-tools 1/2] listvms: add check for vCLS test whether vm configuration is present
@ 2025-04-11 15:06 Daniel Kral
  2025-04-11 15:06 ` [pve-devel] [RFC esxi-import-tools 2/2] listvms: add message when skipping vCLS agent VMs Daniel Kral
  0 siblings, 1 reply; 3+ messages in thread
From: Daniel Kral @ 2025-04-11 15:06 UTC (permalink / raw)
  To: pve-devel

It seems that on older ESXi installations, e.g. ESXi 6.7 [0], there are
virtual machines, which do not expose a config property for some VMs.
Therefore, test whether the config is available before checking if the
current entry is a vCLS VM.

[0] https://forum.proxmox.com/threads/164900/

Signed-off-by: Daniel Kral <d.kral@proxmox.com>
---
 listvms.py | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/listvms.py b/listvms.py
index 89ddfb2..bd0adcf 100755
--- a/listvms.py
+++ b/listvms.py
@@ -266,9 +266,11 @@ def main():
         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)
+            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:
                 continue
             # drop vms with empty datastore

base-commit: e6f497ea7668e6956ec4461837cf613a0736e684
-- 
2.39.5



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [pve-devel] [RFC esxi-import-tools 2/2] listvms: add message when skipping vCLS agent VMs
  2025-04-11 15:06 [pve-devel] [PATCH esxi-import-tools 1/2] listvms: add check for vCLS test whether vm configuration is present Daniel Kral
@ 2025-04-11 15:06 ` Daniel Kral
  2025-04-11 15:45   ` Max Carrara
  0 siblings, 1 reply; 3+ messages in thread
From: Daniel Kral @ 2025-04-11 15:06 UTC (permalink / raw)
  To: pve-devel

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.kral@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


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [pve-devel] [RFC esxi-import-tools 2/2] listvms: add message when skipping vCLS agent VMs
  2025-04-11 15:06 ` [pve-devel] [RFC esxi-import-tools 2/2] listvms: add message when skipping vCLS agent VMs Daniel Kral
@ 2025-04-11 15:45   ` Max Carrara
  0 siblings, 0 replies; 3+ messages in thread
From: Max Carrara @ 2025-04-11 15:45 UTC (permalink / raw)
  To: Proxmox VE development discussion

On Fri Apr 11, 2025 at 5:06 PM CEST, Daniel Kral wrote:
> 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.

Both of these patches LGTM. Neat!

Side note: Shame that the type annotations in that regard are
incomplete, but that's something we have to deal with, unfortunately :s

Consider:

Reviewed-by: Max Carrara <m.carrara@proxmox.com>

>
> Signed-off-by: Daniel Kral <d.kral@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)



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2025-04-11 15:45 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-04-11 15:06 [pve-devel] [PATCH esxi-import-tools 1/2] listvms: add check for vCLS test whether vm configuration is present Daniel Kral
2025-04-11 15:06 ` [pve-devel] [RFC esxi-import-tools 2/2] listvms: add message when skipping vCLS agent VMs Daniel Kral
2025-04-11 15:45   ` Max Carrara

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal