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 > Ubuntu > Ubuntu Studio User

 
 
LinkBack Thread Tools
 
Old 12-05-2007, 02:49 AM
Chris Lumens
 
Default Begin removing references to anaconda.method and anaconda.methodstr.

Remove method references from the Anaconda object, along with various support
functions that import methods and return instances of methods. This also
removes method instances from the backend.
---
anaconda | 79 +++++++++++++++++++++++++++++++++++-----------
backend.py | 4 +--
dispatch.py | 1 -
installclass.py | 19 -----------
installclasses/fedora.py | 6 ---
installclasses/rhel.py | 3 --
instdata.py | 31 +-----------------
livecd.py | 4 +-
rescue.py | 1 -
yuminstall.py | 4 +-
10 files changed, 66 insertions(+), 86 deletions(-)

diff --git a/anaconda b/anaconda
index 79a619a..0e8f7b3 100755
--- a/anaconda
+++ b/anaconda
@@ -461,7 +461,7 @@ class Anaconda:
self.intf = None
self.dir = None
self.id = None
- self.method = None
+ self._loaderMethodstr = None
self.methodstr = None
self.backend = None
self.rootPath = None
@@ -470,6 +470,7 @@ class Anaconda:
self.rescue_mount = True
self.rescue = False
self.updateSrc = None
+ self.mediaDevice = None

def setDispatch(self):
self.dispatch = dispatch.Dispatcher(self)
@@ -505,14 +506,64 @@ class Anaconda:

self.intf = InstallInterface()

- def setMethod(self, instClass):
- m = instClass.getMethod(self.methodstr)
- if m is not None:
- self.method = apply(m, (self.methodstr, self.rootPath, self.intf))
-
def setBackend(self, instClass):
b = instClass.getBackend(self.methodstr)
- self.backend = apply(b, (self.method, self.rootPath))
+ self.backend = apply(b, (self.rootPath,))
+
+ def setMethodstr(self, methodstr):
+ # Save the method string we are given from the loader for printing out
+ # later. For dealing with the backends, we need to convert it into
+ # real URIs, though.
+ self._loaderMethodstr = methodstr
+
+ if methodstr.startswith("nfs://"):
+ self.methodstr = "file:///" + methodstr[6:]
+ elif methodstr.startswith("nfsiso:/"):
+ self.methodstr = "file:///mnt/source2"
+ elif methodstr.startswith("cdrom://"):
+ (device, tree) = string.split(methodstr[8:], ":", 1)
+
+ if not tree.startswith("/"):
+ tree = "/%s" %(tree,)
+
+ self.mediaDevice = device
+ self.methodstr = "file://" + tree
+ else:
+ self.methodstr = methodstr
+
+ def writeMethodstr(self, f):
+ import urllib
+
+ if self._loaderMethodstr.startswith('ftp://') or self._loaderMethodstr.startswith('http://'):
+ f.write("url --url %s
" % urllib.unquote(self._loaderMethodstr))
+ elif self._loaderMethodstr.startswith('cdrom://'):
+ f.write("cdrom
")
+ elif self._loaderMethodstr.startswith('hd://'):
+ pidx = string.find(self._loaderMethodstr, '//') + 2
+ didx = string.find(self._loaderMethodstr[pidx:], '/')
+ partition = string.split(self._loaderMethodstr[pidxidx+didx], ':')[0]
+ dir = self._loaderMethodstr[pidx+didx+1:]
+ f.write("harddrive --partition=%s --dir=%s
" % (partition, dir))
+ elif self._loaderMethodstr.startswith('nfs:/') or self._loaderMethodstr.startswith('nfsiso:'):
+ (method, tmpmntpt) = string.split(self._loaderMethodstr, ':')
+ # clean up extra '/' at front
+ if tmpmntpt[1] == '/':
+ rawmntpt = tmpmntpt[1:]
+ else:
+ rawmntpt = tmpmntpt
+ mntpt = os.path.normpath(rawmntpt)
+
+ # find mntpt in /proc/mounts so we can get NFS server info
+ fproc = open("/proc/mounts", "r")
+ lines = fproc.readlines()
+ fproc.close()
+
+ for l in lines:
+ minfo = string.split(l)
+ if len(minfo) > 1 and minfo[1] == mntpt and minfo[0].find(":") != -1:
+ (srv, dir) = minfo[0].split(':')
+ f.write("nfs --server=%s --dir=%s
" % (srv, dir))
+ break

if __name__ == "__main__":
anaconda = Anaconda()
@@ -597,7 +648,8 @@ if __name__ == "__main__":
if opts.method:
if opts.method[0] == '@':
expandFTPMethod(opts)
- anaconda.methodstr = opts.method
+
+ anaconda.setMethodstr(opts.method)

if opts.module:
for mod in opts.module:
@@ -845,17 +897,6 @@ if __name__ == "__main__":
if not flags.test and flags.setupFilesystems:
iutil.makeDriveDeviceNodes()

- # imports after setting up the path
- if anaconda.methodstr:
- anaconda.setMethod(instClass)
-
- if not anaconda.method:
- anaconda.intf.messageWindow(_("Unknown install method"),
- _("You have specified an install method "
- "which isn't supported by anaconda."))
- log.critical (_("unknown install method: %s"), opts.method)
- sys.exit(1)
-
anaconda.setBackend(instClass)

anaconda.id = instClass.installDataClass(anaconda, extraModules, anaconda.methodstr, opts.display_mode, anaconda.backend)
diff --git a/backend.py b/backend.py
index 9ec560b..7632f0d 100644
--- a/backend.py
+++ b/backend.py
@@ -31,12 +31,10 @@ log = logging.getLogger("anaconda")


class AnacondaBackend:
- def __init__(self, method, instPath):
+ def __init__(self, instPath):
"""Abstract backend class all backends should inherit from this
- @param method: Object of InstallMethod type
@param instPath: root path for the installation to occur"""

- self.method = method
self.instPath = instPath
self.instLog = None
self.modeText = ""
diff --git a/dispatch.py b/dispatch.py
index 4c991e4..ac4b4a0 100644
--- a/dispatch.py
+++ b/dispatch.py
@@ -238,7 +238,6 @@ class Dispatcher(object):
self.step = None
self.skipSteps = {}

- self.method = anaconda.method
self.firstStep = 0

def _getDir(self):
diff --git a/installclass.py b/installclass.py
index d6a8806..74036c5 100644
--- a/installclass.py
+++ b/installclass.py
@@ -412,25 +412,6 @@ class BaseInstallClass(object):
mouse.set(mouseName, emulThree, device)
id.setMouse(mouse)

- def getMethod(self, methodstr):
- if methodstr.startswith('cdrom://'):
- from image import CdromInstallMethod
- return CdromInstallMethod
- elif methodstr.startswith('nfs:/'):
- from image import NfsInstallMethod
- return NfsInstallMethod
- elif methodstr.startswith('nfsiso:/'):
- from image import NfsIsoInstallMethod
- return NfsIsoInstallMethod
- elif methodstr.startswith('ftp://') or methodstr.startswith('http://'):
- from urlinstall import UrlInstallMethod
- return UrlInstallMethod
- elif methodstr.startswith('hd://'):
- from harddrive import HardDriveInstallMethod
- return HardDriveInstallMethod
- else:
- return None
-
def getBackend(self, methodstr):
# this should be overriden in distro install classes
from backend import AnacondaBackend
diff --git a/installclasses/fedora.py b/installclasses/fedora.py
index 696a78c..6f03571 100644
--- a/installclasses/fedora.py
+++ b/installclasses/fedora.py
@@ -43,12 +43,6 @@ class InstallClass(BaseInstallClass):
BaseInstallClass.setSteps(self, anaconda);
anaconda.dispatch.skipStep("partition")

- def getMethod(self, methodstr):
- if methodstr.startswith("livecd://"):
- import livecd
- return livecd.LiveCDImageMethod
- return BaseInstallClass.getMethod(self, methodstr)
-
def getBackend(self, methodstr):
if methodstr.startswith("livecd://"):
import livecd
diff --git a/installclasses/rhel.py b/installclasses/rhel.py
index b6e8cda..387443e 100644
--- a/installclasses/rhel.py
+++ b/installclasses/rhel.py
@@ -158,9 +158,6 @@ class InstallClass(BaseInstallClass):

log.info("repopaths is %s" %(self.repopaths,))

- def getMethod(self, methodstr):
- return BaseInstallClass.getMethod(self, methodstr)
-
def getBackend(self, methodstr):
return yuminstall.YumBackend

diff --git a/instdata.py b/instdata.py
index 784fdb6..cdb0574 100644
--- a/instdata.py
+++ b/instdata.py
@@ -212,36 +212,7 @@ class InstallData:
f.write("install
");

# figure out the install method and write out a line
- if self.methodstr.startswith('ftp://') or self.methodstr.startswith('http://'):
- f.write("url --url %s
" % urllib.unquote(self.methodstr))
- elif self.methodstr.startswith('cdrom://'):
- f.write("cdrom
")
- elif self.methodstr.startswith('hd://'):
- pidx = string.find(self.methodstr, '//') + 2
- didx = string.find(self.methodstr[pidx:], '/')
- partition = string.split(self.methodstr[pidxidx+didx], ':')[0]
- dir = self.methodstr[pidx+didx+1:]
- f.write("harddrive --partition=%s --dir=%s
" % (partition, dir))
- elif self.methodstr.startswith('nfs:/') or self.methodstr.startswith('nfsiso:'):
- (method, tmpmntpt) = string.split(self.methodstr, ':')
- # clean up extra '/' at front
- if tmpmntpt[1] == '/':
- rawmntpt = tmpmntpt[1:]
- else:
- rawmntpt = tmpmntpt
- mntpt = os.path.normpath(rawmntpt)
-
- # find mntpt in /proc/mounts so we can get NFS server info
- fproc = open("/proc/mounts", "r")
- lines = fproc.readlines()
- fproc.close()
-
- for l in lines:
- minfo = string.split(l)
- if len(minfo) > 1 and minfo[1] == mntpt and minfo[0].find(":") != -1:
- (srv, dir) = minfo[0].split(':')
- f.write("nfs --server=%s --dir=%s
" % (srv, dir))
- break
+ self.anaconda.writeMethodstr(f)

if self.instClass.skipkey:
f.write("key --skip
")
diff --git a/livecd.py b/livecd.py
index d718bfe..0e41e60 100644
--- a/livecd.py
+++ b/livecd.py
@@ -141,8 +141,8 @@ class LiveCDImageMethod(installmethod.InstallMethod):
return blkcnt * blksize / 1024 / 1024

class LiveCDCopyBackend(backend.AnacondaBackend):
- def __init__(self, method, instPath):
- backend.AnacondaBackend.__init__(self, method, instPath)
+ def __init__(self, instPath):
+ backend.AnacondaBackend.__init__(self, instPath)
flags.livecdInstall = True
self.supportsUpgrades = False
self.supportsPackageSelection = False
diff --git a/rescue.py b/rescue.py
index 0c5a039..9cb1003 100644
--- a/rescue.py
+++ b/rescue.py
@@ -276,7 +276,6 @@ def runRescue(anaconda, instClass):

screen = SnackScreen()
anaconda.intf = RescueInterface(screen)
- anaconda.setMethod(instClass)

# prompt to see if we should try and find root filesystem and mount
# everything in /etc/fstab on that root
diff --git a/yuminstall.py b/yuminstall.py
index a7a0758..67f6d66 100644
--- a/yuminstall.py
+++ b/yuminstall.py
@@ -576,8 +576,8 @@ class AnacondaYum(YumSorter):
return False

class YumBackend(AnacondaBackend):
- def __init__ (self, method, instPath):
- AnacondaBackend.__init__(self, method, instPath)
+ def __init__ (self, instPath):
+ AnacondaBackend.__init__(self, instPath)
self.supportsPackageSelection = True

def doInitialSetup(self, anaconda):
--
1.5.3.4

_______________________________________________
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 07:23 PM.

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