[libvirt] [PATCH] repeat lookup by name in LookupByID

Daniel P. Berrange berrange at redhat.com
Wed Jul 16 16:42:57 UTC 2008


On Wed, Jul 16, 2008 at 12:04:39PM +0400, Evgeniy Sokolov wrote:
> There was error every time when I undefine stoped container
> "no domain with matching id".
> Bug arrise due to stoped container has ID = -1.

This is not an error - this is intentional. There is no meaningful
ID for an inactive domain, thus lookupByID is intended to fail.

> In such case container will be searched by name.

No, this is wrong. The application should use lookupByName instead.

> 
> other:
> use VIR_ERR_NO_DOMAIN when domain is not found

> Index: src/openvz_driver.c
> ===================================================================
> RCS file: /data/cvs/libvirt/src/openvz_driver.c,v
> retrieving revision 1.28
> diff -u -p -r1.28 openvz_driver.c
> --- src/openvz_driver.c	11 Jul 2008 11:09:44 -0000	1.28
> +++ src/openvz_driver.c	16 Jul 2008 07:51:19 -0000
> @@ -128,11 +128,22 @@ static void cmdExecFree(char *cmdExec[])
>  static virDomainPtr openvzDomainLookupByID(virConnectPtr conn,
>                                     int id) {
>      struct openvz_driver *driver = (struct openvz_driver *)conn->privateData;
> -    struct openvz_vm *vm = openvzFindVMByID(driver, id);
> +    struct openvz_vm *vm;
>      virDomainPtr dom;
>  
> +    vm = openvzFindVMByID(driver, id);
> +
> +    if (!vm) { /*try to find by name*/
> +        char name[OPENVZ_NAME_MAX];
> +        if (snprintf(name, OPENVZ_NAME_MAX, "%d",id) >= OPENVZ_NAME_MAX) {
> +            openvzError(conn, VIR_ERR_INTERNAL_ERROR, _("Too long domain name"));
> +            return NULL;
> +        }
> +        vm = openvzFindVMByName(driver, name);
> +    }

This souldn't be applied.

> +
>      if (!vm) {
> -        openvzError(conn, VIR_ERR_INTERNAL_ERROR, _("no domain with matching id"));
> +        openvzError(conn, VIR_ERR_NO_DOMAIN, NULL);

This and the other error code changes are fine.

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 :|




More information about the libvir-list mailing list