blob: 68731ee01ab88e0d1cda6498563c4c738a681bb9 [file] [log] [blame]
""" This file contains configuration information for the build slave host
machines. """
import collections
import json
import ntpath
import os
import posixpath
import sys
CHROMECOMPUTE_BUILDBOT_PATH = ['storage', 'skia-repo', 'buildbot']
# Indicates that this machine is not connected to a KVM switch.
NO_KVM_SWITCH = '(not on KVM)'
NO_KVM_NUM = '(not on KVM)'
# Indicates that this machine has no static IP address.
NO_IP_ADDR = '(no static IP)'
# Files to copy into buildslave checkouts.
CHROMEBUILD_COPIES = [
{
"source": ".bot_password",
"destination": "build/site_config",
},
]
KVM_SWITCH_DOOR = 'DOOR' # KVM switch closest to the door.
KVM_SWITCH_OFFICE = 'OFFICE' # KVM switch closest to the office.
LAUNCH_SCRIPT_UNIX = ['scripts', 'skiabot-slave-start-on-boot.sh']
LAUNCH_SCRIPT_WIN = ['scripts', 'skiabot-slave-start-on-boot.bat']
# Data for all Skia build slave hosts.
_slave_host_dicts = {
################################ Linux Machines ################################
'skiabot-shuttle-ubuntu13-xxx': {
'slaves': [
],
'copies': CHROMEBUILD_COPIES,
'ip': '192.168.1.120',
'kvm_switch': KVM_SWITCH_OFFICE,
'kvm_num': 'H',
'path_to_buildbot': ['buildbot'],
'launch_script': LAUNCH_SCRIPT_UNIX,
},
'skia-vm-001': {
'slaves': [
#('skiabot-linux-swarm-112', '112', False),
#('skiabot-linux-swarm-113', '113', False),
#('skiabot-linux-swarm-114', '114', False),
#('skiabot-linux-swarm-115', '115', False),
#('skiabot-linux-swarm-116', '116', False),
#('skiabot-linux-swarm-117', '117', False),
#('skiabot-linux-swarm-118', '118', False),
#('skiabot-linux-swarm-119', '119', False),
#('skiabot-linux-swarm-120', '120', False),
#('skiabot-linux-swarm-121', '121', False),
#('skiabot-linux-swarm-122', '122', False),
#('skiabot-linux-swarm-123', '123', False),
#('skiabot-linux-swarm-124', '124', False),
#('skiabot-linux-swarm-125', '125', False),
#('skiabot-linux-swarm-126', '126', False),
#('skiabot-linux-swarm-127', '127', False),
],
'copies': CHROMEBUILD_COPIES,
'ip': NO_IP_ADDR,
'kvm_switch': NO_KVM_SWITCH,
'kvm_num': NO_KVM_NUM,
'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
'launch_script': LAUNCH_SCRIPT_UNIX,
},
'skia-vm-002': {
'slaves': [
#('skiabot-linux-swarm-128', '128', False),
#('skiabot-linux-swarm-129', '129', False),
#('skiabot-linux-swarm-130', '130', False),
#('skiabot-linux-swarm-131', '131', False),
#('skiabot-linux-swarm-132', '132', False),
#('skiabot-linux-swarm-133', '133', False),
#('skiabot-linux-swarm-134', '134', False),
#('skiabot-linux-swarm-135', '135', False),
#('skiabot-linux-swarm-136', '136', False),
#('skiabot-linux-swarm-137', '137', False),
#('skiabot-linux-swarm-138', '138', False),
#('skiabot-linux-swarm-139', '139', False),
#('skiabot-linux-swarm-140', '140', False),
#('skiabot-linux-swarm-141', '141', False),
#('skiabot-linux-swarm-142', '142', False),
#('skiabot-linux-swarm-143', '143', False),
#('skiabot-linux-swarm-144', '144', False),
],
'copies': CHROMEBUILD_COPIES,
'ip': NO_IP_ADDR,
'kvm_switch': NO_KVM_SWITCH,
'kvm_num': NO_KVM_NUM,
'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
'launch_script': LAUNCH_SCRIPT_UNIX,
},
'skia-vm-003': {
'slaves': [
#('skiabot-linux-swarm-096', '96', False),
#('skiabot-linux-swarm-097', '97', False),
#('skiabot-linux-swarm-098', '98', False),
#('skiabot-linux-swarm-099', '99', False),
#('skiabot-linux-swarm-100', '100', False),
#('skiabot-linux-swarm-101', '101', False),
#('skiabot-linux-swarm-102', '102', False),
#('skiabot-linux-swarm-103', '103', False),
#('skiabot-linux-swarm-104', '104', False),
#('skiabot-linux-swarm-105', '105', False),
#('skiabot-linux-swarm-106', '106', False),
#('skiabot-linux-swarm-107', '107', False),
#('skiabot-linux-swarm-108', '108', False),
#('skiabot-linux-swarm-109', '109', False),
#('skiabot-linux-swarm-110', '110', False),
#('skiabot-linux-swarm-111', '111', False),
],
'copies': CHROMEBUILD_COPIES,
'ip': NO_IP_ADDR,
'kvm_switch': NO_KVM_SWITCH,
'kvm_num': NO_KVM_NUM,
'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
'launch_script': LAUNCH_SCRIPT_UNIX,
},
'skia-vm-004': {
'slaves': [
#('skiabot-linux-swarm-064', '64', False),
#('skiabot-linux-swarm-065', '65', False),
#('skiabot-linux-swarm-066', '66', False),
#('skiabot-linux-swarm-067', '67', False),
#('skiabot-linux-swarm-068', '68', False),
#('skiabot-linux-swarm-069', '69', False),
#('skiabot-linux-swarm-070', '70', False),
#('skiabot-linux-swarm-071', '71', False),
#('skiabot-linux-swarm-072', '72', False),
#('skiabot-linux-swarm-073', '73', False),
#('skiabot-linux-swarm-074', '74', False),
#('skiabot-linux-swarm-075', '75', False),
#('skiabot-linux-swarm-076', '76', False),
#('skiabot-linux-swarm-077', '77', False),
#('skiabot-linux-swarm-078', '78', False),
#('skiabot-linux-swarm-079', '79', False),
],
'copies': CHROMEBUILD_COPIES,
'ip': NO_IP_ADDR,
'kvm_switch': NO_KVM_SWITCH,
'kvm_num': NO_KVM_NUM,
'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
'launch_script': LAUNCH_SCRIPT_UNIX,
},
'skia-vm-005': {
'slaves': [
#('skiabot-linux-swarm-048', '48', False),
#('skiabot-linux-swarm-049', '49', False),
#('skiabot-linux-swarm-050', '50', False),
#('skiabot-linux-swarm-051', '51', False),
#('skiabot-linux-swarm-052', '52', False),
#('skiabot-linux-swarm-053', '53', False),
#('skiabot-linux-swarm-054', '54', False),
#('skiabot-linux-swarm-055', '55', False),
#('skiabot-linux-swarm-056', '56', False),
#('skiabot-linux-swarm-057', '57', False),
#('skiabot-linux-swarm-058', '58', False),
#('skiabot-linux-swarm-059', '59', False),
#('skiabot-linux-swarm-060', '60', False),
#('skiabot-linux-swarm-061', '61', False),
#('skiabot-linux-swarm-062', '62', False),
#('skiabot-linux-swarm-063', '63', False),
],
'copies': CHROMEBUILD_COPIES,
'ip': NO_IP_ADDR,
'kvm_switch': NO_KVM_SWITCH,
'kvm_num': NO_KVM_NUM,
'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
'launch_script': LAUNCH_SCRIPT_UNIX,
},
'skia-vm-006': {
'slaves': [
#('skiabot-linux-swarm-032', '32', False),
#('skiabot-linux-swarm-033', '33', False),
#('skiabot-linux-swarm-034', '34', False),
#('skiabot-linux-swarm-035', '35', False),
#('skiabot-linux-swarm-036', '36', False),
#('skiabot-linux-swarm-037', '37', False),
#('skiabot-linux-swarm-038', '38', False),
#('skiabot-linux-swarm-039', '39', False),
#('skiabot-linux-swarm-040', '40', False),
#('skiabot-linux-swarm-041', '41', False),
#('skiabot-linux-swarm-042', '42', False),
#('skiabot-linux-swarm-043', '43', False),
#('skiabot-linux-swarm-044', '44', False),
#('skiabot-linux-swarm-045', '45', False),
#('skiabot-linux-swarm-046', '46', False),
#('skiabot-linux-swarm-047', '47', False),
],
'copies': CHROMEBUILD_COPIES,
'ip': NO_IP_ADDR,
'kvm_switch': NO_KVM_SWITCH,
'kvm_num': NO_KVM_NUM,
'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
'launch_script': LAUNCH_SCRIPT_UNIX,
},
'skia-vm-007': {
'slaves': [
#('skiabot-linux-swarm-016', '16', False),
#('skiabot-linux-swarm-017', '17', False),
#('skiabot-linux-swarm-018', '18', False),
#('skiabot-linux-swarm-019', '19', False),
#('skiabot-linux-swarm-020', '20', False),
#('skiabot-linux-swarm-021', '21', False),
#('skiabot-linux-swarm-022', '22', False),
#('skiabot-linux-swarm-023', '23', False),
#('skiabot-linux-swarm-024', '24', False),
#('skiabot-linux-swarm-025', '25', False),
#('skiabot-linux-swarm-026', '26', False),
#('skiabot-linux-swarm-027', '27', False),
#('skiabot-linux-swarm-028', '28', False),
#('skiabot-linux-swarm-029', '29', False),
#('skiabot-linux-swarm-030', '30', False),
#('skiabot-linux-swarm-031', '31', False),
],
'copies': CHROMEBUILD_COPIES,
'ip': NO_IP_ADDR,
'kvm_switch': NO_KVM_SWITCH,
'kvm_num': NO_KVM_NUM,
'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
'launch_script': LAUNCH_SCRIPT_UNIX,
},
'skia-vm-008': {
'slaves': [
#('skiabot-linux-swarm-000', '0', False),
#('skiabot-linux-swarm-001', '1', False),
#('skiabot-linux-swarm-002', '2', False),
#('skiabot-linux-swarm-003', '3', False),
#('skiabot-linux-swarm-004', '4', False),
#('skiabot-linux-swarm-005', '5', False),
#('skiabot-linux-swarm-006', '6', False),
#('skiabot-linux-swarm-007', '7', False),
#('skiabot-linux-swarm-008', '8', False),
#('skiabot-linux-swarm-009', '9', False),
#('skiabot-linux-swarm-010', '10', False),
#('skiabot-linux-swarm-011', '11', False),
#('skiabot-linux-swarm-012', '12', False),
#('skiabot-linux-swarm-013', '13', False),
#('skiabot-linux-swarm-014', '14', False),
#('skiabot-linux-swarm-015', '15', False),
],
'copies': CHROMEBUILD_COPIES,
'ip': NO_IP_ADDR,
'kvm_switch': NO_KVM_SWITCH,
'kvm_num': NO_KVM_NUM,
'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
'launch_script': LAUNCH_SCRIPT_UNIX,
},
'skia-vm-009': {
'slaves': [
#('skiabot-linux-swarm-080', '80', False),
#('skiabot-linux-swarm-081', '81', False),
#('skiabot-linux-swarm-082', '82', False),
#('skiabot-linux-swarm-083', '83', False),
#('skiabot-linux-swarm-084', '84', False),
#('skiabot-linux-swarm-085', '85', False),
#('skiabot-linux-swarm-086', '86', False),
#('skiabot-linux-swarm-087', '87', False),
#('skiabot-linux-swarm-088', '88', False),
#('skiabot-linux-swarm-089', '89', False),
#('skiabot-linux-swarm-090', '90', False),
#('skiabot-linux-swarm-091', '91', False),
#('skiabot-linux-swarm-092', '92', False),
#('skiabot-linux-swarm-093', '93', False),
#('skiabot-linux-swarm-094', '94', False),
#('skiabot-linux-swarm-095', '95', False),
],
'copies': CHROMEBUILD_COPIES,
'ip': NO_IP_ADDR,
'kvm_switch': NO_KVM_SWITCH,
'kvm_num': NO_KVM_NUM,
'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
'launch_script': LAUNCH_SCRIPT_UNIX,
},
'skia-vm-013': {
'slaves': [
#('skiabot-ct-dm-000', '0', False),
#('skiabot-ct-dm-001', '1', False),
#('skiabot-ct-dm-003', '2', False),
],
'copies': CHROMEBUILD_COPIES,
'ip': NO_IP_ADDR,
'kvm_switch': NO_KVM_SWITCH,
'kvm_num': NO_KVM_NUM,
'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
'launch_script': LAUNCH_SCRIPT_UNIX,
},
'skia-vm-014': {
'slaves': [
('skia-android-canary', '0', True),
#('skia-android-build-000', '1', True),
#('skia-android-build-001', '2', True),
#('skia-android-build-002', '3', True),
#('skia-android-build-003', '4', True),
#('skia-android-build-004', '5', True),
#('skia-android-build-005', '6', True),
#('skia-android-build-006', '7', True),
#('skia-android-build-007', '8', True),
],
'copies': CHROMEBUILD_COPIES,
'ip': NO_IP_ADDR,
'kvm_switch': NO_KVM_SWITCH,
'kvm_num': NO_KVM_NUM,
'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
'launch_script': LAUNCH_SCRIPT_UNIX,
},
'skia-vm-015': {
'slaves': [
#('skiabot-ct-dm-002', '3', False),
#('skiabot-ct-dm-004', '4', False),
],
'copies': CHROMEBUILD_COPIES,
'ip': NO_IP_ADDR,
'kvm_switch': NO_KVM_SWITCH,
'kvm_num': NO_KVM_NUM,
'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
'launch_script': LAUNCH_SCRIPT_UNIX,
},
'skia-vm-024': {
'slaves': [
],
'copies': CHROMEBUILD_COPIES,
'ip': NO_IP_ADDR,
'kvm_switch': NO_KVM_SWITCH,
'kvm_num': NO_KVM_NUM,
'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
'launch_script': LAUNCH_SCRIPT_UNIX,
},
################################# Mac Machines #################################
############################### Windows Machines ###############################
############################ Machines in Chrome Golo ###########################
'slave11-c3': {
'slaves': [
#('slave11-c3', '0', False),
],
'copies': None,
'ip': NO_IP_ADDR,
'kvm_switch': NO_KVM_SWITCH,
'kvm_num': NO_KVM_NUM,
'path_to_buildbot': None,
'launch_script': LAUNCH_SCRIPT_UNIX,
},
}
# Class which holds configuration data describing a build slave host.
SlaveHostConfig = collections.namedtuple('SlaveHostConfig',
('hostname, slaves, copies,'
' ip, kvm_switch, kvm_num,'
' path_to_buildbot,'
' launch_script'))
SLAVE_HOSTS = {}
for (_hostname, _config) in _slave_host_dicts.iteritems():
SLAVE_HOSTS[_hostname] = SlaveHostConfig(hostname=_hostname,
**_config)
def default_slave_host_config(hostname):
"""Return a default configuration for the given hostname.
Assumes that the slave host is the machine on which this function is called.
Args:
hostname: string; name of the build slave host.
Returns:
SlaveHostConfig instance with configuration for this machine.
"""
path_to_buildbot = os.path.join(os.path.dirname(__file__), os.pardir)
path_to_buildbot = os.path.abspath(path_to_buildbot).split(os.path.sep)
launch_script = LAUNCH_SCRIPT_WIN if os.name == 'nt' else LAUNCH_SCRIPT_UNIX
return SlaveHostConfig(
hostname=hostname,
slaves=[(hostname, '0', True)],
copies=CHROMEBUILD_COPIES,
ip=None,
kvm_switch=None,
kvm_num=None,
path_to_buildbot=path_to_buildbot,
launch_script=launch_script,
)
def get_slave_host_config(hostname):
"""Helper function for retrieving slave host configuration information.
If the given hostname is unknown, returns a default config.
Args:
hostname: string; the hostname of the slave host machine.
Returns:
SlaveHostConfig instance representing the given host.
"""
return SLAVE_HOSTS.get(hostname, default_slave_host_config(hostname))
if __name__ == '__main__':
print json.dumps(_slave_host_dicts)