diff --git a/CHANGELOG.md b/CHANGELOG.md index 9badfdd..25cea7e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -## Version 1.14.3 +## Version 1.14.4 Методы `Audits` в cloudapi/compute, cloudbroker/compute, cloudapi/account, cloudbroker/account, cloudapi/vins, cloudbroker/vins, cloudapi/rg и cloudbroker/rg стали deprecated и в следующих версиях будут удалены, вместо них необходимо использовать метод `List` в cloudapi/audit и cloudbroker/audit с соответствующими фильтрами Методы `AccessGrant`, `AccessGrantToPool`, `AccessRevoke`, `AccessRevokeToPool` в cloudbroker/sep стали deprecated и в следующих версиях будут удалены @@ -9,62 +9,27 @@ ### Добавлено -#### compute +#### image | Идентификатор
задачи | Описание | | --- | --- | -| BGOS-805 | Вычисляемое поле `Provision` в структуру ответа `ItemComputeDisk` в cloudapi/compute и в структуру ответа `ItemDisk` в cloudbroker/compute | - -#### disks -| Идентификатор
задачи | Описание | -| --- | --- | -| BGOS-806 | Вычисляемое поле `Provision` в структуры ответа `ItemDisk`, `ItemDiskUnattached` и `RecordDisk` в cloudapi/disks и в структуру ответа `InfoDisk` в cloudbroker/disks | +| BGOS-812 | Методы `CreateMultiImage`, `MultiImageAddLinks`, `MultiImageDelLinks` и `MultiImageExport` в cloudbroker/image | +| BGOS-812 | Структуры запросов `CreateMultiImageRequest`, `MultiImageAddLinksRequest`, `MultiImageDelLinksRequest` и `MultiImageExportRequest` в cloudbroker/image | +| BGOS-813 | Вычисляемое поле `LinksTo` в структуры ответа `RecordImage` и `ItemImage` в cloudbroker/image и в структуру ответа `RecordImage` в cloudapi/image | ### node | Идентификатор
задачи | Описание | | --- | --- | -| BGOS-802 | Опциональное поле `Target` в структуру запроса `GetLogicalCoresCountRequest` в cloudbroker/node | +| BGOS-811 | Вычисляемое поле `ThreadCount` в структуру ответа `CpuInfo` в cloudbroker/node | -#### rg -| Идентификатор
задачи | Описание | -| --- | --- | -| BGOS-803 | Опциональное поле `CPUAllocationParameter` в структуру запроса `UpdateRequest` в cloudbroker/rg | - -#### SDN Logical Ports -| Идентификатор
задачи | Описание | -| --- | --- | -| BGOS-695 | Опциональное поле `Labels` в структуры запроса `CreateRequest` и `UpdateRequest` в sdn/logical_ports | -| BGOS-695 | Вычисляемое поле `Labels` в структуру ответа `LogicalPort` в sdn/logical_ports | -| BGOS-695 | Опциональные поля `OperationStatus` и `HypervisorStatus` в структуру запроса `ListRequest` в sdn/logical_ports | -| BGOS-695 | Вычисляемые поля `OperationStatus` и `HypervisorStatus` в структуре `Status` в структуру ответа `LogicalPort` в sdn/logical_ports | ### Изменено #### compute | Идентификатор
задачи | Описание | | --- | --- | -| BGOS-794 | Тип возвращаемого значения метода `AbortSharedSnapshotMerge` с `bool` на `string` в cloudapi/compute и в cloudbroker/compute | +| BGOS-814 | Тип возвращаемого значения метода `CheckComputePlacement` с `map[string]CheckComputePlacementItem` на `map[uint64]CheckComputePlacementItem` в cloudbroker/compute | -#### kvmx86 +#### rg | Идентификатор
задачи | Описание | | --- | --- | -| BGOS-808 | Минимальное значение поля `MTU` в структуре `Interface` в cloudapi/kvmx86 и cloudbroker/kvmx86 и в структуре `InterfaceMassCreate` в cloudbroker/kvmx86 с 1 на 1500 | - -#### zone -| Идентификатор
задачи | Описание | -| --- | --- | -| BGOS-807 | JSON-тег у вычисляемого поля `LBIDs` в структуре ответа `RecordZone` с `lbIds` на `lbsIds` в cloudapi/zone | - -#### SDN Logical Ports -| Идентификатор
задачи | Описание | -| --- | --- | -| BGOS-695 | Имя вычисляемого поля со `Status` на `OperationStatus` в sdn/logical_ports | - -### Удалено - -#### SDN Logical Ports -| Идентификатор
задачи | Описание | -| --- | --- | -| BGOS-695 | Обязательное поле `IsExcludedFromFirewall` в структурах запроса `CreateRequest` и `UpdateRequest` в sdn/logical_ports | -| BGOS-695 | Вычисляемое поле `IsExcludedFromFirewall` в структуре `Bindings` в структуре ответа `LogicalPort` в sdn/logical_ports | -| BGOS-695 | Вычисляемое поле `Common` в структуре `Status` в структуре ответа `LogicalPort` в sdn/logical_ports | -| BGOS-695 | Структуры запроса `ExcludeFirewallRequest`, `UnexcludeFirewallRequest`, `CreateBatchRequest` и `DeleteBatchRequest` и методы `ExcludeFirewall`, `UnexcludeFirewall`, `CreateBatch` и `DeleteBatch` в sdn/logical_ports | \ No newline at end of file +| BGOS-815 | JSON-тэг у поля `RGID` в структуре ответа `ItemResourceConsumption` с `rgid` на `id` в cloudbroker/rg | diff --git a/pkg/cloudapi/image/models.go b/pkg/cloudapi/image/models.go index e25dc9f..45fe0f9 100644 --- a/pkg/cloudapi/image/models.go +++ b/pkg/cloudapi/image/models.go @@ -149,6 +149,9 @@ type RecordImage struct { // Link to LinkTo uint64 `json:"linkTo"` + // Links to + LinksTo []uint64 `json:"linksTo"` + // Milestones Milestones uint64 `json:"milestones"` diff --git a/pkg/cloudbroker/compute/models.go b/pkg/cloudbroker/compute/models.go index b1a186c..a1ce1de 100644 --- a/pkg/cloudbroker/compute/models.go +++ b/pkg/cloudbroker/compute/models.go @@ -1535,4 +1535,4 @@ type CheckComputePlacementItem struct { Error CheckComputePlacementError `json:"error,omitempty"` } -type CheckComputePlacementResult map[string]CheckComputePlacementItem +type CheckComputePlacementResult map[uint64]CheckComputePlacementItem diff --git a/pkg/cloudbroker/image/create_multi_image.go b/pkg/cloudbroker/image/create_multi_image.go new file mode 100644 index 0000000..8e661f6 --- /dev/null +++ b/pkg/cloudbroker/image/create_multi_image.go @@ -0,0 +1,47 @@ +package image + +import ( + "context" + "net/http" + "strconv" + + "repository.basistech.ru/BASIS/decort-golang-sdk/internal/constants" + "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" +) + +// CreateMultiImageRequest struct to create multi image +type CreateMultiImageRequest struct { + // Name of the multi image + // Required: true + Name string `url:"name" json:"name" validate:"required"` + + // IDs of real images + // Required: true + TargetIDs []uint64 `url:"target_ids" json:"target_ids" validate:"required"` + + // Account ID + // Required: false + AccountID uint64 `url:"account_id,omitempty" json:"account_id,omitempty"` +} + +// CreateMultiImage creates multi image +func (i Image) CreateMultiImage(ctx context.Context, req CreateMultiImageRequest) (uint64, error) { + err := validators.ValidateRequest(req) + if err != nil { + return 0, validators.ValidationErrors(validators.GetErrors(err)) + } + + url := "/cloudbroker/image/create_multi_image" + + res, err := i.client.DecortApiCallCtype(ctx, http.MethodPost, url, constants.MIMEJSON, req) + if err != nil { + return 0, err + } + + result, err := strconv.ParseUint(string(res), 10, 64) + if err != nil { + return 0, err + } + + return result, nil +} diff --git a/pkg/cloudbroker/image/models.go b/pkg/cloudbroker/image/models.go index 75e9e8f..e2a1109 100644 --- a/pkg/cloudbroker/image/models.go +++ b/pkg/cloudbroker/image/models.go @@ -62,6 +62,9 @@ type RecordImage struct { // Link to LinkTo uint64 `json:"linkTo"` + // Links to + LinksTo []uint64 `json:"linksTo"` + // Milestones Milestones uint64 `json:"milestones"` @@ -197,6 +200,9 @@ type ItemImage struct { // Link to LinkTo uint64 `json:"linkTo"` + // Links to + LinksTo []uint64 `json:"linksTo"` + // Milestones Milestones uint64 `json:"milestones"` diff --git a/pkg/cloudbroker/image/multi_image_add_links.go b/pkg/cloudbroker/image/multi_image_add_links.go new file mode 100644 index 0000000..eb573c9 --- /dev/null +++ b/pkg/cloudbroker/image/multi_image_add_links.go @@ -0,0 +1,43 @@ +package image + +import ( + "context" + "net/http" + "strconv" + + "repository.basistech.ru/BASIS/decort-golang-sdk/internal/constants" + "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" +) + +// MultiImageAddLinksRequest struct to add links to multi image +type MultiImageAddLinksRequest struct { + // ID of the multi image + // Required: true + ImageID uint64 `url:"image_id" json:"image_id" validate:"required"` + + // IDs of real images + // Required: true + TargetIDs []uint64 `url:"target_ids" json:"target_ids" validate:"required"` +} + +// MultiImageAddLinks adds image links to multi image +func (i Image) MultiImageAddLinks(ctx context.Context, req MultiImageAddLinksRequest) (bool, error) { + err := validators.ValidateRequest(req) + if err != nil { + return false, validators.ValidationErrors(validators.GetErrors(err)) + } + + url := "/cloudbroker/image/multi_image_add_links" + + res, err := i.client.DecortApiCallCtype(ctx, http.MethodPost, url, constants.MIMEJSON, req) + if err != nil { + return false, err + } + + result, err := strconv.ParseBool(string(res)) + if err != nil { + return false, err + } + + return result, nil +} diff --git a/pkg/cloudbroker/image/multi_image_del_links.go b/pkg/cloudbroker/image/multi_image_del_links.go new file mode 100644 index 0000000..a41fb36 --- /dev/null +++ b/pkg/cloudbroker/image/multi_image_del_links.go @@ -0,0 +1,43 @@ +package image + +import ( + "context" + "net/http" + "strconv" + + "repository.basistech.ru/BASIS/decort-golang-sdk/internal/constants" + "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" +) + +// MultiImageDelLinksRequest struct to delete links from multi image +type MultiImageDelLinksRequest struct { + // ID of the multi image + // Required: true + ImageID uint64 `url:"image_id" json:"image_id" validate:"required"` + + // IDs of real images + // Required: true + TargetIDs []uint64 `url:"target_ids" json:"target_ids" validate:"required"` +} + +// MultiImageDelLinks removes image links from multi image +func (i Image) MultiImageDelLinks(ctx context.Context, req MultiImageDelLinksRequest) (bool, error) { + err := validators.ValidateRequest(req) + if err != nil { + return false, validators.ValidationErrors(validators.GetErrors(err)) + } + + url := "/cloudbroker/image/multi_image_del_links" + + res, err := i.client.DecortApiCallCtype(ctx, http.MethodPost, url, constants.MIMEJSON, req) + if err != nil { + return false, err + } + + result, err := strconv.ParseBool(string(res)) + if err != nil { + return false, err + } + + return result, nil +} diff --git a/pkg/cloudbroker/image/multi_image_export.go b/pkg/cloudbroker/image/multi_image_export.go new file mode 100644 index 0000000..2fbeee9 --- /dev/null +++ b/pkg/cloudbroker/image/multi_image_export.go @@ -0,0 +1,42 @@ +package image + +import ( + "context" + "net/http" + "strconv" + + "repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators" +) + +// MultiImageExportRequest struct to export multi image to a pool +type MultiImageExportRequest struct { + // ID of the multi image + // Required: true + MultiImageID uint64 `url:"multi_image_id" json:"multi_image_id" validate:"required"` + + // Name of the target pool + // Required: true + PoolName string `url:"pool_name" json:"pool_name" validate:"required"` +} + +// MultiImageExport copies a physical image from multi image to the specified pool +func (i Image) MultiImageExport(ctx context.Context, req MultiImageExportRequest) (bool, error) { + err := validators.ValidateRequest(req) + if err != nil { + return false, validators.ValidationErrors(validators.GetErrors(err)) + } + + url := "/cloudbroker/image/multi_image_export" + + res, err := i.client.DecortApiCall(ctx, http.MethodPost, url, req) + if err != nil { + return false, err + } + + result, err := strconv.ParseBool(string(res)) + if err != nil { + return false, err + } + + return result, nil +} diff --git a/pkg/cloudbroker/node/models.go b/pkg/cloudbroker/node/models.go index fa2e5a9..fde5f26 100644 --- a/pkg/cloudbroker/node/models.go +++ b/pkg/cloudbroker/node/models.go @@ -155,6 +155,9 @@ type CpuInfo struct { // PhysCount PhysCount uint64 `json:"physCount"` + // Thread count + ThreadCount uint64 `json:"threadCount"` + // Flags Flags []string `json:"flags"` diff --git a/pkg/cloudbroker/rg/models.go b/pkg/cloudbroker/rg/models.go index ecde0b5..3326d1d 100644 --- a/pkg/cloudbroker/rg/models.go +++ b/pkg/cloudbroker/rg/models.go @@ -66,7 +66,7 @@ type ItemResourceConsumption struct { ResourceLimits ResourceLimits `json:"resourceLimits"` // Resource group ID - RGID uint64 `json:"rgid"` + RGID uint64 `json:"id"` } type ListResourceConsumption struct { diff --git a/tests/platform_upgrade/request_map.go b/tests/platform_upgrade/request_map.go index 764b90b..4512470 100644 --- a/tests/platform_upgrade/request_map.go +++ b/tests/platform_upgrade/request_map.go @@ -795,6 +795,10 @@ func getRequestsMapCloudbroker() map[string]interface{} { "/restmachine/cloudbroker/image/rename": image_cb.RenameRequest{}, "/restmachine/cloudbroker/image/revokeAccess": image_cb.RevokeAccessRequest{}, "/restmachine/cloudbroker/image/share": image_cb.ShareRequest{}, + "/restmachine/cloudbroker/image/create_multi_image": image_cb.CreateMultiImageRequest{}, + "/restmachine/cloudbroker/image/multi_image_add_links": image_cb.MultiImageAddLinksRequest{}, + "/restmachine/cloudbroker/image/multi_image_del_links": image_cb.MultiImageDelLinksRequest{}, + "/restmachine/cloudbroker/image/multi_image_export": image_cb.MultiImageExportRequest{}, // k8ci "/restmachine/cloudbroker/k8ci/accessAdd": k8ci_cb.AccessAddRequest{},