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

@@ -50,13 +50,13 @@ func dataSourceSepRead(ctx context.Context, d *schema.ResourceData, m interface{
id := uuid.New()
d.SetId(id.String())
d.Set("ckey", desSep.Ckey)
d.Set("ckey", desSep.CKey)
d.Set("meta", flattens.FlattenMeta(desSep.Meta))
d.Set("consumed_by", desSep.ConsumedBy)
d.Set("desc", desSep.Desc)
d.Set("gid", desSep.Gid)
d.Set("guid", desSep.Guid)
d.Set("sep_id", desSep.Id)
d.Set("desc", desSep.Description)
d.Set("gid", desSep.GID)
d.Set("guid", desSep.GUID)
d.Set("sep_id", desSep.ID)
d.Set("milestones", desSep.Milestones)
d.Set("name", desSep.Name)
d.Set("obj_status", desSep.ObjStatus)

View File

@@ -37,9 +37,11 @@ import (
"github.com/google/uuid"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/sep"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/constants"
)
// TODO: how to marshal byPool????
func dataSourceSepConsumptionRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
sepCons, err := utilitySepConsumptionCheckPresence(ctx, d, m)
if err != nil {
@@ -50,7 +52,7 @@ func dataSourceSepConsumptionRead(ctx context.Context, d *schema.ResourceData, m
d.Set("type", sepCons.Type)
d.Set("total", flattenSepConsumption(sepCons.Total))
d.Set("by_pool", flattenSepConsumptionPools(sepCons.ByPool))
// d.Set("by_pool", flattenSepConsumptionPools(sepCons.ByPool))
return nil
}
@@ -72,7 +74,7 @@ func flattenSepConsumptionPools(mp map[string]SepConsumptionInd) []map[string]in
return sh
}
func flattenSepConsumption(sc SepConsumptionTotal) []map[string]interface{} {
func flattenSepConsumption(sc sep.Total) []map[string]interface{} {
sh := make([]map[string]interface{}, 0)
temp := map[string]interface{}{
"capacity_limit": sc.CapacityLimit,

View File

@@ -38,22 +38,23 @@ import (
"github.com/google/uuid"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/sep"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/constants"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/flattens"
)
func flattenSepList(sl SepList) []map[string]interface{} {
func flattenSepList(sl sep.ListSEP) []map[string]interface{} {
res := make([]map[string]interface{}, 0)
for _, item := range sl {
data, _ := json.Marshal(item.Config)
temp := map[string]interface{}{
"ckey": item.Ckey,
"ckey": item.CKey,
"meta": flattens.FlattenMeta(item.Meta),
"consumed_by": item.ConsumedBy,
"desc": item.Desc,
"gid": item.Gid,
"guid": item.Guid,
"sep_id": item.Id,
"desc": item.Description,
"gid": item.GID,
"guid": item.GUID,
"sep_id": item.ID,
"milestones": item.Milestones,
"name": item.Name,
"obj_status": item.ObjStatus,

View File

@@ -34,78 +34,60 @@ package sep
import (
"context"
"encoding/json"
"errors"
"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/cloudbroker/sep"
"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/flattens"
log "github.com/sirupsen/logrus"
)
func resourceSepCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
log.Debugf("resourceSepCreate: called for sep %s", d.Get("name").(string))
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
req := sep.CreateRequest{}
urlValues.Add("name", d.Get("name").(string))
urlValues.Add("gid", strconv.Itoa(d.Get("gid").(int)))
urlValues.Add("sep_type", d.Get("type").(string))
req.Name = d.Get("name").(string)
req.GID = uint64(d.Get("gid").(int))
req.SEPType = d.Get("type").(string)
if desc, ok := d.GetOk("desc"); ok {
urlValues.Add("description", desc.(string))
req.Description = desc.(string)
}
if configString, ok := d.GetOk("config"); ok {
urlValues.Add("config", configString.(string))
req.Config = configString.(string)
}
if enable, ok := d.GetOk("enable"); ok {
urlValues.Add("enable", strconv.FormatBool(enable.(bool)))
req.Enable = enable.(bool)
}
tstr := d.Get("consumed_by").([]interface{})
temp := ""
l := len(tstr)
for i, str := range tstr {
s := "\"" + str.(string) + "\""
if i != (l - 1) {
s += ","
}
temp = temp + s
var consumedNIDs []uint64
for _, item := range d.Get("consumed_by").([]interface{}) {
consumedNIDs = append(consumedNIDs, uint64(item.(int)))
}
temp = "[" + temp + "]"
urlValues.Add("consumer_nids", temp)
tstr = d.Get("provided_by").([]interface{})
temp = ""
l = len(tstr)
for i, str := range tstr {
s := "\"" + str.(string) + "\""
if i != (l - 1) {
s += ","
}
temp = temp + s
req.ConsumerNIDs = consumedNIDs
var providerNIDs []uint64
for _, item := range d.Get("provided_by").([]interface{}) {
providerNIDs = append(providerNIDs, uint64(item.(int)))
}
temp = "[" + temp + "]"
urlValues.Add("provider_nids", temp)
sepId, err := c.DecortAPICall(ctx, "POST", sepCreateAPI, urlValues)
req.ProviderNIDs = providerNIDs
sepId, err := c.CloudBroker().SEP().Create(ctx, req)
if err != nil {
return diag.FromErr(err)
}
d.SetId(sepId)
d.SetId(strconv.FormatUint(sepId, 10))
d.Set("sep_id", sepId)
diagnostics := resourceSepRead(ctx, d, m)
if diagnostics != nil {
return diagnostics
}
return nil
return resourceSepRead(ctx, d, m)
}
func resourceSepRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
@@ -117,13 +99,13 @@ func resourceSepRead(ctx context.Context, d *schema.ResourceData, m interface{})
return diag.FromErr(err)
}
d.Set("ckey", sep.Ckey)
d.Set("ckey", sep.CKey)
d.Set("meta", flattens.FlattenMeta(sep.Meta))
d.Set("consumed_by", sep.ConsumedBy)
d.Set("desc", sep.Desc)
d.Set("gid", sep.Gid)
d.Set("guid", sep.Guid)
d.Set("sep_id", sep.Id)
d.Set("desc", sep.Description)
d.Set("gid", sep.GID)
d.Set("guid", sep.GUID)
d.Set("sep_id", sep.ID)
d.Set("milestones", sep.Milestones)
d.Set("name", sep.Name)
d.Set("obj_status", sep.ObjStatus)
@@ -148,78 +130,91 @@ func resourceSepDelete(ctx context.Context, d *schema.ResourceData, m interface{
}
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
urlValues.Add("sep_id", strconv.Itoa(d.Get("sep_id").(int)))
req := sep.DeleteRequest{
SEPID: sepDes.ID,
}
_, err = c.DecortAPICall(ctx, "POST", sepDeleteAPI, urlValues)
_, err = c.CloudBroker().SEP().Delete(ctx, req)
if err != nil {
return diag.FromErr(err)
}
d.SetId("")
return nil
}
func resourceSepEdit(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
func resourceSepUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
log.Debugf("resourceSepEdit: called for %s, id: %d", d.Get("name").(string), d.Get("sep_id").(int))
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
if d.HasChange("decommission") {
decommission := d.Get("decommission").(bool)
if decommission {
urlValues.Add("sep_id", strconv.Itoa(d.Get("sep_id").(int)))
urlValues.Add("clear_physically", strconv.FormatBool(d.Get("clear_physically").(bool)))
_, err := c.DecortAPICall(ctx, "POST", sepDecommissionAPI, urlValues)
req := sep.DecommissionRequest{
SEPID: uint64(d.Get("sep_id").(int)),
ClearPhisically: d.Get("clear_physically").(bool),
}
_, err := c.CloudBroker().SEP().Decommission(ctx, req)
if err != nil {
return diag.FromErr(err)
}
}
}
urlValues = &url.Values{}
if d.HasChange("upd_capacity_limit") {
updCapacityLimit := d.Get("upd_capacity_limit").(bool)
if updCapacityLimit {
urlValues.Add("sep_id", strconv.Itoa(d.Get("sep_id").(int)))
_, err := c.DecortAPICall(ctx, "POST", sepUpdateCapacityLimitAPI, urlValues)
req := sep.UpdateCapacityLimitRequest{
SEPID: uint64(d.Get("sep_id").(int)),
}
_, err := c.CloudBroker().SEP().UpdateCapacityLimit(ctx, req)
if err != nil {
return diag.FromErr(err)
}
}
}
urlValues = &url.Values{}
if d.HasChange("config") {
urlValues.Add("sep_id", strconv.Itoa(d.Get("sep_id").(int)))
urlValues.Add("config", d.Get("config").(string))
_, err := c.DecortAPICall(ctx, "POST", sepConfigValidateAPI, urlValues)
validateReq := sep.ConfigValidateRequest{
SEPID: uint64(d.Get("sep_id").(int)),
Config: d.Get("config").(string),
}
insertReq := sep.ConfigInsertRequest{
SEPID: uint64(d.Get("sep_id").(int)),
Config: d.Get("config").(string),
}
_, err := c.CloudBroker().SEP().ConfigValidate(ctx, validateReq)
if err != nil {
return diag.FromErr(err)
}
_, err = c.DecortAPICall(ctx, "POST", sepConfigInsertAPI, urlValues)
_, err = c.CloudBroker().SEP().ConfigInsert(ctx, insertReq)
if err != nil {
return diag.FromErr(err)
}
}
urlValues = &url.Values{}
if d.HasChange("field_edit") {
fieldConfig := d.Get("field_edit").([]interface{})
field := fieldConfig[0].(map[string]interface{})
urlValues.Add("sep_id", strconv.Itoa(d.Get("sep_id").(int)))
urlValues.Add("field_name", field["field_name"].(string))
urlValues.Add("field_value", field["field_value"].(string))
urlValues.Add("field_type", field["field_type"].(string))
req := sep.ConfigFieldEditRequest{
SEPID: uint64(d.Get("sep_id").(int)),
FieldName: field["field_name"].(string),
FieldValue: field["field_value"].(string),
FieldType: field["field_type"].(string),
}
_, err := c.DecortAPICall(ctx, "POST", sepConfigFieldEditAPI, urlValues)
_, err := c.CloudBroker().SEP().ConfigFieldEdit(ctx, req)
if err != nil {
return diag.FromErr(err)
}
}
urlValues = &url.Values{}
if d.HasChange("enable") {
err := resourceSepChangeEnabled(ctx, d, m)
if err != nil {
@@ -227,7 +222,6 @@ func resourceSepEdit(ctx context.Context, d *schema.ResourceData, m interface{})
}
}
urlValues = &url.Values{}
if d.HasChange("consumed_by") {
err := resourceSepUpdateNodes(ctx, d, m)
if err != nil {
@@ -235,7 +229,6 @@ func resourceSepEdit(ctx context.Context, d *schema.ResourceData, m interface{})
}
}
urlValues = &url.Values{}
if d.HasChange("provided_by") {
err := resourceSepUpdateProviders(ctx, d, m)
if err != nil {
@@ -243,7 +236,6 @@ func resourceSepEdit(ctx context.Context, d *schema.ResourceData, m interface{})
}
}
urlValues = &url.Values{}
if diagnostics := resourceSepRead(ctx, d, m); diagnostics != nil {
return diagnostics
}
@@ -252,42 +244,48 @@ func resourceSepEdit(ctx context.Context, d *schema.ResourceData, m interface{})
}
func resourceSepChangeEnabled(ctx context.Context, d *schema.ResourceData, m interface{}) error {
var api string
sepID := uint64(d.Get("sep_id").(int))
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
urlValues.Add("sep_id", strconv.Itoa(d.Get("sep_id").(int)))
if d.Get("enable").(bool) {
api = sepEnableAPI
req := sep.EnableRequest{
SEPID: sepID,
}
_, err := c.CloudBroker().SEP().Enable(ctx, req)
if err != nil {
return err
}
} else {
api = sepDisableAPI
}
resp, err := c.DecortAPICall(ctx, "POST", api, urlValues)
if err != nil {
return err
}
res, err := strconv.ParseBool(resp)
if err != nil {
return err
}
if !res {
return errors.New("Cannot enable/disable")
req := sep.DisableRequest{
SEPID: sepID,
}
_, err := c.CloudBroker().SEP().Disable(ctx, req)
if err != nil {
return err
}
}
return nil
}
func resourceSepUpdateNodes(ctx context.Context, d *schema.ResourceData, m interface{}) error {
log.Debugf("resourceSepUpdateNodes: called for %s, id: %d", d.Get("name").(string), d.Get("sep_id").(int))
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
delReq := sep.DelConsumerNodesRequest{
SEPID: uint64(d.Get("sep_id").(int)),
}
addReq := sep.AddConsumerNodesRequest{
SEPID: uint64(d.Get("sep_id").(int)),
}
toDel := false
t1, t2 := d.GetChange("consumed_by")
urlValues.Add("sep_id", strconv.Itoa(d.Get("sep_id").(int)))
consumedIds := make([]interface{}, 0)
temp := ""
api := ""
if d1, d2 := t1.([]interface{}), t2.([]interface{}); len(d1) > len(d2) {
for _, n := range d2 {
@@ -295,25 +293,30 @@ func resourceSepUpdateNodes(ctx context.Context, d *schema.ResourceData, m inter
consumedIds = append(consumedIds, n)
}
}
api = sepDelConsumerNodesAPI
toDel = true
} else {
consumedIds = d.Get("consumed_by").([]interface{})
api = sepAddConsumerNodesAPI
}
l := len(consumedIds)
for i, consumedId := range consumedIds {
s := strconv.Itoa(consumedId.(int))
if i != (l - 1) {
s += ","
}
temp = temp + s
var consumerNIDs []uint64
for _, consumedId := range consumedIds {
consumerNIDs = append(consumerNIDs, uint64(consumedId.(int)))
}
temp = "[" + temp + "]"
urlValues.Add("consumer_nids", temp)
_, err := c.DecortAPICall(ctx, "POST", api, urlValues)
if err != nil {
return err
if toDel {
delReq.ConsumerNIDs = consumerNIDs
_, err := c.CloudBroker().SEP().DelConsumerNodes(ctx, delReq)
if err != nil {
return err
}
} else {
addReq.ConsumerNIDs = consumerNIDs
_, err := c.CloudBroker().SEP().AddConsumerNodes(ctx, addReq)
if err != nil {
return err
}
}
return nil
@@ -331,21 +334,17 @@ func findElInt(sl []interface{}, el interface{}) bool {
func resourceSepUpdateProviders(ctx context.Context, d *schema.ResourceData, m interface{}) error {
log.Debugf("resourceSepUpdateProviders: called for %s, id: %d", d.Get("name").(string), d.Get("sep_id").(int))
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
urlValues.Add("sep_id", strconv.Itoa(d.Get("sep_id").(int)))
providerIds := d.Get("provided_by").([]interface{})
temp := ""
l := len(providerIds)
for i, providerId := range providerIds {
s := strconv.Itoa(providerId.(int))
if i != (l - 1) {
s += ","
}
temp = temp + s
req := sep.AddProviderNodesRequest{
SEPID: uint64(d.Get("sep_id").(int)),
}
temp = "[" + temp + "]"
urlValues.Add("provider_nids", temp)
_, err := c.DecortAPICall(ctx, "POST", sepAddProviderNodesAPI, urlValues)
var providerNIDs []uint64
for _, item := range d.Get("provided_by").([]interface{}) {
providerNIDs = append(providerNIDs, uint64(item.(int)))
}
req.ProviderNIDs = providerNIDs
_, err := c.CloudBroker().SEP().AddProviderNodes(ctx, req)
if err != nil {
return err
}
@@ -488,7 +487,7 @@ func ResourceSep() *schema.Resource {
CreateContext: resourceSepCreate,
ReadContext: resourceSepRead,
UpdateContext: resourceSepEdit,
UpdateContext: resourceSepUpdate,
DeleteContext: resourceSepDelete,
Importer: &schema.ResourceImporter{

View File

@@ -34,15 +34,14 @@ package sep
import (
"context"
"encoding/json"
"net/url"
"strconv"
"github.com/google/uuid"
"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/cloudbroker/sep"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/constants"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller"
log "github.com/sirupsen/logrus"
)
func resourceSepConfigCreate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
@@ -100,35 +99,43 @@ func resourceSepConfigExists(ctx context.Context, d *schema.ResourceData, m inte
return true, nil
}
func resourceSepConfigEdit(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
func resourceSepConfigUpdate(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
log.Debugf("resourceSepConfigEdit: called for sep id: %d", d.Get("sep_id").(int))
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
if d.HasChange("config") {
urlValues.Add("sep_id", strconv.Itoa(d.Get("sep_id").(int)))
urlValues.Add("config", d.Get("config").(string))
_, err := c.DecortAPICall(ctx, "POST", sepConfigValidateAPI, urlValues)
validateReq := sep.ConfigValidateRequest{
SEPID: uint64(d.Get("sep_id").(int)),
Config: d.Get("config").(string),
}
insertReq := sep.ConfigInsertRequest{
SEPID: uint64(d.Get("sep_id").(int)),
Config: d.Get("config").(string),
}
_, err := c.CloudBroker().SEP().ConfigValidate(ctx, validateReq)
if err != nil {
return diag.FromErr(err)
}
_, err = c.DecortAPICall(ctx, "POST", sepConfigInsertAPI, urlValues)
_, err = c.CloudBroker().SEP().ConfigInsert(ctx, insertReq)
if err != nil {
return diag.FromErr(err)
}
}
urlValues = &url.Values{}
if d.HasChange("field_edit") {
fieldConfig := d.Get("field_edit").([]interface{})
field := fieldConfig[0].(map[string]interface{})
urlValues.Add("sep_id", strconv.Itoa(d.Get("sep_id").(int)))
urlValues.Add("field_name", field["field_name"].(string))
urlValues.Add("field_value", field["field_value"].(string))
urlValues.Add("field_type", field["field_type"].(string))
req := sep.ConfigFieldEditRequest{
SEPID: uint64(d.Get("sep_id").(int)),
FieldName: field["field_name"].(string),
FieldValue: field["field_value"].(string),
FieldType: field["field_type"].(string),
}
_, err := c.DecortAPICall(ctx, "POST", sepConfigFieldEditAPI, urlValues)
_, err := c.CloudBroker().SEP().ConfigFieldEdit(ctx, req)
if err != nil {
return diag.FromErr(err)
}
@@ -184,7 +191,7 @@ func ResourceSepConfig() *schema.Resource {
CreateContext: resourceSepConfigCreate,
ReadContext: resourceSepConfigRead,
UpdateContext: resourceSepConfigEdit,
UpdateContext: resourceSepConfigUpdate,
DeleteContext: resourceSepConfigDelete,
Importer: &schema.ResourceImporter{

View File

@@ -33,35 +33,28 @@ package sep
import (
"context"
"encoding/json"
"net/url"
"strconv"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller"
log "github.com/sirupsen/logrus"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/sep"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
func utilitySepCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*Sep, error) {
func utilitySepCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*sep.RecordSEP, error) {
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
sep := &Sep{}
req := sep.GetRequest{}
if d.Get("sep_id").(int) == 0 {
urlValues.Add("sep_id", d.Id())
id, _ := strconv.ParseUint(d.Id(), 10, 64)
req.SEPID = id
} else {
urlValues.Add("sep_id", strconv.Itoa(d.Get("sep_id").(int)))
req.SEPID = uint64(d.Get("sep_id").(int))
}
log.Debugf("utilitySepCheckPresence: load sep")
sepRaw, err := c.DecortAPICall(ctx, "POST", sepGetAPI, urlValues)
if err != nil {
return nil, err
}
err = json.Unmarshal([]byte(sepRaw), sep)
sep, err := c.CloudBroker().SEP().Get(ctx, req)
if err != nil {
return nil, err
}

View File

@@ -33,31 +33,22 @@ package sep
import (
"context"
"encoding/json"
"net/url"
"strconv"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller"
log "github.com/sirupsen/logrus"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/sep"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
func utilitySepConfigCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (SepConfig, error) {
func utilitySepConfigCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*sep.SEPConfig, error) {
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
sepConfig := SepConfig{}
urlValues.Add("sep_id", strconv.Itoa(d.Get("sep_id").(int)))
log.Debugf("utilitySepConfigCheckPresence: load sep config")
sepConfigRaw, err := c.DecortAPICall(ctx, "POST", sepGetConfigAPI, urlValues)
if err != nil {
return nil, err
req := sep.GetConfigRequest{
SEPID: uint64(d.Get("sep_id").(int)),
}
err = json.Unmarshal([]byte(sepConfigRaw), &sepConfig)
log.Debugf("utilitySepConfigCheckPresence: load sep config")
sepConfig, err := c.CloudBroker().SEP().GetConfig(ctx, req)
if err != nil {
return nil, err
}

View File

@@ -33,28 +33,19 @@ package sep
import (
"context"
"encoding/json"
"net/url"
"strconv"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/sep"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller"
)
func utilitySepConsumptionCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*SepConsumption, error) {
func utilitySepConsumptionCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*sep.RecordConsumption, error) {
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
sepCons := &SepConsumption{}
urlValues.Add("sep_id", strconv.Itoa(d.Get("sep_id").(int)))
sepConsRaw, err := c.DecortAPICall(ctx, "POST", sepConsumptionAPI, urlValues)
if err != nil {
return nil, err
req := sep.ConsumptionRequest{
SEPID: uint64(d.Get("sep_id").(int)),
}
err = json.Unmarshal([]byte(sepConsRaw), sepCons)
sepCons, err := c.CloudBroker().SEP().Consumption(ctx, req)
if err != nil {
return nil, err
}

View File

@@ -33,35 +33,26 @@ package sep
import (
"context"
"encoding/json"
"net/url"
"strconv"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller"
log "github.com/sirupsen/logrus"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/sep"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
func utilitySepDiskListCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) ([]int, error) {
func utilitySepDiskListCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) ([]uint64, error) {
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
sepDiskList := SepDiskList{}
urlValues.Add("sep_id", strconv.Itoa(d.Get("sep_id").(int)))
req := sep.DiskListRequest{
SEPID: uint64(d.Get("sep_id").(int)),
}
if poolName, ok := d.GetOk("pool_name"); ok {
urlValues.Add("pool_name", poolName.(string))
req.PoolName = poolName.(string)
}
log.Debugf("utilitySepDiskListCheckPresence: load sep")
sepDiskListRaw, err := c.DecortAPICall(ctx, "POST", sepDiskListAPI, urlValues)
if err != nil {
return nil, err
}
err = json.Unmarshal([]byte(sepDiskListRaw), &sepDiskList)
sepDiskList, err := c.CloudBroker().SEP().DiskList(ctx, req)
if err != nil {
return nil, err
}

View File

@@ -33,35 +33,27 @@ package sep
import (
"context"
"encoding/json"
"net/url"
"strconv"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller"
log "github.com/sirupsen/logrus"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/sep"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
func utilitySepListCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (SepList, error) {
sepList := SepList{}
func utilitySepListCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (sep.ListSEP, error) {
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
req := sep.ListRequest{}
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("utilitySepListCheckPresence: load image list")
sepListRaw, err := c.DecortAPICall(ctx, "POST", sepListAPI, urlValues)
if err != nil {
return nil, err
}
err = json.Unmarshal([]byte(sepListRaw), &sepList)
sepList, err := c.CloudBroker().SEP().List(ctx, req)
if err != nil {
return nil, err
}

View File

@@ -33,32 +33,23 @@ package sep
import (
"context"
"encoding/json"
"net/url"
"strconv"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller"
log "github.com/sirupsen/logrus"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudbroker/sep"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/controller"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
func utilitySepPoolCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (SepPool, error) {
func utilitySepPoolCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*sep.RecordPool, error) {
c := m.(*controller.ControllerCfg)
urlValues := &url.Values{}
sepPool := SepPool{}
urlValues.Add("sep_id", strconv.Itoa(d.Get("sep_id").(int)))
urlValues.Add("pool_name", d.Get("pool_name").(string))
log.Debugf("utilitySepDesPoolCheckPresence: load sep")
sepPoolRaw, err := c.DecortAPICall(ctx, "POST", sepGetPoolAPI, urlValues)
if err != nil {
return nil, err
req := sep.GetPoolRequest{
SEPID: uint64(d.Get("sep_id").(int)),
PoolName: d.Get("pool_name").(string),
}
err = json.Unmarshal([]byte(sepPoolRaw), &sepPool)
log.Debugf("utilitySepDesPoolCheckPresence: load sep")
sepPool, err := c.CloudBroker().SEP().GetPool(ctx, req)
if err != nil {
return nil, err
}