- Implement DomainGetMaxVCPUs - Use GetMaxVCPUs to validate requested CPU amount - Deny the 'hotplug' for a running domain. Signed-off-by: Cole Robinson <crobinso@xxxxxxxxxx> --- src/test/test_driver.c | 26 ++++++++++++++++++++++---- 1 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/test/test_driver.c b/src/test/test_driver.c index 31b5ad3..2c61cf1 100644 --- a/src/test/test_driver.c +++ b/src/test/test_driver.c @@ -1801,11 +1801,21 @@ cleanup: return ret; } +static int testDomainGetMaxVcpus(virDomainPtr domain) +{ + return testGetMaxVCPUs(domain->conn, "test"); +} + static int testSetVcpus(virDomainPtr domain, unsigned int nrCpus) { testConnPtr privconn = domain->conn->privateData; virDomainObjPtr privdom; - int ret = -1; + int ret = -1, maxvcpus; + + /* Do this first before locking */ + maxvcpus = testDomainGetMaxVcpus(domain); + if (maxvcpus < 0) + goto cleanup; testDriverLock(privconn); privdom = virDomainFindByName(&privconn->domains, @@ -1817,9 +1827,17 @@ static int testSetVcpus(virDomainPtr domain, goto cleanup; } + if (!virDomainIsActive(privdom)) { + testError(domain->conn, VIR_ERR_OPERATION_INVALID, + "%s", _("cannot hotplug vcpus for an inactive domain")); + goto cleanup; + } + /* We allow more cpus in guest than host */ - if (nrCpus > 32) { - testError(domain->conn, VIR_ERR_INVALID_ARG, __FUNCTION__); + if (nrCpus > maxvcpus) { + testError(domain->conn, VIR_ERR_INVALID_ARG, + "requested cpu amount exceeds maximum (%d > %d)", + nrCpus, maxvcpus); goto cleanup; } @@ -4686,7 +4704,7 @@ static virDriver testDriver = { testSetVcpus, /* domainSetVcpus */ NULL, /* domainPinVcpu */ NULL, /* domainGetVcpus */ - NULL, /* domainGetMaxVcpus */ + testDomainGetMaxVcpus, /* domainGetMaxVcpus */ NULL, /* domainGetSecurityLabel */ NULL, /* nodeGetSecurityModel */ testDomainDumpXML, /* domainDumpXML */ -- 1.6.5.1 -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list