| # 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() |