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
  2025-04-24 17:33 ` [pve-devel] applied: [PATCH esxi-import-tools 1/2] listvms: add check for vCLS test whether vm configuration is present Thomas Lamprecht
  0 siblings, 2 replies; 4+ 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] 4+ 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
  2025-04-24 17:33 ` [pve-devel] applied: [PATCH esxi-import-tools 1/2] listvms: add check for vCLS test whether vm configuration is present Thomas Lamprecht
  1 sibling, 1 reply; 4+ 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] 4+ 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; 4+ 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] 4+ messages in thread

* [pve-devel] applied: [PATCH esxi-import-tools 1/2] listvms: add check for vCLS test whether vm configuration is present
  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-24 17:33 ` Thomas Lamprecht
  1 sibling, 0 replies; 4+ messages in thread
From: Thomas Lamprecht @ 2025-04-24 17:33 UTC (permalink / raw)
  To: pve-devel, Daniel Kral

On Fri, 11 Apr 2025 17:06:33 +0200, Daniel Kral wrote:
> 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/
> 
> [...]

Applied, but I had to make a followup for the second patch, which had a
logical error that was even reported on package build:

---
mypy listvms.py
listvms.py:261: error: "None" has no attribute "extraConfig"  [attr-defined]
---

Would be great if you could end to end test changes.

As reference, I took this patch over the one from Daniel Herzig [0]
mostly due timing and the R-b trailer here.

[0]: https://lore.proxmox.com/all/20250423130315.360403-1-d.herzig@proxmox.com/

[1/2] listvms: add check for vCLS test whether vm configuration is present
      commit: 3d3c4d60849a706fd3c9ad1402233fb4be09a38f
[2/2] listvms: add message when skipping vCLS agent VMs
      commit: 9fee27b19e4cbd7f68adb0056d2fe8545a309700


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


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

end of thread, other threads:[~2025-04-24 17:38 UTC | newest]

Thread overview: 4+ 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
2025-04-24 17:33 ` [pve-devel] applied: [PATCH esxi-import-tools 1/2] listvms: add check for vCLS test whether vm configuration is present Thomas Lamprecht

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