On 02/22/2011 03:16 AM, Michal Privoznik wrote:
> Problem is, if user does not specify mac address in input XML,
> we generate a random one, which is why device-detach fails giving
> a confusing error message. Therefore <mac> needs to be required.
> ---
> tools/virsh.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++-----------
> 1 files changed, 46 insertions(+), 11 deletions(-)
I'm not sure this is patching the right place. This fixes virsh for the
detach-device <interface> case, but breaks detach-device <disk> and
friends (which don't have or need a <mac>). Meanwhile, this is only
papering over things at the virsh, while still leaving the underlying
API vulnerable (if you use python, or perl, or java, or ... bindings).
Wouldn't the smarter fix be to change the underlying API, so that when
detach-device is called on an <interface> and the domain only has one
interface available, then that interface is detached without requiring a
<mac>; therefore, the problem of requiring a <mac> should only be when
there are more than one <interface> attached to the domain in the first
place? That is, the detach device code that parses XML into the device
that needs to be detached needs to know whether the mac address was
auto-generated (good for attach, ignorable on detach with one interface,
error on detach with multiple interfaces), or explicitly specified (good
for attach, must match an existing an existing interface on detach).
--
Eric Blake eblake redhat com +1-801-349-2682
Libvirt virtualization library http://libvirt.org