# -*- coding: utf-8 -*- # Copyright 2014 The ChromiumOS Authors # 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.""" import argparse import os.path import sys 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)