Go Cloud

Cloud services library

View project on GitHub

gocloud compute - gce

Configure google credentials

download service account credential file from google cloud save as googlecloud.json,

also You can setup enviroment variables as

export PrivateKey =  "xxxxxxxxxxxx"
export Type =  "xxxxxxxxxxxx"
export ProjectID = "xxxxxxxxxxxx"
export PrivateKeyID = "xxxxxxxxxxxx"
export ClientEmail = "xxxxxxxxxxxx"
export ClientID = "xxxxxxxxxxxx"
export AuthURI = "xxxxxxxxxxxx"
export TokenURI = "xxxxxxxxxxxx"
export AuthProviderX509CertURL = "xxxxxxxxxxxx"
export ClientX509CertURL =  "xxxxxxxxxxxx"

Initialize library


import "github.com/cloudlibz/gocloud/gocloud"

googlecloud, _ := gocloud.CloudProvider(gocloud.Googleprovider)

Create instance

 InitializeParams := map[string]string{
    "SourceImage": "https://www.googleapis.com/compute/v1/projects/debian-cloud/global/images/debian-8-jessie-v20160301",
    "DiskType":    "projects/sheltermap-1493101612061/zones/us-east4-c/diskTypes/pd-standard",
    "DiskSizeGb":  "10",
  }

  disk := []map[string]interface{}{
     {
	"Boot":  true,
	"AutoDelete":   false,
	"DeviceName":   "DeviceName",
	"Type":         "PERSISTENT",
	"Mode":         "READ_WRITE",
	"InitializeParams": InitializeParams,
      },
   }

 AccessConfigs := []map[string]string{
   {
	"Name": "external-nat",
	"Type": "ONE_TO_ONE_NAT",
  },
}

  NetworkInterfaces := []map[string]interface{}{
   {
	"Network": "https://www.googleapis.com/compute/v1/projects/sheltermap-1493101612061/global/networks/default",
	"Subnetwork":    "projects/sheltermap-1493101612061/regions/us-east4/subnetworks/default",
        "AccessConfigs": AccessConfigs,
    },
   }

   createnode := map[string]interface{}{
      "projectid":   "sheltermap-1493101612061",
	  "Name" :   "testing-scorelab",
    "MachineType":    "https://www.googleapis.com/compute/v1/projects/sheltermap-1493101612061/zones/us-east4-c/machineTypes/n1-standard-1",
    "Zone":        "us-central1-b",
    "disk":        disk,
    "NetworkInterfaces": NetworkInterfaces,
    }

  resp, err := googlecloud.Createnode(createnode)
  
  response := resp.(map[string]interface{})
  fmt.Println(response["body"])

Stop instance

  stopnode := map[string]string{
		"projectid": "sheltermap-1493101612061",
		"instance":  "testing-scorelab2",
		"Zone":      "us-west1-c",
	}

 resp , err := googlecloud.Stopnode(stopnode)
 
 response := resp.(map[string]interface{})
 fmt.Println(response["body"])

Start instance

  stop := map[string]string{
	   "projectid":"sheltermap-1493101612061",
	   "instance":"instance-10",
	    "Zone": "us-west1-c",

	   }

  resp,err := googlecloud.Stopnode(stop)

  response := resp.(map[string]interface{})
  fmt.Println(response["body"])

Reboot instance

 	reboot := map[string]string{
		"projectid": "sheltermap-1493101612061",
		"instance":  "testing-scorelab",
		"Zone":      "us-west1-c",
	}
  
  resp, err := googlecloud.Rebootnode(reboot)
  
  response := resp.(map[string]interface{})
  fmt.Println(response["body"])

delete instance

 deletenode := map[string]string{
		"projectid": "sheltermap-1493101612061",
		"instance":  "testing-scorelab2",
		"Zone":      "us-west1-c",
	}

  resp, err := googlecloud.Deletenode(deletenode)
  
  response := resp.(map[string]interface{})
  fmt.Println(response["body"])

Back to Home Page