[PATCH v2 04/23] src: add constant for the guest info 'hostname' parameter

Daniel P. Berrangé posted 23 patches 22 hours ago
[PATCH v2 04/23] src: add constant for the guest info 'hostname' parameter
Posted by Daniel P. Berrangé 22 hours ago
Contrary to most APIs returning typed parameters, there are no constants
defined for the guest info data keys. This is was because many of the
keys needs to be dynamically constructed using one or more array index
values.

It is possible to define constants while still supporting dynamic
array indexes by simply defining the prefixes and suffixes as constants.
The consuming code can then combine the constants with array index
value.

With this approach, it is practical to add constants for the guest info
API keys.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 include/libvirt/libvirt-domain.h | 10 ++++++++++
 src/libvirt-domain.c             | 11 +++++------
 src/qemu/qemu_driver.c           |  3 ++-
 3 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h
index dc2af359b9..3bafa65708 100644
--- a/include/libvirt/libvirt-domain.h
+++ b/include/libvirt/libvirt-domain.h
@@ -6620,6 +6620,16 @@ int virDomainSetLaunchSecurityState(virDomainPtr domain,
  */
 #define VIR_DOMAIN_GUEST_INFO_TIMEZONE_OFFSET "timezone.offset"
 
+
+/**
+ * VIR_DOMAIN_GUEST_INFO_HOSTNAME_HOSTNAME:
+ *
+ * The hostname of the domain as a string.
+ *
+ * Since: 11.2.0
+ */
+#define VIR_DOMAIN_GUEST_INFO_HOSTNAME_HOSTNAME "hostname"
+
 /**
  * virDomainGuestInfoTypes:
  *
diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c
index 9c858622c2..2d2aefa43d 100644
--- a/src/libvirt-domain.c
+++ b/src/libvirt-domain.c
@@ -13217,6 +13217,11 @@ virDomainSetVcpu(virDomainPtr domain,
  *  The VIR_DOMAIN_GUEST_INFO_TIMEZONE_* constants define the known typed parameter
  *  keys.
  *
+ * VIR_DOMAIN_GUEST_INFO_HOSTNAME:
+ *  Returns information about the hostname of the domain.
+ *  The VIR_DOMAIN_GUEST_INFO_HOSTNAME_* constants define the known typed parameter
+ *  keys.
+ *
  * VIR_DOMAIN_GUEST_INFO_FILESYSTEM:
  *  Returns information about the filesystems within the domain.  The typed
  *  parameter keys are in this format:
@@ -13252,12 +13257,6 @@ virDomainSetVcpu(virDomainPtr domain,
  *                      this is a name assigned by device mapper
  *      "disk.<num>.guest_bus" - disk bus as reported by the guest OS
  *
- * VIR_DOMAIN_GUEST_INFO_HOSTNAME:
- *  Returns information about the hostname of the domain. The typed
- *  parameter keys are in this format:
- *
- *      "hostname" - the hostname of the domain
- *
  * VIR_DOMAIN_GUEST_INFO_INTERFACES:
  *  Returns information about the interfaces within the domain. The typed
  *  parameter keys are in this format:
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index a5122d0cd6..85cc3045ee 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -19406,7 +19406,8 @@ qemuDomainGetGuestInfo(virDomainPtr dom,
         goto exitagent;
 
     if (hostname)
-        virTypedParamListAddString(list, hostname, "hostname");
+        virTypedParamListAddString(list, hostname,
+                                   VIR_DOMAIN_GUEST_INFO_HOSTNAME_HOSTNAME);
 
     if (supportedTypes & VIR_DOMAIN_GUEST_INFO_FILESYSTEM) {
         rc = qemuAgentGetFSInfo(agent, &agentfsinfo, report_unsupported);
-- 
2.48.1
Re: [PATCH v2 04/23] src: add constant for the guest info 'hostname' parameter
Posted by Peter Krempa 19 hours ago
On Tue, Mar 11, 2025 at 14:24:10 +0000, Daniel P. Berrangé wrote:
> Contrary to most APIs returning typed parameters, there are no constants
> defined for the guest info data keys. This is was because many of the
> keys needs to be dynamically constructed using one or more array index
> values.
> 
> It is possible to define constants while still supporting dynamic
> array indexes by simply defining the prefixes and suffixes as constants.
> The consuming code can then combine the constants with array index
> value.
> 
> With this approach, it is practical to add constants for the guest info
> API keys.
> 
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> ---
>  include/libvirt/libvirt-domain.h | 10 ++++++++++
>  src/libvirt-domain.c             | 11 +++++------
>  src/qemu/qemu_driver.c           |  3 ++-
>  3 files changed, 17 insertions(+), 7 deletions(-)

Reviewed-by: Peter Krempa <pkrempa@redhat.com>