Kuang-che Wu | 2ea804f | 2017-11-28 17:11:41 +0800 | [diff] [blame] | 1 | #!/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 Wu | 68db08a | 2018-03-30 11:50:34 +0800 | [diff] [blame^] | 5 | """Helper script to manipulate chromeos DUT or query info.""" |
Kuang-che Wu | 2ea804f | 2017-11-28 17:11:41 +0800 | [diff] [blame] | 6 | from __future__ import print_function |
| 7 | import argparse |
| 8 | import json |
| 9 | import logging |
| 10 | |
| 11 | from bisect_kit import common |
Kuang-che Wu | 2ea804f | 2017-11-28 17:11:41 +0800 | [diff] [blame] | 12 | from bisect_kit import cros_util |
| 13 | |
| 14 | logger = logging.getLogger(__name__) |
| 15 | |
| 16 | |
| 17 | def 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 | |
| 27 | def cmd_query_dut_board(opts): |
| 28 | assert cros_util.is_dut(opts.dut) |
| 29 | print(cros_util.query_dut_board(opts.dut)) |
| 30 | |
| 31 | |
| 32 | def cmd_reboot(opts): |
| 33 | assert cros_util.is_dut(opts.dut) |
| 34 | cros_util.reboot(opts.dut) |
| 35 | |
| 36 | |
| 37 | def 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 | |
| 79 | if __name__ == '__main__': |
| 80 | main() |