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

Daniel Veillard veillard at redhat.com
Sat Jul 19 10:29:23 UTC 2008


On Fri, Jul 18, 2008 at 12:27:03PM +0200, Jim Meyering wrote:
> "Daniel P. Berrange" <berrange at redhat.com> wrote:
> > On Thu, Jul 17, 2008 at 01:20:59PM +0400, Evgeniy Sokolov wrote:
> ...
> >> Index: virsh.c
> >> ===================================================================
> >> RCS file: /data/cvs/libvirt/src/virsh.c,v
> >> retrieving revision 1.155
> >> diff -u -p -r1.155 virsh.c
> >> --- virsh.c	29 May 2008 14:56:12 -0000	1.155
> >> +++ virsh.c	17 Jul 2008 09:04:17 -0000
> >> @@ -978,7 +978,8 @@ cmdUndefine(vshControl * ctl, vshCmd * c
> >>      if (!vshConnectionUsability(ctl, ctl->conn, TRUE))
> >>          return FALSE;
> >>
> >> -    if (!(dom = vshCommandOptDomain(ctl, cmd, "domain", &name)))
> >> +    if (!(dom = vshCommandOptDomainBy(ctl, cmd, "domain", &name,
> >> +                                      VSH_BYNAME|VSH_BYUUID)))
> 
> Before this change, we'd get a hint that undefining a running domain
> is not possible:
> 
>     $ virsh -q -c test:///default undefine 1
>     virsh # libvir: Test error test: internal error Domain is still running
>     error: Failed to undefine domain 1
>     virsh #
> 
> Now, the hint is gone, and the new diagnostics are misleading,
> since domain "1" certainly does exist:
> 
>     $ ./virsh -q -c test:///default undefine 1
>     virsh # libvir: Test error : Domain not found
>     error: failed to get domain '1'
>     virsh #

  oh, good catch !

> With the patch below virsh tells what's wrong:
> 
>     $ ./virsh -q -c test:///default undefine 1
>     error: a running domain like 1 cannot be undefined;
>     to undefine, first shutdown then undefine using its name or UUID
>     [Exit 1]
> 
> My first attempt called vshCommandOptDomainBy-with-BYID only upon failure
> of the with-VSH_BYNAME|VSH_BYUUID call, but then you'd still get this
> misleading diagnostic:
> 
>     error: failed to get domain '1'
> 
> It also adds a test that essentially does this:
> 
>     $ ./virsh -q -c test:///default undefine 1
>     error: a running domain like 1 cannot be undefined;
>     to undefine, first shutdown then undefine using its name or UUID
>     [Exit 1]
>     $ ./virsh -q -c test:///default undefine test
>     libvir: Test error test: internal error Domain is still running
>     error: Failed to undefine domain test
>     [Exit 1]
>     $ ./virsh -q -c test:///default 'shutdown 1; undefine test'
>     Domain 1 is being shutdown
>     Domain test has been undefined

  Good idea !
  +1

Daniel

-- 
Red Hat Virtualization group http://redhat.com/virtualization/
Daniel Veillard      | virtualization library  http://libvirt.org/
veillard at redhat.com  | libxml GNOME XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine  http://rpmfind.net/




More information about the libvir-list mailing list