[Libvir] [RFC] Device attach/detach on virsh

Daniel P. Berrange berrange at redhat.com
Thu May 10 23:31:28 UTC 2007


On Thu, May 10, 2007 at 06:50:53PM +0900, Masayuki Sunou wrote:
> I want to add I/F to do attach/detatch of VIF and VBD to virsh with
> virDomainAttachDevice()/virDomainDetachDevice(). 
> And, I have two proposals about I/F for virsh to do attach/detach of VIF and VBD.
> 
> proposal 1:
>   Virsh catches MAC, bridge name, device name (physical,virtual), and another 
>   by the command option.
> 
>   ex)
>     ------------------------------------------------------------------
>     # virsh help attach(detach)-vif(vbd)
>       NAME
>         attach(detach)-vif(vbd) - attach(detach) vif(vbd)
> 
>       SYNOPSIS
>         * VIF
>         attach(detach)-vif <domain> <MAC> <bridge> ...
>           or
>         * VBD
>         attach(detach)-vbd <domain> <virt-dev> ...

I'd probably call them

  attach-disk
  attach-interface

to match the name used within the <devices> block so we don't have lots
of different terminolgy for the same concept.

> 
>       DESCRIPTION
>         Attach(Detach) vif(vbd) device
> 
>       OPTIONS
>         <domain>         domain name, id or uuid
> 
>         * VIF
>         <MAC>            MAC address of vif
>         <bridge>         bridge name of vif
>         ...
> 
>         * VBD
>         <virt-dev>       virtual device name of vbd
>         <phy-dev>        physical device name of vbd
>         ...
>     ------------------------------------------------------------------
> 
>   <advantage>
>     - I/F is easy to use than proposal 1. (Because the user does not have to
>       make XML)
>   <disadvantage>
>     - I/F increases because I/F of VIF and VBD becomes separate. (So, the
>       addition of I/F is necessary at any time for supporting devices other
>       than VIF and VBD. )

I think that's fine.

>     - Handling of optional analysis, handling of XML making are necessary
>       in virsh.c, and processing becomes complicated.

For attaching device's there'll be a variety of optional flags you'll
need to support. eg to specify the driver & subtype, file, phys, tap:aio,
tap:qcow, etc' to specify the front end type (floppy, disk, cdrom).

Some real world examples

  virsh attach-disk /dev/sda1 xvdc
  virsh attach-disk --driver phy /dev/sda1 xvdc
  virsh attach-disk --type cdrom --driver tap --subdriver aio /root/boot.iso hdc
  virsh attach-disk --driver file /var/lib/xen/data.img xvdd

Networking is more complicated because there are 8 (!) different ways to
connected up VMs so far. We could either have huge numbers of args, or
we could just support the two common cases (bridge, virtual network) and
say for more complex cases use full XML.

  virsh attach-interface bridge eth0
  virsh attach-interface --mac 02:23:44:e2:2 network default
  virsh attach-interface --target vnet3 network default

> proposal 2:
>   virsh catches a definition of a device by XML 
> 
>   ex)
>     ------------------------------------------------------------------
>     # virsh help attach(detach)-device
>       NAME
>         attach(detach)-device - attach(detach) device from an XML file
> 
>       SYNOPSIS
>         attach(detach)-device <domain> <file>
> 
>       DESCRIPTION
>         Attach(Detach) device from an XML <file>
> 
>       OPTIONS
>         <domain>         domain name, id or uuid
>         <file>           XML file of device description
>     ------------------------------------------------------------------
> 
>   <advantage>
>     - I/F is unified without affecting a device type. (I/F is simple)
>     - Handling of virsh.c is simple. (Optional analysis is not necessary)
>   <disadvantage>
>     - The user has to describe XML.(It is troublesome) 

I don't think we should consider this an either/or option - lets do both.
ie, have specific attach-disk/interface for convenience, and have the
generic attach-device  for broad support.

Regards,
Dan.
-- 
|=- Red Hat, Engineering, Emerging Technologies, Boston.  +1 978 392 2496 -=|
|=-           Perl modules: http://search.cpan.org/~danberr/              -=|
|=-               Projects: http://freshmeat.net/~danielpb/               -=|
|=-  GnuPG: 7D3B9505   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505  -=| 




More information about the libvir-list mailing list