Change in vdsm[master]: Fix crash when libvirt refers to non-existing non-bridged in...
asegurap at redhat.com
asegurap at redhat.com
Wed Sep 12 16:45:57 UTC 2012
Antoni Segura Puimedon has uploaded a new change for review.
Change subject: Fix crash when libvirt refers to non-existing non-bridged interfaces.
......................................................................
Fix crash when libvirt refers to non-existing non-bridged interfaces.
This fix catches the crash resulting of checking information in sysfs of a
non-existing network reported by libvirt.
Bug-Id: https://bugzilla.redhat.com/856163
Change-Id: I62ed8db99ce5cb10e91c7700b055711beb36e6ae
Signed-off-by: Antoni S. Puimedon <asegurap at redhat.com>
---
M vdsm/netinfo.py
1 file changed, 21 insertions(+), 9 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/66/7966/1
diff --git a/vdsm/netinfo.py b/vdsm/netinfo.py
index caf82de..ee5b687 100644
--- a/vdsm/netinfo.py
+++ b/vdsm/netinfo.py
@@ -250,7 +250,7 @@
except OSError, e:
# If the bridge reported by libvirt does not exist anymore, do
# not report it, as this already assures that the bridge is not
- # added d['networks']
+ # added to d['networks']
if e.errno == errno.ENOENT:
logging.info('Obtaining info for net %s.', devname,
exc_info=True)
@@ -266,13 +266,25 @@
# longer supported
d['networks'][netname]['interface'] = devname
- d['networks'][netname].update({
- 'iface': devname,
- 'bridged': nets[netname]['bridged'],
- 'addr': getaddr(devname),
- 'netmask': getnetmask(devname),
- 'gateway': routes.get(devname, '0.0.0.0'),
- 'mtu': getMtu(devname), })
+ try:
+ d['networks'][netname].update({
+ 'iface': devname,
+ 'bridged': nets[netname]['bridged'],
+ 'addr': getaddr(devname),
+ 'netmask': getnetmask(devname),
+ 'gateway': routes.get(devname, '0.0.0.0'),
+ 'mtu': getMtu(devname), })
+ except OSError, e:
+ if e.errno == errno.ENOENT:
+ logging.info('Obtaining info for net %s.', devname,
+ exc_info=True)
+ # When a net is not bridged it will have left an entry in
+ # d['networks']
+ if netname in d['networks']:
+ del d['networks'][netname]
+ continue
+ else:
+ raise
d['bridges'] = dict([(bridge, {
'ports': ports(bridge),
@@ -294,7 +306,7 @@
for nic in nics() ])
paddr = permAddr()
for nic, nd in d['nics'].iteritems():
- if paddr.get(nic):
+ if nic in paddr:
nd['permhwaddr'] = paddr[nic]
d['bondings'] = dict([ (bond, {'slaves': slaves(bond),
'addr': getaddr(bond),
--
To view, visit http://gerrit.ovirt.org/7966
To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I62ed8db99ce5cb10e91c7700b055711beb36e6ae
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Antoni Segura Puimedon <asegurap at redhat.com>
More information about the vdsm-patches
mailing list