Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(api): api update #25

Merged
merged 1 commit into from
Jan 22, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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