summaryrefslogtreecommitdiff
path: root/client/bin/boottool.py
blob: 7c106182708453c2a28fbc75309af056204b8661 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
import shutil, re, os, string
from autotest_lib.client.common_lib import utils, error

class boottool:
    def __init__(self, boottool_exec=None):
        #variable to indicate if in mode to write entries for Xen
        self.xen_mode = False

        if boottool_exec:
            self.boottool_exec = boottool_exec
        else:
            autodir = os.environ['AUTODIR']
            self.boottool_exec = autodir + '/tools/boottool'

        if not self.boottool_exec:
            raise error.AutotestError('Failed to set boottool_exec')


    def run_boottool(self, params):
        return utils.system_output('%s %s' % (self.boottool_exec, params))


    def bootloader(self):
        return self.run_boottool('--bootloader-probe')


    def architecture(self):
        return self.run_boottool('--arch-probe')


    def list_titles(self):
        print self.run_boottool('--info all | grep title')


    def print_entry(self, index):
        print self.run_boottool('--info=%s' % index)


    def get_default(self):
        self.run_boottool('--default')


    def set_default(self, index):
        print self.run_boottool('--set-default=%s' % index)


    def enable_xen_mode(self):
        self.xen_mode = True


    def disable_xen_mode(self):
        self.xen_mode = False


    def get_xen_mode(self):
        return self.xen_mode


    # 'kernel' can be an position number or a title
    def add_args(self, kernel, args):
        parameters = '--update-kernel=%s --args="%s"' % (kernel, args)

        #add parameter if this is a Xen entry
        if self.xen_mode:
            parameters += ' --xen'

        print self.run_boottool(parameters)


    def add_xen_hypervisor_args(self, kernel, args):
        self.run_boottool('--xen --update-xenhyper=%s --xha="%s"') %(kernel, args)


    def remove_args(self, kernel, args):
        parameters = '--update-kernel=%s --remove-args=%s' % (kernel, args)

        #add parameter if this is a Xen entry
        if self.xen_mode:
            parameters += ' --xen'

        print self.run_boottool(parameters)


    def remove_xen_hypervisor_args(self, kernel, args):
        self.run_boottool('--xen --update-xenhyper=%s --remove-args="%s"') \
                % (kernel, args)


    def add_kernel(self, path, title='autotest', initrd='', xen_hypervisor='', args=None, root=None, position='end'):
        parameters = '--add-kernel=%s --title=%s' % (path, title)

        # add an initrd now or forever hold your peace
        if initrd:
            parameters += ' --initrd=%s' % initrd

        # add parameter if this is a Xen entry
        if self.xen_mode:
            parameters += ' --xen'
            if xen_hypervisor:
                parameters += ' --xenhyper=%s' % xen_hypervisor

        if args:
            parameters += ' --args="%s"' % args
        if root:
            parameters += ' --root="%s"' % root
        if position:
            parameters += ' --position="%s"' % position

        print self.run_boottool(parameters)


    def remove_kernel(self, kernel):
        print self.run_boottool('--remove-kernel=%s' % kernel)


    def boot_once(self, title):
        print self.run_boottool('--boot-once --title=%s' % title)


    def info(self, index):
        return self.run_boottool('--info=%s' % index)


# TODO:  backup()
# TODO:  set_timeout()