Antoni Segura Puimedon has uploaded a new change for review.
Change subject: Simplify netinfo get. ......................................................................
Simplify netinfo get.
This patch refactors netinfo to have the network data fetching on a separate function. This reduces the get() complexity and will allow the possibility of reusing the new method for more fine- grained information retrieval, e.g., update just a network info of a Netinfo instance.
Change-Id: I5c3e617d10308d0bfa4deaed329b2e10ef54077c Signed-off-by: Antoni S. Puimedon asegurap@redhat.com --- M vdsm/netinfo.py 1 file changed, 26 insertions(+), 45 deletions(-)
git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/80/11080/1
diff --git a/vdsm/netinfo.py b/vdsm/netinfo.py index f6250c2..e1fd798 100644 --- a/vdsm/netinfo.py +++ b/vdsm/netinfo.py @@ -274,57 +274,38 @@ return paddr
+def getNetData(net, bridged, routes): + try: + if bridged: + return {'ports': ports(net), 'stp': bridge_stp_state(net), + 'cfg': getIfaceCfg(net)} + else: + # ovirt-engine-3.1 expects to see the "interface" attribute iff the + # network is bridgeless. Please remove the attribute and this + # comment when the version is no longer supported. + return {'interface': net, 'iface': net, 'bridged': False, + 'addr': getaddr(net), 'netmask': getnetmask(net), + 'gateway': routes.get(net, '0.0.0.0'), 'mtu': getMtu(net)} + except OSError as e: + if e.errno == errno.ENOENT: + logging.info('Obtaining info for net %s.', net, exc_info=True) + raise KeyError('Network %s was not found') + else: + raise + + def get(): d = {} routes = getRoutes() d['networks'] = {} - nets = networks()
- for netname in nets.iterkeys(): - if nets[netname]['bridged']: - devname = netname - try: - d['networks'][netname] = {'ports': ports(devname), - 'stp': bridge_stp_state(devname), - 'cfg': getIfaceCfg(devname), } - except OSError as 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 to d['networks'] - if e.errno == errno.ENOENT: - logging.info('Obtaining info for net %s.', devname, - exc_info=True) - continue - else: - raise - else: - devname = nets[netname]['iface'] - d['networks'][netname] = {} - - # ovirt-engine-3.1 expects to see "interface" iff the network is - # bridgeless. Please remove this line when that Engine version is - # no longer supported - d['networks'][netname]['interface'] = devname - + for net, netAttr in networks().iteritems(): 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 as 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['networks'][net] = getNetData(net, netAttr['bridged'], routes) + except KeyError: + continue + except OSError: + raise
d['bridges'] = dict([(bridge, {'ports': ports(bridge), 'stp': bridge_stp_state(bridge),
-- To view, visit http://gerrit.ovirt.org/11080 To unsubscribe, visit http://gerrit.ovirt.org/settings
Gerrit-MessageType: newchange Gerrit-Change-Id: I5c3e617d10308d0bfa4deaed329b2e10ef54077c Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Antoni Segura Puimedon asegurap@redhat.com