From d771db2e1d9c0620cb1d5a1749b110a0935c1a93 Mon Sep 17 00:00:00 2001 From: Ryan Malloy Date: Fri, 26 Dec 2025 18:26:55 -0700 Subject: [PATCH] fix list_guest_directory for varying guest OS attributes FileInfo attributes (owner, modificationTime, size, type) vary across guest OS types. Use getattr with defaults to prevent AttributeError when these optional fields are missing. --- src/esxi_mcp_server/mixins/guest_ops.py | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/esxi_mcp_server/mixins/guest_ops.py b/src/esxi_mcp_server/mixins/guest_ops.py index c4fd647..f372607 100644 --- a/src/esxi_mcp_server/mixins/guest_ops.py +++ b/src/esxi_mcp_server/mixins/guest_ops.py @@ -308,16 +308,17 @@ class GuestOpsMixin(MCPMixin): except vim.fault.FileNotFound: raise ValueError(f"Directory not found: {guest_path}") from None - return [ - { + results = [] + for f in listing.files: + mod_time = getattr(f, "modificationTime", None) + results.append({ "name": f.path, - "size": f.size, - "type": f.type, - "owner": f.owner, - "modified": f.modificationTime.isoformat() if f.modificationTime else None, - } - for f in listing.files - ] + "size": getattr(f, "size", None), + "type": getattr(f, "type", None), + "owner": getattr(f, "owner", None), + "modified": mod_time.isoformat() if mod_time else None, + }) + return results @mcp_tool( name="create_guest_directory",