3 Commits

Author SHA1 Message Date
3588755461 v13.3.0 2025-12-29 14:48:59 +03:00
dayterr
a59feae2f2 v13.2.0 2025-12-23 17:49:46 +03:00
dayterr
aac7108d8a v13.1.0 2025-12-16 14:40:04 +03:00
52 changed files with 220 additions and 111 deletions

46
CHANGELOG.md Normal file
View File

@@ -0,0 +1,46 @@
## Version 13.3.0
Методы `ddd` в 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 и будут удалены в следующих версиях
Все методы группы `.SDN()` находятся в альфа-версии.
### Добавлено
#### compute
| Идентификатор<br>задачи | Описание |
| --- | --- |
| BGOS-713 | Опциональное поле `NetMap` в структуру запроса `StartMigrationOutRequest` в cloudbroker/compute |
#### sep
| Идентификатор<br>задачи | Описание |
| --- | --- |
| BGOS-712 | Возвращаемый тип методов `AddConsumerNodes` и `AddProviderNodes` изменен с `bool` на `uint64` в cloudbroker/sep |
| BGOS-722 | Валидатор для поля `SEPType` в структуре запроса `CreateRequest` в cloudbroker/sep |
### Изменено
#### compute
| Идентификатор<br>задачи | Описание |
| --- | --- |
| BGOS-721 | Тип поля `StoragePolicyID` изменен с опционального на обязательный в структуре запроса `CloneRequest` cloudbroker/compute |
#### grid
| Идентификатор<br>задачи | Описание |
| --- | --- |
| BGOS-719 | Поле `Age` в структуре запроса `PurgeLogsRequest` стало необязательным в cloudbroker/grid |
#### storage policy
| Идентификатор<br>задачи | Описание |
| --- | --- |
| BGOS-720 | Тип поля `AccessSEPsPools` изменен с обязательного на опциональный в структуре запроса `UpdateRequest` в cloudbroker/stpolicy |
### Удалено
#### sep
| Идентификатор<br>задачи | Описание |
| --- | --- |
| BGOS-712 | Поля `ProviderNIDs` и `ConsumerNIDs` удалены из структуры запроса `CreateRequest` в cloudbroker/sep |

View File

@@ -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)
}

View File

@@ -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()

View File

@@ -311,5 +311,10 @@ func registerAllValidators(validate *validator.Validate) error {
return err
}
err = validate.RegisterValidation("sepTechStatus", sepTechStatusValidator)
if err != nil {
return err
}
return nil
}

View File

@@ -66,7 +66,7 @@ var (
loaderTypeValues = []string{"linux", "windows", "unknown"}
sepTypeValues = []string{"hitachi", "dorado", "tatlin", "shared", "local", "des"}
sepTypeValues = []string{"hitachi", "dorado", "tatlin", "shared", "local", "des", "ustor"}
languageValues = []string{"ru", "en"}
@@ -81,6 +81,8 @@ var (
addressPoolNetTypeValues = []string{"IPv4", "IPv6", "MAC"}
ipTypeValues = []string{"v4, v6"}
sepTechStatusValues = []string{"ENABLED", "DISABLED"}
)
const (

View File

@@ -68,9 +68,6 @@ type ResourceLimits struct {
// RAM size, MB
CUM float64 `json:"CU_M"`
// Traffic volume, GB
CUNP float64 `json:"CU_NP"`
// Number of graphics cores
GPUUnits float64 `json:"gpu_units"`
@@ -150,9 +147,6 @@ type Resource struct {
// Number of External IPs
ExtIPs int64 `json:"extips"`
// External traffic
ExtTraffic int64 `json:"exttraffic"`
// Number of grafic cores
GPU int64 `json:"gpu"`
@@ -554,9 +548,6 @@ type LimitsRG struct {
// Number of External IPs
ExtIPs int64 `json:"extips"`
// External traffic
ExtTraffic int64 `json:"exttraffic"`
// Number of grafic cores
GPU int64 `json:"gpu"`
@@ -565,6 +556,9 @@ type LimitsRG struct {
// SEPs
SEPs uint64 `json:"seps"`
// Policies
Policies map[string]Policy `json:"policies"`
}
// Main information about resource group

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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"`

View File

@@ -14,9 +14,6 @@ type Resource struct {
// Number of External IPs
ExtIPs int64 `json:"extips"`
// External traffic
ExtTraffic int64 `json:"exttraffic"`
// Number of grafic cores
GPU int64 `json:"gpu"`
@@ -846,9 +843,6 @@ type RecordResourceUsage struct {
// Number of external IPs
ExtIPs uint64 `json:"extips"`
// ExtraTraffic
ExtraTraffic uint64 `json:"exttraffic"`
// Number of GPU
GPU uint64 `json:"gpu"`

View File

@@ -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

View File

@@ -77,6 +77,9 @@ type AccessSEPPool struct {
// Pool names
PoolNames []string `json:"pool_names"`
// Technical status of the SEP
SepTechStatus string `json:"sep_tech_status"`
}
type Usage struct {

View File

@@ -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"`

View File

@@ -156,9 +156,6 @@ type Resources struct {
// ExtIPs
ExtIPs uint64 `json:"extips"`
// ExtTraffic
ExtTraffic uint64 `json:"exttraffic"`
// GPU
GPU uint64 `json:"gpu"`

View File

@@ -71,9 +71,6 @@ type Resource struct {
// Number of External IPs
ExtIPs int64 `json:"extips"`
// External traffic
ExtTraffic int64 `json:"exttraffic"`
// Number of grafic cores
GPU int64 `json:"gpu"`
@@ -143,9 +140,6 @@ type ResourceLimits struct {
// CuM
CuM float64 `json:"CU_M"`
// CuNP
CuNP float64 `json:"CU_NP"`
// GPUUnits
GPUUnits float64 `json:"gpu_units"`
@@ -480,9 +474,6 @@ type Limits struct {
// External IPs
ExtIPs int64 `json:"extips"`
// External traffic
ExtTraffic int64 `json:"exttraffic"`
// Number of GPU
GPU int64 `json:"gpu"`
@@ -491,6 +482,9 @@ type Limits struct {
// SEPs number
SEPs uint64 `json:"seps"`
// Policies
Policies map[string]Policy `json:"policies"`
}
// Resources of resource group

View File

@@ -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

View File

@@ -14,6 +14,9 @@ type RestoreDiskFromBackupRequest struct {
// Compute ID
ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
// Node ID
NodeID uint64 `url:"nodeId,omitempty" json:"nodeId,omitempty"`
// Disk ID
DiskID uint64 `url:"diskId" json:"diskId" validate:"required"`

View File

@@ -25,6 +25,9 @@ type RestoreDisksFromBackupRequest struct {
// Compute ID
ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
// Node ID
NodeID uint64 `url:"nodeId,omitempty" json:"nodeId,omitempty"`
//Backup files
BackupFiles []BackupFile `url:"disks" json:"disks" validate:"required,dive"`
}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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"`

View File

@@ -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

View File

@@ -33,7 +33,11 @@ type StartMigrationOutRequest struct {
// Mapping of guest disk target names to absolute paths on the destination host.
// Required: false
Diskmap map[string]string `url:"diskmap,omitempty" json:"diskmap,omitempty"`
DiskMap map[string]string `url:"diskmap,omitempty" json:"diskmap,omitempty"`
// Mapping of network interfaces
// Required: false
NetMap map[string]string `url:"netmap,omitempty" json:"netmap,omitempty"`
// Mapping for CD/DVD devices or their source paths to new ISO/device paths on the destination
// Required: false

View File

@@ -11,7 +11,6 @@ var grids = ListGrids{
DiskSize: 976,
DiskSizeMax: 1200,
ExtIPs: 132,
ExtTraffic: 0,
GPU: 79500,
RAM: 0,
SEPs: map[string]map[string]DiskUsage{},
@@ -21,7 +20,6 @@ var grids = ListGrids{
DiskSize: 976,
DiskSizeMax: 1200,
ExtIPs: 132,
ExtTraffic: 0,
GPU: 0,
RAM: 152600,
SEPs: map[string]map[string]DiskUsage{},
@@ -41,7 +39,6 @@ var grids = ListGrids{
DiskSize: 976,
DiskSizeMax: 1200,
ExtIPs: 132,
ExtTraffic: 0,
GPU: 79500,
RAM: 0,
SEPs: map[string]map[string]DiskUsage{},
@@ -51,7 +48,6 @@ var grids = ListGrids{
DiskSize: 976,
DiskSizeMax: 1200,
ExtIPs: 132,
ExtTraffic: 0,
GPU: 0,
RAM: 152600,
SEPs: map[string]map[string]DiskUsage{},
@@ -71,7 +67,6 @@ var grids = ListGrids{
DiskSize: 976,
DiskSizeMax: 1200,
ExtIPs: 132,
ExtTraffic: 0,
GPU: 79500,
RAM: 0,
SEPs: map[string]map[string]DiskUsage{},
@@ -81,7 +76,6 @@ var grids = ListGrids{
DiskSize: 976,
DiskSizeMax: 1200,
ExtIPs: 132,
ExtTraffic: 0,
GPU: 0,
RAM: 152600,
SEPs: map[string]map[string]DiskUsage{},

View File

@@ -43,9 +43,6 @@ type RecordResource struct {
// External IPs
ExtIPs uint64 `json:"extips"`
// External traffic
ExtTraffic uint64 `json:"exttraffic"`
// Number of GPU
GPU uint64 `json:"gpu"`

View File

@@ -15,8 +15,8 @@ type PurgeLogsRequest struct {
GID uint64 `url:"gid" json:"gid" validate:"required"`
// Age of the records to remove, e.g. -1h for records older than 1 hour, -1w - one week, etc
// Required: true
Age string `url:"age" json:"age" validate:"required"`
// Required: false
Age string `url:"age,omitempty" json:"age,omitempty"`
}
// PurgeLogs clear Log and ECO records that are older than the specified age.

View File

@@ -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"`

View File

@@ -82,6 +82,9 @@ type RecordNode struct {
// SDN Hypervisor Name
SDNHypervisorName string `json:"sdn_hypervisor_name"`
// CPU used by the node
UsableCPUs []string `json:"usable_cpus"`
}
// Resource consumption of the node
@@ -291,10 +294,13 @@ type ItemNode struct {
CPUAllocationRatio float64 `json:"cpu_allocation_ratio"`
// MemAllocationRatio
MemAllocationRatio float64 `json:"mem_allocation_ratio"`
// Packages
Packages map[string]PackageInfo `json:"packages"`
// CPU used by the node
UsableCPUs []string `json:"usable_cpus"`
}
type PackageInfo struct {

View File

@@ -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

View File

@@ -35,9 +35,6 @@ type Reservation struct {
// External IPs
ExtIPs int64 `json:"extips"`
// External traffic
ExtTraffic int64 `json:"exttraffic"`
// Number of GPU
GPU int64 `json:"gpu"`

View File

@@ -20,22 +20,22 @@ type AddConsumerNodesRequest struct {
}
// AddConsumerNodes adds consumer nodes to SEP parameters
func (s SEP) AddConsumerNodes(ctx context.Context, req AddConsumerNodesRequest) (bool, error) {
func (s SEP) AddConsumerNodes(ctx context.Context, req AddConsumerNodesRequest) (uint64, error) {
err := validators.ValidateRequest(req)
if err != nil {
return false, validators.ValidationErrors(validators.GetErrors(err))
return 0, validators.ValidationErrors(validators.GetErrors(err))
}
url := "/cloudbroker/sep/addConsumerNodes"
res, err := s.client.DecortApiCall(ctx, http.MethodPost, url, req)
if err != nil {
return false, err
return 0, err
}
result, err := strconv.ParseBool(string(res))
result, err := strconv.ParseUint(string(res), 10, 64)
if err != nil {
return false, err
return 0, err
}
return result, nil

View File

@@ -20,22 +20,22 @@ type AddProviderNodesRequest struct {
}
// AddProviderNodes adds provider nodes to SEP parameters
func (s SEP) AddProviderNodes(ctx context.Context, req AddProviderNodesRequest) (bool, error) {
func (s SEP) AddProviderNodes(ctx context.Context, req AddProviderNodesRequest) (uint64, error) {
err := validators.ValidateRequest(req)
if err != nil {
return false, validators.ValidationErrors(validators.GetErrors(err))
return 0, validators.ValidationErrors(validators.GetErrors(err))
}
url := "/cloudbroker/sep/addProviderNodes"
res, err := s.client.DecortApiCall(ctx, http.MethodPost, url, req)
if err != nil {
return false, err
return 0, err
}
result, err := strconv.ParseBool(string(res))
result, err := strconv.ParseUint(string(res), 10, 64)
if err != nil {
return false, err
return 0, err
}
return result, nil

View File

@@ -20,7 +20,7 @@ type CreateRequest struct {
// Type of storage
// Required: true
SEPType string `url:"sep_type" json:"sep_type" validate:"required"`
SEPType string `url:"sep_type" json:"sep_type" validate:"required,sepType"`
// SEP config
// Required: true
@@ -30,14 +30,6 @@ type CreateRequest struct {
// Required: false
Description string `url:"description,omitempty" json:"description,omitempty"`
// List of provider node IDs
// Required: false
ProviderNIDs []uint64 `url:"provider_nids,omitempty" json:"provider_nids,omitempty"`
// List of consumer node IDs
// Required: false
ConsumerNIDs []uint64 `url:"consumer_nids,omitempty" json:"consumer_nids,omitempty"`
// Enable SEP after creation
// Required: false
Enable bool `url:"enable,omitempty" json:"enable,omitempty"`

View File

@@ -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"`

View File

@@ -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

View File

@@ -103,6 +103,9 @@ type AccessSEPPool struct {
// Pool names
PoolNames []string `json:"pool_names"`
// Technical status of the SEP
SepTechStatus string `json:"sep_tech_status"`
}
type Usage struct {

View File

@@ -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: false
AccessSEPsPools []AccessSEPsPool `url:"access_seps_pools,omitempty" json:"access_seps_pools,omitempty"`
// 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
}

View File

@@ -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.

View File

@@ -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"`

View File

@@ -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

View File

@@ -3,7 +3,6 @@ package user
import (
"context"
"net/http"
"strconv"
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v13/internal/validators"
)
@@ -14,9 +13,9 @@ type CreateRequest struct {
// Required: true
Username string `url:"username" json:"username" validate:"required"`
// Email addresses of the user.
// Email address of the user.
// Required: true
EmailAddress []string `url:"emailaddress" json:"emailaddress" validate:"required"`
EmailAddress string `url:"emailaddress" json:"emailaddress" validate:"required"`
// Password of user
// Required: false
@@ -34,23 +33,18 @@ type CreateRequest struct {
}
// Create creates a user.
func (u User) Create(ctx context.Context, req CreateRequest) (bool, error) {
func (u User) Create(ctx context.Context, req CreateRequest) (string, error) {
err := validators.ValidateRequest(req)
if err != nil {
return false, validators.ValidationErrors(validators.GetErrors(err))
return "", validators.ValidationErrors(validators.GetErrors(err))
}
url := "/cloudbroker/user/create"
res, err := u.client.DecortApiCall(ctx, http.MethodPost, url, req)
if err != nil {
return false, err
return "", err
}
result, err := strconv.ParseBool(string(res))
if err != nil {
return false, err
}
return result, nil
return string(res), nil
}

View File

@@ -28,6 +28,11 @@ type GetAuditRequest struct {
// Required: false
TimestampTo uint64 `url:"timestampTo,omitempty" json:"timestampTo,omitempty"`
// Sort by a field, format +|-(field)
// Default: -timestamp
// Required: false
SortBy string `url:"sortBy,omitempty" json:"sortBy,omitempty" validate:"omitempty,sortBy"`
// Page number.
// Required: false
Page uint64 `url:"page,omitempty" json:"page,omitempty"`

View File

@@ -104,16 +104,16 @@ type ItemAudit struct {
Call string `json:"Call"`
// Response time
ResponseTime ResponseTime `json:"Response Time"`
ResponseTime ResponseTime `json:"responsetime"`
// StatusCode
StatusCode StatusCode `json:"Status Code"`
StatusCode StatusCode `json:"statuscode"`
// Guid
GUID string `json:"Guid"`
// Time
Time float64 `json:"Time"`
Time float64 `json:"timestampEnd"`
}
type ListAudits struct {

View File

@@ -22,6 +22,10 @@ type ListGroupsRequest struct {
// Required: false
DisplayName string `url:"display_name,omitempty" json:"display_name,omitempty"`
// Owner display name filter
// Required: false
OwnerDisplayName string `url:"owner_display_name,omitempty" json:"owner_display_name,omitempty"`
// Page number for pagination
// Required: false
Page uint64 `url:"page,omitempty" json:"page,omitempty"`

View File

@@ -1,8 +1,9 @@
package acsgroups
type AccessGroupItem struct {
Name string `json:"display_name"`
ID string `json:"id"`
Name string `json:"display_name"`
ID string `json:"id"`
Comment string `json:"comment"`
}
type AccessGroupList struct {