From 42271b7a6512e1f75dcbcdea65c81c57ded85006 Mon Sep 17 00:00:00 2001 From: dayterr Date: Thu, 2 Oct 2025 12:51:29 +0300 Subject: [PATCH] v12.4.0 --- pkg/cloudapi/compute/boot_order_get.go | 1 - pkg/cloudapi/compute/boot_order_set.go | 1 - pkg/cloudapi/compute/change_link_state.go | 3 +- pkg/cloudapi/pcidevice/serialize.go | 1 - pkg/cloudapi/stpolicy/models.go | 6 +++ pkg/cloudapi/vins/models.go | 3 ++ .../grid/set_cpu_allocation_parameter.go | 3 +- .../grid/set_cpu_allocation_ratio_for_vm.go | 3 +- pkg/cloudbroker/image/create_cdrom_image.go | 36 +++++++++++++++- pkg/cloudbroker/node/update_description.go | 42 +++++++++++++++++++ pkg/cloudbroker/stpolicy/models.go | 6 +++ pkg/cloudbroker/vins/models.go | 3 ++ 12 files changed, 98 insertions(+), 10 deletions(-) create mode 100644 pkg/cloudbroker/node/update_description.go diff --git a/pkg/cloudapi/compute/boot_order_get.go b/pkg/cloudapi/compute/boot_order_get.go index 8d81fe9..458effe 100644 --- a/pkg/cloudapi/compute/boot_order_get.go +++ b/pkg/cloudapi/compute/boot_order_get.go @@ -4,7 +4,6 @@ import ( "context" "encoding/json" "net/http" - "repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators" ) diff --git a/pkg/cloudapi/compute/boot_order_set.go b/pkg/cloudapi/compute/boot_order_set.go index 7746a66..9dad7b8 100644 --- a/pkg/cloudapi/compute/boot_order_set.go +++ b/pkg/cloudapi/compute/boot_order_set.go @@ -4,7 +4,6 @@ import ( "context" "encoding/json" "net/http" - "repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators" ) diff --git a/pkg/cloudapi/compute/change_link_state.go b/pkg/cloudapi/compute/change_link_state.go index 7fe90c6..ea98dfd 100644 --- a/pkg/cloudapi/compute/change_link_state.go +++ b/pkg/cloudapi/compute/change_link_state.go @@ -3,9 +3,8 @@ package compute import ( "context" "net/http" - "strconv" - "repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators" + "strconv" ) // ChangeLinkStateRequest struct to change link state diff --git a/pkg/cloudapi/pcidevice/serialize.go b/pkg/cloudapi/pcidevice/serialize.go index 1c6da92..0daf231 100644 --- a/pkg/cloudapi/pcidevice/serialize.go +++ b/pkg/cloudapi/pcidevice/serialize.go @@ -2,7 +2,6 @@ package pcidevice import ( "encoding/json" - "repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/serialization" ) diff --git a/pkg/cloudapi/stpolicy/models.go b/pkg/cloudapi/stpolicy/models.go index 954a6eb..6d05abd 100644 --- a/pkg/cloudapi/stpolicy/models.go +++ b/pkg/cloudapi/stpolicy/models.go @@ -30,6 +30,9 @@ type ItemStoragePolicy struct { // Max IOPS for the sotrage policy LimitIOPS uint64 `json:"limit_iops"` + // Storage policy ID + StoragePolicyID uint64 `json:"storage_policy_id"` + // Which accounts and resource groups use the storage policy Usage Usage `json:"usage"` } @@ -56,6 +59,9 @@ type InfoStoragePolicy struct { // Max IOPS for the sotrage policy LimitIOPS uint64 `json:"limit_iops"` + // ID of the storage policy + StoragePolicyID uint64 `json:"storage_policy_id"` + // Which accounts and resource groups use the storage policy Usage Usage `json:"usage"` } diff --git a/pkg/cloudapi/vins/models.go b/pkg/cloudapi/vins/models.go index 2134e14..9818c3a 100644 --- a/pkg/cloudapi/vins/models.go +++ b/pkg/cloudapi/vins/models.go @@ -214,6 +214,9 @@ type RecordVNFDev struct { // Zone ID ZoneID uint64 `json:"zoneId"` + + // Live migration job ID + LiveMigrationJobID uint64 `json:"live_migration_job_id"` } // VNF config diff --git a/pkg/cloudbroker/grid/set_cpu_allocation_parameter.go b/pkg/cloudbroker/grid/set_cpu_allocation_parameter.go index 1d63930..e6ced8b 100644 --- a/pkg/cloudbroker/grid/set_cpu_allocation_parameter.go +++ b/pkg/cloudbroker/grid/set_cpu_allocation_parameter.go @@ -3,9 +3,8 @@ package grid import ( "context" "net/http" - "strconv" - "repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators" + "strconv" ) // SetCPUAllocationParameterRequest for setting CPU allocation parameter diff --git a/pkg/cloudbroker/grid/set_cpu_allocation_ratio_for_vm.go b/pkg/cloudbroker/grid/set_cpu_allocation_ratio_for_vm.go index 9cf1012..6daf0ea 100644 --- a/pkg/cloudbroker/grid/set_cpu_allocation_ratio_for_vm.go +++ b/pkg/cloudbroker/grid/set_cpu_allocation_ratio_for_vm.go @@ -3,9 +3,8 @@ package grid import ( "context" "net/http" - "strconv" - "repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators" + "strconv" ) // SetCPUAllocationRatioForVMRequest for setting CPU allocation ratio for computes diff --git a/pkg/cloudbroker/image/create_cdrom_image.go b/pkg/cloudbroker/image/create_cdrom_image.go index a7955af..07cee93 100644 --- a/pkg/cloudbroker/image/create_cdrom_image.go +++ b/pkg/cloudbroker/image/create_cdrom_image.go @@ -2,6 +2,7 @@ package image import ( "context" + "encoding/json" "net/http" "strconv" @@ -43,6 +44,11 @@ type CreateCDROMImageRequest struct { PasswordDl string `url:"passwordDL,omitempty" json:"passwordDL,omitempty"` } +type asyncWrapperCreateCDROMImageRequest struct { + CreateCDROMImageRequest + AsyncMode bool `url:"asyncMode"` +} + // CreateCDROMImage creates CD-ROM image from an ISO identified by URL func (i Image) CreateCDROMImage(ctx context.Context, req CreateCDROMImageRequest) (uint64, error) { err := validators.ValidateRequest(req) @@ -52,7 +58,9 @@ func (i Image) CreateCDROMImage(ctx context.Context, req CreateCDROMImageRequest url := "/cloudbroker/image/createCDROMImage" - res, err := i.client.DecortApiCall(ctx, http.MethodPost, url, req) + syncReq := asyncWrapperCreateCDROMImageRequest{CreateCDROMImageRequest: req, AsyncMode: false} + + res, err := i.client.DecortApiCall(ctx, http.MethodPost, url, syncReq) if err != nil { return 0, err } @@ -64,3 +72,29 @@ func (i Image) CreateCDROMImage(ctx context.Context, req CreateCDROMImageRequest return result, nil } + +// AsyncCreateCDROMImage creates CD-ROM image from an ISO identified by URL in async mode +func (i Image) AsyncCreateCDROMImage(ctx context.Context, req CreateCDROMImageRequest) (string, error) { + err := validators.ValidateRequest(req) + if err != nil { + return "", validators.ValidationErrors(validators.GetErrors(err)) + } + + url := "/cloudbroker/image/createCDROMImage" + + asyncReq := asyncWrapperCreateCDROMImageRequest{CreateCDROMImageRequest: req, AsyncMode: true} + + res, err := i.client.DecortApiCall(ctx, http.MethodPost, url, asyncReq) + if err != nil { + return " ", err + } + + var taskID string + + err = json.Unmarshal(res, &taskID) + if err != nil { + return "", err + } + + return taskID, nil +} diff --git a/pkg/cloudbroker/node/update_description.go b/pkg/cloudbroker/node/update_description.go new file mode 100644 index 0000000..a9872fb --- /dev/null +++ b/pkg/cloudbroker/node/update_description.go @@ -0,0 +1,42 @@ +package node + +import ( + "context" + "net/http" + "strconv" + + "repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators" +) + +// UpdateDescriptionRequest struct to update description of the node +type UpdateDescriptionRequest struct { + // Node ID + // Required: true + NID uint64 `url:"nid" json:"nid" validate:"required"` + + // New description for the node + // Required: true + Description string `url:"description" json:"description" validate:"required"` +} + +// UpdateDescription updates description of the node +func (n Node) UpdateDescription(ctx context.Context, req UpdateDescriptionRequest) (bool, error) { + err := validators.ValidateRequest(req) + if err != nil { + return false, validators.ValidationErrors(validators.GetErrors(err)) + } + + url := "/cloudbroker/node/update_description" + + res, err := n.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/stpolicy/models.go b/pkg/cloudbroker/stpolicy/models.go index e298fc6..bba1096 100644 --- a/pkg/cloudbroker/stpolicy/models.go +++ b/pkg/cloudbroker/stpolicy/models.go @@ -56,6 +56,9 @@ type ItemStoragePolicy struct { // Max IOPS for the sotrage policy LimitIOPS uint64 `json:"limit_iops"` + // Storage policy ID + StoragePolicyID uint64 `json:"storage_policy_id"` + // Which accounts and resource groups use the storage policy Usage Usage `json:"usage"` } @@ -82,6 +85,9 @@ type InfoStoragePolicy struct { // Max IOPS for the storage policy LimitIOPS uint64 `json:"limit_iops"` + // Storage policy ID + StoragePolicyID uint64 `json:"storage_policy_id"` + // Which accounts and resource groups use the storage policy Usage Usage `json:"usage"` } diff --git a/pkg/cloudbroker/vins/models.go b/pkg/cloudbroker/vins/models.go index 574772e..8238986 100644 --- a/pkg/cloudbroker/vins/models.go +++ b/pkg/cloudbroker/vins/models.go @@ -250,6 +250,9 @@ type VNFDev struct { // Zone ID ZoneID uint64 `json:"zoneId"` + + // Live migration job ID + LiveMigrationJobID uint64 `json:"live_migration_job_id"` } // Main information about reservation