From 25fa57f583f3b9f9d7258e01d271484a5eb1514c Mon Sep 17 00:00:00 2001 From: asteam Date: Fri, 16 Jan 2026 17:05:59 +0300 Subject: [PATCH] v13.4.0 --- CHANGELOG.md | 43 +++++++++++-------- pkg/cloudapi/bservice/group_resize.go | 8 ++-- pkg/cloudapi/compute/disk_add.go | 4 ++ pkg/cloudapi/compute/models.go | 3 ++ pkg/cloudapi/compute/net_attach.go | 5 +++ pkg/cloudapi/disks/create.go | 4 ++ pkg/cloudapi/disks/models.go | 6 +++ pkg/cloudapi/kvmx86/create.go | 4 ++ pkg/cloudapi/kvmx86/create_blank.go | 4 ++ pkg/cloudapi/lb/create.go | 4 +- pkg/cloudbroker/bservice/group_resize.go | 14 +++--- pkg/cloudbroker/compute/disk_add.go | 4 ++ pkg/cloudbroker/compute/models.go | 5 ++- pkg/cloudbroker/disks/create.go | 4 ++ pkg/cloudbroker/disks/models.go | 3 ++ pkg/cloudbroker/disks/update.go | 42 ++++++++++++++++++ pkg/cloudbroker/kvmx86/create.go | 4 ++ pkg/cloudbroker/kvmx86/create_blank.go | 4 ++ pkg/cloudbroker/kvmx86/mass_create.go | 4 ++ pkg/cloudbroker/lb/create.go | 4 +- pkg/cloudbroker/trunk/update.go | 8 ++-- .../user/get_matching_usernames.go | 4 +- 22 files changed, 145 insertions(+), 40 deletions(-) create mode 100644 pkg/cloudbroker/disks/update.go diff --git a/CHANGELOG.md b/CHANGELOG.md index 21304d9..47bc84e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,9 @@ -## Version 13.3.0 +## Version 13.4.0 -Методы `ddd` в cloudapi/compute, cloudbroker/compute, cloudapi/account, cloudbroker/account, cloudapi/vins, cloudbroker/vins, cloudapi/rg и cloudbroker/rg стали deprecated и в следующих версиях будут удалены, вместо них необходимо использовать метод `List` в cloudapi/audit и cloudbroker/audit с соответствующими фильтрами +Методы `Audits` в cloudapi/compute, cloudbroker/compute, cloudapi/account, cloudbroker/account, cloudapi/vins, cloudbroker/vins, cloudapi/rg и cloudbroker/rg стали deprecated и в следующих версиях будут удалены, вместо них необходимо использовать метод `List` в cloudapi/audit и cloudbroker/audit с соответствующими фильтрами Метод `ListNodes` в cloudbroker/image стал deprecated и в следующих версиях будет удалён Методы `AccessGrant`, `AccessGrantToPool`, `AccessRevoke`, `AccessRevokeToPool` в cloudbroker/sep стали deprecated и в следующих версиях будут удалены -Методы `ComputeCISet`, `ComputeCIUnset`, `Getddd` в cloudbroker/computeGetddd и `Getddd` в cloudbroker/compute стали deprecated и будут удалены в следующих версиях +Методы `ComputeCISet`, `ComputeCIUnset`, `GetAudits` в cloudbroker/computeGetAudits и `GetAudits` в cloudbroker/compute стали deprecated и будут удалены в следующих версиях Все методы группы `.SDN()` находятся в альфа-версии. @@ -12,35 +12,42 @@ #### compute | Идентификатор
задачи | Описание | | --- | --- | -| BGOS-713 | Опциональное поле `NetMap` в структуру запроса `StartMigrationOutRequest` в cloudbroker/compute | +| BGOS-732 | Опциональное поле `NetMask` в структуру запроса `NetAttachRequest` в cloudapi/compute | +| BGOS-727 | Опциональное поле `Cache` в структуру запроса `DiskAddRequest` в cloudapi/compute и в cloudbroker/compute | +| BGOS-727 | Поле `Cache` в структуры ответа `ItemComputeDisk` в cloudapi/compute и в `ItemDisk` в cloudbroker/compute | -#### sep +#### disks | Идентификатор
задачи | Описание | | --- | --- | -| BGOS-712 | Возвращаемый тип методов `AddConsumerNodes` и `AddProviderNodes` изменен с `bool` на `uint64` в cloudbroker/sep | -| BGOS-722 | Валидатор для поля `SEPType` в структуре запроса `CreateRequest` в cloudbroker/sep | +| BGOS-725 | Структура запроса `UpdateRequest`, метод `Update` в cloudbroker/disks | +| BGOS-725 | Опциональное поле `Cache` в структуру запроса `CreateRequest` в cloudapi/disks и в cloudbroker/disks | +| BGOS-725 | Поле `Cache` в структуру ответа `InfoDisk` в cloudbroker/disks | +| BGOS-725 | Поле `Cache` в структуры ответа `RecordDisk`,`ItemDisk` в cloudapi/disks | + +#### kvmx86 +| Идентификатор
задачи | Описание | +| --- | --- | +| BGOS-727 | Опциональное поле `BootDiskCache` в структуры запроса `CreateRequest`, `CreateBlankRequest` в cloudapi/kvmx86 и в cloudbroker/kvmx86 | +| BGOS-727 | Опциональное поле `BootDiskCache` в структуру запроса `MassCreateRequest` в cloudbroker/kvmx86 | ### Изменено -#### compute +#### bservice | Идентификатор
задачи | Описание | | --- | --- | -| BGOS-721 | Тип поля `StoragePolicyID` изменен с опционального на обязательный в структуре запроса `CloneRequest` cloudbroker/compute | +| BGOS-728 | Тип полей `Chipset` и `Mode` с обязательного на опциональный в структуре запроса `GroupResizeRequest` в cloudapi/bservice и в cloudbroker/bservice | -#### grid +#### lb | Идентификатор
задачи | Описание | | --- | --- | -| BGOS-719 | Поле `Age` в структуре запроса `PurgeLogsRequest` стало необязательным в cloudbroker/grid | +| BGOS-733 | Тип поля `Start` с обязательного на опциональный в структуре запроса `CreateRequest`в cloudapi/lb и в cloudbroker/lb | -#### storage policy +#### trunk | Идентификатор
задачи | Описание | | --- | --- | -| BGOS-720 | Тип поля `AccessSEPsPools` изменен с обязательного на опциональный в структуре запроса `UpdateRequest` в cloudbroker/stpolicy | +| BGOS-730 | Тип полей `Name` и `TrunkTags` с обязательного на опциональный в структуре запроса `UpdateRequest` в cloudbroker/trunk | - -### Удалено - -#### sep +#### user | Идентификатор
задачи | Описание | | --- | --- | -| BGOS-712 | Поля `ProviderNIDs` и `ConsumerNIDs` удалены из структуры запроса `CreateRequest` в cloudbroker/sep | +| BGOS-729 | Тип поля `Limit` с обязательного на опциональный в структуре запроса `GetMatchingUsernamesRequest` в cloudbroker/user | \ No newline at end of file diff --git a/pkg/cloudapi/bservice/group_resize.go b/pkg/cloudapi/bservice/group_resize.go index 2715e72..b25b808 100644 --- a/pkg/cloudapi/bservice/group_resize.go +++ b/pkg/cloudapi/bservice/group_resize.go @@ -25,15 +25,15 @@ type GroupResizeRequest struct { // Chipset for new computes, either i440fx or Q35 (i440fx by default) // Available values : i440fx, Q35 // Default value : Q35 - // Required: true - Chipset string `url:"chipset" json:"chipset" validate:"required,chipset"` + // Required: false + Chipset string `url:"chipset,omitempty" json:"chipset,omitempty" validate:"omitempty,chipset"` // Either delta or absolute value of computes // Should be one of: // - ABSOLUTE // - RELATIVE - // Required: true - Mode string `url:"mode" json:"mode" validate:"bserviceMode"` + // Required: false + Mode string `url:"mode,omitempty" json:"mode,omitempty" validate:"omitempty,bserviceMode"` } // GroupResize resize the group by changing the number of computes diff --git a/pkg/cloudapi/compute/disk_add.go b/pkg/cloudapi/compute/disk_add.go index 5420339..1e62d10 100644 --- a/pkg/cloudapi/compute/disk_add.go +++ b/pkg/cloudapi/compute/disk_add.go @@ -58,6 +58,10 @@ type DiskAddRequest struct { // Desired bus number (hex string, e.g. "0x03") // Required: false BusNumber string `url:"bus_number,omitempty" json:"bus_number,omitempty"` + + // Disk cache mode + // Required: false + Cache string `url:"cache,omitempty" json:"cache,omitempty"` } // DiskAdd creates new disk and attach to compute diff --git a/pkg/cloudapi/compute/models.go b/pkg/cloudapi/compute/models.go index c029268..0691c59 100644 --- a/pkg/cloudapi/compute/models.go +++ b/pkg/cloudapi/compute/models.go @@ -795,6 +795,9 @@ type ItemComputeDisk struct { // Bus number BusNumber uint64 `json:"bus_number"` + // Chache + Cache string `json:"cache"` + // Created by CreatedBy string `json:"createdBy"` diff --git a/pkg/cloudapi/compute/net_attach.go b/pkg/cloudapi/compute/net_attach.go index 10d6e88..0d33100 100644 --- a/pkg/cloudapi/compute/net_attach.go +++ b/pkg/cloudapi/compute/net_attach.go @@ -45,6 +45,11 @@ type NetAttachRequest struct { // Required: false MTU uint64 `url:"mtu,omitempty" json:"mtu,omitempty" validate:"omitempty,mtu"` + // Net mask + // Used only to DPDK or VFNIC net type + // Required: false + NetMask uint64 `url:"netMask,omitempty" json:"netMask,omitempty"` + // Unique identifier of logical port on SDN side // Required: false SDNInterfaceID string `url:"sdn_interface_id,omitempty" json:"sdn_interface_id,omitempty" validate:"omitempty"` diff --git a/pkg/cloudapi/disks/create.go b/pkg/cloudapi/disks/create.go index 881e520..a7a14b0 100644 --- a/pkg/cloudapi/disks/create.go +++ b/pkg/cloudapi/disks/create.go @@ -37,6 +37,10 @@ type CreateRequest struct { // Pool name to create disk // Required: false Pool string `url:"pool,omitempty" json:"pool,omitempty"` + + // Cache mode of disk + // Required: false + Cache string `url:"cache,omitempty" json:"cache,omitempty"` } // Create creates a disk diff --git a/pkg/cloudapi/disks/models.go b/pkg/cloudapi/disks/models.go index db67195..430f414 100644 --- a/pkg/cloudapi/disks/models.go +++ b/pkg/cloudapi/disks/models.go @@ -139,6 +139,9 @@ type ItemDisk struct { // Updated by UpdatedBy string `json:"updatedBy"` + + // Cache mode of disk + Cache string `json:"cache"` } type ItemDiskUnattached struct { @@ -503,6 +506,9 @@ type RecordDisk struct { // Updated by UpdatedBy string `json:"updatedBy"` + + // Cache mode of disk + Cache string `json:"cache"` } type ItemReplication struct { diff --git a/pkg/cloudapi/kvmx86/create.go b/pkg/cloudapi/kvmx86/create.go index 068347d..ed25832 100644 --- a/pkg/cloudapi/kvmx86/create.go +++ b/pkg/cloudapi/kvmx86/create.go @@ -209,6 +209,10 @@ type CreateRequest struct { // Zone ID // Required: false ZoneID uint64 `url:"zoneId,omitempty" json:"zoneId,omitempty"` + + // Cache mode for boot disk + // Required: false + BootDiskCache string `url:"boot_disk_cache,omitempty" json:"boot_disk_cache,omitempty"` } // GetRAM returns RAM field values diff --git a/pkg/cloudapi/kvmx86/create_blank.go b/pkg/cloudapi/kvmx86/create_blank.go index 61779cb..c1c1cc0 100644 --- a/pkg/cloudapi/kvmx86/create_blank.go +++ b/pkg/cloudapi/kvmx86/create_blank.go @@ -115,6 +115,10 @@ type CreateBlankRequest struct { // The OS version that will be installed on the virtual machine // Required: false OSVersion string `url:"os_version,omitempty" json:"os_version,omitempty"` + + // Cache mode for boot disk + // Required: false + BootDiskCache string `url:"boot_disk_cache,omitempty" json:"boot_disk_cache,omitempty"` } // GetRAM returns RAM field values diff --git a/pkg/cloudapi/lb/create.go b/pkg/cloudapi/lb/create.go index 1472273..91977f0 100644 --- a/pkg/cloudapi/lb/create.go +++ b/pkg/cloudapi/lb/create.go @@ -38,8 +38,8 @@ type CreateRequest struct { HighlyAvailable bool `url:"highlyAvailable,omitempty" json:"highlyAvailable,omitempty"` // Start now Load balancer - // Required: true - Start bool `url:"start" json:"start" validate:"required"` + // Required: false + Start interface{} `url:"start,omitempty" json:"start,omitempty" validate:"omitempty,isBool"` // Text description of this load balancer // Required: false diff --git a/pkg/cloudbroker/bservice/group_resize.go b/pkg/cloudbroker/bservice/group_resize.go index 208d82f..b1e6937 100644 --- a/pkg/cloudbroker/bservice/group_resize.go +++ b/pkg/cloudbroker/bservice/group_resize.go @@ -22,18 +22,18 @@ type GroupResizeRequest struct { // Required: true Count int64 `url:"count" json:"count" validate:"required"` - //Chipset for new computes, either i440fx or Q35 (i440fx by default) - //Available values : i440fx, Q35 - //Default value : Q35 - //Required: true - Chipset string `url:"chipset" json:"chipset" validate:"required,chipset"` + // Chipset for new computes, either i440fx or Q35 (i440fx by default) + // Available values : i440fx, Q35 + // Default value : Q35 + // Required: false + Chipset string `url:"chipset,omitempty" json:"chipset,omitempty" validate:"omitempty,chipset"` // Either delta or absolute value of computes // Should be one of: // - ABSOLUTE // - RELATIVE - // Required: true - Mode string `url:"mode" json:"mode" validate:"bserviceMode"` + // Required: false + Mode string `url:"mode,omitempty" json:"mode,omitempty" validate:"omitempty,bserviceMode"` } // GroupResize resize the group by changing the number of computes diff --git a/pkg/cloudbroker/compute/disk_add.go b/pkg/cloudbroker/compute/disk_add.go index 85e7028..51daf6d 100644 --- a/pkg/cloudbroker/compute/disk_add.go +++ b/pkg/cloudbroker/compute/disk_add.go @@ -58,6 +58,10 @@ type DiskAddRequest struct { // Desired bus number (hex string, e.g. "0x03") // Required: false BusNumber string `url:"bus_number,omitempty" json:"bus_number,omitempty"` + + // Disk cache mode + // Required: false + Cache string `url:"cache,omitempty" json:"cache,omitempty"` } // DiskAdd creates new disk and attach to compute diff --git a/pkg/cloudbroker/compute/models.go b/pkg/cloudbroker/compute/models.go index 76b9ff4..9af170a 100644 --- a/pkg/cloudbroker/compute/models.go +++ b/pkg/cloudbroker/compute/models.go @@ -397,6 +397,9 @@ type ItemDisk struct { // Bus number BusNumber uint64 `json:"bus_number"` + // Chache + Cache string `json:"cache"` + // Created by CreatedBy string `json:"createdBy"` @@ -1173,7 +1176,7 @@ type RecordCompute struct { ZoneID uint64 `json:"zoneId"` //todo - _ uint64 `json:"nodeId"` + _ uint64 `json:"nodeId"` } type LoaderMetaIso struct { diff --git a/pkg/cloudbroker/disks/create.go b/pkg/cloudbroker/disks/create.go index 04d010d..15c65c1 100644 --- a/pkg/cloudbroker/disks/create.go +++ b/pkg/cloudbroker/disks/create.go @@ -37,6 +37,10 @@ type CreateRequest struct { // Pool name to create disk // Required: false Pool string `url:"pool,omitempty" json:"pool,omitempty"` + + // Cache mode of disk + // Required: false + Cache string `url:"cache,omitempty" json:"cache,omitempty"` } // Create creates a disk diff --git a/pkg/cloudbroker/disks/models.go b/pkg/cloudbroker/disks/models.go index 1ff9471..35575bc 100644 --- a/pkg/cloudbroker/disks/models.go +++ b/pkg/cloudbroker/disks/models.go @@ -187,6 +187,9 @@ type InfoDisk struct { // Updated by UpdatedBy string `json:"updatedBy"` + + // Cache mode of disk + Cache string `json:"cache"` } type ItemReplication struct { diff --git a/pkg/cloudbroker/disks/update.go b/pkg/cloudbroker/disks/update.go new file mode 100644 index 0000000..8315800 --- /dev/null +++ b/pkg/cloudbroker/disks/update.go @@ -0,0 +1,42 @@ +package disks + +import ( + "context" + "net/http" + "strconv" + + "repository.basistech.ru/BASIS/dynamix-golang-sdk/v13/internal/validators" +) + +// UpdateRequest struct to update disk +type UpdateRequest struct { + // ID of the disk to update + // Required: true + DiskID uint64 `url:"disk_id" json:"disk_id" validate:"required"` + + // Cache mode of disk + // Required: false + Cache string `url:"cache,omitempty" json:"cache,omitempty"` +} + +// Update updates disk +func (d Disks) Update(ctx context.Context, req UpdateRequest) (bool, error) { + err := validators.ValidateRequest(req) + if err != nil { + return false, validators.ValidationErrors(validators.GetErrors(err)) + } + + url := "/cloudbroker/disks/update" + + res, err := d.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/kvmx86/create.go b/pkg/cloudbroker/kvmx86/create.go index 89f85bc..ad21f8b 100644 --- a/pkg/cloudbroker/kvmx86/create.go +++ b/pkg/cloudbroker/kvmx86/create.go @@ -211,6 +211,10 @@ type CreateRequest struct { // Zone ID // Required: false ZoneID uint64 `url:"zoneId,omitempty" json:"zoneId,omitempty"` + + // Cache mode for boot disk + // Required: false + BootDiskCache string `url:"boot_disk_cache,omitempty" json:"boot_disk_cache,omitempty"` } // GetRAM returns RAM field values diff --git a/pkg/cloudbroker/kvmx86/create_blank.go b/pkg/cloudbroker/kvmx86/create_blank.go index dc3dbed..2bc1a3c 100644 --- a/pkg/cloudbroker/kvmx86/create_blank.go +++ b/pkg/cloudbroker/kvmx86/create_blank.go @@ -115,6 +115,10 @@ type CreateBlankRequest struct { // The OS version that will be installed on the virtual machine // Required: false OSVersion string `url:"os_version,omitempty" json:"os_version,omitempty"` + + // Cache mode for boot disk + // Required: false + BootDiskCache string `url:"boot_disk_cache,omitempty" json:"boot_disk_cache,omitempty"` } // GetRAM returns RAM field values diff --git a/pkg/cloudbroker/kvmx86/mass_create.go b/pkg/cloudbroker/kvmx86/mass_create.go index c74e606..e83a903 100644 --- a/pkg/cloudbroker/kvmx86/mass_create.go +++ b/pkg/cloudbroker/kvmx86/mass_create.go @@ -132,6 +132,10 @@ type MassCreateRequest struct { // The OS version that will be installed on the virtual machine // Required: false OSVersion string `url:"os_version,omitempty" json:"os_version,omitempty"` + + // Cache mode for boot disk + // Required: false + BootDiskCache string `url:"boot_disk_cache,omitempty" json:"boot_disk_cache,omitempty"` } type asyncWrapperMassCreateRequest struct { diff --git a/pkg/cloudbroker/lb/create.go b/pkg/cloudbroker/lb/create.go index e448698..cd1c399 100644 --- a/pkg/cloudbroker/lb/create.go +++ b/pkg/cloudbroker/lb/create.go @@ -30,8 +30,8 @@ type CreateRequest struct { VINSID uint64 `url:"vinsId" json:"vinsId"` // Start now Load balancer - // Required: true - Start bool `url:"start" json:"start" validate:"required"` + // Required: false + Start interface{} `url:"start,omitempty" json:"start,omitempty" validate:"omitempty,isBool"` // Custom sysctl values for Load Balancer instance. Applied on boot // Required: false diff --git a/pkg/cloudbroker/trunk/update.go b/pkg/cloudbroker/trunk/update.go index 198b420..1c1a6bb 100644 --- a/pkg/cloudbroker/trunk/update.go +++ b/pkg/cloudbroker/trunk/update.go @@ -15,12 +15,12 @@ type UpdateRequest struct { TrunkID uint64 `url:"id" json:"id" validate:"required"` // New name of the trunk - // Required: true - Name string `url:"name" json:"name" validate:"required"` + // Required: false + Name string `url:"name,omitempty" json:"name,omitempty"` // List of trunk tags (values between 1-4095) - // Required: true - TrunkTags string `url:"trunk_tags" json:"trunk_tags" validate:"required,trunkTags"` + // Required: false + TrunkTags string `url:"trunk_tags,omitempty" json:"trunk_tags,omitempty" validate:"omitempty,trunkTags"` // New description of the trunk // Required: false diff --git a/pkg/cloudbroker/user/get_matching_usernames.go b/pkg/cloudbroker/user/get_matching_usernames.go index 74dbd08..6c40273 100644 --- a/pkg/cloudbroker/user/get_matching_usernames.go +++ b/pkg/cloudbroker/user/get_matching_usernames.go @@ -15,8 +15,8 @@ type GetMatchingUsernamesRequest struct { UsernameRegex string `url:"usernameregex" json:"usernameregex" validate:"required"` // The number of usernames to return. - // Required: true - Limit uint64 `url:"limit" json:"limit" validate:"required"` + // Required: false + Limit uint64 `url:"limit,omitempty" json:"limit,omitempty"` } // GetMatchingUsernames gets a list of the matching usernames for a given string.