Split infiniband from "802-3-ethernet" with different NetworkManager settings.
Resolves: rhbz#1177032
From: Jiri Konecny jkonecny@redhat.com
Split infiniband from "802-3-ethernet" with different NetworkManager settings.
Resolves: rhbz#1177032 --- pyanaconda/network.py | 20 ++++++++++++++++++-- pyanaconda/nm.py | 19 +++++++++++++++++-- 2 files changed, 35 insertions(+), 4 deletions(-)
diff --git a/pyanaconda/network.py b/pyanaconda/network.py index 30cf74e..a5413c3 100644 --- a/pyanaconda/network.py +++ b/pyanaconda/network.py @@ -517,6 +517,14 @@ def add_connection_for_ksdata(networkdata, devname): suuid = _add_slave_connection('bridge', slave, devname, networkdata.activate) added_connections.append((suuid, slave)) dev_spec = None + # type "infiniband" + elif nm.nm_device_type_is_infiniband(devname): + values.append(['infiniband', 'transport-mode', 'datagram', 's']) + values.append(['connection', 'type', 'infiniband', 's']) + values.append(['connection', 'id', devname, 's']) + values.append(['connection', 'interface-name', devname, 's']) + + dev_spec = None # type "802-3-ethernet" else: mac = nm.nm_device_perm_hwaddress(devname) @@ -780,6 +788,8 @@ def find_ifcfg_file_of_device(devname, root_path=""): ifcfg_path = find_ifcfg_file([("DEVICE", devname)]) elif nm.nm_device_type_is_bridge(devname): ifcfg_path = find_ifcfg_file([("DEVICE", devname)]) + elif nm.nm_device_type_is_infiniband(devname): + ifcfg_path = find_ifcfg_file([("DEVICE", devname)]) elif nm.nm_device_type_is_ethernet(devname): try: hwaddr = nm.nm_device_perm_hwaddress(devname) @@ -965,7 +975,10 @@ def ks_spec_to_device_name(ksspec=""): # "XX:XX:XX:XX:XX:XX" (mac address) elif ':' in ksspec: try: - hwaddr = nm.nm_device_perm_hwaddress(dev) + if nm.nm_device_type_is_infiniband(dev): + hwaddr = nm.nm_device_hwaddress(dev) + else: + hwaddr = nm.nm_device_perm_hwaddress(dev) except ValueError as e: log.debug("ks_spec_to_device_name: %s", e) continue @@ -975,7 +988,10 @@ def ks_spec_to_device_name(ksspec=""): # "bootif" and BOOTIF==XX:XX:XX:XX:XX:XX elif ksspec == 'bootif': try: - hwaddr = nm.nm_device_perm_hwaddress(dev) + if nm.nm_device_type_is_infiniband(dev): + hwaddr = nm.nm_device_hwaddress(dev) + else: + hwaddr = nm.nm_device_perm_hwaddress(dev) except ValueError as e: log.debug("ks_spec_to_device_name: %s", e) continue diff --git a/pyanaconda/nm.py b/pyanaconda/nm.py index f08f981..7fa016e 100644 --- a/pyanaconda/nm.py +++ b/pyanaconda/nm.py @@ -297,6 +297,15 @@ def nm_device_type_is_ethernet(name): """ return nm_device_type(name) == NetworkManager.DeviceType.ETHERNET
+def nm_device_type_is_infiniband(name): + """Is the type of device infiniband? + + Exceptions: + UnknownDeviceError if device is not found + PropertyNotFoundError if type is not found + """ + return nm_device_type(name) == NetworkManager.DeviceType.INFINIBAND + def nm_device_type_is_bond(name): """Is the type of device bond?
@@ -561,7 +570,10 @@ def nm_hwaddr_to_device_name(hwaddr): :rtype: str """ for device in nm_devices(): - if nm_device_perm_hwaddress(device).upper() == hwaddr.upper(): + if nm_device_type_is_infiniband(device): + if nm_device_hwaddress(device).upper() == hwaddr.upper(): + return device + elif nm_device_perm_hwaddress(device).upper() == hwaddr.upper(): return device return None
@@ -613,7 +625,10 @@ def _device_settings(name): settings = _find_settings(name, 'connection', 'interface-name') if not settings: try: - hwaddr_str = nm_device_perm_hwaddress(name) + if nm_device_type_is_infiniband(name): + hwaddr_str = nm_device_hwaddress(name) + else: + hwaddr_str = nm_device_perm_hwaddress(name) except PropertyNotFoundError: settings = [] else:
Added label: rhel7-branch.
Added label: master.
@@ -965,7 +975,10 @@ def ks_spec_to_device_name(ksspec=""): # "XX:XX:XX:XX:XX:XX" (mac address) elif ':' in ksspec: try:
hwaddr = nm.nm_device_perm_hwaddress(dev)
if nm.nm_device_type_is_infiniband(dev):
hwaddr = nm.nm_device_hwaddress(dev)
else:
hwaddr = nm.nm_device_perm_hwaddress(dev)
This deserves a comment.
Looks good to me other than the suggestion above.
anaconda-patches@lists.fedorahosted.org