Untitled
unknown
golang
4 years ago
4.0 kB
13
Indexable
package main
import (
"context"
"fmt"
"log"
"google.golang.org/api/compute/v1"
)
func main() {
ctx := context.Background()
computeService, err := compute.NewService(ctx)
if err != nil {
log.Fatalf("failed to create compute client: %s", err)
}
f := false
startupScript := "echo \"up\""
properties := &compute.InstanceProperties{
// MachineType: "projects/cg-vraycloud/zones/us-central1-c/machineTypes/e2-medium",
MachineType: "/n1-highmem-2",
// MachineType: "n1-standard-1",
Disks: []*compute.AttachedDisk{
{
AutoDelete: true,
Boot: true,
DeviceName: "disk-1",
Type: "PERSISTENT",
Mode: "READ_WRITE",
InitializeParams: &compute.AttachedDiskInitializeParams{
SourceImage: "projects/debian-cloud/global/images/debian-10-buster-v20220317",
DiskType: "projects/cg-vraycloud/zones/europe-west4-a/diskTypes/pd-balanced",
DiskSizeGb: 10,
Labels: map[string]string{},
},
},
},
CanIpForward: false,
NetworkInterfaces: []*compute.NetworkInterface{
{
Network: fmt.Sprintf("projects/%s/global/networks/default", project),
AccessConfigs: []*compute.AccessConfig{
{
Name: "External NAT",
Type: "ONE_TO_ONE_NAT",
},
},
},
},
Labels: map[string]string{},
ServiceAccounts: []*compute.ServiceAccount{
{
Email: "58614676228-compute@developer.gserviceaccount.com",
Scopes: []string{"https://www.googleapis.com/auth/cloud-platform"},
},
},
Scheduling: &compute.Scheduling{
Preemptible: true,
OnHostMaintenance: "TERMINATE",
AutomaticRestart: &f,
},
Metadata: &compute.Metadata{
Items: []*compute.MetadataItems{
{
Key: "startup-script",
Value: &startupScript,
},
},
},
}
pproperties := map[string]compute.BulkInsertInstanceResourcePerInstanceProperties{
"one": {},
"two": {},
}
bresource := &compute.BulkInsertInstanceResource{
Count: 2,
MinCount: 1,
InstanceProperties: properties,
PerInstanceProperties: pproperties,
}
op, err := computeService.RegionInstances.BulkInsert(project, region, bresource).Do()
// instance := &compute.Instance{
// Name: "foo",
// MachineType: "projects/cg-vraycloud/zones/us-central1-c/machineTypes/e2-medium",
// Disks: []*compute.AttachedDisk{
// {
// AutoDelete: true,
// Boot: true,
// DeviceName: "disk-1",
// Type: "PERSISTENT",
// Mode: "READ_WRITE",
// InitializeParams: &compute.AttachedDiskInitializeParams{
// SourceImage: "projects/debian-cloud/global/images/debian-10-buster-v20220317",
// DiskType: "projects/cg-vraycloud/zones/europe-west4-a/diskTypes/pd-balanced",
// DiskSizeGb: 10,
// Labels: map[string]string{},
// },
// },
// },
// CanIpForward: false,
// NetworkInterfaces: []*compute.NetworkInterface{
// {
// Network: fmt.Sprintf("projects/%s/global/networks/default", project),
// AccessConfigs: []*compute.AccessConfig{
// {
// Name: "External NAT",
// Type: "ONE_TO_ONE_NAT",
// },
// },
// },
// },
// Labels: map[string]string{},
// ServiceAccounts: []*compute.ServiceAccount{
// {
// Email: "58614676228-compute@developer.gserviceaccount.com",
// Scopes: []string{"https://www.googleapis.com/auth/cloud-platform"},
// },
// },
// Scheduling: &compute.Scheduling{
// Preemptible: true,
// OnHostMaintenance: "TERMINATE",
// AutomaticRestart: &f,
// },
// Metadata: &compute.Metadata{
// Items: []*compute.MetadataItems{
// {
// Key: "startup-script",
// Value: &startupScript,
// },
// },
// },
// }
// op, err := computeService.Instances.Insert(project, region+"-c", instance).Do()
if err != nil {
log.Fatalf("failed to insert: %s", err)
}
fmt.Println(op.Id)
fmt.Println(op.OperationGroupId)
}
var project = "cg-vraycloud"
var region = "us-central1"
Editor is loading...