[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] Allow off-line NIC removal



On Wed, Mar 11, 2009 at 06:43:07PM -0700, John Levon wrote:
> # HG changeset patch
> # User John Levon <john.levon@xxxxxxx>
> # Date 1236822173 25200
> # Node ID 36e28c9e7757b49ce79f693f1bdf80ab8f2c8a33
> # Parent  ce97fa7ee861ff3c68468715431ce2b117b5cbee
> Allow off-line NIC removal
> 
> Match a MAC address so device_destroy can remove off-line NICs.
> 
> Signed-off-by: John Levon <john.levon@xxxxxxx>

This patch looks good to me - libvirt needs the ability remove NICs
from inactive guests & there's a patch for this blocking on this
functionality in XenD. Disks already have a similar conversion
that allows use of /dev/XXX device names, so this gives parity of
functionality for NICs.

Daniel

> 
> diff --git a/tools/python/xen/xend/server/netif.py 
> b/tools/python/xen/xend/server/netif.py
> --- a/tools/python/xen/xend/server/netif.py
> +++ b/tools/python/xen/xend/server/netif.py
> @@ -24,7 +24,7 @@ import random
>  import random
>  import re
>  
> -from xen.xend import XendOptions
> +from xen.xend import XendOptions, sxp
>  from xen.xend.server.DevController import DevController
>  from xen.xend.XendError import VmError
>  from xen.xend.XendXSPolicyAdmin import XSPolicyAdminInstance
> @@ -196,3 +196,23 @@ class NetifController(DevController):
>                  result[x] = y
>  
>          return result
> +
> +    # match a VIF ID from xenstore, or a MAC address stored in the domain 
> config
> +    def convertToDeviceNumber(self, devid):
> +        try:
> +            return int(devid)
> +        except ValueError:
> +            if type(devid) is not str:
> +                raise VmError("devid %s is wrong type" % str(devid))
> +            try:
> +                dev = devid.split('/')[-1]
> +                return (int(dev))
> +            except ValueError:
> +                devs = [d for d in self.vm.info.all_devices_sxpr()
> +                    if d[0] == 'vif']
> +                for nr in range(len(devs)):
> +                    dev_type, dev_info = devs[nr]
> +                    if (sxp.child_value(dev_info, 'mac').lower() ==
> +                        devid.lower()):
> +                        return nr
> +                raise VmError("unknown devid %s" % str(devid))
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel

-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.