FSSet already uses the anaconda object for a variety of tasks, so store a pointer to it in FSSet. Will need this for the modification to the rootDevice property. --- livecd.py | 2 +- packages.py | 7 +++---- rescue.py | 2 +- storage/__init__.py | 36 ++++++++++++++++++------------------ upgrade.py | 4 ++-- yuminstall.py | 2 +- 6 files changed, 26 insertions(+), 27 deletions(-) diff --git a/livecd.py b/livecd.py index 9d60efc..da33663 100644 --- a/livecd.py +++ b/livecd.py @@ -227,7 +227,7 @@ class LiveCDCopyBackend(backend.AnacondaBackend): self._resizeRootfs(anaconda, wait) # remount filesystems - anaconda.id.storage.fsset.mountFilesystems(anaconda) + anaconda.id.storage.fsset.mountFilesystems() # restore the label of / to what we think it is rootDevice = anaconda.id.storage.fsset.rootDevice diff --git a/packages.py b/packages.py index dda98c4..0ee710e 100644 --- a/packages.py +++ b/packages.py @@ -193,9 +193,8 @@ def turnOnFilesystems(anaconda): sys.exit(1) if not anaconda.id.upgrade: - anaconda.id.storage.fsset.turnOnSwap(anaconda) - anaconda.id.storage.fsset.mountFilesystems(anaconda, - raiseErrors=False, + anaconda.id.storage.fsset.turnOnSwap() + anaconda.id.storage.fsset.mountFilesystems(raiseErrors=False, readOnly=False, skipRoot=anaconda.backend.skipFormatRoot) else: @@ -203,7 +202,7 @@ def turnOnFilesystems(anaconda): # we should write out a new fstab with the migrated fstype shutil.copyfile("%s/etc/fstab" % anaconda.rootPath, "%s/etc/fstab.anaconda" % anaconda.rootPath) - anaconda.id.storage.fsset.write(anaconda.rootPath) + anaconda.id.storage.fsset.write() # and make sure /dev is mounted so we can read the bootloader bindMountDevDirectory(anaconda.rootPath) diff --git a/rescue.py b/rescue.py index 9dafec0..772d9c6 100644 --- a/rescue.py +++ b/rescue.py @@ -366,7 +366,7 @@ def runRescue(anaconda, instClass): # now turn on swap if not readOnly: try: - anaconda.id.storage.fsset.turnOnSwap(anaconda) + anaconda.id.storage.fsset.turnOnSwap() except: log.error("Error enabling swap") diff --git a/storage/__init__.py b/storage/__init__.py index 2fc35aa..3c3a243 100644 --- a/storage/__init__.py +++ b/storage/__init__.py @@ -224,7 +224,7 @@ class Storage(object): passphrase=self.encryptionPassphrase, luksDict=self.__luksDevs, iscsi=self.iscsi) - self.fsset = FSSet(self.devicetree) + self.fsset = FSSet(self.devicetree, self.anaconda) def doIt(self): self.devicetree.processActions() @@ -291,7 +291,7 @@ class Storage(object): luksDict=self.__luksDevs, iscsi=self.iscsi) self.devicetree.populate() - self.fsset = FSSet(self.devicetree) + self.fsset = FSSet(self.devicetree, self.anaconda) self.anaconda.id.rootParts = None self.anaconda.id.upgradeRoot = None w.pop() @@ -915,7 +915,7 @@ class Storage(object): return False def write(self, instPath): - self.fsset.write(instPath) + self.fsset.write(instPath=instPath) self.iscsi.write(instPath, self.anaconda) self.fcoe.write(instPath, self.anaconda) self.zfcp.write(instPath) @@ -1119,7 +1119,7 @@ def mountExistingSystem(anaconda, rootEnt, return -1 if flags.setupFilesystems: - fsset.mountFilesystems(anaconda, readOnly=readOnly, skipRoot=True) + fsset.mountFilesystems(readOnly=readOnly, skipRoot=True) class BlkidTab(object): @@ -1267,8 +1267,9 @@ def get_containing_device(path, devicetree): class FSSet(object): """ A class to represent a set of filesystems. """ - def __init__(self, devicetree): + def __init__(self, devicetree, anaconda): self.devicetree = devicetree + self.anaconda = anaconda self.cryptTab = None self.blkidTab = None self.origFStab = None @@ -1540,11 +1541,11 @@ class FSSet(object): options) return mtab - def turnOnSwap(self, anaconda, upgrading=None): + def turnOnSwap(self, upgrading=None): for device in self.swapDevices: if isinstance(device, FileDevice): # set up FileDevices' parents now that they are accessible - targetDir = "%s/%s" % (anaconda.rootPath, device.path) + targetDir = "%s/%s" % (self.anaconda.rootPath, device.path) parent = get_containing_device(targetDir, self.devicetree) if not parent: log.error("cannot determine which device contains " @@ -1559,7 +1560,7 @@ class FSSet(object): device.setup() device.format.setup() except SuspendError: - if anaconda.intf: + if self.anaconda.intf: if upgrading: msg = _("The swap device:\n\n %s\n\n" "in your /etc/fstab file is currently in " @@ -1578,10 +1579,10 @@ class FSSet(object): "to format all swap devices.") \ % device.path - anaconda.intf.messageWindow(_("Error"), msg) + self.anaconda.intf.messageWindow(_("Error"), msg) sys.exit(0) except DeviceError as (msg, path): - if anaconda.intf: + if self.anaconda.intf: if upgrading: err = _("Error enabling swap device %s: %s\n\n" "The /etc/fstab on your upgrade partition " @@ -1594,12 +1595,11 @@ class FSSet(object): "device has not been initialized.\n\n" "Press OK to exit the installer.") % \ (path, msg) - anaconda.intf.messageWindow(_("Error"), err) + self.anaconda.intf.messageWindow(_("Error"), err) sys.exit(0) - def mountFilesystems(self, anaconda, raiseErrors=None, readOnly=None, - skipRoot=False): - intf = anaconda.intf + def mountFilesystems(self, raiseErrors=None, readOnly=None, skipRoot=False): + intf = self.anaconda.intf devices = self.mountpoints.values() + self.swapDevices devices.extend([self.dev, self.devshm, self.devpts, self.sysfs, self.proc]) devices.sort(key=lambda d: getattr(d.format, "mountpoint", None)) @@ -1621,7 +1621,7 @@ class FSSet(object): # # -- bind formats' device and mountpoint are always both # under the chroot. no exceptions. none, damn it. - targetDir = "%s/%s" % (anaconda.rootPath, device.path) + targetDir = "%s/%s" % (self.anaconda.rootPath, device.path) parent = get_containing_device(targetDir, self.devicetree) if not parent: log.error("cannot determine which device contains " @@ -1643,7 +1643,7 @@ class FSSet(object): try: device.format.setup(options=options, - chroot=anaconda.rootPath) + chroot=self.anaconda.rootPath) except OSError as e: if intf: if e.errno == errno.EEXIST: @@ -1745,7 +1745,7 @@ class FSSet(object): # nasty, nasty self.devicetree._addDevice(dev) - def mkDevRoot(self, instPath): + def mkDevRoot(self, instPath=self.anaconda.rootPath): root = self.rootDevice dev = "%s/%s" % (instPath, root.path) if not os.path.exists("%s/dev/root" %(instPath,)) and os.path.exists(dev): @@ -1781,7 +1781,7 @@ class FSSet(object): return migratable - def write(self, instPath): + def write(self, instPath=self.anaconda.rootPath): """ write out all config files based on the set of filesystems """ # /etc/fstab fstab_path = os.path.normpath("%s/etc/fstab" % instPath) diff --git a/upgrade.py b/upgrade.py index 826419c..7123df4 100644 --- a/upgrade.py +++ b/upgrade.py @@ -256,8 +256,8 @@ def upgradeMountFilesystems(anaconda): anaconda.id.storage.fsset.parseFSTab(chroot=anaconda.rootPath) if flags.setupFilesystems: - anaconda.id.storage.fsset.turnOnSwap(anaconda, upgrading=True) - anaconda.id.storage.fsset.mkDevRoot(anaconda.rootPath) + anaconda.id.storage.fsset.turnOnSwap(upgrading=True) + anaconda.id.storage.fsset.mkDevRoot() # Move /etc/rpm/platform out of the way. if os.path.exists(anaconda.rootPath + "/etc/rpm/platform"): diff --git a/yuminstall.py b/yuminstall.py index 20a3085..adaadc3 100644 --- a/yuminstall.py +++ b/yuminstall.py @@ -1476,7 +1476,7 @@ reposdir=/etc/anaconda.repos.d,/tmp/updates/anaconda.repos.d,/tmp/product/anacon # write out the fstab if not upgrade: - anaconda.id.storage.fsset.write(anaconda.rootPath) + anaconda.id.storage.fsset.write() # rootpath mode doesn't have this file around if os.access("/etc/modprobe.d/anaconda.conf", os.R_OK): shutil.copyfile("/etc/modprobe.d/anaconda.conf", -- 1.6.2.5 _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list