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