fix(core,gen): UseStateForUnknown для Optional+Computed + live-dосылка без тихого fallback (R1+R3+A/B)
This commit is contained in:
@@ -105,6 +105,24 @@ func ShouldBeOptionalComputed(p types.Param) bool {
|
||||
return !p.Required && p.RefSvcId == 0 && p.Default == ""
|
||||
}
|
||||
|
||||
// ShouldUseStateForUnknown решает, нужен ли UseStateForUnknown() plan-modifier
|
||||
// для скалярного параметра.
|
||||
//
|
||||
// Зачем: Optional+Computed параметр БЕЗ Default при незаданном значении в плане
|
||||
// = unknown. Если Update не перезаписывает его (в т.ч. ветка no-op с ранним
|
||||
// return, см. instance.go), unknown протекает в state и Terraform падает с
|
||||
// "Provider produced invalid result object after apply: ... unknown".
|
||||
// UseStateForUnknown схлопывает unknown в предыдущее known-значение из state,
|
||||
// не требуя сетевого вызова.
|
||||
//
|
||||
// НЕ применяем к JSON (у них свой JsonNormalize) и к полям с Default/Required.
|
||||
func ShouldUseStateForUnknown(p types.Param) bool {
|
||||
if p.IsJson {
|
||||
return false
|
||||
}
|
||||
return ShouldBeOptionalComputed(p)
|
||||
}
|
||||
|
||||
// ParamFormat возвращает вызов Format* для форматирования значения параметра.
|
||||
func ParamFormat(p types.Param, varName string) string {
|
||||
switch strings.ToLower(p.Type) {
|
||||
|
||||
Reference in New Issue
Block a user