On Mon, Nov 02, 2009 at 03:02:42PM -0500, Cole Robinson wrote:
> - Implement DomainGetMaxVCPUs
> - Use GetMaxVCPUs to validate requested CPU amount
> - Deny the 'hotplug' for a running domain.
> 
> Signed-off-by: Cole Robinson <crobi...@redhat.com>
> ---
>  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 */

ACK


Daniel
-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|

--
Libvir-list mailing list
Libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to