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