Add virDomainGetHostname

to query a guests's hostname. Containers like LXC and OpenVZ allow to
set a hostname different from the hosts name and QEMU's guest agent
could provide similar functionality.
This commit is contained in:
Guido Günther 2012-07-10 09:34:23 +02:00
parent 2ef6f69a1b
commit a91067fa0d
4 changed files with 58 additions and 0 deletions

View File

@ -1540,6 +1540,8 @@ int virDomainSetMemoryFlags (virDomainPtr domain,
int virDomainGetMaxVcpus (virDomainPtr domain);
int virDomainGetSecurityLabel (virDomainPtr domain,
virSecurityLabelPtr seclabel);
char * virDomainGetHostname (virDomainPtr domain,
unsigned int flags);
typedef enum {
VIR_DOMAIN_METADATA_DESCRIPTION = 0, /* Operate on <description> */

View File

@ -142,6 +142,11 @@ typedef int
unsigned int flags);
typedef char *
(*virDrvDomainGetOSType) (virDomainPtr domain);
typedef char *
(*virDrvDomainGetHostname) (virDomainPtr domain,
unsigned int flags);
typedef unsigned long long
(*virDrvDomainGetMaxMemory) (virDomainPtr domain);
typedef int
@ -904,6 +909,7 @@ struct _virDriver {
virDrvDomainDestroy domainDestroy;
virDrvDomainDestroyFlags domainDestroyFlags;
virDrvDomainGetOSType domainGetOSType;
virDrvDomainGetHostname domainGetHostname;
virDrvDomainGetMaxMemory domainGetMaxMemory;
virDrvDomainSetMaxMemory domainSetMaxMemory;
virDrvDomainSetMemory domainSetMemory;

View File

@ -18977,3 +18977,48 @@ error:
virDispatchError(dom->conn);
return -1;
}
/**
* virDomainGetHostname:
* @domain: a domain object
* @flags: extra flags; not used yet, so callers should always pass 0
*
* Get the hostname for that domain.
*
* Dependent on hypervisor 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.
*/
char *
virDomainGetHostname(virDomainPtr domain, unsigned int flags)
{
virConnectPtr conn;
VIR_DOMAIN_DEBUG(domain);
virResetLastError();
if (!VIR_IS_CONNECTED_DOMAIN(domain)) {
virLibDomainError(VIR_ERR_INVALID_DOMAIN, __FUNCTION__);
virDispatchError(NULL);
return NULL;
}
conn = domain->conn;
if (conn->driver->domainGetHostname) {
char *ret;
ret = conn->driver->domainGetHostname (domain, flags);
if (!ret)
goto error;
return ret;
}
virLibConnError(VIR_ERR_NO_SUPPORT, __FUNCTION__);
error:
virDispatchError(domain->conn);
return NULL;
}

View File

@ -544,4 +544,9 @@ LIBVIRT_0.9.13 {
virDomainSnapshotRef;
} LIBVIRT_0.9.11;
LIBVIRT_0.9.14 {
global:
virDomainGetHostname;
} LIBVIRT_0.9.13;
# .... define new API here using predicted next version number ....