• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# -*- coding: utf-8 -*-
2# Copyright 2014 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.
5
6"""Module to compare two machines."""
7
8from __future__ import print_function
9
10import os.path
11import sys
12import argparse
13
14from machine_manager import CrosMachine
15
16
17def PrintUsage(msg):
18  print(msg)
19  print('Usage: ')
20  print('\n compare_machines.py --chromeos_root=/path/to/chroot/ '
21        'machine1 machine2 ...')
22
23
24def Main(argv):
25
26  parser = argparse.ArgumentParser()
27  parser.add_argument(
28      '--chromeos_root',
29      default='/path/to/chromeos',
30      dest='chromeos_root',
31      help='ChromeOS root checkout directory')
32  parser.add_argument('remotes', nargs=argparse.REMAINDER)
33
34  options = parser.parse_args(argv)
35
36  machine_list = options.remotes
37  if len(machine_list) < 2:
38    PrintUsage('ERROR: Must specify at least two machines.')
39    return 1
40  elif not os.path.exists(options.chromeos_root):
41    PrintUsage('Error: chromeos_root does not exist %s' % options.chromeos_root)
42    return 1
43
44  chroot = options.chromeos_root
45  cros_machines = []
46  test_machine_checksum = None
47  for m in machine_list:
48    cm = CrosMachine(m, chroot, 'average')
49    cros_machines = cros_machines + [cm]
50    test_machine_checksum = cm.machine_checksum
51
52  ret = 0
53  for cm in cros_machines:
54    print('checksum for %s : %s' % (cm.name, cm.machine_checksum))
55    if cm.machine_checksum != test_machine_checksum:
56      ret = 1
57      print('Machine checksums do not all match')
58
59  if ret == 0:
60    print('Machines all match.')
61
62  return ret
63
64
65if __name__ == '__main__':
66  retval = Main(sys.argv[1:])
67  sys.exit(retval)
68