4.0.0
This commit is contained in:
@@ -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"
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user