fix(generator): destroy-guard в ModifyPlan + универсальный refSvc (имя или UUID)
This commit is contained in:
@@ -150,7 +150,9 @@ func (r *{{ToCamel .Name}}Resource) ModifyPlan(ctx context.Context, req resource
|
|||||||
if resp.Diagnostics.HasError() {
|
if resp.Diagnostics.HasError() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if req.State.Raw.IsNull() && req.Plan.Raw.IsNull() {
|
// Destroy-план (plan == null): create-time проверку «уже существует / adopt»
|
||||||
|
// запускать нельзя — удаление не валидируется через существование инстанса.
|
||||||
|
if req.Plan.Raw.IsNull() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -220,7 +222,7 @@ func (r *{{ToCamel .Name}}Resource) ModifyPlan(ctx context.Context, req resource
|
|||||||
adoptExistingOnCreate = config.AdoptExistingOnCreate.ValueBool()
|
adoptExistingOnCreate = config.AdoptExistingOnCreate.ValueBool()
|
||||||
}
|
}
|
||||||
{{- if .HasRefSvcParams }}
|
{{- if .HasRefSvcParams }}
|
||||||
{{- range .SchemaParams }}
|
{{- range .CreateParams }}
|
||||||
{{- if and (gt .RefSvcId 0) (eq (ParamType .) "types.String") }}
|
{{- if and (gt .RefSvcId 0) (eq (ParamType .) "types.String") }}
|
||||||
// refSvc-поле резолвим только для API-запроса.
|
// refSvc-поле резолвим только для API-запроса.
|
||||||
// config не перезаписываем: пользовательский display name или UUID должен
|
// config не перезаписываем: пользовательский display name или UUID должен
|
||||||
@@ -280,7 +282,7 @@ func (r *{{ToCamel .Name}}Resource) Create(ctx context.Context, req resource.Cre
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if .HasRefSvcParams }}
|
{{- if .HasRefSvcParams }}
|
||||||
{{- range .SchemaParams }}
|
{{- range .CreateParams }}
|
||||||
{{- if and (gt .RefSvcId 0) (eq (ParamType .) "types.String") }}
|
{{- if and (gt .RefSvcId 0) (eq (ParamType .) "types.String") }}
|
||||||
// refSvc-поле резолвим только для API-запроса.
|
// refSvc-поле резолвим только для API-запроса.
|
||||||
// config не перезаписываем: пользовательский display name или UUID должен
|
// config не перезаписываем: пользовательский display name или UUID должен
|
||||||
@@ -315,9 +317,13 @@ func (r *{{ToCamel .Name}}Resource) Create(ctx context.Context, req resource.Cre
|
|||||||
params := map[int]string{
|
params := map[int]string{
|
||||||
{{- range .CreateParams }}
|
{{- range .CreateParams }}
|
||||||
{{- if not (IsNested .) }}
|
{{- if not (IsNested .) }}
|
||||||
|
{{- if and (gt .RefSvcId 0) (eq (ParamType .) "types.String") }}
|
||||||
|
{{.ID}}: resolved{{ToCamel .Code}},
|
||||||
|
{{- else }}
|
||||||
{{.ID}}: {{ParamFormat . (printf "data.%s" (ToCamel .Code))}},
|
{{.ID}}: {{ParamFormat . (printf "data.%s" (ToCamel .Code))}},
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
}
|
}
|
||||||
{{- range .CreateParams }}
|
{{- range .CreateParams }}
|
||||||
{{- if (IsNested .) }}
|
{{- if (IsNested .) }}
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ func (r *{{ToCamel (printf "%s_%s" .ServiceName .SubName)}}Resource) Create(ctx
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if .HasRefSvcParams }}
|
{{- if .HasRefSvcParams }}
|
||||||
{{- range .SchemaParams }}
|
{{- range .CreateParams }}
|
||||||
{{- if and (gt .RefSvcId 0) (eq (ParamType .) "types.String") }}
|
{{- if and (gt .RefSvcId 0) (eq (ParamType .) "types.String") }}
|
||||||
// Подресурсный refSvc-параметр резолвим только в локальную переменную.
|
// Подресурсный refSvc-параметр резолвим только в локальную переменную.
|
||||||
// Сам plan не трогаем: UUID нужен лишь для backend-вызова, а в state
|
// Сам plan не трогаем: UUID нужен лишь для backend-вызова, а в state
|
||||||
@@ -253,7 +253,7 @@ func (r *{{ToCamel (printf "%s_%s" .ServiceName .SubName)}}Resource) Update(ctx
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
{{- if .HasRefSvcParams }}
|
{{- if .HasRefSvcParams }}
|
||||||
{{- range .SchemaParams }}
|
{{- range .ModifyParams }}
|
||||||
{{- if and (gt .RefSvcId 0) (eq (ParamType .) "types.String") }}
|
{{- if and (gt .RefSvcId 0) (eq (ParamType .) "types.String") }}
|
||||||
// Update для подресурса следует тому же правилу, что и Create:
|
// Update для подресурса следует тому же правилу, что и Create:
|
||||||
// резолвим значение только в локальную переменную и не мутируем plan.
|
// резолвим значение только в локальную переменную и не мутируем plan.
|
||||||
|
|||||||
Reference in New Issue
Block a user