You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
dynamix-golang-sdk/pkg/cloudbroker/k8s/workers_group_add.go

103 lines
3.1 KiB

package k8s
import (
"context"
"net/http"
"strings"
"repository.basistech.ru/BASIS/dynamix-golang-sdk/v12/internal/validators"
)
// WorkersGroupAddRequest struct to add workers group
type WorkersGroupAddRequest struct {
// Kubernetes cluster ID
// Required: true
K8SID uint64 `url:"k8sId" json:"k8sId" validate:"required"`
// Worker group name
// Required: true
Name string `url:"name" json:"name" validate:"required"`
// ID of the chosen storage policy
// Required: true
StoragePolicyID uint64 `url:"storage_policy_id" json:"storage_policy_id" validate:"required"`
// ID of SEP to create boot disks for default worker nodes group.
// Uses images SEP ID if not set
// Required: false
WorkerSEPID uint64 `url:"workerSepId,omitempty" json:"workerSepId,omitempty"`
// Pool to use if worker SEP ID is set, can be also empty if
// needed to be chosen by system
// Required: false
WorkerSEPPool string `url:"workerSepPool,omitempty" json:"workerSepPool,omitempty"`
// List of strings with labels for worker group
// i.e: ["label1=value1", "label2=value2"]
// Required: false
Labels []string `url:"labels,omitempty" json:"labels,omitempty"`
// List of strings with taints for worker group
// i.e: ["key1=value1:NoSchedule", "key2=value2:NoExecute"]
// Required: false
Taints []string `url:"taints,omitempty" json:"taints,omitempty"`
// List of strings with annotations for worker group
// i.e: ["key1=value1", "key2=value2"]
// Required: false
Annotations []string `url:"annotations,omitempty" json:"annotations,omitempty"`
// Number of worker nodes to create
// Required: false
WorkerNum uint64 `url:"workerNum,omitempty" json:"workerNum,omitempty"`
// Worker node CPU count
// Required: false
WorkerCPU uint64 `url:"workerCpu,omitempty" json:"workerCpu,omitempty"`
// Worker node RAM volume in MB
// Required: false
WorkerRAM uint64 `url:"workerRam,omitempty" json:"workerRam,omitempty"`
// Worker node boot disk size in GB If 0 is specified, size is defined by the OS image size
// Required: false
WorkerDisk uint64 `url:"workerDisk,omitempty" json:"workerDisk,omitempty"`
// Meta data for working group computes, format YAML "user_data": 1111
// Required: false
UserData string `url:"userData,omitempty" json:"userData,omitempty"`
// Type of the emulated system, Q35 or i440fx
// Required: false
Chipset string `url:"chipset,omitempty" json:"chipset,omitempty" validate:"omitempty,chipset"`
}
// GetRAM returns RAM field values
func (r WorkersGroupAddRequest) GetRAM() map[string]uint64 {
res := make(map[string]uint64, 1)
res["WorkerRAM"] = r.WorkerRAM
return res
}
// WorkersGroupAdd adds workers group to kubernetes cluster
func (k K8S) WorkersGroupAdd(ctx context.Context, req WorkersGroupAddRequest) (string, error) {
err := validators.ValidateRequest(req)
if err != nil {
return "", validators.ValidationErrors(validators.GetErrors(err))
}
url := "/cloudbroker/k8s/workersGroupAdd"
res, err := k.client.DecortApiCall(ctx, http.MethodPost, url, req)
if err != nil {
return "", err
}
result := strings.ReplaceAll(string(res), "\"", "")
return result, nil
}