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