blob: 7c106182708453c2a28fbc75309af056204b8661 [file] [log] [blame]
mblighe829ba52008-06-03 15:04:08 +00001import shutil, re, os, string
2from autotest_lib.client.common_lib import utils, error
mblighe4046192006-09-15 14:31:01 +00003
4class boottool:
jadmanski0afbb632008-06-06 21:10:57 +00005 def __init__(self, boottool_exec=None):
6 #variable to indicate if in mode to write entries for Xen
7 self.xen_mode = False
mblighede4af62006-12-17 23:05:16 +00008
jadmanski0afbb632008-06-06 21:10:57 +00009 if boottool_exec:
10 self.boottool_exec = boottool_exec
11 else:
12 autodir = os.environ['AUTODIR']
13 self.boottool_exec = autodir + '/tools/boottool'
mblighe4046192006-09-15 14:31:01 +000014
jadmanski0afbb632008-06-06 21:10:57 +000015 if not self.boottool_exec:
16 raise error.AutotestError('Failed to set boottool_exec')
mblighede4af62006-12-17 23:05:16 +000017
mbligh72b88fc2006-12-16 18:41:35 +000018
jadmanski0afbb632008-06-06 21:10:57 +000019 def run_boottool(self, params):
20 return utils.system_output('%s %s' % (self.boottool_exec, params))
mblighe4046192006-09-15 14:31:01 +000021
mbligh72b88fc2006-12-16 18:41:35 +000022
jadmanski0afbb632008-06-06 21:10:57 +000023 def bootloader(self):
24 return self.run_boottool('--bootloader-probe')
mblighe4046192006-09-15 14:31:01 +000025
mbligh72b88fc2006-12-16 18:41:35 +000026
jadmanski0afbb632008-06-06 21:10:57 +000027 def architecture(self):
28 return self.run_boottool('--arch-probe')
mblighe4046192006-09-15 14:31:01 +000029
mbligh72b88fc2006-12-16 18:41:35 +000030
jadmanski0afbb632008-06-06 21:10:57 +000031 def list_titles(self):
32 print self.run_boottool('--info all | grep title')
mblighe4046192006-09-15 14:31:01 +000033
mbligh72b88fc2006-12-16 18:41:35 +000034
jadmanski0afbb632008-06-06 21:10:57 +000035 def print_entry(self, index):
36 print self.run_boottool('--info=%s' % index)
mblighe4046192006-09-15 14:31:01 +000037
mbligh72b88fc2006-12-16 18:41:35 +000038
jadmanski0afbb632008-06-06 21:10:57 +000039 def get_default(self):
40 self.run_boottool('--default')
mblighc9fdc402006-10-01 19:57:02 +000041
mbligh72b88fc2006-12-16 18:41:35 +000042
jadmanski0afbb632008-06-06 21:10:57 +000043 def set_default(self, index):
44 print self.run_boottool('--set-default=%s' % index)
mblighe4046192006-09-15 14:31:01 +000045
mbligh72b88fc2006-12-16 18:41:35 +000046
jadmanski0afbb632008-06-06 21:10:57 +000047 def enable_xen_mode(self):
48 self.xen_mode = True
mblighede4af62006-12-17 23:05:16 +000049
50
jadmanski0afbb632008-06-06 21:10:57 +000051 def disable_xen_mode(self):
52 self.xen_mode = False
mblighede4af62006-12-17 23:05:16 +000053
54
jadmanski0afbb632008-06-06 21:10:57 +000055 def get_xen_mode(self):
56 return self.xen_mode
mblighede4af62006-12-17 23:05:16 +000057
58
jadmanski0afbb632008-06-06 21:10:57 +000059 # 'kernel' can be an position number or a title
60 def add_args(self, kernel, args):
61 parameters = '--update-kernel=%s --args="%s"' % (kernel, args)
mblighe4046192006-09-15 14:31:01 +000062
jadmanski0afbb632008-06-06 21:10:57 +000063 #add parameter if this is a Xen entry
64 if self.xen_mode:
65 parameters += ' --xen'
mblighede4af62006-12-17 23:05:16 +000066
jadmanski0afbb632008-06-06 21:10:57 +000067 print self.run_boottool(parameters)
mblighede4af62006-12-17 23:05:16 +000068
69
jadmanski0afbb632008-06-06 21:10:57 +000070 def add_xen_hypervisor_args(self, kernel, args):
71 self.run_boottool('--xen --update-xenhyper=%s --xha="%s"') %(kernel, args)
mblighe4046192006-09-15 14:31:01 +000072
mbligh72b88fc2006-12-16 18:41:35 +000073
jadmanski0afbb632008-06-06 21:10:57 +000074 def remove_args(self, kernel, args):
75 parameters = '--update-kernel=%s --remove-args=%s' % (kernel, args)
76
77 #add parameter if this is a Xen entry
78 if self.xen_mode:
79 parameters += ' --xen'
80
81 print self.run_boottool(parameters)
mblighede4af62006-12-17 23:05:16 +000082
83
jadmanski0afbb632008-06-06 21:10:57 +000084 def remove_xen_hypervisor_args(self, kernel, args):
85 self.run_boottool('--xen --update-xenhyper=%s --remove-args="%s"') \
86 % (kernel, args)
mbligh9ef1f8b2006-10-10 02:17:46 +000087
mblighe4046192006-09-15 14:31:01 +000088
jadmanski0afbb632008-06-06 21:10:57 +000089 def add_kernel(self, path, title='autotest', initrd='', xen_hypervisor='', args=None, root=None, position='end'):
90 parameters = '--add-kernel=%s --title=%s' % (path, title)
91
92 # add an initrd now or forever hold your peace
93 if initrd:
94 parameters += ' --initrd=%s' % initrd
95
96 # add parameter if this is a Xen entry
97 if self.xen_mode:
98 parameters += ' --xen'
99 if xen_hypervisor:
100 parameters += ' --xenhyper=%s' % xen_hypervisor
101
102 if args:
103 parameters += ' --args="%s"' % args
104 if root:
105 parameters += ' --root="%s"' % root
106 if position:
107 parameters += ' --position="%s"' % position
108
109 print self.run_boottool(parameters)
mblighe4046192006-09-15 14:31:01 +0000110
mbligh72b88fc2006-12-16 18:41:35 +0000111
jadmanski0afbb632008-06-06 21:10:57 +0000112 def remove_kernel(self, kernel):
113 print self.run_boottool('--remove-kernel=%s' % kernel)
mblighe4046192006-09-15 14:31:01 +0000114
mbligh72b88fc2006-12-16 18:41:35 +0000115
jadmanski0afbb632008-06-06 21:10:57 +0000116 def boot_once(self, title):
117 print self.run_boottool('--boot-once --title=%s' % title)
118
119
120 def info(self, index):
121 return self.run_boottool('--info=%s' % index)
mblighe4046192006-09-15 14:31:01 +0000122
123
124# TODO: backup()
125# TODO: set_timeout()