FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Gentoo > Gentoo User

 
 
LinkBack Thread Tools
 
Old 11-04-2009, 11:20 AM
Radek Vykydal
 
Default Enable method/repo nfs options in stage2.

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

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
 
Old 11-23-2009, 08:37 PM
Chris Lumens
 
Default Enable method/repo nfs options in stage2.

> 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'.

I think this is a little confusing, and might better be written as:

if not options:
opts = "defaults"
else:
opts = options.split(",")

I also note that this changes what options is split on from whitespace
to comma. Do we pass comma-delimited options throughout anaconda?

Everything else looks okay.

- Chris

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
 
Old 11-24-2009, 09:25 AM
Radek Vykydal
 
Default Enable method/repo nfs options in stage2.

Chris Lumens wrote:

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'.



I think this is a little confusing, and might better be written as:

if not options:
opts = "defaults"
else:
opts = options.split(",")



I agree it is more readable. I'll use it.


I also note that this changes what options is split on from whitespace
to comma. Do we pass comma-delimited options throughout anaconda?




When we pas multiple options, they are comma-delimited - see isys.mount call
in storage/formats/fs.py and options property of FS class.

Radek

_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@redhat.com
https://www.redhat.com/mailman/listinfo/anaconda-devel-list
 

Thread Tools




All times are GMT. The time now is 02:16 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org