[rhel7-branch 1/1] Fix kickstart install with infiniband (#1177032)

jkonecny12 installerbot-noreply at redhat.com
Wed Jul 1 07:44:08 UTC 2015


From: Jiri Konecny <jkonecny at 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:


-- 
To view this commit on github, visit https://github.com/rhinstaller/anaconda/commit/b5ea1f4d43e2f10d2f8165f4dc7c376c34c76561


More information about the anaconda-patches mailing list