Skip to content

Commit 87544ed

Browse files
Add mode, inline cert iss & trust config to workload identity pool (#13814) (#3894)
[upstream:1ffca3b72196be5cee231a0930532f2fa4a30ab5] Signed-off-by: Modular Magician <magic-modules@google.com>
1 parent 867c03c commit 87544ed

File tree

4 files changed

+514
-0
lines changed

4 files changed

+514
-0
lines changed

tfplan2cai/converters/google/resources/resource_converters.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ import (
5454
"github.com/GoogleCloudPlatform/terraform-google-conversion/v6/tfplan2cai/converters/google/resources/services/gkehub"
5555
"github.com/GoogleCloudPlatform/terraform-google-conversion/v6/tfplan2cai/converters/google/resources/services/gkehub2"
5656
"github.com/GoogleCloudPlatform/terraform-google-conversion/v6/tfplan2cai/converters/google/resources/services/healthcare"
57+
"github.com/GoogleCloudPlatform/terraform-google-conversion/v6/tfplan2cai/converters/google/resources/services/iambeta"
5758
"github.com/GoogleCloudPlatform/terraform-google-conversion/v6/tfplan2cai/converters/google/resources/services/iap"
5859
"github.com/GoogleCloudPlatform/terraform-google-conversion/v6/tfplan2cai/converters/google/resources/services/kms"
5960
"github.com/GoogleCloudPlatform/terraform-google-conversion/v6/tfplan2cai/converters/google/resources/services/logging"
@@ -366,6 +367,9 @@ func ResourceConverters() map[string][]cai.ResourceConverter {
366367
"google_healthcare_consent_store_iam_policy": {healthcare.ResourceConverterHealthcareConsentStoreIamPolicy()},
367368
"google_healthcare_consent_store_iam_binding": {healthcare.ResourceConverterHealthcareConsentStoreIamBinding()},
368369
"google_healthcare_consent_store_iam_member": {healthcare.ResourceConverterHealthcareConsentStoreIamMember()},
370+
"google_iam_workload_identity_pool_iam_policy": {iambeta.ResourceConverterIAMBetaWorkloadIdentityPoolIamPolicy()},
371+
"google_iam_workload_identity_pool_iam_binding": {iambeta.ResourceConverterIAMBetaWorkloadIdentityPoolIamBinding()},
372+
"google_iam_workload_identity_pool_iam_member": {iambeta.ResourceConverterIAMBetaWorkloadIdentityPoolIamMember()},
369373
"google_iap_tunnel_iam_policy": {iap.ResourceConverterIapTunnelIamPolicy()},
370374
"google_iap_tunnel_iam_binding": {iap.ResourceConverterIapTunnelIamBinding()},
371375
"google_iap_tunnel_iam_member": {iap.ResourceConverterIapTunnelIamMember()},
Lines changed: 225 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,225 @@
1+
// ----------------------------------------------------------------------------
2+
//
3+
// *** AUTO GENERATED CODE *** Type: MMv1 ***
4+
//
5+
// ----------------------------------------------------------------------------
6+
//
7+
// This code is generated by Magic Modules using the following:
8+
//
9+
// Configuration: https://github.com/GoogleCloudPlatform/magic-modules/tree/main/mmv1/products/iambeta/WorkloadIdentityPool.yaml
10+
// Template: https://github.com/GoogleCloudPlatform/magic-modules/tree/main/mmv1/templates/terraform/iam_policy.go.tmpl
11+
//
12+
// DO NOT EDIT this file directly. Any changes made to this file will be
13+
// overwritten during the next generation cycle.
14+
//
15+
// ----------------------------------------------------------------------------
16+
17+
package iambeta
18+
19+
import (
20+
"fmt"
21+
22+
"github.com/hashicorp/errwrap"
23+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
24+
"google.golang.org/api/cloudresourcemanager/v1"
25+
26+
"github.com/hashicorp/terraform-provider-google-beta/google-beta/tpgiamresource"
27+
"github.com/hashicorp/terraform-provider-google-beta/google-beta/tpgresource"
28+
transport_tpg "github.com/hashicorp/terraform-provider-google-beta/google-beta/transport"
29+
)
30+
31+
var IAMBetaWorkloadIdentityPoolIamSchema = map[string]*schema.Schema{
32+
"project": {
33+
Type: schema.TypeString,
34+
Computed: true,
35+
Optional: true,
36+
ForceNew: true,
37+
},
38+
"workload_identity_pool_id": {
39+
Type: schema.TypeString,
40+
Required: true,
41+
ForceNew: true,
42+
DiffSuppressFunc: tpgresource.CompareSelfLinkOrResourceName,
43+
},
44+
}
45+
46+
type IAMBetaWorkloadIdentityPoolIamUpdater struct {
47+
project string
48+
workloadIdentityPoolId string
49+
d tpgresource.TerraformResourceData
50+
Config *transport_tpg.Config
51+
}
52+
53+
func IAMBetaWorkloadIdentityPoolIamUpdaterProducer(d tpgresource.TerraformResourceData, config *transport_tpg.Config) (tpgiamresource.ResourceIamUpdater, error) {
54+
values := make(map[string]string)
55+
56+
project, _ := tpgresource.GetProject(d, config)
57+
if project != "" {
58+
if err := d.Set("project", project); err != nil {
59+
return nil, fmt.Errorf("Error setting project: %s", err)
60+
}
61+
}
62+
values["project"] = project
63+
if v, ok := d.GetOk("workload_identity_pool_id"); ok {
64+
values["workload_identity_pool_id"] = v.(string)
65+
}
66+
67+
// We may have gotten either a long or short name, so attempt to parse long name if possible
68+
m, err := tpgresource.GetImportIdQualifiers([]string{"projects/(?P<project>[^/]+)/locations/global/workloadIdentityPools/(?P<workload_identity_pool_id>[^/]+)", "(?P<project>[^/]+)/(?P<workload_identity_pool_id>[^/]+)", "(?P<workload_identity_pool_id>[^/]+)"}, d, config, d.Get("workload_identity_pool_id").(string))
69+
if err != nil {
70+
return nil, err
71+
}
72+
73+
for k, v := range m {
74+
values[k] = v
75+
}
76+
77+
u := &IAMBetaWorkloadIdentityPoolIamUpdater{
78+
project: values["project"],
79+
workloadIdentityPoolId: values["workload_identity_pool_id"],
80+
d: d,
81+
Config: config,
82+
}
83+
84+
if err := d.Set("project", u.project); err != nil {
85+
return nil, fmt.Errorf("Error setting project: %s", err)
86+
}
87+
if err := d.Set("workload_identity_pool_id", u.GetResourceId()); err != nil {
88+
return nil, fmt.Errorf("Error setting workload_identity_pool_id: %s", err)
89+
}
90+
91+
return u, nil
92+
}
93+
94+
func IAMBetaWorkloadIdentityPoolIdParseFunc(d *schema.ResourceData, config *transport_tpg.Config) error {
95+
values := make(map[string]string)
96+
97+
project, _ := tpgresource.GetProject(d, config)
98+
if project != "" {
99+
values["project"] = project
100+
}
101+
102+
m, err := tpgresource.GetImportIdQualifiers([]string{"projects/(?P<project>[^/]+)/locations/global/workloadIdentityPools/(?P<workload_identity_pool_id>[^/]+)", "(?P<project>[^/]+)/(?P<workload_identity_pool_id>[^/]+)", "(?P<workload_identity_pool_id>[^/]+)"}, d, config, d.Id())
103+
if err != nil {
104+
return err
105+
}
106+
107+
for k, v := range m {
108+
values[k] = v
109+
}
110+
111+
u := &IAMBetaWorkloadIdentityPoolIamUpdater{
112+
project: values["project"],
113+
workloadIdentityPoolId: values["workload_identity_pool_id"],
114+
d: d,
115+
Config: config,
116+
}
117+
if err := d.Set("workload_identity_pool_id", u.GetResourceId()); err != nil {
118+
return fmt.Errorf("Error setting workload_identity_pool_id: %s", err)
119+
}
120+
d.SetId(u.GetResourceId())
121+
return nil
122+
}
123+
124+
func (u *IAMBetaWorkloadIdentityPoolIamUpdater) GetResourceIamPolicy() (*cloudresourcemanager.Policy, error) {
125+
url, err := u.qualifyWorkloadIdentityPoolUrl("getIamPolicy")
126+
if err != nil {
127+
return nil, err
128+
}
129+
130+
project, err := tpgresource.GetProject(u.d, u.Config)
131+
if err != nil {
132+
return nil, err
133+
}
134+
var obj map[string]interface{}
135+
obj = map[string]interface{}{
136+
"options": map[string]interface{}{
137+
"requestedPolicyVersion": tpgiamresource.IamPolicyVersion,
138+
},
139+
}
140+
141+
userAgent, err := tpgresource.GenerateUserAgentString(u.d, u.Config.UserAgent)
142+
if err != nil {
143+
return nil, err
144+
}
145+
146+
policy, err := transport_tpg.SendRequest(transport_tpg.SendRequestOptions{
147+
Config: u.Config,
148+
Method: "POST",
149+
Project: project,
150+
RawURL: url,
151+
UserAgent: userAgent,
152+
Body: obj,
153+
})
154+
if err != nil {
155+
return nil, errwrap.Wrapf(fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
156+
}
157+
158+
out := &cloudresourcemanager.Policy{}
159+
err = tpgresource.Convert(policy, out)
160+
if err != nil {
161+
return nil, errwrap.Wrapf("Cannot convert a policy to a resource manager policy: {{err}}", err)
162+
}
163+
164+
return out, nil
165+
}
166+
167+
func (u *IAMBetaWorkloadIdentityPoolIamUpdater) SetResourceIamPolicy(policy *cloudresourcemanager.Policy) error {
168+
json, err := tpgresource.ConvertToMap(policy)
169+
if err != nil {
170+
return err
171+
}
172+
173+
obj := make(map[string]interface{})
174+
obj["policy"] = json
175+
176+
url, err := u.qualifyWorkloadIdentityPoolUrl("setIamPolicy")
177+
if err != nil {
178+
return err
179+
}
180+
project, err := tpgresource.GetProject(u.d, u.Config)
181+
if err != nil {
182+
return err
183+
}
184+
185+
userAgent, err := tpgresource.GenerateUserAgentString(u.d, u.Config.UserAgent)
186+
if err != nil {
187+
return err
188+
}
189+
190+
_, err = transport_tpg.SendRequest(transport_tpg.SendRequestOptions{
191+
Config: u.Config,
192+
Method: "POST",
193+
Project: project,
194+
RawURL: url,
195+
UserAgent: userAgent,
196+
Body: obj,
197+
Timeout: u.d.Timeout(schema.TimeoutCreate),
198+
})
199+
if err != nil {
200+
return errwrap.Wrapf(fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
201+
}
202+
203+
return nil
204+
}
205+
206+
func (u *IAMBetaWorkloadIdentityPoolIamUpdater) qualifyWorkloadIdentityPoolUrl(methodIdentifier string) (string, error) {
207+
urlTemplate := fmt.Sprintf("{{IAMBetaBasePath}}%s:%s", fmt.Sprintf("projects/%s/locations/global/workloadIdentityPools/%s", u.project, u.workloadIdentityPoolId), methodIdentifier)
208+
url, err := tpgresource.ReplaceVars(u.d, u.Config, urlTemplate)
209+
if err != nil {
210+
return "", err
211+
}
212+
return url, nil
213+
}
214+
215+
func (u *IAMBetaWorkloadIdentityPoolIamUpdater) GetResourceId() string {
216+
return fmt.Sprintf("projects/%s/locations/global/workloadIdentityPools/%s", u.project, u.workloadIdentityPoolId)
217+
}
218+
219+
func (u *IAMBetaWorkloadIdentityPoolIamUpdater) GetMutexKey() string {
220+
return fmt.Sprintf("iam-iambeta-workloadidentitypool-%s", u.GetResourceId())
221+
}
222+
223+
func (u *IAMBetaWorkloadIdentityPoolIamUpdater) DescribeResource() string {
224+
return fmt.Sprintf("iambeta workloadidentitypool %q", u.GetResourceId())
225+
}

0 commit comments

Comments
 (0)