blob: 2d37e91da5ae8fb5cb74bc67f0b03809e024126a [file] [log] [blame]
Kuang-che Wu2ea804f2017-11-28 17:11:41 +08001#!/usr/bin/env python2
2# Copyright 2017 The Chromium OS Authors. All rights reserved.
3# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
Kuang-che Wu68db08a2018-03-30 11:50:34 +08005"""Helper script to manipulate chromeos DUT or query info."""
Kuang-che Wu2ea804f2017-11-28 17:11:41 +08006from __future__ import print_function
7import argparse
8import json
9import logging
10
11from bisect_kit import common
Kuang-che Wu2ea804f2017-11-28 17:11:41 +080012from bisect_kit import cros_util
13
14logger = logging.getLogger(__name__)
15
16
17def cmd_version_info(opts):
18 info = cros_util.version_info(opts.board, opts.version)
19 if opts.name:
20 if opts.name not in info:
21 logger.error('unknown name=%s', opts.name)
22 print(info[opts.name])
23 else:
24 print(json.dumps(info, sort_keys=True, indent=4))
25
26
27def cmd_query_dut_board(opts):
28 assert cros_util.is_dut(opts.dut)
29 print(cros_util.query_dut_board(opts.dut))
30
31
32def cmd_reboot(opts):
33 assert cros_util.is_dut(opts.dut)
34 cros_util.reboot(opts.dut)
35
36
37def main():
38 common.init()
39 parser = argparse.ArgumentParser()
40 common.add_common_arguments(parser)
41 subparsers = parser.add_subparsers(
42 dest='command', title='commands', metavar='<command>')
43
44 parser_version_info = subparsers.add_parser(
45 'version_info',
46 help='Query version info of given chromeos build',
47 description='Given chromeos `board` and `version`, '
48 'print version information of components.')
49 parser_version_info.add_argument(
50 'board', help='ChromeOS board name, like "samus".')
51 parser_version_info.add_argument(
52 'version',
53 type=cros_util.argtype_cros_version,
54 help='ChromeOS version, like "9876.0.0" or "R62-9876.0.0"')
55 parser_version_info.add_argument(
56 'name',
57 nargs='?',
58 help='Component name. If specified, output its version string. '
59 'Otherwise output all version info as dict in json format.')
60 parser_version_info.set_defaults(func=cmd_version_info)
61
62 parser_query_dut_board = subparsers.add_parser(
63 'query_dut_board', help='Query board name of given DUT')
64 parser_query_dut_board.add_argument('dut')
65 parser_query_dut_board.set_defaults(func=cmd_query_dut_board)
66
67 parser_reboot = subparsers.add_parser(
68 'reboot',
69 help='Reboot a DUT',
70 description='Reboot a DUT and verify the reboot is successful.')
71 parser_reboot.add_argument('dut')
72 parser_reboot.set_defaults(func=cmd_reboot)
73
74 opts = parser.parse_args()
75 common.config_logging(opts)
76 opts.func(opts)
77
78
79if __name__ == '__main__':
80 main()