diff --git a/CHANGELOG.md b/CHANGELOG.md index 2ce0847..82b8c64 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,21 +1,24 @@ ## Version 1.6.0 ### Bugfix -- Fix cloudaApi/client and cloudapi/legacy-client, the cyclicity of sending requests has been removed -- Edit description field SSLSkipVerify in cloudapi/config/config and cloudapi/config/legacy-config -- Remove tags required fields ExtNetID VINSID Start in model CreateRequest in cloudapi/lb/create +- Fix client and legacy-client, the cyclicity of sending requests has been removed +- Edit description field SSLSkipVerify in config/config and config/legacy-config +- Remove tags required fields ExtNetID VINSID Start in model CreateRequest in cloudapi/lb/create and cloudbroker/lb/create - Add tags required fields BindingName BindingAddress BindingPort in model FrontendBindRequest in cloudapi/lb/frontend_bind - Add tags required fields BindingAddress BindingPort in model FrontendBindUpdateRequest in cloudapi/lb/frontend_bind_update +- Remove tags omitempty in field Start in model kvmx86 and kvmppc in cloudapi and cloudbroker /create /mass_create +- Add field Driver in models cloudbroker/kvmx86/create and cloudbroker/kvmx86/create_blank +- Add field ExternalIp in model ItemDetailedInfo cloudbroker/k8s/models and cloudapi/k8s/models +- Add fields StackID and Reason in model CreateRequest cloudbroker/kvmppc ### Feature - Add field UserData in cloudapi/bservice/group_add -- Add fields VinsId, LbSysctlParams, HighlyAvailable, AdditionalSANs, InitConfiguration, ClusterConfiguration, KubeletConfiguration, KubeProxyConfiguration, JoinConfiguration, UserData, ExtNetOnly, OidcCertificate in model request cloudapi/k8s/create -- Add field Externalip in model ItemDetailedInfo in cloudapi/k8s/models -- Add fields SysctlParams, HighlyAvailable in model CreateRequest in cloudapi/lb/create -- Add fields BackendHAIP, FrontendHAIP, PartK8s, SysctlParams in model RecordLB in cloudapi/lb/models +- Add fields VinsId, LbSysctlParams, HighlyAvailable, AdditionalSANs, InitConfiguration, ClusterConfiguration, KubeletConfiguration, KubeProxyConfiguration, JoinConfiguration, UserData, ExtNetOnly, OidcCertificate in model request cloudapi/k8s/create and cloudbroker/k8s/create +- Add fields SysctlParams, HighlyAvailable in model CreateRequest in cloudapi/lb/create and cloudbroker/lb/create +- Add fields BackendHAIP, FrontendHAIP, PartK8s, SysctlParams in model RecordLB in cloudapi/lb/models and cloudbroker/lb/models - Add models InfoStack, ItemStack, ListStacks cloudapi/stack/models - Add field Routes and type Route in CreateInAccountRequest and CreateInRGRequest models in cloudapi/vins/create_in_rg and /cloudapi/vins/create_in_account -- Add field Enabled in model ItemVNFInterface +- Add field Enabled in model ItemVNFInterface in cloudapi/vins/models - Add fields Routes in models RecordNAT, RecordDHCP, RecordGW and add type ListStaticRoutes, ListRoutes, ItemRoutes in cloudapi/vins/models - Added new endpoints: @@ -30,3 +33,20 @@ - cloudapi/vins/static_route_access_revoke - cloudapi/vins/static_route_add - cloudapi/vins/static_route_del +- cloudbroker/compute/set_custom_fields +- cloudbroker/k8s/get_worker_nodes_meta_data +- cloudbroker/k8s/update_worker_nodes_meta_data +- cloudbroker/lb/make_highly_available +- cloudbroker/lb/updateSysctParams +- cloudbroker/vins/static_route_list +- cloudbroker/vins/static_route_access_grant +- cloudbroker/vins/static_route_access_revoke +- cloudbroker/vins/static_route_add +- cloudbroker/vins/static_route_del +- cloudbroker/extnet/static_route_list +- cloudbroker/extnet/static_route_access_grant +- cloudbroker/extnet/static_route_access_revoke +- cloudbroker/extnet/static_route_add +- cloudbroker/extnet/static_route_del + + diff --git a/client.go b/client.go index 24495c2..e09542c 100644 --- a/client.go +++ b/client.go @@ -15,9 +15,9 @@ import ( "time" "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi" - "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/k8s" + k8s_ca "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/k8s" "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker" - + k8s_cb"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/k8s" "github.com/google/go-querystring/query" "repository.basistech.ru/BASIS/decort-golang-sdk/config" ) @@ -71,113 +71,252 @@ func (dc *DecortClient) CloudBroker() *cloudbroker.CloudBroker { // DecortApiCall method for sending requests to the platform func (dc *DecortClient) DecortApiCall(ctx context.Context, method, url string, params interface{}) ([]byte, error) { - if k8sCreateReq, ok := params.(k8s.CreateRequest); ok { + k8sCaCreateReq, okCa := params.(k8s_ca.CreateRequest) + k8sCbCreateReq, okCb := params.(k8s_cb.CreateRequest) + + if okCa { reqBody := &bytes.Buffer{} writer := multipart.NewWriter(reqBody) - if k8sCreateReq.OidcCertificate != "" { + if k8sCaCreateReq.OidcCertificate != "" { part, _ := writer.CreateFormFile("oidcCertificate", "ca.crt") - _, _ = io.Copy(part, strings.NewReader(k8sCreateReq.OidcCertificate)) + _, _ = io.Copy(part, strings.NewReader(k8sCaCreateReq.OidcCertificate)) } - _ = writer.WriteField("name", k8sCreateReq.Name) - _ = writer.WriteField("rgId", strconv.FormatUint(k8sCreateReq.RGID, 10)) - _ = writer.WriteField("k8ciId", strconv.FormatUint(k8sCreateReq.K8SCIID, 10)) - _ = writer.WriteField("workerGroupName", k8sCreateReq.WorkerGroupName) - _ = writer.WriteField("networkPlugin", k8sCreateReq.NetworkPlugin) + _ = writer.WriteField("name", k8sCaCreateReq.Name) + _ = writer.WriteField("rgId", strconv.FormatUint(k8sCaCreateReq.RGID, 10)) + _ = writer.WriteField("k8ciId", strconv.FormatUint(k8sCaCreateReq.K8SCIID, 10)) + _ = writer.WriteField("workerGroupName", k8sCaCreateReq.WorkerGroupName) + _ = writer.WriteField("networkPlugin", k8sCaCreateReq.NetworkPlugin) - if k8sCreateReq.MasterSEPID != 0 { - _ = writer.WriteField("masterSepId", strconv.FormatUint(k8sCreateReq.MasterSEPID, 10)) + if k8sCaCreateReq.MasterSEPID != 0 { + _ = writer.WriteField("masterSepId", strconv.FormatUint(k8sCaCreateReq.MasterSEPID, 10)) } - if k8sCreateReq.MasterSEPPool != "" { - _ = writer.WriteField("masterSepPool", k8sCreateReq.MasterSEPPool) + if k8sCaCreateReq.MasterSEPPool != "" { + _ = writer.WriteField("masterSepPool", k8sCaCreateReq.MasterSEPPool) } - if k8sCreateReq.WorkerSEPID != 0 { - _ = writer.WriteField("workerSepId", strconv.FormatUint(k8sCreateReq.WorkerSEPID, 10)) + if k8sCaCreateReq.WorkerSEPID != 0 { + _ = writer.WriteField("workerSepId", strconv.FormatUint(k8sCaCreateReq.WorkerSEPID, 10)) } - if k8sCreateReq.WorkerSEPPool != "" { - _ = writer.WriteField("workerSepPool", k8sCreateReq.WorkerSEPPool) + if k8sCaCreateReq.WorkerSEPPool != "" { + _ = writer.WriteField("workerSepPool", k8sCaCreateReq.WorkerSEPPool) } - if k8sCreateReq.Labels != nil { - for _, v := range k8sCreateReq.Labels { + if k8sCaCreateReq.Labels != nil { + for _, v := range k8sCaCreateReq.Labels { _ = writer.WriteField("labels", v) } } - if k8sCreateReq.Taints != nil { - for _, v := range k8sCreateReq.Taints { + if k8sCaCreateReq.Taints != nil { + for _, v := range k8sCaCreateReq.Taints { _ = writer.WriteField("taints", v) } } - if k8sCreateReq.Annotations != nil { - for _, v := range k8sCreateReq.Annotations { + if k8sCaCreateReq.Annotations != nil { + for _, v := range k8sCaCreateReq.Annotations { _ = writer.WriteField("annotations", v) } } - if k8sCreateReq.MasterCPU != 0 { - _ = writer.WriteField("masterCpu", strconv.FormatUint(uint64(k8sCreateReq.MasterCPU), 10)) + if k8sCaCreateReq.MasterCPU != 0 { + _ = writer.WriteField("masterCpu", strconv.FormatUint(uint64(k8sCaCreateReq.MasterCPU), 10)) } - if k8sCreateReq.MasterNum != 0 { - _ = writer.WriteField("masterNum", strconv.FormatUint(uint64(k8sCreateReq.MasterNum), 10)) + if k8sCaCreateReq.MasterNum != 0 { + _ = writer.WriteField("masterNum", strconv.FormatUint(uint64(k8sCaCreateReq.MasterNum), 10)) } - if k8sCreateReq.MasterRAM != 0 { - _ = writer.WriteField("masterRam", strconv.FormatUint(uint64(k8sCreateReq.MasterRAM), 10)) + if k8sCaCreateReq.MasterRAM != 0 { + _ = writer.WriteField("masterRam", strconv.FormatUint(uint64(k8sCaCreateReq.MasterRAM), 10)) } - if k8sCreateReq.MasterDisk != 0 { - _ = writer.WriteField("masterDisk", strconv.FormatUint(uint64(k8sCreateReq.MasterDisk), 10)) + if k8sCaCreateReq.MasterDisk != 0 { + _ = writer.WriteField("masterDisk", strconv.FormatUint(uint64(k8sCaCreateReq.MasterDisk), 10)) } - if k8sCreateReq.WorkerCPU != 0 { - _ = writer.WriteField("workerCpu", strconv.FormatUint(uint64(k8sCreateReq.WorkerCPU), 10)) + if k8sCaCreateReq.WorkerCPU != 0 { + _ = writer.WriteField("workerCpu", strconv.FormatUint(uint64(k8sCaCreateReq.WorkerCPU), 10)) } - if k8sCreateReq.WorkerNum != 0 { - _ = writer.WriteField("workerNum", strconv.FormatUint(uint64(k8sCreateReq.WorkerNum), 10)) + if k8sCaCreateReq.WorkerNum != 0 { + _ = writer.WriteField("workerNum", strconv.FormatUint(uint64(k8sCaCreateReq.WorkerNum), 10)) } - if k8sCreateReq.WorkerRAM != 0 { - _ = writer.WriteField("workerRam", strconv.FormatUint(uint64(k8sCreateReq.WorkerRAM), 10)) + if k8sCaCreateReq.WorkerRAM != 0 { + _ = writer.WriteField("workerRam", strconv.FormatUint(uint64(k8sCaCreateReq.WorkerRAM), 10)) } - if k8sCreateReq.WorkerDisk != 0 { - _ = writer.WriteField("workerDisk", strconv.FormatUint(uint64(k8sCreateReq.WorkerDisk), 10)) + if k8sCaCreateReq.WorkerDisk != 0 { + _ = writer.WriteField("workerDisk", strconv.FormatUint(uint64(k8sCaCreateReq.WorkerDisk), 10)) } - if k8sCreateReq.ExtNetID != 0 { - _ = writer.WriteField("extnetId", strconv.FormatUint(k8sCreateReq.ExtNetID, 10)) + if k8sCaCreateReq.ExtNetID != 0 { + _ = writer.WriteField("extnetId", strconv.FormatUint(k8sCaCreateReq.ExtNetID, 10)) } - if k8sCreateReq.VinsId != 0 { - _ = writer.WriteField("vinsId", strconv.FormatUint(k8sCreateReq.VinsId, 10)) + if k8sCaCreateReq.VinsId != 0 { + _ = writer.WriteField("vinsId", strconv.FormatUint(k8sCaCreateReq.VinsId, 10)) } - if !k8sCreateReq.WithLB { - _ = writer.WriteField("withLB", strconv.FormatBool(k8sCreateReq.WithLB)) + if !k8sCaCreateReq.WithLB { + _ = writer.WriteField("withLB", strconv.FormatBool(k8sCaCreateReq.WithLB)) } - _ = writer.WriteField("highlyAvailable", strconv.FormatBool(k8sCreateReq.HighlyAvailable)) + _ = writer.WriteField("highlyAvailable", strconv.FormatBool(k8sCaCreateReq.HighlyAvailable)) - if k8sCreateReq.AdditionalSANs != nil { - for _, v := range k8sCreateReq.AdditionalSANs { + if k8sCaCreateReq.AdditionalSANs != nil { + for _, v := range k8sCaCreateReq.AdditionalSANs { _ = writer.WriteField("additionalSANs", v) } } - if k8sCreateReq.InitConfiguration != "" { - _ = writer.WriteField("initConfiguration", k8sCreateReq.InitConfiguration) + if k8sCaCreateReq.InitConfiguration != "" { + _ = writer.WriteField("initConfiguration", k8sCaCreateReq.InitConfiguration) } - if k8sCreateReq.ClusterConfiguration != "" { - _ = writer.WriteField("clusterConfiguration", k8sCreateReq.ClusterConfiguration) + if k8sCaCreateReq.ClusterConfiguration != "" { + _ = writer.WriteField("clusterConfiguration", k8sCaCreateReq.ClusterConfiguration) } - if k8sCreateReq.KubeletConfiguration != "" { - _ = writer.WriteField("kubeletConfiguration", k8sCreateReq.KubeletConfiguration) + if k8sCaCreateReq.KubeletConfiguration != "" { + _ = writer.WriteField("kubeletConfiguration", k8sCaCreateReq.KubeletConfiguration) } - if k8sCreateReq.KubeProxyConfiguration != "" { - _ = writer.WriteField("kubeProxyConfiguration", k8sCreateReq.KubeProxyConfiguration) + if k8sCaCreateReq.KubeProxyConfiguration != "" { + _ = writer.WriteField("kubeProxyConfiguration", k8sCaCreateReq.KubeProxyConfiguration) } - if k8sCreateReq.JoinConfiguration != "" { - _ = writer.WriteField("joinConfiguration", k8sCreateReq.JoinConfiguration) + if k8sCaCreateReq.JoinConfiguration != "" { + _ = writer.WriteField("joinConfiguration", k8sCaCreateReq.JoinConfiguration) } - if k8sCreateReq.Description != "" { - _ = writer.WriteField("desc", k8sCreateReq.Description) + if k8sCaCreateReq.Description != "" { + _ = writer.WriteField("desc", k8sCaCreateReq.Description) } - if k8sCreateReq.UserData != "" { - _ = writer.WriteField("userData", k8sCreateReq.UserData) + if k8sCaCreateReq.UserData != "" { + _ = writer.WriteField("userData", k8sCaCreateReq.UserData) } - _ = writer.WriteField("extnetOnly", strconv.FormatBool(k8sCreateReq.ExtNetOnly)) + _ = writer.WriteField("extnetOnly", strconv.FormatBool(k8sCaCreateReq.ExtNetOnly)) + _ = writer.FormDataContentType() + + ct := writer.FormDataContentType() + + writer.Close() + req, err := http.NewRequestWithContext(ctx, method, dc.decortURL+"/restmachine"+url, reqBody) + if err != nil { + return nil, err + } + if err = dc.getToken(ctx); err != nil { + return nil, err + } + + resp, err := dc.domp(req, ct) + if err != nil { + return nil, err + } + defer resp.Body.Close() + + respBytes, err := io.ReadAll(resp.Body) + if err != nil { + return nil, err + } + + if resp.StatusCode != 200 { + return nil, errors.New(string(respBytes)) + } + + return respBytes, nil + } else if okCb { + reqBody := &bytes.Buffer{} + writer := multipart.NewWriter(reqBody) + if k8sCbCreateReq.OidcCertificate != "" { + part, _ := writer.CreateFormFile("oidcCertificate", "ca.crt") + _, _ = io.Copy(part, strings.NewReader(k8sCbCreateReq.OidcCertificate)) + } + + _ = writer.WriteField("name", k8sCbCreateReq.Name) + _ = writer.WriteField("rgId", strconv.FormatUint(k8sCbCreateReq.RGID, 10)) + _ = writer.WriteField("k8ciId", strconv.FormatUint(k8sCbCreateReq.K8CIID, 10)) + _ = writer.WriteField("workerGroupName", k8sCbCreateReq.WorkerGroupName) + _ = writer.WriteField("networkPlugin", k8sCbCreateReq.NetworkPlugin) + + if k8sCbCreateReq.MasterSEPID != 0 { + _ = writer.WriteField("masterSepId", strconv.FormatUint(k8sCbCreateReq.MasterSEPID, 10)) + } + if k8sCbCreateReq.MasterSEPPool != "" { + _ = writer.WriteField("masterSepPool", k8sCbCreateReq.MasterSEPPool) + } + if k8sCbCreateReq.WorkerSEPID != 0 { + _ = writer.WriteField("workerSepId", strconv.FormatUint(k8sCbCreateReq.WorkerSEPID, 10)) + } + if k8sCbCreateReq.WorkerSEPPool != "" { + _ = writer.WriteField("workerSepPool", k8sCbCreateReq.WorkerSEPPool) + } + + if k8sCbCreateReq.Labels != nil { + for _, v := range k8sCbCreateReq.Labels { + _ = writer.WriteField("labels", v) + } + } + if k8sCbCreateReq.Taints != nil { + for _, v := range k8sCbCreateReq.Taints { + _ = writer.WriteField("taints", v) + } + } + if k8sCbCreateReq.Annotations != nil { + for _, v := range k8sCbCreateReq.Annotations { + _ = writer.WriteField("annotations", v) + } + } + + if k8sCbCreateReq.MasterCPU != 0 { + _ = writer.WriteField("masterCpu", strconv.FormatUint(k8sCbCreateReq.MasterCPU, 10)) + } + if k8sCbCreateReq.MasterNum != 0 { + _ = writer.WriteField("masterNum", strconv.FormatUint(k8sCbCreateReq.MasterNum, 10)) + } + if k8sCbCreateReq.MasterRAM != 0 { + _ = writer.WriteField("masterRam", strconv.FormatUint(k8sCbCreateReq.MasterRAM, 10)) + } + if k8sCbCreateReq.MasterDisk != 0 { + _ = writer.WriteField("masterDisk", strconv.FormatUint(k8sCbCreateReq.MasterDisk, 10)) + } + if k8sCbCreateReq.WorkerCPU != 0 { + _ = writer.WriteField("workerCpu", strconv.FormatUint(k8sCbCreateReq.WorkerCPU, 10)) + } + if k8sCbCreateReq.WorkerNum != 0 { + _ = writer.WriteField("workerNum", strconv.FormatUint(k8sCbCreateReq.WorkerNum, 10)) + } + if k8sCbCreateReq.WorkerRAM != 0 { + _ = writer.WriteField("workerRam", strconv.FormatUint(k8sCbCreateReq.WorkerRAM, 10)) + } + if k8sCbCreateReq.WorkerDisk != 0 { + _ = writer.WriteField("workerDisk", strconv.FormatUint(k8sCbCreateReq.WorkerDisk, 10)) + } + if k8sCbCreateReq.ExtNetID != 0 { + _ = writer.WriteField("extnetId", strconv.FormatUint(k8sCbCreateReq.ExtNetID, 10)) + } + if k8sCbCreateReq.VinsId != 0 { + _ = writer.WriteField("vinsId", strconv.FormatUint(k8sCbCreateReq.VinsId, 10)) + } + if !k8sCbCreateReq.WithLB { + _ = writer.WriteField("withLB", strconv.FormatBool(k8sCbCreateReq.WithLB)) + } + + _ = writer.WriteField("highlyAvailable", strconv.FormatBool(k8sCbCreateReq.HighlyAvailable)) + + if k8sCbCreateReq.AdditionalSANs != nil { + for _, v := range k8sCbCreateReq.AdditionalSANs { + _ = writer.WriteField("additionalSANs", v) + } + } + if k8sCbCreateReq.InitConfiguration != "" { + _ = writer.WriteField("initConfiguration", k8sCbCreateReq.InitConfiguration) + } + if k8sCbCreateReq.ClusterConfiguration != "" { + _ = writer.WriteField("clusterConfiguration", k8sCbCreateReq.ClusterConfiguration) + } + if k8sCbCreateReq.KubeletConfiguration != "" { + _ = writer.WriteField("kubeletConfiguration", k8sCbCreateReq.KubeletConfiguration) + } + if k8sCbCreateReq.KubeProxyConfiguration != "" { + _ = writer.WriteField("kubeProxyConfiguration", k8sCbCreateReq.KubeProxyConfiguration) + } + if k8sCbCreateReq.JoinConfiguration != "" { + _ = writer.WriteField("joinConfiguration", k8sCbCreateReq.JoinConfiguration) + } + if k8sCbCreateReq.Description != "" { + _ = writer.WriteField("desc", k8sCbCreateReq.Description) + } + if k8sCbCreateReq.UserData != "" { + _ = writer.WriteField("userData", k8sCbCreateReq.UserData) + } + + _ = writer.WriteField("extnetOnly", strconv.FormatBool(k8sCbCreateReq.ExtNetOnly)) _ = writer.FormDataContentType() ct := writer.FormDataContentType() @@ -311,7 +450,7 @@ func (dc *DecortClient) domp(req *http.Request, ctype string) (*http.Response, e // var resp *http.Response // var err error buf, _ := io.ReadAll(req.Body) - req = req.Clone(req.Context()) + // req = req.Clone(req.Context()) // for i := uint64(0); i < dc.cfg.Retries; i++ { req.Body = io.NopCloser(bytes.NewBuffer(buf)) diff --git a/legacy-client.go b/legacy-client.go index 6290a89..4c7d454 100644 --- a/legacy-client.go +++ b/legacy-client.go @@ -313,7 +313,7 @@ func (ldc *LegacyDecortClient) domp(req *http.Request, ctype string) (*http.Resp // var resp *http.Response // var err error buf, _ := io.ReadAll(req.Body) - req = req.Clone(req.Context()) + // req = req.Clone(req.Context()) // for i := uint64(0); i < ldc.cfg.Retries; i++ { req.Body = io.NopCloser(bytes.NewBuffer(buf)) diff --git a/pkg/cloudapi/k8s/create.go b/pkg/cloudapi/k8s/create.go index 496a482..99ae970 100644 --- a/pkg/cloudapi/k8s/create.go +++ b/pkg/cloudapi/k8s/create.go @@ -111,7 +111,7 @@ type CreateRequest struct { // Custom sysctl values for Load Balancer instance. Applied on boot // Required: false - LbSysctlParams string `url:"-" json:"lbSysctlParams,omitempty" validate:"omitempty,dive"` + LbSysctlParams string `url:"lbSysctlParams,omitempty" json:"lbSysctlParams,omitempty"` // Use Highly Available schema for LB deploy // Required: false diff --git a/pkg/cloudbroker/k8s/create.go b/pkg/cloudbroker/k8s/create.go index a9eb876..d945455 100644 --- a/pkg/cloudbroker/k8s/create.go +++ b/pkg/cloudbroker/k8s/create.go @@ -26,7 +26,7 @@ type CreateRequest struct { // Name for first worker group created with cluster // Required: true - WorkerGroupName string `url:"workerGroupName" json:"workerGroupName" validate:"required, workerGroupName"` + WorkerGroupName string `url:"workerGroupName" json:"workerGroupName" validate:"required,workerGroupName"` // Network plugin // Must be one of these values: flunnel, weawenet, calico @@ -113,7 +113,7 @@ type CreateRequest struct { // Custom sysctl values for Load Balancer instance. Applied on boot // Required: false - LbSysctlParams string `url:"-" json:"lbSysctlParams,omitempty" validate:"omitempty,dive"` + LbSysctlParams string `url:"lbSysctlParams,omitempty" json:"lbSysctlParams,omitempty"` // Use Highly Available schema for LB deploy // Required: false diff --git a/pkg/cloudbroker/lb/make_highly_available.go b/pkg/cloudbroker/lb/make_highly_available.go index f78b516..ab3e08f 100644 --- a/pkg/cloudbroker/lb/make_highly_available.go +++ b/pkg/cloudbroker/lb/make_highly_available.go @@ -16,11 +16,11 @@ type HighlyAvailableRequest struct { } // Make Load Balancer Highly available -func (l LB) HighlyAvailable(ctx context.Context, req HighlyAvailableRequest) (uint64, error) { +func (l LB) HighlyAvailable(ctx context.Context, req HighlyAvailableRequest) (bool, error) { err := validators.ValidateRequest(req) if err != nil { for _, validationError := range validators.GetErrors(err) { - return 0, validators.ValidationError(validationError) + return false, validators.ValidationError(validationError) } } @@ -28,12 +28,12 @@ func (l LB) HighlyAvailable(ctx context.Context, req HighlyAvailableRequest) (ui res, err := l.client.DecortApiCall(ctx, http.MethodPost, url, req) if err != nil { - return 0, err + return false, err } - result, err := strconv.ParseUint(string(res), 10, 64) + result, err := strconv.ParseBool(string(res)) if err != nil { - return 0, err + return false, err } return result, nil diff --git a/pkg/cloudbroker/lb/models.go b/pkg/cloudbroker/lb/models.go index a184757..cb94f43 100644 --- a/pkg/cloudbroker/lb/models.go +++ b/pkg/cloudbroker/lb/models.go @@ -156,6 +156,9 @@ type RecordLB struct { // Access Control List ACL []interface{} `json:"acl"` + // BackendHAIP + BackendHAIP string `json:"backendHAIP"` + // List of load balancer backends Backends ListBackends `json:"backends"` @@ -171,6 +174,9 @@ type RecordLB struct { // External network ID ExtNetID uint64 `json:"extnetId"` + // FrontendHAIP + FrontendHAIP string `json:"frontendHAIP"` + // List of load balancer frontends Frontends ListFrontends `json:"frontends"` @@ -225,6 +231,9 @@ type ItemLBList struct { // Access Control List ACL []interface{} `json:"acl"` + // BackendHAIP + BackendHAIP string `json:"backendHAIP"` + // List of load balancer backends Backends ListBackends `json:"backends"` @@ -252,6 +261,9 @@ type ItemLBList struct { // External network ID ExtNetID uint64 `json:"extnetId"` + // FrontendHAIP + FrontendHAIP string `json:"frontendHAIP"` + // List of load balancer frontends Frontends ListFrontends `json:"frontends"`