Files
new_install/interface/ri_func_dep.py
fling b52f535f6b modified: ri_data.py
modified:   ri_func_dep.py
	modified:   ri_main.py
	modified:   ri_tk_cmd.py
     Because the function sort() return value is not a list. it is return <type 'NoneType'>.so use for k in ri_data.MountPoint.dict{}.keys().sort() must be throw a exception
2010-10-19 04:54:11 +08:00

94 lines
1.8 KiB
Python

#!/usr/bin/env python
import ri_data
class Pkg():
list = []
@staticmethod
def set_list ():
list = ri_data.Group.get_install_pkgs()
class FsType():
list = []
@staticmethod
def set_list ():
for fs in ri_data.MountPoint.dict.values():
FsType.list.append(fs.filesystem)
class FunctionDepending():
list = []
def __init__(self, pkg):
self.package = pkg
FunctionDepending.list.append(self)
def check(self):
return False
def error(self):
return {}
class FileSystem(FunctionDepending):
list = []
def __init__(self, fs_type, fs_pkg):
self.filesystem_type = fs_type
FunctionDepending.__init__(self, fs_pkg)
def check(self):
if self.filesystem_type in FsType.list and self.package not in Pkg.list:
return False
return True
def error(self):
mesg="format filesystem " + self.filesystem_type
return {mesg:self.package}
class DHCP(FunctionDepending):
def __init__(self):
FunctionDepending.__init__(self, 'dhcpcd')
def check(self):
if ri_data.Network.configuration == 'dynamic' and 'dhcpcd' not in Pkg.list:
return False
return True
def error(self):
return {"dynamic configure network":"dhcpcd"}
class RAID(FunctionDepending):
def __init__(self):
FunctionDepending.__init__(self, 'mdadm')
def check(self):
if 'mdadm' not in Pkg.list:
for i in ri_data.Raid.dict.values():
if i.from_os == 'no':
return False
return True
def error(self):
return {"make raid":"mdadm"}
def check_function_depending():
Pkg.set_list()
FsType.set_list()
func_dep_dict = {}
FileSystem("xfs", "xfsprogs")
FileSystem("jfs", "jfsutils")
DHCP()
RAID()
for i in FunctionDepending.list:
# if function depending package not in package list
if not i.check():
tmp = i.error()
func_dep_dict.update(tmp)
return func_dep_dict