Add detect root install device

netsetup
Mike Hiretsky 14 years ago
parent d488c975e5
commit 978fd2397d

@ -20,6 +20,7 @@ import cl_overriding
from cl_datavars import glob_attr
from os.path import join as pathjoin, exists as pathexists
from os import readlink,listdir,access,R_OK
from cl_utils import isMount
class fillVars(object, glob_attr):
@ -93,7 +94,6 @@ class fillVars(object, glob_attr):
disk_hash[dev]['grub'] = "%d,%d" % \
(ord(match.groups()[0])-ord('a'),
int(match.groups()[1])-1)
curDevice = None
# parse all parted lines started with Disk and started with number
res = self._runos('LANG=C /usr/sbin/parted -l',ret_list=True)
@ -154,11 +154,34 @@ class fillVars(object, glob_attr):
def get_os_disk_install(self):
"""List mounted points for installed system"""
return self.getAttributeFromHash('os_disk_hash','install')
rootdev = self.Get('os_root_dev')
disk_hash = self.Get('os_disk_hash')
def getMountPoint(disk):
if disk == rootdev:
return "/"
elif "format" in disk_hash[disk] and \
"swap" in disk_hash[disk]['format']:
return "swap"
else:
mount_point = isMount(disk)
if mount_point == "/":
return ""
else:
return mount_point
return map(lambda x: getMountPoint(x),
sorted(self.Get('os_disk_hash').keys()))
def get_os_disk_load(self):
"""List mounted points for current operation system"""
return self.getAttributeFromHash('os_disk_hash','load')
disk_hash = self.Get('os_disk_hash')
def isSwap(disk):
if "format" in disk_hash[disk] and \
"swap" in disk_hash[disk]['format']:
return "swap"
else:
return ""
return map(lambda x: isMount(x) or isSwap(x) or "",
sorted(self.Get('os_disk_hash').keys()))
def get_os_disk_format(self):
"""List filesystem for partition devices"""

@ -174,7 +174,7 @@ class cl_install(color_print):
else:
return dirsFiles
def installSystem(self,disk="",buildermode=False,osname=None):
def installSystem(self,buildermode=False):
"""install System by current variable enviroment"""
sourceDistr = None
targetDistr = None
@ -182,10 +182,6 @@ class cl_install(color_print):
try:
targetDistr = self.getTargetDistributive(disk,buildermode)
distRep = DistributiveRepository('/usr/calculate/share/linux')
self.old_os_linux_name = self.clVars.Get('os_linux_shortname')
self.old_os_linux_ver = self.clVars.Get('os_linux_ver')
if osname:
self.clVars.Set('os_linux_shortname',osname.upper())
sourceDistr = distRep.getLastDistributive(
march=self.clVars.Get('os_arch_machine'),
shortname=self.clVars.Get('os_linux_shortname').lower())

@ -84,7 +84,7 @@ class install_cmd(cl_install,opt,share_cmd):
self.checkVarSyntax(values)
return (values, args)
def processSetLang(self,lang):
def setLang(self,lang):
"""Process set locales by lang"""
if self.setAllLocaleByLang(lang):
return True
@ -92,20 +92,38 @@ class install_cmd(cl_install,opt,share_cmd):
self.printERROR(_("specified lang %s is unsupported")%lang)
return False
def processSetVars(self,vars):
def setVars(self,options):
"""Process setting values for variables"""
for vals in vars:
for val in vals.split(','):
k,o,v = val.partition('=')
if self.clVars.exists(k):
if not self.clVars.SetWriteVar(k,v):
if options.set:
for vals in options.set:
for val in vals.split(','):
k,o,v = val.partition('=')
if self.clVars.exists(k):
if not self.clVars.SetWriteVar(k,v):
return False
else:
self.printERROR(_('variable %s not found')%k)
return False
if options.d:
if not options.d in self.clVars.Get('os_disk_dev'):
self.error(_("Wrong target drive name %s"%options.d))
else:
osdiskload = filter(lambda x: x[1] and x[0] == options.d,
zip(self.clVars.Get('os_disk_dev'),
self.clVars.Get('os_disk_load')))
if len(osdiskload) > 0:
self.error(
_("Specified drive '%s' mounted to '%s' on loaded system"%
(options.d,osdiskload[0][1])))
else:
self.printERROR(_('variable %s not found')%k)
return False
self.clVars.Set('os_root_dev',options.d,True)
if options.s:
self.old_os_linux_name = self.clVars.Get('os_linux_shortname')
self.old_os_linux_ver = self.clVars.Get('os_linux_ver')
self.clVars.Set('os_linux_shortname',options.s.upper(),True)
return True
def processDisplayVars(self,vars):
def displayVars(self,vars):
"""Process displaying variables"""
terms = vars.split(",")
# if value of vars is "all" print all variables
@ -115,7 +133,7 @@ class install_cmd(cl_install,opt,share_cmd):
else:
self.clVars.printVars(terms)
def processTemplateSelect(self,template):
def templateSelect(self,template):
"""Process template appling"""
if self.applyTemplatesForSystem():
return True
@ -123,8 +141,7 @@ class install_cmd(cl_install,opt,share_cmd):
return False
def installSystem(self):
if cl_install.installSystem(self,disk=self.values.d,
buildermode=self.values.b,osname=self.values.s):
if cl_install.installSystem(self,buildermode=self.values.b):
print "installation complete"
return True
else:

@ -40,15 +40,14 @@ if __name__ == "__main__":
install.initVars()
# set lang
if options.l:
if not install.processSetLang(options.l):
if not install.setLang(options.l):
sys.exit(1)
# set values to variables
if options.set:
if not install.processSetVars(options.set):
sys.exit(1)
if not install.setVars(options):
sys.exit(1)
# print variables
if options.vars:
install.processDisplayVars(options.vars)
install.displayVars(options.vars)
sys.exit(0)
# apply template to current system
elif options.T:

Loading…
Cancel
Save