[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