Read up on the Golang Example Framework for information on how to setup the CLI Framework to get this code to run easily.
These scripts make a paginated API call to SoftLayer_Virtual_Guest::createObject() and print the id and the hostname of the new instance.
The first script calls the method from the main
function
package main
import (
"fmt"
"log"
"github.com/softlayer/softlayer-go/datatypes"
"github.com/softlayer/softlayer-go/services"
"github.com/softlayer/softlayer-go/session"
"github.com/softlayer/softlayer-go/sl"
)
// A virtual guest template
//
// (use convenience functions to get pointers from literals, as needed)
var vGuestTemplate = datatypes.Virtual_Guest{
Hostname: sl.String("sample"),
Domain: sl.String("example.com"),
MaxMemory: sl.Int(4096),
StartCpus: sl.Int(1),
Datacenter: &datatypes.Location{Name: sl.String("wdc01")},
OperatingSystemReferenceCode: sl.String("UBUNTU_LATEST"),
LocalDiskFlag: sl.Bool(true),
}
func main() {
// Create a session
sess := session.New()
service := services.GetVirtualGuestService(sess)
// Create the virtual guest from the template
//
// We also specify an (optional) object mask, to read back some values
vGuest, err := service.Mask("id,hostname,domain").CreateObject(&vGuestTemplate)
if err != nil {
log.Fatal(err)
} else {
fmt.Printf(
"\nNew Virtual Guest with ID %d being provisioned\n", *vGuest.Id)
}
}
The second script calls the method from the doCreateVMTest
function
package main
import (
"fmt"
"github.com/softlayer/softlayer-go/datatypes"
"github.com/softlayer/softlayer-go/services"
"github.com/softlayer/softlayer-go/session"
"github.com/softlayer/softlayer-go/sl"
)
func main() {
sess := session.New()
doCreateVMTest(sess)
}
func doCreateVMTest(sess *session.Session) {
service := services.GetVirtualGuestService(sess)
// Create a Virtual_Guest instance as a template
vGuestTemplate := datatypes.Virtual_Guest{}
//Set Creation values - use helpers from the sl package to set pointer values
vGuestTemplate.Hostname = sl.String("sample")
vGuestTemplate.Domain = sl.String("example.com")
vGuestTemplate.MaxMemory = sl.Int(4096)
vGuestTemplate.StartCpus = sl.Int(1)
vGuestTemplate.Datacenter = &datatypes.Location{Name: sl.String("wdc01")}
vGuestTemplate.OperatingSystemReferenceCode = sl.String("UBUNTU_LATEST")
vGuestTemplate.LocalDiskFlag = sl.Bool(true)
vGuest, err := service.Mask("id;domain").CreateObject(&vGuestTemplate)
if err != nil {
fmt.Printf("%s\n", err)
return
} else {
fmt.Printf("\nNew Virtual Guest created with ID %d\n", *vGuest.Id)
fmt.Printf("Domain: %s\n", *vGuest.Domain)
}
}
This script makes a paginated API call to SoftLayer_Account::getVirtualGuests() and prints ids, hostnames and domains of ten account’s associated virtual guest objects.
package main
import (
"fmt"
"github.com/softlayer/softlayer-go/services"
"github.com/softlayer/softlayer-go/session"
"github.com/softlayer/softlayer-go/sl"
)
func main() {
sess := session.New()
doListAccountVMsTest(sess)
}
func doListAccountVMsTest(sess *session.Session) {
// Get the Account service
service := services.GetAccountService(sess)
// List VMs
vms, err := service.Mask("id;hostname;domain").Limit(10).GetVirtualGuests()
if err != nil {
fmt.Printf("Error retrieving Virtual Guests from Account: %s\n", err)
return
} else {
fmt.Println("VMs under Account:")
}
for _, vm := range vms {
fmt.Printf("\t[%d]%s.%s\n", *vm.Id, *vm.Hostname, *vm.Domain)
}
}
This script makes a paginated API call to SoftLayer_Virtual_Guest::deleteObject.
package main
package main
import (
"fmt"
"log"
"github.com/softlayer/softlayer-go/services"
"github.com/softlayer/softlayer-go/session"
)
var guestId = 24438563
func main() {
// Create a session
sess := session.New()
// Get the virtual guest service
service := services.GetVirtualGuestService(sess)
// Set the object ID and delete the guest
success, err := service.Id(guestId).DeleteObject()
if err != nil {
log.Fatal(err)
} else if success == false {
log.Fatal("Error deleting virtual guest")
} else {
fmt.Println("Virtual Guest deleted successfully")
}
}
This example demonstrates the use of helper functions that simplify the process of placing a virtual guest upgrade order
package main
import (
"fmt"
"log"
"github.com/softlayer/softlayer-go/datatypes"
"github.com/softlayer/softlayer-go/helpers/product"
"github.com/softlayer/softlayer-go/helpers/virtual"
"github.com/softlayer/softlayer-go/session"
"github.com/softlayer/softlayer-go/sl"
)
const guestID = 123456
func main() {
sess := session.New()
// Create a minimal Virtual_Guest object to pass to the upgrade helper
guestToUpgrade := datatypes.Virtual_Guest{
Id: sl.Int(guestID),
}
// Upgrade to 4 Core, 8 GB
upgradeOptions := map[string]float64{
product.CPUCategoryCode: float64(4),
product.MemoryCategoryCode: float64(8),
}
receipt, err := virtual.UpgradeVirtualGuest(sess, &guestToUpgrade, upgradeOptions)
if err != nil {
log.Fatal("Couldn't upgrade virtual guest:", err)
}
fmt.Printf("Virtual Guest upgrade submitted. Order ID: %s\n", *receipt.OrderId)
}