""" This file contains configuration information for the build slave host
machines. """


import collections
import ntpath
import os
import posixpath
import sys

import skia_vars


buildbot_path = os.path.abspath(os.path.join(os.path.dirname(__file__),
                                             os.pardir))
sys.path.append(buildbot_path)


from compute_engine_scripts.compute_engine_cfg import \
    PROJECT_USER as CHROMECOMPUTE_USERNAME
from compute_engine_scripts.compute_engine_cfg import \
    PROJECT_ID as CHROMECOMPUTE_PROJECT


CHROMECOMPUTE_BUILDBOT_PATH = ['storage', 'skia-repo', 'buildbot']

# Indicates that this machine is not connected to a KVM switch.
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": ".boto",
    "destination": "build/site_config",
  },
  {
    "source": ".bot_password",
    "destination": "build/site_config",
  },
]

GCE_PROJECT = skia_vars.GetGlobalVariable('gce_project')
GCE_USERNAME = skia_vars.GetGlobalVariable('gce_username')
GCE_ZONE = skia_vars.GetGlobalVariable('gce_compile_bots_zone')

GCE_COMPILE_A_ONLINE = GCE_ZONE == 'a'
GCE_COMPILE_B_ONLINE = GCE_ZONE == 'b'
GCE_COMPILE_C_ONLINE = True

LAUNCH_SCRIPT_UNIX = ['scripts', 'skiabot-slave-start-on-boot.sh']
LAUNCH_SCRIPT_WIN = ['scripts', 'skiabot-slave-start-on-boot.bat']

SKIALAB_ROUTER_IP = skia_vars.GetGlobalVariable('skialab_router_ip')
SKIALAB_USERNAME = skia_vars.GetGlobalVariable('skialab_username')


# Procedures for logging in to the host machines.

def skia_lab_login(hostname, config):
  """Procedure for logging into SkiaLab machines."""
  return [
    'ssh', '%s@%s' % (SKIALAB_USERNAME, SKIALAB_ROUTER_IP),
    'ssh', '%s@%s' % (SKIALAB_USERNAME, config['ip'])
  ]


def compute_engine_login(hostname, config):
  """Procedure for logging into Skia GCE instances."""
  return [
    'gcutil', '--project=%s' % GCE_PROJECT,
    'ssh', '--ssh_user=%s' % GCE_USERNAME, hostname,
  ]


def chromecompute_login(hostname, config):
  """Procedure for logging into ChromeCompute GCE instances."""
  return [
    'gcutil', '--project=%s' % CHROMECOMPUTE_PROJECT,
    'ssh', '--ssh_user=%s' % CHROMECOMPUTE_USERNAME, hostname,
  ]


# Data for all Skia build slave hosts.
_slave_host_dicts = {

################################ Linux Machines ################################

  'skiabot-shuttle-ubuntu12-gtx550ti-001': {
    'slaves': [
      ('skiabot-shuttle-ubuntu12-gtx550ti-001', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': skia_lab_login,
    'ip': '192.168.1.132',
    'kvm_num': 'A',
    'path_module': posixpath,
    'path_to_buildbot': ['buildbot'],
    'remote_access': True,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skiabot-shuttle-ubuntu12-gtx660-001': {
    'slaves': [
      ('skiabot-shuttle-ubuntu12-gtx660-000', '0', False),
      ('skiabot-shuttle-ubuntu12-gtx660-001', '0', False),
      ('skiabot-shuttle-ubuntu12-gtx660-002', '0', False),
      ('skiabot-shuttle-ubuntu12-gtx660-003', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': skia_lab_login,
    'ip': '192.168.1.113',
    'kvm_num': 'E',
    'path_module': posixpath,
    'path_to_buildbot': ['buildbot'],
    'remote_access': True,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skiabot-shuttle-ubuntu12-gtx660-002': {
    'slaves': [
      ('skiabot-shuttle-ubuntu12-gtx660-bench', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': skia_lab_login,
    'ip': '192.168.1.122',
    'kvm_num': 'F',
    'path_module': posixpath,
    'path_to_buildbot': ['buildbot'],
    'remote_access': True,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skiabot-shuttle-ubuntu12-android-003': {
    'slaves': [
      ('skiabot-shuttle-ubuntu12-xoom-001',        '0', False),
      ('skiabot-shuttle-ubuntu12-xoom-003',        '2', False),
      ('skiabot-shuttle-ubuntu12-nexus7-001',      '6', False),
      ('skiabot-shuttle-ubuntu12-nexus7-002',      '7', False),
      ('skiabot-shuttle-ubuntu12-nexus7-003',      '8', False),
      ('skiabot-shuttle-ubuntu12-nexus10-001',     '9', False),
      ('skiabot-shuttle-ubuntu12-nexus10-003',     '10', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': skia_lab_login,
    'ip': '192.168.1.110',
    'kvm_num': 'C',
    'path_module': posixpath,
    'path_to_buildbot': ['buildbot'],
    'remote_access': True,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skiabot-shuttle-ubuntu12-xxx': {
    'slaves': [
      ('skiabot-shuttle-ubuntu12-002',             '2',  False),
      ('skiabot-shuttle-ubuntu12-003',             '3',  False),
      ('skiabot-shuttle-ubuntu12-004',             '4',  False),
      ('skiabot-shuttle-ubuntu12-nexus9-001',      '5',  False),
      ('skiabot-shuttle-ubuntu12-nexusplayer-001', '6',  False),
      ('skiabot-shuttle-ubuntu12-nexusplayer-002', '7',  False),
      ('skiabot-shuttle-ubuntu12-nexus5-001',      '8',  False),
      ('skiabot-shuttle-ubuntu12-nexus5-002',      '9',  False),
      ('skiabot-shuttle-ubuntu12-galaxys4-001',    '10', False),
      ('skiabot-shuttle-ubuntu12-galaxys4-002',    '11', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': skia_lab_login,
    'ip': '192.168.1.109',
    'kvm_num': 'B',
    'path_module': posixpath,
    'path_to_buildbot': ['buildbot'],
    'remote_access': True,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skiabot-shuttle-ubuntu13-xxx': {
    'slaves': [
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': skia_lab_login,
    'ip': '192.168.1.120',
    'kvm_num': 'D',
    'path_module': posixpath,
    'path_to_buildbot': ['buildbot'],
    'remote_access': True,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skiabot-shuttle-ubuntu13-002': {
    'slaves': [
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': skia_lab_login,
    'ip': '192.168.1.115',
    'kvm_num': 'G',
    'path_module': posixpath,
    'path_to_buildbot': ['buildbot'],
    'remote_access': True,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skia-vm-001': {
    'slaves': [
      ('skiabot-linux-compile-000', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': chromecompute_login,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
    'remote_access': GCE_COMPILE_C_ONLINE,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skia-vm-002': {
    'slaves': [
      ('skiabot-linux-compile-001', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': chromecompute_login,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
    'remote_access': GCE_COMPILE_C_ONLINE,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skia-vm-003': {
    'slaves': [
      ('skiabot-linux-compile-002', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': chromecompute_login,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
    'remote_access': GCE_COMPILE_C_ONLINE,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skia-vm-004': {
    'slaves': [
      ('skiabot-linux-compile-003', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': chromecompute_login,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
    'remote_access': GCE_COMPILE_C_ONLINE,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skia-vm-005': {
    'slaves': [
      ('skiabot-linux-compile-004', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': chromecompute_login,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
    'remote_access': GCE_COMPILE_C_ONLINE,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skia-vm-006': {
    'slaves': [
      ('skiabot-linux-compile-005', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': chromecompute_login,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
    'remote_access': GCE_COMPILE_C_ONLINE,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skia-vm-007': {
    'slaves': [
      ('skiabot-linux-compile-006', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': chromecompute_login,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
    'remote_access': GCE_COMPILE_C_ONLINE,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skia-vm-008': {
    'slaves': [
      ('skiabot-linux-compile-007', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': chromecompute_login,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
    'remote_access': GCE_COMPILE_C_ONLINE,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skia-vm-009': {
    'slaves': [
      ('skiabot-linux-compile-008', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': chromecompute_login,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
    'remote_access': GCE_COMPILE_C_ONLINE,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skia-vm-010': {
    'slaves': [
      ('skiabot-linux-compile-009', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': chromecompute_login,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
    'remote_access': GCE_COMPILE_C_ONLINE,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skia-vm-011': {
    'slaves': [
      ('skiabot-linux-compile-010', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': chromecompute_login,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
    'remote_access': GCE_COMPILE_C_ONLINE,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skia-vm-012': {
    'slaves': [
      ('skiabot-linux-compile-011', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': chromecompute_login,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
    'remote_access': GCE_COMPILE_C_ONLINE,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skia-vm-013': {
    'slaves': [
      ('skiabot-linux-compile-012', '0', False),
      ('skiabot-linux-housekeeper-000', '1', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': chromecompute_login,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
    'remote_access': GCE_COMPILE_C_ONLINE,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skia-vm-014': {
    'slaves': [
      ('skia-android-canary', '0', True),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': chromecompute_login,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
    'remote_access': GCE_COMPILE_C_ONLINE,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skia-vm-015': {
    'slaves': [
      ('skiabot-linux-housekeeper-001', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': chromecompute_login,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
    'remote_access': GCE_COMPILE_C_ONLINE,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skia-vm-016': {
    'slaves': [
      ('skiabot-win-compile-000', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': None,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': ntpath,
    'path_to_buildbot': ['buildbot'],
    'remote_access': False,
    'launch_script': LAUNCH_SCRIPT_WIN,
  },

  'skia-vm-017': {
    'slaves': [
      ('skiabot-win-compile-001', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': None,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': ntpath,
    'path_to_buildbot': ['buildbot'],
    'remote_access': False,
    'launch_script': LAUNCH_SCRIPT_WIN,
  },

  'skia-vm-018': {
    'slaves': [
      ('skiabot-win-compile-002', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': None,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': ntpath,
    'path_to_buildbot': ['buildbot'],
    'remote_access': False,
    'launch_script': LAUNCH_SCRIPT_WIN,
  },

  'skia-vm-019': {
    'slaves': [
      ('skiabot-win-compile-003', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': None,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': ntpath,
    'path_to_buildbot': ['buildbot'],
    'remote_access': False,
    'launch_script': LAUNCH_SCRIPT_WIN,
  },

  'skia-vm-020': {
    'slaves': [
      ('skiabot-linux-tester-000', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': chromecompute_login,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
    'remote_access': GCE_COMPILE_C_ONLINE,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skia-vm-021': {
    'slaves': [
      ('skiabot-linux-tester-001', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': chromecompute_login,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
    'remote_access': GCE_COMPILE_C_ONLINE,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skia-vm-022': {
    'slaves': [
      ('skiabot-linux-tester-002', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': chromecompute_login,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
    'remote_access': GCE_COMPILE_C_ONLINE,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skia-vm-023': {
    'slaves': [
      ('skiabot-linux-tester-003', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': chromecompute_login,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
    'remote_access': GCE_COMPILE_C_ONLINE,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skia-vm-024': {
    'slaves': [
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': chromecompute_login,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
    'remote_access': GCE_COMPILE_C_ONLINE,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skia-vm-025': {
    'slaves': [
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': chromecompute_login,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
    'remote_access': GCE_COMPILE_C_ONLINE,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skia-vm-026': {
    'slaves': [
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': chromecompute_login,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
    'remote_access': GCE_COMPILE_C_ONLINE,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skia-vm-027': {
    'slaves': [
      ('skiabot-linux-xsan-000', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': chromecompute_login,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
    'remote_access': GCE_COMPILE_C_ONLINE,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skia-vm-028': {
    'slaves': [
      ('skiabot-linux-xsan-001', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': chromecompute_login,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
    'remote_access': GCE_COMPILE_C_ONLINE,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skia-vm-029': {
    'slaves': [
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': chromecompute_login,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
    'remote_access': GCE_COMPILE_C_ONLINE,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skia-vm-030': {
    'slaves': [
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': None,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': ntpath,
    'path_to_buildbot': ['buildbot'],
    'remote_access': False,
    'launch_script': LAUNCH_SCRIPT_WIN,
  },

  'skia-vm-031': {
    'slaves': [
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': None,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': ntpath,
    'path_to_buildbot': ['buildbot'],
    'remote_access': False,
    'launch_script': LAUNCH_SCRIPT_WIN,
  },

  'skia-vm-032': {
    'slaves': [
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': None,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': ntpath,
    'path_to_buildbot': ['buildbot'],
    'remote_access': False,
    'launch_script': LAUNCH_SCRIPT_WIN,
  },

  'skia-vm-101': {
    'slaves': [
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': chromecompute_login,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': CHROMECOMPUTE_BUILDBOT_PATH,
    'remote_access': GCE_COMPILE_C_ONLINE,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

################################# Mac Machines #################################

  'skiabot-macmini-10_7-001': {
    'slaves': [
      ('skiabot-macmini-10_7-000', '0', False),
      ('skiabot-macmini-10_7-001', '1', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': skia_lab_login,
    'ip': '192.168.1.137',
    'kvm_num': '3',
    'path_module': posixpath,
    'path_to_buildbot': ['buildbot'],
    'remote_access': True,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skiabot-macmini-10_7-002': {
    'slaves': [
      ('skiabot-macmini-10_7-bench', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': skia_lab_login,
    'ip': '192.168.1.124',
    'kvm_num': '4',
    'path_module': posixpath,
    'path_to_buildbot': ['buildbot'],
    'remote_access': True,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skiabot-macmini-10_8-001': {
    'slaves': [
      ('skiabot-macmini-10_8-000', '0', False),
      ('skiabot-macmini-10_8-001', '1', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': skia_lab_login,
    'ip': '192.168.1.125',
    'kvm_num': '8',
    'path_module': posixpath,
    'path_to_buildbot': ['buildbot'],
    'remote_access': True,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skiabot-macmini-10_8-002': {
    'slaves': [
      ('skiabot-macmini-10_8-bench', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': skia_lab_login,
    'ip': '192.168.1.135',
    'kvm_num': '6',
    'path_module': posixpath,
    'path_to_buildbot': ['buildbot'],
    'remote_access': True,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skiabot-mac-10_7-compile': {
    'slaves': [
      ('skiabot-mac-10_7-compile-000', '0', False),
      ('skiabot-mac-10_7-compile-001', '1', False),
      ('skiabot-mac-10_7-compile-002', '2', False),
      ('skiabot-mac-10_7-compile-003', '3', False),
      ('skiabot-mac-10_7-compile-004', '4', False),
      ('skiabot-mac-10_7-compile-005', '5', False),
      ('skiabot-mac-10_7-compile-006', '6', False),
      ('skiabot-mac-10_7-compile-007', '7', False),
      ('skiabot-mac-10_7-compile-008', '8', False),
      ('skiabot-mac-10_7-compile-009', '9', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': skia_lab_login,
    'ip': '192.168.1.118',
    'kvm_num': '5',
    'path_module': posixpath,
    'path_to_buildbot': ['buildbot'],
    'remote_access': True,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'skiabot-mac-10_8-compile': {
    'slaves': [
      ('skiabot-mac-10_8-compile-000', '0', False),
      ('skiabot-mac-10_8-compile-001', '1', False),
      ('skiabot-mac-10_8-compile-002', '2', False),
      ('skiabot-mac-10_8-compile-003', '3', False),
      ('skiabot-mac-10_8-compile-004', '4', False),
      ('skiabot-mac-10_8-compile-005', '5', False),
      ('skiabot-mac-10_8-compile-006', '6', False),
      ('skiabot-mac-10_8-compile-007', '7', False),
      ('skiabot-mac-10_8-compile-008', '8', False),
      ('skiabot-mac-10_8-compile-009', '9', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': skia_lab_login,
    'ip': '192.168.1.104',
    'kvm_num': '7',
    'path_module': posixpath,
    'path_to_buildbot': ['buildbot'],
    'remote_access': True,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

############################### Windows Machines ###############################

  'win7-intel-002': {
    'slaves': [
      ('skiabot-shuttle-win7-intel-bench', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': None,
    'ip': '192.168.1.139',
    'kvm_num': 'F',
    'path_module': ntpath,
    'path_to_buildbot': ['buildbot'],
    'remote_access': False,
    'launch_script': LAUNCH_SCRIPT_WIN,
  },

  'win7-intel-003': {
    'slaves': [
      ('skiabot-shuttle-win7-intel-000', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': None,
    'ip': '192.168.1.114',
    'kvm_num': 'G',
    'path_module': ntpath,
    'path_to_buildbot': ['buildbot'],
    'remote_access': False,
    'launch_script': LAUNCH_SCRIPT_WIN,
  },

  'win8-gtx660-001': {
    'slaves': [
      ('skiabot-shuttle-win8-gtx660-bench', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': None,
    'ip': '192.168.1.133',
    'kvm_num': 'B',
    'path_module': ntpath,
    'path_to_buildbot': ['buildbot'],
    'remote_access': False,
    'launch_script': LAUNCH_SCRIPT_WIN,
  },

  'win8-hd7770-000': {
    'slaves': [
      ('skiabot-shuttle-win8-hd7770-000', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': None,
    'ip': '192.168.1.117',
    'kvm_num': 'C',
    'path_module': ntpath,
    'path_to_buildbot': ['buildbot'],
    'remote_access': False,
    'launch_script': LAUNCH_SCRIPT_WIN,
  },

  'win8-hd7770-001': {
    'slaves': [
      ('skiabot-shuttle-win8-hd7770-bench', '0', False),
    ],
    'copies': CHROMEBUILD_COPIES,
    'login_cmd': None,
    'ip': '192.168.1.107',
    'kvm_num': 'D',
    'path_module': ntpath,
    'path_to_buildbot': ['buildbot'],
    'remote_access': False,
    'launch_script': LAUNCH_SCRIPT_WIN,
  },

############################ Machines in Chrome Golo ###########################

  'build3-a3': {
    'slaves': [
      ('build3-a3', '0', False),
    ],
    'copies': None,
    'login_cmd': None,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': None,
    'path_to_buildbot': None,
    'remote_access': False,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'build4-a3': {
    'slaves': [
      ('build4-a3', '0', False),
    ],
    'copies': None,
    'login_cmd': None,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': None,
    'path_to_buildbot': None,
    'remote_access': False,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'build5-a3': {
    'slaves': [
      ('build5-a3', '0', False),
    ],
    'copies': None,
    'login_cmd': None,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': None,
    'remote_access': False,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'build32-a3': {
    'slaves': [
      ('build32-a3', '0', False),
    ],
    'copies': None,
    'login_cmd': None,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': None,
    'remote_access': False,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'build33-a3': {
    'slaves': [
      ('build33-a3', '0', False),
    ],
    'copies': None,
    'login_cmd': None,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': None,
    'remote_access': False,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'mini1-m3': {
    'slaves': [
      ('mini1-m3', '0', False),
    ],
    'copies': None,
    'login_cmd': None,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': None,
    'path_to_buildbot': None,
    'remote_access': False,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'vm690-m3': {
    'slaves': [
      ('vm690-m3', '0', False),
    ],
    'copies': None,
    'login_cmd': None,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': None,
    'remote_access': False,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'vm691-m3': {
    'slaves': [
      ('vm691-m3', '0', False),
    ],
    'copies': None,
    'login_cmd': None,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': None,
    'remote_access': False,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'vm692-m3': {
    'slaves': [
      ('vm692-m3', '0', False),
    ],
    'copies': None,
    'login_cmd': None,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': None,
    'remote_access': False,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },

  'vm693-m3': {
    'slaves': [
      ('vm693-m3', '0', False),
    ],
    'copies': None,
    'login_cmd': None,
    'ip': NO_IP_ADDR,
    'kvm_num': NO_KVM_NUM,
    'path_module': posixpath,
    'path_to_buildbot': None,
    'remote_access': False,
    'launch_script': LAUNCH_SCRIPT_UNIX,
  },
}


# Class which holds configuration data describing a build slave host.
SlaveHostConfig = collections.namedtuple('SlaveHostConfig',
                                         ('hostname, slaves, copies, login_cmd,'
                                          ' ip, kvm_num, path_module,'
                                          ' path_to_buildbot, remote_access,'
                                          ' launch_script'))


SLAVE_HOSTS = {}
for (_hostname, _config) in _slave_host_dicts.iteritems():
  login_cmd = _config.pop('login_cmd')
  if login_cmd:
    resolved_login_cmd = login_cmd(_hostname, _config)
  else:
    resolved_login_cmd = None
  SLAVE_HOSTS[_hostname] = SlaveHostConfig(hostname=_hostname,
                                           login_cmd=resolved_login_cmd,
                                           **_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,
    login_cmd=None,
    ip=None,
    kvm_num=None,
    path_module=os.path,
    path_to_buildbot=path_to_buildbot,
    remote_access=False,
    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))
