From 200bf457ce1b181f9d8b575247fd09c6faed5553 Mon Sep 17 00:00:00 2001 From: Repinoid Date: Wed, 23 Sep 2026 07:04:02 +0300 Subject: [PATCH] =?UTF-8?q?fix(gen):=20Update=20=D0=B1=D0=B5=D0=B7=20modif?= =?UTF-8?q?y=20=D0=BF=D0=B5=D1=80=D0=B5=D1=87=D0=B8=D1=82=D1=8B=D0=B2?= =?UTF-8?q?=D0=B0=D0=B5=D1=82=20read-back=20=D0=BF=D0=BE=D0=BB=D1=8F=20?= =?UTF-8?q?=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20RefreshResourceState=20(=D1=83?= =?UTF-8?q?=D1=81=D1=82=D1=80=D0=B0=D0=BD=D1=8F=D0=B5=D1=82=20=D1=83=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D1=80=D0=B5=D0=B2=D1=88=D0=B8=D0=B9=20state=5Fpara?= =?UTF-8?q?ms/=D0=BB=D0=BE=D0=B6=D0=BD=D1=8B=D0=B9=20=D0=B4=D1=80=D0=B5?= =?UTF-8?q?=D0=B9=D1=84)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TOOLS/config/dev/profile.env | 2 +- .../internal/templates/instance.go | 28 ++++++++++++++++--- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/TOOLS/config/dev/profile.env b/TOOLS/config/dev/profile.env index 73c44d0..b79a1f8 100644 --- a/TOOLS/config/dev/profile.env +++ b/TOOLS/config/dev/profile.env @@ -4,7 +4,7 @@ TOKEN_FILE="secrets/dev.token" # Release versions # Version -VERSION="2.0.15" +VERSION="2.0.16" NAMESPACE="nubes-dev" PROVIDER_NAME="nubes" diff --git a/TOOLS/resource-generator/internal/templates/instance.go b/TOOLS/resource-generator/internal/templates/instance.go index 59a28e1..62b929c 100644 --- a/TOOLS/resource-generator/internal/templates/instance.go +++ b/TOOLS/resource-generator/internal/templates/instance.go @@ -432,11 +432,31 @@ func (r *{{ToCamel .Name}}Resource) Update(ctx context.Context, req resource.Upd {{- end }} if !hasServiceParamChanges{{if .HasRedeploy}} && !redeployRequested{{end}} { + // Сервисные параметры не изменились → modify НЕ вызываем. + // + // НО read-back поля (state_params*, state_out*, vault_*) обязаны быть + // перечитаны из инстанса. Раньше здесь слепо копировались значения из + // старого state, из-за чего tfstate хранил устаревшее значение: + // пример — state_params["needEnableAVI"]="false", когда на платформе уже + // true (модификатор включил ALB). Это давало ложный дрейф + // «Objects have changed outside of Terraform» на каждом plan. plan.ID = instanceID - {{- range .OutputParams }} - plan.{{ToCamel .Code}} = state.{{ToCamel .Code}} - {{- end }} - resp.Diagnostics.Append(resp.State.Set(ctx, &plan)...) + refreshed, refreshDiags := resources_core.RefreshResourceState(ctx, r.client, instanceID.ValueString(), {{.ServiceID}}, plan, []resources_core.StateField{ + {{- range .OutputParams }} + {Code: "{{.Code}}"}, + {{- end }} + }, []resources_core.InputField{ + {{- range .SchemaParams }} + {{- if eq .RefSvcId 0 }} + {Code: "{{.Code}}", Field: "{{ToCamel .Code}}", Type: "{{.Type}}"}, + {{- end }} + {{- end }} + }) + resp.Diagnostics.Append(refreshDiags...) + if resp.Diagnostics.HasError() { + return + } + resp.Diagnostics.Append(resp.State.Set(ctx, &refreshed)...) return }