diff options
-rw-r--r-- | ChangeLog | 13 | ||||
-rw-r--r-- | iscsi.py | 15 | ||||
-rw-r--r-- | iw/autopart_type.py | 2 | ||||
-rw-r--r-- | kickstart.py | 19 | ||||
-rw-r--r-- | yuminstall.py | 10 |
5 files changed, 48 insertions, 11 deletions
@@ -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. @@ -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 |