gos_tech_4.4.3 4.3.7
Nikita Sorokin 1 year ago
parent a1e61674c8
commit c89574c3e6

2
.gitignore vendored

@ -3,3 +3,5 @@ examples/
url_scrapping/ url_scrapping/
terraform-provider-decort* terraform-provider-decort*
.vscode/ .vscode/
.DS_Store

@ -1,4 +1,6 @@
## Version 4.3.6 ## Version 4.3.7
## Bugfix ## Bugfix
- Fixed bug with disks resize error - Fixed bug with get request. Update cloudapi/vins
- Updated decort-golang-sdk version

@ -7,7 +7,7 @@ ZIPDIR = ./zip
BINARY=${NAME} BINARY=${NAME}
WORKPATH= ./examples/terraform.d/plugins/${HOSTNAME}/${NAMESPACE}/${NAMESPACE}/${VERSION}/${OS_ARCH} WORKPATH= ./examples/terraform.d/plugins/${HOSTNAME}/${NAMESPACE}/${NAMESPACE}/${VERSION}/${OS_ARCH}
MAINPATH = ./cmd/decort/ MAINPATH = ./cmd/decort/
VERSION=4.3.6 VERSION=4.3.7
OS_ARCH=$(shell go env GOHOSTOS)_$(shell go env GOHOSTARCH) OS_ARCH=$(shell go env GOHOSTOS)_$(shell go env GOHOSTARCH)
FILES = ${BINARY}_${VERSION}_darwin_amd64\ FILES = ${BINARY}_${VERSION}_darwin_amd64\

@ -9,7 +9,7 @@ require (
github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.1 github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.1
github.com/sirupsen/logrus v1.9.0 github.com/sirupsen/logrus v1.9.0
golang.org/x/net v0.12.0 golang.org/x/net v0.12.0
repository.basistech.ru/BASIS/decort-golang-sdk v1.5.3 repository.basistech.ru/BASIS/decort-golang-sdk v1.5.8
) )
require ( require (

@ -339,5 +339,5 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C
gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
repository.basistech.ru/BASIS/decort-golang-sdk v1.5.3 h1:Rt5tE4EZcUr4ONK9u/XYe2mG1CC37xLUnNuCLYKDwYs= repository.basistech.ru/BASIS/decort-golang-sdk v1.5.8 h1:NQ9cEZmWhqXzG3Gxsh0zkQjnqR/HI7JWbN9+EOqGUnE=
repository.basistech.ru/BASIS/decort-golang-sdk v1.5.3/go.mod h1:szsTGa73O75ckCWVGJPvTtRbhA/ubuYrYhMkPjvHlmE= repository.basistech.ru/BASIS/decort-golang-sdk v1.5.8/go.mod h1:szsTGa73O75ckCWVGJPvTtRbhA/ubuYrYhMkPjvHlmE=

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. Copyright (c) 2019-2023 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Authors: Authors:
Petr Krutov, <petr.krutov@digitalenergy.online> Petr Krutov, <petr.krutov@digitalenergy.online>
Stanislav Solovev, <spsolovev@digitalenergy.online> Stanislav Solovev, <spsolovev@digitalenergy.online>
@ -34,8 +34,8 @@ package vins
import ( import (
"context" "context"
"strconv"
"github.com/google/uuid"
"github.com/hashicorp/terraform-plugin-sdk/v2/diag" "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"repository.basistech.ru/BASIS/terraform-provider-decort/internal/constants" "repository.basistech.ru/BASIS/terraform-provider-decort/internal/constants"
@ -47,8 +47,9 @@ func dataSourceVinsRead(ctx context.Context, d *schema.ResourceData, m interface
return diag.FromErr(err) return diag.FromErr(err)
} }
d.SetId(strconv.FormatUint(vins.ID, 10)) id := uuid.New()
flattenVinsData(d, *vins) d.SetId(id.String())
flattenVinsData(d, vins)
return nil return nil
} }
@ -640,7 +641,7 @@ func rulesSchemaMake() map[string]*schema.Schema {
} }
} }
func configSchrmaMake() map[string]*schema.Schema { func natConfigSchemaMake() map[string]*schema.Schema {
return map[string]*schema.Schema{ return map[string]*schema.Schema{
"net_mask": { "net_mask": {
Type: schema.TypeInt, Type: schema.TypeInt,
@ -678,7 +679,7 @@ func natSchemaMake() map[string]*schema.Schema {
Type: schema.TypeList, Type: schema.TypeList,
Computed: true, Computed: true,
Elem: &schema.Resource{ Elem: &schema.Resource{
Schema: configSchrmaMake(), Schema: natConfigSchemaMake(),
}, },
}, },
"devices": { "devices": {
@ -768,7 +769,6 @@ func dataSourceVinsSchemaMake() map[string]*schema.Schema {
Required: true, Required: true,
Description: "Unique ID of the ViNS. If ViNS ID is specified, then ViNS name, rg_id and account_id are ignored.", Description: "Unique ID of the ViNS. If ViNS ID is specified, then ViNS name, rg_id and account_id are ignored.",
}, },
"vnf_dev": { "vnf_dev": {
Type: schema.TypeList, Type: schema.TypeList,
Computed: true, Computed: true,
@ -776,10 +776,6 @@ func dataSourceVinsSchemaMake() map[string]*schema.Schema {
Schema: vnfDevSchemaMake(), Schema: vnfDevSchemaMake(),
}, },
}, },
"_ckey": {
Type: schema.TypeString,
Computed: true,
},
"account_id": { "account_id": {
Type: schema.TypeInt, Type: schema.TypeInt,
Computed: true, Computed: true,
@ -797,6 +793,14 @@ func dataSourceVinsSchemaMake() map[string]*schema.Schema {
Schema: vinsComputeSchemaMake(), Schema: vinsComputeSchemaMake(),
}, },
}, },
"created_by": {
Type: schema.TypeString,
Computed: true,
},
"created_time": {
Type: schema.TypeInt,
Computed: true,
},
"default_gw": { "default_gw": {
Type: schema.TypeString, Type: schema.TypeString,
Computed: true, Computed: true,
@ -808,6 +812,14 @@ func dataSourceVinsSchemaMake() map[string]*schema.Schema {
Schema: qosSchemaMake(), Schema: qosSchemaMake(),
}, },
}, },
"deleted_by": {
Type: schema.TypeString,
Computed: true,
},
"deleted_time": {
Type: schema.TypeInt,
Computed: true,
},
"desc": { "desc": {
Type: schema.TypeString, Type: schema.TypeString,
Computed: true, Computed: true,
@ -874,6 +886,14 @@ func dataSourceVinsSchemaMake() map[string]*schema.Schema {
Type: schema.TypeString, Type: schema.TypeString,
Computed: true, Computed: true,
}, },
"updated_by": {
Type: schema.TypeString,
Computed: true,
},
"updated_time": {
Type: schema.TypeInt,
Computed: true,
},
"user_managed": { "user_managed": {
Type: schema.TypeBool, Type: schema.TypeBool,
Computed: true, Computed: true,

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. Copyright (c) 2019-2023 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Authors: Authors:
Petr Krutov, <petr.krutov@digitalenergy.online> Petr Krutov, <petr.krutov@digitalenergy.online>
Stanislav Solovev, <spsolovev@digitalenergy.online> Stanislav Solovev, <spsolovev@digitalenergy.online>

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. Copyright (c) 2019-2023 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Authors: Authors:
Petr Krutov, <petr.krutov@digitalenergy.online> Petr Krutov, <petr.krutov@digitalenergy.online>
Stanislav Solovev, <spsolovev@digitalenergy.online> Stanislav Solovev, <spsolovev@digitalenergy.online>
@ -49,7 +49,7 @@ func dataSourceVinsExtNetListRead(ctx context.Context, d *schema.ResourceData, m
id := uuid.New() id := uuid.New()
d.SetId(id.String()) d.SetId(id.String())
d.Set("items", flattenVinsExtNetList(extNetList)) d.Set("items", flattenVinsExtNetList(extNetList))
d.Set("entry_count", extNetList.EntryCount)
return nil return nil
} }
@ -92,6 +92,10 @@ func DataSourceVinsExtNetListchemaMake() map[string]*schema.Schema {
}, },
}, },
}, },
"entry_count": {
Type: schema.TypeInt,
Computed: true,
},
} }
return rets return rets
} }

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. Copyright (c) 2019-2023 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Authors: Authors:
Petr Krutov, <petr.krutov@digitalenergy.online> Petr Krutov, <petr.krutov@digitalenergy.online>
Stanislav Solovev, <spsolovev@digitalenergy.online> Stanislav Solovev, <spsolovev@digitalenergy.online>
@ -49,7 +49,7 @@ func dataSourceVinsIpListRead(ctx context.Context, d *schema.ResourceData, m int
id := uuid.New() id := uuid.New()
d.SetId(id.String()) d.SetId(id.String())
d.Set("items", flattenVinsIpList(ips)) d.Set("items", flattenVinsIpList(ips))
d.Set("entry_count", ips.EntryCount)
return nil return nil
} }
@ -96,6 +96,10 @@ func DataSourceVinsIpListSchemaMake() map[string]*schema.Schema {
}, },
}, },
}, },
"entry_count": {
Type: schema.TypeInt,
Computed: true,
},
} }
return rets return rets
} }

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. Copyright (c) 2019-2023 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Authors: Authors:
Petr Krutov, <petr.krutov@digitalenergy.online> Petr Krutov, <petr.krutov@digitalenergy.online>
Stanislav Solovev, <spsolovev@digitalenergy.online> Stanislav Solovev, <spsolovev@digitalenergy.online>

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. Copyright (c) 2019-2023 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Authors: Authors:
Petr Krutov, <petr.krutov@digitalenergy.online> Petr Krutov, <petr.krutov@digitalenergy.online>
Stanislav Solovev, <spsolovev@digitalenergy.online> Stanislav Solovev, <spsolovev@digitalenergy.online>

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. Copyright (c) 2019-2023 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Authors: Authors:
Petr Krutov, <petr.krutov@digitalenergy.online> Petr Krutov, <petr.krutov@digitalenergy.online>
Stanislav Solovev, <spsolovev@digitalenergy.online> Stanislav Solovev, <spsolovev@digitalenergy.online>
@ -49,6 +49,8 @@ func dataSourceVinsNatRuleListRead(ctx context.Context, d *schema.ResourceData,
id := uuid.New() id := uuid.New()
d.SetId(id.String()) d.SetId(id.String())
d.Set("items", flattenVinsNatRuleList(natRules)) d.Set("items", flattenVinsNatRuleList(natRules))
d.Set("entry_count", natRules.EntryCount)
return nil return nil
} }
@ -99,6 +101,10 @@ func DataSourceVinsNatRuleListSchemaMake() map[string]*schema.Schema {
}, },
}, },
}, },
"entry_count": {
Type: schema.TypeInt,
Computed: true,
},
} }
return rets return rets
} }

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. Copyright (c) 2019-2023 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Authors: Authors:
Petr Krutov, <petr.krutov@digitalenergy.online> Petr Krutov, <petr.krutov@digitalenergy.online>
Stanislav Solovev, <spsolovev@digitalenergy.online> Stanislav Solovev, <spsolovev@digitalenergy.online>
@ -49,7 +49,7 @@ func flattenMGMT(mgmt vins.RecordMGMT) []map[string]interface{} {
return res return res
} }
func flattenResources(resources *vins.RecordResources) []map[string]interface{} { func flattenResources(resources vins.RecordResources) []map[string]interface{} {
res := make([]map[string]interface{}, 0) res := make([]map[string]interface{}, 0)
temp := map[string]interface{}{ temp := map[string]interface{}{
"cpu": resources.CPU, "cpu": resources.CPU,
@ -65,7 +65,7 @@ func flattenConfig(config vins.RecordVNFConfig) []map[string]interface{} {
res := make([]map[string]interface{}, 0) res := make([]map[string]interface{}, 0)
temp := map[string]interface{}{ temp := map[string]interface{}{
"mgmt": flattenMGMT(config.MGMT), "mgmt": flattenMGMT(config.MGMT),
"resources": flattenResources(&config.Resources), "resources": flattenResources(config.Resources),
} }
res = append(res, temp) res = append(res, temp)
return res return res
@ -84,8 +84,7 @@ func flattenQOS(qos vins.QOS) []map[string]interface{} {
} }
func flattenInterfaces(interfaces []vins.ItemVNFInterface) []map[string]interface{} { func flattenInterfaces(interfaces []vins.ItemVNFInterface) []map[string]interface{} {
res := make([]map[string]interface{}, 0) res := make([]map[string]interface{}, 0, len(interfaces))
for _, vnfInterface := range interfaces { for _, vnfInterface := range interfaces {
temp := map[string]interface{}{ temp := map[string]interface{}{
"conn_id": vnfInterface.ConnID, "conn_id": vnfInterface.ConnID,
@ -141,7 +140,7 @@ func flattenVNFDev(vnfDev vins.RecordVNFDev) []map[string]interface{} {
} }
func flattenComputes(computes vins.ListVINSComputes) []map[string]interface{} { func flattenComputes(computes vins.ListVINSComputes) []map[string]interface{} {
res := make([]map[string]interface{}, 0) res := make([]map[string]interface{}, 0, len(computes))
for _, compute := range computes { for _, compute := range computes {
temp := map[string]interface{}{ temp := map[string]interface{}{
"compute_id": compute.ID, "compute_id": compute.ID,
@ -154,7 +153,7 @@ func flattenComputes(computes vins.ListVINSComputes) []map[string]interface{} {
} }
func flattenReservations(reservations vins.ListReservations) []map[string]interface{} { func flattenReservations(reservations vins.ListReservations) []map[string]interface{} {
res := make([]map[string]interface{}, 0) res := make([]map[string]interface{}, 0, len(reservations))
for _, reservation := range reservations { for _, reservation := range reservations {
temp := map[string]interface{}{ temp := map[string]interface{}{
"client_type": reservation.ClientType, "client_type": reservation.ClientType,
@ -275,9 +274,9 @@ func flattenGW(gw vins.RecordGW) []map[string]interface{} {
return res return res
} }
func flattenRules(rules vins.ListNATRules) []map[string]interface{} { func flattenRules(rules vins.ListNATRulesConfig) []map[string]interface{} {
res := make([]map[string]interface{}, 0) res := make([]map[string]interface{}, 0, len(rules))
for _, rule := range rules.Data { for _, rule := range rules {
tmp := map[string]interface{}{ tmp := map[string]interface{}{
"rule_id": rule.ID, "rule_id": rule.ID,
"local_ip": rule.LocalIP, "local_ip": rule.LocalIP,
@ -343,9 +342,9 @@ func flattenVNFS(vnfs vins.RecordVNFs) []map[string]interface{} {
return res return res
} }
func flattenRuleBlock(rules vins.ListNATRules) []map[string]interface{} { func flattenRuleBlock(rules vins.ListNATRulesConfig) []map[string]interface{} {
res := make([]map[string]interface{}, 0) res := make([]map[string]interface{}, 0, len(rules))
for _, rule := range rules.Data { for _, rule := range rules {
tmp := map[string]interface{}{ tmp := map[string]interface{}{
"int_ip": rule.LocalIP, "int_ip": rule.LocalIP,
"int_port": rule.LocalPort, "int_port": rule.LocalPort,
@ -359,15 +358,18 @@ func flattenRuleBlock(rules vins.ListNATRules) []map[string]interface{} {
return res return res
} }
func flattenVins(d *schema.ResourceData, vins vins.RecordVINS) { func flattenVins(d *schema.ResourceData, vins *vins.RecordVINS) {
d.Set("vins_id", vins.ID) d.Set("vins_id", vins.ID)
d.Set("vnf_dev", flattenVNFDev(vins.VNFDev)) d.Set("vnf_dev", flattenVNFDev(vins.VNFDev))
d.Set("_ckey", vins.CKey)
d.Set("account_id", vins.AccountID) d.Set("account_id", vins.AccountID)
d.Set("account_name", vins.AccountName) d.Set("account_name", vins.AccountName)
d.Set("computes", flattenComputes(vins.Computes)) d.Set("computes", flattenComputes(vins.Computes))
d.Set("created_by", vins.CreatedBy)
d.Set("created_time", vins.CreatedTime)
d.Set("default_gw", vins.DefaultGW) d.Set("default_gw", vins.DefaultGW)
d.Set("default_qos", flattenQOS(vins.DefaultQOS)) d.Set("default_qos", flattenQOS(vins.DefaultQOS))
d.Set("deleted_by", vins.DeletedBy)
d.Set("deleted_time", vins.DeletedTime)
d.Set("desc", vins.Description) d.Set("desc", vins.Description)
d.Set("gid", vins.GID) d.Set("gid", vins.GID)
d.Set("guid", vins.GUID) d.Set("guid", vins.GUID)
@ -384,21 +386,26 @@ func flattenVins(d *schema.ResourceData, vins vins.RecordVINS) {
d.Set("rg_name", vins.RGName) d.Set("rg_name", vins.RGName)
d.Set("sec_vnf_dev_id", vins.SecVNFDevID) d.Set("sec_vnf_dev_id", vins.SecVNFDevID)
d.Set("status", vins.Status) d.Set("status", vins.Status)
d.Set("updated_by", vins.UpdatedBy)
d.Set("updated_time", vins.UpdatedTime)
d.Set("user_managed", vins.UserManaged) d.Set("user_managed", vins.UserManaged)
d.Set("vnfs", flattenVNFS(vins.VNFs)) d.Set("vnfs", flattenVNFS(vins.VNFs))
d.Set("vxlan_id", vins.VXLANID) d.Set("vxlan_id", vins.VXLANID)
d.Set("nat_rule", flattenRuleBlock(vins.VNFs.NAT.Config.Rules)) d.Set("nat_rule", flattenRuleBlock(vins.VNFs.NAT.Config.Rules))
} }
func flattenVinsData(d *schema.ResourceData, vins vins.RecordVINS) { func flattenVinsData(d *schema.ResourceData, vins *vins.RecordVINS) {
d.Set("vins_id", vins.ID) d.Set("vins_id", vins.ID)
d.Set("vnf_dev", flattenVNFDev(vins.VNFDev)) d.Set("vnf_dev", flattenVNFDev(vins.VNFDev))
d.Set("_ckey", vins.CKey)
d.Set("account_id", vins.AccountID) d.Set("account_id", vins.AccountID)
d.Set("account_name", vins.AccountName) d.Set("account_name", vins.AccountName)
d.Set("computes", flattenComputes(vins.Computes)) d.Set("computes", flattenComputes(vins.Computes))
d.Set("created_by", vins.CreatedBy)
d.Set("created_time", vins.CreatedTime)
d.Set("default_gw", vins.DefaultGW) d.Set("default_gw", vins.DefaultGW)
d.Set("default_qos", flattenQOS(vins.DefaultQOS)) d.Set("default_qos", flattenQOS(vins.DefaultQOS))
d.Set("deleted_by", vins.DeletedBy)
d.Set("deleted_time", vins.DeletedTime)
d.Set("desc", vins.Description) d.Set("desc", vins.Description)
d.Set("gid", vins.GID) d.Set("gid", vins.GID)
d.Set("guid", vins.GUID) d.Set("guid", vins.GUID)
@ -415,14 +422,16 @@ func flattenVinsData(d *schema.ResourceData, vins vins.RecordVINS) {
d.Set("rg_name", vins.RGName) d.Set("rg_name", vins.RGName)
d.Set("sec_vnf_dev_id", vins.SecVNFDevID) d.Set("sec_vnf_dev_id", vins.SecVNFDevID)
d.Set("status", vins.Status) d.Set("status", vins.Status)
d.Set("updated_by", vins.UpdatedBy)
d.Set("updated_time", vins.UpdatedTime)
d.Set("user_managed", vins.UserManaged) d.Set("user_managed", vins.UserManaged)
d.Set("vnfs", flattenVNFS(vins.VNFs)) d.Set("vnfs", flattenVNFS(vins.VNFs))
d.Set("vxlan_id", vins.VXLANID) d.Set("vxlan_id", vins.VXLANID)
} }
func flattenVinsAudits(auidts vins.ListAudits) []map[string]interface{} { func flattenVinsAudits(audits vins.ListAudits) []map[string]interface{} {
res := make([]map[string]interface{}, 0) res := make([]map[string]interface{}, 0, len(audits))
for _, audit := range auidts { for _, audit := range audits {
temp := map[string]interface{}{ temp := map[string]interface{}{
"call": audit.Call, "call": audit.Call,
"response_time": audit.ResponseTime, "response_time": audit.ResponseTime,
@ -437,7 +446,7 @@ func flattenVinsAudits(auidts vins.ListAudits) []map[string]interface{} {
} }
func flattenVinsExtNetList(extNetList *vins.ListExtNets) []map[string]interface{} { func flattenVinsExtNetList(extNetList *vins.ListExtNets) []map[string]interface{} {
res := make([]map[string]interface{}, 0) res := make([]map[string]interface{}, 0, len(extNetList.Data))
for _, extNet := range extNetList.Data { for _, extNet := range extNetList.Data {
temp := map[string]interface{}{ temp := map[string]interface{}{
"default_gw": extNet.DefaultGW, "default_gw": extNet.DefaultGW,
@ -454,7 +463,7 @@ func flattenVinsExtNetList(extNetList *vins.ListExtNets) []map[string]interface{
} }
func flattenVinsIpList(ips *vins.ListIPs) []map[string]interface{} { func flattenVinsIpList(ips *vins.ListIPs) []map[string]interface{} {
res := make([]map[string]interface{}, 0) res := make([]map[string]interface{}, 0, len(ips.Data))
for _, ip := range ips.Data { for _, ip := range ips.Data {
temp := map[string]interface{}{ temp := map[string]interface{}{
"client_type": ip.ClientType, "client_type": ip.ClientType,
@ -472,7 +481,7 @@ func flattenVinsIpList(ips *vins.ListIPs) []map[string]interface{} {
} }
func flattenVinsList(vl *vins.ListVINS) []map[string]interface{} { func flattenVinsList(vl *vins.ListVINS) []map[string]interface{} {
res := make([]map[string]interface{}, 0) res := make([]map[string]interface{}, 0, len(vl.Data))
for _, v := range vl.Data { for _, v := range vl.Data {
temp := map[string]interface{}{ temp := map[string]interface{}{
"account_id": v.AccountID, "account_id": v.AccountID,
@ -498,7 +507,7 @@ func flattenVinsList(vl *vins.ListVINS) []map[string]interface{} {
} }
func flattenVinsNatRuleList(natRules *vins.ListNATRules) []map[string]interface{} { func flattenVinsNatRuleList(natRules *vins.ListNATRules) []map[string]interface{} {
res := make([]map[string]interface{}, 0) res := make([]map[string]interface{}, 0, len(natRules.Data))
for _, natRule := range natRules.Data { for _, natRule := range natRules.Data {
temp := map[string]interface{}{ temp := map[string]interface{}{
"id": natRule.ID, "id": natRule.ID,

@ -129,8 +129,10 @@ func resourceVinsCreate(ctx context.Context, d *schema.ResourceData, m interface
if desc, ok := d.GetOk("desc"); ok { if desc, ok := d.GetOk("desc"); ok {
req.Description = desc.(string) req.Description = desc.(string)
} }
req.PreReservationsNum = uint(d.Get("pre_reservations_num").(int)) if preReservationsNum, ok := d.GetOk("pre_reservations_num"); ok {
req.PreReservationsNum = uint64(preReservationsNum.(int))
}
id, err := c.CloudAPI().VINS().CreateInRG(ctx, req) id, err := c.CloudAPI().VINS().CreateInRG(ctx, req)
if err != nil { if err != nil {
return diag.FromErr(err) return diag.FromErr(err)
@ -141,7 +143,6 @@ func resourceVinsCreate(ctx context.Context, d *schema.ResourceData, m interface
req := vins.CreateInAccountRequest{ req := vins.CreateInAccountRequest{
Name: d.Get("name").(string), Name: d.Get("name").(string),
AccountID: uint64(accountId.(int)), AccountID: uint64(accountId.(int)),
PreReservationsNum: uint64(d.Get("pre_reservations_num").(int)),
} }
if gid, ok := d.GetOk("gid"); ok { if gid, ok := d.GetOk("gid"); ok {
@ -153,7 +154,10 @@ func resourceVinsCreate(ctx context.Context, d *schema.ResourceData, m interface
if desc, ok := d.GetOk("desc"); ok { if desc, ok := d.GetOk("desc"); ok {
req.Description = desc.(string) req.Description = desc.(string)
} }
if preReservationsNum, ok := d.GetOk("pre_reservations_num"); ok {
req.PreReservationsNum = uint64(preReservationsNum.(int))
}
id, err := c.CloudAPI().VINS().CreateInAccount(ctx, req) id, err := c.CloudAPI().VINS().CreateInAccount(ctx, req)
if err != nil { if err != nil {
return diag.FromErr(err) return diag.FromErr(err)
@ -214,15 +218,15 @@ func resourceVinsCreate(ctx context.Context, d *schema.ResourceData, m interface
} }
} }
defer resourceVinsRead(ctx, d, m)
return warnings.Get() return append(warnings.Get(), resourceVinsRead(ctx, d, m)...)
} }
func resourceVinsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { func resourceVinsRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
c := m.(*controller.ControllerCfg) c := m.(*controller.ControllerCfg)
warnings := dc.Warnings{} warnings := dc.Warnings{}
vinsData, err := utilityVinsCheckPresence(ctx, d, m) vinsData, err := utilityDataVinsCheckPresence(ctx, d, m)
if err != nil { if err != nil {
d.SetId("") d.SetId("")
return diag.FromErr(err) return diag.FromErr(err)
@ -282,14 +286,14 @@ func resourceVinsRead(ctx context.Context, d *schema.ResourceData, m interface{}
} }
if hasChangeState { if hasChangeState {
vinsData, err = utilityVinsCheckPresence(ctx, d, m) vinsData, err = utilityDataVinsCheckPresence(ctx, d, m)
if err != nil { if err != nil {
d.SetId("") d.SetId("")
return diag.FromErr(err) return diag.FromErr(err)
} }
} }
flattenVins(d, *vinsData) flattenVins(d, vinsData)
return warnings.Get() return warnings.Get()
} }
@ -366,7 +370,7 @@ func resourceVinsUpdate(ctx context.Context, d *schema.ResourceData, m interface
} }
} }
vinsData, err := utilityVinsCheckPresence(ctx, d, m) vinsData, err := utilityDataVinsCheckPresence(ctx, d, m)
if err != nil { if err != nil {
d.SetId("") d.SetId("")
return diag.FromErr(err) return diag.FromErr(err)
@ -425,7 +429,7 @@ func resourceVinsUpdate(ctx context.Context, d *schema.ResourceData, m interface
} }
if hasChangeState { if hasChangeState {
vinsData, err = utilityVinsCheckPresence(ctx, d, m) vinsData, err = utilityDataVinsCheckPresence(ctx, d, m)
if err != nil { if err != nil {
d.SetId("") d.SetId("")
return diag.FromErr(err) return diag.FromErr(err)
@ -631,8 +635,7 @@ func resourceVinsUpdate(ctx context.Context, d *schema.ResourceData, m interface
} }
} }
defer resourceVinsRead(ctx, d, m) return append (warnings.Get(), resourceVinsRead(ctx, d, m)...)
return warnings.Get()
} }
func resourceVinsDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { func resourceVinsDelete(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics {
@ -658,7 +661,7 @@ func extNetSchemaMake() map[string]*schema.Schema {
return map[string]*schema.Schema{ return map[string]*schema.Schema{
"ext_net_id": { "ext_net_id": {
Type: schema.TypeInt, Type: schema.TypeInt,
Default: 0, Default: -1,
Optional: true, Optional: true,
}, },
"ext_net_ip": { "ext_net_ip": {
@ -674,6 +677,7 @@ func ipSchemaMake() map[string]*schema.Schema {
"type": { "type": {
Type: schema.TypeString, Type: schema.TypeString,
Required: true, Required: true,
ValidateFunc: validation.StringInSlice([]string {"DHCP", "VIP", "EXCLUDE"}, false),
}, },
"ip_addr": { "ip_addr": {
Type: schema.TypeString, Type: schema.TypeString,
@ -823,7 +827,6 @@ func resourceVinsSchemaMake() map[string]*schema.Schema {
Optional: true, Optional: true,
Default: false, Default: false,
} }
rets["vins_id"] = &schema.Schema{ rets["vins_id"] = &schema.Schema{
Type: schema.TypeInt, Type: schema.TypeInt,
Computed: true, Computed: true,

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. Copyright (c) 2019-2023 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Authors: Authors:
Petr Krutov, <petr.krutov@digitalenergy.online> Petr Krutov, <petr.krutov@digitalenergy.online>
Stanislav Solovev, <spsolovev@digitalenergy.online> Stanislav Solovev, <spsolovev@digitalenergy.online>
@ -44,23 +44,13 @@ import (
func utilityDataVinsCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*vins.RecordVINS, error) { func utilityDataVinsCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*vins.RecordVINS, error) {
c := m.(*controller.ControllerCfg) c := m.(*controller.ControllerCfg)
req := vins.GetRequest{ req := vins.GetRequest{}
VINSID: uint64(d.Get("vins_id").(int)),
}
vins, err := c.CloudAPI().VINS().Get(ctx, req) if d.Id() != "" {
if err != nil { rgId, _ := strconv.ParseUint(d.Id(), 10, 64)
return nil, err req.VINSID = rgId
} } else {
req.VINSID = uint64(d.Get("vins_id").(int))
return vins, nil
}
func utilityVinsCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*vins.RecordVINS, error) {
c := m.(*controller.ControllerCfg)
vinsId, _ := strconv.ParseUint(d.Id(), 10, 64)
req := vins.GetRequest{
VINSID: vinsId,
} }
vins, err := c.CloudAPI().VINS().Get(ctx, req) vins, err := c.CloudAPI().VINS().Get(ctx, req)
@ -70,3 +60,4 @@ func utilityVinsCheckPresence(ctx context.Context, d *schema.ResourceData, m int
return vins, nil return vins, nil
} }

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. Copyright (c) 2019-2023 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Authors: Authors:
Petr Krutov, <petr.krutov@digitalenergy.online> Petr Krutov, <petr.krutov@digitalenergy.online>
Stanislav Solovev, <spsolovev@digitalenergy.online> Stanislav Solovev, <spsolovev@digitalenergy.online>
@ -34,6 +34,7 @@ package vins
import ( import (
"context" "context"
"strconv"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins" "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins"
@ -42,8 +43,13 @@ import (
func utilityVinsAuditsCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (vins.ListAudits, error) { func utilityVinsAuditsCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (vins.ListAudits, error) {
c := m.(*controller.ControllerCfg) c := m.(*controller.ControllerCfg)
req := vins.AuditsRequest{ req := vins.AuditsRequest{}
VINSID: uint64(d.Get("vins_id").(int)),
if d.Id() != "" {
rgId, _ := strconv.ParseUint(d.Id(), 10, 64)
req.VINSID = rgId
} else {
req.VINSID = uint64(d.Get("vins_id").(int))
} }
audits, err := c.CloudAPI().VINS().Audits(ctx, req) audits, err := c.CloudAPI().VINS().Audits(ctx, req)

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. Copyright (c) 2019-2023 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Authors: Authors:
Petr Krutov, <petr.krutov@digitalenergy.online> Petr Krutov, <petr.krutov@digitalenergy.online>
Stanislav Solovev, <spsolovev@digitalenergy.online> Stanislav Solovev, <spsolovev@digitalenergy.online>
@ -34,6 +34,7 @@ package vins
import ( import (
"context" "context"
"strconv"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins" "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins"
@ -46,6 +47,13 @@ func utilityVinsExtNetListCheckPresence(ctx context.Context, d *schema.ResourceD
VINSID: uint64(d.Get("vins_id").(int)), VINSID: uint64(d.Get("vins_id").(int)),
} }
if d.Id() != "" {
rgId, _ := strconv.ParseUint(d.Id(), 10, 64)
req.VINSID = rgId
} else {
req.VINSID = uint64(d.Get("vins_id").(int))
}
extNetList, err := c.CloudAPI().VINS().ExtNetList(ctx, req) extNetList, err := c.CloudAPI().VINS().ExtNetList(ctx, req)
if err != nil { if err != nil {
return nil, err return nil, err

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. Copyright (c) 2019-2023 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Authors: Authors:
Petr Krutov, <petr.krutov@digitalenergy.online> Petr Krutov, <petr.krutov@digitalenergy.online>
Stanislav Solovev, <spsolovev@digitalenergy.online> Stanislav Solovev, <spsolovev@digitalenergy.online>
@ -34,6 +34,7 @@ package vins
import ( import (
"context" "context"
"strconv"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins" "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins"
@ -42,8 +43,13 @@ import (
func utilityVinsIpListCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*vins.ListIPs, error) { func utilityVinsIpListCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*vins.ListIPs, error) {
c := m.(*controller.ControllerCfg) c := m.(*controller.ControllerCfg)
req := vins.IPListRequest{ req := vins.IPListRequest{}
VINSID: uint64(d.Get("vins_id").(int)),
if d.Id() != "" {
rgId, _ := strconv.ParseUint(d.Id(), 10, 64)
req.VINSID = rgId
} else {
req.VINSID = uint64(d.Get("vins_id").(int))
} }
ips, err := c.CloudAPI().VINS().IPList(ctx, req) ips, err := c.CloudAPI().VINS().IPList(ctx, req)

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. Copyright (c) 2019-2023 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Authors: Authors:
Petr Krutov, <petr.krutov@digitalenergy.online> Petr Krutov, <petr.krutov@digitalenergy.online>
Stanislav Solovev, <spsolovev@digitalenergy.online> Stanislav Solovev, <spsolovev@digitalenergy.online>

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. Copyright (c) 2019-2023 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Authors: Authors:
Petr Krutov, <petr.krutov@digitalenergy.online> Petr Krutov, <petr.krutov@digitalenergy.online>
Stanislav Solovev, <spsolovev@digitalenergy.online> Stanislav Solovev, <spsolovev@digitalenergy.online>

@ -1,5 +1,5 @@
/* /*
Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved. Copyright (c) 2019-2023 Digital Energy Cloud Solutions LLC. All Rights Reserved.
Authors: Authors:
Petr Krutov, <petr.krutov@digitalenergy.online> Petr Krutov, <petr.krutov@digitalenergy.online>
Stanislav Solovev, <spsolovev@digitalenergy.online> Stanislav Solovev, <spsolovev@digitalenergy.online>
@ -34,6 +34,7 @@ package vins
import ( import (
"context" "context"
"strconv"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins" "repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins"
@ -42,8 +43,13 @@ import (
func utilityVinsNatRuleListCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*vins.ListNATRules, error) { func utilityVinsNatRuleListCheckPresence(ctx context.Context, d *schema.ResourceData, m interface{}) (*vins.ListNATRules, error) {
c := m.(*controller.ControllerCfg) c := m.(*controller.ControllerCfg)
req := vins.NATRuleListRequest{ req := vins.NATRuleListRequest{}
VINSID: uint64(d.Get("vins_id").(int)),
if d.Id() != "" {
rgId, _ := strconv.ParseUint(d.Id(), 10, 64)
req.VINSID = rgId
} else {
req.VINSID = uint64(d.Get("vins_id").(int))
} }
natRuleList, err := c.CloudAPI().VINS().NATRuleList(ctx, req) natRuleList, err := c.CloudAPI().VINS().NATRuleList(ctx, req)

Loading…
Cancel
Save