This commit is contained in:
asteam
2025-01-21 12:16:49 +03:00
parent 76ea459b3d
commit 60e23338ad
751 changed files with 17877 additions and 1908 deletions

View File

@@ -7,7 +7,6 @@ import (
"github.com/hashicorp/terraform-plugin-framework/datasource"
"github.com/hashicorp/terraform-plugin-framework/datasource/schema"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/constants"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/flattens"
@@ -26,7 +25,7 @@ func NewDataSourceVINS() datasource.DataSource {
// dataSourceVINS is the data source implementation.
type dataSourceVINS struct {
client *decort.DecortClient
client *client.Client
}
func (d *dataSourceVINS) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) {

View File

@@ -7,7 +7,6 @@ import (
"github.com/hashicorp/terraform-plugin-framework/datasource"
"github.com/hashicorp/terraform-plugin-framework/datasource/schema"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/constants"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/flattens"
@@ -26,7 +25,7 @@ func NewDataSourceVINSAudits() datasource.DataSource {
// dataSourceVINSAudits is the data source implementation.
type dataSourceVINSAudits struct {
client *decort.DecortClient
client *client.Client
}
func (d *dataSourceVINSAudits) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) {

View File

@@ -7,7 +7,6 @@ import (
"github.com/hashicorp/terraform-plugin-framework/datasource"
"github.com/hashicorp/terraform-plugin-framework/datasource/schema"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/constants"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/flattens"
@@ -26,7 +25,7 @@ func NewDataSourceVINSExtNetList() datasource.DataSource {
// dataSourceVINSExtNetList is the data source implementation.
type dataSourceVINSExtNetList struct {
client *decort.DecortClient
client *client.Client
}
func (d *dataSourceVINSExtNetList) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) {

View File

@@ -7,7 +7,6 @@ import (
"github.com/hashicorp/terraform-plugin-framework/datasource"
"github.com/hashicorp/terraform-plugin-framework/datasource/schema"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/constants"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/flattens"
@@ -26,7 +25,7 @@ func NewDataSourceVINSIPList() datasource.DataSource {
// dataSourceVINSIPList is the data source implementation.
type dataSourceVINSIPList struct {
client *decort.DecortClient
client *client.Client
}
func (d *dataSourceVINSIPList) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) {

View File

@@ -7,7 +7,6 @@ import (
"github.com/hashicorp/terraform-plugin-framework/datasource"
"github.com/hashicorp/terraform-plugin-framework/datasource/schema"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/constants"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/flattens"
@@ -26,7 +25,7 @@ func NewDataSourceVINSList() datasource.DataSource {
// dataSourceVINSList is the data source implementation.
type dataSourceVINSList struct {
client *decort.DecortClient
client *client.Client
}
func (d *dataSourceVINSList) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) {

View File

@@ -7,7 +7,6 @@ import (
"github.com/hashicorp/terraform-plugin-framework/datasource"
"github.com/hashicorp/terraform-plugin-framework/datasource/schema"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/constants"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/flattens"
@@ -26,7 +25,7 @@ func NewDataSourceVINSListDeleted() datasource.DataSource {
// dataSourceVINSListDeleted is the data source implementation.
type dataSourceVINSListDeleted struct {
client *decort.DecortClient
client *client.Client
}
func (d *dataSourceVINSListDeleted) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) {

View File

@@ -7,7 +7,6 @@ import (
"github.com/hashicorp/terraform-plugin-framework/datasource"
"github.com/hashicorp/terraform-plugin-framework/datasource/schema"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/constants"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/flattens"
@@ -26,7 +25,7 @@ func NewDataSourceVINSNATRuleList() datasource.DataSource {
// dataSourceVINSNATRuleList is the data source implementation.
type dataSourceVINSNATRuleList struct {
client *decort.DecortClient
client *client.Client
}
func (d *dataSourceVINSNATRuleList) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) {

View File

@@ -7,7 +7,6 @@ import (
"github.com/hashicorp/terraform-plugin-framework/datasource"
"github.com/hashicorp/terraform-plugin-framework/datasource/schema"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/constants"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/flattens"
@@ -26,7 +25,7 @@ func NewDataSourceVINSStaticRoute() datasource.DataSource {
// dataSourceVINSStaticRoute is the data source implementation.
type dataSourceVINSStaticRoute struct {
client *decort.DecortClient
client *client.Client
}
func (d *dataSourceVINSStaticRoute) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) {

View File

@@ -7,7 +7,6 @@ import (
"github.com/hashicorp/terraform-plugin-framework/datasource"
"github.com/hashicorp/terraform-plugin-framework/datasource/schema"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/constants"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/flattens"
@@ -26,7 +25,7 @@ func NewDataSourceVINSStaticRouteList() datasource.DataSource {
// dataSourceVINSStaticRouteList is the data source implementation.
type dataSourceVINSStaticRouteList struct {
client *decort.DecortClient
client *client.Client
}
func (d *dataSourceVINSStaticRouteList) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) {

View File

@@ -8,8 +8,8 @@ import (
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-framework/types"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/models"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/utilities"
)
@@ -17,7 +17,7 @@ import (
// VINSDataSource flattens data source for vins.
// Return error in case data source is not found on the platform.
// Flatten errors are added to tflog.
func VINSDataSource(ctx context.Context, state *models.DataSourceVINSModel, c *decort.DecortClient) diag.Diagnostics {
func VINSDataSource(ctx context.Context, state *models.DataSourceVINSModel, c *client.Client) diag.Diagnostics {
tflog.Info(ctx, "Start flattens.VINSDataSource")
diags := diag.Diagnostics{}
@@ -99,6 +99,7 @@ func flattenVNFDev(ctx context.Context, vnfdev *vins.RecordVNFDev) types.Object
Status: types.StringValue(vnfdev.Status),
TechStatus: types.StringValue(vnfdev.TechStatus),
Type: types.StringValue(vnfdev.Type),
VNCPassword: types.StringValue(vnfdev.VNCPassword),
}
temp.Capabilities, diags = types.ListValueFrom(ctx, types.StringType, vnfdev.Capabilities)
@@ -367,14 +368,11 @@ func flattenReservations(ctx context.Context, items *vins.ListReservations) type
tempSlice := make([]types.Object, 0, len(*items))
for _, item := range *items {
temp := models.ReservationModel{
ClientType: types.StringValue(item.ClientType),
Description: types.StringValue(item.Description),
DomainName: types.StringValue(item.DomainName),
Hostname: types.StringValue(item.Hostname),
IP: types.StringValue(item.IP),
MAC: types.StringValue(item.MAC),
Type: types.StringValue(item.Type),
VMID: types.Int64Value(int64(item.VMID)),
AccountID: types.Int64Value(int64(item.AccountID)),
IP: types.StringValue(item.IP),
MAC: types.StringValue(item.MAC),
Type: types.StringValue(item.Type),
VMID: types.Int64Value(int64(item.VMID)),
}
obj, diags := types.ObjectValueFrom(ctx, models.ItemReservations, temp)

View File

@@ -7,7 +7,7 @@ import (
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-framework/types"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/models"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/utilities"
)
@@ -15,7 +15,7 @@ import (
// VINSAuditsDataSource flattens data source for vins audits.
// Return error in case data source is not found on the platform.
// Flatten errors are added to tflog.
func VINSAuditsDataSource(ctx context.Context, state *models.DataSourceVINSAuditsModel, c *decort.DecortClient) diag.Diagnostics {
func VINSAuditsDataSource(ctx context.Context, state *models.DataSourceVINSAuditsModel, c *client.Client) diag.Diagnostics {
tflog.Info(ctx, "Start flattens.VINSAuditsDataSource")
diags := diag.Diagnostics{}

View File

@@ -7,7 +7,7 @@ import (
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-framework/types"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/models"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/utilities"
)
@@ -15,7 +15,7 @@ import (
// VINSExtNetListDataSource flattens data source for vins ext net list.
// Return error in case data source is not found on the platform.
// Flatten errors are added to tflog.
func VINSExtNetListDataSource(ctx context.Context, state *models.DataSourceVINSExtNetListModel, c *decort.DecortClient) diag.Diagnostics {
func VINSExtNetListDataSource(ctx context.Context, state *models.DataSourceVINSExtNetListModel, c *client.Client) diag.Diagnostics {
tflog.Info(ctx, "Start flattens.VINSExtNetListDataSource")
diags := diag.Diagnostics{}

View File

@@ -7,7 +7,7 @@ import (
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-framework/types"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/models"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/utilities"
)
@@ -15,7 +15,7 @@ import (
// VINSIPListDataSource flattens data source for vins ip list.
// Return error in case data source is not found on the platform.
// Flatten errors are added to tflog.
func VINSIPListDataSource(ctx context.Context, state *models.DataSourceVINSIPListModel, c *decort.DecortClient) diag.Diagnostics {
func VINSIPListDataSource(ctx context.Context, state *models.DataSourceVINSIPListModel, c *client.Client) diag.Diagnostics {
tflog.Info(ctx, "Start flattens.VINSIPListDataSource")
diags := diag.Diagnostics{}

View File

@@ -7,7 +7,7 @@ import (
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-framework/types"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/models"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/utilities"
)
@@ -15,7 +15,7 @@ import (
// VINSListDataSource flattens data source for vins list.
// Return error in case data source is not found on the platform.
// Flatten errors are added to tflog.
func VINSListDataSource(ctx context.Context, state *models.DataSourceVINSListModel, c *decort.DecortClient) diag.Diagnostics {
func VINSListDataSource(ctx context.Context, state *models.DataSourceVINSListModel, c *client.Client) diag.Diagnostics {
tflog.Info(ctx, "Start flattens.VINSListDataSource")
diags := diag.Diagnostics{}

View File

@@ -7,7 +7,7 @@ import (
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-framework/types"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/models"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/utilities"
)
@@ -15,7 +15,7 @@ import (
// VINSListDeletedDataSource flattens data source for vins list deleted.
// Return error in case data source is not found on the platform.
// Flatten errors are added to tflog.
func VINSListDeletedDataSource(ctx context.Context, state *models.DataSourceVINSListDeletedModel, c *decort.DecortClient) diag.Diagnostics {
func VINSListDeletedDataSource(ctx context.Context, state *models.DataSourceVINSListDeletedModel, c *client.Client) diag.Diagnostics {
tflog.Info(ctx, "Start flattens.VINSListDeletedDataSource")
diags := diag.Diagnostics{}

View File

@@ -7,7 +7,7 @@ import (
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-framework/types"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/models"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/utilities"
)
@@ -15,7 +15,7 @@ import (
// VINSNATRuleListDataSource flattens data source for vins nat rule list.
// Return error in case data source is not found on the platform.
// Flatten errors are added to tflog.
func VINSNATRuleListDataSource(ctx context.Context, state *models.DataSourceVINSNATRuleListModel, c *decort.DecortClient) diag.Diagnostics {
func VINSNATRuleListDataSource(ctx context.Context, state *models.DataSourceVINSNATRuleListModel, c *client.Client) diag.Diagnostics {
tflog.Info(ctx, "Start flattens.VINSNATRuleListDataSource")
diags := diag.Diagnostics{}

View File

@@ -8,7 +8,7 @@ import (
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-framework/types"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/models"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/utilities"
)
@@ -16,7 +16,7 @@ import (
// VINSStaticRouteDataSource flattens data source for vins static route.
// Return error in case data source is not found on the platform.
// Flatten errors are added to tflog.
func VINSStaticRouteDataSource(ctx context.Context, state *models.DataSourceVINSStaticRouteModel, c *decort.DecortClient) diag.Diagnostics {
func VINSStaticRouteDataSource(ctx context.Context, state *models.DataSourceVINSStaticRouteModel, c *client.Client) diag.Diagnostics {
tflog.Info(ctx, "Start flattens.VINSStaticRouteDataSource")
diags := diag.Diagnostics{}

View File

@@ -8,7 +8,7 @@ import (
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-framework/types"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/models"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/utilities"
)
@@ -16,7 +16,7 @@ import (
// VINSStaticRouteListDataSource flattens data source for vins static route list.
// Return error in case data source is not found on the platform.
// Flatten errors are added to tflog.
func VINSStaticRouteListDataSource(ctx context.Context, state *models.DataSourceVINSStaticRouteListModel, c *decort.DecortClient) diag.Diagnostics {
func VINSStaticRouteListDataSource(ctx context.Context, state *models.DataSourceVINSStaticRouteListModel, c *client.Client) diag.Diagnostics {
tflog.Info(ctx, "Start flattens.VINSStaticRouteListDataSource")
diags := diag.Diagnostics{}

View File

@@ -8,8 +8,8 @@ import (
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-framework/types"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/models"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/utilities"
)
@@ -17,7 +17,7 @@ import (
// VINSResource flattens resource for vins.
// Return error in case resource is not found on the platform.
// Flatten errors are added to tflog.
func VINSResource(ctx context.Context, plan *models.ResourceVINSModel, c *decort.DecortClient) diag.Diagnostics {
func VINSResource(ctx context.Context, plan *models.ResourceVINSModel, c *client.Client) diag.Diagnostics {
tflog.Info(ctx, "Start flattens.VINSResource")
diags := diag.Diagnostics{}

View File

@@ -8,7 +8,8 @@ import (
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-framework/types"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/flattens"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/models"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/utilities"
)
@@ -16,7 +17,7 @@ import (
// VINSStaticRouteResource flattens resource for vins static route.
// Return error in case resource is not found on the platform.
// Flatten errors are added to tflog.
func VINSStaticRouteResource(ctx context.Context, plan *models.ResourceVINSStaticRouteModel, c *decort.DecortClient) diag.Diagnostics {
func VINSStaticRouteResource(ctx context.Context, plan *models.ResourceVINSStaticRouteModel, c *client.Client) diag.Diagnostics {
tflog.Info(ctx, "Start flattens.VINSStaticRouteResource")
vinsId, routeId, diags := utilities.GetVinsIDAndRouteID(ctx, plan)
@@ -39,20 +40,13 @@ func VINSStaticRouteResource(ctx context.Context, plan *models.ResourceVINSStati
Timeouts: plan.Timeouts,
RouteID: types.Int64Value(int64(routeId)),
ComputeIDs: plan.ComputeIDs,
ComputeIDs: flattens.FlattenSimpleTypeToList(ctx, types.Int64Type, recordRoute.ComputeIds),
Id: plan.Id,
LastUpdated: plan.LastUpdated,
GUID: types.StringValue(recordRoute.GUID),
}
if plan.ComputeIDs.IsUnknown() {
plan.ComputeIDs, diags = types.ListValueFrom(ctx, types.Int64Type, recordRoute.ComputeIds)
if diags.HasError() {
tflog.Error(ctx, fmt.Sprint("Error VINSStaticRouteResource: cannot flatten recordRoute.ComputeIds to plan.ComputeIDs", diags))
}
}
if plan.Id.IsUnknown() {
plan.Id = types.StringValue(fmt.Sprintf("%d#%d", vinsId, routeId))
}

View File

@@ -7,14 +7,14 @@ import (
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-framework/types/basetypes"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/ic"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/models"
)
// resourceVINSInputChecks checks if user provided rg_id, account_id, ext_net_id and gid are valid.
// It also checks that either rg_id or account_id is specified.
func resourceVINSInputChecks(ctx context.Context, plan *models.ResourceVINSModel, c *decort.DecortClient) diag.Diagnostics {
func resourceVINSInputChecks(ctx context.Context, plan *models.ResourceVINSModel, c *client.Client) diag.Diagnostics {
diags := diag.Diagnostics{}
if !plan.RGID.IsUnknown() { // RGID is optional & computed
@@ -81,7 +81,7 @@ func resourceVINSInputChecks(ctx context.Context, plan *models.ResourceVINSModel
}
// resourceVINSStaticRouteInputChecks checks if user provided vins_id is valid.
func resourceVINSStaticRouteInputChecks(ctx context.Context, plan *models.ResourceVINSStaticRouteModel, c *decort.DecortClient) diag.Diagnostics {
func resourceVINSStaticRouteInputChecks(ctx context.Context, plan *models.ResourceVINSStaticRouteModel, c *client.Client) diag.Diagnostics {
diags := diag.Diagnostics{}
vinsId := uint64(plan.VinsID.ValueInt64())

View File

@@ -66,6 +66,7 @@ type RecordVNFDevModel struct {
Status types.String `tfsdk:"status"`
TechStatus types.String `tfsdk:"tech_status"`
Type types.String `tfsdk:"type"`
VNCPassword types.String `tfsdk:"vnc_password"`
VINS types.List `tfsdk:"vins"`
}
@@ -202,14 +203,11 @@ type RecordDHCPConfigModel struct {
}
type ReservationModel struct {
ClientType types.String `tfsdk:"client_type"`
Description types.String `tfsdk:"desc"`
DomainName types.String `tfsdk:"domainname"`
Hostname types.String `tfsdk:"hostname"`
IP types.String `tfsdk:"ip"`
MAC types.String `tfsdk:"mac"`
Type types.String `tfsdk:"type"`
VMID types.Int64 `tfsdk:"vm_id"`
AccountID types.Int64 `tfsdk:"account_id"`
IP types.String `tfsdk:"ip"`
MAC types.String `tfsdk:"mac"`
Type types.String `tfsdk:"type"`
VMID types.Int64 `tfsdk:"vm_id"`
}
type RecordNATModel struct {
@@ -297,6 +295,7 @@ var ItemVNFDev = map[string]attr.Type{
"status": types.StringType,
"tech_status": types.StringType,
"type": types.StringType,
"vnc_password": types.StringType,
"vins": types.ListType{ElemType: types.Int64Type},
}
@@ -407,14 +406,11 @@ var ItemDHCPConfig = map[string]attr.Type{
}
var ItemReservations = map[string]attr.Type{
"client_type": types.StringType,
"desc": types.StringType,
"domainname": types.StringType,
"hostname": types.StringType,
"ip": types.StringType,
"mac": types.StringType,
"type": types.StringType,
"vm_id": types.Int64Type,
"account_id": types.Int64Type,
"ip": types.StringType,
"mac": types.StringType,
"type": types.StringType,
"vm_id": types.Int64Type,
}
var ItemGW = map[string]attr.Type{

View File

@@ -13,12 +13,12 @@ type ResourceVINSStaticRouteModel struct {
Gateway types.String `tfsdk:"gateway"`
// optional fields
RouteID types.Int64 `tfsdk:"route_id"`
ComputeIDs types.List `tfsdk:"compute_ids"`
Timeouts timeouts.Value `tfsdk:"timeouts"`
RouteID types.Int64 `tfsdk:"route_id"`
Timeouts timeouts.Value `tfsdk:"timeouts"`
// response fields
Id types.String `tfsdk:"id"`
LastUpdated types.String `tfsdk:"last_updated"`
ComputeIDs types.List `tfsdk:"compute_ids"`
GUID types.String `tfsdk:"guid"`
}

View File

@@ -12,7 +12,6 @@ import (
"github.com/hashicorp/terraform-plugin-framework/resource/schema"
"github.com/hashicorp/terraform-plugin-framework/types"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/constants"
@@ -35,7 +34,7 @@ func NewResourceVINS() resource.Resource {
// resourceVINS is the resource implementation.
type resourceVINS struct {
client *decort.DecortClient
client *client.Client
}
// Create creates the resource and sets the initial Terraform state.

View File

@@ -11,7 +11,6 @@ import (
"github.com/hashicorp/terraform-plugin-framework/resource/schema"
"github.com/hashicorp/terraform-plugin-framework/types"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/constants"
@@ -34,7 +33,7 @@ func NewResourceVINSStaticRoute() resource.Resource {
// resourceVINSStaticRoute is the resource implementation.
type resourceVINSStaticRoute struct {
client *decort.DecortClient
client *client.Client
}
// Create creates the resource and sets the initial Terraform state.
@@ -80,17 +79,6 @@ func (r *resourceVINSStaticRoute) Create(ctx context.Context, req resource.Creat
Gateway: plan.Gateway.ValueString(),
}
if !plan.ComputeIDs.IsUnknown() {
computes := make([]uint64, 0, len(plan.ComputeIDs.Elements()))
diags = plan.ComputeIDs.ElementsAs(ctx, &computes, false)
if diags.HasError() {
resp.Diagnostics.Append(diags...)
tflog.Error(ctx, "Create resourceVINSStaticRoute: cannot populate computes with plan.ComputeIDs List elements")
return
}
staticReq.ComputeIds = computes
}
_, err := r.client.CloudAPI().VINS().StaticRouteAdd(ctx, staticReq)
if err != nil {
resp.Diagnostics.AddError("Create resourceVINSStaticRoute: Error adding static route to vins", err.Error())
@@ -166,72 +154,9 @@ func (r *resourceVINSStaticRoute) Read(ctx context.Context, req resource.ReadReq
// Update updates the resource and sets the updated Terraform state on success.
func (r *resourceVINSStaticRoute) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) {
// Retrieve values from plan
var plan models.ResourceVINSStaticRouteModel
resp.Diagnostics.Append(req.Plan.Get(ctx, &plan)...)
if resp.Diagnostics.HasError() {
tflog.Error(ctx, "Update resourceVINSStaticRoute: Error receiving the plan")
return
}
tflog.Info(ctx, "Update resourceVINSStaticRoute: got plan successfully", map[string]any{"id": plan.Id.ValueString()})
// Retrieve values from state
var state models.ResourceVINSStaticRouteModel
resp.Diagnostics.Append(req.State.Get(ctx, &state)...)
if resp.Diagnostics.HasError() {
tflog.Error(ctx, "Update resourceVINSStaticRoute: Error receiving the state")
return
}
tflog.Info(ctx, "Update resourceVINSStaticRoute: got state successfully", map[string]any{"id": state.Id.ValueString()})
// Set timeouts
updateTimeout, diags := plan.Timeouts.Update(ctx, constants.Timeout20m)
resp.Diagnostics.Append(diags...)
if resp.Diagnostics.HasError() {
tflog.Error(ctx, "Error set timeout")
return
}
tflog.Info(ctx, "Update resourceVINSStaticRoute: set timeouts successfully", map[string]any{
"id": state.Id.ValueString(),
"updateTimeout": updateTimeout})
ctx, cancel := context.WithTimeout(ctx, updateTimeout)
defer cancel()
// Checking for values in the platform
tflog.Info(ctx, "Update resourceVINSStaticRoute: starting input checks", map[string]any{"id": plan.Id.ValueString()})
resp.Diagnostics.Append(resourceVINSStaticRouteInputChecks(ctx, &plan, r.client)...)
if resp.Diagnostics.HasError() {
tflog.Error(ctx, "Update resourceVINS: Error input checks")
return
}
tflog.Info(ctx, "Update resourceVINSStaticRoute: input checks successful", map[string]any{"id": state.Id.ValueString()})
// change compute_ids, if needed
if !plan.ComputeIDs.Equal(state.ComputeIDs) {
resp.Diagnostics.Append(utilities.UpdateComputeIDsVINSStaticRoute(ctx, &plan, &state, r.client)...)
if resp.Diagnostics.HasError() {
tflog.Error(ctx, "Update resourceVINSStaticRoute: Error updating compute_ids")
return
}
}
tflog.Info(ctx, "Update resourceVINSStaticRoute: resource update is completed", map[string]any{"id": plan.Id.ValueString()})
// Map response body to schema and populate Computed attribute values
resp.Diagnostics.Append(flattens.VINSStaticRouteResource(ctx, &plan, r.client)...)
if resp.Diagnostics.HasError() {
return
}
// Set data last update
plan.LastUpdated = types.StringValue(time.Now().Format(time.RFC850))
// Set state to fully populated data
resp.Diagnostics.Append(resp.State.Set(ctx, plan)...)
if resp.Diagnostics.HasError() {
return
}
tflog.Error(ctx, "Update resourceVINSStaticRoute: This resource cannot be updated")
resp.Diagnostics.AddError("This resource cannot be updated", "")
return
}
// Delete deletes the resource and removes the Terraform state on success.

View File

@@ -204,6 +204,9 @@ func MakeSchemaDataSourceVINS() map[string]schema.Attribute {
"milestones": schema.Int64Attribute{
Computed: true,
},
"vnc_password": schema.StringAttribute{
Computed: true,
},
"vnf_name": schema.StringAttribute{
Computed: true,
},
@@ -371,16 +374,7 @@ func MakeSchemaDataSourceVINS() map[string]schema.Attribute {
Computed: true,
NestedObject: schema.NestedAttributeObject{
Attributes: map[string]schema.Attribute{
"client_type": schema.StringAttribute{
Computed: true,
},
"desc": schema.StringAttribute{
Computed: true,
},
"domainname": schema.StringAttribute{
Computed: true,
},
"hostname": schema.StringAttribute{
"account_id": schema.Int64Attribute{
Computed: true,
},
"ip": schema.StringAttribute{

View File

@@ -374,6 +374,9 @@ func MakeSchemaResourceVINS() map[string]schema.Attribute {
"vnf_name": schema.StringAttribute{
Computed: true,
},
"vnc_password": schema.StringAttribute{
Computed: true,
},
"status": schema.StringAttribute{
Computed: true,
},

View File

@@ -29,11 +29,6 @@ func MakeSchemaResourceVINSStaticRoute() map[string]schema.Attribute {
Computed: true,
Optional: true,
},
"compute_ids": schema.ListAttribute{
Computed: true,
Optional: true,
ElementType: types.Int64Type,
},
// computed attributes
"id": schema.StringAttribute{
@@ -48,5 +43,9 @@ func MakeSchemaResourceVINSStaticRoute() map[string]schema.Attribute {
"guid": schema.StringAttribute{
Computed: true,
},
"compute_ids": schema.ListAttribute{
Computed: true,
ElementType: types.Int64Type,
},
}
}

View File

@@ -6,11 +6,11 @@ import (
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
)
func VINSDataSourceCheckPresence(ctx context.Context, vinsId uint64, c *decort.DecortClient) (*vins.RecordVINS, diag.Diagnostics) {
func VINSDataSourceCheckPresence(ctx context.Context, vinsId uint64, c *client.Client) (*vins.RecordVINS, diag.Diagnostics) {
tflog.Info(ctx, fmt.Sprintf("VINSDataSourceCheckPresence: Get info about vins with ID - %v", vinsId))
diags := diag.Diagnostics{}

View File

@@ -6,11 +6,11 @@ import (
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
)
func VINSAuditsDataSourceCheckPresence(ctx context.Context, vinsId uint64, c *decort.DecortClient) (*vins.ListAudits, diag.Diagnostics) {
func VINSAuditsDataSourceCheckPresence(ctx context.Context, vinsId uint64, c *client.Client) (*vins.ListAudits, diag.Diagnostics) {
tflog.Info(ctx, fmt.Sprintf("VINSAuditsDataSourceCheckPresence: Get info about vins audit with vins ID - %v", vinsId))
diags := diag.Diagnostics{}

View File

@@ -6,11 +6,11 @@ import (
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
)
func VINSExtNetListDataSourceCheckPresence(ctx context.Context, vinsId uint64, c *decort.DecortClient) (*vins.ListExtNets, diag.Diagnostics) {
func VINSExtNetListDataSourceCheckPresence(ctx context.Context, vinsId uint64, c *client.Client) (*vins.ListExtNets, diag.Diagnostics) {
tflog.Info(ctx, fmt.Sprintf("VINSExtNetListDataSourceCheckPresence: Get info about vins audit with vins ID - %v", vinsId))
diags := diag.Diagnostics{}

View File

@@ -6,11 +6,11 @@ import (
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
)
func VINSIPListDataSourceCheckPresence(ctx context.Context, vinsId uint64, c *decort.DecortClient) (*vins.ListIPs, diag.Diagnostics) {
func VINSIPListDataSourceCheckPresence(ctx context.Context, vinsId uint64, c *client.Client) (*vins.ListIPs, diag.Diagnostics) {
tflog.Info(ctx, fmt.Sprintf("VINSIPListDataSourceCheckPresence: Get info about vins audit with vins ID - %v", vinsId))
diags := diag.Diagnostics{}

View File

@@ -5,12 +5,12 @@ import (
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/models"
)
func VINSListDataSourceCheckPresence(ctx context.Context, plan *models.DataSourceVINSListModel, c *decort.DecortClient) (*vins.ListVINS, diag.Diagnostics) {
func VINSListDataSourceCheckPresence(ctx context.Context, plan *models.DataSourceVINSListModel, c *client.Client) (*vins.ListVINS, diag.Diagnostics) {
tflog.Info(ctx, "VINSListDataSourceCheckPresence: Get info about vins list")
diags := diag.Diagnostics{}

View File

@@ -5,12 +5,12 @@ import (
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/models"
)
func VINSListDeletedDataSourceCheckPresence(ctx context.Context, plan *models.DataSourceVINSListDeletedModel, c *decort.DecortClient) (*vins.ListVINS, diag.Diagnostics) {
func VINSListDeletedDataSourceCheckPresence(ctx context.Context, plan *models.DataSourceVINSListDeletedModel, c *client.Client) (*vins.ListVINS, diag.Diagnostics) {
tflog.Info(ctx, "VINSListDeletedDataSourceCheckPresence: Get info about vins list")
diags := diag.Diagnostics{}

View File

@@ -5,11 +5,11 @@ import (
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
)
func VINSNATRuleListDataSourceCheckPresence(ctx context.Context, vinsId uint64, c *decort.DecortClient) (*vins.ListNATRules, diag.Diagnostics) {
func VINSNATRuleListDataSourceCheckPresence(ctx context.Context, vinsId uint64, c *client.Client) (*vins.ListNATRules, diag.Diagnostics) {
tflog.Info(ctx, "VINSNATRuleListDataSourceCheckPresence: Get info about vins nat rule list")
diags := diag.Diagnostics{}

View File

@@ -6,11 +6,11 @@ import (
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
)
func VINSStaticRouteDataSourceCheckPresence(ctx context.Context, vinsId, routeId uint64, c *decort.DecortClient) (*vins.ItemRoutes, diag.Diagnostics) {
func VINSStaticRouteDataSourceCheckPresence(ctx context.Context, vinsId, routeId uint64, c *client.Client) (*vins.ItemRoutes, diag.Diagnostics) {
tflog.Info(ctx, "VINSStaticRouteDataSourceCheckPresence: Get info about vins static route", map[string]any{
"vins_id": vinsId,
"route_id": routeId,

View File

@@ -5,11 +5,11 @@ import (
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
)
func VINSStaticRouteListDataSourceCheckPresence(ctx context.Context, vinsId uint64, c *decort.DecortClient) (*vins.ListStaticRoutes, diag.Diagnostics) {
func VINSStaticRouteListDataSourceCheckPresence(ctx context.Context, vinsId uint64, c *client.Client) (*vins.ListStaticRoutes, diag.Diagnostics) {
tflog.Info(ctx, "VINSStaticRouteListDataSourceCheckPresence: Get info about vins static route list")
diags := diag.Diagnostics{}

View File

@@ -11,13 +11,13 @@ import (
"github.com/hashicorp/terraform-plugin-framework/types"
"github.com/hashicorp/terraform-plugin-framework/types/basetypes"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/models"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/status"
)
func VINSResourceCheckPresence(ctx context.Context, vinsId uint64, c *decort.DecortClient) (*vins.RecordVINS, diag.Diagnostics) {
func VINSResourceCheckPresence(ctx context.Context, vinsId uint64, c *client.Client) (*vins.RecordVINS, diag.Diagnostics) {
tflog.Info(ctx, fmt.Sprintf("VINSResourceCheckPresence: Get info about vins with ID - %v", vinsId))
diags := diag.Diagnostics{}
@@ -35,7 +35,7 @@ func VINSResourceCheckPresence(ctx context.Context, vinsId uint64, c *decort.Dec
// CreateInRGResourceVINS creates vins in resource group based on plan.
// Returns vins_id for created vins and errors in case of failures.
func CreateInRGResourceVINS(ctx context.Context, plan *models.ResourceVINSModel, c *decort.DecortClient) (uint64, diag.Diagnostics) {
func CreateInRGResourceVINS(ctx context.Context, plan *models.ResourceVINSModel, c *client.Client) (uint64, diag.Diagnostics) {
tflog.Info(ctx, fmt.Sprintf("Start CreateInRGResourceVINS: vins_name %s", plan.Name.ValueString()))
diags := diag.Diagnostics{}
@@ -104,7 +104,7 @@ func CreateInRGResourceVINS(ctx context.Context, plan *models.ResourceVINSModel,
// CreateInAccountResourceVINS creates vins in account based on plan.
// Returns vins_id for created vins and errors in case of failures.
func CreateInAccountResourceVINS(ctx context.Context, plan *models.ResourceVINSModel, c *decort.DecortClient) (uint64, diag.Diagnostics) {
func CreateInAccountResourceVINS(ctx context.Context, plan *models.ResourceVINSModel, c *client.Client) (uint64, diag.Diagnostics) {
tflog.Info(ctx, fmt.Sprintf("Start CreateInAccountResourceVINS: vins_name %s", plan.Name.ValueString()))
diags := diag.Diagnostics{}
@@ -157,7 +157,7 @@ func CreateInAccountResourceVINS(ctx context.Context, plan *models.ResourceVINSM
// IPCreateVINS reserves ips that user specified in ip field for created resource.
// In case of failure returns warnings.
func IPCreateVINS(ctx context.Context, vinsId uint64, plan *models.ResourceVINSModel, c *decort.DecortClient) diag.Diagnostics {
func IPCreateVINS(ctx context.Context, vinsId uint64, plan *models.ResourceVINSModel, c *client.Client) diag.Diagnostics {
diags := diag.Diagnostics{}
// plan.IP is not null as it was checked before call
@@ -205,7 +205,7 @@ func IPCreateVINS(ctx context.Context, vinsId uint64, plan *models.ResourceVINSM
// IPUpdateVINS reserves/releases ips that user specified in ip field for updated resource.
// In case of failure returns errors.
func IPUpdateVINS(ctx context.Context, vinsId uint64, plan, state *models.ResourceVINSModel, c *decort.DecortClient) diag.Diagnostics {
func IPUpdateVINS(ctx context.Context, vinsId uint64, plan, state *models.ResourceVINSModel, c *client.Client) diag.Diagnostics {
tflog.Info(ctx, "Start IPUpdateVINS: new ip specified", map[string]any{"vins_id": vinsId})
diags := diag.Diagnostics{}
@@ -309,7 +309,7 @@ func IPUpdateVINS(ctx context.Context, vinsId uint64, plan, state *models.Resour
// ExtNetUpdateVINS updates ext_net_id and/or ext_net_ip that user specified in ext_net block for updated resource.
// In case of failure returns errors.
func ExtNetUpdateVINS(ctx context.Context, vinsId uint64, plan, state *models.ResourceVINSModel, c *decort.DecortClient) diag.Diagnostics {
func ExtNetUpdateVINS(ctx context.Context, vinsId uint64, plan, state *models.ResourceVINSModel, c *client.Client) diag.Diagnostics {
tflog.Info(ctx, "Start ExtNetUpdateVINS: new ext_net specified", map[string]any{
"vins_id": vinsId,
})
@@ -363,7 +363,7 @@ func ExtNetUpdateVINS(ctx context.Context, vinsId uint64, plan, state *models.Re
// NATRuleCreateVINS adds nat rules that user specified in nat_rule field for created resource.
// In case of failure returns warnings.
func NATRuleCreateVINS(ctx context.Context, vinsId uint64, plan *models.ResourceVINSModel, c *decort.DecortClient) diag.Diagnostics {
func NATRuleCreateVINS(ctx context.Context, vinsId uint64, plan *models.ResourceVINSModel, c *client.Client) diag.Diagnostics {
diags := diag.Diagnostics{}
// plan.NatRule is not null as it was checked before call
@@ -410,7 +410,7 @@ func NATRuleCreateVINS(ctx context.Context, vinsId uint64, plan *models.Resource
// NATRuleUpdateVINS adds/deleted nat rules that user specified in nat_rule field for updated resource.
// In case of failure returns errors.
func NATRuleUpdateVINS(ctx context.Context, vinsId uint64, plan, state *models.ResourceVINSModel, c *decort.DecortClient) diag.Diagnostics {
func NATRuleUpdateVINS(ctx context.Context, vinsId uint64, plan, state *models.ResourceVINSModel, c *client.Client) diag.Diagnostics {
tflog.Info(ctx, "Start NATRuleUpdateVINS: new natRule specified", map[string]any{"vins_id": vinsId})
diags := diag.Diagnostics{}
@@ -511,7 +511,7 @@ func NATRuleUpdateVINS(ctx context.Context, vinsId uint64, plan, state *models.R
// VINSReadStatus loads vins resource by ids id, gets it current status. Performs restore and enable if needed for
// Deleted status.
// In case of failure returns errors.
func VINSReadStatus(ctx context.Context, state *models.ResourceVINSModel, c *decort.DecortClient) diag.Diagnostics {
func VINSReadStatus(ctx context.Context, state *models.ResourceVINSModel, c *client.Client) diag.Diagnostics {
tflog.Info(ctx, "VINSReadStatus: Read status vins with ID", map[string]any{"vins_id": state.Id.ValueString()})
diags := diag.Diagnostics{}
@@ -599,7 +599,7 @@ func VINSReadStatus(ctx context.Context, state *models.ResourceVINSModel, c *dec
// RestoreVINS performs vins Restore request.
// Returns error in case of failures.
func RestoreVINS(ctx context.Context, vinsId uint64, c *decort.DecortClient) diag.Diagnostics {
func RestoreVINS(ctx context.Context, vinsId uint64, c *client.Client) diag.Diagnostics {
diags := diag.Diagnostics{}
tflog.Info(ctx, "RestoreVINS: before calling CloudAPI().VINS().Restore", map[string]any{"vinsId": vinsId, "req": vins.RestoreRequest{VINSID: vinsId}})
@@ -619,7 +619,7 @@ func RestoreVINS(ctx context.Context, vinsId uint64, c *decort.DecortClient) dia
// DisableVINS performs vins Disable request.
// Returns error in case of failures.
func DisableVINS(ctx context.Context, vinsId uint64, c *decort.DecortClient) diag.Diagnostics {
func DisableVINS(ctx context.Context, vinsId uint64, c *client.Client) diag.Diagnostics {
diags := diag.Diagnostics{}
tflog.Info(ctx, "DisableVINS: before calling CloudAPI().VINS().Disable", map[string]any{"vinsId": vinsId})
@@ -639,7 +639,7 @@ func DisableVINS(ctx context.Context, vinsId uint64, c *decort.DecortClient) dia
// EnableVINS performs vins Enable request.
// Returns error in case of failures.
func EnableVINS(ctx context.Context, vinsId uint64, c *decort.DecortClient) diag.Diagnostics {
func EnableVINS(ctx context.Context, vinsId uint64, c *client.Client) diag.Diagnostics {
diags := diag.Diagnostics{}
tflog.Info(ctx, "EnableVINS: before calling CloudAPI().VINS().Enable", map[string]any{"vinsId": vinsId})
@@ -659,7 +659,7 @@ func EnableVINS(ctx context.Context, vinsId uint64, c *decort.DecortClient) diag
// EnableDisableUpdateVINS performs vins Enable/disable request.
// Returns errors in case of failures.
func EnableDisableUpdateVINS(ctx context.Context, vinsId uint64, plan *models.ResourceVINSModel, c *decort.DecortClient) diag.Diagnostics {
func EnableDisableUpdateVINS(ctx context.Context, vinsId uint64, plan *models.ResourceVINSModel, c *client.Client) diag.Diagnostics {
diags := diag.Diagnostics{}
enable := plan.Enable.ValueBool()
tflog.Info(ctx, "Start EnableDisableUpdateVINS", map[string]any{"vinsId": vinsId, "enable": enable})
@@ -679,7 +679,7 @@ func EnableDisableUpdateVINS(ctx context.Context, vinsId uint64, plan *models.Re
// VnfdevRestartUpdateVINS restarts vnf_dev for vins.
// Returns error in case of failures.
func VnfdevRestartUpdateVINS(ctx context.Context, vinsId uint64, c *decort.DecortClient) diag.Diagnostics {
func VnfdevRestartUpdateVINS(ctx context.Context, vinsId uint64, c *client.Client) diag.Diagnostics {
diags := diag.Diagnostics{}
tflog.Info(ctx, "VnfdevRestartUpdateVINS: before calling CloudAPI().VINS().VNFDevRestart", map[string]any{"vinsId": vinsId})
@@ -699,7 +699,7 @@ func VnfdevRestartUpdateVINS(ctx context.Context, vinsId uint64, c *decort.Decor
// VnfdevRedeployUpdateVINS redeploys vnf_dev for vins.
// Returns error in case of failures.
func VnfdevRedeployUpdateVINS(ctx context.Context, vinsId uint64, c *decort.DecortClient) diag.Diagnostics {
func VnfdevRedeployUpdateVINS(ctx context.Context, vinsId uint64, c *client.Client) diag.Diagnostics {
diags := diag.Diagnostics{}
tflog.Info(ctx, "VnfdevRedeployUpdateVINS: before calling CloudAPI().VINS().VNFDevRedeploy", map[string]any{"vinsId": vinsId})
@@ -719,7 +719,7 @@ func VnfdevRedeployUpdateVINS(ctx context.Context, vinsId uint64, c *decort.Deco
// UpdateDNSlistVINS apply new DNS list in VINS
// Returns error in case of failures.
func UpdateDNSlistVINS(ctx context.Context, vinsId uint64, plan *models.ResourceVINSModel, c *decort.DecortClient) diag.Diagnostics {
func UpdateDNSlistVINS(ctx context.Context, vinsId uint64, plan *models.ResourceVINSModel, c *client.Client) diag.Diagnostics {
diags := diag.Diagnostics{}
req := vins.DNSApplyRequest{

View File

@@ -8,12 +8,12 @@ import (
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-log/tflog"
decort "repository.basistech.ru/BASIS/decort-golang-sdk"
"repository.basistech.ru/BASIS/decort-golang-sdk/pkg/cloudapi/vins"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/client"
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/vins/models"
)
func VINSStaticRouteResourceCheckPresence(ctx context.Context, vinsId, routeId uint64, c *decort.DecortClient) (*vins.ItemRoutes, diag.Diagnostics) {
func VINSStaticRouteResourceCheckPresence(ctx context.Context, vinsId, routeId uint64, c *client.Client) (*vins.ItemRoutes, diag.Diagnostics) {
tflog.Info(ctx, "VINSStaticRouteResourceCheckPresence: Get info about vins static route")
diags := diag.Diagnostics{}
@@ -79,7 +79,7 @@ func GetVinsIDAndRouteID(ctx context.Context, plan *models.ResourceVINSStaticRou
return vinsId, routeId, nil
}
func GetStaticRouteID(ctx context.Context, plan *models.ResourceVINSStaticRouteModel, c *decort.DecortClient) (uint64, diag.Diagnostics) {
func GetStaticRouteID(ctx context.Context, plan *models.ResourceVINSStaticRouteModel, c *client.Client) (uint64, diag.Diagnostics) {
tflog.Info(ctx, "Start GetStaticRouteID")
diags := diag.Diagnostics{}
@@ -115,75 +115,6 @@ func GetStaticRouteID(ctx context.Context, plan *models.ResourceVINSStaticRouteM
return 0, diags
}
func UpdateComputeIDsVINSStaticRoute(ctx context.Context, plan, state *models.ResourceVINSStaticRouteModel, c *decort.DecortClient) diag.Diagnostics {
tflog.Info(ctx, "Start UpdateComputeIDsVINSStaticRoute", map[string]any{"id": plan.Id.ValueString()})
vinsId, routeId, diags := GetVinsIDAndRouteID(ctx, plan)
if diags.HasError() {
return diags
}
computesPlan := make([]uint64, 0, len(plan.ComputeIDs.Elements()))
diags = plan.ComputeIDs.ElementsAs(ctx, &computesPlan, false)
if diags.HasError() {
tflog.Error(ctx, "UpdateComputeIDsVINSStaticRoute: cannot populate computes with plan.ComputeIDs List elements")
return diags
}
computesState := make([]uint64, 0, len(state.ComputeIDs.Elements()))
diags = state.ComputeIDs.ElementsAs(ctx, &computesState, false)
if diags.HasError() {
tflog.Error(ctx, "UpdateComputeIDsVINSStaticRoute: cannot populate computes with state.ComputeIDs List elements")
return diags
}
var deletedComputes []uint64
for _, comp := range computesState {
if !contains(comp, computesPlan) {
deletedComputes = append(deletedComputes, comp)
}
}
if len(deletedComputes) != 0 {
revokeReq := vins.StaticRouteAccessRevokeRequest{
VINSID: vinsId,
RouteId: routeId,
ComputeIds: deletedComputes,
}
tflog.Info(ctx, "UpdateComputeIDsVINSStaticRoute: before call to CloudAPI().VINS().StaticRouteAccessRevoke", map[string]any{"revokeReq": revokeReq})
_, err := c.CloudAPI().VINS().StaticRouteAccessRevoke(ctx, revokeReq)
if err != nil {
diags.AddError(
fmt.Sprintf("UpdateComputeIDsVINSStaticRoute: Cannot revoke static routes for vins with id %v", vinsId),
err.Error())
}
}
var addedComputes []uint64
for _, comp := range computesPlan {
if !contains(comp, computesState) {
addedComputes = append(addedComputes, comp)
}
}
if len(addedComputes) != 0 {
grantReq := vins.StaticRouteAccessGrantRequest{
VINSID: vinsId,
RouteId: routeId,
ComputeIds: addedComputes,
}
tflog.Info(ctx, "UpdateComputeIDsVINSStaticRoute: before call to CloudAPI().VINS().StaticRouteAccessGrant", map[string]any{"grantReq": grantReq})
_, err := c.CloudAPI().VINS().StaticRouteAccessGrant(ctx, grantReq)
if err != nil {
diags.AddError(
fmt.Sprintf("UpdateComputeIDsVINSStaticRoute: Cannot grant static routes for vins with id %v", vinsId),
err.Error())
}
}
return diags
}
// contains returns true if slice contains element. Otherwise it returns false.
func contains(element uint64, slice []uint64) bool {
for _, s := range slice {