From d9f66b4eadc5c3da0be2bdddc9140c3fb75fe7d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aleksandar=20Topuzovi=C4=87?= Date: Fri, 21 Nov 2025 07:58:50 +0100 Subject: [PATCH] fix: Process hypervisor fileds witout xml tags --- internal/codegen/parser/libvirtxml.go | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/internal/codegen/parser/libvirtxml.go b/internal/codegen/parser/libvirtxml.go index 4fd32b905..0d4cb33ea 100644 --- a/internal/codegen/parser/libvirtxml.go +++ b/internal/codegen/parser/libvirtxml.go @@ -255,8 +255,25 @@ func (r *LibvirtXMLReflector) analyzeField(structName string, field reflect.Stru xmlTag := field.Tag.Get("xml") if xmlTag == "" { - // Skip fields without XML tags - return nil, nil + // Handle hypervisor-specific fields that are missing XML tags. + hypervisorPrefixes := []string{"QEMU", "LXC", "BHyve", "VMWare", "Xen"} + var guessedTag string + + for _, prefix := range hypervisorPrefixes { + if strings.HasPrefix(field.Name, prefix) { + namespace := strings.ToLower(prefix) + element := strings.ToLower(strings.TrimPrefix(field.Name, prefix)) + guessedTag = fmt.Sprintf("%s:%s,omitempty", namespace, element) + break + } + } + + if guessedTag != "" { + xmlTag = guessedTag + } else { + // If it's not a known hypervisor field, skip it as before. + return nil, nil + } } isDashTag := xmlTag == "-"