Antoni Segura Puimedon has uploaded a new change for review. Change subject: Makes getIfaceByIp return a set instead of a string ......................................................................
Makes getIfaceByIp return a set instead of a string It is perfectly permissible for an IP address to be assigned to more than one interface. Thus, the method was missing part of the information in a way that it could behave unexpectedly when the machine had more than an interface for the same IP (breaking even the tests). Change-Id: Ie56ebc909d6a1ecd4218b11d680f49f85674717a Signed-off-by: Antoni S. Puimedon <[email protected]> --- M lib/vdsm/netinfo.py M tests/netinfoTests.py M vdsm/BindingXMLRPC.py 3 files changed, 7 insertions(+), 5 deletions(-) git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/97/21197/1 diff --git a/lib/vdsm/netinfo.py b/lib/vdsm/netinfo.py index 58d8c8c..2242245 100644 --- a/lib/vdsm/netinfo.py +++ b/lib/vdsm/netinfo.py @@ -612,17 +612,19 @@ def getIfaceByIP(ip): + """Returns the set of ifaces that are configured with the specified IP.""" + ifaces = set() for info in ethtool.get_interfaces_info(ethtool.get_active_devices()): for ipv4addr in info.get_ipv4_addresses(): if ip == ipv4addr.address or ip == IPv4toMapped(ipv4addr.address): - return info.device + ifaces.add(info.device) for ipv6addr in info.get_ipv6_addresses(): if ip == ipv6addr.address: - return info.device + ifaces.add(info.device) - return '' + return ifaces class NetInfo(object): diff --git a/tests/netinfoTests.py b/tests/netinfoTests.py index e139e96..7a11108 100644 --- a/tests/netinfoTests.py +++ b/tests/netinfoTests.py @@ -100,7 +100,7 @@ dev.get_ipv6_addresses()) ipaddrs.append(dev.ipv4_address) for ip in ipaddrs: - self.assertEqual(dev.device, netinfo.getIfaceByIP(ip)) + self.assertIn(dev.device, netinfo.getIfaceByIP(ip)) def _dev_dirs_setup(self, dir_fixture): """ diff --git a/vdsm/BindingXMLRPC.py b/vdsm/BindingXMLRPC.py index 1602c5c..6ae72d7 100644 --- a/vdsm/BindingXMLRPC.py +++ b/vdsm/BindingXMLRPC.py @@ -89,7 +89,7 @@ lastserver = self.server.lastServerIP return {'management_ip': self.serverIP, 'lastClient': last, - 'lastClientIface': getIfaceByIP(lastserver)} + 'lastClientIface': getIfaceByIP(lastserver).pop()} def _getKeyCertFilenames(self): """ -- To view, visit http://gerrit.ovirt.org/21197 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie56ebc909d6a1ecd4218b11d680f49f85674717a Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Antoni Segura Puimedon <[email protected]> _______________________________________________ vdsm-patches mailing list [email protected] https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches
