--- src/openvz/openvz_driver.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/openvz/openvz_driver.c b/src/openvz/openvz_driver.c index c9150e0..6046a60 100644 --- a/src/openvz/openvz_driver.c +++ b/src/openvz/openvz_driver.c @@ -234,6 +234,47 @@ cleanup: } +static char * +openvzDomainGetHostname(virDomainPtr dom, unsigned int flags) +{ + char *hostname = NULL; + struct openvz_driver *driver = dom->conn->privateData; + virDomainObjPtr vm; + + virCheckFlags(0, NULL); + + openvzDriverLock(driver); + vm = virDomainFindByUUID(&driver->domains, dom->uuid); + openvzDriverUnlock(driver); + + if (!vm) { + openvzError(VIR_ERR_NO_DOMAIN, "%s", + _("no domain with matching uuid")); + goto cleanup; + } + + hostname = openvzVEGetStringParam(dom, "hostname"); + if (hostname == NULL) + goto error; + + /* vzlist prints an unset hostname as '-' */ + if (STREQ(hostname, "-")) { + openvzError(VIR_ERR_OPERATION_FAILED, + _("Hostname of '%s' is unset"), vm->def->name); + goto error; + } + +cleanup: + if (vm) + virDomainObjUnlock(vm); + return hostname; + +error: + VIR_FREE(hostname); + goto cleanup; +} + + static virDomainPtr openvzDomainLookupByID(virConnectPtr conn, int id) { struct openvz_driver *driver = conn->privateData; @@ -2127,6 +2168,7 @@ static virDriver openvzDriver = { .domainIsUpdated = openvzDomainIsUpdated, /* 0.8.6 */ .isAlive = openvzIsAlive, /* 0.9.8 */ .domainUpdateDeviceFlags = openvzDomainUpdateDeviceFlags, /* 0.9.13 */ + .domainGetHostname = openvzDomainGetHostname, /* 0.9.14 */ }; int openvzRegister(void) { -- 1.7.10.4 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list