7
7
8
8
"github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator"
9
9
"github.com/hashicorp/terraform-plugin-framework/datasource"
10
+ "github.com/hashicorp/terraform-plugin-framework/ephemeral"
10
11
"github.com/hashicorp/terraform-plugin-framework/function"
11
12
"github.com/hashicorp/terraform-plugin-framework/path"
12
13
"github.com/hashicorp/terraform-plugin-framework/provider"
@@ -16,6 +17,7 @@ import (
16
17
"github.com/hashicorp/terraform-plugin-framework/schema/validator"
17
18
"github.com/hashicorp/terraform-plugin-framework/types"
18
19
20
+ "github.com/hashicorp/terraform-provider-google/google/fwvalidators"
19
21
"github.com/hashicorp/terraform-provider-google/google/functions"
20
22
"github.com/hashicorp/terraform-provider-google/google/fwmodels"
21
23
"github.com/hashicorp/terraform-provider-google/google/services/resourcemanager"
32
34
_ provider.Provider = &FrameworkProvider{}
33
35
_ provider.ProviderWithMetaSchema = &FrameworkProvider{}
34
36
_ provider.ProviderWithFunctions = &FrameworkProvider{}
37
+ _ provider.ProviderWithEphemeralResources = &FrameworkProvider{}
35
38
)
36
39
37
40
// New is a helper function to simplify provider server and testing implementation.
@@ -80,8 +83,8 @@ func (p *FrameworkProvider) Schema(_ context.Context, _ provider.SchemaRequest,
80
83
stringvalidator.ConflictsWith(path.Expressions{
81
84
path.MatchRoot("access_token"),
82
85
}...),
83
- CredentialsValidator(),
84
- NonEmptyStringValidator(),
86
+ fwvalidators. CredentialsValidator(),
87
+ fwvalidators. NonEmptyStringValidator(),
85
88
},
86
89
},
87
90
"access_token": schema.StringAttribute{
@@ -90,13 +93,13 @@ func (p *FrameworkProvider) Schema(_ context.Context, _ provider.SchemaRequest,
90
93
stringvalidator.ConflictsWith(path.Expressions{
91
94
path.MatchRoot("credentials"),
92
95
}...),
93
- NonEmptyStringValidator(),
96
+ fwvalidators. NonEmptyStringValidator(),
94
97
},
95
98
},
96
99
"impersonate_service_account": schema.StringAttribute{
97
100
Optional: true,
98
101
Validators: []validator.String{
99
- NonEmptyStringValidator(),
102
+ fwvalidators. NonEmptyStringValidator(),
100
103
},
101
104
},
102
105
"impersonate_service_account_delegates": schema.ListAttribute{
@@ -106,25 +109,25 @@ func (p *FrameworkProvider) Schema(_ context.Context, _ provider.SchemaRequest,
106
109
"project": schema.StringAttribute{
107
110
Optional: true,
108
111
Validators: []validator.String{
109
- NonEmptyStringValidator(),
112
+ fwvalidators. NonEmptyStringValidator(),
110
113
},
111
114
},
112
115
"billing_project": schema.StringAttribute{
113
116
Optional: true,
114
117
Validators: []validator.String{
115
- NonEmptyStringValidator(),
118
+ fwvalidators. NonEmptyStringValidator(),
116
119
},
117
120
},
118
121
"region": schema.StringAttribute{
119
122
Optional: true,
120
123
Validators: []validator.String{
121
- NonEmptyStringValidator(),
124
+ fwvalidators. NonEmptyStringValidator(),
122
125
},
123
126
},
124
127
"zone": schema.StringAttribute{
125
128
Optional: true,
126
129
Validators: []validator.String{
127
- NonEmptyStringValidator(),
130
+ fwvalidators. NonEmptyStringValidator(),
128
131
},
129
132
},
130
133
"scopes": schema.ListAttribute{
@@ -137,8 +140,8 @@ func (p *FrameworkProvider) Schema(_ context.Context, _ provider.SchemaRequest,
137
140
"request_timeout": schema.StringAttribute{
138
141
Optional: true,
139
142
Validators: []validator.String{
140
- NonEmptyStringValidator(),
141
- NonNegativeDurationValidator(),
143
+ fwvalidators. NonEmptyStringValidator(),
144
+ fwvalidators. NonNegativeDurationValidator(),
142
145
},
143
146
},
144
147
"request_reason": schema.StringAttribute{
@@ -240,7 +243,7 @@ func (p *FrameworkProvider) Schema(_ context.Context, _ provider.SchemaRequest,
240
243
"send_after": schema.StringAttribute{
241
244
Optional: true,
242
245
Validators: []validator.String{
243
- NonNegativeDurationValidator(),
246
+ fwvalidators. NonNegativeDurationValidator(),
244
247
},
245
248
},
246
249
"enable_batching": schema.BoolAttribute{
@@ -282,6 +285,7 @@ func (p *FrameworkProvider) Configure(ctx context.Context, req provider.Configur
282
285
meta := p.Primary.Meta().(*transport_tpg.Config)
283
286
resp.DataSourceData = meta
284
287
resp.ResourceData = meta
288
+ resp.EphemeralResourceData = meta
285
289
}
286
290
287
291
@@ -314,3 +318,13 @@ func (p *FrameworkProvider) Functions(_ context.Context) []func() function.Funct
314
318
functions.NewZoneFromIdFunction,
315
319
}
316
320
}
321
+
322
+ // EphemeralResources defines the resources that are of ephemeral type implemented in the provider.
323
+ func (p *FrameworkProvider) EphemeralResources(_ context.Context) []func() ephemeral.EphemeralResource {
324
+ return []func() ephemeral.EphemeralResource{
325
+ resourcemanager.GoogleEphemeralServiceAccountAccessToken,
326
+ resourcemanager.GoogleEphemeralServiceAccountIdToken,
327
+ resourcemanager.GoogleEphemeralServiceAccountJwt,
328
+ resourcemanager.GoogleEphemeralServiceAccountKey,
329
+ }
330
+ }
0 commit comments