X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=src%2Fvirt.c;h=58cb999d84c4b7510f8ce87d986420af6162f0ab;hp=cd48888687a6251197f30f7d81b0f233184dfbb9;hb=be3b028d7f2fadd8d2107a419393511e4510d0a4;hpb=a4c28b4ed1c5a102c8de2a7425568eb504d05c34;ds=sidebyside diff --git a/src/virt.c b/src/virt.c index cd48888..58cb999 100644 --- a/src/virt.c +++ b/src/virt.c @@ -82,6 +82,7 @@ guestfs__add_domain (guestfs_h *g, const char *domain_name, const char *libvirturi; int readonly; int live; + int allowuuid; const char *iface; struct guestfs___add_libvirt_dom_argv optargs2 = { .bitmask = 0 }; @@ -93,6 +94,8 @@ guestfs__add_domain (guestfs_h *g, const char *domain_name, ? optargs->iface : NULL; live = optargs->bitmask & GUESTFS_ADD_DOMAIN_LIVE_BITMASK ? optargs->live : 0; + allowuuid = optargs->bitmask & GUESTFS_ADD_DOMAIN_ALLOWUUID_BITMASK + ? optargs->allowuuid : 0; if (live && readonly) { error (g, _("you cannot set both live and readonly flags")); @@ -114,7 +117,14 @@ guestfs__add_domain (guestfs_h *g, const char *domain_name, */ virConnSetErrorFunc (conn, NULL, ignore_errors); - dom = virDomainLookupByName (conn, domain_name); + /* Try UUID first. */ + if (allowuuid) + dom = virDomainLookupByUUIDString (conn, domain_name); + + /* Try ordinary domain name. */ + if (!dom) + dom = virDomainLookupByName (conn, domain_name); + if (!dom) { err = virGetLastError (); error (g, _("no libvirt domain called '%s': %s"),