@@ -12,6 +12,7 @@ import (
1212 "slices"
1313 "strings"
1414
15+ "github.com/databricks/databricks-sdk-go/config"
1516 "github.com/databricks/terraform-provider-databricks/internal/providers/pluginfw/products/app"
1617 "github.com/databricks/terraform-provider-databricks/internal/providers/pluginfw/products/catalog"
1718 "github.com/databricks/terraform-provider-databricks/internal/providers/pluginfw/products/cluster"
@@ -70,42 +71,56 @@ var pluginFwOnlyDataSources = append(
7071 autoGeneratedDataSources ... ,
7172)
7273
73- type sdkV2FallbackOptions struct {
74+ type pluginFrameworkOptions struct {
7475 resourceFallbacks []string
7576 dataSourceFallbacks []string
77+ configCustomizer func (* config.Config ) error
7678}
7779
78- // SdkV2FallbackOption is an interface for acceptance tests to specify resources / data sources to fallback to SDK V2
79- type SdkV2FallbackOption interface {
80- Apply (* sdkV2FallbackOptions )
80+ // PluginFrameworkOption is an interface for acceptance tests to specify resources / data sources to fallback to SDK V2
81+ type PluginFrameworkOption interface {
82+ Apply (* pluginFrameworkOptions )
8183}
8284
8385type sdkV2ResourceFallback struct {
8486 resourceFallbacks []string
8587}
8688
87- func (o * sdkV2ResourceFallback ) Apply (options * sdkV2FallbackOptions ) {
89+ func (o * sdkV2ResourceFallback ) Apply (options * pluginFrameworkOptions ) {
8890 options .resourceFallbacks = o .resourceFallbacks
8991}
9092
9193// WithSdkV2ResourceFallbacks is a helper function to specify resources to fallback to SDK V2
92- func WithSdkV2ResourceFallbacks (fallbacks ... string ) SdkV2FallbackOption {
94+ func WithSdkV2ResourceFallbacks (fallbacks [] string ) PluginFrameworkOption {
9395 return & sdkV2ResourceFallback {resourceFallbacks : fallbacks }
9496}
9597
9698type sdkv2DataSourceFallback struct {
9799 dataSourceFallbacks []string
98100}
99101
100- func (o * sdkv2DataSourceFallback ) Apply (options * sdkV2FallbackOptions ) {
102+ func (o * sdkv2DataSourceFallback ) Apply (options * pluginFrameworkOptions ) {
101103 options .dataSourceFallbacks = o .dataSourceFallbacks
102104}
103105
104106// WithSdkV2DataSourceFallbacks is a helper function to specify data sources to fallback to SDK V2
105- func WithSdkV2DataSourceFallbacks (fallbacks []string ) SdkV2FallbackOption {
107+ func WithSdkV2DataSourceFallbacks (fallbacks []string ) PluginFrameworkOption {
106108 return & sdkv2DataSourceFallback {dataSourceFallbacks : fallbacks }
107109}
108110
111+ type configCustomizer struct {
112+ configCustomizer func (* config.Config ) error
113+ }
114+
115+ func (o * configCustomizer ) Apply (options * pluginFrameworkOptions ) {
116+ options .configCustomizer = o .configCustomizer
117+ }
118+
119+ // WithConfigCustomizer allows the caller to customize the SDK config after config resolution.
120+ func WithConfigCustomizer (customizer func (* config.Config ) error ) PluginFrameworkOption {
121+ return & configCustomizer {configCustomizer : customizer }
122+ }
123+
109124// GetUseSdkV2DataSources is a helper function to get name of resources that should use SDK V2 instead of plugin framework
110125func getUseSdkV2Resources () []string {
111126 useSdkV2 := os .Getenv ("USE_SDK_V2_RESOURCES" )
@@ -137,18 +152,13 @@ func shouldUseSdkV2DataSource(dataSourceName string) bool {
137152}
138153
139154// getPluginFrameworkResourcesToRegister is a helper function to get the list of resources that are migrated away from sdkv2 to plugin framework
140- func getPluginFrameworkResourcesToRegister (sdkV2Fallbacks ... SdkV2FallbackOption ) []func () resource.Resource {
141- fallbackOption := sdkV2FallbackOptions {}
142- for _ , o := range sdkV2Fallbacks {
143- o .Apply (& fallbackOption )
144- }
145-
155+ func getPluginFrameworkResourcesToRegister (resourceFallbacks []string ) []func () resource.Resource {
146156 var resources []func () resource.Resource
147157
148158 // Loop through the map and add resources if they're not specifically marked to use the SDK V2
149159 for _ , resourceFunc := range migratedResources {
150160 name := getResourceName (resourceFunc )
151- if ! shouldUseSdkV2Resource (name ) && ! slices .Contains (fallbackOption . resourceFallbacks , name ) {
161+ if ! shouldUseSdkV2Resource (name ) && ! slices .Contains (resourceFallbacks , name ) {
152162 resources = append (resources , resourceFunc )
153163 }
154164 }
@@ -157,18 +167,13 @@ func getPluginFrameworkResourcesToRegister(sdkV2Fallbacks ...SdkV2FallbackOption
157167}
158168
159169// getPluginFrameworkDataSourcesToRegister is a helper function to get the list of data sources that are migrated away from sdkv2 to plugin framework
160- func getPluginFrameworkDataSourcesToRegister (sdkV2Fallbacks ... SdkV2FallbackOption ) []func () datasource.DataSource {
161- fallbackOption := sdkV2FallbackOptions {}
162- for _ , o := range sdkV2Fallbacks {
163- o .Apply (& fallbackOption )
164- }
165-
170+ func getPluginFrameworkDataSourcesToRegister (dataSourceFallbacks []string ) []func () datasource.DataSource {
166171 var dataSources []func () datasource.DataSource
167172
168173 // Loop through the map and add data sources if they're not specifically marked to use the SDK V2
169174 for _ , dataSourceFunc := range migratedDataSources {
170175 name := getDataSourceName (dataSourceFunc )
171- if ! shouldUseSdkV2DataSource (name ) && ! slices .Contains (fallbackOption . dataSourceFallbacks , name ) {
176+ if ! shouldUseSdkV2DataSource (name ) && ! slices .Contains (dataSourceFallbacks , name ) {
172177 dataSources = append (dataSources , dataSourceFunc )
173178 }
174179 }
@@ -189,33 +194,23 @@ func getDataSourceName(dataSourceFunc func() datasource.DataSource) string {
189194}
190195
191196// GetSdkV2ResourcesToRemove is a helper function to get the list of resources that are migrated away from sdkv2 to plugin framework
192- func GetSdkV2ResourcesToRemove (sdkV2Fallbacks ... SdkV2FallbackOption ) []string {
193- fallbackOption := sdkV2FallbackOptions {}
194- for _ , o := range sdkV2Fallbacks {
195- o .Apply (& fallbackOption )
196- }
197-
197+ func GetSdkV2ResourcesToRemove (resourceFallbacks []string ) []string {
198198 resourcesToRemove := []string {}
199199 for _ , resourceFunc := range migratedResources {
200200 name := getResourceName (resourceFunc )
201- if ! shouldUseSdkV2Resource (name ) && ! slices .Contains (fallbackOption . resourceFallbacks , name ) {
201+ if ! shouldUseSdkV2Resource (name ) && ! slices .Contains (resourceFallbacks , name ) {
202202 resourcesToRemove = append (resourcesToRemove , name )
203203 }
204204 }
205205 return resourcesToRemove
206206}
207207
208208// GetSdkV2DataSourcesToRemove is a helper function to get the list of data sources that are migrated away from sdkv2 to plugin framework
209- func GetSdkV2DataSourcesToRemove (sdkV2Fallbacks ... SdkV2FallbackOption ) []string {
210- fallbackOption := sdkV2FallbackOptions {}
211- for _ , o := range sdkV2Fallbacks {
212- o .Apply (& fallbackOption )
213- }
214-
209+ func GetSdkV2DataSourcesToRemove (dataSourceFallbacks []string ) []string {
215210 dataSourcesToRemove := []string {}
216211 for _ , dataSourceFunc := range migratedDataSources {
217212 name := getDataSourceName (dataSourceFunc )
218- if ! shouldUseSdkV2DataSource (name ) && ! slices .Contains (fallbackOption . dataSourceFallbacks , name ) {
213+ if ! shouldUseSdkV2DataSource (name ) && ! slices .Contains (dataSourceFallbacks , name ) {
219214 dataSourcesToRemove = append (dataSourcesToRemove , name )
220215 }
221216 }
0 commit comments