Refactoring and improvement.

Class process: add ability specify LANG by lang param.
Rewrite runOsCommand, genpassword, getpathenv.
Fix readFile function.
Add function selectVar to varsShare for selecting variables from matrix.
Add function getKernelUid by device.
Rewrite cl_kernel_uid fill method by using getKernelUid.
develop
Mike Hiretsky 13 years ago
parent 2e74407d9b
commit 7d95670209

@ -558,19 +558,7 @@ class fillVars(varsShare):
def get_cl_kernel_uid(self):
"""Get UID of symlink kernel, initramfs and System.map"""
uuidpath = '/dev/disk/by-uuid'
if not os.access(uuidpath,os.R_OK):
return ""
uuidDevs = filter(path.islink,map(lambda x: path.join(uuidpath,x),
os.listdir(uuidpath)))
mapDevUuid = dict(map(lambda x:(path.normpath(path.join(uuidpath,
os.readlink(x))),
path.basename(x)),
uuidDevs))
if self.Get('os_root_dev') in mapDevUuid:
return mapDevUuid[self.Get('os_root_dev')][:8]
else:
return ""
return self.getKernelUid(self.Get('os_root_dev'))
def get_cl_chroot_status(self):
"""Detect chroot mode by mtab content"""

@ -221,7 +221,10 @@ class process:
else:
stdin=kwarg["stdin"].getStdout
self.stdout = kwarg.get("stdout",PIPE)
self.envdict = kwarg.get("envdict",None)
self.envdict = kwarg.get("envdict",{})
if "lang" in kwarg:
self.envdict["LANG"] = kwarg.get('lang')
self.langc = "langc" in kwarg
self.stderr = kwarg.get("stderr",PIPE)
self.command = [command] + list(params)
@ -364,7 +367,7 @@ class processProgress(process):
pass
def runOsCommand(cmd,in_str=None, env_dict=None):
"""Выполняет внешнюю программу
"""Run system command
Параметры:
cmd внешняя программа
@ -392,30 +395,17 @@ def runOsCommand(cmd,in_str=None, env_dict=None):
return retcode, res
def genpassword(passlen=9):
'''Вернуть случайный набор символов указанной длины
Параметры:
passlen длина пароля который нужно сгенерировать
Возвращаемые параметры:
Сгенерированный пароль указанной длины
'''
res=''.join([choice(string.ascii_letters+string.digits)\
for i in xrange(passlen)])
return res
"""Return random charset specified lenght (passlen)"""
return ''.join(map(lambda x:choice(string.ascii_letters+string.digits),
xrange(0,passlen)))
def getpathenv():
"""Вернуть пути для запуска утилит"""
bindir=['/sbin','/bin','/usr/sbin','/usr/bin']
"""Return path for run utilities"""
bindir=set(filter(path.exists,
['/sbin','/bin','/usr/sbin','/usr/bin']))
env=os.environ
if env and env.has_key('PATH'):
lpath=env['PATH'].split(":")
npath=[]
for dirname in bindir:
if path.exists(dirname) and dirname not in lpath:
npath.append(dirname)
lpath=npath+lpath
return ":".join(lpath)
envPath = set(env.get('PATH','').split(":")) | bindir
return ":".join(envPath)
class MultiReplace:
"""MultiReplace function object
@ -627,7 +617,6 @@ def isFstabMount(pathname,mapDevUuid={},listFstab=[]):
absPath = "swap"
else:
absPath = path.abspath(pathname)
devuuid = '/dev/disk/by-uuid'
if not mapDevUuid:
mapDevUuid.update(getUUIDDict())
# convert fstab to
@ -844,8 +833,7 @@ def readFile(filename):
return open(filename,'r').read()
except (OSError,IOError):
pass
finally:
return ""
return ""
def getUUIDDict(revers=False):
"""Get dict UUID -> dev"""
@ -893,7 +881,7 @@ def getProgPath(progname):
return False
def checkUtils(*utils):
"""Check utils and exit if it not found"""
"""Check utils, exit if it not found and return fullpath"""
retval = []
for util in utils:
utilPath = getProgPath(util)

@ -16,7 +16,7 @@
import os
import sys
from cl_utils import getpathenv, runOsCommand, typeFile
from cl_utils import getpathenv, runOsCommand, typeFile,process
import re
from os import path, R_OK
try:
@ -528,6 +528,16 @@ class varsShare:
if reRes:
return reRes[0]
def selectVar(self,selField,where="",eq=""):
"""Select value from matrix variables
Example:
selectVar("os_disk_dev",where="os_disk_mount",eq="/")"""
res = filter(lambda x:x[1] == eq,
zip(self.Get(selField),
self.Get(where))) or [("","")]
return res[0][0]
def getVersionFromGentooFiles(self,systemroot):
"""Get version from gentoo files"""
gentooFile = path.join(systemroot,"etc/gentoo-release")
@ -607,3 +617,13 @@ class varsShare:
return defaultDriver[hr_video]
else:
return "vesa"
def getKernelUid(self,device):
"""Get Kernel UID by UUID of device"""
blkidProcess = process('/sbin/blkid','-c','/dev/null','-s','UUID',
'-o','value',device)
res = blkidProcess.read().strip()
if res:
return res[:8]
else:
return "no_uid"

Loading…
Cancel
Save