Skip to content

Commit

Permalink
feat(api): api update (#57)
Browse files Browse the repository at this point in the history
  • Loading branch information
stainless-app[bot] committed Jan 27, 2025
1 parent 65af2e1 commit 3a5fb4d
Show file tree
Hide file tree
Showing 27 changed files with 331 additions and 901 deletions.
41 changes: 20 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,30 +45,29 @@ import (
"github.com/nirvana-labs/nirvana-go"
"github.com/nirvana-labs/nirvana-go/option"
"github.com/nirvana-labs/nirvana-go/shared"
"github.com/nirvana-labs/nirvana-go/vms"
)

func main() {
client := nirvana.NewClient(
option.WithAuthToken("My Auth Token"), // defaults to os.LookupEnv("NIRVANA_LABS_AUTH_TOKEN")
)
operation, err := client.Compute.VMs.New(context.TODO(), vms.VMNewParams{
BootVolume: nirvana.F(vms.VMNewParamsBootVolume{
operation, err := client.Compute.VMs.New(context.TODO(), nirvana.ComputeVMNewParams{
BootVolume: nirvana.F(nirvana.ComputeVMNewParamsBootVolume{
Size: nirvana.F(int64(100)),
}),
CPU: nirvana.F(vms.CPUParam{
CPU: nirvana.F(nirvana.CPUParam{
Cores: nirvana.F(int64(2)),
}),
Name: nirvana.F("my-vm"),
NeedPublicIP: nirvana.F(true),
OSImageName: nirvana.F("noble-2024-12-06"),
Ports: nirvana.F([]string{"22", "80", "443"}),
Ram: nirvana.F(vms.RamParam{
Ram: nirvana.F(nirvana.RamParam{
Size: nirvana.F(int64(2)),
}),
Region: nirvana.F(shared.RegionNameAmsterdam),
SourceAddress: nirvana.F("0.0.0.0/0"),
SSHKey: nirvana.F(vms.SSHKeyParam{
SSHKey: nirvana.F(nirvana.SSHKeyParam{
PublicKey: nirvana.F("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1234567890"),
}),
})
Expand Down Expand Up @@ -193,23 +192,23 @@ When the API returns a non-success status code, we return an error with type
To handle errors, we recommend that you use the `errors.As` pattern:

```go
_, err := client.Compute.VMs.New(context.TODO(), vms.VMNewParams{
BootVolume: nirvana.F(vms.VMNewParamsBootVolume{
_, err := client.Compute.VMs.New(context.TODO(), nirvana.ComputeVMNewParams{
BootVolume: nirvana.F(nirvana.ComputeVMNewParamsBootVolume{
Size: nirvana.F(int64(100)),
}),
CPU: nirvana.F(vms.CPUParam{
CPU: nirvana.F(nirvana.CPUParam{
Cores: nirvana.F(int64(2)),
}),
Name: nirvana.F("my-vm"),
NeedPublicIP: nirvana.F(true),
OSImageName: nirvana.F("noble-2024-12-06"),
Ports: nirvana.F([]string{"22", "80", "443"}),
Ram: nirvana.F(vms.RamParam{
Ram: nirvana.F(nirvana.RamParam{
Size: nirvana.F(int64(2)),
}),
Region: nirvana.F(shared.RegionNameAmsterdam),
SourceAddress: nirvana.F("0.0.0.0/0"),
SSHKey: nirvana.F(vms.SSHKeyParam{
SSHKey: nirvana.F(nirvana.SSHKeyParam{
PublicKey: nirvana.F("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1234567890"),
}),
})
Expand Down Expand Up @@ -239,23 +238,23 @@ ctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute)
defer cancel()
client.Compute.VMs.New(
ctx,
vms.VMNewParams{
BootVolume: nirvana.F(vms.VMNewParamsBootVolume{
nirvana.ComputeVMNewParams{
BootVolume: nirvana.F(nirvana.ComputeVMNewParamsBootVolume{
Size: nirvana.F(int64(100)),
}),
CPU: nirvana.F(vms.CPUParam{
CPU: nirvana.F(nirvana.CPUParam{
Cores: nirvana.F(int64(2)),
}),
Name: nirvana.F("my-vm"),
NeedPublicIP: nirvana.F(true),
OSImageName: nirvana.F("noble-2024-12-06"),
Ports: nirvana.F([]string{"22", "80", "443"}),
Ram: nirvana.F(vms.RamParam{
Ram: nirvana.F(nirvana.RamParam{
Size: nirvana.F(int64(2)),
}),
Region: nirvana.F(shared.RegionNameAmsterdam),
SourceAddress: nirvana.F("0.0.0.0/0"),
SSHKey: nirvana.F(vms.SSHKeyParam{
SSHKey: nirvana.F(nirvana.SSHKeyParam{
PublicKey: nirvana.F("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1234567890"),
}),
},
Expand Down Expand Up @@ -294,23 +293,23 @@ client := nirvana.NewClient(
// Override per-request:
client.Compute.VMs.New(
context.TODO(),
vms.VMNewParams{
BootVolume: nirvana.F(vms.VMNewParamsBootVolume{
nirvana.ComputeVMNewParams{
BootVolume: nirvana.F(nirvana.ComputeVMNewParamsBootVolume{
Size: nirvana.F(int64(100)),
}),
CPU: nirvana.F(vms.CPUParam{
CPU: nirvana.F(nirvana.CPUParam{
Cores: nirvana.F(int64(2)),
}),
Name: nirvana.F("my-vm"),
NeedPublicIP: nirvana.F(true),
OSImageName: nirvana.F("noble-2024-12-06"),
Ports: nirvana.F([]string{"22", "80", "443"}),
Ram: nirvana.F(vms.RamParam{
Ram: nirvana.F(nirvana.RamParam{
Size: nirvana.F(int64(2)),
}),
Region: nirvana.F(shared.RegionNameAmsterdam),
SourceAddress: nirvana.F("0.0.0.0/0"),
SSHKey: nirvana.F(vms.SSHKeyParam{
SSHKey: nirvana.F(nirvana.SSHKeyParam{
PublicKey: nirvana.F("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1234567890"),
}),
},
Expand Down
86 changes: 43 additions & 43 deletions api.md

Large diffs are not rendered by default.

15 changes: 6 additions & 9 deletions client.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,7 @@ import (
"net/http"
"os"

"github.com/nirvana-labs/nirvana-go/compute"
"github.com/nirvana-labs/nirvana-go/internal/requestconfig"
"github.com/nirvana-labs/nirvana-go/networking"
"github.com/nirvana-labs/nirvana-go/operations"
"github.com/nirvana-labs/nirvana-go/option"
)

Expand All @@ -19,9 +16,9 @@ import (
// directly, and instead use the [NewClient] method instead.
type Client struct {
Options []option.RequestOption
Operations *operations.OperationService
Compute *compute.ComputeService
Networking *networking.NetworkingService
Operations *OperationService
Compute *ComputeService
Networking *NetworkingService
}

// NewClient generates a new client with the default option read from the
Expand All @@ -37,9 +34,9 @@ func NewClient(opts ...option.RequestOption) (r *Client) {

r = &Client{Options: opts}

r.Operations = operations.NewOperationService(opts...)
r.Compute = compute.NewComputeService(opts...)
r.Networking = networking.NewNetworkingService(opts...)
r.Operations = NewOperationService(opts...)
r.Compute = NewComputeService(opts...)
r.Networking = NewNetworkingService(opts...)

return
}
Expand Down
81 changes: 40 additions & 41 deletions client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import (
"github.com/nirvana-labs/nirvana-go/internal"
"github.com/nirvana-labs/nirvana-go/option"
"github.com/nirvana-labs/nirvana-go/shared"
"github.com/nirvana-labs/nirvana-go/vms"
)

type closureTransport struct {
Expand All @@ -39,23 +38,23 @@ func TestUserAgentHeader(t *testing.T) {
},
}),
)
client.Compute.VMs.New(context.Background(), vms.VMNewParams{
BootVolume: nirvana.F(vms.VMNewParamsBootVolume{
client.Compute.VMs.New(context.Background(), nirvana.ComputeVMNewParams{
BootVolume: nirvana.F(nirvana.ComputeVMNewParamsBootVolume{
Size: nirvana.F(int64(100)),
}),
CPU: nirvana.F(vms.CPUParam{
CPU: nirvana.F(nirvana.CPUParam{
Cores: nirvana.F(int64(2)),
}),
Name: nirvana.F("my-vm"),
NeedPublicIP: nirvana.F(true),
OSImageName: nirvana.F("noble-2024-12-06"),
Ports: nirvana.F([]string{"22", "80", "443"}),
Ram: nirvana.F(vms.RamParam{
Ram: nirvana.F(nirvana.RamParam{
Size: nirvana.F(int64(2)),
}),
Region: nirvana.F(shared.RegionNameAmsterdam),
SourceAddress: nirvana.F("0.0.0.0/0"),
SSHKey: nirvana.F(vms.SSHKeyParam{
SSHKey: nirvana.F(nirvana.SSHKeyParam{
PublicKey: nirvana.F("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1234567890"),
}),
})
Expand All @@ -81,23 +80,23 @@ func TestRetryAfter(t *testing.T) {
},
}),
)
res, err := client.Compute.VMs.New(context.Background(), vms.VMNewParams{
BootVolume: nirvana.F(vms.VMNewParamsBootVolume{
res, err := client.Compute.VMs.New(context.Background(), nirvana.ComputeVMNewParams{
BootVolume: nirvana.F(nirvana.ComputeVMNewParamsBootVolume{
Size: nirvana.F(int64(100)),
}),
CPU: nirvana.F(vms.CPUParam{
CPU: nirvana.F(nirvana.CPUParam{
Cores: nirvana.F(int64(2)),
}),
Name: nirvana.F("my-vm"),
NeedPublicIP: nirvana.F(true),
OSImageName: nirvana.F("noble-2024-12-06"),
Ports: nirvana.F([]string{"22", "80", "443"}),
Ram: nirvana.F(vms.RamParam{
Ram: nirvana.F(nirvana.RamParam{
Size: nirvana.F(int64(2)),
}),
Region: nirvana.F(shared.RegionNameAmsterdam),
SourceAddress: nirvana.F("0.0.0.0/0"),
SSHKey: nirvana.F(vms.SSHKeyParam{
SSHKey: nirvana.F(nirvana.SSHKeyParam{
PublicKey: nirvana.F("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1234567890"),
}),
})
Expand Down Expand Up @@ -134,23 +133,23 @@ func TestDeleteRetryCountHeader(t *testing.T) {
}),
option.WithHeaderDel("X-Stainless-Retry-Count"),
)
res, err := client.Compute.VMs.New(context.Background(), vms.VMNewParams{
BootVolume: nirvana.F(vms.VMNewParamsBootVolume{
res, err := client.Compute.VMs.New(context.Background(), nirvana.ComputeVMNewParams{
BootVolume: nirvana.F(nirvana.ComputeVMNewParamsBootVolume{
Size: nirvana.F(int64(100)),
}),
CPU: nirvana.F(vms.CPUParam{
CPU: nirvana.F(nirvana.CPUParam{
Cores: nirvana.F(int64(2)),
}),
Name: nirvana.F("my-vm"),
NeedPublicIP: nirvana.F(true),
OSImageName: nirvana.F("noble-2024-12-06"),
Ports: nirvana.F([]string{"22", "80", "443"}),
Ram: nirvana.F(vms.RamParam{
Ram: nirvana.F(nirvana.RamParam{
Size: nirvana.F(int64(2)),
}),
Region: nirvana.F(shared.RegionNameAmsterdam),
SourceAddress: nirvana.F("0.0.0.0/0"),
SSHKey: nirvana.F(vms.SSHKeyParam{
SSHKey: nirvana.F(nirvana.SSHKeyParam{
PublicKey: nirvana.F("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1234567890"),
}),
})
Expand Down Expand Up @@ -182,23 +181,23 @@ func TestOverwriteRetryCountHeader(t *testing.T) {
}),
option.WithHeader("X-Stainless-Retry-Count", "42"),
)
res, err := client.Compute.VMs.New(context.Background(), vms.VMNewParams{
BootVolume: nirvana.F(vms.VMNewParamsBootVolume{
res, err := client.Compute.VMs.New(context.Background(), nirvana.ComputeVMNewParams{
BootVolume: nirvana.F(nirvana.ComputeVMNewParamsBootVolume{
Size: nirvana.F(int64(100)),
}),
CPU: nirvana.F(vms.CPUParam{
CPU: nirvana.F(nirvana.CPUParam{
Cores: nirvana.F(int64(2)),
}),
Name: nirvana.F("my-vm"),
NeedPublicIP: nirvana.F(true),
OSImageName: nirvana.F("noble-2024-12-06"),
Ports: nirvana.F([]string{"22", "80", "443"}),
Ram: nirvana.F(vms.RamParam{
Ram: nirvana.F(nirvana.RamParam{
Size: nirvana.F(int64(2)),
}),
Region: nirvana.F(shared.RegionNameAmsterdam),
SourceAddress: nirvana.F("0.0.0.0/0"),
SSHKey: nirvana.F(vms.SSHKeyParam{
SSHKey: nirvana.F(nirvana.SSHKeyParam{
PublicKey: nirvana.F("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1234567890"),
}),
})
Expand Down Expand Up @@ -229,23 +228,23 @@ func TestRetryAfterMs(t *testing.T) {
},
}),
)
res, err := client.Compute.VMs.New(context.Background(), vms.VMNewParams{
BootVolume: nirvana.F(vms.VMNewParamsBootVolume{
res, err := client.Compute.VMs.New(context.Background(), nirvana.ComputeVMNewParams{
BootVolume: nirvana.F(nirvana.ComputeVMNewParamsBootVolume{
Size: nirvana.F(int64(100)),
}),
CPU: nirvana.F(vms.CPUParam{
CPU: nirvana.F(nirvana.CPUParam{
Cores: nirvana.F(int64(2)),
}),
Name: nirvana.F("my-vm"),
NeedPublicIP: nirvana.F(true),
OSImageName: nirvana.F("noble-2024-12-06"),
Ports: nirvana.F([]string{"22", "80", "443"}),
Ram: nirvana.F(vms.RamParam{
Ram: nirvana.F(nirvana.RamParam{
Size: nirvana.F(int64(2)),
}),
Region: nirvana.F(shared.RegionNameAmsterdam),
SourceAddress: nirvana.F("0.0.0.0/0"),
SSHKey: nirvana.F(vms.SSHKeyParam{
SSHKey: nirvana.F(nirvana.SSHKeyParam{
PublicKey: nirvana.F("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1234567890"),
}),
})
Expand All @@ -270,23 +269,23 @@ func TestContextCancel(t *testing.T) {
)
cancelCtx, cancel := context.WithCancel(context.Background())
cancel()
res, err := client.Compute.VMs.New(cancelCtx, vms.VMNewParams{
BootVolume: nirvana.F(vms.VMNewParamsBootVolume{
res, err := client.Compute.VMs.New(cancelCtx, nirvana.ComputeVMNewParams{
BootVolume: nirvana.F(nirvana.ComputeVMNewParamsBootVolume{
Size: nirvana.F(int64(100)),
}),
CPU: nirvana.F(vms.CPUParam{
CPU: nirvana.F(nirvana.CPUParam{
Cores: nirvana.F(int64(2)),
}),
Name: nirvana.F("my-vm"),
NeedPublicIP: nirvana.F(true),
OSImageName: nirvana.F("noble-2024-12-06"),
Ports: nirvana.F([]string{"22", "80", "443"}),
Ram: nirvana.F(vms.RamParam{
Ram: nirvana.F(nirvana.RamParam{
Size: nirvana.F(int64(2)),
}),
Region: nirvana.F(shared.RegionNameAmsterdam),
SourceAddress: nirvana.F("0.0.0.0/0"),
SSHKey: nirvana.F(vms.SSHKeyParam{
SSHKey: nirvana.F(nirvana.SSHKeyParam{
PublicKey: nirvana.F("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1234567890"),
}),
})
Expand All @@ -308,23 +307,23 @@ func TestContextCancelDelay(t *testing.T) {
)
cancelCtx, cancel := context.WithTimeout(context.Background(), 2*time.Millisecond)
defer cancel()
res, err := client.Compute.VMs.New(cancelCtx, vms.VMNewParams{
BootVolume: nirvana.F(vms.VMNewParamsBootVolume{
res, err := client.Compute.VMs.New(cancelCtx, nirvana.ComputeVMNewParams{
BootVolume: nirvana.F(nirvana.ComputeVMNewParamsBootVolume{
Size: nirvana.F(int64(100)),
}),
CPU: nirvana.F(vms.CPUParam{
CPU: nirvana.F(nirvana.CPUParam{
Cores: nirvana.F(int64(2)),
}),
Name: nirvana.F("my-vm"),
NeedPublicIP: nirvana.F(true),
OSImageName: nirvana.F("noble-2024-12-06"),
Ports: nirvana.F([]string{"22", "80", "443"}),
Ram: nirvana.F(vms.RamParam{
Ram: nirvana.F(nirvana.RamParam{
Size: nirvana.F(int64(2)),
}),
Region: nirvana.F(shared.RegionNameAmsterdam),
SourceAddress: nirvana.F("0.0.0.0/0"),
SSHKey: nirvana.F(vms.SSHKeyParam{
SSHKey: nirvana.F(nirvana.SSHKeyParam{
PublicKey: nirvana.F("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1234567890"),
}),
})
Expand Down Expand Up @@ -352,23 +351,23 @@ func TestContextDeadline(t *testing.T) {
},
}),
)
res, err := client.Compute.VMs.New(deadlineCtx, vms.VMNewParams{
BootVolume: nirvana.F(vms.VMNewParamsBootVolume{
res, err := client.Compute.VMs.New(deadlineCtx, nirvana.ComputeVMNewParams{
BootVolume: nirvana.F(nirvana.ComputeVMNewParamsBootVolume{
Size: nirvana.F(int64(100)),
}),
CPU: nirvana.F(vms.CPUParam{
CPU: nirvana.F(nirvana.CPUParam{
Cores: nirvana.F(int64(2)),
}),
Name: nirvana.F("my-vm"),
NeedPublicIP: nirvana.F(true),
OSImageName: nirvana.F("noble-2024-12-06"),
Ports: nirvana.F([]string{"22", "80", "443"}),
Ram: nirvana.F(vms.RamParam{
Ram: nirvana.F(nirvana.RamParam{
Size: nirvana.F(int64(2)),
}),
Region: nirvana.F(shared.RegionNameAmsterdam),
SourceAddress: nirvana.F("0.0.0.0/0"),
SSHKey: nirvana.F(vms.SSHKeyParam{
SSHKey: nirvana.F(nirvana.SSHKeyParam{
PublicKey: nirvana.F("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1234567890"),
}),
})
Expand Down
Loading

0 comments on commit 3a5fb4d

Please sign in to comment.