fix(gen): Update без modify перечитывает read-back поля через RefreshResourceState (устраняет устаревший state_params/ложный дрейф)
This commit is contained in:
@@ -4,7 +4,7 @@ TOKEN_FILE="secrets/dev.token"
|
|||||||
|
|
||||||
# Release versions
|
# Release versions
|
||||||
# Version
|
# Version
|
||||||
VERSION="2.0.15"
|
VERSION="2.0.16"
|
||||||
|
|
||||||
NAMESPACE="nubes-dev"
|
NAMESPACE="nubes-dev"
|
||||||
PROVIDER_NAME="nubes"
|
PROVIDER_NAME="nubes"
|
||||||
|
|||||||
@@ -432,11 +432,31 @@ func (r *{{ToCamel .Name}}Resource) Update(ctx context.Context, req resource.Upd
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
if !hasServiceParamChanges{{if .HasRedeploy}} && !redeployRequested{{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
|
plan.ID = instanceID
|
||||||
{{- range .OutputParams }}
|
refreshed, refreshDiags := resources_core.RefreshResourceState(ctx, r.client, instanceID.ValueString(), {{.ServiceID}}, plan, []resources_core.StateField{
|
||||||
plan.{{ToCamel .Code}} = state.{{ToCamel .Code}}
|
{{- range .OutputParams }}
|
||||||
{{- end }}
|
{Code: "{{.Code}}"},
|
||||||
resp.Diagnostics.Append(resp.State.Set(ctx, &plan)...)
|
{{- 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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user