From b666789c7d80932fd8ddd5638e34ea486092bffe Mon Sep 17 00:00:00 2001 From: Sergey Kisil Date: Mon, 23 Oct 2023 12:40:54 +0300 Subject: [PATCH] v1.6.6 --- CHANGELOG.md | 13 ++++--- README.md | 50 ++++++++++++++++++++++++ pkg/cloudapi/account/get.go | 32 +++++++++------- pkg/cloudapi/account/list.go | 16 +++++--- pkg/cloudapi/bservice/get.go | 30 +++++++++------ pkg/cloudapi/bservice/list.go | 16 +++++--- pkg/cloudapi/compute/get.go | 30 +++++++++------ pkg/cloudapi/compute/list.go | 14 +++++-- pkg/cloudapi/disks/get.go | 31 +++++++++------ pkg/cloudapi/disks/list.go | 16 +++++--- pkg/cloudapi/extnet/get.go | 30 +++++++++------ pkg/cloudapi/extnet/list.go | 16 +++++--- pkg/cloudapi/flipgroup/get.go | 30 +++++++++------ pkg/cloudapi/flipgroup/list.go | 20 ++++++---- pkg/cloudapi/image/get.go | 31 +++++++++------ pkg/cloudapi/image/list.go | 16 +++++--- pkg/cloudapi/k8ci/get.go | 30 +++++++++------ pkg/cloudapi/k8ci/list.go | 16 +++++--- pkg/cloudapi/k8s/get.go | 30 +++++++++------ pkg/cloudapi/k8s/list.go | 16 +++++--- pkg/cloudapi/lb/get.go | 30 +++++++++------ pkg/cloudapi/lb/list.go | 16 +++++--- pkg/cloudapi/locations/list.go | 16 +++++--- pkg/cloudapi/rg/get.go | 30 +++++++++------ pkg/cloudapi/rg/list.go | 16 +++++--- pkg/cloudapi/sizes/list.go | 16 +++++--- pkg/cloudapi/stack/get.go | 30 +++++++++------ pkg/cloudapi/stack/list.go | 16 +++++--- pkg/cloudapi/tasks/get.go | 30 +++++++++------ pkg/cloudapi/tasks/list.go | 16 +++++--- pkg/cloudapi/vins/get.go | 29 ++++++++------ pkg/cloudapi/vins/list.go | 16 +++++--- pkg/cloudbroker/account/get.go | 30 +++++++++------ pkg/cloudbroker/account/list.go | 16 +++++--- pkg/cloudbroker/account/models.go | 35 ++--------------- pkg/cloudbroker/apiaccess/get.go | 30 +++++++++------ pkg/cloudbroker/apiaccess/list.go | 30 +++++++++------ pkg/cloudbroker/compute/get.go | 30 +++++++++------ pkg/cloudbroker/compute/list.go | 16 +++++--- pkg/cloudbroker/compute/models.go | 2 +- pkg/cloudbroker/disks/get.go | 31 +++++++++------ pkg/cloudbroker/disks/list.go | 16 +++++--- pkg/cloudbroker/extnet/get.go | 30 +++++++++------ pkg/cloudbroker/extnet/list.go | 16 +++++--- pkg/cloudbroker/extnet/models.go | 63 +++++++++++++++++++++++++++++-- pkg/cloudbroker/flipgroup/get.go | 30 +++++++++------ pkg/cloudbroker/flipgroup/list.go | 20 ++++++---- pkg/cloudbroker/grid/get.go | 30 +++++++++------ pkg/cloudbroker/grid/list.go | 16 +++++--- pkg/cloudbroker/group/get.go | 30 +++++++++------ pkg/cloudbroker/group/list.go | 29 ++++++++------ pkg/cloudbroker/image/get.go | 30 +++++++++------ pkg/cloudbroker/image/list.go | 16 +++++--- pkg/cloudbroker/k8ci/get.go | 30 +++++++++------ pkg/cloudbroker/k8ci/list.go | 16 +++++--- pkg/cloudbroker/k8s/get.go | 30 +++++++++------ pkg/cloudbroker/k8s/list.go | 17 ++++++--- pkg/cloudbroker/lb/get.go | 30 +++++++++------ pkg/cloudbroker/lb/list.go | 15 +++++--- pkg/cloudbroker/pcidevice/list.go | 15 ++++++-- pkg/cloudbroker/rg/get.go | 30 +++++++++------ pkg/cloudbroker/rg/list.go | 16 +++++--- pkg/cloudbroker/sep/get.go | 30 +++++++++------ pkg/cloudbroker/sep/list.go | 16 +++++--- pkg/cloudbroker/stack/get.go | 30 +++++++++------ pkg/cloudbroker/stack/list.go | 16 +++++--- pkg/cloudbroker/tasks/get.go | 30 +++++++++------ pkg/cloudbroker/tasks/list.go | 16 +++++--- pkg/cloudbroker/user/get.go | 30 +++++++++------ pkg/cloudbroker/user/list.go | 30 +++++++++------ pkg/cloudbroker/vgpu/list.go | 16 +++++--- pkg/cloudbroker/vins/get.go | 30 +++++++++------ pkg/cloudbroker/vins/list.go | 16 +++++--- 73 files changed, 1121 insertions(+), 628 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6571ce4..2e38182 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,10 @@ -## Version 1.6.5 +## Version 1.6.6 + +## Bugfix +- Fixed model RecordExtNet in cloudbroker/extnet/models for correct work of get request +- Fixed json tags in ItemResourceConsumption model and delete extra model Consumed in cloudbroker/account/models +- Fixed statelessSepId field type from uint64 to int64 in cloudbroker/compute/models for correct work of list request ## Feature -- Add field and type LibvirtDaemon in model Packages in cloudbroker/stack/models -- Add field and type Packages in model ItemListStacks in cloudbroker/image/models. Add fields and type LibvirtBin, LibvirtDaemon, Lvm2Lockd, OpenvswitchCommon, OpenvswitchSwitch, QemuSystemX86, Sanlock -- Add filter ByGID in cloudbroker/grid/filters -- Add field userData in models WorkersGroupAddRequest in cloudapi/k8s and cloudbroker/k8s \ No newline at end of file +- Added GetRaw and ListRaw methods that give response as an array of bytes for cloudAPI groups: account, compute, k8s, disks, rg, bservice, disks,extnet, flipgroup, image, k8ci, lb, locations(list), sizes(list), stack, tasks, vins +- Added GetRaw and ListRaw methods that give response as an array of bytes for cloudbroker groups: account, apiaccess, compute, disks, extnet, flipgroup, grid, group, image, k8ci, k8s, lb, rg, sep, stack, tasks, user, vgpu, vins \ No newline at end of file diff --git a/README.md b/README.md index 7f4857d..d27675d 100644 --- a/README.md +++ b/README.md @@ -527,6 +527,56 @@ func main() { } ``` +Для запросов Get и List реализованы запросы GetRaw и ListRaw, которые возвращают ответ не в виде соответствующей структуры, а в виде массива байт (JSON). +Выполнение таких запросов происходит аналогично. + +#### Пример выполнения GetRaw и ListRaw запросов + +```go +package main + +import ( + "log" + "fmt" + + "repository.basistech.ru/BASIS/decort-golang-sdk/config" + decort "repository.basistech.ru/BASIS/decort-golang-sdk" + "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/account" +) + +func main() { + // Настройка конфигурации + cfg := config.Config{ + AppID: "", + AppSecret: "", + SSOURL: "https://sso.digitalenergy.online", + DecortURL: "https://mr4.digitalenergy.online", + Retries: 5, + } + + // Создание клиента + client := decort.New(cfg) + + // 1. Создание структуры запроса GetRequest на создание аккаунта и выполнение GetRaw запроса с помощью конвейера + req1 := account.GetRequest{ + AccountID: 123, + } + res1, err := client.CloudAPI().Account().GetRaw(context.Background(), req1) + if err != nil { + log.Fatal(err) + } + fmt.Println(string(res1)) + + // 2. Создание структуры запроса ListRequest на получение аккаунтов и выполнение ListRaw запроса с помощью конвейера + req2 := account.ListRequest{} + res2, err := client.CloudAPI().Account().ListRaw(context.Background(), req2) + if err != nil { + log.Fatal(err) + } + fmt.Println(string(res2)) +} +``` + ### Фильтрация Для каждого `ListRequest` в SDK есть группа функций для фильтрации ответа платформы. Для того чтобы произвести фильтрацию по заданным полям, достаточно описать анонимную функцию (предикат) в `.FilterFunc()`, например: diff --git a/pkg/cloudapi/account/get.go b/pkg/cloudapi/account/get.go index f5612aa..6910824 100644 --- a/pkg/cloudapi/account/get.go +++ b/pkg/cloudapi/account/get.go @@ -8,25 +8,16 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for get information about account +// GetRequest struct to get information about account type GetRequest struct { // ID an account // Required: true - AccountID uint64 `url:"accountId" json:"accountId" validate:"required"` + AccountID uint64 `url:"accountId" json:"accountId" validate:"required"` } -// Get gets account details +// Get gets account details as a RecordAccount struct func (a Account) Get(ctx context.Context, req GetRequest) (*RecordAccount, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudapi/account/get" - - res, err := a.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := a.GetRaw(ctx, req) if err != nil { return nil, err } @@ -41,3 +32,18 @@ func (a Account) Get(ctx context.Context, req GetRequest) (*RecordAccount, error return &info, nil } + +// GetRaw gets account details as an array of bytes +func (a Account) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudapi/account/get" + + res, err := a.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudapi/account/list.go b/pkg/cloudapi/account/list.go index 82c02e7..2d5bff9 100644 --- a/pkg/cloudapi/account/list.go +++ b/pkg/cloudapi/account/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list of accounts +// ListRequest struct to get list of accounts type ListRequest struct { // Find by ID // Required: false @@ -33,11 +33,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list all accounts the user has access to +// List gets a list of all accounts the user has access to a ListAccounts struct func (a Account) List(ctx context.Context, req ListRequest) (*ListAccounts, error) { - url := "/cloudapi/account/list" - - res, err := a.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := a.ListRaw(ctx, req) if err != nil { return nil, err } @@ -51,3 +49,11 @@ func (a Account) List(ctx context.Context, req ListRequest) (*ListAccounts, erro return &list, nil } + +// ListRaw gets a list of all accounts the user has access to as an array of bytes +func (a Account) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudapi/account/list" + + res, err := a.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudapi/bservice/get.go b/pkg/cloudapi/bservice/get.go index 55e827a..69e4ea6 100644 --- a/pkg/cloudapi/bservice/get.go +++ b/pkg/cloudapi/bservice/get.go @@ -8,35 +8,41 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for get detailed information about service +// GetRequest struct to get detailed information about service type GetRequest struct { // ID of the service to query information // Required: true ServiceID uint64 `url:"serviceId" json:"serviceId" validate:"required"` } -// Get gets detailed specifications for the BasicService. +// Get gets detailed specifications for the BasicService as a RecordBasicService struct func (b BService) Get(ctx context.Context, req GetRequest) (*RecordBasicService, error) { - err := validators.ValidateRequest(req) + res, err := b.GetRaw(ctx, req) if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } + return nil, err } - url := "/cloudapi/bservice/get" + info := RecordBasicService{} - bsRaw, err := b.client.DecortApiCall(ctx, http.MethodPost, url, req) + err = json.Unmarshal(res, &info) if err != nil { return nil, err } - info := RecordBasicService{} + return &info, nil +} - err = json.Unmarshal(bsRaw, &info) +// GetRaw gets detailed specifications for the BasicService as an array of bytes +func (b BService) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) if err != nil { - return nil, err + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } } - return &info, nil + url := "/cloudapi/bservice/get" + + res, err := b.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err } diff --git a/pkg/cloudapi/bservice/list.go b/pkg/cloudapi/bservice/list.go index f768d6f..b100579 100644 --- a/pkg/cloudapi/bservice/list.go +++ b/pkg/cloudapi/bservice/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list BasicService instances +// ListRequest struct to get list of BasicService instances type ListRequest struct { // Find by ID // Required: false @@ -49,11 +49,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list BasicService instances associated with the specified Resource Group +// List gets list of BasicService instances associated with the specified Resource Group as a ListBasicServices struct func (b BService) List(ctx context.Context, req ListRequest) (*ListBasicServices, error) { - url := "/cloudapi/bservice/list" - - res, err := b.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := b.ListRaw(ctx, req) if err != nil { return nil, err } @@ -67,3 +65,11 @@ func (b BService) List(ctx context.Context, req ListRequest) (*ListBasicServices return &list, nil } + +// ListRaw gets list of BasicService instances associated with the specified Resource Group as an array of bytes +func (b BService) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudapi/bservice/list" + + res, err := b.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudapi/compute/get.go b/pkg/cloudapi/compute/get.go index 8839aad..cf0777c 100644 --- a/pkg/cloudapi/compute/get.go +++ b/pkg/cloudapi/compute/get.go @@ -8,25 +8,16 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request for get information about compute +// GetRequest struct to get information about compute type GetRequest struct { // ID of compute instance // Required: true ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"` } -// Get Gets information about compute +// Get gets information about compute as a RecordCompute struct func (c Compute) Get(ctx context.Context, req GetRequest) (*RecordCompute, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudapi/compute/get" - - res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := c.GetRaw(ctx, req) if err != nil { return nil, err } @@ -40,3 +31,18 @@ func (c Compute) Get(ctx context.Context, req GetRequest) (*RecordCompute, error return &info, nil } + +// GetRaw gets information about compute as an array of bytes +func (c Compute) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudapi/compute/get" + + res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudapi/compute/list.go b/pkg/cloudapi/compute/list.go index b86f3bd..d3860a1 100644 --- a/pkg/cloudapi/compute/list.go +++ b/pkg/cloudapi/compute/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list available computes +// ListRequest struct to get list of available computes type ListRequest struct { // Find by ID // Required: false @@ -64,9 +64,7 @@ type ListRequest struct { // List gets list of the available computes. // Filtering based on status is possible func (c Compute) List(ctx context.Context, req ListRequest) (*ListComputes, error) { - url := "/cloudapi/compute/list" - - res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := c.ListRaw(ctx, req) if err != nil { return nil, err } @@ -80,3 +78,11 @@ func (c Compute) List(ctx context.Context, req ListRequest) (*ListComputes, erro return &list, nil } + +// ListRaw gets list of the available computes. +func (c Compute) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudapi/compute/list" + + res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudapi/disks/get.go b/pkg/cloudapi/disks/get.go index 622175e..94706c2 100644 --- a/pkg/cloudapi/disks/get.go +++ b/pkg/cloudapi/disks/get.go @@ -8,26 +8,17 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for get information about disk +// GetRequest struct to get information about disk type GetRequest struct { // ID of the disk // Required: true DiskID uint64 `url:"diskId" json:"diskId" validate:"required"` } -// Get gets disk details +// Get gets disk details as a RecordDisk struct // Notice: the devicename field is the name as it is passed to the kernel (kname in linux) for unattached disks this field has no relevant value func (d Disks) Get(ctx context.Context, req GetRequest) (*RecordDisk, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudapi/disks/get" - - res, err := d.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := d.GetRaw(ctx, req) if err != nil { return nil, err } @@ -41,3 +32,19 @@ func (d Disks) Get(ctx context.Context, req GetRequest) (*RecordDisk, error) { return &info, nil } + +// GetRaw gets disk details as an array of bytes +// Notice: the devicename field is the name as it is passed to the kernel (kname in linux) for unattached disks this field has no relevant value +func (d Disks) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudapi/disks/get" + + res, err := d.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudapi/disks/list.go b/pkg/cloudapi/disks/list.go index b2baf7d..7c28588 100644 --- a/pkg/cloudapi/disks/list.go +++ b/pkg/cloudapi/disks/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list of disks +// ListRequest struct to get list of disks type ListRequest struct { // Find by id // Required: false @@ -57,11 +57,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list the created disks belonging to an account +// List gets list of the created disks belonging to an account as a ListDisks struct func (d Disks) List(ctx context.Context, req ListRequest) (*ListDisks, error) { - url := "/cloudapi/disks/list" - - res, err := d.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := d.ListRaw(ctx, req) if err != nil { return nil, err } @@ -75,3 +73,11 @@ func (d Disks) List(ctx context.Context, req ListRequest) (*ListDisks, error) { return &list, nil } + +// ListRaw gets list of the created disks belonging to an account as an array of bytes +func (d Disks) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudapi/disks/list" + + res, err := d.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudapi/extnet/get.go b/pkg/cloudapi/extnet/get.go index 4da9d71..a9bc232 100644 --- a/pkg/cloudapi/extnet/get.go +++ b/pkg/cloudapi/extnet/get.go @@ -8,25 +8,16 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for get detailed information about external network +// GetRequest struct to get detailed information about external network type GetRequest struct { // ID of external network // Required: true NetID uint64 `url:"net_id" json:"net_id" validate:"required"` } -// Get gets detailed information about external network +// Get gets detailed information about external network as a RecordExtNet struct func (e ExtNet) Get(ctx context.Context, req GetRequest) (*RecordExtNet, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudapi/extnet/get" - - res, err := e.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := e.GetRaw(ctx, req) if err != nil { return nil, err } @@ -40,3 +31,18 @@ func (e ExtNet) Get(ctx context.Context, req GetRequest) (*RecordExtNet, error) return &info, nil } + +// GetRaw gets detailed information about external network as an array of bytes +func (e ExtNet) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudapi/extnet/get" + + res, err := e.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudapi/extnet/list.go b/pkg/cloudapi/extnet/list.go index 9a1a905..a0fb060 100644 --- a/pkg/cloudapi/extnet/list.go +++ b/pkg/cloudapi/extnet/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list external network +// ListRequest struct to get list of external network type ListRequest struct { // Find by account ID // Required: false @@ -45,11 +45,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list all available external networks +// List gets list of all available external networks as a ListExtNets struct func (e ExtNet) List(ctx context.Context, req ListRequest) (*ListExtNets, error) { - url := "/cloudapi/extnet/list" - - res, err := e.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := e.ListRaw(ctx, req) if err != nil { return nil, err } @@ -63,3 +61,11 @@ func (e ExtNet) List(ctx context.Context, req ListRequest) (*ListExtNets, error) return &list, nil } + +// ListRaw gets list of all available external networks as an array of bytes +func (e ExtNet) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudapi/extnet/list" + + res, err := e.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudapi/flipgroup/get.go b/pkg/cloudapi/flipgroup/get.go index 616c5b9..d259962 100644 --- a/pkg/cloudapi/flipgroup/get.go +++ b/pkg/cloudapi/flipgroup/get.go @@ -8,25 +8,16 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for get information about FLIPGroup +// GetRequest struct to get information about FLIPGroup type GetRequest struct { // FLIPGroup ID // Required: true FLIPGroupID uint64 `url:"flipgroupId" json:"flipgroupId" validate:"required"` } -// Get gets details of the specified Floating IP group +// Get gets details of the specified Floating IP group as a RecordFLIPGroup struct func (f FLIPGroup) Get(ctx context.Context, req GetRequest) (*RecordFLIPGroup, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudapi/flipgroup/get" - - res, err := f.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := f.GetRaw(ctx, req) if err != nil { return nil, err } @@ -40,3 +31,18 @@ func (f FLIPGroup) Get(ctx context.Context, req GetRequest) (*RecordFLIPGroup, e return &info, nil } + +// GetRaw gets details of the specified Floating IP group as an array of bytes +func (f FLIPGroup) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudapi/flipgroup/get" + + res, err := f.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudapi/flipgroup/list.go b/pkg/cloudapi/flipgroup/list.go index bc9ae0b..7c755d4 100644 --- a/pkg/cloudapi/flipgroup/list.go +++ b/pkg/cloudapi/flipgroup/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list FLIPGroup available to the current user +// ListRequest struct to get list of FLIPGroup available to the current user type ListRequest struct { // Find by name // Required: false @@ -25,11 +25,11 @@ type ListRequest struct { ExtNetID uint64 `url:"extnetId,omitempty" json:"extnetId,omitempty"` // Find by IP - // Reuqired: false + // Required: false ByIP string `url:"byIp,omitempty" json:"byIp,omitempty"` // Find by resource group ID - // Reuqired: false + // Required: false RGID uint64 `url:"rgId,omitempty" json:"rgId,omitempty"` // Find by id @@ -45,11 +45,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list FLIPGroup managed cluster instances available to the current user +// List gets list of FLIPGroup managed cluster instances available to the current user as a ListFLIPGroups struct func (f FLIPGroup) List(ctx context.Context, req ListRequest) (*ListFLIPGroups, error) { - url := "/cloudapi/flipgroup/list" - - res, err := f.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := f.ListRaw(ctx, req) if err != nil { return nil, err } @@ -63,3 +61,11 @@ func (f FLIPGroup) List(ctx context.Context, req ListRequest) (*ListFLIPGroups, return &list, nil } + +// ListRaw gets list of FLIPGroup managed cluster instances available to the current user as an array of bytes +func (f FLIPGroup) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudapi/flipgroup/list" + + res, err := f.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudapi/image/get.go b/pkg/cloudapi/image/get.go index 63024d7..263129b 100644 --- a/pkg/cloudapi/image/get.go +++ b/pkg/cloudapi/image/get.go @@ -8,7 +8,7 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for get detailed information about image +// GetRequest struct to get detailed information about image type GetRequest struct { // ID of image to get // Required: true @@ -20,18 +20,9 @@ type GetRequest struct { } // Get gets image by ID. -// Returns image if user has rights on it +// Returns image as a RecordImage struct if user has rights on it func (i Image) Get(ctx context.Context, req GetRequest) (*RecordImage, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudapi/image/get" - - res, err := i.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := i.GetRaw(ctx, req) if err != nil { return nil, err } @@ -45,3 +36,19 @@ func (i Image) Get(ctx context.Context, req GetRequest) (*RecordImage, error) { return &info, nil } + +// GetRaw gets image by ID. +// Returns image as an array of bytes if user has rights on it +func (i Image) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudapi/image/get" + + res, err := i.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudapi/image/list.go b/pkg/cloudapi/image/list.go index 5533639..b89acee 100644 --- a/pkg/cloudapi/image/list.go +++ b/pkg/cloudapi/image/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list available images +// ListRequest struct to get list of available images type ListRequest struct { // Find by storage endpoint provider ID // Required: false @@ -65,11 +65,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list available images, optionally filtering by account ID +// List gets list of available images as a ListImages struct, optionally filtering by account ID func (i Image) List(ctx context.Context, req ListRequest) (*ListImages, error) { - url := "/cloudapi/image/list" - - res, err := i.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := i.ListRaw(ctx, req) if err != nil { return nil, err } @@ -83,3 +81,11 @@ func (i Image) List(ctx context.Context, req ListRequest) (*ListImages, error) { return &list, nil } + +// ListRaw gets list of available images as an array of bytes +func (i Image) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudapi/image/list" + + res, err := i.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudapi/k8ci/get.go b/pkg/cloudapi/k8ci/get.go index a578529..1e1bcf1 100644 --- a/pkg/cloudapi/k8ci/get.go +++ b/pkg/cloudapi/k8ci/get.go @@ -8,25 +8,16 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for get information about K8CI +// GetRequest struct to get information about K8CI type GetRequest struct { // ID of the K8 catalog item to get // Required: true K8CIID uint64 `url:"k8ciId" json:"k8ciId" validate:"required"` } -// Get gets details of the specified K8 catalog item +// Get gets details of the specified K8 catalog item as a RecordK8CI struct func (k K8CI) Get(ctx context.Context, req GetRequest) (*RecordK8CI, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudapi/k8ci/get" - - res, err := k.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := k.GetRaw(ctx, req) if err != nil { return nil, err } @@ -39,3 +30,18 @@ func (k K8CI) Get(ctx context.Context, req GetRequest) (*RecordK8CI, error) { return &info, nil } + +// GetRaw gets details of the specified K8 catalog item as an array of bytes +func (k K8CI) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudapi/k8ci/get" + + res, err := k.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudapi/k8ci/list.go b/pkg/cloudapi/k8ci/list.go index 7e22e75..e437fe8 100644 --- a/pkg/cloudapi/k8ci/list.go +++ b/pkg/cloudapi/k8ci/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list information about images +// ListRequest struct to get list of information about images type ListRequest struct { // Find by ID // Required: false @@ -45,11 +45,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list all k8ci catalog items available to the current user +// List gets list of all k8ci catalog items available to the current user as a ListK8CI struct func (k K8CI) List(ctx context.Context, req ListRequest) (*ListK8CI, error) { - url := "/cloudapi/k8ci/list" - - res, err := k.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := k.ListRaw(ctx, req) if err != nil { return nil, err } @@ -63,3 +61,11 @@ func (k K8CI) List(ctx context.Context, req ListRequest) (*ListK8CI, error) { return &list, nil } + +// ListRaw gets list of all k8ci catalog items available to the current user as an array of bytes +func (k K8CI) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudapi/k8ci/list" + + res, err := k.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudapi/k8s/get.go b/pkg/cloudapi/k8s/get.go index 6545b3c..01e6e1a 100644 --- a/pkg/cloudapi/k8s/get.go +++ b/pkg/cloudapi/k8s/get.go @@ -8,25 +8,16 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for get detailed information about kubernetes cluster +// GetRequest struct to get detailed information about kubernetes cluster type GetRequest struct { // Kubernetes cluster ID // Required: true K8SID uint64 `url:"k8sId" json:"k8sId" validate:"required"` } -// Get gets information about Kubernetes cluster +// Get gets information about Kubernetes cluster as a RecordK8S struct func (k8s K8S) Get(ctx context.Context, req GetRequest) (*RecordK8S, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudapi/k8s/get" - - res, err := k8s.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := k8s.GetRaw(ctx, req) if err != nil { return nil, err } @@ -40,3 +31,18 @@ func (k8s K8S) Get(ctx context.Context, req GetRequest) (*RecordK8S, error) { return &info, nil } + +// GetRaw gets information about Kubernetes cluster as an array of bytes +func (k8s K8S) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudapi/k8s/get" + + res, err := k8s.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudapi/k8s/list.go b/pkg/cloudapi/k8s/list.go index e24171d..da307e8 100644 --- a/pkg/cloudapi/k8s/list.go +++ b/pkg/cloudapi/k8s/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list information K8S +// ListRequest struct to get list information K8S type ListRequest struct { // Find by ID // Required: false @@ -53,11 +53,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list all kubernetes clusters the user has access to +// List gets list of all kubernetes clusters the user has access to as a ListK8SClusters func (k8s K8S) List(ctx context.Context, req ListRequest) (*ListK8SClusters, error) { - url := "/cloudapi/k8s/list" - - res, err := k8s.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := k8s.ListRaw(ctx, req) if err != nil { return nil, err } @@ -71,3 +69,11 @@ func (k8s K8S) List(ctx context.Context, req ListRequest) (*ListK8SClusters, err return &list, nil } + +// ListRaw gets list of all kubernetes clusters the user has access to as an array of bytes +func (k8s K8S) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudapi/k8s/list" + + res, err := k8s.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudapi/lb/get.go b/pkg/cloudapi/lb/get.go index 34366c4..983958f 100644 --- a/pkg/cloudapi/lb/get.go +++ b/pkg/cloudapi/lb/get.go @@ -8,25 +8,16 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for get detailed information about load balancer +// GetRequest struct to get detailed information about load balancer type GetRequest struct { // ID of the load balancer to get details for // Required: true LBID uint64 `url:"lbId" json:"lbId" validate:"required"` } -// Get gets detailed information about load balancer +// Get gets detailed information about load balancer as a RecordLB struct func (l LB) Get(ctx context.Context, req GetRequest) (*RecordLB, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudapi/lb/get" - - res, err := l.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := l.GetRaw(ctx, req) if err != nil { return nil, err } @@ -40,3 +31,18 @@ func (l LB) Get(ctx context.Context, req GetRequest) (*RecordLB, error) { return &info, nil } + +// GetRaw gets detailed information about load balancer as an array of bytes +func (l LB) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudapi/lb/get" + + res, err := l.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudapi/lb/list.go b/pkg/cloudapi/lb/list.go index efcdec5..b897cf3 100644 --- a/pkg/cloudapi/lb/list.go +++ b/pkg/cloudapi/lb/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list of load balancers +// ListRequest struct to get list of load balancers type ListRequest struct { // Find by ID // Required: false @@ -53,11 +53,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list all load balancers +// List gets list of all load balancers as a ListLB struct func (l LB) List(ctx context.Context, req ListRequest) (*ListLB, error) { - url := "/cloudapi/lb/list" - - res, err := l.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := l.ListRaw(ctx, req) if err != nil { return nil, err } @@ -71,3 +69,11 @@ func (l LB) List(ctx context.Context, req ListRequest) (*ListLB, error) { return &list, nil } + +// ListRaw gets list of all load balancers as an array of bytes +func (l LB) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudapi/lb/list" + + res, err := l.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudapi/locations/list.go b/pkg/cloudapi/locations/list.go index 0ef33f7..de9b560 100644 --- a/pkg/cloudapi/locations/list.go +++ b/pkg/cloudapi/locations/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list of locations +// ListRequest struct to get list of locations type ListRequest struct { // Page number // Required: false @@ -33,11 +33,9 @@ type ListRequest struct { LocationCode string `url:"locationCode,omitempty" json:"locationCode,omitempty"` } -// List gets list all locations +// List gets list of all locations as a ListLocations struct func (l Locations) List(ctx context.Context, req ListRequest) (*ListLocations, error) { - url := "/cloudapi/locations/list" - - res, err := l.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := l.ListRaw(ctx, req) if err != nil { return nil, err } @@ -51,3 +49,11 @@ func (l Locations) List(ctx context.Context, req ListRequest) (*ListLocations, e return &list, nil } + +// ListRaw gets list of all locations as an array of bytes +func (l Locations) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudapi/locations/list" + + res, err := l.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudapi/rg/get.go b/pkg/cloudapi/rg/get.go index 98d94db..db23ec3 100644 --- a/pkg/cloudapi/rg/get.go +++ b/pkg/cloudapi/rg/get.go @@ -8,7 +8,7 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for get detailed information about resource group +// GetRequest struct to get detailed information about resource group type GetRequest struct { // Resource group ID // Required: true @@ -19,18 +19,9 @@ type GetRequest struct { Reason string `url:"reason,omitempty" json:"reason,omitempty"` } -// Get gets current configuration of the resource group +// Get gets current configuration of the resource group as a RecordResourceGroup struct func (r RG) Get(ctx context.Context, req GetRequest) (*RecordResourceGroup, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudapi/rg/get" - - res, err := r.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := r.GetRaw(ctx, req) if err != nil { return nil, err } @@ -44,3 +35,18 @@ func (r RG) Get(ctx context.Context, req GetRequest) (*RecordResourceGroup, erro return &info, nil } + +// GetRaw gets current configuration of the resource group as an array of bytes +func (r RG) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudapi/rg/get" + + res, err := r.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudapi/rg/list.go b/pkg/cloudapi/rg/list.go index 9c32467..db128d0 100644 --- a/pkg/cloudapi/rg/list.go +++ b/pkg/cloudapi/rg/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list of resource groups +// ListRequest struct to get list of resource groups type ListRequest struct { // Find by ID // Required: false @@ -53,11 +53,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list of all resource groups the user has access to +// List gets list of all resource groups the user has access to as a ListResourceGroups struct func (r RG) List(ctx context.Context, req ListRequest) (*ListResourceGroups, error) { - url := "/cloudapi/rg/list" - - res, err := r.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := r.ListRaw(ctx, req) if err != nil { return nil, err } @@ -71,3 +69,11 @@ func (r RG) List(ctx context.Context, req ListRequest) (*ListResourceGroups, err return &list, nil } + +// ListRaw gets list of all resource groups the user has access to as an array of bytes +func (r RG) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudapi/rg/list" + + res, err := r.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudapi/sizes/list.go b/pkg/cloudapi/sizes/list.go index 521c5c8..a41b0ef 100644 --- a/pkg/cloudapi/sizes/list.go +++ b/pkg/cloudapi/sizes/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for list the available flavors +// ListRequest struct for list of the available flavors type ListRequest struct { // ID of the cloudspace // Required: false @@ -25,11 +25,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list the available flavors, filtering can be based on the user which is doing the request +// List gets list of the available flavors as a ListSizes struct, filtering can be based on the user which is doing the request func (s Sizes) List(ctx context.Context, req ListRequest) (*ListSizes, error) { - url := "/cloudapi/sizes/list" - - res, err := s.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := s.ListRaw(ctx, req) if err != nil { return nil, err } @@ -43,3 +41,11 @@ func (s Sizes) List(ctx context.Context, req ListRequest) (*ListSizes, error) { return list, nil } + +// ListRaw gets list of the available flavors as an array of bytes +func (s Sizes) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudapi/sizes/list" + + res, err := s.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudapi/stack/get.go b/pkg/cloudapi/stack/get.go index 4c5d2a3..66cbd93 100644 --- a/pkg/cloudapi/stack/get.go +++ b/pkg/cloudapi/stack/get.go @@ -8,25 +8,16 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for get info of stack +// GetRequest struct to get info of stack type GetRequest struct { // Find by ID // Required: true StackId uint64 `url:"stackId" json:"stackId" validate:"required"` } -// Get stack details by ID +// Get gets stack details by ID as an InfoStack struct func (i Stack) Get(ctx context.Context, req GetRequest) (*InfoStack, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudapi/stack/get" - - res, err := i.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := i.GetRaw(ctx, req) if err != nil { return nil, err } @@ -40,3 +31,18 @@ func (i Stack) Get(ctx context.Context, req GetRequest) (*InfoStack, error) { return &info, nil } + +// GetRaw gets stack details by ID as an array of bytes +func (i Stack) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudapi/stack/get" + + res, err := i.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudapi/stack/list.go b/pkg/cloudapi/stack/list.go index a7afe75..97645fe 100644 --- a/pkg/cloudapi/stack/list.go +++ b/pkg/cloudapi/stack/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list stack +// ListRequest struct to get list of stacks type ListRequest struct { // Find by ID // Required: false @@ -33,11 +33,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// ListStacks gets list stack +// List gets list of stacks as a ListStacks struct func (i Stack) List(ctx context.Context, req ListRequest) (*ListStacks, error) { - url := "/cloudapi/stack/list" - - res, err := i.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := i.ListRaw(ctx, req) if err != nil { return nil, err } @@ -51,3 +49,11 @@ func (i Stack) List(ctx context.Context, req ListRequest) (*ListStacks, error) { return &list, nil } + +// ListRaw gets list of stacks as an array of bytes +func (i Stack) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudapi/stack/list" + + res, err := i.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudapi/tasks/get.go b/pkg/cloudapi/tasks/get.go index 49cafb1..883c7a4 100644 --- a/pkg/cloudapi/tasks/get.go +++ b/pkg/cloudapi/tasks/get.go @@ -8,25 +8,16 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for get infromation about task +// GetRequest struct to get information about task type GetRequest struct { // ID of audit // Required: true AuditID string `url:"auditId" json:"auditId" validate:"required"` } -// Get gets background API task status and result +// Get gets background API task status and result as a RecordAsyncTask struct func (t Tasks) Get(ctx context.Context, req GetRequest) (*RecordAsyncTask, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudapi/tasks/get" - - res, err := t.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := t.GetRaw(ctx, req) if err != nil { return nil, err } @@ -41,3 +32,18 @@ func (t Tasks) Get(ctx context.Context, req GetRequest) (*RecordAsyncTask, error return &info, nil } + +// GetRaw gets background API task status and result as an array of bytes +func (t Tasks) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudapi/tasks/get" + + res, err := t.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudapi/tasks/list.go b/pkg/cloudapi/tasks/list.go index 2088e16..dd792b0 100644 --- a/pkg/cloudapi/tasks/list.go +++ b/pkg/cloudapi/tasks/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list of tasks +// ListRequest struct to get list of tasks type ListRequest struct { // Page number // Required: false @@ -17,11 +17,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list user API tasks with status PROCESSING +// List gets list of user API tasks with status PROCESSING as a ListTasks struct func (t Tasks) List(ctx context.Context, req ListRequest) (*ListTasks, error) { - url := "/cloudapi/tasks/list" - - res, err := t.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := t.ListRaw(ctx, req) if err != nil { return nil, err } @@ -35,3 +33,11 @@ func (t Tasks) List(ctx context.Context, req ListRequest) (*ListTasks, error) { return &list, nil } + +// ListRaw gets list of user API tasks with status PROCESSING as an array of bytes +func (t Tasks) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudapi/tasks/list" + + res, err := t.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudapi/vins/get.go b/pkg/cloudapi/vins/get.go index 4d3ed3a..a7aec2a 100644 --- a/pkg/cloudapi/vins/get.go +++ b/pkg/cloudapi/vins/get.go @@ -8,25 +8,16 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for get information about VINS +// GetRequest struct to get information about VINS type GetRequest struct { // VINS ID // Required: true VINSID uint64 `url:"vinsId" json:"vinsId" validate:"required"` } -// Get gets information about VINS by ID +// Get gets information about VINS by ID as a RecordVINS struct func (v VINS) Get(ctx context.Context, req GetRequest) (*RecordVINS, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudapi/vins/get" - - res, err := v.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := v.GetRaw(ctx, req) if err != nil { return nil, err } @@ -39,5 +30,19 @@ func (v VINS) Get(ctx context.Context, req GetRequest) (*RecordVINS, error) { } return &info, nil +} +// GetRaw gets information about VINS by ID as an array of bytes +func (v VINS) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudapi/vins/get" + + res, err := v.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err } diff --git a/pkg/cloudapi/vins/list.go b/pkg/cloudapi/vins/list.go index 4632f53..81af517 100644 --- a/pkg/cloudapi/vins/list.go +++ b/pkg/cloudapi/vins/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list of VINSes +// ListRequest struct to get list of VINSes type ListRequest struct { // Find by ID // Required: false @@ -41,11 +41,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list of VINSes available for current user +// List gets list of VINSes available for current user as a ListVINS struct func (v VINS) List(ctx context.Context, req ListRequest) (*ListVINS, error) { - url := "/cloudapi/vins/list" - - res, err := v.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := v.ListRaw(ctx, req) if err != nil { return nil, err } @@ -59,3 +57,11 @@ func (v VINS) List(ctx context.Context, req ListRequest) (*ListVINS, error) { return &list, nil } + +// ListRaw gets list of VINSes available for current user as an array of bytes +func (v VINS) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudapi/vins/list" + + res, err := v.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/account/get.go b/pkg/cloudbroker/account/get.go index ce36577..9a74618 100644 --- a/pkg/cloudbroker/account/get.go +++ b/pkg/cloudbroker/account/get.go @@ -8,35 +8,41 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for get information about account +// GetRequest struct to get information about account type GetRequest struct { // ID an account // Required: true AccountID uint64 `url:"accountId" json:"accountId" validate:"required"` } -// Get gets information about account +// Get gets information about account as a RecordAccount struct func (a Account) Get(ctx context.Context, req GetRequest) (*RecordAccount, error) { - err := validators.ValidateRequest(req) + res, err := a.GetRaw(ctx, req) if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } + return nil, err } - url := "/cloudbroker/account/get" - info := RecordAccount{} - res, err := a.client.DecortApiCall(ctx, http.MethodPost, url, req) + err = json.Unmarshal(res, &info) if err != nil { return nil, err } - err = json.Unmarshal(res, &info) + return &info, nil +} + +// GetRaw gets information about account as an array of bytes +func (a Account) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) if err != nil { - return nil, err + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } } - return &info, nil + url := "/cloudbroker/account/get" + + res, err := a.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err } diff --git a/pkg/cloudbroker/account/list.go b/pkg/cloudbroker/account/list.go index e8e4918..5cb0b79 100644 --- a/pkg/cloudbroker/account/list.go +++ b/pkg/cloudbroker/account/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list of accounts +// ListRequest struct to get list of accounts type ListRequest struct { // Find by ID // Required: false @@ -33,11 +33,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list all accounts the user has access to +// List gets list of all accounts the user has access to as a ListAccounts struct func (a Account) List(ctx context.Context, req ListRequest) (*ListAccounts, error) { - url := "/cloudbroker/account/list" - - res, err := a.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := a.ListRaw(ctx, req) if err != nil { return nil, err } @@ -51,3 +49,11 @@ func (a Account) List(ctx context.Context, req ListRequest) (*ListAccounts, erro return &list, nil } + +// ListRaw gets list of all accounts the user has access to as an array of bytes +func (a Account) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudbroker/account/list" + + res, err := a.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/account/models.go b/pkg/cloudbroker/account/models.go index b7658b5..805bcf8 100644 --- a/pkg/cloudbroker/account/models.go +++ b/pkg/cloudbroker/account/models.go @@ -29,10 +29,10 @@ type RecordResourceConsumption struct { type ItemResourceConsumption struct { // Current information about resources - Current Resource `json:"Current"` + Consumed Resource `json:"consumed"` // Reserved information about resources - Reserved Resource `json:"Reserved"` + Reserved Resource `json:"reserved"` // ID of account AccountID uint64 `json:"id"` @@ -54,7 +54,7 @@ type Resource struct { DiskSize float64 `json:"disksize"` // Disk size max - DiskSizeMax uint64 `json:"disksizemax"` + DiskSizeMax float64 `json:"disksizemax"` // Number of External IPs ExtIPs int64 `json:"extips"` @@ -414,33 +414,6 @@ type Computes struct { Stopped uint64 `json:"Stopped"` } -// Consumed -type Consumed struct { - // Number of CPU - CPU uint64 `json:"cpu"` - - // Disk size - DiskSize float64 `json:"disksize"` - - // Disk size max - DiskSizeMax int64 `json:"disksizemax"` - - // External IPs - ExtIPs uint64 `json:"extips"` - - // External traffic - ExtTraffic uint64 `json:"exttraffic"` - - // Number of GPU - GPU uint64 `json:"gpu"` - - // Number of RAM - RAM uint64 `json:"ram"` - - // SEPs - SEPs map[string]map[string]DiskUsage `json:"seps"` -} - // Limits type Limits struct { // Number of CPU @@ -471,7 +444,7 @@ type Limits struct { // Resources of resource group type RGResuorces struct { // Consumed - Consumed Consumed `json:"Consumed"` + Consumed Resource `json:"Consumed"` // Limits Limits Limits `json:"Limits"` diff --git a/pkg/cloudbroker/apiaccess/get.go b/pkg/cloudbroker/apiaccess/get.go index eed0a1a..cf5c48c 100644 --- a/pkg/cloudbroker/apiaccess/get.go +++ b/pkg/cloudbroker/apiaccess/get.go @@ -8,35 +8,41 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for getting apiaccess group. +// GetRequest struct to get apiaccess group. type GetRequest struct { // APIAccess group ID. // Required: true APIAccessID uint64 `url:"apiaccessId" json:"apiaccessId" validate:"required"` } -// Get gets apiaccess group. +// Get gets apiaccess group as an ItemAPIAccess struct func (a APIAccess) Get(ctx context.Context, req GetRequest) (*ItemAPIAccess, error) { - err := validators.ValidateRequest(req) + res, err := a.GetRaw(ctx, req) if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } + return nil, err } - url := "/cloudbroker/apiaccess/get" - info := ItemAPIAccess{} - res, err := a.client.DecortApiCall(ctx, http.MethodPost, url, req) + err = json.Unmarshal(res, &info) if err != nil { return nil, err } - err = json.Unmarshal(res, &info) + return &info, nil +} + +// GetRaw gets apiaccess group as an array of bytes +func (a APIAccess) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) if err != nil { - return nil, err + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } } - return &info, nil + url := "/cloudbroker/apiaccess/get" + + res, err := a.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err } diff --git a/pkg/cloudbroker/apiaccess/list.go b/pkg/cloudbroker/apiaccess/list.go index 1795fbb..1128d12 100644 --- a/pkg/cloudbroker/apiaccess/list.go +++ b/pkg/cloudbroker/apiaccess/list.go @@ -8,7 +8,7 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for getting list of all non deleted apiaccess instances. +// ListRequest struct to get list of all non deleted apiaccess instances. type ListRequest struct { // Find by ID // Required: false @@ -43,28 +43,34 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list of all non deleted apiaccess instances. +// List gets list of all non deleted apiaccess instances as a ListAPIAccess struct func (a APIAccess) List(ctx context.Context, req ListRequest) (*ListAPIAccess, error) { - err := validators.ValidateRequest(req) + res, err := a.ListRaw(ctx, req) if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } + return nil, err } - url := "/cloudbroker/apiaccess/list" - info := ListAPIAccess{} - res, err := a.client.DecortApiCall(ctx, http.MethodPost, url, req) + err = json.Unmarshal(res, &info) if err != nil { return nil, err } - err = json.Unmarshal(res, &info) + return &info, nil +} + +// ListRaw gets list of all non deleted apiaccess instances as an array of bytes +func (a APIAccess) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + err := validators.ValidateRequest(req) if err != nil { - return nil, err + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } } - return &info, nil + url := "/cloudbroker/apiaccess/list" + + res, err := a.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err } diff --git a/pkg/cloudbroker/compute/get.go b/pkg/cloudbroker/compute/get.go index 6fbdca0..51a3c32 100644 --- a/pkg/cloudbroker/compute/get.go +++ b/pkg/cloudbroker/compute/get.go @@ -8,7 +8,7 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request for get information about compute +// GetRequest to get information about compute type GetRequest struct { // ID of compute instance // Required: true @@ -19,18 +19,9 @@ type GetRequest struct { Reason string `url:"reason,omitempty" json:"reason,omitempty"` } -// Get gets information about compute +// Get gets information about compute as a RecordCompute struct func (c Compute) Get(ctx context.Context, req GetRequest) (*RecordCompute, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudbroker/compute/get" - - res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := c.GetRaw(ctx, req) if err != nil { return nil, err } @@ -44,3 +35,18 @@ func (c Compute) Get(ctx context.Context, req GetRequest) (*RecordCompute, error return &info, nil } + +// GetRaw gets information about compute as an array of bytes +func (c Compute) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudbroker/compute/get" + + res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/compute/list.go b/pkg/cloudbroker/compute/list.go index 3be186d..b8f0a2d 100644 --- a/pkg/cloudbroker/compute/list.go +++ b/pkg/cloudbroker/compute/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list available computes +// ListRequest struct to get list of available computes type ListRequest struct { // Find by ID // Required: false @@ -61,12 +61,10 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list of the available computes. +// List gets list of the available computes as a ListComputes struct. // Filtering based on status is possible func (c Compute) List(ctx context.Context, req ListRequest) (*ListComputes, error) { - url := "/cloudbroker/compute/list" - - res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := c.ListRaw(ctx, req) if err != nil { return nil, err } @@ -80,3 +78,11 @@ func (c Compute) List(ctx context.Context, req ListRequest) (*ListComputes, erro return &list, nil } + +// ListRaw gets list of the available computes as an array of bytes +func (c Compute) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudbroker/compute/list" + + res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/compute/models.go b/pkg/cloudbroker/compute/models.go index 91520b6..81bec91 100644 --- a/pkg/cloudbroker/compute/models.go +++ b/pkg/cloudbroker/compute/models.go @@ -672,7 +672,7 @@ type InfoCompute struct { StackName string `json:"stackName"` // Stateless SEP ID - StatelessSEPID uint64 `json:"statelessSepId"` + StatelessSEPID int64 `json:"statelessSepId"` // Stateless SEP Type StatelessSEPType string `json:"statelessSepType"` diff --git a/pkg/cloudbroker/disks/get.go b/pkg/cloudbroker/disks/get.go index 572e9fc..5772c52 100644 --- a/pkg/cloudbroker/disks/get.go +++ b/pkg/cloudbroker/disks/get.go @@ -8,26 +8,17 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for get information about disk +// GetRequest struct to get information about disk type GetRequest struct { // ID of the disk // Required: true DiskID uint64 `url:"diskId" json:"diskId" validate:"required"` } -// Get gets disk details +// Get gets disk details as a RecordDisk struct. // Notice: the devicename field is the name as it is passed to the kernel (kname in linux) for unattached disks this field has no relevant value func (d Disks) Get(ctx context.Context, req GetRequest) (*RecordDisk, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudbroker/disks/get" - - res, err := d.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := d.GetRaw(ctx, req) if err != nil { return nil, err } @@ -41,3 +32,19 @@ func (d Disks) Get(ctx context.Context, req GetRequest) (*RecordDisk, error) { return &info, nil } + +// GetRaw gets disk details as an array of bytes. +// Notice: the devicename field is the name as it is passed to the kernel (kname in linux) for unattached disks this field has no relevant value +func (d Disks) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudbroker/disks/get" + + res, err := d.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/disks/list.go b/pkg/cloudbroker/disks/list.go index 26e043e..2ac6bc2 100644 --- a/pkg/cloudbroker/disks/list.go +++ b/pkg/cloudbroker/disks/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list/list_deleted of disks +// ListRequest struct to get list/list_deleted of disks type ListRequest struct { // Find by id // Required: false @@ -57,11 +57,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list the created disks belonging to an account +// List gets list of the created disks belonging to an account as a ListDisks struct func (d Disks) List(ctx context.Context, req ListRequest) (*ListDisks, error) { - url := "/cloudbroker/disks/list" - - res, err := d.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := d.ListRaw(ctx, req) if err != nil { return nil, err } @@ -75,3 +73,11 @@ func (d Disks) List(ctx context.Context, req ListRequest) (*ListDisks, error) { return &list, nil } + +// ListRaw gets list of the created disks belonging to an account as an array of bytes +func (d Disks) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudbroker/disks/list" + + res, err := d.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/extnet/get.go b/pkg/cloudbroker/extnet/get.go index 5ac3c39..5b02977 100644 --- a/pkg/cloudbroker/extnet/get.go +++ b/pkg/cloudbroker/extnet/get.go @@ -8,25 +8,16 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for get information about external network +// GetRequest struct to get information about external network type GetRequest struct { // ID of external network // Required: true NetID uint64 `url:"net_id" json:"net_id" validate:"required"` } -// Get gets external network details +// Get gets external network details as a RecordExtNet struct func (e ExtNet) Get(ctx context.Context, req GetRequest) (*RecordExtNet, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudbroker/extnet/get" - - res, err := e.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := e.GetRaw(ctx, req) if err != nil { return nil, err } @@ -40,3 +31,18 @@ func (e ExtNet) Get(ctx context.Context, req GetRequest) (*RecordExtNet, error) return &info, nil } + +// GetRaw gets external network details as an array of bytes +func (e ExtNet) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudbroker/extnet/get" + + res, err := e.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/extnet/list.go b/pkg/cloudbroker/extnet/list.go index 4bd64c4..aa150cc 100644 --- a/pkg/cloudbroker/extnet/list.go +++ b/pkg/cloudbroker/extnet/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list external network +// ListRequest struct to get list of external network type ListRequest struct { // Find by account ID // Required: false @@ -45,11 +45,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list all available external networks +// List gets list of all available external networks as a ListExtNet struct func (e ExtNet) List(ctx context.Context, req ListRequest) (*ListExtNet, error) { - url := "/cloudbroker/extnet/list" - - res, err := e.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := e.ListRaw(ctx, req) if err != nil { return nil, err } @@ -63,3 +61,11 @@ func (e ExtNet) List(ctx context.Context, req ListRequest) (*ListExtNet, error) return &list, nil } + +// ListRaw gets list of all available external networks as an array of bytes +func (e ExtNet) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudbroker/extnet/list" + + res, err := e.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/extnet/models.go b/pkg/cloudbroker/extnet/models.go index c5f0830..d08a568 100644 --- a/pkg/cloudbroker/extnet/models.go +++ b/pkg/cloudbroker/extnet/models.go @@ -127,29 +127,86 @@ type ListExtNet struct { // Detailed information about external network type RecordExtNet struct { - // Main information about external network - ItemExtNet + // CKey + CKey string `json:"_ckey"` + + // Meta + Meta []interface{} `json:"_meta"` - // CheckIps + // CheckIPs CheckIPs []string `json:"checkIps"` + // Default + Default bool `json:"default"` + + // Default QOS + DefaultQOS QOS `json:"defaultQos"` + + // Description + Description string `json:"desc"` + // List DNS DNS []string `json:"dns"` // List excludes Excluded ListReservations `json:"excluded"` + // Free IPs number + FreeIPs uint64 `json:"free_ips"` + // Gateway Gateway string `json:"gateway"` + // Grid ID + GID uint64 `json:"gid"` + + // GUID + GUID uint64 `json:"guid"` + + // ID + ID uint64 `json:"id"` + + // IPCIDR + IPCIDR string `json:"ipcidr"` + + // Milestones + Milestones uint64 `json:"milestones"` + + // Name + Name string `json:"name"` + // Network Network string `json:"network"` + // Network ID + NetworkID uint64 `json:"networkId"` + + // OVSBridge + OVSBridge string `json:"ovsBridge"` + + // PreReservationsNum + PreReservationsNum uint64 `json:"preReservationsNum"` + // Prefix Prefix uint64 `json:"prefix"` + // PriVNFDevID + PriVNFDevID uint64 `json:"priVnfDevId"` + // List reservations Reservations ListReservations `json:"reservations"` + + // List of shared with + SharedWith []interface{} `json:"sharedWith"` + + // Status + Status string `json:"status"` + + // VLAN ID + VLANID uint64 `json:"vlanId"` + + // VNFs + VNFs VNFs `json:"vnfs"` } // List of static routes diff --git a/pkg/cloudbroker/flipgroup/get.go b/pkg/cloudbroker/flipgroup/get.go index 78c9a3b..e9c6ac1 100644 --- a/pkg/cloudbroker/flipgroup/get.go +++ b/pkg/cloudbroker/flipgroup/get.go @@ -8,25 +8,16 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for get information about FLIPGroup +// GetRequest struct to get information about FLIPGroup type GetRequest struct { // FLIPGroup ID // Required: true FLIPGroupID uint64 `url:"flipgroupId" json:"flipgroupId" validate:"required"` } -// Get gets details of the specified Floating IP group +// Get gets details of the specified Floating IP group as a RecordFLIPGroup struct func (f FLIPGroup) Get(ctx context.Context, req GetRequest) (*RecordFLIPGroup, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudbroker/flipgroup/get" - - res, err := f.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := f.GetRaw(ctx, req) if err != nil { return nil, err } @@ -40,3 +31,18 @@ func (f FLIPGroup) Get(ctx context.Context, req GetRequest) (*RecordFLIPGroup, e return &info, nil } + +// GetRaw gets details of the specified Floating IP group as an array of bytes +func (f FLIPGroup) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudbroker/flipgroup/get" + + res, err := f.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/flipgroup/list.go b/pkg/cloudbroker/flipgroup/list.go index 57ca2b9..c91ce30 100644 --- a/pkg/cloudbroker/flipgroup/list.go +++ b/pkg/cloudbroker/flipgroup/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list FLIPGroup available to the current user +// ListRequest struct to get list of FLIPGroup available to the current user type ListRequest struct { // Find by name // Required: false @@ -25,11 +25,11 @@ type ListRequest struct { ExtNetID uint64 `url:"extnetId,omitempty" json:"extnetId,omitempty"` // Find by IP - // Reuqired: false + // Required: false ByIP string `url:"byIp,omitempty" json:"byIp,omitempty"` // Find by resource group ID - // Reuqired: false + // Required: false RGID uint64 `url:"rgId,omitempty" json:"rgId,omitempty"` // Find by id @@ -45,11 +45,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list FLIPGroup managed cluster instances available to the current user +// List gets list of FLIPGroup managed cluster instances available to the current user as a ListFLIPGroups struct func (f FLIPGroup) List(ctx context.Context, req ListRequest) (*ListFLIPGroups, error) { - url := "/cloudbroker/flipgroup/list" - - res, err := f.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := f.ListRaw(ctx, req) if err != nil { return nil, err } @@ -63,3 +61,11 @@ func (f FLIPGroup) List(ctx context.Context, req ListRequest) (*ListFLIPGroups, return &list, nil } + +// ListRaw gets list of FLIPGroup managed cluster instances available to the current user as an array of bytes +func (f FLIPGroup) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudbroker/flipgroup/list" + + res, err := f.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/grid/get.go b/pkg/cloudbroker/grid/get.go index dbc7646..b7afd8b 100644 --- a/pkg/cloudbroker/grid/get.go +++ b/pkg/cloudbroker/grid/get.go @@ -8,25 +8,16 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for get grid details +// GetRequest struct to get grid details type GetRequest struct { // Grid (platform) ID // Required: true GID uint64 `url:"gridId" json:"gridId" validate:"required"` } -// Get gets information about grid by ID +// Get gets information about grid by ID as a RecordGrid struct func (g Grid) Get(ctx context.Context, req GetRequest) (*RecordGrid, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudbroker/grid/get" - - res, err := g.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := g.GetRaw(ctx, req) if err != nil { return nil, err } @@ -40,3 +31,18 @@ func (g Grid) Get(ctx context.Context, req GetRequest) (*RecordGrid, error) { return &info, nil } + +// GetRaw gets information about grid by ID as an array of bytes +func (g Grid) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudbroker/grid/get" + + res, err := g.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/grid/list.go b/pkg/cloudbroker/grid/list.go index 1c3101d..b9ebc7c 100644 --- a/pkg/cloudbroker/grid/list.go +++ b/pkg/cloudbroker/grid/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list locations +// ListRequest struct to get list of locations type ListRequest struct { // Find by id grid // Required: false @@ -25,11 +25,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list all locations +// List gets list of all locations as a ListGrids struct func (g Grid) List(ctx context.Context, req ListRequest) (*ListGrids, error) { - url := "/cloudbroker/grid/list" - - res, err := g.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := g.ListRaw(ctx, req) if err != nil { return nil, err } @@ -43,3 +41,11 @@ func (g Grid) List(ctx context.Context, req ListRequest) (*ListGrids, error) { return &list, nil } + +// ListRaw gets list of all locations as an array of bytes +func (g Grid) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudbroker/grid/list" + + res, err := g.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/group/get.go b/pkg/cloudbroker/group/get.go index ff44bcc..5f02a08 100644 --- a/pkg/cloudbroker/group/get.go +++ b/pkg/cloudbroker/group/get.go @@ -8,25 +8,16 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Reuqest struct for getting details of the specified group. +// GetRequest struct to get details of the specified group. type GetRequest struct { // Group ID // Required: true GroupID string `url:"groupId" json:"groupId" validate:"required"` } -// Get gets details of the specified group. +// Get gets details of the specified group as an ItemGroup struct func (g Group) Get(ctx context.Context, req GetRequest) (*ItemGroup, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudbroker/group/get" - - res, err := g.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := g.GetRaw(ctx, req) if err != nil { return nil, err } @@ -40,3 +31,18 @@ func (g Group) Get(ctx context.Context, req GetRequest) (*ItemGroup, error) { return &info, nil } + +// GetRaw gets details of the specified group as an array of bytes +func (g Group) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudbroker/group/get" + + res, err := g.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/group/list.go b/pkg/cloudbroker/group/list.go index 03df64f..2da74b2 100644 --- a/pkg/cloudbroker/group/list.go +++ b/pkg/cloudbroker/group/list.go @@ -8,7 +8,7 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for getting list of group instances. +// ListRequest struct to get list of group instances. type ListRequest struct { // Find by id. // Requires: false @@ -31,17 +31,9 @@ type ListRequest struct { Active bool `url:"active" json:"active" validate:"required"` } +// List gets list of group instances as a ListGroups struct func (g Group) List(ctx context.Context, req ListRequest) (*ListGroups, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudbroker/group/list" - - res, err := g.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := g.ListRaw(ctx, req) if err != nil { return nil, err } @@ -55,3 +47,18 @@ func (g Group) List(ctx context.Context, req ListRequest) (*ListGroups, error) { return &info, nil } + +// ListRaw gets list of group instances as an array of bytes +func (g Group) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudbroker/group/list" + + res, err := g.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/image/get.go b/pkg/cloudbroker/image/get.go index 16a0560..f0c99b3 100644 --- a/pkg/cloudbroker/image/get.go +++ b/pkg/cloudbroker/image/get.go @@ -8,35 +8,41 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for get image details +// GetRequest struct to get image details type GetRequest struct { // ID of image // Required: true ImageID uint64 `url:"imageId" json:"imageId" validate:"required"` } -// Get get image details by ID +// Get gets image details by ID as a RecordImage struct func (i Image) Get(ctx context.Context, req GetRequest) (*RecordImage, error) { - err := validators.ValidateRequest(req) + res, err := i.GetRaw(ctx, req) if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } + return nil, err } - url := "/cloudbroker/image/get" - info := RecordImage{} - res, err := i.client.DecortApiCall(ctx, http.MethodPost, url, req) + err = json.Unmarshal(res, &info) if err != nil { return nil, err } - err = json.Unmarshal(res, &info) + return &info, nil +} + +// GetRaw gets image details by ID as an array of bytes +func (i Image) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) if err != nil { - return nil, err + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } } - return &info, nil + url := "/cloudbroker/image/get" + + res, err := i.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err } diff --git a/pkg/cloudbroker/image/list.go b/pkg/cloudbroker/image/list.go index 69aeadf..7c0e077 100644 --- a/pkg/cloudbroker/image/list.go +++ b/pkg/cloudbroker/image/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list available images +// ListRequest struct to get list of available images type ListRequest struct { // Filter images by storage endpoint provider ID // Required: false @@ -65,11 +65,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list of information about images +// List gets list of information about images as a ListImages struct func (i Image) List(ctx context.Context, req ListRequest) (*ListImages, error) { - url := "/cloudbroker/image/list" - - res, err := i.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := i.ListRaw(ctx, req) if err != nil { return nil, err } @@ -83,3 +81,11 @@ func (i Image) List(ctx context.Context, req ListRequest) (*ListImages, error) { return &list, nil } + +// ListRaw gets list of information about images as an array of bytes +func (i Image) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudbroker/image/list" + + res, err := i.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/k8ci/get.go b/pkg/cloudbroker/k8ci/get.go index 1e6c049..76283ee 100644 --- a/pkg/cloudbroker/k8ci/get.go +++ b/pkg/cloudbroker/k8ci/get.go @@ -8,25 +8,16 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for get information about K8CI +// GetRequest struct to get information about K8CI type GetRequest struct { // ID of the K8 catalog item to get // Required: true K8CIID uint64 `url:"k8ciId" json:"k8ciId" validate:"required"` } -// Get gets details of the specified K8 catalog item +// Get gets details of the specified K8 catalog item as a RecordK8CI struct func (k K8CI) Get(ctx context.Context, req GetRequest) (*RecordK8CI, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudbroker/k8ci/get" - - res, err := k.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := k.GetRaw(ctx, req) if err != nil { return nil, err } @@ -40,3 +31,18 @@ func (k K8CI) Get(ctx context.Context, req GetRequest) (*RecordK8CI, error) { return &item, nil } + +// GetRaw gets details of the specified K8 catalog item as an array of bytes +func (k K8CI) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudbroker/k8ci/get" + + res, err := k.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/k8ci/list.go b/pkg/cloudbroker/k8ci/list.go index 09cb4dd..9a7fe1f 100644 --- a/pkg/cloudbroker/k8ci/list.go +++ b/pkg/cloudbroker/k8ci/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list information about images +// ListRequest struct to get list information about images type ListRequest struct { // Find by ID // Required: false @@ -45,11 +45,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list all k8ci catalog items available to the current user +// List gets list of all k8ci catalog items available to the current user as a ListK8CI struct func (k K8CI) List(ctx context.Context, req ListRequest) (*ListK8CI, error) { - url := "/cloudbroker/k8ci/list" - - res, err := k.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := k.ListRaw(ctx, req) if err != nil { return nil, err } @@ -63,3 +61,11 @@ func (k K8CI) List(ctx context.Context, req ListRequest) (*ListK8CI, error) { return &list, nil } + +// ListRaw gets list of all k8ci catalog items available to the current user as an array of bytes +func (k K8CI) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudbroker/k8ci/list" + + res, err := k.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/k8s/get.go b/pkg/cloudbroker/k8s/get.go index a0a1677..b96643a 100644 --- a/pkg/cloudbroker/k8s/get.go +++ b/pkg/cloudbroker/k8s/get.go @@ -8,25 +8,16 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for get detailed information about kubernetes cluster +// GetRequest struct to get detailed information about kubernetes cluster type GetRequest struct { // Kubernetes cluster ID // Required: true K8SID uint64 `url:"k8sId" json:"k8sId" validate:"required"` } -// Get gets information about kubernetes cluster +// Get gets information about kubernetes cluster as a RecordK8S struct func (k K8S) Get(ctx context.Context, req GetRequest) (*RecordK8S, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudbroker/k8s/get" - - res, err := k.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := k.GetRaw(ctx, req) if err != nil { return nil, err } @@ -40,3 +31,18 @@ func (k K8S) Get(ctx context.Context, req GetRequest) (*RecordK8S, error) { return &info, nil } + +// GetRaw gets information about kubernetes cluster as an array of bytes +func (k K8S) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudbroker/k8s/get" + + res, err := k.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/k8s/list.go b/pkg/cloudbroker/k8s/list.go index 1d9484e..cc0682f 100644 --- a/pkg/cloudbroker/k8s/list.go +++ b/pkg/cloudbroker/k8s/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list information K8S +// ListRequest struct to get list information K8S type ListRequest struct { // Find by ID // Required: false @@ -53,12 +53,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list all kubernetes clusters +// List gets list of all kubernetes clusters as a ListK8S struct func (k K8S) List(ctx context.Context, req ListRequest) (*ListK8S, error) { - - url := "/cloudbroker/k8s/list" - - res, err := k.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := k.ListRaw(ctx, req) if err != nil { return nil, err } @@ -72,3 +69,11 @@ func (k K8S) List(ctx context.Context, req ListRequest) (*ListK8S, error) { return &list, nil } + +// ListRaw gets list of all kubernetes clusters as an array of bytes +func (k K8S) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudbroker/k8s/list" + + res, err := k.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/lb/get.go b/pkg/cloudbroker/lb/get.go index b751a56..9541b92 100644 --- a/pkg/cloudbroker/lb/get.go +++ b/pkg/cloudbroker/lb/get.go @@ -8,25 +8,16 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for get detailed information about load balancer +// GetRequest struct to get detailed information about load balancer type GetRequest struct { // ID of the load balancer to get details for // Required: true LBID uint64 `url:"lbId" json:"lbId" validate:"required"` } -// Get gets detailed information about load balancer +// Get gets detailed information about load balancer as a RecordLB struct func (lb LB) Get(ctx context.Context, req GetRequest) (*RecordLB, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudbroker/lb/get" - - res, err := lb.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := lb.GetRaw(ctx, req) if err != nil { return nil, err } @@ -40,3 +31,18 @@ func (lb LB) Get(ctx context.Context, req GetRequest) (*RecordLB, error) { return &info, nil } + +// GetRaw gets detailed information about load balancer as an array of bytes +func (lb LB) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudbroker/lb/get" + + res, err := lb.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/lb/list.go b/pkg/cloudbroker/lb/list.go index 66ba7c3..75e0f46 100644 --- a/pkg/cloudbroker/lb/list.go +++ b/pkg/cloudbroker/lb/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list of load balancers +// ListRequest struct to get list of load balancers type ListRequest struct { // Find by ID // Required: false @@ -53,11 +53,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list all load balancers +// List gets list of all load balancers as a ListLB struct func (lb LB) List(ctx context.Context, req ListRequest) (*ListLB, error) { - url := "/cloudbroker/lb/list" - - res, err := lb.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := lb.ListRaw(ctx, req) if err != nil { return nil, err } @@ -70,5 +68,12 @@ func (lb LB) List(ctx context.Context, req ListRequest) (*ListLB, error) { } return &list, nil +} +// ListRaw gets list of all load balancers as an array of bytes +func (lb LB) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudbroker/lb/list" + + res, err := lb.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err } diff --git a/pkg/cloudbroker/pcidevice/list.go b/pkg/cloudbroker/pcidevice/list.go index dabb7bf..fc7ea3c 100644 --- a/pkg/cloudbroker/pcidevice/list.go +++ b/pkg/cloudbroker/pcidevice/list.go @@ -6,6 +6,7 @@ import ( "net/http" ) +// ListRequest struct to get list of pci devices type ListRequest struct { // Find by id // Required: false @@ -36,11 +37,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list all pci devices +// List gets list of all pci devices as a ListPCIDevices struct func (p PCIDevice) List(ctx context.Context, req ListRequest) (*ListPCIDevices, error) { - url := "/cloudbroker/pcidevice/list" - - res, err := p.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := p.ListRaw(ctx, req) if err != nil { return nil, err } @@ -54,3 +53,11 @@ func (p PCIDevice) List(ctx context.Context, req ListRequest) (*ListPCIDevices, return &list, nil } + +// ListRaw gets list of all pci devices as an array of bytes +func (p PCIDevice) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudbroker/pcidevice/list" + + res, err := p.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/rg/get.go b/pkg/cloudbroker/rg/get.go index 5c9c10a..f41fbff 100644 --- a/pkg/cloudbroker/rg/get.go +++ b/pkg/cloudbroker/rg/get.go @@ -8,7 +8,7 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for get detailed information about resource group +// GetRequest struct to get detailed information about resource group type GetRequest struct { // Resource group ID // Required: true @@ -19,18 +19,9 @@ type GetRequest struct { Reason string `url:"reason,omitempty" json:"reason,omitempty"` } -// Get gets current configuration of the resource group +// Get gets current configuration of the resource group as a RecordRG struct func (r RG) Get(ctx context.Context, req GetRequest) (*RecordRG, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudbroker/rg/get" - - res, err := r.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := r.GetRaw(ctx, req) if err != nil { return nil, err } @@ -44,3 +35,18 @@ func (r RG) Get(ctx context.Context, req GetRequest) (*RecordRG, error) { return &info, nil } + +// GetRaw gets current configuration of the resource group as an array of bytes +func (r RG) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudbroker/rg/get" + + res, err := r.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/rg/list.go b/pkg/cloudbroker/rg/list.go index 183ca6b..6d6d3f6 100644 --- a/pkg/cloudbroker/rg/list.go +++ b/pkg/cloudbroker/rg/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list of resource groups +// ListRequest struct to get list of resource groups type ListRequest struct { // Find by ID // Required: false @@ -49,11 +49,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list of all resource groups the user has access to +// List gets list of all resource groups the user has access to as a ListRG struct func (r RG) List(ctx context.Context, req ListRequest) (*ListRG, error) { - url := "/cloudbroker/rg/list" - - res, err := r.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := r.ListRaw(ctx, req) if err != nil { return nil, err } @@ -67,3 +65,11 @@ func (r RG) List(ctx context.Context, req ListRequest) (*ListRG, error) { return &list, nil } + +// ListRaw gets list of all resource groups the user has access to as an array of bytes +func (r RG) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudbroker/rg/list" + + res, err := r.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/sep/get.go b/pkg/cloudbroker/sep/get.go index ea14a98..3c45a99 100644 --- a/pkg/cloudbroker/sep/get.go +++ b/pkg/cloudbroker/sep/get.go @@ -8,25 +8,16 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for get SEP parameters +// GetRequest struct to get SEP parameters type GetRequest struct { // Storage endpoint provider ID // Required: true SEPID uint64 `url:"sep_id" json:"sep_id" validate:"required"` } -// Get gets SEP parameters +// Get gets SEP parameters as a RecordSEP struct func (s SEP) Get(ctx context.Context, req GetRequest) (*RecordSEP, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudbroker/sep/get" - - res, err := s.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := s.GetRaw(ctx, req) if err != nil { return nil, err } @@ -40,3 +31,18 @@ func (s SEP) Get(ctx context.Context, req GetRequest) (*RecordSEP, error) { return &info, nil } + +// GetRaw gets SEP parameters as an array of bytes +func (s SEP) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudbroker/sep/get" + + res, err := s.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/sep/list.go b/pkg/cloudbroker/sep/list.go index 60d119e..9b105a8 100644 --- a/pkg/cloudbroker/sep/list.go +++ b/pkg/cloudbroker/sep/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list of SEPs +// ListRequest struct to get list of SEPs type ListRequest struct { // Find by ID // Required: false @@ -45,11 +45,9 @@ type ListRequest struct { Page uint64 `url:"page,omitempty" json:"page,omitempty"` } -// List gets list of SEPs +// List gets list of SEPs as a ListSEP struct func (s SEP) List(ctx context.Context, req ListRequest) (*ListSEP, error) { - url := "/cloudbroker/sep/list" - - res, err := s.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := s.ListRaw(ctx, req) if err != nil { return nil, err } @@ -63,3 +61,11 @@ func (s SEP) List(ctx context.Context, req ListRequest) (*ListSEP, error) { return &list, nil } + +// ListRaw gets list of SEPs as an array of bytes +func (s SEP) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudbroker/sep/list" + + res, err := s.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/stack/get.go b/pkg/cloudbroker/stack/get.go index 55f2e61..143caaf 100644 --- a/pkg/cloudbroker/stack/get.go +++ b/pkg/cloudbroker/stack/get.go @@ -8,25 +8,16 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for get list stack +// GetRequest struct to get list of stacks type GetRequest struct { // Find by ID // Required: true StackId uint64 `url:"stackId" json:"stackId" validate:"required"` } -// Get stack details by ID +// Get gets stack details by ID as an InfoStack struct func (i Stack) Get(ctx context.Context, req GetRequest) (*InfoStack, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudbroker/stack/get" - - res, err := i.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := i.GetRaw(ctx, req) if err != nil { return nil, err } @@ -40,3 +31,18 @@ func (i Stack) Get(ctx context.Context, req GetRequest) (*InfoStack, error) { return &info, nil } + +// GetRaw gets stack details by ID as an array of bytes +func (i Stack) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudbroker/stack/get" + + res, err := i.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/stack/list.go b/pkg/cloudbroker/stack/list.go index cd16d1f..5842f2f 100644 --- a/pkg/cloudbroker/stack/list.go +++ b/pkg/cloudbroker/stack/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list stack +// ListRequest struct to get list of stacks type ListRequest struct { // Find by ID // Required: false @@ -33,11 +33,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// ListStacks gets list stack +// List gets list of stacks as a ListStacks struct func (i Stack) List(ctx context.Context, req ListRequest) (*ListStacks, error) { - url := "/cloudbroker/stack/list" - - res, err := i.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := i.ListRaw(ctx, req) if err != nil { return nil, err } @@ -51,3 +49,11 @@ func (i Stack) List(ctx context.Context, req ListRequest) (*ListStacks, error) { return &list, nil } + +// ListRaw gets list of stacks as an array of bytes +func (i Stack) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudbroker/stack/list" + + res, err := i.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/tasks/get.go b/pkg/cloudbroker/tasks/get.go index 4175411..42a8e7e 100644 --- a/pkg/cloudbroker/tasks/get.go +++ b/pkg/cloudbroker/tasks/get.go @@ -8,25 +8,16 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for get background API task status and result +// GetRequest struct to get background API task status and result type GetRequest struct { // ID of audit GUID // Required: true AuditID string `url:"auditId" json:"auditId" validate:"required"` } -// Get gets background API task status and result +// Get gets background API task status and result as a RecordTask struct func (t Tasks) Get(ctx context.Context, req GetRequest) (*RecordTask, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudbroker/tasks/get" - - res, err := t.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := t.GetRaw(ctx, req) if err != nil { return nil, err } @@ -40,3 +31,18 @@ func (t Tasks) Get(ctx context.Context, req GetRequest) (*RecordTask, error) { return &item, nil } + +// GetRaw gets background API task status and result as an array of bytes +func (t Tasks) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudbroker/tasks/get" + + res, err := t.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/tasks/list.go b/pkg/cloudbroker/tasks/list.go index aca846b..f7f77b6 100644 --- a/pkg/cloudbroker/tasks/list.go +++ b/pkg/cloudbroker/tasks/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list audits +// ListRequest struct to get list of audits type ListRequest struct { // Page number // Required: false @@ -17,11 +17,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list user API task with status PROCESSING +// List gets list of user API task with status PROCESSING as a ListTasks struct func (t Tasks) List(ctx context.Context, req ListRequest) (*ListTasks, error) { - url := "/cloudbroker/tasks/list" - - res, err := t.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := t.ListRaw(ctx, req) if err != nil { return nil, err } @@ -35,3 +33,11 @@ func (t Tasks) List(ctx context.Context, req ListRequest) (*ListTasks, error) { return &item, nil } + +// ListRaw gets list of user API task with status PROCESSING as an array of bytes +func (t Tasks) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudbroker/tasks/list" + + res, err := t.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/user/get.go b/pkg/cloudbroker/user/get.go index 18ef769..9641ec8 100644 --- a/pkg/cloudbroker/user/get.go +++ b/pkg/cloudbroker/user/get.go @@ -8,25 +8,16 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for getting user details. +// GetRequest struct to get user details. type GetRequest struct { // ID of the user. // Required: true UserID string `url:"userId" json:"userId" validate:"required"` } -// Get gets user details. +// Get gets user details as an ItemUser struct. func (u User) Get(ctx context.Context, req GetRequest) (*ItemUser, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudbroker/user/get" - - res, err := u.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := u.GetRaw(ctx, req) if err != nil { return nil, err } @@ -40,3 +31,18 @@ func (u User) Get(ctx context.Context, req GetRequest) (*ItemUser, error) { return &item, nil } + +// GetRaw gets user details as an array of bytes +func (u User) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudbroker/user/get" + + res, err := u.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/user/list.go b/pkg/cloudbroker/user/list.go index 66e4f2e..39a277d 100644 --- a/pkg/cloudbroker/user/list.go +++ b/pkg/cloudbroker/user/list.go @@ -8,7 +8,7 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for getting all non deleted user instances. +// ListRequest struct to get all non deleted user instances. type ListRequest struct { // Find by ID. // Required: false @@ -31,18 +31,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets all non deleted user instances. +// List gets all non deleted user instances as a ListUsers struct func (u User) List(ctx context.Context, req ListRequest) (*ListUsers, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudbroker/user/list" - - res, err := u.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := u.ListRaw(ctx, req) if err != nil { return nil, err } @@ -56,3 +47,18 @@ func (u User) List(ctx context.Context, req ListRequest) (*ListUsers, error) { return &list, nil } + +// ListRaw gets all non deleted user instances as an array of bytes +func (u User) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudbroker/user/list" + + res, err := u.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/vgpu/list.go b/pkg/cloudbroker/vgpu/list.go index 53f8b7f..05a1457 100644 --- a/pkg/cloudbroker/vgpu/list.go +++ b/pkg/cloudbroker/vgpu/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for getting list of VGPU +// ListRequest struct to get list of VGPU type ListRequest struct { // Find by id // Required: false @@ -49,11 +49,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list all VGPU +// List gets list of all VGPU as a ListVGPU struct func (v VGPU) List(ctx context.Context, req ListRequest) (*ListVGPU, error) { - url := "/cloudbroker/vgpu/list" - - res, err := v.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := v.ListRaw(ctx, req) if err != nil { return nil, err } @@ -67,3 +65,11 @@ func (v VGPU) List(ctx context.Context, req ListRequest) (*ListVGPU, error) { return &list, nil } + +// ListRaw gets list of all VGPU as an array of bytes +func (v VGPU) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudbroker/vgpu/list" + + res, err := v.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/vins/get.go b/pkg/cloudbroker/vins/get.go index 71078df..6bc4df2 100644 --- a/pkg/cloudbroker/vins/get.go +++ b/pkg/cloudbroker/vins/get.go @@ -8,7 +8,7 @@ import ( "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" ) -// Request struct for get information about VINS +// GetRequest struct to get information about VINS type GetRequest struct { // VINS ID // Required: true @@ -19,18 +19,9 @@ type GetRequest struct { Reason string `url:"reason,omitempty" json:"reason,omitempty"` } -// Get gets information about VINS by ID +// Get gets information about VINS by ID as a RecordVINS struct func (v VINS) Get(ctx context.Context, req GetRequest) (*RecordVINS, error) { - err := validators.ValidateRequest(req) - if err != nil { - for _, validationError := range validators.GetErrors(err) { - return nil, validators.ValidationError(validationError) - } - } - - url := "/cloudbroker/vins/get" - - res, err := v.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := v.GetRaw(ctx, req) if err != nil { return nil, err } @@ -44,3 +35,18 @@ func (v VINS) Get(ctx context.Context, req GetRequest) (*RecordVINS, error) { return &info, nil } + +// GetRaw gets information about VINS by ID as an array of bytes +func (v VINS) GetRaw(ctx context.Context, req GetRequest) ([]byte, error) { + err := validators.ValidateRequest(req) + if err != nil { + for _, validationError := range validators.GetErrors(err) { + return nil, validators.ValidationError(validationError) + } + } + + url := "/cloudbroker/vins/get" + + res, err := v.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +} diff --git a/pkg/cloudbroker/vins/list.go b/pkg/cloudbroker/vins/list.go index 4da7d5d..195cba2 100644 --- a/pkg/cloudbroker/vins/list.go +++ b/pkg/cloudbroker/vins/list.go @@ -6,7 +6,7 @@ import ( "net/http" ) -// Request struct for get list of VINSes +// ListRequest struct to get list of VINSes type ListRequest struct { // Find by ID // Required: false @@ -41,11 +41,9 @@ type ListRequest struct { Size uint64 `url:"size,omitempty" json:"size,omitempty"` } -// List gets list of VINSes +// List gets list of VINSes as a ListVINS struct func (v VINS) List(ctx context.Context, req ListRequest) (*ListVINS, error) { - url := "/cloudbroker/vins/list" - - res, err := v.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := v.ListRaw(ctx, req) if err != nil { return nil, err } @@ -59,3 +57,11 @@ func (v VINS) List(ctx context.Context, req ListRequest) (*ListVINS, error) { return &list, nil } + +// ListRaw gets list of VINSes as an array of bytes +func (v VINS) ListRaw(ctx context.Context, req ListRequest) ([]byte, error) { + url := "/cloudbroker/vins/list" + + res, err := v.client.DecortApiCall(ctx, http.MethodPost, url, req) + return res, err +}