resource-generator: SubParams nested fix (Соннет) — AlignParamTypes recursive, HasNestedParams/NeedsStrings skip array-map-fixed, bump 5.0.74
This commit is contained in:
@@ -7,6 +7,9 @@ import (
|
||||
{{- if .NeedsStringsImport }}
|
||||
"strings"
|
||||
{{- end }}
|
||||
{{- if .NeedsFmtImport }}
|
||||
"fmt"
|
||||
{{- end }}
|
||||
|
||||
"terraform-provider-nubes/internal/core"
|
||||
"terraform-provider-nubes/internal/resources_core"
|
||||
@@ -39,7 +42,7 @@ type {{ToCamel .Name}}Resource struct {
|
||||
}
|
||||
|
||||
{{- range .SchemaParams }}
|
||||
{{- if .IsNested }}
|
||||
{{- if (IsNested .) }}
|
||||
// {{NestedModelName $.Name .Code}} — вложенная модель для map-fixed параметра {{.Code}}.
|
||||
type {{NestedModelName $.Name .Code}} struct {
|
||||
{{- range .SubParams }}
|
||||
@@ -61,7 +64,7 @@ type {{ToCamel .Name}}Model struct {
|
||||
GitRevision types.String ` + "`" + `tfsdk:"git_revision"` + "`" + `
|
||||
{{- end }}
|
||||
{{- range .SchemaParams }}
|
||||
{{- if .IsNested }}
|
||||
{{- if (IsNested .) }}
|
||||
{{ToCamel .Code}} {{NestedTfType . $.Name}} ` + "`" + `tfsdk:"{{ToSnake .Code}}"` + "`" + `
|
||||
{{- else }}
|
||||
{{ToCamel .Code}} {{ParamType .}} ` + "`" + `tfsdk:"{{ToSnake .Code}}"` + "`" + `
|
||||
@@ -89,7 +92,7 @@ func (r *{{ToCamel .Name}}Resource) Schema(ctx context.Context, req resource.Sch
|
||||
"operation_timeout": schema.StringAttribute{Optional: true},
|
||||
"log_level": schema.StringAttribute{Optional: true, MarkdownDescription: "Operation stages log level: none (default), info, debug. Overrides provider-level log_level."},
|
||||
{{- range .SchemaParams }}
|
||||
{{- if .IsNested }}
|
||||
{{- if (IsNested .) }}
|
||||
"{{ToSnake .Code}}": {{NestedSchemaBlock .}}
|
||||
{{- range .SubParams }}
|
||||
"{{ToSnake .Code}}": schema.{{SubSchemaType .}}Attribute{
|
||||
@@ -171,6 +174,7 @@ func (r *{{ToCamel .Name}}Resource) ModifyPlan(ctx context.Context, req resource
|
||||
}
|
||||
}
|
||||
{{- range .CreateOnlyParams }}
|
||||
{{- if not (IsNested .) }}
|
||||
if !plan.{{ToCamel .Code}}.IsNull() && !plan.{{ToCamel .Code}}.IsUnknown() && !state.{{ToCamel .Code}}.IsNull() && !state.{{ToCamel .Code}}.IsUnknown() {
|
||||
{{- if eq (ParamType .) "types.Bool" }}
|
||||
if plan.{{ToCamel .Code}}.ValueBool() != state.{{ToCamel .Code}}.ValueBool() {
|
||||
@@ -193,10 +197,11 @@ func (r *{{ToCamel .Name}}Resource) ModifyPlan(ctx context.Context, req resource
|
||||
{{- end }}
|
||||
}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
return
|
||||
}
|
||||
{{- range .SchemaParams }}
|
||||
{{- if and .Required (eq (ParamDefaultExpr .) "") }}
|
||||
{{- if and .Required (eq (ParamDefaultExpr .) "") (not (IsNested .)) }}
|
||||
if config.{{ToCamel .Code}}.IsNull() {
|
||||
resp.Diagnostics.AddError("Missing required attribute", "{{ToSnake .Code}} is required.")
|
||||
return
|
||||
@@ -230,7 +235,7 @@ func (r *{{ToCamel .Name}}Resource) ModifyPlan(ctx context.Context, req resource
|
||||
{{- end }}
|
||||
params := map[int]string{
|
||||
{{- range .CreateParams }}
|
||||
{{- if .IsNested }}
|
||||
{{- if (IsNested .) }}
|
||||
{{.ID}}: {{NestedJSONExpr . "config"}},
|
||||
{{- else }}
|
||||
{{.ID}}: {{ParamFormat . (printf "config.%s" (ToCamel .Code))}},
|
||||
@@ -255,7 +260,7 @@ func (r *{{ToCamel .Name}}Resource) Create(ctx context.Context, req resource.Cre
|
||||
return
|
||||
}
|
||||
{{- range .SchemaParams }}
|
||||
{{- if and .Required (eq (ParamDefaultExpr .) "") }}
|
||||
{{- if and .Required (eq (ParamDefaultExpr .) "") (not (IsNested .)) }}
|
||||
if data.{{ToCamel .Code}}.IsNull() || data.{{ToCamel .Code}}.IsUnknown() {
|
||||
resp.Diagnostics.AddError("Missing required attribute", "{{ToSnake .Code}} is required.")
|
||||
return
|
||||
@@ -320,7 +325,7 @@ func (r *{{ToCamel .Name}}Resource) Create(ctx context.Context, req resource.Cre
|
||||
|
||||
params := map[int]string{
|
||||
{{- range .CreateParams }}
|
||||
{{- if .IsNested }}
|
||||
{{- if (IsNested .) }}
|
||||
{{.ID}}: {{NestedJSONExpr . "data"}},
|
||||
{{- else }}
|
||||
{{.ID}}: {{ParamFormat . (printf "data.%s" (ToCamel .Code))}},
|
||||
@@ -477,6 +482,7 @@ func (r *{{ToCamel .Name}}Resource) Update(ctx context.Context, req resource.Upd
|
||||
|
||||
hasServiceParamChanges := false
|
||||
{{- range .ModifyParams }}
|
||||
{{- if not (IsNested .) }}
|
||||
if !hasServiceParamChanges {
|
||||
if plan.{{ToCamel .Code}}.IsNull() != state.{{ToCamel .Code}}.IsNull() || plan.{{ToCamel .Code}}.IsUnknown() != state.{{ToCamel .Code}}.IsUnknown() {
|
||||
hasServiceParamChanges = true
|
||||
@@ -497,6 +503,7 @@ func (r *{{ToCamel .Name}}Resource) Update(ctx context.Context, req resource.Upd
|
||||
}
|
||||
}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{- if .HasRedeploy }}
|
||||
// --- Redeploy support (ARCHITECTURE.md) ---
|
||||
@@ -540,7 +547,7 @@ func (r *{{ToCamel .Name}}Resource) Update(ctx context.Context, req resource.Upd
|
||||
{{- end }}
|
||||
params := map[int]string{
|
||||
{{- range .ModifyParams }}
|
||||
{{- if .IsNested }}
|
||||
{{- if (IsNested .) }}
|
||||
{{.ID}}: {{NestedJSONExpr . "plan"}},
|
||||
{{- else }}
|
||||
{{.ID}}: {{ParamFormat . (printf "plan.%s" (ToCamel .Code))}},
|
||||
|
||||
Reference in New Issue
Block a user