Merge "Fix Windows IPDevice.device_has_ip racefulness"
This commit is contained in:
commit
eb70f85d3c
@ -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."),
|
||||
|
@ -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))
|
||||
|
Loading…
x
Reference in New Issue
Block a user