Modify finish_install interface:

exec_finish_install will run all executable scripts in the
    finish_install dir in turn.
Add support to ext4 in mount_partition.sh
move auto_install.py and state_grid.py to text dir

	modified:   operation/exec_finish_install.sh
	new file:   operation/finish_install/95state_grid_custom.py
	modified:   operation/finish_install/99finish_install.sh
	new file:   operation/finish_install/exec_post_add.sh
	modified:   operation/install.txt
	modified:   operation/mount_partition.sh
	renamed:    AutoInstall/auto_install.py -> text/auto_install.py
	renamed:    StateGrid/state_grid.py -> text/state_grid.py
This commit is contained in:
Peng Zhihui
2014-02-26 09:33:28 +08:00
parent b0f6069fc0
commit 513f9756bf
8 changed files with 93 additions and 35 deletions

67
text/auto_install.py Normal file
View File

@@ -0,0 +1,67 @@
import os,sys
from xml.dom import minidom
from xml.dom.ext import PrettyPrint
sys.path.append('../interface/')
sys.path.append('../new_partition/')
sys.path.append('../text/')
import ri_data
import partition_data
import interface_partition
import ri_newt
list=['partition','raid','mountpoint']
install_xml = '/var/install/install.xml'
init_partition_from_os_flag = True
init_mountpoint_flag = True
init_raid_from_os = True
count=0
while True :
if count == 0:
if init_raid_from_os:
ri_data.Raid.init_from_os()
init_raid_from_os = False
if init_partition_from_os_flag:
partition_data.Partition.init_from_os(unit='s')
init_partition_from_os_flag = False
s = interface_partition.main()
if init_mountpoint_flag:
ri_data.MountPoint.init_from_internal()
init_mountpoint_flag = False
if len(ri_newt.Raid.init_from_internal()) < 2 and len(ri_data.Raid.dict) == 0:
if list[1] == 'raid':
del list[1]
else:
if list[1] != 'raid':
list.insert(1, 'raid')
else:
if list[count] == 'raid':
ri_newt.Raid()
elif list[count] == 'mountpoint':
ri_newt.MountPoint()
s = ri_newt.Screen.dict[list[count]].set_data()
if int(s) == 0:
count = count + 1
else:
count = count - 1
if count < 0 or count > len(list) - 1:
try:
ri_newt.Screen.screen.finish()
except:
pass
break
if s == '0':
xmldoc = minidom.parse(install_xml)
root = xmldoc.firstChild
f = file(install_xml, 'w')
partition_data.Partition.to_xml(xmldoc, root)
ri_data.Raid.to_xml(xmldoc, root)
PrettyPrint(xmldoc, f)
f.close()
os.system("python ../interface/ri_install.py")

85
text/state_grid.py Executable file
View File

@@ -0,0 +1,85 @@
#!/usr/bin/env python
from snack import *
from xml.dom import minidom
from xml.dom.ext import PrettyPrint
import sys
sys.path.append('../interface/')
sys.path.append('../text/')
import ri_newt
import ri_data
install_xml = '/var/install/install.xml'
class Username(ri_newt.Screen):
def __init__(self):
ri_newt.Screen.__init__(self, name='username',title='StateGrid custom install')
ri_newt.Screen.screen.pushHelpLine('<Tab> moves; <Space> selects; <Enter> activates buttons')
self.text = 'This username will use as State Grid user. Can not be a system user or reserver user. Please enter username:'
ri_newt.Screen.widget_textboxreflowed(80, self.text)
ri_newt.Screen.widget_buttonbar([('Continue','ok','F12')])
def set_data(self):
ri_newt.Screen.widget_entry(75, text='')
s = ri_newt.Screen.yesno('[!!] State Grid custom install', 1, 5, 'TextboxReflowed', 'eLabel', 'Entry', 'eLabel', 'ButtonBar')
if s == 0:
ri_data.StateGrid.username = ri_newt.Screen.entry.value()
return s
class HomeDirectory(ri_newt.Screen):
def __init__(self):
ri_newt.Screen.__init__(self, name='home_dir',title='StateGrid custom install')
ri_newt.Screen.screen.pushHelpLine('<Tab> moves; <Space> selects; <Enter> activates buttons')
self.text = 'This directory will use as State Grid user home directory. Can not be /home/{sysadmin,netadmin,secadmin,audadmin}.\n\nPlease enter home directory:'
ri_newt.Screen.widget_textboxreflowed(80, self.text)
ri_newt.Screen.widget_buttonbar([('Continue','ok','F12')])
def set_data(self):
ri_newt.Screen.widget_entry(75, text='')
s = ri_newt.Screen.yesno('[!!] State Grid custom install', 1, 5, 'TextboxReflowed', 'eLabel', 'Entry', 'eLabel', 'ButtonBar')
if s == 0:
ri_data.StateGrid.home_dir = ri_newt.Screen.entry.value()
return s
class Shell(ri_newt.Screen):
def __init__(self):
ri_newt.Screen.__init__(self, name='shell',title='StateGrid custom install')
ri_newt.Screen.screen.pushHelpLine('<Tab> moves; <Space> selects; <Enter> activates buttons')
self.text = 'This shell will use as State Grid user shell, Please enter user shell:'
ri_newt.Screen.widget_textboxreflowed(80, self.text)
ri_newt.Screen.widget_buttonbar([('Continue','ok','F12')])
def set_data(self):
ri_newt.Screen.widget_entry(75, text='')
s = ri_newt.Screen.yesno('[!!] State Grid custom install', 1, 5, 'TextboxReflowed', 'eLabel', 'Entry', 'eLabel', 'ButtonBar')
if s == 0:
ri_data.StateGrid.shell = ri_newt.Screen.entry.value()
if __name__ == "__main__":
Username()
ri_newt.Screen.dict['username'].set_data()
HomeDirectory()
ri_newt.Screen.dict['home_dir'].set_data()
Shell()
ri_newt.Screen.dict['shell'].set_data()
xmldoc = minidom.parse(install_xml)
root = xmldoc.firstChild
f = file(install_xml,'w')
ri_data.StateGrid.to_xml(xmldoc, root)
PrettyPrint(xmldoc, f)
f.close()
ri_newt.Screen.screen.finish()