Skip to content

Commit

Permalink
feat(api): api update (#25)
Browse files Browse the repository at this point in the history
  • Loading branch information
stainless-app[bot] committed Jan 22, 2025
1 parent 30ead8a commit 3ea91d7
Show file tree
Hide file tree
Showing 9 changed files with 185 additions and 227 deletions.
2 changes: 1 addition & 1 deletion .stats.yml
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
configured_endpoints: 19
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/nirvana-labs%2Fnirvana-78dacb6faebeaf3e5cbd36aae89474fb1ba31185f6042fa4790d387c12ba43fa.yml
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/nirvana-labs%2Fnirvana-bdc8de991fbbaabca059dd096a38a4fa1cb038f5c78025c47d826eb3c748afa1.yml
36 changes: 12 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,9 @@ func main() {
option.WithAuthToken("My Auth Token"), // defaults to os.LookupEnv("NIRVANA_LABS_AUTH_TOKEN")
)
operation, err := client.VMs.New(context.TODO(), vms.VMNewParams{
BootVolume: nirvana.F(vms.VMNewParamsBootVolume{
Size: nirvana.F(int64(100)),
}),
CPU: nirvana.F(vms.CPUParam{
Cores: nirvana.F(int64(2)),
}),
Expand All @@ -62,18 +65,12 @@ func main() {
Ports: nirvana.F([]string{"22", "80", "443"}),
Ram: nirvana.F(vms.RamParam{
Size: nirvana.F(int64(2)),
Unit: nirvana.F(vms.RamUnitGB),
}),
Region: nirvana.F(shared.RegionNameAmsterdam),
SourceAddress: nirvana.F("0.0.0.0/0"),
SSHKey: nirvana.F(vms.SSHKeyParam{
PublicKey: nirvana.F("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1234567890"),
}),
Storage: nirvana.F([]vms.StorageParam{{
Size: nirvana.F(int64(100)),
Type: nirvana.F(vms.StorageTypeNvme),
Unit: nirvana.F(vms.StorageUnitGB),
}}),
})
if err != nil {
panic(err.Error())
Expand Down Expand Up @@ -197,6 +194,9 @@ To handle errors, we recommend that you use the `errors.As` pattern:

```go
_, err := client.VMs.New(context.TODO(), vms.VMNewParams{
BootVolume: nirvana.F(vms.VMNewParamsBootVolume{
Size: nirvana.F(int64(100)),
}),
CPU: nirvana.F(vms.CPUParam{
Cores: nirvana.F(int64(2)),
}),
Expand All @@ -206,18 +206,12 @@ _, err := client.VMs.New(context.TODO(), vms.VMNewParams{
Ports: nirvana.F([]string{"22", "80", "443"}),
Ram: nirvana.F(vms.RamParam{
Size: nirvana.F(int64(2)),
Unit: nirvana.F(vms.RamUnitGB),
}),
Region: nirvana.F(shared.RegionNameAmsterdam),
SourceAddress: nirvana.F("0.0.0.0/0"),
SSHKey: nirvana.F(vms.SSHKeyParam{
PublicKey: nirvana.F("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1234567890"),
}),
Storage: nirvana.F([]vms.StorageParam{{
Size: nirvana.F(int64(100)),
Type: nirvana.F(vms.StorageTypeNvme),
Unit: nirvana.F(vms.StorageUnitGB),
}}),
})
if err != nil {
var apierr *nirvana.Error
Expand Down Expand Up @@ -246,6 +240,9 @@ defer cancel()
client.VMs.New(
ctx,
vms.VMNewParams{
BootVolume: nirvana.F(vms.VMNewParamsBootVolume{
Size: nirvana.F(int64(100)),
}),
CPU: nirvana.F(vms.CPUParam{
Cores: nirvana.F(int64(2)),
}),
Expand All @@ -255,18 +252,12 @@ client.VMs.New(
Ports: nirvana.F([]string{"22", "80", "443"}),
Ram: nirvana.F(vms.RamParam{
Size: nirvana.F(int64(2)),
Unit: nirvana.F(vms.RamUnitGB),
}),
Region: nirvana.F(shared.RegionNameAmsterdam),
SourceAddress: nirvana.F("0.0.0.0/0"),
SSHKey: nirvana.F(vms.SSHKeyParam{
PublicKey: nirvana.F("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1234567890"),
}),
Storage: nirvana.F([]vms.StorageParam{{
Size: nirvana.F(int64(100)),
Type: nirvana.F(vms.StorageTypeNvme),
Unit: nirvana.F(vms.StorageUnitGB),
}}),
},
// This sets the per-retry timeout
option.WithRequestTimeout(20*time.Second),
Expand Down Expand Up @@ -304,6 +295,9 @@ client := nirvana.NewClient(
client.VMs.New(
context.TODO(),
vms.VMNewParams{
BootVolume: nirvana.F(vms.VMNewParamsBootVolume{
Size: nirvana.F(int64(100)),
}),
CPU: nirvana.F(vms.CPUParam{
Cores: nirvana.F(int64(2)),
}),
Expand All @@ -313,18 +307,12 @@ client.VMs.New(
Ports: nirvana.F([]string{"22", "80", "443"}),
Ram: nirvana.F(vms.RamParam{
Size: nirvana.F(int64(2)),
Unit: nirvana.F(vms.RamUnitGB),
}),
Region: nirvana.F(shared.RegionNameAmsterdam),
SourceAddress: nirvana.F("0.0.0.0/0"),
SSHKey: nirvana.F(vms.SSHKeyParam{
PublicKey: nirvana.F("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1234567890"),
}),
Storage: nirvana.F([]vms.StorageParam{{
Size: nirvana.F(int64(100)),
Type: nirvana.F(vms.StorageTypeNvme),
Unit: nirvana.F(vms.StorageUnitGB),
}}),
},
option.WithMaxRetries(5),
)
Expand Down
17 changes: 9 additions & 8 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,12 @@ Params Types:

- <a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms">vms</a>.<a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms#CPUParam">CPUParam</a>
- <a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms">vms</a>.<a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms#RamParam">RamParam</a>
- <a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms">vms</a>.<a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms#RamUnit">RamUnit</a>
- <a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms">vms</a>.<a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms#SSHKeyParam">SSHKeyParam</a>
- <a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms">vms</a>.<a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms#StorageParam">StorageParam</a>
- <a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms">vms</a>.<a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms#StorageType">StorageType</a>
- <a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms">vms</a>.<a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms#StorageUnit">StorageUnit</a>

Response Types:

- <a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms">vms</a>.<a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms#CPU">CPU</a>
- <a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms">vms</a>.<a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms#Ram">Ram</a>
- <a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms">vms</a>.<a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms#RamUnit">RamUnit</a>
- <a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms">vms</a>.<a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms#Storage">Storage</a>
- <a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms">vms</a>.<a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms#StorageType">StorageType</a>
- <a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms">vms</a>.<a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms#StorageUnit">StorageUnit</a>
- <a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms">vms</a>.<a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms#VM">VM</a>
- <a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms">vms</a>.<a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/vms#VMListResponse">VMListResponse</a>

Expand Down Expand Up @@ -97,6 +89,15 @@ Methods:

# Volumes

Params Types:

- <a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/volumes">volumes</a>.<a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/volumes#StorageType">StorageType</a>

Response Types:

- <a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/volumes">volumes</a>.<a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/volumes#StorageType">StorageType</a>
- <a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/volumes">volumes</a>.<a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/volumes#Volume">Volume</a>

Methods:

- <code title="post /vms/{vm_id}/volumes">client.Volumes.<a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/volumes#VolumeService.New">New</a>(ctx <a href="https://pkg.go.dev/context">context</a>.<a href="https://pkg.go.dev/context#Context">Context</a>, vmID <a href="https://pkg.go.dev/builtin#string">string</a>, body <a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/volumes">volumes</a>.<a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/volumes#VolumeNewParams">VolumeNewParams</a>) (<a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/shared">shared</a>.<a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/shared#Operation">Operation</a>, <a href="https://pkg.go.dev/builtin#error">error</a>)</code>
Expand Down
72 changes: 24 additions & 48 deletions client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,9 @@ func TestUserAgentHeader(t *testing.T) {
}),
)
client.VMs.New(context.Background(), vms.VMNewParams{
BootVolume: nirvana.F(vms.VMNewParamsBootVolume{
Size: nirvana.F(int64(100)),
}),
CPU: nirvana.F(vms.CPUParam{
Cores: nirvana.F(int64(2)),
}),
Expand All @@ -49,18 +52,12 @@ func TestUserAgentHeader(t *testing.T) {
Ports: nirvana.F([]string{"22", "80", "443"}),
Ram: nirvana.F(vms.RamParam{
Size: nirvana.F(int64(2)),
Unit: nirvana.F(vms.RamUnitGB),
}),
Region: nirvana.F(shared.RegionNameAmsterdam),
SourceAddress: nirvana.F("0.0.0.0/0"),
SSHKey: nirvana.F(vms.SSHKeyParam{
PublicKey: nirvana.F("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1234567890"),
}),
Storage: nirvana.F([]vms.StorageParam{{
Size: nirvana.F(int64(100)),
Type: nirvana.F(vms.StorageTypeNvme),
Unit: nirvana.F(vms.StorageUnitGB),
}}),
})
if userAgent != fmt.Sprintf("NirvanaLabs/Go %s", internal.PackageVersion) {
t.Errorf("Expected User-Agent to be correct, but got: %#v", userAgent)
Expand All @@ -85,6 +82,9 @@ func TestRetryAfter(t *testing.T) {
}),
)
res, err := client.VMs.New(context.Background(), vms.VMNewParams{
BootVolume: nirvana.F(vms.VMNewParamsBootVolume{
Size: nirvana.F(int64(100)),
}),
CPU: nirvana.F(vms.CPUParam{
Cores: nirvana.F(int64(2)),
}),
Expand All @@ -94,18 +94,12 @@ func TestRetryAfter(t *testing.T) {
Ports: nirvana.F([]string{"22", "80", "443"}),
Ram: nirvana.F(vms.RamParam{
Size: nirvana.F(int64(2)),
Unit: nirvana.F(vms.RamUnitGB),
}),
Region: nirvana.F(shared.RegionNameAmsterdam),
SourceAddress: nirvana.F("0.0.0.0/0"),
SSHKey: nirvana.F(vms.SSHKeyParam{
PublicKey: nirvana.F("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1234567890"),
}),
Storage: nirvana.F([]vms.StorageParam{{
Size: nirvana.F(int64(100)),
Type: nirvana.F(vms.StorageTypeNvme),
Unit: nirvana.F(vms.StorageUnitGB),
}}),
})
if err == nil || res != nil {
t.Error("Expected there to be a cancel error and for the response to be nil")
Expand Down Expand Up @@ -141,6 +135,9 @@ func TestDeleteRetryCountHeader(t *testing.T) {
option.WithHeaderDel("X-Stainless-Retry-Count"),
)
res, err := client.VMs.New(context.Background(), vms.VMNewParams{
BootVolume: nirvana.F(vms.VMNewParamsBootVolume{
Size: nirvana.F(int64(100)),
}),
CPU: nirvana.F(vms.CPUParam{
Cores: nirvana.F(int64(2)),
}),
Expand All @@ -150,18 +147,12 @@ func TestDeleteRetryCountHeader(t *testing.T) {
Ports: nirvana.F([]string{"22", "80", "443"}),
Ram: nirvana.F(vms.RamParam{
Size: nirvana.F(int64(2)),
Unit: nirvana.F(vms.RamUnitGB),
}),
Region: nirvana.F(shared.RegionNameAmsterdam),
SourceAddress: nirvana.F("0.0.0.0/0"),
SSHKey: nirvana.F(vms.SSHKeyParam{
PublicKey: nirvana.F("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1234567890"),
}),
Storage: nirvana.F([]vms.StorageParam{{
Size: nirvana.F(int64(100)),
Type: nirvana.F(vms.StorageTypeNvme),
Unit: nirvana.F(vms.StorageUnitGB),
}}),
})
if err == nil || res != nil {
t.Error("Expected there to be a cancel error and for the response to be nil")
Expand Down Expand Up @@ -192,6 +183,9 @@ func TestOverwriteRetryCountHeader(t *testing.T) {
option.WithHeader("X-Stainless-Retry-Count", "42"),
)
res, err := client.VMs.New(context.Background(), vms.VMNewParams{
BootVolume: nirvana.F(vms.VMNewParamsBootVolume{
Size: nirvana.F(int64(100)),
}),
CPU: nirvana.F(vms.CPUParam{
Cores: nirvana.F(int64(2)),
}),
Expand All @@ -201,18 +195,12 @@ func TestOverwriteRetryCountHeader(t *testing.T) {
Ports: nirvana.F([]string{"22", "80", "443"}),
Ram: nirvana.F(vms.RamParam{
Size: nirvana.F(int64(2)),
Unit: nirvana.F(vms.RamUnitGB),
}),
Region: nirvana.F(shared.RegionNameAmsterdam),
SourceAddress: nirvana.F("0.0.0.0/0"),
SSHKey: nirvana.F(vms.SSHKeyParam{
PublicKey: nirvana.F("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1234567890"),
}),
Storage: nirvana.F([]vms.StorageParam{{
Size: nirvana.F(int64(100)),
Type: nirvana.F(vms.StorageTypeNvme),
Unit: nirvana.F(vms.StorageUnitGB),
}}),
})
if err == nil || res != nil {
t.Error("Expected there to be a cancel error and for the response to be nil")
Expand Down Expand Up @@ -242,6 +230,9 @@ func TestRetryAfterMs(t *testing.T) {
}),
)
res, err := client.VMs.New(context.Background(), vms.VMNewParams{
BootVolume: nirvana.F(vms.VMNewParamsBootVolume{
Size: nirvana.F(int64(100)),
}),
CPU: nirvana.F(vms.CPUParam{
Cores: nirvana.F(int64(2)),
}),
Expand All @@ -251,18 +242,12 @@ func TestRetryAfterMs(t *testing.T) {
Ports: nirvana.F([]string{"22", "80", "443"}),
Ram: nirvana.F(vms.RamParam{
Size: nirvana.F(int64(2)),
Unit: nirvana.F(vms.RamUnitGB),
}),
Region: nirvana.F(shared.RegionNameAmsterdam),
SourceAddress: nirvana.F("0.0.0.0/0"),
SSHKey: nirvana.F(vms.SSHKeyParam{
PublicKey: nirvana.F("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1234567890"),
}),
Storage: nirvana.F([]vms.StorageParam{{
Size: nirvana.F(int64(100)),
Type: nirvana.F(vms.StorageTypeNvme),
Unit: nirvana.F(vms.StorageUnitGB),
}}),
})
if err == nil || res != nil {
t.Error("Expected there to be a cancel error and for the response to be nil")
Expand All @@ -286,6 +271,9 @@ func TestContextCancel(t *testing.T) {
cancelCtx, cancel := context.WithCancel(context.Background())
cancel()
res, err := client.VMs.New(cancelCtx, vms.VMNewParams{
BootVolume: nirvana.F(vms.VMNewParamsBootVolume{
Size: nirvana.F(int64(100)),
}),
CPU: nirvana.F(vms.CPUParam{
Cores: nirvana.F(int64(2)),
}),
Expand All @@ -295,18 +283,12 @@ func TestContextCancel(t *testing.T) {
Ports: nirvana.F([]string{"22", "80", "443"}),
Ram: nirvana.F(vms.RamParam{
Size: nirvana.F(int64(2)),
Unit: nirvana.F(vms.RamUnitGB),
}),
Region: nirvana.F(shared.RegionNameAmsterdam),
SourceAddress: nirvana.F("0.0.0.0/0"),
SSHKey: nirvana.F(vms.SSHKeyParam{
PublicKey: nirvana.F("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1234567890"),
}),
Storage: nirvana.F([]vms.StorageParam{{
Size: nirvana.F(int64(100)),
Type: nirvana.F(vms.StorageTypeNvme),
Unit: nirvana.F(vms.StorageUnitGB),
}}),
})
if err == nil || res != nil {
t.Error("Expected there to be a cancel error and for the response to be nil")
Expand All @@ -327,6 +309,9 @@ func TestContextCancelDelay(t *testing.T) {
cancelCtx, cancel := context.WithTimeout(context.Background(), 2*time.Millisecond)
defer cancel()
res, err := client.VMs.New(cancelCtx, vms.VMNewParams{
BootVolume: nirvana.F(vms.VMNewParamsBootVolume{
Size: nirvana.F(int64(100)),
}),
CPU: nirvana.F(vms.CPUParam{
Cores: nirvana.F(int64(2)),
}),
Expand All @@ -336,18 +321,12 @@ func TestContextCancelDelay(t *testing.T) {
Ports: nirvana.F([]string{"22", "80", "443"}),
Ram: nirvana.F(vms.RamParam{
Size: nirvana.F(int64(2)),
Unit: nirvana.F(vms.RamUnitGB),
}),
Region: nirvana.F(shared.RegionNameAmsterdam),
SourceAddress: nirvana.F("0.0.0.0/0"),
SSHKey: nirvana.F(vms.SSHKeyParam{
PublicKey: nirvana.F("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1234567890"),
}),
Storage: nirvana.F([]vms.StorageParam{{
Size: nirvana.F(int64(100)),
Type: nirvana.F(vms.StorageTypeNvme),
Unit: nirvana.F(vms.StorageUnitGB),
}}),
})
if err == nil || res != nil {
t.Error("expected there to be a cancel error and for the response to be nil")
Expand All @@ -374,6 +353,9 @@ func TestContextDeadline(t *testing.T) {
}),
)
res, err := client.VMs.New(deadlineCtx, vms.VMNewParams{
BootVolume: nirvana.F(vms.VMNewParamsBootVolume{
Size: nirvana.F(int64(100)),
}),
CPU: nirvana.F(vms.CPUParam{
Cores: nirvana.F(int64(2)),
}),
Expand All @@ -383,18 +365,12 @@ func TestContextDeadline(t *testing.T) {
Ports: nirvana.F([]string{"22", "80", "443"}),
Ram: nirvana.F(vms.RamParam{
Size: nirvana.F(int64(2)),
Unit: nirvana.F(vms.RamUnitGB),
}),
Region: nirvana.F(shared.RegionNameAmsterdam),
SourceAddress: nirvana.F("0.0.0.0/0"),
SSHKey: nirvana.F(vms.SSHKeyParam{
PublicKey: nirvana.F("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC1234567890"),
}),
Storage: nirvana.F([]vms.StorageParam{{
Size: nirvana.F(int64(100)),
Type: nirvana.F(vms.StorageTypeNvme),
Unit: nirvana.F(vms.StorageUnitGB),
}}),
})
if err == nil || res != nil {
t.Error("expected there to be a deadline error and for the response to be nil")
Expand Down
Loading

0 comments on commit 3ea91d7

Please sign in to comment.