Merge "Fix Windows IPDevice.device_has_ip racefulness"

This commit is contained in:
Jenkins 2016-04-12 12:33:56 +00:00 committed by Gerrit Code Review
commit eb70f85d3c
2 changed files with 10 additions and 2 deletions

View File

@ -48,10 +48,14 @@ class IPDevice(object):
self.device_name = name
def device_has_ip(self, ip):
try:
device_addresses = netifaces.ifaddresses(self.device_name)
except ValueError: # The device does not exist on the system
return False
try:
addresses = [ip_addr['addr'] for ip_addr in
netifaces.ifaddresses(self.device_name).get(
netifaces.AF_INET, [])]
device_addresses.get(netifaces.AF_INET, [])]
return ip in addresses
except OSError:
LOG.error(_LE("Failed to get ip addresses for interface: %s."),

View File

@ -28,3 +28,7 @@ class IpLibTestCase(base.BaseTestCase):
def test_ipwrapper_get_device_by_ip(self):
ip_dev = ip_lib.IPWrapper().get_device_by_ip(TEST_IP)
self.assertEqual('lo', ip_dev.device_name)
def test_device_has_ip(self):
not_a_device = ip_lib.IPDevice('#!#._not_a_device_bleargh!!@@@')
self.assertFalse(not_a_device.device_has_ip(TEST_IP))