From a59feae2f2719ede1491a5a16927faed5149a360 Mon Sep 17 00:00:00 2001 From: dayterr Date: Tue, 23 Dec 2025 17:49:46 +0300 Subject: [PATCH] v13.2.0 --- CHANGELOG.md | 58 +++++++------------ internal/validators/custom.go | 7 +++ internal/validators/messages.go | 6 ++ internal/validators/validator.go | 5 ++ internal/validators/values.go | 2 + pkg/cloudapi/compute/affinity_rule_add.go | 5 +- pkg/cloudapi/compute/affinity_rule_remove.go | 5 +- .../compute/anti_affinity_rule_add.go | 5 +- .../compute/anti_affinity_rule_remove.go | 5 +- pkg/cloudapi/compute/models.go | 3 + pkg/cloudapi/kvmx86/create.go | 5 ++ pkg/cloudapi/stpolicy/list.go | 4 ++ pkg/cloudapi/trunk/models.go | 3 + pkg/cloudbroker/audit/models.go | 9 +++ pkg/cloudbroker/compute/affinity_rule_add.go | 5 +- .../compute/affinity_rule_remove.go | 5 +- .../compute/anti_affinity_rule_add.go | 5 +- .../compute/anti_affinity_rule_remove.go | 5 +- pkg/cloudbroker/compute/clone.go | 4 +- pkg/cloudbroker/compute/clone_status.go | 2 +- pkg/cloudbroker/compute/models.go | 8 ++- pkg/cloudbroker/compute/net_attach.go | 5 ++ pkg/cloudbroker/compute/start.go | 2 +- pkg/cloudbroker/kvmx86/create.go | 5 ++ pkg/cloudbroker/node/set_vfs_params.go | 7 ++- pkg/cloudbroker/sep/list.go | 3 + pkg/cloudbroker/stpolicy/list.go | 4 ++ pkg/cloudbroker/stpolicy/update.go | 7 ++- pkg/cloudbroker/trunk/create.go | 5 ++ pkg/cloudbroker/trunk/models.go | 3 + pkg/cloudbroker/trunk/update.go | 5 ++ 31 files changed, 133 insertions(+), 69 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6af9409..dee2baa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,71 +1,57 @@ -## Version 13.1.0 +## Version 13.2.0 Методы `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`, `GetAudits` в cloudbroker/computeGetAudits и `GetAudits` в cloudbroker/compute стали deprecated и будут удалены в следующих версиях | +Методы `ComputeCISet`, `ComputeCIUnset`, `GetAudits` в cloudbroker/computeGetAudits и `GetAudits` в cloudbroker/compute стали deprecated и будут удалены в следующих версиях Все методы группы `.SDN()` находятся в альфа-версии. ### Добавлено -#### account +#### audit | Идентификатор
задачи | Описание | | --- | ---| -| BGOS-686 | Поле `Policies` в структуры ответа `LimitsRG` в cloudapi/account и `Limits` в cloudbroker/account | +| BGOS-706 | Поля `ResgroupID`, `AccountID`, `ComputeID` в структуру ответа `RecordAudit` в cloudbroker/audit | -#### access groups +#### compute | Идентификатор
задачи | Описание | | --- | --- | -| BGOS-693 | Поле `OwnerDisplayName` в структуру запроса `ListGroupsRequest` и поле `Comment` в структуру ответа `AccessGroupItem` | +| BGOS-703 | Опциональное поле `NetMask` в структуру запроса `NetAttachRequest` в cloudbroker/compute | +| BGOS-704 | Поле `SepID` в структуру ответа `InfoDisk` в cloudapi/compute и cloudbroker/compute | -#### backup +#### kvmx86 | Идентификатор
задачи | Описание | | --- | --- | -| BGOS-688 | Опциональное поле `NodeID` в структуры запросов `RestoreDiskFromBackupRequest` и `RestoreDisksFromBackupRequest` в cloudbroker/backup | +| BGOS-703 | Опциональное поле `NetMask` в структуры запросов `Interface` в cloudapi/kvmx86 и cloudbroker/kvmx86 | -#### node +#### sep | Идентификатор
задачи | Описание | | --- | ---| -| BGOS-691 | Поле `UsableCPUs` в структурах ответа `RecordNode` и `ItemNode` в cloudbroker/node | +| BGOS-704 | Опциональное поле `SepIDs` в структуре запроса `ListRequest` в cloudbroker/sep | #### storage policy | Идентификатор
задачи | Описание | | --- | ---| -| BGOS-690 | Поле `SepTechStatus` в структуру `AccessSEPPool` в структуре ответа `ItemStoragePolicy` в cloudapi/stpolicy и в cloudbroker/stpolicy | +| BGOS-708 | Поле `SepTechStatus` в структуру запроса `ListRequest` в cloudapi/stpolicy и в cloudbroker/stpolicy | +| BGOS-710 | Обязательное поле `AccessSEPsPool` в структуру запроса `UpdateRequest` в cloudbroker/stpolicy | -#### user +#### trunk | Идентификатор
задачи | Описание | | --- | ---| -| BGOS-692 | Поле `SortBy` в структуру запроса `GetAuditRequest` в cloudbroker/user | +| BGOS-705 | Поле `MTU` в структуру ответа `ItemTrunk` в cloudapi/trunk и в cloudbroker/trunk | +| BGOS-705 | Опциональное поле `MTU` в структуры запроса`CreateRequest` и `UpdateRequest` в cloudbroker/trunk | ### Изменено -#### user -| Идентификатор
задачи | Описание | -| --- | ---| -| BGOS-700 | Изменен тип поля `EmailAddress` с `[]string` на `string` в структуре запроса `CreateRequest` в cloudbroker/user | -| BGOS-700 | Изменен тип возвращаемого значения метода `Create` с `bool` на `string` в cloudbroker/user | - -### Удалено - -#### account -| Идентификатор
задачи | Описание | -| --- | ---| -| BGOS-686 | Поле `CUNP` из структуры ответа `ResourceLimits` в cloudapi/account и cloudbroker/account | -| BGOS-686 | Поле `ExtTraffic` из структур ответа `Resource` и `LimitsRG` в cloudapi/account и `Resource` и `Limits` в cloudbroker/account | - -#### grid +#### compute | Идентификатор
задачи | Описание | | --- | --- | -| BGOS-686 | Поле `ExtTraffic` из структуры ответа `RecordResource` в cloudbroker/grid | - -#### rg -| Идентификатор
задачи | Описание | -| --- | ---| -| BGOS-686 | Поле `ExtTraffic` из структур ответа `Resource` и `RecordResourceUsage` в cloudapi/rg и `Reservation` в cloudbroker/rg | +| BGOS-707 | Поле `Value` стало обязательным в структурах запроса `AntiAffinityRuleAddRequest`, `AntiAffinityRuleRemoveRequest`, `AffinityRuleAddRequest` и `AffinityRuleRemoveRequest` в cloudapi/compute и в cloudbroker/compute | +| BGOS-707 | Тип поля `StoragePolicyID` изменен с обязательного на опциональный в структуре запроса`CloneRequest` в cloudbroker/compute | +| BGOS-707 | Тип поля `ComputeID` с `uint64` на `string` в структуре запроса `GetCloneStatusRequest` в cloudbroker/compute | -#### user +#### node | Идентификатор
задачи | Описание | | --- | --- | -| BGOS-686 | Поле `ExtTraffic` из структуры ответа `Resources` в cloudapi/user | +| BGOS-709 | Поле `VFNum` заменено на поле `FNID` в структуре `VFParam` в структуре запроса `SetVFsParamsRequest` в cloudbroker/node | \ No newline at end of file diff --git a/internal/validators/custom.go b/internal/validators/custom.go index d5e5678..bdb7349 100644 --- a/internal/validators/custom.go +++ b/internal/validators/custom.go @@ -471,3 +471,10 @@ func addressPoolNetTypeValidator(fe validator.FieldLevel) bool { return IsInSlice(fieldValue, addressPoolNetTypeValues) } + +// sepTechStatusValidator is used to validate SepTechStatus fields +func sepTechStatusValidator(fe validator.FieldLevel) bool { + fieldValue := fe.Field().String() + + return IsInSlice(fieldValue, sepTechStatusValues) +} diff --git a/internal/validators/messages.go b/internal/validators/messages.go index 3ea36a1..7dd0fa2 100644 --- a/internal/validators/messages.go +++ b/internal/validators/messages.go @@ -366,6 +366,12 @@ func errorMessage(fe validator.FieldError) string { prefix, fe.Field(), joinValues(ipTypeValues)) + + case "sepTechStatus": + return fmt.Sprintf("%s %s must be one of the following: %s", + prefix, + fe.Field(), + joinValues(sepTechStatusValues)) } return fe.Error() diff --git a/internal/validators/validator.go b/internal/validators/validator.go index 330107f..e963c1e 100644 --- a/internal/validators/validator.go +++ b/internal/validators/validator.go @@ -311,5 +311,10 @@ func registerAllValidators(validate *validator.Validate) error { return err } + err = validate.RegisterValidation("sepTechStatus", sepTechStatusValidator) + if err != nil { + return err + } + return nil } diff --git a/internal/validators/values.go b/internal/validators/values.go index ce30864..5bf829c 100644 --- a/internal/validators/values.go +++ b/internal/validators/values.go @@ -81,6 +81,8 @@ var ( addressPoolNetTypeValues = []string{"IPv4", "IPv6", "MAC"} ipTypeValues = []string{"v4, v6"} + + sepTechStatusValues = []string{"ENABLED", "DISABLED"} ) const ( diff --git a/pkg/cloudapi/compute/affinity_rule_add.go b/pkg/cloudapi/compute/affinity_rule_add.go index c04c87d..3dc45bd 100644 --- a/pkg/cloudapi/compute/affinity_rule_add.go +++ b/pkg/cloudapi/compute/affinity_rule_add.go @@ -38,9 +38,8 @@ type AffinityRuleAddRequest struct { Key string `url:"key" json:"key" validate:"required"` // Value that must match the key to be taken into account when analyzing this rule - // Required: false - // Not required on purpose: despite required tag on platform, empty string is allowed - Value string `url:"value" json:"value"` + // Required: true + Value string `url:"value" json:"value" validate:"required"` } // AffinityRuleAdd add affinity rule diff --git a/pkg/cloudapi/compute/affinity_rule_remove.go b/pkg/cloudapi/compute/affinity_rule_remove.go index 81328e3..b3e4215 100644 --- a/pkg/cloudapi/compute/affinity_rule_remove.go +++ b/pkg/cloudapi/compute/affinity_rule_remove.go @@ -38,9 +38,8 @@ type AffinityRuleRemoveRequest struct { Key string `url:"key" json:"key" validate:"required"` // Value that must match the key to be taken into account when analyzing this rule - // Required: false - // Not required on purpose: despite required tag on platform, empty string is allowed - Value string `url:"value" json:"value"` + // Required: true + Value string `url:"value" json:"value" validate:"required"` } // AffinityRuleRemove remove affinity rule diff --git a/pkg/cloudapi/compute/anti_affinity_rule_add.go b/pkg/cloudapi/compute/anti_affinity_rule_add.go index 1bd7d94..8aea52b 100644 --- a/pkg/cloudapi/compute/anti_affinity_rule_add.go +++ b/pkg/cloudapi/compute/anti_affinity_rule_add.go @@ -38,9 +38,8 @@ type AntiAffinityRuleAddRequest struct { Key string `url:"key" json:"key" validate:"required"` // Value that must match the key to be taken into account when analyzing this rule - // Required: false - // Not required on purpose: despite required tag on platform, empty string is allowed - Value string `url:"value" json:"value"` + // Required: true + Value string `url:"value" json:"value" validate:"required"` } // AntiAffinityRuleAdd add anti affinity rule diff --git a/pkg/cloudapi/compute/anti_affinity_rule_remove.go b/pkg/cloudapi/compute/anti_affinity_rule_remove.go index 12dda6c..40952ad 100644 --- a/pkg/cloudapi/compute/anti_affinity_rule_remove.go +++ b/pkg/cloudapi/compute/anti_affinity_rule_remove.go @@ -38,9 +38,8 @@ type AntiAffinityRuleRemoveRequest struct { Key string `url:"key" json:"key" validate:"required"` // Value that must match the key to be taken into account when analyzing this rule - // Required: false - // Not required on purpose: despite required tag on platform, empty string is allowed - Value string `url:"value" json:"value"` + // Required: true + Value string `url:"value" json:"value" validate:"required"` } // AntiAffinityRuleRemove remove anti affinity rule diff --git a/pkg/cloudapi/compute/models.go b/pkg/cloudapi/compute/models.go index 6b1b5b5..c029268 100644 --- a/pkg/cloudapi/compute/models.go +++ b/pkg/cloudapi/compute/models.go @@ -1237,6 +1237,9 @@ type ListInfoDisks []InfoDisk type InfoDisk struct { // ID ID uint64 `json:"id"` + + // SEP ID + SepID int64 `json:"sepId"` } // List information about computes diff --git a/pkg/cloudapi/kvmx86/create.go b/pkg/cloudapi/kvmx86/create.go index d52c713..068347d 100644 --- a/pkg/cloudapi/kvmx86/create.go +++ b/pkg/cloudapi/kvmx86/create.go @@ -35,6 +35,11 @@ type Interface 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"` + // MAC address to assign to this VM when connecting to the specified network // Required: false MAC string `url:"mac,omitempty" json:"mac,omitempty" validate:"omitempty"` diff --git a/pkg/cloudapi/stpolicy/list.go b/pkg/cloudapi/stpolicy/list.go index a102e9d..ba8d1e5 100644 --- a/pkg/cloudapi/stpolicy/list.go +++ b/pkg/cloudapi/stpolicy/list.go @@ -56,6 +56,10 @@ type ListRequest struct { // Search by pool name // Required: false PoolName string `url:"pool_name,omitempty" json:"pool_name,omitempty"` + + // Filter SEP's by tech status (ENABLED, DISABLED) + // Required: false + SepTechStatus string `url:"sep_tech_status,omitempty" json:"sep_tech_status,omitempty" validate:"omitempty,sepTechStatus"` } // List gets list of storage policies as a ListStoragePolicies struct diff --git a/pkg/cloudapi/trunk/models.go b/pkg/cloudapi/trunk/models.go index de7742a..cc42a96 100644 --- a/pkg/cloudapi/trunk/models.go +++ b/pkg/cloudapi/trunk/models.go @@ -29,6 +29,9 @@ type ItemTrunk struct { // MAC MAC string `json:"mac"` + // MTU + MTU uint64 `json:"mtu"` + // Name of a trunk Name string `json:"name"` diff --git a/pkg/cloudbroker/audit/models.go b/pkg/cloudbroker/audit/models.go index a8bffe2..f232bf5 100644 --- a/pkg/cloudbroker/audit/models.go +++ b/pkg/cloudbroker/audit/models.go @@ -95,6 +95,15 @@ type RecordAudit struct { // TTL TTL string `json:"_ttl"` + + // Resgroup ID + ResgroupID uint64 `json:"resgroup_id"` + + // Account ID + AccountID uint64 `json:"account_id"` + + // Compute ID + ComputeID uint64 `json:"compute_id"` } // List of Linked Jobs diff --git a/pkg/cloudbroker/compute/affinity_rule_add.go b/pkg/cloudbroker/compute/affinity_rule_add.go index 6161676..7b3cfe1 100644 --- a/pkg/cloudbroker/compute/affinity_rule_add.go +++ b/pkg/cloudbroker/compute/affinity_rule_add.go @@ -40,9 +40,8 @@ type AffinityRuleAddRequest struct { Key string `url:"key" json:"key" validate:"required"` // Value that must match the key to be taken into account when analyzing this rule - // Required: false - // Not required on purpose: despite required tag on platform, empty string is allowed - Value string `url:"value" json:"value"` + // Required: true + Value string `url:"value" json:"value" validate:"required"` } // AffinityRuleAdd adds affinity rule diff --git a/pkg/cloudbroker/compute/affinity_rule_remove.go b/pkg/cloudbroker/compute/affinity_rule_remove.go index c3651c3..6f3d935 100644 --- a/pkg/cloudbroker/compute/affinity_rule_remove.go +++ b/pkg/cloudbroker/compute/affinity_rule_remove.go @@ -38,9 +38,8 @@ type AffinityRuleRemoveRequest struct { Key string `url:"key" json:"key" validate:"required"` // Value that must match the key to be taken into account when analyzing this rule - // Required: false - // Not required on purpose: despite required tag on platform, empty string is allowed - Value string `url:"value" json:"value"` + // Required: true + Value string `url:"value" json:"value" validate:"required"` } // AffinityRuleRemove remove affinity rule diff --git a/pkg/cloudbroker/compute/anti_affinity_rule_add.go b/pkg/cloudbroker/compute/anti_affinity_rule_add.go index fd6925d..aa8a19b 100644 --- a/pkg/cloudbroker/compute/anti_affinity_rule_add.go +++ b/pkg/cloudbroker/compute/anti_affinity_rule_add.go @@ -38,9 +38,8 @@ type AntiAffinityRuleAddRequest struct { Key string `url:"key" json:"key" validate:"required"` // Value that must match the key to be taken into account when analyzing this rule - // Required: false - // Not required on purpose: despite required tag on platform, empty string is allowed - Value string `url:"value" json:"value"` + // Required: true + Value string `url:"value" json:"value" validate:"required"` } // AntiAffinityRuleAdd adds anti affinity rule diff --git a/pkg/cloudbroker/compute/anti_affinity_rule_remove.go b/pkg/cloudbroker/compute/anti_affinity_rule_remove.go index 98289d9..57e7031 100644 --- a/pkg/cloudbroker/compute/anti_affinity_rule_remove.go +++ b/pkg/cloudbroker/compute/anti_affinity_rule_remove.go @@ -38,9 +38,8 @@ type AntiAffinityRuleRemoveRequest struct { Key string `url:"key" json:"key" validate:"required"` // Value that must match the key to be taken into account when analyzing this rule - // Required: false - // Not required on purpose: despite required tag on platform, empty string is allowed - Value string `url:"value" json:"value"` + // Required: true + Value string `url:"value" json:"value" validate:"required"` } // AntiAffinityRuleRemove removes anti affinity rule diff --git a/pkg/cloudbroker/compute/clone.go b/pkg/cloudbroker/compute/clone.go index 60af18d..8bac83d 100644 --- a/pkg/cloudbroker/compute/clone.go +++ b/pkg/cloudbroker/compute/clone.go @@ -19,8 +19,8 @@ type CloneRequest struct { Name string `url:"name" json:"name" validate:"required"` // ID of the Storage Policy - // Required: true - StoragePolicyID uint64 `url:"storage_policy_id" json:"storage_policy_id" validate:"required"` + // Required: false + StoragePolicyID uint64 `url:"storage_policy_id" json:"storage_policy_id"` // Timestamp of the parent's snapshot to create clone from // Required: false diff --git a/pkg/cloudbroker/compute/clone_status.go b/pkg/cloudbroker/compute/clone_status.go index e6316f1..4ea9786 100644 --- a/pkg/cloudbroker/compute/clone_status.go +++ b/pkg/cloudbroker/compute/clone_status.go @@ -12,7 +12,7 @@ import ( type GetCloneStatusRequest struct { // ID of compute instance // Required: true - ComputeID uint64 `url:"compute_id" json:"compute_id" validate:"required"` + ComputeID string `url:"compute_id" json:"compute_id" validate:"required"` } // GetCloneStatus gets information about compute clone status as a RecordCloneStatus struct diff --git a/pkg/cloudbroker/compute/models.go b/pkg/cloudbroker/compute/models.go index d7395a8..76b9ff4 100644 --- a/pkg/cloudbroker/compute/models.go +++ b/pkg/cloudbroker/compute/models.go @@ -841,7 +841,7 @@ type InfoCompute struct { SnapSets ListSnapshots `json:"snapSets"` // Node ID - NodeID uint64 `json:"nodeId"` + NodeID uint64 `json:"node_id"` // Node name NodeName string `json:"nodeName"` @@ -1171,6 +1171,9 @@ type RecordCompute struct { // Zone ID ZoneID uint64 `json:"zoneId"` + + //todo + _ uint64 `json:"nodeId"` } type LoaderMetaIso struct { @@ -1280,6 +1283,9 @@ type ItemDeletedCompute struct { type InfoDisk struct { // ID ID uint64 `json:"id"` + + // SEP ID + SepID int64 `json:"sepId"` } // List computes diff --git a/pkg/cloudbroker/compute/net_attach.go b/pkg/cloudbroker/compute/net_attach.go index 352aec1..cbee97c 100644 --- a/pkg/cloudbroker/compute/net_attach.go +++ b/pkg/cloudbroker/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/cloudbroker/compute/start.go b/pkg/cloudbroker/compute/start.go index 1f3a6ff..de223fc 100644 --- a/pkg/cloudbroker/compute/start.go +++ b/pkg/cloudbroker/compute/start.go @@ -20,7 +20,7 @@ type StartRequest struct { // ID of node to start compute // Required: false - NodeID uint64 `url:"nodeId,omitempty" json:"nodeId,omitempty"` + NodeID uint64 `url:"node_id,omitempty" json:"node_id,omitempty"` } // Start starts compute diff --git a/pkg/cloudbroker/kvmx86/create.go b/pkg/cloudbroker/kvmx86/create.go index db19fec..89f85bc 100644 --- a/pkg/cloudbroker/kvmx86/create.go +++ b/pkg/cloudbroker/kvmx86/create.go @@ -37,6 +37,11 @@ type Interface struct { // Required: false MAC string `url:"mac,omitempty" json:"mac,omitempty" validate:"omitempty"` + // Net mask + // Used only to DPDK or VFNIC net type + // Required: false + NetMask uint64 `url:"netMask,omitempty" json:"netMask,omitempty"` + // SDN interface id // Required: false SDNInterfaceID string `url:"sdn_interface_id,omitempty" json:"sdn_interface_id,omitempty"` diff --git a/pkg/cloudbroker/node/set_vfs_params.go b/pkg/cloudbroker/node/set_vfs_params.go index 3916693..807a877 100644 --- a/pkg/cloudbroker/node/set_vfs_params.go +++ b/pkg/cloudbroker/node/set_vfs_params.go @@ -5,13 +5,14 @@ import ( "net/http" "strconv" + "repository.basistech.ru/BASIS/dynamix-golang-sdk/v13/internal/constants" "repository.basistech.ru/BASIS/dynamix-golang-sdk/v13/internal/validators" ) type VFParam struct { - // Number of VF to assign + // ID of the FN // Required: true - VFNum uint64 `url:"vfNum" json:"vfNum" validate:"required"` + FNID uint64 `url:"fnId" json:"fnId" validate:"required"` // Trust // Required: true @@ -46,7 +47,7 @@ func (n Node) SetVFsParams(ctx context.Context, req SetVFsParamsRequest) (bool, url := "/cloudbroker/node/setVFsParams" - res, err := n.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := n.client.DecortApiCallCtype(ctx, http.MethodPost, url, constants.MIMEJSON, req) if err != nil { return false, err diff --git a/pkg/cloudbroker/sep/list.go b/pkg/cloudbroker/sep/list.go index 14bc94a..a62c656 100644 --- a/pkg/cloudbroker/sep/list.go +++ b/pkg/cloudbroker/sep/list.go @@ -42,6 +42,9 @@ type ListRequest struct { // Required: false SortBy string `url:"sortBy,omitempty" json:"sortBy,omitempty" validate:"omitempty,sortBy"` + // Sort by SEP IDs + SepIDs []uint64 `url:"sep_ids,omitempty" json:"sep_ids,omitempty"` + // Page size // Required: false Size uint64 `url:"size,omitempty" json:"size,omitempty"` diff --git a/pkg/cloudbroker/stpolicy/list.go b/pkg/cloudbroker/stpolicy/list.go index cfbd769..8867d8b 100644 --- a/pkg/cloudbroker/stpolicy/list.go +++ b/pkg/cloudbroker/stpolicy/list.go @@ -56,6 +56,10 @@ type ListRequest struct { // Search by pool name // Required: false PoolName string `url:"pool_name,omitempty" json:"pool_name,omitempty"` + + // Filter SEP's by tech status (ENABLED, DISABLED) + // Required: false + SepTechStatus string `url:"sep_tech_status,omitempty" json:"sep_tech_status,omitempty" validate:"omitempty,sepTechStatus"` } // List gets list of storage policies as a ListStoragePolicies struct diff --git a/pkg/cloudbroker/stpolicy/update.go b/pkg/cloudbroker/stpolicy/update.go index 9cfa45b..76931b6 100644 --- a/pkg/cloudbroker/stpolicy/update.go +++ b/pkg/cloudbroker/stpolicy/update.go @@ -5,6 +5,7 @@ import ( "encoding/json" "net/http" + "repository.basistech.ru/BASIS/dynamix-golang-sdk/v13/internal/constants" "repository.basistech.ru/BASIS/dynamix-golang-sdk/v13/internal/validators" ) @@ -13,6 +14,10 @@ type UpdateRequest struct { // Required: true StoragePolicyID uint64 `url:"storage_policy_id" json:"storage_policy_id" validate:"required"` + // List of storage endpoint access objects + // Required: true + AccessSEPsPools []AccessSEPsPool `url:"access_seps_pools" json:"access_seps_pools" validate:"required"` + // New name for the storage policy // Required: false Name string `url:"name,omitempty" json:"name,omitempty"` @@ -51,6 +56,6 @@ func (sp StPolicy) UpdateRaw(ctx context.Context, req UpdateRequest) ([]byte, er url := "/cloudbroker/storage_policy/update" - res, err := sp.client.DecortApiCall(ctx, http.MethodPost, url, req) + res, err := sp.client.DecortApiCallCtype(ctx, http.MethodPost, url, constants.MIMEJSON, req) return res, err } diff --git a/pkg/cloudbroker/trunk/create.go b/pkg/cloudbroker/trunk/create.go index f9cfd1e..6a1271f 100644 --- a/pkg/cloudbroker/trunk/create.go +++ b/pkg/cloudbroker/trunk/create.go @@ -33,6 +33,11 @@ type CreateRequest struct { // Native VLAN ID // Required: false NativeVLANID uint64 `url:"native_vlan_id,omitempty" json:"native_vlan_id,omitempty"` + + // MTU + // Default value: 1500 + // Required: false + MTU uint64 `url:"mtu,omitempty" json:"mtu,omitempty"` } // Create creates a user. diff --git a/pkg/cloudbroker/trunk/models.go b/pkg/cloudbroker/trunk/models.go index de7742a..cc42a96 100644 --- a/pkg/cloudbroker/trunk/models.go +++ b/pkg/cloudbroker/trunk/models.go @@ -29,6 +29,9 @@ type ItemTrunk struct { // MAC MAC string `json:"mac"` + // MTU + MTU uint64 `json:"mtu"` + // Name of a trunk Name string `json:"name"` diff --git a/pkg/cloudbroker/trunk/update.go b/pkg/cloudbroker/trunk/update.go index 7e7d2c4..198b420 100644 --- a/pkg/cloudbroker/trunk/update.go +++ b/pkg/cloudbroker/trunk/update.go @@ -29,6 +29,11 @@ type UpdateRequest struct { // New native VLAN ID // Required: false NativeVLANID uint64 `url:"native_vlan_id,omitempty" json:"native_vlan_id,omitempty"` + + // MTU + // Default value: 1500 + // Required: false + MTU uint64 `url:"mtu,omitempty" json:"mtu,omitempty"` } // Update updates a trunk