]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Introduce source flags to virDomainGetHostname()
authorJulio Faracco <jcfaracco@gmail.com>
Thu, 9 Jan 2020 10:12:37 +0000 (11:12 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Thu, 16 Jan 2020 08:02:35 +0000 (09:02 +0100)
There is a lots of possibilities to retrieve hostname information
from domain. Libvirt could use lease information from dnsmasq to
get current hostname too. QEMU supports QEMU-agent but it can use
lease source.

Signed-off-by: Julio Faracco <jcfaracco@gmail.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
include/libvirt/libvirt-domain.h
include/libvirt/virterror.h
src/libvirt-domain.c
src/remote/remote_daemon.c
src/util/virerror.c

index 1d76cdcc3479162412e44c43bcf100d00b8dcc01..faba90b040484c9026cd8a90cc83815cb132dd99 100644 (file)
@@ -1567,6 +1567,12 @@ int                     virDomainSetMemoryStatsPeriod (virDomainPtr domain,
 int                     virDomainGetMaxVcpus    (virDomainPtr domain);
 int                     virDomainGetSecurityLabel (virDomainPtr domain,
                                                    virSecurityLabelPtr seclabel);
+
+typedef enum {
+    VIR_DOMAIN_GET_HOSTNAME_LEASE = (1 << 0), /* Parse DHCP lease file */
+    VIR_DOMAIN_GET_HOSTNAME_AGENT = (1 << 1), /* Query qemu guest agent */
+} virDomainGetHostnameFlags;
+
 char *                  virDomainGetHostname    (virDomainPtr domain,
                                                  unsigned int flags);
 int                     virDomainGetSecurityLabelList (virDomainPtr domain,
index 54f4f8190d960930b895889292888dc0de3f074d..b7aa2a0ec3767f8e8b2a5125b2653baca2af32ee 100644 (file)
@@ -332,6 +332,7 @@ typedef enum {
     VIR_ERR_INVALID_NETWORK_PORT = 105, /* invalid network port object */
     VIR_ERR_NETWORK_PORT_EXIST = 106,   /* the network port already exist */
     VIR_ERR_NO_NETWORK_PORT = 107,      /* network port not found */
+    VIR_ERR_NO_HOSTNAME = 108,          /* no domain's hostname found */
 
 # ifdef VIR_ENUM_SENTINELS
     VIR_ERR_NUMBER_LAST
index eb66999f0751c35725d0bbf75bd30f5c8378b79d..d0304e174f5a4c1108ff35d92fb8ce62094d75dc 100644 (file)
@@ -11025,12 +11025,13 @@ virDomainGetDiskErrors(virDomainPtr dom,
 /**
  * virDomainGetHostname:
  * @domain: a domain object
- * @flags: extra flags; not used yet, so callers should always pass 0
+ * @flags: bitwise-OR of virDomainGetHostnameFlags
  *
- * Get the hostname for that domain.
+ * Get the hostname for that domain. If no hostname is found,
+ * then an error is raised with VIR_ERR_NO_HOSTNAME code.
  *
- * Dependent on hypervisor used, this may require a guest agent to be
- * available.
+ * Dependent on hypervisor and @flags used, this may require a
+ * guest agent to be available.
  *
  * Returns the hostname which must be freed by the caller, or
  * NULL if there was an error.
index cd55b2c39ef4fdc853adcd0223a5394f689ce76b..1c224f8050de09491e3fb9125c9c59fd3a33d23a 100644 (file)
@@ -296,6 +296,7 @@ static int daemonErrorLogFilter(virErrorPtr err, int priority)
     case VIR_ERR_NO_DOMAIN_METADATA:
     case VIR_ERR_NO_SERVER:
     case VIR_ERR_NO_CLIENT:
+    case VIR_ERR_NO_HOSTNAME:
         return VIR_LOG_DEBUG;
     }
 
index aac6ee359723d91299bbf172232669c166e2c8e1..0f3ee1faaa44f727e3c1fa73f360ae2886c84f4a 100644 (file)
@@ -1233,6 +1233,9 @@ static const virErrorMsgTuple virErrorMsgStrings[] = {
     [VIR_ERR_NO_NETWORK_PORT] = {
         N_("network port not found"),
         N_("network port not found: %s") },
+    [VIR_ERR_NO_HOSTNAME] = {
+        N_("no hostname found"),
+        N_("no hostname found: %s") },
 };
 
 G_STATIC_ASSERT(G_N_ELEMENTS(virErrorMsgStrings) == VIR_ERR_NUMBER_LAST);