diff --git a/.stats.yml b/.stats.yml index b9a817c..53aaa4e 100644 --- a/.stats.yml +++ b/.stats.yml @@ -1,2 +1,2 @@ -configured_endpoints: 19 -openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/nirvana-labs%2Fnirvana-6aab21baffe1788ef3489dedfb817e9425a87edc3955e0b9cf720cca4302d7a3.yml +configured_endpoints: 20 +openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/nirvana-labs%2Fnirvana-2b25d79eca57a37c23952533aa8514885103b3c8af056890c68291262b0c5d5c.yml diff --git a/api.md b/api.md index e72e6d1..afcb9ec 100644 --- a/api.md +++ b/api.md @@ -18,6 +18,7 @@ Params Types: Response Types: - vms.CPU +- vms.OsImage - vms.Ram - vms.VM - vms.VMList @@ -32,6 +33,10 @@ Methods: ## OsImages +Methods: + +- client.VMs.OsImages.List(ctx context.Context) ([]vms.OsImage, error) + # VPCs Response Types: diff --git a/vms/osimage.go b/vms/osimage.go index 7ab1852..20575d7 100644 --- a/vms/osimage.go +++ b/vms/osimage.go @@ -3,6 +3,10 @@ package vms import ( + "context" + "net/http" + + "github.com/nirvana-labs/nirvana-go/internal/requestconfig" "github.com/nirvana-labs/nirvana-go/option" ) @@ -24,3 +28,11 @@ func NewOsImageService(opts ...option.RequestOption) (r *OsImageService) { r.Options = opts return } + +// List all OS Images +func (r *OsImageService) List(ctx context.Context, opts ...option.RequestOption) (res *[]OsImage, err error) { + opts = append(r.Options[:], opts...) + path := "vms/os_images" + err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...) + return +} diff --git a/vms/osimage_test.go b/vms/osimage_test.go new file mode 100644 index 0000000..1ec89f9 --- /dev/null +++ b/vms/osimage_test.go @@ -0,0 +1,36 @@ +// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. + +package vms_test + +import ( + "context" + "errors" + "os" + "testing" + + "github.com/nirvana-labs/nirvana-go" + "github.com/nirvana-labs/nirvana-go/internal/testutil" + "github.com/nirvana-labs/nirvana-go/option" +) + +func TestOsImageList(t *testing.T) { + baseURL := "http://localhost:4010" + if envURL, ok := os.LookupEnv("TEST_API_BASE_URL"); ok { + baseURL = envURL + } + if !testutil.CheckTestServer(t, baseURL) { + return + } + client := nirvana.NewClient( + option.WithBaseURL(baseURL), + option.WithAuthToken("My Auth Token"), + ) + _, err := client.VMs.OsImages.List(context.TODO()) + if err != nil { + var apierr *nirvana.Error + if errors.As(err, &apierr) { + t.Log(string(apierr.DumpRequest(true))) + } + t.Fatalf("err should be nil: %s", err.Error()) + } +} diff --git a/vms/vm.go b/vms/vm.go index bcb5270..1bf94af 100644 --- a/vms/vm.go +++ b/vms/vm.go @@ -121,6 +121,30 @@ func (r CPUParam) MarshalJSON() (data []byte, err error) { return apijson.MarshalRoot(r) } +type OsImage struct { + CreatedAt string `json:"created_at,required"` + DisplayName string `json:"display_name,required"` + Name string `json:"name,required"` + JSON osImageJSON `json:"-"` +} + +// osImageJSON contains the JSON metadata for the struct [OsImage] +type osImageJSON struct { + CreatedAt apijson.Field + DisplayName apijson.Field + Name apijson.Field + raw string + ExtraFields map[string]apijson.Field +} + +func (r *OsImage) UnmarshalJSON(data []byte) (err error) { + return apijson.UnmarshalRoot(data, r) +} + +func (r osImageJSON) RawJSON() string { + return r.raw +} + // RAM details. type Ram struct { // RAM size