This commit is contained in:
2026-08-21 17:52:28 +04:00
parent d7b8f08b4d
commit eb195dd992
116 changed files with 2719 additions and 1973 deletions

View File

@@ -1,76 +0,0 @@
package compute
import (
"context"
"encoding/json"
"net/http"
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
)
// AuditsRequest struct to get audit records
type AuditsRequest struct {
// ID of the compute
// Required: true
ComputeID uint64 `url:"compute_id" json:"compute_id" validate:"required"`
// Find all audits after point in time
// Required: false
TimestampAT uint64 `url:"timestamp_at,omitempty" json:"timestamp_at,omitempty"`
// Find all audits before point in time
// Required: false
TimestampTO uint64 `url:"timestamp_to,omitempty" json:"timestamp_to,omitempty"`
// Find by user
// Required: false
User string `url:"user,omitempty" json:"user,omitempty"`
// Find by api endpoints
// Required: false
Call string `url:"call,omitempty" json:"call,omitempty"`
// Sort by one of supported fields, format ±<field>
// Required: false
SortBy string `url:"sort_by,omitempty" json:"sort_by,omitempty"`
// Page number
// Required: false
Page uint64 `url:"page,omitempty" json:"page,omitempty"`
// Page size
// Required: false
Size uint64 `url:"size,omitempty" json:"size,omitempty"`
// Find by HTTP min status code
// Required: false
MinStatusCode uint64 `url:"min_status_code,omitempty" json:"min_status_code,omitempty"`
// Find by HTTP max status code
// Required: false
MaxStatusCode uint64 `url:"max_status_code,omitempty" json:"max_status_code,omitempty"`
}
// Audits gets audit records for the specified compute object
func (c Compute) Audits(ctx context.Context, req AuditsRequest) (*ListDetailedAudits, error) {
err := validators.ValidateRequest(req)
if err != nil {
return nil, validators.ValidationErrors(validators.GetErrors(err))
}
url := "/cloudbroker/compute/audits"
res, err := c.client.DecortApiCall(ctx, http.MethodGet, url, req)
if err != nil {
return nil, err
}
list := ListDetailedAudits{}
err = json.Unmarshal(res, &list)
if err != nil {
return nil, err
}
return &list, nil
}

View File

@@ -0,0 +1,84 @@
package compute
import (
"context"
"net/http"
"strconv"
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/constants"
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
)
type ChangeQoSPoliciesRequest struct {
// Compute ID
// Required: true
ComputeID uint64 `url:"compute_id" json:"compute_id" validate:"required"`
// Interface IP or MAC address
// Required: true
Interface string `url:"interface" json:"interface" validate:"required"`
// List of QoS Policy IDs to assign to this interface
// Required: false
QoSPolicyIDs []uint64 `url:"qos_policy_ids,omitempty" json:"qos_policy_ids,omitempty"`
}
type wrapperChangeQoSPoliciesRequest struct {
ChangeQoSPoliciesRequest
AsyncMode bool `url:"asyncMode"`
}
// ChangeQoSPolicies change qos policies for compute
func (c Compute) ChangeQoSPolicies(ctx context.Context, req ChangeQoSPoliciesRequest) (bool, error) {
err := validators.ValidateRequest(req)
if err != nil {
return false, validators.ValidationErrors(validators.GetErrors(err))
}
reqWrapped := wrapperChangeQoSPoliciesRequest{
ChangeQoSPoliciesRequest: req,
AsyncMode: false,
}
url := "/cloudbroker/compute/change_qos_policies"
res, err := c.client.DecortApiCallCtype(ctx, http.MethodPost, url, constants.MIMEJSON, reqWrapped)
if err != nil {
return false, err
}
result, err := strconv.ParseBool(string(res))
if err != nil {
return false, err
}
return result, nil
}
// ChangeQoSPolicies change qos policies for compute with AsyncMode
func (c Compute) ChangeQoSPoliciesAsync(ctx context.Context, req ChangeQoSPoliciesRequest) (bool, error) {
err := validators.ValidateRequest(req)
if err != nil {
return false, validators.ValidationErrors(validators.GetErrors(err))
}
reqWrapped := wrapperChangeQoSPoliciesRequest{
ChangeQoSPoliciesRequest: req,
AsyncMode: true,
}
url := "/cloudbroker/compute/change_qos_policies"
res, err := c.client.DecortApiCallCtype(ctx, http.MethodPost, url, constants.MIMEJSON, reqWrapped)
if err != nil {
return false, err
}
result, err := strconv.ParseBool(string(res))
if err != nil {
return false, err
}
return result, nil
}

View File

@@ -1,42 +0,0 @@
package compute
import (
"context"
"net/http"
"strconv"
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
)
// ComputeCISetRequest struct to set compute CI
type ComputeCISetRequest struct {
// ID of compute instance
// Required: true
ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
// ID of the Compute CI
// Required: true
ComputeCIID uint64 `url:"computeciId" json:"computeciId" validate:"required"`
}
// ComputeCISet sets compute CI ID for compute
func (c Compute) ComputeCISet(ctx context.Context, req ComputeCISetRequest) (bool, error) {
err := validators.ValidateRequest(req)
if err != nil {
return false, validators.ValidationErrors(validators.GetErrors(err))
}
url := "/cloudbroker/compute/computeciSet"
res, err := c.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
}

View File

@@ -1,38 +0,0 @@
package compute
import (
"context"
"net/http"
"strconv"
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
)
// ComputeCIUnsetRequest struct to unset compute CI
type ComputeCIUnsetRequest struct {
// ID of compute instance
// Required: true
ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
}
// ComputeCIUnset unsets compute CI ID from compute
func (c Compute) ComputeCIUnset(ctx context.Context, req ComputeCIUnsetRequest) (bool, error) {
err := validators.ValidateRequest(req)
if err != nil {
return false, validators.ValidationErrors(validators.GetErrors(err))
}
url := "/cloudbroker/compute/computeciUnset"
res, err := c.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
}

View File

@@ -1,40 +0,0 @@
package compute
import (
"context"
"encoding/json"
"net/http"
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
)
// GetAuditsRequest struct to get compute audits
type GetAuditsRequest struct {
// ID of compute instance
// Required: true
ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
}
// GetAudits gets compute audits
func (c Compute) GetAudits(ctx context.Context, req GetAuditsRequest) (ListAudits, error) {
err := validators.ValidateRequest(req)
if err != nil {
return nil, validators.ValidationErrors(validators.GetErrors(err))
}
url := "/cloudbroker/compute/getAudits"
res, err := c.client.DecortApiCall(ctx, http.MethodPost, url, req)
if err != nil {
return nil, err
}
list := ListAudits{}
err = json.Unmarshal(res, &list)
if err != nil {
return nil, err
}
return list, nil
}

View File

@@ -1,36 +0,0 @@
package compute
import (
"context"
"net/http"
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
)
// GetLogRequest struct to get compute logs
type GetLogRequest struct {
// ID of compute instance to get log for
// Required: true
ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
// Path to log file
// Required: true
Path string `url:"path" json:"path" validate:"required"`
}
// GetLog gets compute's log file by path
func (c Compute) GetLog(ctx context.Context, req GetLogRequest) (string, error) {
err := validators.ValidateRequest(req)
if err != nil {
return "", validators.ValidationErrors(validators.GetErrors(err))
}
url := "/cloudbroker/compute/getLog"
res, err := c.client.DecortApiCall(ctx, http.MethodGet, url, req)
if err != nil {
return "", err
}
return string(res), nil
}

View File

@@ -14,10 +14,6 @@ type ListPCIDeviceRequest struct {
// Required: true
ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
// Find by resource group ID
// Required: false
RGID uint64 `url:"rgId,omitempty" json:"rgId,omitempty"`
// Find by device id
// Required: false
DevID uint64 `url:"devId,omitempty" json:"devId,omitempty"`

View File

@@ -651,6 +651,9 @@ type ItemInterface struct {
// QOS
QOS QOS `json:"qos"`
// List of QoS Policy IDs
QoSPolicies []uint64 `json:"qos_policies"`
// List of security groups
SecGroups []uint64 `json:"security_groups"`
@@ -924,6 +927,9 @@ type InfoCompute struct {
// VINS connected
VINSConnected uint64 `json:"vinsConnected"`
// Watchdog action
WatchdogAction string `json:"watchdog_action"`
// Weight
Weight uint64 `json:"weight"`
@@ -1224,11 +1230,14 @@ type RecordCompute struct {
Userdata interface{} `json:"userdata"`
// List VGPU
VGPUs []VGPUItem `json:"vgpus"`
VGPUs []ItemVGPU `json:"vgpus"`
// VNC password
VNCPassword string `json:"vncPasswd"`
// Watchdog action
WatchdogAction string `json:"watchdog_action"`
// Weight
Weight uint64 `json:"weight"`
@@ -1491,7 +1500,7 @@ type SnapRecordCompute struct {
Userdata interface{} `json:"userdata"`
// List VGPU
VGPUs []VGPUItem `json:"vgpus"`
VGPUs []ItemVGPU `json:"vgpus"`
// VNC password
VNCPassword string `json:"vncPasswd"`
@@ -1511,65 +1520,6 @@ type LoaderMetaIso struct {
Path string `json:"path"`
}
type VGPUItem struct {
// ID
ID uint64 `json:"id"`
// GID
GID uint64 `json:"gid"`
// Type
Type string `json:"type"`
// Mode
Mode string `json:"mode"`
// Status
Status string `json:"status"`
// ProfileID
ProfileID uint64 `json:"profileId"`
// RAM
RAM uint64 `json:"ram"`
// LastUpdateTime
LastUpdateTime uint64 `json:"lastUpdateTime"`
// CreatedTime
CreatedTime uint64 `json:"createdTime"`
// DeletedTime
DeletedTime uint64 `json:"deletedTime"`
// VMID
VMID uint64 `json:"vmid"`
// PGPuid
PGPuid uint64 `json:"pgpuid"`
// ReferenceID
ReferenceID string `json:"referenceId"`
// AccountID
AccountID uint64 `json:"accountId"`
// RgID
RgID uint64 `json:"rgId"`
// LastClaimedBy
LastClaimedBy uint64 `json:"lastClaimedBy"`
// PCISlot
PCISlot uint64 `json:"pciSlot"`
// BusNumber
BusNumber uint64 `json:"bus_number"`
// GUID
GUID uint64 `json:"guid"`
}
// Information about of disk IDs
type ListInfoDisks []InfoDisk
@@ -1614,6 +1564,9 @@ type InfoDisk struct {
// SEP ID
SepID int64 `json:"sepId"`
// Image ID
ImageID uint64 `json:"imageId"`
// Read-only
ReadOnly bool `json:"read_only"`
}
@@ -1674,8 +1627,8 @@ type ItemPCIDevice struct {
// Name
Name string `json:"name"`
// Resource group ID
RGID uint64 `json:"rgId"`
// Account IDs
AccountIDs []uint64 `json:"account_ids"`
// Node ID
NodeID uint64 `json:"nodeId"`
@@ -1707,59 +1660,56 @@ type ListVGPUs struct {
// Main information about vgpu device
type ItemVGPU struct {
// Account ID
AccountID uint64 `json:"accountId"`
// Account IDs
AccountIDs []uint64 `json:"account_ids"`
// Created Time
CreatedTime uint64 `json:"createdTime"`
// Bus number
BusNumber int `json:"bus_number"`
// Deleted Time
DeletedTime uint64 `json:"deletedTime"`
// ComputeID
ComputeID uint64 `json:"compute_id"`
// GID
// Created time
CreatedTime uint64 `json:"created_time"`
// Deleted time
DeletedTime uint64 `json:"deleted_time"`
// Device Reference
DeviceReference string `json:"device_reference"`
//Grid ID
GID uint64 `json:"gid"`
// GUID
GUID uint64 `json:"guid"`
// ID
// VGPU ID
ID uint64 `json:"id"`
// Last Claimed By
LastClaimedBy uint64 `json:"lastClaimedBy"`
// Last Update time
LastUpdateTime uint64 `json:"last_update_time"`
// Last Update Time
LastUpdateTime uint64 `json:"lastUpdateTime"`
// Mdev UUID
MdevUUID string `json:"mdev_uuid"`
// Mode
Mode string `json:"mode"`
// Parent PCI Address
ParentPCIAddress string `json:"parent_pci_address"`
// PCI Slot
PCISlot uint64 `json:"pciSlot"`
PCISlot uint64 `json:"pci_slot"`
// PGPUID
PGPUID uint64 `json:"pgpuid"`
// PGPU ID
PGPUID uint64 `json:"pgpu_id"`
// Profile ID
ProfileID uint64 `json:"profileId"`
// Profile Reference
ProfileReference string `json:"profile_reference"`
// RAM
RAM uint64 `json:"ram"`
// Reference ID
ReferenceID string `json:"referenceId"`
// RG ID
RGID uint64 `json:"rgId"`
// Split Mode
SplitMode string `json:"split_mode"`
// Status
Status string `json:"status"`
// Type
Type string `json:"type"`
// VM ID
VMID uint64 `json:"vmid"`
}
type ListMigrateStorage struct {

View File

@@ -86,6 +86,10 @@ type NetAttachRequest struct {
// Required: false
// Default: true
EnableDefaultGateway interface{} `url:"enable_default_gateway,omitempty" json:"enable_default_gateway,omitempty" validate:"omitempty,isBool"`
// List of QoS Policy IDs to apply to this interface (default: []), Allow used only with netType VINS, EXTNET and DPDK
// Required: false
QoSPolicies []uint64 `url:"qos_policies,omitempty" json:"qos_policies,omitempty"`
}
type wrapperNetAttachRequest struct {

View File

@@ -78,6 +78,11 @@ type UpdateRequest struct {
// Required: false
// Default: null
Clock string `url:"clock,omitempty" json:"clock,omitempty"`
// Watchdog action
// Required: false
// Default: reset
WatchdogAction string `url:"watchdog_action,omitempty" json:"watchdog_action,omitempty" validate:"omitempty,watchdogAction"`
}
// Update updates some properties of the compute