blob: 521020b1e1f7d8a3320876b2c00f8bb66aabc0b3 [file] [log] [blame]
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
# Copyright 2017 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Helper script to manipulate chromeos DUT or query info."""
from __future__ import print_function
import argparse
import json
import logging
from bisect_kit import common
from bisect_kit import cros_util
logger = logging.getLogger(__name__)
def cmd_version_info(opts):
info = cros_util.version_info(opts.board, opts.version)
if opts.name:
if opts.name not in info:
logger.error('unknown name=%s', opts.name)
print(info[opts.name])
else:
print(json.dumps(info, sort_keys=True, indent=4))
def cmd_query_dut_board(opts):
assert cros_util.is_dut(opts.dut)
print(cros_util.query_dut_board(opts.dut))
def cmd_reboot(opts):
assert cros_util.is_dut(opts.dut)
cros_util.reboot(opts.dut)
def main():
common.init()
parser = argparse.ArgumentParser()
common.add_common_arguments(parser)
subparsers = parser.add_subparsers(
dest='command', title='commands', metavar='<command>')
parser_version_info = subparsers.add_parser(
'version_info',
help='Query version info of given chromeos build',
description='Given chromeos `board` and `version`, '
'print version information of components.')
parser_version_info.add_argument(
'board', help='ChromeOS board name, like "samus".')
parser_version_info.add_argument(
'version',
type=cros_util.argtype_cros_version,
help='ChromeOS version, like "9876.0.0" or "R62-9876.0.0"')
parser_version_info.add_argument(
'name',
nargs='?',
help='Component name. If specified, output its version string. '
'Otherwise output all version info as dict in json format.')
parser_version_info.set_defaults(func=cmd_version_info)
parser_query_dut_board = subparsers.add_parser(
'query_dut_board', help='Query board name of given DUT')
parser_query_dut_board.add_argument('dut')
parser_query_dut_board.set_defaults(func=cmd_query_dut_board)
parser_reboot = subparsers.add_parser(
'reboot',
help='Reboot a DUT',
description='Reboot a DUT and verify the reboot is successful.')
parser_reboot.add_argument('dut')
parser_reboot.set_defaults(func=cmd_reboot)
opts = parser.parse_args()
common.config_logging(opts)
opts.func(opts)
if __name__ == '__main__':
main()