v1.5.9
This commit is contained in:
@@ -2,16 +2,12 @@ package lb
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
|
||||
)
|
||||
|
||||
type Params []string
|
||||
|
||||
// Request struct for create load balancer
|
||||
type CreateRequest struct {
|
||||
// ID of the resource group where this load balancer instance will be located
|
||||
@@ -24,20 +20,12 @@ type CreateRequest struct {
|
||||
Name string `url:"name" json:"name" validate:"required"`
|
||||
|
||||
// External network to connect this load balancer to
|
||||
// Required: false
|
||||
ExtNetID uint64 `url:"extnetId" json:"extnetId"`
|
||||
// Required: true
|
||||
ExtNetID uint64 `url:"extnetId" json:"extnetId" validate:"required"`
|
||||
|
||||
// Internal network (VINS) to connect this load balancer to
|
||||
// Required: false
|
||||
VINSID uint64 `url:"vinsId" json:"vinsId"`
|
||||
|
||||
// Custom sysctl values for Load Balancer instance. Applied on boot
|
||||
// Required: false
|
||||
SysctlParams Params `url:"-" json:"sysctlParams,omitempty" validate:"omitempty,dive"`
|
||||
|
||||
// Use Highly Available schema for LB deploy
|
||||
// Required: false
|
||||
HighlyAvailable bool `url:"highlyAvailable,omitempty" json:"highlyAvailable,omitempty"`
|
||||
// Required: true
|
||||
VINSID uint64 `url:"vinsId" json:"vinsId" validate:"required"`
|
||||
|
||||
// Start now Load balancer
|
||||
// Required: false
|
||||
@@ -48,11 +36,6 @@ type CreateRequest struct {
|
||||
Description string `url:"desc,omitempty" json:"desc,omitempty"`
|
||||
}
|
||||
|
||||
type wrapperCreateRequest struct {
|
||||
CreateRequest
|
||||
Params []string `url:"sysctlParams,omitempty"`
|
||||
}
|
||||
|
||||
// Create method will create a new load balancer instance
|
||||
func (lb LB) Create(ctx context.Context, req CreateRequest) (uint64, error) {
|
||||
err := validators.ValidateRequest(req)
|
||||
@@ -62,35 +45,9 @@ func (lb LB) Create(ctx context.Context, req CreateRequest) (uint64, error) {
|
||||
}
|
||||
}
|
||||
|
||||
if req.ExtNetID == 0 && req.VINSID == 0 {
|
||||
return 0, errors.New("vinsId and extNetId cannot be both in the value 0")
|
||||
}
|
||||
|
||||
var params []string
|
||||
|
||||
if len(req.SysctlParams) != 0 {
|
||||
params = make([]string, 0, len(req.SysctlParams))
|
||||
|
||||
for r := range req.SysctlParams {
|
||||
b, err := json.Marshal(req.SysctlParams[r])
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
params = append(params, string(b))
|
||||
}
|
||||
} else {
|
||||
params = []string{}
|
||||
}
|
||||
|
||||
reqWrapped := wrapperCreateRequest{
|
||||
CreateRequest: req,
|
||||
Params: params,
|
||||
}
|
||||
|
||||
url := "/cloudbroker/lb/create"
|
||||
|
||||
res, err := lb.client.DecortApiCall(ctx, http.MethodPost, url, reqWrapped)
|
||||
res, err := lb.client.DecortApiCall(ctx, http.MethodPost, url, req)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
package lb
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
|
||||
)
|
||||
|
||||
// Request struct for make Load Balancer Highly available
|
||||
type HighlyAvailableRequest struct {
|
||||
// ID of the LB instance
|
||||
// Required: true
|
||||
LBID uint64 `url:"lbId" json:"lbId" validate:"required"`
|
||||
}
|
||||
|
||||
// Make Load Balancer Highly available
|
||||
func (l LB) HighlyAvailable(ctx context.Context, req HighlyAvailableRequest) (uint64, error) {
|
||||
err := validators.ValidateRequest(req)
|
||||
if err != nil {
|
||||
for _, validationError := range validators.GetErrors(err) {
|
||||
return 0, validators.ValidationError(validationError)
|
||||
}
|
||||
}
|
||||
|
||||
url := "/cloudbroker/lb/makeHighlyAvailable"
|
||||
|
||||
res, err := l.client.DecortApiCall(ctx, http.MethodPost, url, req)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
result, err := strconv.ParseUint(string(res), 10, 64)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
@@ -192,9 +192,6 @@ type RecordLB struct {
|
||||
// Name
|
||||
Name string `json:"name"`
|
||||
|
||||
// Part K8s
|
||||
PartK8s bool `json:"partK8s"`
|
||||
|
||||
// Primary node
|
||||
PrimaryNode Node `json:"primaryNode"`
|
||||
|
||||
@@ -207,9 +204,6 @@ type RecordLB struct {
|
||||
// Status
|
||||
Status string `json:"status"`
|
||||
|
||||
// Sysctl Params
|
||||
SysctlParams []string `json:"sysctlParams"`
|
||||
|
||||
// Tech status
|
||||
TechStatus string `json:"techStatus"`
|
||||
|
||||
@@ -285,9 +279,6 @@ type ItemLBList struct {
|
||||
// Status
|
||||
Status string `json:"status"`
|
||||
|
||||
// Sysctl Params
|
||||
SysctlParams []string `json:"sysctlParams"`
|
||||
|
||||
// Tech status
|
||||
TechStatus string `json:"techStatus"`
|
||||
|
||||
|
||||
@@ -1,72 +0,0 @@
|
||||
package lb
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"repository.basistech.ru/BASIS/decort-golang-sdk/internal/validators"
|
||||
)
|
||||
|
||||
// Request struct for update sysct params for lb
|
||||
type UpdateSysctParamsRequest struct {
|
||||
// ID of the LB instance
|
||||
// Required: true
|
||||
LBID uint64 `url:"lbId" json:"lbId" validate:"required"`
|
||||
|
||||
// Custom sysctl values for Load Balancer instance. Applied on boot
|
||||
// Required: true
|
||||
SysctlParams Params `url:"-" json:"sysctlParams" validate:"required,dive"`
|
||||
}
|
||||
|
||||
type wrapperUpdateSysctParamsRequest struct {
|
||||
UpdateSysctParamsRequest
|
||||
Params []string `url:"sysctlParams" validate:"required"`
|
||||
}
|
||||
|
||||
// Create method will create a new load balancer instance
|
||||
func (l LB) UpdateSysctParams(ctx context.Context, req UpdateSysctParamsRequest) (bool, error) {
|
||||
err := validators.ValidateRequest(req)
|
||||
if err != nil {
|
||||
for _, validationError := range validators.GetErrors(err) {
|
||||
return false, validators.ValidationError(validationError)
|
||||
}
|
||||
}
|
||||
|
||||
var params []string
|
||||
|
||||
if len(req.SysctlParams) != 0 {
|
||||
params = make([]string, 0, len(req.SysctlParams))
|
||||
|
||||
for r := range req.SysctlParams {
|
||||
b, err := json.Marshal(req.SysctlParams[r])
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
params = append(params, string(b))
|
||||
}
|
||||
} else {
|
||||
params = []string{}
|
||||
}
|
||||
|
||||
reqWrapped := wrapperUpdateSysctParamsRequest{
|
||||
UpdateSysctParamsRequest: req,
|
||||
Params: params,
|
||||
}
|
||||
|
||||
url := "/cloudbroker/lb/updateSysctParams"
|
||||
|
||||
res, err := l.client.DecortApiCall(ctx, http.MethodPost, url, reqWrapped)
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
result, err := strconv.ParseBool(string(res))
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
Reference in New Issue
Block a user