blob: 2553d3090f89e0714c32c6e83f8f69d0efc43861 [file] [log] [blame]
package instance_types
import (
"fmt"
"path"
"runtime"
"go.skia.org/infra/go/auth"
"go.skia.org/infra/go/gce"
skia_instance_types "go.skia.org/infra/go/gce/swarming/instance_types"
)
const (
GS_URL_GITCONFIG = "gs://cluster-telemetry-bucket/artifacts/bots/.gitconfig_ct"
GS_URL_NETRC = "gs://cluster-telemetry-bucket/artifacts/bots/.netrc_ct"
GS_URL_BOTO = "gs://cluster-telemetry-bucket/artifacts/bots/.boto_ct"
CT_WORKER_PREFIX = "ct-gce-"
LINUX_SOURCE_IMAGE = "projects/ubuntu-os-cloud/global/images/ubuntu-1804-bionic-v20190722a"
WIN_SOURCE_IMAGE = "projects/windows-cloud/global/images/windows-server-2016-dc-v20190108"
)
// Base config for CT GCE instances.
func CT20170602(name string, useSSDDataDisk bool) *gce.Instance {
_, filename, _, _ := runtime.Caller(0)
dir := path.Dir(path.Dir(filename))
dataDisk := &gce.Disk{
Name: fmt.Sprintf("%s-data", name),
SizeGb: 300,
Type: gce.DISK_TYPE_PERSISTENT_STANDARD,
MountPath: "/b",
}
if useSSDDataDisk {
dataDisk.Type = gce.DISK_TYPE_PERSISTENT_SSD
}
return &gce.Instance{
BootDisk: &gce.Disk{
Name: name,
SourceImage: LINUX_SOURCE_IMAGE,
Type: gce.DISK_TYPE_PERSISTENT_STANDARD,
},
DataDisks: []*gce.Disk{dataDisk},
MachineType: gce.MACHINE_TYPE_HIGHMEM_4,
Metadata: map[string]string{},
MetadataDownloads: map[string]string{},
Name: name,
Os: gce.OS_LINUX,
ServiceAccount: gce.SERVICE_ACCOUNT_CT_SWARMING,
Scopes: []string{
auth.ScopeFullControl,
auth.ScopeUserinfoEmail,
auth.ScopePubsub,
auth.ScopeGerrit,
},
SetupScript: path.Join(dir, "setup-script.sh"),
Tags: []string{"use-swarming-auth"},
User: gce.USER_CHROME_BOT,
}
}
// CT GCE instances.
func CTWorkerInstance(num int) *gce.Instance {
return CT20170602(fmt.Sprintf("%s%03d", CT_WORKER_PREFIX, num), false /* useSSDDataDisk */)
}
func CTMasterInstance(num int) *gce.Instance {
return CT20170602(fmt.Sprintf("ct-master-%03d", num), false /* useSSDDataDisk */)
}
// CT Android Builder GCE instances.
func CTAndroidBuilderInstance(num int) *gce.Instance {
vm := CT20170602(fmt.Sprintf("ct-android-builder-%03d", num), true /* useSSDDataDisk */)
vm.MachineType = gce.MACHINE_TYPE_HIGHMEM_64
return vm
}
// CT Linux Builder GCE instances.
func CTLinuxBuilderInstance(num int) *gce.Instance {
vm := CT20170602(fmt.Sprintf("ct-linux-builder-%03d", num), true /* useSSDDataDisk */)
vm.MachineType = gce.MACHINE_TYPE_HIGHMEM_64
return vm
}
// CT Windows Builder GCE instances.
func CTWindowsBuilderInstance(num int, setupScriptPath, startupScriptPath, chromebotScript string) *gce.Instance {
return getCTWindowsInstance(fmt.Sprintf("ct-windows-builder-%03d", num), gce.MACHINE_TYPE_HIGHMEM_64, gce.DISK_TYPE_PERSISTENT_SSD, setupScriptPath, startupScriptPath, chromebotScript)
}
// CT Windows GCE instances.
func CTWindowsInstance(num int, setupScriptPath, startupScriptPath, chromebotScript string) *gce.Instance {
return getCTWindowsInstance(fmt.Sprintf("%s%03d", CT_WORKER_PREFIX, num), gce.MACHINE_TYPE_HIGHMEM_4, gce.DISK_TYPE_PERSISTENT_STANDARD, setupScriptPath, startupScriptPath, chromebotScript)
}
func getCTWindowsInstance(name, machineType, diskType, setupScriptPath, startupScriptPath, chromebotScript string) *gce.Instance {
vm := skia_instance_types.Swarming20180406(name, machineType, gce.SERVICE_ACCOUNT_CT_SWARMING, setupScriptPath, "", WIN_SOURCE_IMAGE)
return skia_instance_types.AddWinConfigs(vm, startupScriptPath, chromebotScript, diskType)
}