This commit is contained in:
2023-04-28 11:46:58 +03:00
parent 7d6cda7119
commit aaf0857ff0
38 changed files with 744 additions and 86 deletions

View File

@@ -123,6 +123,12 @@ type InfoAccount struct {
// Company URL
CompanyURL string `json:"companyurl"`
// CPU allocation parameter
CPUAllocationParameter string `json:"cpu_allocation_parameter"`
// CPU allocation ratio
CPUAllocationRatio float64 `json:"cpu_allocation_ratio"`
// Created by
CreatedBy string `json:"createdBy"`
@@ -154,7 +160,7 @@ type InfoAccount struct {
ResourceLimits ResourceLimits `json:"resourceLimits"`
// Resource types
ResourceTypes []string `json:"resourceTypes"`
ResTypes []string `json:"resourceTypes"`
// Send access emails
SendAccessEmails bool `json:"sendAccessEmails"`

View File

@@ -0,0 +1,45 @@
package account
import (
"context"
"net/http"
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
"strconv"
)
// Request for setting CPU allocation parameter
type SetCPUAllocationParameterRequest struct {
// Account ID
// Required: true
AccountID uint64 `url:"accountId" json:"accoutnId" validate:"required"`
// CPU allocation parameter.
// If "strict" VM can't be run if not enough CPU resources.
// "loose" allow running VM if not enough resources.
// Required: true
StrictLoose string `url:"strict_loose" json:"strict_loose" validate:"required,strict_loose"`
}
// SetCPUAllocationParameter sets CPU allocation parameter
func (a Account) SetCPUAllocationParameter(ctx context.Context, req SetCPUAllocationParameterRequest) (bool, error) {
err := validators.ValidateRequest(req)
if err != nil {
for _, validationError := range validators.GetErrors(err) {
return false, validators.ValidationError(validationError)
}
}
url := "/cloudbroker/account/setCpuAllocationParameter"
res, err := a.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

@@ -0,0 +1,43 @@
package account
import (
"context"
"net/http"
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
"strconv"
)
// Request for setting CPU allocation ratio
type SetCPUAllocationRatioRequest struct {
// Account ID
// Required: true
AccountID uint64 `url:"accountId" json:"accoutnId" validate:"required"`
// CPU allocation ratio, i.e. one pCPU = ratio*vCPU
// Required: true
Ratio float64 `url:"ratio" json:"ratio" validate:"required"`
}
// SetCPUAllocationRatio sets CPU allocation ratio
func (a Account) SetCPUAllocationRatio(ctx context.Context, req SetCPUAllocationRatioRequest) (bool, error) {
err := validators.ValidateRequest(req)
if err != nil {
for _, validationError := range validators.GetErrors(err) {
return false, validators.ValidationError(validationError)
}
}
url := "/cloudbroker/account/setCpuAllocationRatio"
res, err := a.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

@@ -0,0 +1,47 @@
package compute
import (
"context"
"net/http"
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
"strconv"
)
// Request struct for changing link state
type ChangeLinkStateRequest struct {
// Compute ID
// Required: true
ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
// Interface name or MAC address
// Required: true
Interface string `url:"interface" json:"interface" validate:"required"`
// Interface state
// Must be either "on" or "off"
// Required: true
State string `url:"state" json:"state" validate:"required,interfaceState"`
}
// ChangeLinkState changes the status link virtual of compute
func (c Compute) ChangeLinkState(ctx context.Context, req ChangeLinkStateRequest) (bool, error) {
err := validators.ValidateRequest(req)
if err != nil {
for _, validationError := range validators.GetErrors(err) {
return false, validators.ValidationError(validationError)
}
}
url := "/cloudbroker/compute/changeLinkState"
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

@@ -12,27 +12,27 @@ import (
type DiskAddRequest struct {
// ID of compute instance
// Required: true
ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
ComputeID uint64 `url:"computeId" json:"computeId" validate:"required"`
// Name for disk
// Required: true
DiskName string `url:"diskName" json:"diskName" validate:"required"`
DiskName string `url:"diskName" json:"diskName" validate:"required"`
// Disk size in GB
// Required: true
Size uint64 `url:"size" json:"size" validate:"required"`
Size uint64 `url:"size" json:"size" validate:"required"`
// Storage endpoint provider ID
// By default the same with boot disk
// Required: false
SepID uint64 `url:"sepId,omitempty" json:"sepId,omitempty"`
// Type of the disk
// Should be one of:
// - D
// - B
// Required: false
DiskType string `url:"diskType,omitempty" json:"diskType,omitempty" validate:"omitempty,computeDiskType"`
// Storage endpoint provider ID
// By default the same with boot disk
// Required: false
SepID uint64 `url:"sepId,omitempty" json:"sepId,omitempty"`
DiskType string `url:"diskType,omitempty" json:"diskType,omitempty" validate:"omitempty,computeDiskType"`
// Pool name
// By default will be chosen automatically

View File

@@ -147,7 +147,7 @@ type RecordNetAttach struct {
NetType string `json:"netType"`
// PCI slot
PCISlot uint64 `json:"pciSlot"`
PCISlot int64 `json:"pciSlot"`
// QOS
QOS QOS `json:"qos"`
@@ -396,7 +396,7 @@ type ItemDisk struct {
Password string `json:"passwd"`
// PCI slot
PCISlot uint64 `json:"pciSlot"`
PCISlot int64 `json:"pciSlot"`
// Pool
Pool string `json:"pool"`
@@ -498,7 +498,7 @@ type ItemInterface struct {
NetType string `json:"netType"`
// PCI slot
PCISlot uint64 `json:"pciSlot"`
PCISlot int64 `json:"pciSlot"`
// QOS
QOS QOS `json:"qos"`
@@ -738,7 +738,7 @@ type InfoDisk struct {
ID uint64 `json:"id"`
// PCISlot
PCISlot uint64 `json:"pciSlot"`
PCISlot int64 `json:"pciSlot"`
}
// List computes

View File

@@ -0,0 +1,45 @@
package grid
import (
"context"
"net/http"
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
"strconv"
)
// Request for setting CPU allocation parameter
type SetCPUAllocationParameterRequest struct {
// Grid ID
// Required: true
GridID uint64 `url:"gridId" json:"gridId" validate:"required"`
// CPU allocation parameter.
// If "strict" VM can't be run if not enough CPU resources.
// "loose" allow running VM if not enough resources.
// Required: true
StrictLoose string `url:"strict_loose" json:"strict_loose" validate:"required,strict_loose"`
}
// SetCPUAllocationParameter sets CPU allocation parameter
func (g Grid) SetCPUAllocationParameter(ctx context.Context, req SetCPUAllocationParameterRequest) (bool, error) {
err := validators.ValidateRequest(req)
if err != nil {
for _, validationError := range validators.GetErrors(err) {
return false, validators.ValidationError(validationError)
}
}
url := "/cloudbroker/grid/setCpuAllocationParameter"
res, err := g.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

@@ -0,0 +1,43 @@
package grid
import (
"context"
"net/http"
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
"strconv"
)
// Request for setting CPU allocation ratio for computes
type SetCPUAllocationRatioForVMRequest struct {
// Grid ID
// Required: true
GridID uint64 `url:"gridId" json:"gridId" validate:"required"`
// Default CPU allocation ratio for computes
// Required: true
Ratio float64 `url:"ratio" json:"ratio" validate:"required"`
}
// SetCPUAllocationRatio sets CPU allocation ratio for computes
func (g Grid) SetCPUAllocationRatioForVM(ctx context.Context, req SetCPUAllocationRatioForVMRequest) (bool, error) {
err := validators.ValidateRequest(req)
if err != nil {
for _, validationError := range validators.GetErrors(err) {
return false, validators.ValidationError(validationError)
}
}
url := "/cloudbroker/grid/setCpuAllocationRatioForVM"
res, err := g.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

@@ -34,6 +34,11 @@ type CreateRequest struct {
// Required: true
MasterDriver string `url:"masterDriver" json:"masterDriver" validate:"driver"`
// Network plugins
// Values of slice must be flannel, weawenet or calico
//Required: true
NetworkPlugins []string `url:"networkPlugins" json:"networkPlugins" validate:"required,networkPlugins"`
// Image ID for worker K8S node
// Required: true
WorkerImageID uint64 `url:"workerImageId" json:"workerImageId" validate:"required"`

View File

@@ -26,6 +26,11 @@ type CreateRequest struct {
// Required: true
WorkerGroupName string `url:"workerGroupName" json:"workerGroupName" validate:"required"`
// Network plugin
// Must be one of these values: flunnel, weawenet, calico
// Required: true
NetworkPlugin string `url:"networkPlugin" json:"networkPlugin" validate:"required,networkPlugin"`
// ID of SEP to create boot disks for master nodes.
// Uses images SEP ID if not set
// Required: false

View File

@@ -101,6 +101,9 @@ type RecordK8S struct {
// Name
Name string `json:"name"`
// Network plugin
NetworkPlugin string `json:"networkPlugin"`
// Resource group ID
RGID uint64 `json:"rgId"`
@@ -245,6 +248,9 @@ type ItemK8S struct {
// Name
Name string `json:"name"`
// Network plugin
NetworkPlugin string `json:"networkPlugin"`
// Resource group ID
RGID uint64 `json:"rgId"`

View File

@@ -131,6 +131,12 @@ type ItemRG struct {
// List ACL
ACL ListACL `json:"acl"`
// CPU allocation parameter
CPUAllocationParameter string `json:"cpu_allocation_parameter"`
// CPU allocation ratio
CPUAllocationRatio float64 `json:"cpu_allocation_ratio"`
// Created by
CreatedBy string `json:"createdBy"`
@@ -176,12 +182,18 @@ type ItemRG struct {
// Resource limits
ResourceLimits ResourceLimits `json:"resourceLimits"`
// Resource types list
ResTypes []string `json:"resourceTypes"`
// Secret
Secret string `json:"secret"`
// Status
Status string `json:"status"`
// Uniq pools
UniqPools []string `json:"uniqPools"`
// Updated by
UpdatedBy string `json:"updatedBy"`
@@ -193,12 +205,6 @@ type ItemRG struct {
// List virtual machine IDs
VMs []uint64 `json:"vms"`
// Resource types list
ResTypes []string `json:"resourceTypes"`
// Uniq pools
UniqPools []string `json:"uniqPools"`
}
// List resource groups

View File

@@ -0,0 +1,45 @@
package rg
import (
"context"
"net/http"
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
"strconv"
)
// Request for setting CPU allocation parameter
type SetCPUAllocationParameterRequest struct {
// Resource group ID
// Required: true
RGID uint64 `url:"rgId" json:"rgId" validate:"required"`
// CPU allocation parameter.
// If "strict" VM can't be run if not enough CPU resources.
// "loose" allow running VM if not enough resources.
// Required: true
StrictLoose string `url:"strict_loose" json:"strict_loose" validate:"required,strict_loose"`
}
// SetCPUAllocationParameter sets CPU allocation parameter
func (r RG) SetCPUAllocationParameter(ctx context.Context, req SetCPUAllocationParameterRequest) (bool, error) {
err := validators.ValidateRequest(req)
if err != nil {
for _, validationError := range validators.GetErrors(err) {
return false, validators.ValidationError(validationError)
}
}
url := "/cloudbroker/rg/setCpuAllocationParameter"
res, err := r.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

@@ -0,0 +1,43 @@
package rg
import (
"context"
"net/http"
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
"strconv"
)
// Request for setting CPU allocation ratio
type SetCPUAllocationRatioRequest struct {
// Resource group ID
// Required: true
RGID uint64 `url:"rgId" json:"rgId" validate:"required"`
// CPU allocation ratio, i.e. one pCPU = ratio*vCPU
// Required: true
Ratio float64 `url:"ratio" json:"ratio" validate:"required"`
}
// SetCPUAllocationRatio sets CPU allocation ratio
func (r RG) SetCPUAllocationRatio(ctx context.Context, req SetCPUAllocationRatioRequest) (bool, error) {
err := validators.ValidateRequest(req)
if err != nil {
for _, validationError := range validators.GetErrors(err) {
return false, validators.ValidationError(validationError)
}
}
url := "/cloudbroker/rg/setCpuAllocationRatio"
res, err := r.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

@@ -138,7 +138,7 @@ type ItemInterface struct {
NetType string `json:"netType"`
// PCI slot
PCISlot uint64 `json:"pciSlot"`
PCISlot int64 `json:"pciSlot"`
// QOS
QOS QOS `json:"qos"`