@@ -412,7 +412,7 @@ func (p *FrameworkProviderConfig) HandleZeroValues(ctx context.Context, data *fw
412412
413413// HandleDefaults will handle all the defaults necessary in the provider
414414func (p * FrameworkProviderConfig ) HandleDefaults (ctx context.Context , data * fwmodels.ProviderModel , diags * diag.Diagnostics ) {
415- if data .AccessToken .IsNull () && data .Credentials .IsNull () {
415+ if ( data .AccessToken .IsNull () || data . AccessToken . IsUnknown ()) && ( data .Credentials .IsNull () || data . Credentials . IsUnknown () ) {
416416 credentials := transport_tpg .MultiEnvDefault ([]string {
417417 "GOOGLE_CREDENTIALS" ,
418418 "GOOGLE_CLOUD_KEYFILE_JSON" ,
@@ -432,11 +432,11 @@ func (p *FrameworkProviderConfig) HandleDefaults(ctx context.Context, data *fwmo
432432 }
433433 }
434434
435- if data .ImpersonateServiceAccount .IsNull () && os .Getenv ("GOOGLE_IMPERSONATE_SERVICE_ACCOUNT" ) != "" {
435+ if ( data .ImpersonateServiceAccount .IsNull () || data . ImpersonateServiceAccount . IsUnknown () ) && os .Getenv ("GOOGLE_IMPERSONATE_SERVICE_ACCOUNT" ) != "" {
436436 data .ImpersonateServiceAccount = types .StringValue (os .Getenv ("GOOGLE_IMPERSONATE_SERVICE_ACCOUNT" ))
437437 }
438438
439- if data .Project .IsNull () {
439+ if data .Project .IsNull () || data . Project . IsUnknown () {
440440 project := transport_tpg .MultiEnvDefault ([]string {
441441 "GOOGLE_PROJECT" ,
442442 "GOOGLE_CLOUD_PROJECT" ,
@@ -452,7 +452,7 @@ func (p *FrameworkProviderConfig) HandleDefaults(ctx context.Context, data *fwmo
452452 data .BillingProject = types .StringValue (os .Getenv ("GOOGLE_BILLING_PROJECT" ))
453453 }
454454
455- if data .Region .IsNull () {
455+ if data .Region .IsNull () || data . Region . IsUnknown () {
456456 region := transport_tpg .MultiEnvDefault ([]string {
457457 "GOOGLE_REGION" ,
458458 "GCLOUD_REGION" ,
@@ -464,7 +464,7 @@ func (p *FrameworkProviderConfig) HandleDefaults(ctx context.Context, data *fwmo
464464 }
465465 }
466466
467- if data .Zone .IsNull () {
467+ if data .Zone .IsNull () || data . Zone . IsUnknown () {
468468 zone := transport_tpg .MultiEnvDefault ([]string {
469469 "GOOGLE_ZONE" ,
470470 "GCLOUD_ZONE" ,
@@ -485,26 +485,26 @@ func (p *FrameworkProviderConfig) HandleDefaults(ctx context.Context, data *fwmo
485485 }
486486 }
487487
488- if ! data .Batching .IsNull () {
488+ if ! data .Batching .IsNull () && ! data . Batching . IsUnknown () {
489489 var pbConfigs []fwmodels.ProviderBatching
490490 d := data .Batching .ElementsAs (ctx , & pbConfigs , true )
491491 diags .Append (d ... )
492492 if diags .HasError () {
493493 return
494494 }
495495
496- if pbConfigs [0 ].SendAfter .IsNull () {
496+ if pbConfigs [0 ].SendAfter .IsNull () || pbConfigs [ 0 ]. SendAfter . IsUnknown () {
497497 pbConfigs [0 ].SendAfter = types .StringValue ("10s" )
498498 }
499499
500- if pbConfigs [0 ].EnableBatching .IsNull () {
500+ if pbConfigs [0 ].EnableBatching .IsNull () || pbConfigs [ 0 ]. EnableBatching . IsUnknown () {
501501 pbConfigs [0 ].EnableBatching = types .BoolValue (true )
502502 }
503503
504504 data .Batching , d = types .ListValueFrom (ctx , types.ObjectType {}.WithAttributeTypes (fwmodels .ProviderBatchingAttributes ), pbConfigs )
505505 }
506506
507- if data .UserProjectOverride .IsNull () && os .Getenv ("USER_PROJECT_OVERRIDE" ) != "" {
507+ if ( data .UserProjectOverride .IsNull () || data . UserProjectOverride . IsUnknown () ) && os .Getenv ("USER_PROJECT_OVERRIDE" ) != "" {
508508 override , err := strconv .ParseBool (os .Getenv ("USER_PROJECT_OVERRIDE" ))
509509 if err != nil {
510510 diags .AddError (
@@ -513,11 +513,11 @@ func (p *FrameworkProviderConfig) HandleDefaults(ctx context.Context, data *fwmo
513513 data .UserProjectOverride = types .BoolValue (override )
514514 }
515515
516- if data .RequestReason .IsNull () && os .Getenv ("CLOUDSDK_CORE_REQUEST_REASON" ) != "" {
516+ if ( data .RequestReason .IsNull () || data . RequestReason . IsUnknown () ) && os .Getenv ("CLOUDSDK_CORE_REQUEST_REASON" ) != "" {
517517 data .RequestReason = types .StringValue (os .Getenv ("CLOUDSDK_CORE_REQUEST_REASON" ))
518518 }
519519
520- if data .RequestTimeout .IsNull () {
520+ if data .RequestTimeout .IsNull () || data . RequestTimeout . IsUnknown () {
521521 data .RequestTimeout = types .StringValue ("120s" )
522522 }
523523
@@ -1727,7 +1727,7 @@ func (p *FrameworkProviderConfig) logGoogleIdentities(ctx context.Context, data
17271727 // a separate diagnostics here
17281728 var d diag.Diagnostics
17291729
1730- if data .ImpersonateServiceAccount .IsNull () {
1730+ if data .ImpersonateServiceAccount .IsNull () || data . ImpersonateServiceAccount . IsUnknown () {
17311731
17321732 tokenSource := GetTokenSource (ctx , data , true , diags )
17331733 if diags .HasError () {
@@ -1787,19 +1787,23 @@ func GetCredentials(ctx context.Context, data fwmodels.ProviderModel, initialCre
17871787 var clientScopes []string
17881788 var delegates []string
17891789
1790- d := data .Scopes .ElementsAs (ctx , & clientScopes , false )
1791- diags .Append (d ... )
1792- if diags .HasError () {
1793- return googleoauth.Credentials {}
1790+ if ! data .Scopes .IsNull () && ! data .Scopes .IsUnknown () {
1791+ d := data .Scopes .ElementsAs (ctx , & clientScopes , false )
1792+ diags .Append (d ... )
1793+ if diags .HasError () {
1794+ return googleoauth.Credentials {}
1795+ }
17941796 }
17951797
1796- d = data .ImpersonateServiceAccountDelegates .ElementsAs (ctx , & delegates , false )
1797- diags .Append (d ... )
1798- if diags .HasError () {
1799- return googleoauth.Credentials {}
1798+ if ! data .ImpersonateServiceAccountDelegates .IsNull () && ! data .ImpersonateServiceAccountDelegates .IsUnknown () {
1799+ d := data .ImpersonateServiceAccountDelegates .ElementsAs (ctx , & delegates , false )
1800+ diags .Append (d ... )
1801+ if diags .HasError () {
1802+ return googleoauth.Credentials {}
1803+ }
18001804 }
18011805
1802- if ! data .AccessToken .IsNull () {
1806+ if ! data .AccessToken .IsNull () && ! data . AccessToken . IsUnknown () {
18031807 contents , _ , err := verify .PathOrContents (data .AccessToken .ValueString ())
18041808 if err != nil {
18051809 diags .AddError ("error loading access token" , err .Error ())
@@ -1824,7 +1828,7 @@ func GetCredentials(ctx context.Context, data fwmodels.ProviderModel, initialCre
18241828 }
18251829 }
18261830
1827- if ! data .Credentials .IsNull () {
1831+ if ! data .Credentials .IsNull () && ! data . Credentials . IsUnknown () {
18281832 contents , _ , err := verify .PathOrContents (data .Credentials .ValueString ())
18291833 if err != nil {
18301834 diags .AddError (fmt .Sprintf ("error loading credentials: %s" , err ), err .Error ())
@@ -1883,7 +1887,8 @@ func GetBatchingConfig(ctx context.Context, data types.List, diags *diag.Diagnos
18831887 EnableBatching : true ,
18841888 }
18851889
1886- if data .IsNull () {
1890+ // Handle if entire batching block is null/unknown
1891+ if data .IsNull () || data .IsUnknown () {
18871892 return bc
18881893 }
18891894
0 commit comments