[libvirt] [PATCH] virsh: Increase device-detach intelligence

Eric Blake eblake at redhat.com
Mon Apr 4 22:14:00 UTC 2011


On 03/25/2011 09:09 AM, Michal Privoznik wrote:
> Up to now users have to give a full XML description on input when
> device-detaching. If they omited something it lead to unclear
> error messages (like generated MAC wasn't found, etc.).
> With this patch users can specify only those information which
> specify one device sufficiently precise. Remaining information is
> completed from domain.
> ---
>  tools/virsh.c |  260 +++++++++++++++++++++++++++++++++++++++++++++++++++++----
>  1 files changed, 245 insertions(+), 15 deletions(-)

Not forgotten, but not quite yet to the top of my queue, either :(  I
guess having too many patches to review is a good sign that there is a
lot of contribution going on.

> 
> diff --git a/tools/virsh.c b/tools/virsh.c
> index 50ca50f..95d27f7 100644
> --- a/tools/virsh.c
> +++ b/tools/virsh.c
> @@ -8702,6 +8702,224 @@ cmdAttachDevice(vshControl *ctl, const vshCmd *cmd)
>      return TRUE;
>  }
>  
> +/**
> + * Check if n1 is superset of n2, meaning n1 contains all elements and
> + * attributes as n2 at lest. Including children.
> + * @n1 first node
> + * @n2 second node
> + * return 1 in case n1 covers n2, 0 otherwise.
> + */
> +static int
> +vshNodeIsSuperset(xmlNodePtr n1, xmlNodePtr n2) {

Are there any xml library functions that can already do this without you
rewriting it from scratch?

> +/**
> + * To given domain and (probably incomplete) device XML specification try to
> + * find such device in domain and complete missing parts. This is however
> + * possible when given device XML is sufficiently precise so it addresses only
> + * one device.
> + * @ctl vshControl for error messages printing
> + * @dom domain
> + * @oldXML device XML before
> + * @newXML and after completion
> + * Returns -2 when no such device exists in domain, -3 when given XML selects many
> + *          (is too ambiguous), 0 in case of success. Otherwise returns -1. @newXML
> + *          is touched only in case of success.
> + */
> +static int
> +vshCompleteXMLFromDomain(vshControl *ctl, virDomainPtr dom, char *oldXML,
> +                         char **newXML) {

My quick glance of just the documentation says that this looks like a
nice helper, but I haven't reviewed it in depth.

-- 
Eric Blake   eblake at redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 619 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20110404/5f336f8a/attachment-0001.sig>


More information about the libvir-list mailing list