On Wed, Feb 07, 2024 at 10:06:46AM +0100, Alice Frosi wrote:
Hi everyone,
I would like to bring up a possible issue with the libvirt-go-xml-module
and request your advice.
We are considering using libvirtxml [2] as an alternative of the custom
types for the libvirt schema in KubeVirt [1].
Nonetheless, KubeVirt makes an effort to adhere to Kubernetes best
guidelines. One thing I've noticed, though, is that libvirtml consistently
uses uint or int rather than uint32 or int32. This is in opposition to the
primitive types that Kubernetes [3] recommends; in fact, KubeVirt uses them
in the schema.go [4].
I sure spotted several uses of (u)int in there :)
Would it be possible to align the libvirtxml go library to the
Kubernetes
conventions?
Since this library is all about handling XML and doesn't talk at all
with the underlying C library, I guess it would be possible to
introduce explicit sizing for all struct members. I don't think we
can do that without breaking API though.
Another topic entirely would be whether the same is possible for the
main binding. In that case, the underlying C library dictates the
types, so I'm not sure we could change them at the Go level even if
we wanted to. I know that you're not currently asking for this, I'm
just trying to consider the full picture.
Taking a step back, the guidelines say
All public integer fields MUST use the Go int32 or Go int64 types,
not int (which is ambiguously sized, depending on target platform).
Internal types may use int.
As long as KubeVirt doesn't use int for its own public types, it
shouldn't matter what libvirtxml does, as it's only used internally.
Is that not the case?
--
Andrea Bolognani / Red Hat / Virtualization