# HG changeset patch
# User John Levon <john.levon@sun.com>
# 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@sun.com>
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@lists.xensource.com
http://lists.xensource.com/xen-devel
Daniel P. Berrange
2009-Mar-12 10:59 UTC
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@sun.com> > # 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@sun.com>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@lists.xensource.com > 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@lists.xensource.com http://lists.xensource.com/xen-devel