Skip to content

Commit e9f175a

Browse files
IAP princiapls for regional forwarding rule (#14877) (#10561)
[upstream:84444baf434dc6249b71586f83bf5c376e5d9e66] Signed-off-by: Modular Magician <[email protected]>
1 parent fdaed35 commit e9f175a

6 files changed

+1614
-2
lines changed

.changelog/14877.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
```release-note:new-resource
2+
`google_iap_web_region_forwarding_rule_service_iam_policy`
3+
```
4+
```release-note:new-resource
5+
`google_iap_web_region_forwarding_rule_service_iam_binding`
6+
```
7+
```release-note:new-resource
8+
`google_iap_web_region_forwarding_rule_service_iam_member`
9+
```

google-beta/provider/provider_mmv1_resources.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,7 @@ var generatedIAMDatasources = map[string]*schema.Resource{
535535
"google_iap_app_engine_service_iam_policy": tpgiamresource.DataSourceIamPolicy(iap.IapAppEngineServiceIamSchema, iap.IapAppEngineServiceIamUpdaterProducer),
536536
"google_iap_app_engine_version_iam_policy": tpgiamresource.DataSourceIamPolicy(iap.IapAppEngineVersionIamSchema, iap.IapAppEngineVersionIamUpdaterProducer),
537537
"google_iap_web_cloud_run_service_iam_policy": tpgiamresource.DataSourceIamPolicy(iap.IapWebCloudRunServiceIamSchema, iap.IapWebCloudRunServiceIamUpdaterProducer),
538+
"google_iap_web_region_forwarding_rule_service_iam_policy": tpgiamresource.DataSourceIamPolicy(iap.IapWebRegionForwardingRuleServiceIamSchema, iap.IapWebRegionForwardingRuleServiceIamUpdaterProducer),
538539
"google_iap_tunnel_iam_policy": tpgiamresource.DataSourceIamPolicy(iap.IapTunnelIamSchema, iap.IapTunnelIamUpdaterProducer),
539540
"google_iap_tunnel_dest_group_iam_policy": tpgiamresource.DataSourceIamPolicy(iap.IapTunnelDestGroupIamSchema, iap.IapTunnelDestGroupIamUpdaterProducer),
540541
"google_iap_tunnel_instance_iam_policy": tpgiamresource.DataSourceIamPolicy(iap.IapTunnelInstanceIamSchema, iap.IapTunnelInstanceIamUpdaterProducer),
@@ -606,8 +607,8 @@ var handwrittenIAMDatasources = map[string]*schema.Resource{
606607

607608
// Resources
608609
// Generated resources: 700
609-
// Generated IAM resources: 342
610-
// Total generated resources: 1042
610+
// Generated IAM resources: 345
611+
// Total generated resources: 1045
611612
var generatedResources = map[string]*schema.Resource{
612613
"google_folder_access_approval_settings": accessapproval.ResourceAccessApprovalFolderSettings(),
613614
"google_organization_access_approval_settings": accessapproval.ResourceAccessApprovalOrganizationSettings(),
@@ -1278,6 +1279,9 @@ var generatedResources = map[string]*schema.Resource{
12781279
"google_iap_web_cloud_run_service_iam_binding": tpgiamresource.ResourceIamBinding(iap.IapWebCloudRunServiceIamSchema, iap.IapWebCloudRunServiceIamUpdaterProducer, iap.IapWebCloudRunServiceIdParseFunc),
12791280
"google_iap_web_cloud_run_service_iam_member": tpgiamresource.ResourceIamMember(iap.IapWebCloudRunServiceIamSchema, iap.IapWebCloudRunServiceIamUpdaterProducer, iap.IapWebCloudRunServiceIdParseFunc),
12801281
"google_iap_web_cloud_run_service_iam_policy": tpgiamresource.ResourceIamPolicy(iap.IapWebCloudRunServiceIamSchema, iap.IapWebCloudRunServiceIamUpdaterProducer, iap.IapWebCloudRunServiceIdParseFunc),
1282+
"google_iap_web_region_forwarding_rule_service_iam_binding": tpgiamresource.ResourceIamBinding(iap.IapWebRegionForwardingRuleServiceIamSchema, iap.IapWebRegionForwardingRuleServiceIamUpdaterProducer, iap.IapWebRegionForwardingRuleServiceIdParseFunc),
1283+
"google_iap_web_region_forwarding_rule_service_iam_member": tpgiamresource.ResourceIamMember(iap.IapWebRegionForwardingRuleServiceIamSchema, iap.IapWebRegionForwardingRuleServiceIamUpdaterProducer, iap.IapWebRegionForwardingRuleServiceIdParseFunc),
1284+
"google_iap_web_region_forwarding_rule_service_iam_policy": tpgiamresource.ResourceIamPolicy(iap.IapWebRegionForwardingRuleServiceIamSchema, iap.IapWebRegionForwardingRuleServiceIamUpdaterProducer, iap.IapWebRegionForwardingRuleServiceIdParseFunc),
12811285
"google_iap_settings": iap.ResourceIapSettings(),
12821286
"google_iap_tunnel_iam_binding": tpgiamresource.ResourceIamBinding(iap.IapTunnelIamSchema, iap.IapTunnelIamUpdaterProducer, iap.IapTunnelIdParseFunc),
12831287
"google_iap_tunnel_iam_member": tpgiamresource.ResourceIamMember(iap.IapTunnelIamSchema, iap.IapTunnelIamUpdaterProducer, iap.IapTunnelIdParseFunc),
Lines changed: 252 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,252 @@
1+
// Copyright (c) HashiCorp, Inc.
2+
// SPDX-License-Identifier: MPL-2.0
3+
4+
// ----------------------------------------------------------------------------
5+
//
6+
// *** AUTO GENERATED CODE *** Type: MMv1 ***
7+
//
8+
// ----------------------------------------------------------------------------
9+
//
10+
// This code is generated by Magic Modules using the following:
11+
//
12+
// Configuration: https://github.com/GoogleCloudPlatform/magic-modules/tree/main/mmv1/products/iap/ForwardingRuleRegionalService.yaml
13+
// Template: https://github.com/GoogleCloudPlatform/magic-modules/tree/main/mmv1/templates/terraform/iam_policy.go.tmpl
14+
//
15+
// DO NOT EDIT this file directly. Any changes made to this file will be
16+
// overwritten during the next generation cycle.
17+
//
18+
// ----------------------------------------------------------------------------
19+
20+
package iap
21+
22+
import (
23+
"fmt"
24+
25+
"github.com/hashicorp/errwrap"
26+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
27+
"google.golang.org/api/cloudresourcemanager/v1"
28+
29+
"github.com/hashicorp/terraform-provider-google-beta/google-beta/tpgiamresource"
30+
"github.com/hashicorp/terraform-provider-google-beta/google-beta/tpgresource"
31+
transport_tpg "github.com/hashicorp/terraform-provider-google-beta/google-beta/transport"
32+
)
33+
34+
var IapWebRegionForwardingRuleServiceIamSchema = map[string]*schema.Schema{
35+
"project": {
36+
Type: schema.TypeString,
37+
Computed: true,
38+
Optional: true,
39+
ForceNew: true,
40+
},
41+
"region": {
42+
Type: schema.TypeString,
43+
Computed: true,
44+
Optional: true,
45+
ForceNew: true,
46+
},
47+
"forwarding_rule_region_service_name": {
48+
Type: schema.TypeString,
49+
Required: true,
50+
ForceNew: true,
51+
DiffSuppressFunc: tpgresource.CompareSelfLinkOrResourceName,
52+
},
53+
}
54+
55+
type IapWebRegionForwardingRuleServiceIamUpdater struct {
56+
project string
57+
region string
58+
forwardingRuleRegionServiceName string
59+
d tpgresource.TerraformResourceData
60+
Config *transport_tpg.Config
61+
}
62+
63+
func IapWebRegionForwardingRuleServiceIamUpdaterProducer(d tpgresource.TerraformResourceData, config *transport_tpg.Config) (tpgiamresource.ResourceIamUpdater, error) {
64+
values := make(map[string]string)
65+
66+
project, _ := tpgresource.GetProject(d, config)
67+
if project != "" {
68+
if err := d.Set("project", project); err != nil {
69+
return nil, fmt.Errorf("Error setting project: %s", err)
70+
}
71+
}
72+
values["project"] = project
73+
region, _ := tpgresource.GetRegion(d, config)
74+
if region != "" {
75+
if err := d.Set("region", region); err != nil {
76+
return nil, fmt.Errorf("Error setting region: %s", err)
77+
}
78+
}
79+
values["region"] = region
80+
if v, ok := d.GetOk("forwarding_rule_region_service_name"); ok {
81+
values["forwarding_rule_region_service_name"] = v.(string)
82+
}
83+
84+
// We may have gotten either a long or short name, so attempt to parse long name if possible
85+
m, err := tpgresource.GetImportIdQualifiers([]string{"projects/(?P<project>[^/]+)/iap_web/forwarding_rule-(?P<region>[^/]+)/services/(?P<forwarding_rule_region_service_name>[^/]+)", "(?P<project>[^/]+)/(?P<region>[^/]+)/(?P<forwarding_rule_region_service_name>[^/]+)", "(?P<region>[^/]+)/(?P<forwarding_rule_region_service_name>[^/]+)", "(?P<forwarding_rule_region_service_name>[^/]+)"}, d, config, d.Get("forwarding_rule_region_service_name").(string))
86+
if err != nil {
87+
return nil, err
88+
}
89+
90+
for k, v := range m {
91+
values[k] = v
92+
}
93+
94+
u := &IapWebRegionForwardingRuleServiceIamUpdater{
95+
project: values["project"],
96+
region: values["region"],
97+
forwardingRuleRegionServiceName: values["forwarding_rule_region_service_name"],
98+
d: d,
99+
Config: config,
100+
}
101+
102+
if err := d.Set("project", u.project); err != nil {
103+
return nil, fmt.Errorf("Error setting project: %s", err)
104+
}
105+
if err := d.Set("region", u.region); err != nil {
106+
return nil, fmt.Errorf("Error setting region: %s", err)
107+
}
108+
if err := d.Set("forwarding_rule_region_service_name", u.GetResourceId()); err != nil {
109+
return nil, fmt.Errorf("Error setting forwarding_rule_region_service_name: %s", err)
110+
}
111+
112+
return u, nil
113+
}
114+
115+
func IapWebRegionForwardingRuleServiceIdParseFunc(d *schema.ResourceData, config *transport_tpg.Config) error {
116+
values := make(map[string]string)
117+
118+
project, _ := tpgresource.GetProject(d, config)
119+
if project != "" {
120+
values["project"] = project
121+
}
122+
123+
region, _ := tpgresource.GetRegion(d, config)
124+
if region != "" {
125+
values["region"] = region
126+
}
127+
128+
m, err := tpgresource.GetImportIdQualifiers([]string{"projects/(?P<project>[^/]+)/iap_web/forwarding_rule-(?P<region>[^/]+)/services/(?P<forwarding_rule_region_service_name>[^/]+)", "(?P<project>[^/]+)/(?P<region>[^/]+)/(?P<forwarding_rule_region_service_name>[^/]+)", "(?P<region>[^/]+)/(?P<forwarding_rule_region_service_name>[^/]+)", "(?P<forwarding_rule_region_service_name>[^/]+)"}, d, config, d.Id())
129+
if err != nil {
130+
return err
131+
}
132+
133+
for k, v := range m {
134+
values[k] = v
135+
}
136+
137+
u := &IapWebRegionForwardingRuleServiceIamUpdater{
138+
project: values["project"],
139+
region: values["region"],
140+
forwardingRuleRegionServiceName: values["forwarding_rule_region_service_name"],
141+
d: d,
142+
Config: config,
143+
}
144+
if err := d.Set("forwarding_rule_region_service_name", u.GetResourceId()); err != nil {
145+
return fmt.Errorf("Error setting forwarding_rule_region_service_name: %s", err)
146+
}
147+
d.SetId(u.GetResourceId())
148+
return nil
149+
}
150+
151+
func (u *IapWebRegionForwardingRuleServiceIamUpdater) GetResourceIamPolicy() (*cloudresourcemanager.Policy, error) {
152+
url, err := u.qualifyWebRegionForwardingRuleServiceUrl("getIamPolicy")
153+
if err != nil {
154+
return nil, err
155+
}
156+
157+
project, err := tpgresource.GetProject(u.d, u.Config)
158+
if err != nil {
159+
return nil, err
160+
}
161+
var obj map[string]interface{}
162+
obj = map[string]interface{}{
163+
"options": map[string]interface{}{
164+
"requestedPolicyVersion": tpgiamresource.IamPolicyVersion,
165+
},
166+
}
167+
168+
userAgent, err := tpgresource.GenerateUserAgentString(u.d, u.Config.UserAgent)
169+
if err != nil {
170+
return nil, err
171+
}
172+
173+
policy, err := transport_tpg.SendRequest(transport_tpg.SendRequestOptions{
174+
Config: u.Config,
175+
Method: "POST",
176+
Project: project,
177+
RawURL: url,
178+
UserAgent: userAgent,
179+
Body: obj,
180+
})
181+
if err != nil {
182+
return nil, errwrap.Wrapf(fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
183+
}
184+
185+
out := &cloudresourcemanager.Policy{}
186+
err = tpgresource.Convert(policy, out)
187+
if err != nil {
188+
return nil, errwrap.Wrapf("Cannot convert a policy to a resource manager policy: {{err}}", err)
189+
}
190+
191+
return out, nil
192+
}
193+
194+
func (u *IapWebRegionForwardingRuleServiceIamUpdater) SetResourceIamPolicy(policy *cloudresourcemanager.Policy) error {
195+
json, err := tpgresource.ConvertToMap(policy)
196+
if err != nil {
197+
return err
198+
}
199+
200+
obj := make(map[string]interface{})
201+
obj["policy"] = json
202+
203+
url, err := u.qualifyWebRegionForwardingRuleServiceUrl("setIamPolicy")
204+
if err != nil {
205+
return err
206+
}
207+
project, err := tpgresource.GetProject(u.d, u.Config)
208+
if err != nil {
209+
return err
210+
}
211+
212+
userAgent, err := tpgresource.GenerateUserAgentString(u.d, u.Config.UserAgent)
213+
if err != nil {
214+
return err
215+
}
216+
217+
_, err = transport_tpg.SendRequest(transport_tpg.SendRequestOptions{
218+
Config: u.Config,
219+
Method: "POST",
220+
Project: project,
221+
RawURL: url,
222+
UserAgent: userAgent,
223+
Body: obj,
224+
Timeout: u.d.Timeout(schema.TimeoutCreate),
225+
})
226+
if err != nil {
227+
return errwrap.Wrapf(fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
228+
}
229+
230+
return nil
231+
}
232+
233+
func (u *IapWebRegionForwardingRuleServiceIamUpdater) qualifyWebRegionForwardingRuleServiceUrl(methodIdentifier string) (string, error) {
234+
urlTemplate := fmt.Sprintf("{{IapBasePath}}%s:%s", fmt.Sprintf("projects/%s/iap_web/forwarding_rule-%s/services/%s", u.project, u.region, u.forwardingRuleRegionServiceName), methodIdentifier)
235+
url, err := tpgresource.ReplaceVars(u.d, u.Config, urlTemplate)
236+
if err != nil {
237+
return "", err
238+
}
239+
return url, nil
240+
}
241+
242+
func (u *IapWebRegionForwardingRuleServiceIamUpdater) GetResourceId() string {
243+
return fmt.Sprintf("projects/%s/iap_web/forwarding_rule-%s/services/%s", u.project, u.region, u.forwardingRuleRegionServiceName)
244+
}
245+
246+
func (u *IapWebRegionForwardingRuleServiceIamUpdater) GetMutexKey() string {
247+
return fmt.Sprintf("iam-iap-webregionforwardingruleservice-%s", u.GetResourceId())
248+
}
249+
250+
func (u *IapWebRegionForwardingRuleServiceIamUpdater) DescribeResource() string {
251+
return fmt.Sprintf("iap webregionforwardingruleservice %q", u.GetResourceId())
252+
}

0 commit comments

Comments
 (0)