def device_exists(device_name, root_helper=None, namespace=None):
+ """Return True if the device exists in the namespace."""
try:
- address = IPDevice(device_name, root_helper, namespace).link.address
+ dev = IPDevice(device_name, root_helper, namespace)
+ dev.set_log_fail_as_error(False)
+ address = dev.link.address
except RuntimeError:
return False
return bool(address)
+def device_exists_with_ip_mac(device_name, ip_cidr, mac, namespace=None,
+ root_helper=None):
+ """Return True if the device with the given IP and MAC addresses
+ exists in the namespace.
+ """
+ try:
+ device = IPDevice(device_name, root_helper, namespace)
+ if mac != device.link.address:
+ return False
+ if ip_cidr not in (ip['cidr'] for ip in device.addr.list()):
+ return False
+ except RuntimeError:
+ return False
+ else:
+ return True
+
+
def ensure_device_is_ready(device_name, root_helper=None, namespace=None):
dev = IPDevice(device_name, root_helper, namespace)
+ dev.set_log_fail_as_error(False)
try:
# Ensure the device is up, even if it is already up. If the device
# doesn't exist, a RuntimeError will be raised.