# Copyright (c) 2012 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. import logging, sys from config import rpm_config import rpm_controller LOGGING_FORMAT = rpm_config.get('GENERAL','logging_format') oyster_rpm_name_format = 'chromeos1-rack%d-rpm1' atlantis_rpm_name_format = 'chromeos2-row%d-rack%d-rpm1' DEFAULT_OYSTERBAY_OUTLET_MAP = { 1 : 'host1', 2 : 'host2', 4 : 'host3', 5 : 'host4', 7 : 'host5', 8 : 'host6', 9 : 'host7', 10 : 'host8', 12 : 'host9', 13 : 'host10', 15 : 'host11', 16 : 'host12' } DEFAULT_ATLANTIS_OUTLET_MAP = { 1 : 'host1', 2 : 'host7', 4 : 'host2', 5 : 'host8', 7 : 'host3', 8 : 'host9', 9 : 'host4', 10 : 'host10', 12 : 'host5', 13 : 'host11', 15 : 'host6', 16 : 'host12' } def setup_rpm(rpm_name): logging.debug('Setting up %s.', rpm_name) rpm = rpm_controller.SentryRPMController(rpm_name) if rpm_name.startswith('chromeos1'): outlet_mapping = DEFAULT_OYSTERBAY_OUTLET_MAP else: outlet_mapping = DEFAULT_ATLANTIS_OUTLET_MAP if not rpm.setup(outlet_mapping): logging.error('Failed to set up %s.', rpm_name) def main(): if len(sys.argv) != 2: print 'USAGE: python %s [rpm|atlantis|oyster]' % sys.argv[0] print 'atlantis|oyster: implies all RPMs inside that lab.' return if sys.argv[1] != 'atlantis' and sys.argv[1] != 'oyster': setup_rpm(sys.argv[1]) return if sys.argv[1] == 'oyster': logging.debug('Setting up All RPM devices in lab: Oyster Bay.') for rack in range(3,8): setup_rpm(oyster_rpm_name_format % rack) return logging.debug('Setting up All RPM devices in lab: Atlantis.') for row in range(1,6): for rack in range(1,8): if ((row == 1 and rack == 1) or (row == 1 and rack == 2) or (row == 5 and rack == 6) or (row ==5 and rack == 7)): # These RPM's do not follow the normal layout. continue setup_rpm(atlantis_rpm_name_format % (row, rack)) if __name__ == '__main__': logging.basicConfig(level=logging.DEBUG, format=LOGGING_FORMAT) main()