GoNA SDK
GoNA is the official Go SDK for the NetActuate API. It provides a typed Go client for managing virtual servers, locations, images, and other NetActuate resources programmatically.
Installation
go get github.com/netactuate/gona
Authentication
Initialize the client with your API key:
package main
import (
"github.com/netactuate/gona"
)
func main() {
client := gona.NewClient("YOUR_API_KEY")
}
Usage Examples
List Locations
locations, err := client.Locations.List()
if err != nil {
log.Fatal(err)
}
for _, loc := range locations {
fmt.Printf("ID: %s, Name: %s\n", loc.ID, loc.Name)
}
List Available Plans
plans, err := client.Sizes.List()
if err != nil {
log.Fatal(err)
}
for _, plan := range plans {
fmt.Printf("Plan: %s, RAM: %d MB, CPU: %d, Disk: %d GB\n",
plan.Name, plan.RAM, plan.CPU, plan.Disk)
}
List OS Images
images, err := client.Images.List()
if err != nil {
log.Fatal(err)
}
for _, img := range images {
fmt.Printf("ID: %s, Name: %s\n", img.ID, img.Name)
}
Create a Virtual Server
server, err := client.Servers.Create(&gona.ServerCreateRequest{
Plan: "VR2048x2x40",
Location: "ashburn",
Image: "ubuntu-24.04",
Hostname: "my-server",
SSHKey: "my-key-id",
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("Server ID: %d, IP: %s\n", server.ID, server.IP)
Get Server Details
server, err := client.Servers.Get(12345)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Status: %s, Plan: %s\n", server.Status, server.Plan)
Resize a Server
err := client.Servers.Resize(12345, "VR4096x2x60")
if err != nil {
log.Fatal(err)
}
Delete a Server
err := client.Servers.Delete(12345)
if err != nil {
log.Fatal(err)
}
Error Handling
The SDK returns typed errors that you can inspect:
server, err := client.Servers.Get(99999)
if err != nil {
if gona.IsNotFound(err) {
fmt.Println("Server not found")
} else {
log.Fatal(err)
}
}
Resources
Need Help?
If you have questions about the GoNA SDK, visit our support page.