Skip to main content

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.