This commit is contained in:
KasimBaybikov
2023-05-04 10:08:25 +03:00
parent 9bad8a6947
commit 8ca233dd32
288 changed files with 6645 additions and 11464 deletions

View File

@@ -1,58 +0,0 @@
/*
Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Authors:
Petr Krutov, <petr.krutov@digitalenergy.online>
Stanislav Solovev, <spsolovev@digitalenergy.online>
Kasim Baybikov, <kmbaybikov@basistech.ru>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
/*
Terraform DECORT provider - manage resources provided by DECORT (Digital Energy Cloud
Orchestration Technology) with Terraform by Hashicorp.
Source code: https://repository.basistech.ru/BASIS/terraform-provider-decort
Please see README.md to learn where to place source code so that it
builds seamlessly.
Documentation: https://repository.basistech.ru/BASIS/terraform-provider-decort/wiki
*/
package lb
const lbListAPI = "/restmachine/cloudapi/lb/list"
const lbListDeletedAPI = "/restmachine/cloudapi/lb/listDeleted"
const lbGetAPI = "/restmachine/cloudapi/lb/get"
const lbCreateAPI = "/restmachine/cloudapi/lb/create"
const lbDeleteAPI = "/restmachine/cloudapi/lb/delete"
const lbDisableAPI = "/restmachine/cloudapi/lb/disable"
const lbEnableAPI = "/restmachine/cloudapi/lb/enable"
const lbUpdateAPI = "/restmachine/cloudapi/lb/update"
const lbStartAPI = "/restmachine/cloudapi/lb/start"
const lbStopAPI = "/restmachine/cloudapi/lb/stop"
const lbRestartAPI = "/restmachine/cloudapi/lb/restart"
const lbRestoreAPI = "/restmachine/cloudapi/lb/restore"
const lbConfigResetAPI = "/restmachine/cloudapi/lb/configReset"
const lbBackendCreateAPI = "/restmachine/cloudapi/lb/backendCreate"
const lbBackendDeleteAPI = "/restmachine/cloudapi/lb/backendDelete"
const lbBackendUpdateAPI = "/restmachine/cloudapi/lb/backendUpdate"
const lbBackendServerAddAPI = "/restmachine/cloudapi/lb/backendServerAdd"
const lbBackendServerDeleteAPI = "/restmachine/cloudapi/lb/backendServerDelete"
const lbBackendServerUpdateAPI = "/restmachine/cloudapi/lb/backendServerUpdate"
const lbFrontendCreateAPI = "/restmachine/cloudapi/lb/frontendCreate"
const lbFrontendDeleteAPI = "/restmachine/cloudapi/lb/frontendDelete"
const lbFrontendBindAPI = "/restmachine/cloudapi/lb/frontendBind"
const lbFrontendBindDeleteAPI = "/restmachine/cloudapi/lb/frontendBindDelete"
const lbFrontendBindUpdateAPI = "/restmachine/cloudapi/lb/frontendBindingUpdate"

View File

@@ -41,33 +41,6 @@ import (
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/constants"
)
func flattenLB(d *schema.ResourceData, lb *LoadBalancer) {
d.Set("ha_mode", lb.HAMode)
d.Set("backends", flattenLBBackends(lb.Backends))
d.Set("created_by", lb.CreatedBy)
d.Set("created_time", lb.CreatedTime)
d.Set("deleted_by", lb.DeletedBy)
d.Set("deleted_time", lb.DeletedTime)
d.Set("desc", lb.Description)
d.Set("dp_api_user", lb.DPAPIUser)
d.Set("extnet_id", lb.ExtnetId)
d.Set("frontends", flattenFrontends(lb.Frontends))
d.Set("gid", lb.GID)
d.Set("guid", lb.GUID)
d.Set("image_id", lb.ImageId)
d.Set("milestones", lb.Milestones)
d.Set("name", lb.Name)
d.Set("primary_node", flattenNode(lb.PrimaryNode))
d.Set("rg_id", lb.RGID)
d.Set("rg_name", lb.RGName)
d.Set("secondary_node", flattenNode(lb.SecondaryNode))
d.Set("status", lb.Status)
d.Set("tech_status", lb.TechStatus)
d.Set("updated_by", lb.UpdatedBy)
d.Set("updated_time", lb.UpdatedTime)
d.Set("vins_id", lb.VinsId)
}
func dataSourceLBRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
lb, err := utilityLBCheckPresence(ctx, d, m)
if err != nil {

View File

@@ -41,41 +41,6 @@ import (
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/constants"
)
func flattenLBList(lbl LBList) []map[string]interface{} {
res := make([]map[string]interface{}, 0, len(lbl))
for _, lb := range lbl {
temp := map[string]interface{}{
"ha_mode": lb.HAMode,
"backends": flattenLBBackends(lb.Backends),
"created_by": lb.CreatedBy,
"created_time": lb.CreatedTime,
"deleted_by": lb.DeletedBy,
"deleted_time": lb.DeletedTime,
"desc": lb.Description,
"dp_api_user": lb.DPAPIUser,
"dp_api_password": lb.DPAPIPassword,
"extnet_id": lb.ExtnetId,
"frontends": flattenFrontends(lb.Frontends),
"gid": lb.GID,
"guid": lb.GUID,
"image_id": lb.ImageId,
"milestones": lb.Milestones,
"name": lb.Name,
"primary_node": flattenNode(lb.PrimaryNode),
"rg_id": lb.RGID,
"rg_name": lb.RGName,
"secondary_node": flattenNode(lb.SecondaryNode),
"status": lb.Status,
"tech_status": lb.TechStatus,
"updated_by": lb.UpdatedBy,
"updated_time": lb.UpdatedTime,
"vins_id": lb.VinsId,
}
res = append(res, temp)
}
return res
}
func dataSourceLBListRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
lbList, err := utilityLBListCheckPresence(ctx, d, m)
if err != nil {

View File

@@ -32,15 +32,128 @@ Documentation: https://repository.basistech.ru/BASIS/terraform-provider-decort/w
package lb
func flattenNode(node Node) []map[string]interface{} {
import (
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/lb"
)
func flattenLBFrontendBind(d *schema.ResourceData, b *lb.ItemBinding, lbId int64, frontendName string) {
d.Set("lb_id", lbId)
d.Set("frontend_name", frontendName)
d.Set("name", b.Name)
d.Set("address", b.Address)
d.Set("guid", b.GUID)
d.Set("port", b.Port)
}
func flattenLBFrontend(d *schema.ResourceData, f *lb.ItemFrontend, lbId int64) {
d.Set("lb_id", lbId)
d.Set("backend_name", f.Backend)
d.Set("name", f.Name)
d.Set("guid", f.GUID)
d.Set("bindings", flattendBindings(f.Bindings))
}
func flattenResourceLBBackendServer(d *schema.ResourceData, s *lb.ItemServer, lbId int64, backendName string) {
d.Set("lb_id", lbId)
d.Set("backend_name", backendName)
d.Set("name", s.Name)
d.Set("port", s.Port)
d.Set("address", s.Address)
d.Set("check", s.Check)
d.Set("guid", s.GUID)
d.Set("downinter", s.ServerSettings.DownInter)
d.Set("fall", s.ServerSettings.Fall)
d.Set("inter", s.ServerSettings.Inter)
d.Set("maxconn", s.ServerSettings.MaxConn)
d.Set("maxqueue", s.ServerSettings.MaxQueue)
d.Set("rise", s.ServerSettings.Rise)
d.Set("slowstart", s.ServerSettings.SlowStart)
d.Set("weight", s.ServerSettings.Weight)
}
func flattenResourceLBBackend(d *schema.ResourceData, b *lb.ItemBackend, lbId int64) {
d.Set("lb_id", lbId)
d.Set("name", b.Name)
d.Set("algorithm", b.Algorithm)
d.Set("guid", b.GUID)
d.Set("downinter", b.ServerDefaultSettings.DownInter)
d.Set("fall", b.ServerDefaultSettings.Fall)
d.Set("inter", b.ServerDefaultSettings.Inter)
d.Set("maxconn", b.ServerDefaultSettings.MaxConn)
d.Set("maxqueue", b.ServerDefaultSettings.MaxQueue)
d.Set("rise", b.ServerDefaultSettings.Rise)
d.Set("slowstart", b.ServerDefaultSettings.SlowStart)
d.Set("weight", b.ServerDefaultSettings.Weight)
d.Set("servers", flattenServers(b.Servers))
}
func flattenResourceLB(d *schema.ResourceData, lb *lb.RecordLB) {
d.Set("ha_mode", lb.HAMode)
d.Set("backends", flattenLBBackends(lb.Backends))
d.Set("created_by", lb.CreatedBy)
d.Set("created_time", lb.CreatedTime)
d.Set("deleted_by", lb.DeletedBy)
d.Set("deleted_time", lb.DeletedTime)
d.Set("desc", lb.Description)
d.Set("dp_api_user", lb.DPAPIUser)
d.Set("extnet_id", lb.ExtNetID)
d.Set("frontends", flattenFrontends(lb.Frontends))
d.Set("gid", lb.GID)
d.Set("guid", lb.GUID)
d.Set("lb_id", lb.ID)
d.Set("image_id", lb.ImageID)
d.Set("milestones", lb.Milestones)
d.Set("name", lb.Name)
d.Set("primary_node", flattenNode(lb.PrimaryNode))
d.Set("rg_id", lb.RGID)
d.Set("rg_name", lb.RGName)
d.Set("secondary_node", flattenNode(lb.SecondaryNode))
d.Set("status", lb.Status)
d.Set("tech_status", lb.TechStatus)
d.Set("updated_by", lb.UpdatedBy)
d.Set("updated_time", lb.UpdatedTime)
d.Set("vins_id", lb.VINSID)
}
func flattenLB(d *schema.ResourceData, lb *lb.RecordLB) {
d.Set("ha_mode", lb.HAMode)
d.Set("backends", flattenLBBackends(lb.Backends))
d.Set("created_by", lb.CreatedBy)
d.Set("created_time", lb.CreatedTime)
d.Set("deleted_by", lb.DeletedBy)
d.Set("deleted_time", lb.DeletedTime)
d.Set("desc", lb.Description)
d.Set("dp_api_user", lb.DPAPIUser)
d.Set("extnet_id", lb.ExtNetID)
d.Set("frontends", flattenFrontends(lb.Frontends))
d.Set("gid", lb.GID)
d.Set("guid", lb.GUID)
d.Set("image_id", lb.ImageID)
d.Set("milestones", lb.Milestones)
d.Set("name", lb.Name)
d.Set("primary_node", flattenNode(lb.PrimaryNode))
d.Set("rg_id", lb.RGID)
d.Set("rg_name", lb.RGName)
d.Set("secondary_node", flattenNode(lb.SecondaryNode))
d.Set("status", lb.Status)
d.Set("tech_status", lb.TechStatus)
d.Set("updated_by", lb.UpdatedBy)
d.Set("updated_time", lb.UpdatedTime)
d.Set("vins_id", lb.VINSID)
}
func flattenNode(node lb.RecordNode) []map[string]interface{} {
temp := make([]map[string]interface{}, 0)
n := map[string]interface{}{
"backend_ip": node.BackendIp,
"compute_id": node.ComputeId,
"frontend_ip": node.FrontendIp,
"backend_ip": node.BackendIP,
"compute_id": node.ComputeID,
"frontend_ip": node.FrontendIP,
"guid": node.GUID,
"mgmt_ip": node.MGMTIp,
"network_id": node.NetworkId,
"mgmt_ip": node.MGMTIP,
"network_id": node.NetworkID,
}
temp = append(temp, n)
@@ -48,7 +161,7 @@ func flattenNode(node Node) []map[string]interface{} {
return temp
}
func flattendBindings(bs []Binding) []map[string]interface{} {
func flattendBindings(bs []lb.ItemBinding) []map[string]interface{} {
temp := make([]map[string]interface{}, 0, len(bs))
for _, b := range bs {
t := map[string]interface{}{
@@ -62,7 +175,7 @@ func flattendBindings(bs []Binding) []map[string]interface{} {
return temp
}
func flattenFrontends(fs []Frontend) []map[string]interface{} {
func flattenFrontends(fs []lb.ItemFrontend) []map[string]interface{} {
temp := make([]map[string]interface{}, 0, len(fs))
for _, f := range fs {
t := map[string]interface{}{
@@ -77,7 +190,7 @@ func flattenFrontends(fs []Frontend) []map[string]interface{} {
return temp
}
func flattenServers(servers []Server) []map[string]interface{} {
func flattenServers(servers []lb.ItemServer) []map[string]interface{} {
temp := make([]map[string]interface{}, 0, len(servers))
for _, server := range servers {
t := map[string]interface{}{
@@ -94,7 +207,7 @@ func flattenServers(servers []Server) []map[string]interface{} {
return temp
}
func flattenServerSettings(defSet ServerSettings) []map[string]interface{} {
func flattenServerSettings(defSet lb.RecordServerSettings) []map[string]interface{} {
temp := map[string]interface{}{
"downinter": defSet.DownInter,
"fall": defSet.Fall,
@@ -112,7 +225,7 @@ func flattenServerSettings(defSet ServerSettings) []map[string]interface{} {
return res
}
func flattenLBBackends(backends []Backend) []map[string]interface{} {
func flattenLBBackends(backends []lb.ItemBackend) []map[string]interface{} {
temp := make([]map[string]interface{}, 0, len(backends))
for _, item := range backends {
t := map[string]interface{}{
@@ -127,3 +240,39 @@ func flattenLBBackends(backends []Backend) []map[string]interface{} {
}
return temp
}
func flattenLBList(lbl lb.ListLB) []map[string]interface{} {
res := make([]map[string]interface{}, 0, len(lbl))
for _, lb := range lbl {
temp := map[string]interface{}{
"ha_mode": lb.HAMode,
"backends": flattenLBBackends(lb.Backends),
"created_by": lb.CreatedBy,
"created_time": lb.CreatedTime,
"deleted_by": lb.DeletedBy,
"deleted_time": lb.DeletedTime,
"desc": lb.Description,
"dp_api_user": lb.DPAPIUser,
"dp_api_password": lb.DPAPIPassword,
"extnet_id": lb.ExtNetID,
"frontends": flattenFrontends(lb.Frontends),
"gid": lb.GID,
"guid": lb.GUID,
"image_id": lb.ImageID,
"milestones": lb.Milestones,
"name": lb.Name,
"primary_node": flattenNode(lb.PrimaryNode),
"rg_id": lb.RGID,
"rg_name": lb.RGName,
"secondary_node": flattenNode(lb.SecondaryNode),
"status": lb.Status,
"tech_status": lb.TechStatus,
"updated_by": lb.UpdatedBy,
"updated_time": lb.UpdatedTime,
"vins_id": lb.VINSID,
"lb_id": lb.ID,
}
res = append(res, temp)
}
return res
}

View File

@@ -2,138 +2,67 @@ package lb
import (
"context"
"encoding/json"
"net/url"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/extnet"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/lb"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/rg"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller"
)
func existLBID(ctx context.Context, d *schema.ResourceData, m interface{}) (bool, error) {
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
lbId := uint64(d.Get("lb_id").(int))
lbList := []struct {
ID int `json:"id"`
}{}
req := lb.ListRequest{}
lbListAPI := "/restmachine/cloudapi/lb/list"
lbListRaw, err := c.DecortAPICall(ctx, "POST", lbListAPI, urlValues)
lbList, err := c.CloudAPI().LB().List(ctx, req)
if err != nil {
return false, err
}
err = json.Unmarshal([]byte(lbListRaw), &lbList)
if err != nil {
return false, err
}
haveLB := false
lbId := d.Get("lb_id").(int)
for _, lb := range lbList {
if lb.ID == lbId {
haveLB = true
break
}
}
return haveLB, nil
return len(lbList.FilterByID(lbId)) != 0, nil
}
func existRGID(ctx context.Context, d *schema.ResourceData, m interface{}) (bool, error) {
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
rgId := uint64(d.Get("rg_id").(int))
rgList := []struct {
ID int `json:"id"`
}{}
req := rg.ListRequest{}
rgListAPI := "/restmachine/cloudapi/rg/list"
rgListRaw, err := c.DecortAPICall(ctx, "POST", rgListAPI, urlValues)
rgList, err := c.CloudAPI().RG().List(ctx, req)
if err != nil {
return false, err
}
err = json.Unmarshal([]byte(rgListRaw), &rgList)
if err != nil {
return false, err
}
haveRG := false
rgId := d.Get("rg_id").(int)
for _, rg := range rgList {
if rg.ID == rgId {
haveRG = true
break
}
}
return haveRG, nil
return len(rgList.FilterByID(rgId)) != 0, nil
}
func existExtNetID(ctx context.Context, d *schema.ResourceData, m interface{}) (bool, error) {
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
extNetID := uint64(d.Get("extnet_id").(int))
extNetList := []struct {
ID int `json:"id"`
}{}
req := extnet.ListRequest{}
extNetListAPI := "/restmachine/cloudapi/extnet/list"
extNetListRaw, err := c.DecortAPICall(ctx, "POST", extNetListAPI, urlValues)
extNetList, err := c.CloudAPI().ExtNet().List(ctx, req)
if err != nil {
return false, err
}
err = json.Unmarshal([]byte(extNetListRaw), &extNetList)
if err != nil {
return false, err
}
haveExtNet := false
extNetID := d.Get("extnet_id").(int)
for _, extNet := range extNetList {
if extNet.ID == extNetID {
haveExtNet = true
break
}
}
return haveExtNet, nil
return len(extNetList.FilterByID(extNetID)) != 0, nil
}
func existViNSID(ctx context.Context, d *schema.ResourceData, m interface{}) (bool, error) {
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
vinsID := uint64(d.Get("vins_id").(int))
vinsList := []struct {
ID int `json:"id"`
}{}
req := vins.ListRequest{}
vinsListAPI := "/restmachine/cloudapi/vins/list"
vinsListRaw, err := c.DecortAPICall(ctx, "POST", vinsListAPI, urlValues)
vinsList, err := c.CloudAPI().VINS().List(ctx, req)
if err != nil {
return false, err
}
err = json.Unmarshal([]byte(vinsListRaw), &vinsList)
if err != nil {
return false, err
}
haveVins := false
vinsID := d.Get("vins_id").(int)
for _, vins := range vinsList {
if vins.ID == vinsID {
haveVins = true
break
}
}
return haveVins, nil
return len(vinsList.FilterByID(vinsID)) != 0, nil
}

View File

@@ -34,12 +34,12 @@ package lb
import (
"context"
"net/url"
"strconv"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
log "github.com/sirupsen/logrus"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/lb"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/constants"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/status"
@@ -76,53 +76,53 @@ func resourceLBCreate(ctx context.Context, d *schema.ResourceData, m interface{}
}
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
urlValues.Add("name", d.Get("name").(string))
urlValues.Add("rgId", strconv.Itoa(d.Get("rg_id").(int)))
urlValues.Add("extnetId", strconv.Itoa(d.Get("extnet_id").(int)))
urlValues.Add("vinsId", strconv.Itoa(d.Get("vins_id").(int)))
urlValues.Add("start", strconv.FormatBool((d.Get("start").(bool))))
if desc, ok := d.GetOk("desc"); ok {
urlValues.Add("desc", desc.(string))
req := lb.CreateRequest{
Name: d.Get("name").(string),
RGID: uint64(d.Get("rg_id").(int)),
ExtNetID: uint64(d.Get("extnet_id").(int)),
VINSID: uint64(d.Get("vins_id").(int)),
Start: d.Get("start").(bool),
}
lbId, err := c.DecortAPICall(ctx, "POST", lbCreateAPI, urlValues)
if desc, ok := d.GetOk("desc"); ok {
req.Description = desc.(string)
}
lbId, err := c.CloudAPI().LB().Create(ctx, req)
if err != nil {
return diag.FromErr(err)
}
lbIdParsed, _ := strconv.ParseInt(lbId, 10, 64)
d.SetId(lbId)
d.Set("lb_id", lbId)
d.Set("lb_id", lbIdParsed)
_, err = utilityLBCheckPresence(ctx, d, m)
if err != nil {
return diag.FromErr(err)
}
diagnostics := resourceLBRead(ctx, d, m)
if diagnostics != nil {
return diagnostics
}
urlValues = &url.Values{}
if enable, ok := d.GetOk("enable"); ok {
api := lbDisableAPI
lbId := uint64(d.Get("lb_id").(int))
req := lb.DisableEnableRequest{
LBID: lbId,
}
if enable.(bool) {
api = lbEnableAPI
_, err := c.CloudAPI().LB().Enable(ctx, req)
if err != nil {
return diag.FromErr(err)
}
} else {
_, err := c.CloudAPI().LB().Disable(ctx, req)
if err != nil {
return diag.FromErr(err)
}
}
urlValues.Add("lbId", strconv.Itoa(d.Get("lb_id").(int)))
_, err := c.DecortAPICall(ctx, "POST", api, urlValues)
if err != nil {
return diag.FromErr(err)
}
urlValues = &url.Values{}
}
return nil
return resourceLBRead(ctx, d, m)
}
func resourceLBRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
@@ -130,36 +130,37 @@ func resourceLBRead(ctx context.Context, d *schema.ResourceData, m interface{})
c := m.(*controller.ControllerCfg)
lb, err := utilityLBCheckPresence(ctx, d, m)
if lb == nil {
lbRec, err := utilityLBCheckPresence(ctx, d, m)
if lbRec == nil {
d.SetId("")
return diag.FromErr(err)
}
hasChanged := false
switch lb.Status {
switch lbRec.Status {
case status.Modeled:
return diag.Errorf("The LB is in status: %s, please, contact support for more information", lb.Status)
return diag.Errorf("The LB is in status: %s, please, contact support for more information", lbRec.Status)
case status.Creating:
case status.Created:
case status.Deleting:
case status.Deleted:
urlValues := &url.Values{}
urlValues.Add("lbId", d.Id())
lbId, _ := strconv.ParseUint(d.Id(), 10, 64)
restoreReq := lb.RestoreRequest{LBID: lbId}
enableReq := lb.DisableEnableRequest{LBID: lbId}
_, err := c.DecortAPICall(ctx, "POST", lbRestoreAPI, urlValues)
_, err := c.CloudAPI().LB().Restore(ctx, restoreReq)
if err != nil {
return diag.FromErr(err)
}
_, err = c.DecortAPICall(ctx, "POST", lbEnableAPI, urlValues)
_, err = c.CloudAPI().LB().Enable(ctx, enableReq)
if err != nil {
return diag.FromErr(err)
}
hasChanged = true
case status.Destroying:
return diag.Errorf("The LB is in progress with status: %s", lb.Status)
return diag.Errorf("The LB is in progress with status: %s", lbRec.Status)
case status.Destroyed:
d.SetId("")
return resourceLBCreate(ctx, d, m)
@@ -167,43 +168,19 @@ func resourceLBRead(ctx context.Context, d *schema.ResourceData, m interface{})
case status.Enabling:
case status.Disabling:
case status.Disabled:
log.Debugf("The LB is in status: %s, troubles may occur with update. Please, enable LB first.", lb.Status)
log.Debugf("The LB is in status: %s, troubles may occur with update. Please, enable LB first.", lbRec.Status)
case status.Restoring:
}
if hasChanged {
lb, err = utilityLBCheckPresence(ctx, d, m)
lbRec, err = utilityLBCheckPresence(ctx, d, m)
if err != nil {
d.SetId("")
return diag.FromErr(err)
}
}
d.Set("ha_mode", lb.HAMode)
d.Set("backends", flattenLBBackends(lb.Backends))
d.Set("created_by", lb.CreatedBy)
d.Set("created_time", lb.CreatedTime)
d.Set("deleted_by", lb.DeletedBy)
d.Set("deleted_time", lb.DeletedTime)
d.Set("desc", lb.Description)
d.Set("dp_api_user", lb.DPAPIUser)
d.Set("extnet_id", lb.ExtnetId)
d.Set("frontends", flattenFrontends(lb.Frontends))
d.Set("gid", lb.GID)
d.Set("guid", lb.GUID)
d.Set("lb_id", lb.ID)
d.Set("image_id", lb.ImageId)
d.Set("milestones", lb.Milestones)
d.Set("name", lb.Name)
d.Set("primary_node", flattenNode(lb.PrimaryNode))
d.Set("rg_id", lb.RGID)
d.Set("rg_name", lb.RGName)
d.Set("secondary_node", flattenNode(lb.SecondaryNode))
d.Set("status", lb.Status)
d.Set("tech_status", lb.TechStatus)
d.Set("updated_by", lb.UpdatedBy)
d.Set("updated_time", lb.UpdatedTime)
d.Set("vins_id", lb.VinsId)
flattenResourceLB(d, lbRec)
return nil
}
@@ -211,35 +188,33 @@ func resourceLBRead(ctx context.Context, d *schema.ResourceData, m interface{})
func resourceLBDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
log.Debugf("resourceLBDelete")
lb, err := utilityLBCheckPresence(ctx, d, m)
if lb == nil {
if err != nil {
return diag.FromErr(err)
}
return nil
}
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
urlValues.Add("lbId", strconv.Itoa(d.Get("lb_id").(int)))
if permanently, ok := d.GetOk("permanently"); ok {
urlValues.Add("permanently", strconv.FormatBool(permanently.(bool)))
}
_, err = c.DecortAPICall(ctx, "POST", lbDeleteAPI, urlValues)
_, err := utilityLBCheckPresence(ctx, d, m)
if err != nil {
return diag.FromErr(err)
}
c := m.(*controller.ControllerCfg)
req := lb.DeleteRequest{
LBID: uint64(d.Get("lb_id").(int)),
}
if permanently, ok := d.GetOk("permanently"); ok {
req.Permanently = permanently.(bool)
}
_, err = c.CloudAPI().LB().Delete(ctx, req)
if err != nil {
return diag.FromErr(err)
}
d.SetId("")
return nil
}
func resourceLBUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
log.Debugf("resourceLBEdit")
log.Debugf("resourceLBUpdate")
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
haveRGID, err := existRGID(ctx, d, m)
if err != nil {
@@ -268,36 +243,37 @@ func resourceLBUpdate(ctx context.Context, d *schema.ResourceData, m interface{}
return diag.Errorf("resourceLBUpdate: can't update LB because ViNSID %d is not allowed or does not exist", d.Get("vins_id").(int))
}
lb, err := utilityLBCheckPresence(ctx, d, m)
if lb == nil {
lbRec, err := utilityLBCheckPresence(ctx, d, m)
if lbRec == nil {
d.SetId("")
return diag.FromErr(err)
}
hasChanged := false
switch lb.Status {
switch lbRec.Status {
case status.Modeled:
return diag.Errorf("The LB is in status: %s, please, contact support for more information", lb.Status)
return diag.Errorf("The LB is in status: %s, please, contact support for more information", lbRec.Status)
case status.Creating:
case status.Created:
case status.Deleting:
case status.Deleted:
urlValues := &url.Values{}
urlValues.Add("lbId", d.Id())
lbId, _ := strconv.ParseUint(d.Id(), 10, 64)
restoreReq := lb.RestoreRequest{LBID: lbId}
enableReq := lb.DisableEnableRequest{LBID: lbId}
_, err := c.DecortAPICall(ctx, "POST", lbRestoreAPI, urlValues)
_, err := c.CloudAPI().LB().Restore(ctx, restoreReq)
if err != nil {
return diag.FromErr(err)
}
_, err = c.DecortAPICall(ctx, "POST", lbEnableAPI, urlValues)
_, err = c.CloudAPI().LB().Enable(ctx, enableReq)
if err != nil {
return diag.FromErr(err)
}
hasChanged = true
case status.Destroying:
return diag.Errorf("The LB is in progress with status: %s", lb.Status)
return diag.Errorf("The LB is in progress with status: %s", lbRec.Status)
case status.Destroyed:
d.SetId("")
return resourceLBCreate(ctx, d, m)
@@ -305,12 +281,12 @@ func resourceLBUpdate(ctx context.Context, d *schema.ResourceData, m interface{}
case status.Enabling:
case status.Disabling:
case status.Disabled:
log.Debugf("The LB is in status: %s, troubles may occur with update. Please, enable LB first.", lb.Status)
log.Debugf("The LB is in status: %s, troubles may occur with update. Please, enable LB first.", lbRec.Status)
case status.Restoring:
}
if hasChanged {
lb, err = utilityLBCheckPresence(ctx, d, m)
lbRec, err = utilityLBCheckPresence(ctx, d, m)
if err != nil {
d.SetId("")
return diag.FromErr(err)
@@ -318,90 +294,96 @@ func resourceLBUpdate(ctx context.Context, d *schema.ResourceData, m interface{}
}
if d.HasChange("enable") {
api := lbDisableAPI
enable := d.Get("enable").(bool)
req := lb.DisableEnableRequest{
LBID: uint64(d.Get("lb_id").(int)),
}
if enable {
api = lbEnableAPI
}
urlValues.Add("lbId", strconv.Itoa(d.Get("lb_id").(int)))
_, err := c.CloudAPI().LB().Enable(ctx, req)
if err != nil {
return diag.FromErr(err)
}
} else {
_, err := c.CloudAPI().LB().Disable(ctx, req)
if err != nil {
return diag.FromErr(err)
}
_, err := c.DecortAPICall(ctx, "POST", api, urlValues)
if err != nil {
return diag.FromErr(err)
}
urlValues = &url.Values{}
}
if d.HasChange("start") {
api := lbStopAPI
start := d.Get("start").(bool)
lbId := uint64(d.Get("lb_id").(int))
if start {
api = lbStartAPI
req := lb.StartRequest{LBID: lbId}
_, err := c.CloudAPI().LB().Start(ctx, req)
if err != nil {
return diag.FromErr(err)
}
} else {
req := lb.StopRequest{LBID: lbId}
_, err := c.CloudAPI().LB().Stop(ctx, req)
if err != nil {
return diag.FromErr(err)
}
}
urlValues.Add("lbId", strconv.Itoa(d.Get("lb_id").(int)))
_, err := c.DecortAPICall(ctx, "POST", api, urlValues)
if err != nil {
return diag.FromErr(err)
}
urlValues = &url.Values{}
}
if d.HasChange("desc") {
urlValues.Add("lbId", strconv.Itoa(d.Get("lb_id").(int)))
urlValues.Add("desc", d.Get("desc").(string))
req := lb.UpdateRequest{
LBID: uint64(d.Get("lb_id").(int)),
Description: d.Get("desc").(string),
}
_, err := c.DecortAPICall(ctx, "POST", lbUpdateAPI, urlValues)
_, err := c.CloudAPI().LB().Update(ctx, req)
if err != nil {
return diag.FromErr(err)
}
urlValues = &url.Values{}
}
if d.HasChange("restart") {
restart := d.Get("restart").(bool)
if restart {
urlValues.Add("lbId", strconv.Itoa(d.Get("lb_id").(int)))
_, err := c.DecortAPICall(ctx, "POST", lbRestartAPI, urlValues)
req := lb.RestartRequest{
LBID: uint64(d.Get("lb_id").(int)),
}
_, err := c.CloudAPI().LB().Restart(ctx, req)
if err != nil {
return diag.FromErr(err)
}
urlValues = &url.Values{}
}
}
if d.HasChange("restore") {
restore := d.Get("restore").(bool)
if restore {
urlValues.Add("lbId", strconv.Itoa(d.Get("lb_id").(int)))
_, err := c.DecortAPICall(ctx, "POST", lbRestoreAPI, urlValues)
req := lb.RestoreRequest{
LBID: uint64(d.Get("lb_id").(int)),
}
_, err := c.CloudAPI().LB().Restore(ctx, req)
if err != nil {
return diag.FromErr(err)
}
urlValues = &url.Values{}
}
}
if d.HasChange("config_reset") {
cfgReset := d.Get("config_reset").(bool)
if cfgReset {
urlValues.Add("lbId", strconv.Itoa(d.Get("lb_id").(int)))
_, err := c.DecortAPICall(ctx, "POST", lbConfigResetAPI, urlValues)
req := lb.ConfigResetRequest{
LBID: uint64(d.Get("lb_id").(int)),
}
_, err := c.CloudAPI().LB().ConfigReset(ctx, req)
if err != nil {
return diag.FromErr(err)
}
urlValues = &url.Values{}
}
}
//TODO: перенести backend и frontend из ресурсов сюда
return resourceLBRead(ctx, d, m)
}

View File

@@ -34,7 +34,6 @@ package lb
import (
"context"
"net/url"
"strconv"
"strings"
@@ -42,6 +41,7 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
log "github.com/sirupsen/logrus"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/lb"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/constants"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller"
)
@@ -59,39 +59,40 @@ func resourceLBBackendCreate(ctx context.Context, d *schema.ResourceData, m inte
}
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
urlValues.Add("backendName", d.Get("name").(string))
urlValues.Add("lbId", strconv.Itoa(d.Get("lb_id").(int)))
req := lb.BackendCreateRequest{}
req.BackendName = d.Get("name").(string)
req.LBID = uint64(d.Get("lb_id").(int))
if algorithm, ok := d.GetOk("algorithm"); ok {
urlValues.Add("algorithm", algorithm.(string))
req.Algorithm = algorithm.(string)
}
if inter, ok := d.GetOk("inter"); ok {
urlValues.Add("inter", strconv.Itoa(inter.(int)))
req.Inter = uint64(inter.(int))
}
if downinter, ok := d.GetOk("downinter"); ok {
urlValues.Add("downinter", strconv.Itoa(downinter.(int)))
req.DownInter = uint64(downinter.(int))
}
if rise, ok := d.GetOk("rise"); ok {
urlValues.Add("rise", strconv.Itoa(rise.(int)))
req.Rise = uint64(rise.(int))
}
if fall, ok := d.GetOk("fall"); ok {
urlValues.Add("fall", strconv.Itoa(fall.(int)))
req.Fall = uint64(fall.(int))
}
if slowstart, ok := d.GetOk("slowstart"); ok {
urlValues.Add("slowstart", strconv.Itoa(slowstart.(int)))
req.SlowStart = uint64(slowstart.(int))
}
if maxconn, ok := d.GetOk("maxconn"); ok {
urlValues.Add("maxconn", strconv.Itoa(maxconn.(int)))
req.MaxConn = uint64(maxconn.(int))
}
if maxqueue, ok := d.GetOk("maxqueue"); ok {
urlValues.Add("maxqueue", strconv.Itoa(maxqueue.(int)))
req.MaxQueue = uint64(maxqueue.(int))
}
if weight, ok := d.GetOk("weight"); ok {
urlValues.Add("weight", strconv.Itoa(weight.(int)))
req.Weight = uint64(weight.(int))
}
_, err = c.DecortAPICall(ctx, "POST", lbBackendCreateAPI, urlValues)
_, err = c.CloudAPI().LB().BackendCreate(ctx, req)
if err != nil {
return diag.FromErr(err)
}
@@ -103,12 +104,7 @@ func resourceLBBackendCreate(ctx context.Context, d *schema.ResourceData, m inte
return diag.FromErr(err)
}
diagnostics := resourceLBBackendRead(ctx, d, m)
if diagnostics != nil {
return diagnostics
}
return nil
return resourceLBBackendRead(ctx, d, m)
}
func resourceLBBackendRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
@@ -122,19 +118,7 @@ func resourceLBBackendRead(ctx context.Context, d *schema.ResourceData, m interf
lbId, _ := strconv.ParseInt(strings.Split(d.Id(), "#")[0], 10, 32)
d.Set("lb_id", lbId)
d.Set("name", b.Name)
d.Set("algorithm", b.Algorithm)
d.Set("guid", b.GUID)
d.Set("downinter", b.ServerDefaultSettings.DownInter)
d.Set("fall", b.ServerDefaultSettings.Fall)
d.Set("inter", b.ServerDefaultSettings.Inter)
d.Set("maxconn", b.ServerDefaultSettings.MaxConn)
d.Set("maxqueue", b.ServerDefaultSettings.MaxQueue)
d.Set("rise", b.ServerDefaultSettings.Rise)
d.Set("slowstart", b.ServerDefaultSettings.SlowStart)
d.Set("weight", b.ServerDefaultSettings.Weight)
d.Set("servers", flattenServers(b.Servers))
flattenResourceLBBackend(d, b, lbId)
return nil
}
@@ -142,23 +126,22 @@ func resourceLBBackendRead(ctx context.Context, d *schema.ResourceData, m interf
func resourceLBBackendDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
log.Debugf("resourceLBBackendDelete")
lb, err := utilityLBBackendCheckPresence(ctx, d, m)
if lb == nil {
if err != nil {
return diag.FromErr(err)
}
return nil
}
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
urlValues.Add("lbId", strconv.Itoa(d.Get("lb_id").(int)))
urlValues.Add("backendName", d.Get("name").(string))
_, err = c.DecortAPICall(ctx, "POST", lbBackendDeleteAPI, urlValues)
_, err := utilityLBBackendCheckPresence(ctx, d, m)
if err != nil {
return diag.FromErr(err)
}
c := m.(*controller.ControllerCfg)
req := lb.BackendDeleteRequest{
LBID: uint64(d.Get("lb_id").(int)),
BackendName: d.Get("name").(string),
}
_, err = c.CloudAPI().LB().BackendDelete(ctx, req)
if err != nil {
return diag.FromErr(err)
}
d.SetId("")
return nil
@@ -167,7 +150,6 @@ func resourceLBBackendDelete(ctx context.Context, d *schema.ResourceData, m inte
func resourceLBBackendUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
log.Debugf("resourceLBBackendEdit")
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
haveLBID, err := existLBID(ctx, d, m)
if err != nil {
@@ -178,38 +160,40 @@ func resourceLBBackendUpdate(ctx context.Context, d *schema.ResourceData, m inte
return diag.Errorf("resourceLBBackendUpdate: can't update LB backend because LBID %d is not allowed or does not exist", d.Get("lb_id").(int))
}
urlValues.Add("backendName", d.Get("name").(string))
urlValues.Add("lbId", strconv.Itoa(d.Get("lb_id").(int)))
req := lb.BackendUpdateRequest{
LBID: uint64(d.Get("lb_id").(int)),
BackendName: d.Get("name").(string),
}
if d.HasChange("algorithm") {
urlValues.Add("algorithm", d.Get("algorithm").(string))
req.Algorithm = d.Get("algorithm").(string)
}
if d.HasChange("inter") {
urlValues.Add("inter", strconv.Itoa(d.Get("inter").(int)))
req.Inter = uint64(d.Get("inter").(int))
}
if d.HasChange("downinter") {
urlValues.Add("downinter", strconv.Itoa(d.Get("downinter").(int)))
req.DownInter = uint64(d.Get("downinter").(int))
}
if d.HasChange("rise") {
urlValues.Add("rise", strconv.Itoa(d.Get("rise").(int)))
req.Rise = uint64(d.Get("rise").(int))
}
if d.HasChange("fall") {
urlValues.Add("fall", strconv.Itoa(d.Get("fall").(int)))
req.Fall = uint64(d.Get("fall").(int))
}
if d.HasChange("slowstart") {
urlValues.Add("slowstart", strconv.Itoa(d.Get("slowstart").(int)))
req.SlowStart = uint64(d.Get("slowstart").(int))
}
if d.HasChange("maxconn") {
urlValues.Add("maxconn", strconv.Itoa(d.Get("maxconn").(int)))
req.MaxConn = uint64(d.Get("maxconn").(int))
}
if d.HasChange("maxqueue") {
urlValues.Add("maxqueue", strconv.Itoa(d.Get("maxqueue").(int)))
req.MaxQueue = uint64(d.Get("maxqueue").(int))
}
if d.HasChange("weight") {
urlValues.Add("weight", strconv.Itoa(d.Get("weight").(int)))
req.Weight = uint64(d.Get("weight").(int))
}
_, err = c.DecortAPICall(ctx, "POST", lbBackendUpdateAPI, urlValues)
_, err = c.CloudAPI().LB().BackendUpdate(ctx, req)
if err != nil {
return diag.FromErr(err)
}

View File

@@ -34,7 +34,6 @@ package lb
import (
"context"
"net/url"
"strconv"
"strings"
@@ -42,6 +41,7 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
log "github.com/sirupsen/logrus"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/lb"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/constants"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller"
)
@@ -59,43 +59,44 @@ func resourceLBBackendServerCreate(ctx context.Context, d *schema.ResourceData,
}
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
urlValues.Add("backendName", d.Get("backend_name").(string))
urlValues.Add("serverName", d.Get("name").(string))
urlValues.Add("address", d.Get("address").(string))
urlValues.Add("lbId", strconv.Itoa(d.Get("lb_id").(int)))
urlValues.Add("port", strconv.Itoa(d.Get("port").(int)))
req := lb.BackendServerAddRequest{
BackendName: d.Get("backend_name").(string),
ServerName: d.Get("name").(string),
Address: d.Get("address").(string),
LBID: uint64(d.Get("lb_id").(int)),
Port: uint64(d.Get("port").(int)),
}
if check, ok := d.GetOk("check"); ok {
urlValues.Add("check", check.(string))
req.Check = check.(string)
}
if inter, ok := d.GetOk("inter"); ok {
urlValues.Add("inter", strconv.Itoa(inter.(int)))
req.Inter = uint64(inter.(int))
}
if downinter, ok := d.GetOk("downinter"); ok {
urlValues.Add("downinter", strconv.Itoa(downinter.(int)))
req.DownInter = uint64(downinter.(int))
}
if rise, ok := d.GetOk("rise"); ok {
urlValues.Add("rise", strconv.Itoa(rise.(int)))
req.Rise = uint64(rise.(int))
}
if fall, ok := d.GetOk("fall"); ok {
urlValues.Add("fall", strconv.Itoa(fall.(int)))
req.Fall = uint64(fall.(int))
}
if slowstart, ok := d.GetOk("slowstart"); ok {
urlValues.Add("slowstart", strconv.Itoa(slowstart.(int)))
req.SlowStart = uint64(slowstart.(int))
}
if maxconn, ok := d.GetOk("maxconn"); ok {
urlValues.Add("maxconn", strconv.Itoa(maxconn.(int)))
req.MaxConn = uint64(maxconn.(int))
}
if maxqueue, ok := d.GetOk("maxqueue"); ok {
urlValues.Add("maxqueue", strconv.Itoa(maxqueue.(int)))
req.MaxQueue = uint64(maxqueue.(int))
}
if weight, ok := d.GetOk("weight"); ok {
urlValues.Add("weight", strconv.Itoa(weight.(int)))
req.Weight = uint64(weight.(int))
}
_, err = c.DecortAPICall(ctx, "POST", lbBackendServerAddAPI, urlValues)
_, err = c.CloudAPI().LB().BackendServerAdd(ctx, req)
if err != nil {
return diag.FromErr(err)
}
@@ -107,19 +108,14 @@ func resourceLBBackendServerCreate(ctx context.Context, d *schema.ResourceData,
return diag.FromErr(err)
}
diagnostics := resourceLBBackendServerRead(ctx, d, m)
if diagnostics != nil {
return diagnostics
}
return nil
return resourceLBBackendServerRead(ctx, d, m)
}
func resourceLBBackendServerRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
log.Debugf("resourceLBBackendServerRead")
s, err := utilityLBBackendServerCheckPresence(ctx, d, m)
if s == nil {
if err != nil {
d.SetId("")
return diag.FromErr(err)
}
@@ -127,21 +123,7 @@ func resourceLBBackendServerRead(ctx context.Context, d *schema.ResourceData, m
lbId, _ := strconv.ParseInt(strings.Split(d.Id(), "#")[0], 10, 32)
backendName := strings.Split(d.Id(), "#")[1]
d.Set("lb_id", lbId)
d.Set("backend_name", backendName)
d.Set("name", s.Name)
d.Set("port", s.Port)
d.Set("address", s.Address)
d.Set("check", s.Check)
d.Set("guid", s.GUID)
d.Set("downinter", s.ServerSettings.DownInter)
d.Set("fall", s.ServerSettings.Fall)
d.Set("inter", s.ServerSettings.Inter)
d.Set("maxconn", s.ServerSettings.MaxConn)
d.Set("maxqueue", s.ServerSettings.MaxQueue)
d.Set("rise", s.ServerSettings.Rise)
d.Set("slowstart", s.ServerSettings.SlowStart)
d.Set("weight", s.ServerSettings.Weight)
flattenResourceLBBackendServer(d, s, lbId, backendName)
return nil
}
@@ -149,21 +131,19 @@ func resourceLBBackendServerRead(ctx context.Context, d *schema.ResourceData, m
func resourceLBBackendServerDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
log.Debugf("resourceLBBackendServerDelete")
lb, err := utilityLBBackendServerCheckPresence(ctx, d, m)
if lb == nil {
if err != nil {
return diag.FromErr(err)
}
return nil
_, err := utilityLBBackendServerCheckPresence(ctx, d, m)
if err != nil {
return diag.FromErr(err)
}
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
urlValues.Add("lbId", strconv.Itoa(d.Get("lb_id").(int)))
urlValues.Add("serverName", d.Get("name").(string))
urlValues.Add("backendName", d.Get("backend_name").(string))
req := lb.BackendServerDeleteRequest{
LBID: uint64(d.Get("lb_id").(int)),
BackendName: d.Get("name").(string),
ServerName: d.Get("backend_name").(string),
}
_, err = c.DecortAPICall(ctx, "POST", lbBackendServerDeleteAPI, urlValues)
_, err = c.CloudAPI().LB().BackendServerDelete(ctx, req)
if err != nil {
return diag.FromErr(err)
}
@@ -175,7 +155,6 @@ func resourceLBBackendServerDelete(ctx context.Context, d *schema.ResourceData,
func resourceLBBackendServerUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
log.Debugf("resourceLBBackendServerEdit")
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
haveLBID, err := existLBID(ctx, d, m)
if err != nil {
@@ -186,41 +165,43 @@ func resourceLBBackendServerUpdate(ctx context.Context, d *schema.ResourceData,
return diag.Errorf("resourceLBBackendServerUpdate: can't update LB backend server because LBID %d is not allowed or does not exist", d.Get("lb_id").(int))
}
urlValues.Add("backendName", d.Get("backend_name").(string))
urlValues.Add("lbId", strconv.Itoa(d.Get("lb_id").(int)))
urlValues.Add("serverName", d.Get("name").(string))
urlValues.Add("address", d.Get("address").(string))
urlValues.Add("port", strconv.Itoa(d.Get("port").(int)))
req := lb.BackendServerUpdateRequest{
BackendName: d.Get("backend_name").(string),
LBID: uint64(d.Get("lb_id").(int)),
ServerName: d.Get("name").(string),
Address: d.Get("address").(string),
Port: uint64(d.Get("port").(int)),
}
if d.HasChange("check") {
urlValues.Add("check", d.Get("check").(string))
req.Check = d.Get("check").(string)
}
if d.HasChange("inter") {
urlValues.Add("inter", strconv.Itoa(d.Get("inter").(int)))
req.Inter = uint64(d.Get("inter").(int))
}
if d.HasChange("downinter") {
urlValues.Add("downinter", strconv.Itoa(d.Get("downinter").(int)))
req.DownInter = uint64(d.Get("downinter").(int))
}
if d.HasChange("rise") {
urlValues.Add("rise", strconv.Itoa(d.Get("rise").(int)))
req.Rise = uint64(d.Get("rise").(int))
}
if d.HasChange("fall") {
urlValues.Add("fall", strconv.Itoa(d.Get("fall").(int)))
req.Fall = uint64(d.Get("fall").(int))
}
if d.HasChange("slowstart") {
urlValues.Add("slowstart", strconv.Itoa(d.Get("slowstart").(int)))
req.SlowStart = uint64(d.Get("slowstart").(int))
}
if d.HasChange("maxconn") {
urlValues.Add("maxconn", strconv.Itoa(d.Get("maxconn").(int)))
req.MaxConn = uint64(d.Get("maxconn").(int))
}
if d.HasChange("maxqueue") {
urlValues.Add("maxqueue", strconv.Itoa(d.Get("maxqueue").(int)))
req.MaxQueue = uint64(d.Get("maxqueue").(int))
}
if d.HasChange("weight") {
urlValues.Add("weight", strconv.Itoa(d.Get("weight").(int)))
req.Weight = uint64(d.Get("weight").(int))
}
_, err = c.DecortAPICall(ctx, "POST", lbBackendServerUpdateAPI, urlValues)
_, err = c.CloudAPI().LB().BackendServerUpdate(ctx, req)
if err != nil {
return diag.FromErr(err)
}

View File

@@ -34,13 +34,13 @@ package lb
import (
"context"
"net/url"
"strconv"
"strings"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
log "github.com/sirupsen/logrus"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/lb"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/constants"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller"
)
@@ -58,12 +58,13 @@ func resourceLBFrontendCreate(ctx context.Context, d *schema.ResourceData, m int
}
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
urlValues.Add("backendName", d.Get("backend_name").(string))
urlValues.Add("lbId", strconv.Itoa(d.Get("lb_id").(int)))
urlValues.Add("frontendName", d.Get("name").(string))
req := lb.FrontendCreateRequest{
BackendName: d.Get("backend_name").(string),
LBID: uint64(d.Get("lb_id").(int)),
FrontendName: d.Get("name").(string),
}
_, err = c.DecortAPICall(ctx, "POST", lbFrontendCreateAPI, urlValues)
_, err = c.CloudAPI().LB().FrontendCreate(ctx, req)
if err != nil {
return diag.FromErr(err)
}
@@ -75,29 +76,21 @@ func resourceLBFrontendCreate(ctx context.Context, d *schema.ResourceData, m int
return diag.FromErr(err)
}
diagnostics := resourceLBFrontendRead(ctx, d, m)
if diagnostics != nil {
return diagnostics
}
return nil
return resourceLBFrontendRead(ctx, d, m)
}
func resourceLBFrontendRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
log.Debugf("resourceLBFrontendRead")
f, err := utilityLBFrontendCheckPresence(ctx, d, m)
if f == nil {
if err != nil {
d.SetId("")
return diag.FromErr(err)
}
lbId, _ := strconv.ParseInt(strings.Split(d.Id(), "#")[0], 10, 32)
d.Set("lb_id", lbId)
d.Set("backend_name", f.Backend)
d.Set("name", f.Name)
d.Set("guid", f.GUID)
d.Set("bindings", flattendBindings(f.Bindings))
flattenLBFrontend(d, f, lbId)
return nil
}
@@ -105,23 +98,22 @@ func resourceLBFrontendRead(ctx context.Context, d *schema.ResourceData, m inter
func resourceLBFrontendDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
log.Debugf("resourceLBFrontendDelete")
lb, err := utilityLBFrontendCheckPresence(ctx, d, m)
if lb == nil {
if err != nil {
return diag.FromErr(err)
}
return nil
}
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
urlValues.Add("lbId", strconv.Itoa(d.Get("lb_id").(int)))
urlValues.Add("frontendName", d.Get("name").(string))
_, err = c.DecortAPICall(ctx, "POST", lbFrontendDeleteAPI, urlValues)
_, err := utilityLBFrontendCheckPresence(ctx, d, m)
if err != nil {
return diag.FromErr(err)
}
c := m.(*controller.ControllerCfg)
req := lb.FrontendDeleteRequest{
LBID: uint64(d.Get("lb_id").(int)),
FrontendName: d.Get("name").(string),
}
_, err = c.CloudAPI().LB().FrontendDelete(ctx, req)
if err != nil {
return diag.FromErr(err)
}
d.SetId("")
return nil

View File

@@ -34,13 +34,13 @@ package lb
import (
"context"
"net/url"
"strconv"
"strings"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
log "github.com/sirupsen/logrus"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/lb"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/constants"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller"
)
@@ -58,14 +58,15 @@ func resourceLBFrontendBindCreate(ctx context.Context, d *schema.ResourceData, m
}
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
urlValues.Add("frontendName", d.Get("frontend_name").(string))
urlValues.Add("bindingName", d.Get("name").(string))
urlValues.Add("lbId", strconv.Itoa(d.Get("lb_id").(int)))
urlValues.Add("bindingAddress", d.Get("address").(string))
urlValues.Add("bindingPort", strconv.Itoa(d.Get("port").(int)))
req := lb.FrontendBindRequest{
LBID: uint64(d.Get("lb_id").(int)),
FrontendName: d.Get("frontend_name").(string),
BindingName: d.Get("name").(string),
BindingAddress: d.Get("address").(string),
BindingPort: uint64(d.Get("port").(int)),
}
_, err = c.DecortAPICall(ctx, "POST", lbFrontendBindAPI, urlValues)
_, err = c.CloudAPI().LB().FrontendBind(ctx, req)
if err != nil {
return diag.FromErr(err)
}
@@ -77,19 +78,14 @@ func resourceLBFrontendBindCreate(ctx context.Context, d *schema.ResourceData, m
return diag.FromErr(err)
}
diagnostics := resourceLBFrontendBindRead(ctx, d, m)
if diagnostics != nil {
return diagnostics
}
return nil
return resourceLBFrontendBindRead(ctx, d, m)
}
func resourceLBFrontendBindRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
log.Debugf("resourceLBFrontendBindRead")
b, err := utilityLBFrontendBindCheckPresence(ctx, d, m)
if b == nil {
if err != nil {
d.SetId("")
return diag.FromErr(err)
}
@@ -97,12 +93,7 @@ func resourceLBFrontendBindRead(ctx context.Context, d *schema.ResourceData, m i
lbId, _ := strconv.ParseInt(strings.Split(d.Id(), "#")[0], 10, 32)
frontendName := strings.Split(d.Id(), "#")[1]
d.Set("lb_id", lbId)
d.Set("frontend_name", frontendName)
d.Set("name", b.Name)
d.Set("address", b.Address)
d.Set("guid", b.GUID)
d.Set("port", b.Port)
flattenLBFrontendBind(d, b, lbId, frontendName)
return nil
}
@@ -110,24 +101,23 @@ func resourceLBFrontendBindRead(ctx context.Context, d *schema.ResourceData, m i
func resourceLBFrontendBindDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
log.Debugf("resourceLBFrontendBindDelete")
b, err := utilityLBFrontendBindCheckPresence(ctx, d, m)
if b == nil {
if err != nil {
return diag.FromErr(err)
}
return nil
}
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
urlValues.Add("lbId", strconv.Itoa(d.Get("lb_id").(int)))
urlValues.Add("bindingName", d.Get("name").(string))
urlValues.Add("frontendName", d.Get("frontend_name").(string))
_, err = c.DecortAPICall(ctx, "POST", lbFrontendBindDeleteAPI, urlValues)
_, err := utilityLBFrontendBindCheckPresence(ctx, d, m)
if err != nil {
return diag.FromErr(err)
}
c := m.(*controller.ControllerCfg)
req := lb.FrontendBindDeleteRequest{
LBID: uint64(d.Get("lb_id").(int)),
FrontendName: d.Get("frontend_name").(string),
BindingName: d.Get("name").(string),
}
_, err = c.CloudAPI().LB().FrontendBindDelete(ctx, req)
if err != nil {
return diag.FromErr(err)
}
d.SetId("")
return nil
@@ -136,7 +126,6 @@ func resourceLBFrontendBindDelete(ctx context.Context, d *schema.ResourceData, m
func resourceLBFrontendBindUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
log.Debugf("resourceLBFrontendBindEdit")
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
haveLBID, err := existLBID(ctx, d, m)
if err != nil {
@@ -147,19 +136,21 @@ func resourceLBFrontendBindUpdate(ctx context.Context, d *schema.ResourceData, m
return diag.Errorf("resourceLBFrontendBindUpdate: can't update LB frontend bind because LBID %d is not allowed or does not exist", d.Get("lb_id").(int))
}
urlValues.Add("frontendName", d.Get("frontend_name").(string))
urlValues.Add("bindingName", d.Get("name").(string))
urlValues.Add("lbId", strconv.Itoa(d.Get("lb_id").(int)))
req := lb.FrontendBindUpdateRequest{
FrontendName: d.Get("frontend_name").(string),
BindingName: d.Get("name").(string),
LBID: uint64(d.Get("lb_id").(int)),
}
if d.HasChange("address") {
urlValues.Add("bindingAddress", d.Get("address").(string))
req.BindingAddress = d.Get("address").(string)
}
if d.HasChange("port") {
urlValues.Add("bindingPort", strconv.Itoa(d.Get("port").(int)))
req.BindingPort = uint64(d.Get("port").(int))
}
_, err = c.DecortAPICall(ctx, "POST", lbFrontendBindUpdateAPI, urlValues)
_, err = c.CloudAPI().LB().FrontendBindUpdate(ctx, req)
if err != nil {
return diag.FromErr(err)
}

View File

@@ -34,38 +34,28 @@ package lb
import (
"context"
"encoding/json"
"fmt"
"net/url"
"strconv"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/lb"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller"
)
func utilityLBCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*LoadBalancer, error) {
func utilityLBCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*lb.RecordLB, error) {
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
req := lb.GetRequest{}
if (d.Get("lb_id").(int)) != 0 {
urlValues.Add("lbId", strconv.Itoa(d.Get("lb_id").(int)))
req.LBID = uint64(d.Get("lb_id").(int))
} else {
urlValues.Add("lbId", d.Id())
lbId, _ := strconv.ParseUint(d.Id(), 10, 64)
req.LBID = lbId
}
resp, err := c.DecortAPICall(ctx, "POST", lbGetAPI, urlValues)
lb, err := c.CloudAPI().LB().Get(ctx, req)
if err != nil {
return nil, err
}
if resp == "" {
return nil, nil
}
lb := &LoadBalancer{}
if err := json.Unmarshal([]byte(resp), lb); err != nil {
return nil, fmt.Errorf("can not unmarshall data to lb: %s %+v", resp, lb)
}
return lb, nil
}

View File

@@ -34,44 +34,34 @@ package lb
import (
"context"
"encoding/json"
"fmt"
"net/url"
"strconv"
"strings"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/lb"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller"
)
func utilityLBBackendCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*Backend, error) {
func utilityLBBackendCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*lb.ItemBackend, error) {
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
req := lb.GetRequest{}
bName := d.Get("name").(string)
if (d.Get("lb_id").(int)) != 0 {
urlValues.Add("lbId", strconv.Itoa(d.Get("lb_id").(int)))
req.LBID = uint64(d.Get("lb_id").(int))
} else {
parameters := strings.Split(d.Id(), "#")
urlValues.Add("lbId", parameters[0])
lbId, _ := strconv.ParseUint(parameters[0], 10, 64)
req.LBID = lbId
bName = parameters[1]
}
resp, err := c.DecortAPICall(ctx, "POST", lbGetAPI, urlValues)
lb, err := c.CloudAPI().LB().Get(ctx, req)
if err != nil {
return nil, err
}
if resp == "" {
return nil, nil
}
lb := &LoadBalancer{}
if err := json.Unmarshal([]byte(resp), lb); err != nil {
return nil, fmt.Errorf("can not unmarshall data to lb: %s %+v", resp, lb)
}
backends := lb.Backends
for _, b := range backends {
if b.Name == bName {

View File

@@ -34,56 +34,49 @@ package lb
import (
"context"
"encoding/json"
"fmt"
"net/url"
"strconv"
"strings"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/lb"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller"
)
func utilityLBBackendServerCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*Server, error) {
func utilityLBBackendServerCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*lb.ItemServer, error) {
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
req := lb.GetRequest{}
bName := d.Get("backend_name").(string)
sName := d.Get("name").(string)
if (d.Get("lb_id").(int)) != 0 {
urlValues.Add("lbId", strconv.Itoa(d.Get("lb_id").(int)))
req.LBID = uint64(d.Get("lb_id").(int))
} else {
parameters := strings.Split(d.Id(), "#")
urlValues.Add("lbId", parameters[0])
lbId, _ := strconv.ParseUint(parameters[0], 10, 64)
req.LBID = lbId
bName = parameters[1]
sName = parameters[2]
}
resp, err := c.DecortAPICall(ctx, "POST", lbGetAPI, urlValues)
foundLB, err := c.CloudAPI().LB().Get(ctx, req)
if err != nil {
return nil, err
}
if resp == "" {
return nil, nil
}
lb := &LoadBalancer{}
if err := json.Unmarshal([]byte(resp), lb); err != nil {
return nil, fmt.Errorf("can not unmarshall data to lb: %s %+v", resp, lb)
}
backend := &Backend{}
backends := lb.Backends
backend := &lb.ItemBackend{}
backends := foundLB.Backends
for i, b := range backends {
if b.Name == bName {
backend = &backends[i]
break
}
}
if backend.Name == "" {
return nil, fmt.Errorf("can not find backend with name: %s for lb: %d", bName, lb.ID)
return nil, fmt.Errorf("can not find backend with name: %s for lb: %d", bName, foundLB.ID)
}
for _, s := range backend.Servers {
@@ -92,5 +85,5 @@ func utilityLBBackendServerCheckPresence(ctx context.Context, d *schema.Resource
}
}
return nil, fmt.Errorf("can not find server with name: %s for backend: %s for lb: %d", sName, bName, lb.ID)
return nil, fmt.Errorf("can not find server with name: %s for backend: %s for lb: %d", sName, bName, foundLB.ID)
}

View File

@@ -34,50 +34,42 @@ package lb
import (
"context"
"encoding/json"
"fmt"
"net/url"
"strconv"
"strings"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/lb"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller"
)
func utilityLBFrontendCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*Frontend, error) {
func utilityLBFrontendCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*lb.ItemFrontend, error) {
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
req := lb.GetRequest{}
fName := d.Get("name").(string)
if (d.Get("lb_id").(int)) != 0 {
urlValues.Add("lbId", strconv.Itoa(d.Get("lb_id").(int)))
req.LBID = uint64(d.Get("lb_id").(int))
} else {
parameters := strings.Split(d.Id(), "#")
urlValues.Add("lbId", parameters[0])
lbId, _ := strconv.ParseUint(parameters[0], 10, 64)
req.LBID = lbId
fName = parameters[1]
}
resp, err := c.DecortAPICall(ctx, "POST", lbGetAPI, urlValues)
foundLB, err := c.CloudAPI().LB().Get(ctx, req)
if err != nil {
return nil, err
}
if resp == "" {
return nil, nil
}
lb := &LoadBalancer{}
if err := json.Unmarshal([]byte(resp), lb); err != nil {
return nil, fmt.Errorf("can not unmarshall data to lb: %s %+v", resp, lb)
}
frontends := lb.Frontends
frontends := foundLB.Frontends
for _, f := range frontends {
if f.Name == fName {
return &f, nil
}
}
return nil, fmt.Errorf("can not find frontend with name: %s for lb: %d", fName, lb.ID)
return nil, fmt.Errorf("can not find frontend with name: %s for lb: %d", fName, foundLB.ID)
}

View File

@@ -34,48 +34,40 @@ package lb
import (
"context"
"encoding/json"
"fmt"
"net/url"
"strconv"
"strings"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/lb"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller"
)
func utilityLBFrontendBindCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*Binding, error) {
func utilityLBFrontendBindCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*lb.ItemBinding, error) {
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
req := lb.GetRequest{}
fName := d.Get("frontend_name").(string)
bName := d.Get("name").(string)
if (d.Get("lb_id").(int)) != 0 {
urlValues.Add("lbId", strconv.Itoa(d.Get("lb_id").(int)))
req.LBID = uint64(d.Get("lb_id").(int))
} else {
parameters := strings.Split(d.Id(), "#")
urlValues.Add("lbId", parameters[0])
lbId, _ := strconv.ParseUint(parameters[0], 10, 64)
req.LBID = lbId
fName = parameters[1]
bName = parameters[2]
}
resp, err := c.DecortAPICall(ctx, "POST", lbGetAPI, urlValues)
foundLB, err := c.CloudAPI().LB().Get(ctx, req)
if err != nil {
return nil, err
}
if resp == "" {
return nil, nil
}
lb := &LoadBalancer{}
if err := json.Unmarshal([]byte(resp), lb); err != nil {
return nil, fmt.Errorf("can not unmarshall data to lb: %s %+v", resp, lb)
}
frontend := &Frontend{}
frontends := lb.Frontends
frontend := &lb.ItemFrontend{}
frontends := foundLB.Frontends
for i, f := range frontends {
if f.Name == fName {
frontend = &frontends[i]
@@ -83,7 +75,7 @@ func utilityLBFrontendBindCheckPresence(ctx context.Context, d *schema.ResourceD
}
}
if frontend.Name == "" {
return nil, fmt.Errorf("can not find frontend with name: %s for lb: %d", fName, lb.ID)
return nil, fmt.Errorf("can not find frontend with name: %s for lb: %d", fName, foundLB.ID)
}
for _, b := range frontend.Bindings {
@@ -92,5 +84,5 @@ func utilityLBFrontendBindCheckPresence(ctx context.Context, d *schema.ResourceD
}
}
return nil, fmt.Errorf("can not find bind with name: %s for frontend: %s for lb: %d", bName, fName, lb.ID)
return nil, fmt.Errorf("can not find bind with name: %s for frontend: %s for lb: %d", bName, fName, foundLB.ID)
}

View File

@@ -34,39 +34,31 @@ package lb
import (
"context"
"encoding/json"
"net/url"
"strconv"
log "github.com/sirupsen/logrus"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/lb"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
func utilityLBListCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (LBList, error) {
lbList := LBList{}
func utilityLBListCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (lb.ListLB, error) {
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
req := lb.ListRequest{}
if includedeleted, ok := d.GetOk("includedeleted"); ok {
urlValues.Add("includedeleted", strconv.FormatBool((includedeleted.(bool))))
req.IncludeDeleted = includedeleted.(bool)
}
if page, ok := d.GetOk("page"); ok {
urlValues.Add("page", strconv.Itoa(page.(int)))
req.Page = uint64(page.(int))
}
if size, ok := d.GetOk("size"); ok {
urlValues.Add("size", strconv.Itoa(size.(int)))
req.Size = uint64(size.(int))
}
log.Debugf("utilityLBListCheckPresence: load lb list")
lbListRaw, err := c.DecortAPICall(ctx, "POST", lbListAPI, urlValues)
if err != nil {
return nil, err
}
err = json.Unmarshal([]byte(lbListRaw), &lbList)
lbList, err := c.CloudAPI().LB().List(ctx, req)
if err != nil {
return nil, err
}

View File

@@ -34,35 +34,27 @@ package lb
import (
"context"
"encoding/json"
"net/url"
"strconv"
log "github.com/sirupsen/logrus"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/lb"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
func utilityLBListDeletedCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (LBList, error) {
lbList := LBList{}
func utilityLBListDeletedCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (lb.ListLB, error) {
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
req := lb.ListDeletedRequest{}
if page, ok := d.GetOk("page"); ok {
urlValues.Add("page", strconv.Itoa(page.(int)))
req.Page = uint64(page.(int))
}
if size, ok := d.GetOk("size"); ok {
urlValues.Add("size", strconv.Itoa(size.(int)))
req.Size = uint64(size.(int))
}
log.Debugf("utilityLBListDeletedCheckPresence: load lb list")
lbListRaw, err := c.DecortAPICall(ctx, "POST", lbListDeletedAPI, urlValues)
if err != nil {
return nil, err
}
err = json.Unmarshal([]byte(lbListRaw), &lbList)
lbList, err := c.CloudAPI().LB().ListDeleted(ctx, req)
if err != nil {
return nil, err
}