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