blob: 6c4cc7bf23d7256e124eb19754fe5796138622ea [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
mbligh6e83b6f2008-06-10 16:26:59 +00004class boottool(object):
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
mblighbd8f9982008-06-06 23:20:35 +000089 def add_kernel(self, path, title='autotest', initrd='', xen_hypervisor='',
90 args=None, root=None, position='end'):
jadmanski0afbb632008-06-06 21:10:57 +000091 parameters = '--add-kernel=%s --title=%s' % (path, title)
92
93 # add an initrd now or forever hold your peace
94 if initrd:
95 parameters += ' --initrd=%s' % initrd
96
97 # add parameter if this is a Xen entry
98 if self.xen_mode:
99 parameters += ' --xen'
100 if xen_hypervisor:
101 parameters += ' --xenhyper=%s' % xen_hypervisor
102
103 if args:
104 parameters += ' --args="%s"' % args
105 if root:
106 parameters += ' --root="%s"' % root
107 if position:
108 parameters += ' --position="%s"' % position
109
110 print self.run_boottool(parameters)
mblighe4046192006-09-15 14:31:01 +0000111
mbligh72b88fc2006-12-16 18:41:35 +0000112
jadmanski0afbb632008-06-06 21:10:57 +0000113 def remove_kernel(self, kernel):
114 print self.run_boottool('--remove-kernel=%s' % kernel)
mblighe4046192006-09-15 14:31:01 +0000115
mbligh72b88fc2006-12-16 18:41:35 +0000116
jadmanski0afbb632008-06-06 21:10:57 +0000117 def boot_once(self, title):
118 print self.run_boottool('--boot-once --title=%s' % title)
119
120
121 def info(self, index):
122 return self.run_boottool('--info=%s' % index)
mblighe4046192006-09-15 14:31:01 +0000123
124
125# TODO: backup()
126# TODO: set_timeout()