# -*- coding: utf-8 -*- # Copyright 2014 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. """Module to compare two machines.""" from __future__ import print_function import os.path import sys import argparse from machine_manager import CrosMachine def PrintUsage(msg): print(msg) print('Usage: ') print('\n compare_machines.py --chromeos_root=/path/to/chroot/ ' 'machine1 machine2 ...') def Main(argv): parser = argparse.ArgumentParser() parser.add_argument( '--chromeos_root', default='/path/to/chromeos', dest='chromeos_root', help='ChromeOS root checkout directory') parser.add_argument('remotes', nargs=argparse.REMAINDER) options = parser.parse_args(argv) machine_list = options.remotes if len(machine_list) < 2: PrintUsage('ERROR: Must specify at least two machines.') return 1 elif not os.path.exists(options.chromeos_root): PrintUsage('Error: chromeos_root does not exist %s' % options.chromeos_root) return 1 chroot = options.chromeos_root cros_machines = [] test_machine_checksum = None for m in machine_list: cm = CrosMachine(m, chroot, 'average') cros_machines = cros_machines + [cm] test_machine_checksum = cm.machine_checksum ret = 0 for cm in cros_machines: print('checksum for %s : %s' % (cm.name, cm.machine_checksum)) if cm.machine_checksum != test_machine_checksum: ret = 1 print('Machine checksums do not all match') if ret == 0: print('Machines all match.') return ret if __name__ == '__main__': retval = Main(sys.argv[1:]) sys.exit(retval)