[PATCH 2/2 master] Wait for device connections for iface-bound iscsi in kickstart (#740105)

Radek Vykydal rvykydal at redhat.com
Tue Jul 23 11:01:14 UTC 2013


---
 pyanaconda/kickstart.py |  5 ++---
 pyanaconda/network.py   | 10 ++++++++++
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/pyanaconda/kickstart.py b/pyanaconda/kickstart.py
index 0e36810..0fa53c6 100644
--- a/pyanaconda/kickstart.py
+++ b/pyanaconda/kickstart.py
@@ -587,14 +587,13 @@ class Iscsi(commands.iscsi.F17_Iscsi):
         tg = commands.iscsi.F17_Iscsi.parse(self, args)
 
         if tg.iface:
-            active_ifaces = nm.nm_activated_devices()
-            if tg.iface not in active_ifaces:
+            if not network.wait_for_network_devices([tg.iface]):
                 raise KickstartValueError, formatErrorMsg(self.lineno, msg="network interface %s required by iscsi %s target is not up" % (tg.iface, tg.target))
 
         mode = blivet.iscsi.iscsi().mode
         if mode == "none":
             if tg.iface:
-                blivet.iscsi.iscsi().create_interfaces(active_ifaces)
+                blivet.iscsi.iscsi().create_interfaces(nm.nm_activated_devices())
         elif ((mode == "bind" and not tg.iface)
               or (mode == "default" and tg.iface)):
             raise KickstartValueError, formatErrorMsg(self.lineno, msg="iscsi --iface must be specified (binding used) either for all targets or for none")
diff --git a/pyanaconda/network.py b/pyanaconda/network.py
index 2a59901..07030a2 100644
--- a/pyanaconda/network.py
+++ b/pyanaconda/network.py
@@ -927,6 +927,16 @@ def _wait_for_connecting_NM():
     log.debug("not connected, waited %d of %d secs" % (i, constants.NETWORK_CONNECTION_TIMEOUT))
     return False
 
+def wait_for_network_devices(devices, timeout=constants.NETWORK_CONNECTION_TIMEOUT):
+    devices = set(devices)
+    i = 0
+    log.debug("waiting for connection of devices %s for iscsi" % devices)
+    while  i < timeout:
+        if not devices - set(nm.nm_activated_devices()):
+            return True
+        i += 1
+        time.sleep(1)
+    return False
 
 def wait_for_connecting_NM_thread(ksdata):
     """This function is called from a thread which is run at startup
-- 
1.7.11.7



More information about the anaconda-patches mailing list