in e2e_tests/utils/utils.go [500:559]
func CreateComputeInstance(metadataitems []*api.MetadataItems, client daisyCompute.Client, machineType, image, name, projectID, zone, serviceAccountEmail string, serviceAccountScopes []string) (*compute.Instance, error) {
pool <- struct{}{}
defer func() {
<-pool
}()
var items []*api.MetadataItems
// enable debug logging and guest-attributes for all test instances
items = append(items, compute.BuildInstanceMetadataItem("enable-os-config-debug", "true"))
items = append(items, compute.BuildInstanceMetadataItem("enable-guest-attributes", "true"))
if config.AgentSvcEndpoint() != "" {
items = append(items, compute.BuildInstanceMetadataItem("os-config-endpoint", config.AgentSvcEndpoint()))
}
for _, item := range metadataitems {
items = append(items, item)
}
i := &api.Instance{
Name: name,
MachineType: fmt.Sprintf("projects/%s/zones/%s/machineTypes/%s", projectID, zone, machineType),
NetworkInterfaces: []*api.NetworkInterface{
{
Subnetwork: fmt.Sprintf("projects/%s/regions/%s/subnetworks/default", projectID, zone[:len(zone)-2]),
AccessConfigs: []*api.AccessConfig{
{
Type: "ONE_TO_ONE_NAT",
},
},
},
},
Metadata: &api.Metadata{
Items: items,
},
Disks: []*api.AttachedDisk{
{
AutoDelete: true,
Boot: true,
InitializeParams: &api.AttachedDiskInitializeParams{
SourceImage: image,
DiskType: fmt.Sprintf("projects/%s/zones/%s/diskTypes/pd-balanced", projectID, zone),
},
},
},
ServiceAccounts: []*api.ServiceAccount{
{
Email: serviceAccountEmail,
Scopes: serviceAccountScopes,
},
},
Labels: map[string]string{"name": name},
}
inst, err := compute.CreateInstance(client, projectID, zone, i)
if err != nil {
return nil, err
}
return inst, nil
}