summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog13
-rw-r--r--iscsi.py15
-rw-r--r--iw/autopart_type.py2
-rw-r--r--kickstart.py19
-rw-r--r--yuminstall.py10
5 files changed, 48 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index dff125da8..7e77c048e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,18 @@
2006-07-21 Jeremy Katz <katzj@redhat.com>
+ * iw/autopart_type.py (PartitionTypeWindow.addIscsiDrive): Show
+ dialog while iscsid is starting
+
+ * yuminstall.py (YumBackend.selectFSPackages): Ensure that
+ iscsi-initiator-utils gets installed if installing on iscsi
+
+ * kickstart.py (AnacondaKSHandlers.doIscsi): Fixes for new iscsi
+ setup, startup iscsi targets at iscsi config
+
+ * iscsi.py: Sleep after starting iscsid, ensure we get the port
+ correct, redirect output from iscsid to avoid spinning, fix
+ writing out iscsi config
+
* scripts/buildinstall: Handle having packages under
$PRODUCTPATH/RPMS or $PRODUCTPATH/
* scripts/pkgorder: Likewise.
diff --git a/iscsi.py b/iscsi.py
index 29f36ce9f..d7b3ebc97 100644
--- a/iscsi.py
+++ b/iscsi.py
@@ -18,11 +18,11 @@ import iutil
from flags import flags
import logging
import shutil
+import time
log = logging.getLogger("anaconda")
from rhpl.translate import _, N_
-
# Note that stage2 copies all files under /sbin to /usr/sbin
ISCSID="/usr/sbin/iscsid"
ISCSIADM = "/usr/sbin/iscsiadm"
@@ -32,8 +32,6 @@ INITIATOR_FILE="/etc/initiatorname.iscsi"
class iscsi:
def __init__(self):
self.targets = []
- self.ipaddr = ""
- self.port = "3260"
self.initiator = ""
self.iscsidStarted = False
@@ -97,7 +95,7 @@ class iscsi:
os.kill(pid, signal.SIGKILL)
self.iscsidStarted = False;
- def discoverTarget(self, ipaddr, port, intf = None):
+ def discoverTarget(self, ipaddr, port = "3260", intf = None):
if not self.iscsidStarted:
self.startup(intf)
if flags.test:
@@ -138,8 +136,11 @@ class iscsi:
if not os.path.exists(ISCSID_DB_DIR):
iutil.mkdirChain(ISCSID_DB_DIR)
- iutil.execWithRedirect(ISCSID, [], searchPath = 1)
+ log.info("ISCSID is %s", ISCSID)
+ iutil.execWithRedirect(ISCSID, [],
+ stdout="/dev/tty5", stderr="/dev/tty5")
self.iscsidStarted = True
+ time.sleep(2)
for t in self.targets:
idx = t.rfind(":")
@@ -148,7 +149,7 @@ class iscsi:
port = "3260"
else:
ipaddr = t[:idx]
- port = t[idx:]
+ port = t[idx+1:]
self.discoverTarget(ipaddr, port, intf)
self.loginTarget(ipaddr)
@@ -161,7 +162,7 @@ class iscsi:
return
def write(self, instPath):
- if not self.ipaddr:
+ if not self.initiator:
return
fd = os.open(instPath + INITIATOR_FILE, os.O_RDWR | os.O_CREAT)
diff --git a/iw/autopart_type.py b/iw/autopart_type.py
index 8b7cdb49e..3959f92dd 100644
--- a/iw/autopart_type.py
+++ b/iw/autopart_type.py
@@ -159,7 +159,7 @@ class PartitionTypeWindow(InstallWindow):
continue
self.anaconda.id.iscsi.targets.append(target)
- self.anaconda.id.iscsi.discoverTarget(ip, port)
+ self.anaconda.id.iscsi.discoverTarget(ip, port, self.intf)
self.anaconda.id.iscsi.loginTarget(ip)
break
diff --git a/kickstart.py b/kickstart.py
index ad5e1f6bb..2c9a006e5 100644
--- a/kickstart.py
+++ b/kickstart.py
@@ -189,7 +189,24 @@ class AnacondaKSHandlers(KickstartHandlers):
id.iscsi.ipaddr = self.ksdata.iscsi["target"]
id.iscsi.port = self.ksdata.iscsi["port"]
- id.iscsi.initiator = self.ksdata.iscsi["initiator"]
+
+ id.iscsi.initiator = self.ksdata.iscsi["initiator"]
+
+ if self.ksdata.iscsi["target"]:
+ ip = t = self.ksdata.iscsi["target"]
+ port = None
+ if self.ksdata.iscsi["port"]:
+ t = "%s:%s" %(t, self.ksdata.iscsi["port"])
+ port = self.ksdata.iscsi["port"]
+ id.iscsi.targets.append(t)
+
+ # FIXME: have to startup iscsi now so that we know the disk later
+ log.info("added iscsi target: %s" %(t,))
+ id.iscsi.discoverTarget(ip, port)
+ id.iscsi.loginTarget(ip)
+
+ # FIXME: flush the drive dict so we figure drives out again
+ isys.flushDriveDict()
def doKeyboard(self, id, args):
KickstartHandlers.doKeyboard(self, args)
diff --git a/yuminstall.py b/yuminstall.py
index 531774fe3..22595d0e1 100644
--- a/yuminstall.py
+++ b/yuminstall.py
@@ -843,10 +843,16 @@ class YumBackend(AnacondaBackend):
elif rhpl.getArch() == "ia64":
self.selectPackage("elilo")
- def selectFSPackages(self, fsset):
+ def selectFSPackages(self, fsset, diskset):
for entry in fsset.entries:
map(self.selectPackage, entry.fsystem.getNeededPackages())
+ for disk in diskset.disks.keys():
+ if isys.driveIsIscsi(disk):
+ log.info("ensuring iscsi is installed")
+ self.selectPackage("iscsi-initiator-utils")
+ break
+
def doPostSelection(self, anaconda):
# Only solve dependencies on the way through the installer, not the way back.
if anaconda.dir == DISPATCH_BACK:
@@ -855,7 +861,7 @@ class YumBackend(AnacondaBackend):
# do some sanity checks for kernel and bootloader
self.selectBestKernel()
self.selectBootloader()
- self.selectFSPackages(anaconda.id.fsset)
+ self.selectFSPackages(anaconda.id.fsset, anaconda.id.diskset)
if anaconda.id.getUpgrade():
from upgrade import upgrade_remove_blacklist