In stage 2, the nfs options given in repo= boot parameter were malparsed, in UI
they were ignored.
Note that now the options can get to stage 2 only via method=/repo= boot
parameter. Ks nfs option --opts works only when its url specifies stage2 (i.e.
ends with images/install.img). In cases when method (--repo parameter for
anaconda python script) is inferred from stage2, nfs options of stage2
"nfs:..." url aren't passed to stage 2.
---
isys/isys.py | 5 +++--
iutil.py | 15 +++++++++++++++
iw/task_gui.py | 24 ++++++++++++++----------
yuminstall.py | 3 ++-
4 files changed, 34 insertions(+), 13 deletions(-)
diff --git a/isys/isys.py b/isys/isys.py
index 338ca26..d059db6 100755
--- a/isys/isys.py
+++ b/isys/isys.py
@@ -120,10 +120,11 @@ def unlosetup(device):
# @param remount Are we mounting an already mounted filesystem?
# @return The return value from the mount system call.
def mount(device, location, fstype = "ext2", readOnly = False,
- bindMount = False, remount = False, options = "defaults"):
+ bindMount = False, remount = False, options = None):
flags = None
location = os.path.normpath(location)
- opts = string.split(options)
+ options = options or "defaults"
+ opts = options.split(",")
# We don't need to create device nodes for devices that start with '/'
# (like '/usbdevfs') and also some special fake devices like 'proc'.
diff --git a/iutil.py b/iutil.py
index 7912bbf..ca3080d 100644
--- a/iutil.py
+++ b/iutil.py
@@ -1028,3 +1028,18 @@ def resetRpmDb(rootdir):
os.unlink(rpmfile)
except Exception, e:
log.debug("error %s removing file: %s" %(e,rpmfile))
+
+def parseNfsUrl(nfsurl):
+ options = ''
+ host = ''
+ path = ''
+ if nfsurl:
+ s = nfsurl.split(":")
+ s.pop(0)
+ if len(s) >= 3:
+ (options, host, path) = s[:3]
+ elif len(s) == 2:
+ (host, path) = s
+ else:
+ host = s[0]
+ return (options, host, path)
diff --git a/iw/task_gui.py b/iw/task_gui.py
index 067e6cd..6dc16ee 100644
--- a/iw/task_gui.py
+++ b/iw/task_gui.py
@@ -32,6 +32,7 @@ import gettext
_ = lambda x: gettext.ldgettext("anaconda", x)
import network
+import iutil
from yuminstall import AnacondaYumRepo
import yum.Errors
@@ -204,13 +205,10 @@ class RepoEditor:
self.proxyCheckbox.set_active(False)
self.proxyTable.set_sensitive(False)
elif url.startswith("nfs"):
- method_server_dir = url.split(":")
- try:
- self.nfsServerEntry.set_text(method_server_dir[1])
- self.nfsPathEntry.set_text(method_server_dir[2])
- except IndexError:
- pass
- self.nfsOptionsEntry.set_text("")
+ (opts, server, path) = iutil.parseNfsUrl(url)
+ self.nfsServerEntry.set_text(server)
+ self.nfsPathEntry.set_text(path)
+ self.nfsOptionsEntry.set_text(opts)
elif url.startswith("cdrom:"):
pass
elif url.startswith("hd:"):
@@ -301,6 +299,9 @@ class RepoEditor:
path = self.nfsPathEntry.get_text()
path.strip()
+ options = self.nfsOptionsEntry.get_text()
+ options.strip()
+
repo.name = self.nameEntry.get_text()
if not server or not path:
@@ -312,7 +313,7 @@ class RepoEditor:
dest = tempfile.mkdtemp("", repo.name.replace(" ", ""), "/mnt")
try:
- isys.mount("%s:%s" % (server, path), dest, "nfs")
+ isys.mount("%s:%s" % (server, path), dest, "nfs", options=options)
except Exception as e:
self.intf.messageWindow(_("Error Setting Up Repository"),
_("The following error occurred while setting up the "
@@ -320,7 +321,7 @@ class RepoEditor:
return False
repo.baseurl = "file://%s" % dest
- repo.anacondaBaseURLs = ["nfs:%s:%s" % (server,path)]
+ repo.anacondaBaseURLs = ["nfs:%s:%s:%s" % (options,server,path)]
return True
def _applyHd(self, repo):
@@ -438,12 +439,15 @@ class RepoMethodstrEditor(RepoEditor):
path = self.nfsPathEntry.get_text()
path.strip()
+ options = self.nfsOptionsEntry.get_text()
+ options.strip()
+
if not server or not path:
self.intf.messageWindow(_("Error"),
_("Please enter an NFS server and path."))
return False
- return "nfs:%s:%s" % (server, path)
+ return "nfs:%s:%s:%s" % (options, server, path)
def _applyHd(self):
return None
diff --git a/yuminstall.py b/yuminstall.py
index 0eb428a..ce9c02c 100644
--- a/yuminstall.py
+++ b/yuminstall.py
@@ -455,7 +455,8 @@ class AnacondaYum(YumSorter):
if not self.anaconda.intf.enableNetwork():
self._baseRepoURL = None
- isys.mount(m[4:], self.tree, "nfs")
+ (opts, server, path) = iutil.parseNfsUrl(m)
+ isys.mount(server+":"+path, self.tree, "nfs", options=opts)
# This really should be fixed in loader instead but for now see
# if there's images and if so go with this being an NFSISO
--
1.6.0.6