diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h index 1d76cdcc34..faba90b040 100644 --- a/include/libvirt/libvirt-domain.h +++ b/include/libvirt/libvirt-domain.h @@ -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, diff --git a/include/libvirt/virterror.h b/include/libvirt/virterror.h index 54f4f8190d..b7aa2a0ec3 100644 --- a/include/libvirt/virterror.h +++ b/include/libvirt/virterror.h @@ -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 diff --git a/src/libvirt-domain.c b/src/libvirt-domain.c index eb66999f07..d0304e174f 100644 --- a/src/libvirt-domain.c +++ b/src/libvirt-domain.c @@ -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. diff --git a/src/remote/remote_daemon.c b/src/remote/remote_daemon.c index cd55b2c39e..1c224f8050 100644 --- a/src/remote/remote_daemon.c +++ b/src/remote/remote_daemon.c @@ -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; } diff --git a/src/util/virerror.c b/src/util/virerror.c index aac6ee3597..0f3ee1faaa 100644 --- a/src/util/virerror.c +++ b/src/util/virerror.c @@ -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);