From 59a31c6aa601a73d94012a6c237d1bef9b371383 Mon Sep 17 00:00:00 2001 From: Omer Lachish Date: Fri, 3 Jan 2025 11:28:37 +0100 Subject: [PATCH] call ApplySchemaCustomizations even if no customizeSchema is passed in --- .../pluginfw/tfschema/struct_to_schema.go | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/internal/providers/pluginfw/tfschema/struct_to_schema.go b/internal/providers/pluginfw/tfschema/struct_to_schema.go index 08f51e49bc..f3a80976cf 100644 --- a/internal/providers/pluginfw/tfschema/struct_to_schema.go +++ b/internal/providers/pluginfw/tfschema/struct_to_schema.go @@ -195,27 +195,31 @@ func DataSourceStructToSchema(ctx context.Context, v any, customizeSchema func(C // ResourceStructToSchemaMap returns two maps from string to resource schema attributes and blocks using a tfsdk struct, with custoimzations applied. func ResourceStructToSchemaMap(ctx context.Context, v any, customizeSchema func(CustomizableSchema) CustomizableSchema) (map[string]schema.Attribute, map[string]schema.Block) { nestedBlockObj := typeToSchema(ctx, reflect.ValueOf(v)) + cs := *ConstructCustomizableSchema(nestedBlockObj) + + if schemaProvider, ok := v.(CustomizableSchemaProvider); ok { + cs = schemaProvider.ApplySchemaCustomizations(cs) + } if customizeSchema != nil { - cs := *ConstructCustomizableSchema(nestedBlockObj) - if schemaProvider, ok := v.(CustomizableSchemaProvider); ok { - cs = schemaProvider.ApplySchemaCustomizations(cs) - } cs = customizeSchema(cs) - return BuildResourceAttributeMap(cs.ToNestedBlockObject().Attributes), BuildResourceBlockMap(cs.ToNestedBlockObject().Blocks) - } else { - return BuildResourceAttributeMap(nestedBlockObj.Attributes), BuildResourceBlockMap(nestedBlockObj.Blocks) } + + return BuildResourceAttributeMap(cs.ToNestedBlockObject().Attributes), BuildResourceBlockMap(cs.ToNestedBlockObject().Blocks) } // DataSourceStructToSchemaMap returns twp maps from string to data source schema attributes and blocks using a tfsdk struct, with custoimzations applied. func DataSourceStructToSchemaMap(ctx context.Context, v any, customizeSchema func(CustomizableSchema) CustomizableSchema) (map[string]dataschema.Attribute, map[string]dataschema.Block) { nestedBlockObj := typeToSchema(ctx, reflect.ValueOf(v)) + cs := *ConstructCustomizableSchema(nestedBlockObj) + + if schemaProvider, ok := v.(CustomizableSchemaProvider); ok { + cs = schemaProvider.ApplySchemaCustomizations(cs) + } if customizeSchema != nil { - cs := customizeSchema(*ConstructCustomizableSchema(nestedBlockObj)) - return BuildDataSourceAttributeMap(cs.ToNestedBlockObject().Attributes), BuildDataSourceBlockMap(cs.ToNestedBlockObject().Blocks) - } else { - return BuildDataSourceAttributeMap(nestedBlockObj.Attributes), BuildDataSourceBlockMap(nestedBlockObj.Blocks) + cs = customizeSchema(cs) } + + return BuildDataSourceAttributeMap(cs.ToNestedBlockObject().Attributes), BuildDataSourceBlockMap(cs.ToNestedBlockObject().Blocks) }