80 lines
2.3 KiB
Python
80 lines
2.3 KiB
Python
# 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()
|