Skip to content

Commit 2eb5fa0

Browse files
Add resource google_endpoints_service_consumers_iam (#5836) (#11372)
Signed-off-by: Modular Magician <[email protected]>
1 parent 8ce1a5b commit 2eb5fa0

6 files changed

+595
-2
lines changed

.changelog/5836.txt

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
```release-note:new-resource
2+
`google_endpoints_service_consumers_iam_binding`
3+
`google_endpoints_service_consumers_iam_member`
4+
`google_endpoints_service_consumers_iam_policy`
5+
```
+181
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,181 @@
1+
// ----------------------------------------------------------------------------
2+
//
3+
// *** AUTO GENERATED CODE *** Type: MMv1 ***
4+
//
5+
// ----------------------------------------------------------------------------
6+
//
7+
// This file is automatically generated by Magic Modules and manual
8+
// changes will be clobbered when the file is regenerated.
9+
//
10+
// Please read more about how to change this file in
11+
// .github/CONTRIBUTING.md.
12+
//
13+
// ----------------------------------------------------------------------------
14+
package google
15+
16+
import (
17+
"fmt"
18+
19+
"github.com/hashicorp/errwrap"
20+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
21+
"google.golang.org/api/cloudresourcemanager/v1"
22+
)
23+
24+
var ServiceManagementServiceConsumersIamSchema = map[string]*schema.Schema{
25+
"service_name": {
26+
Type: schema.TypeString,
27+
Required: true,
28+
ForceNew: true,
29+
},
30+
"consumer_project": {
31+
Type: schema.TypeString,
32+
Required: true,
33+
ForceNew: true,
34+
DiffSuppressFunc: compareSelfLinkOrResourceName,
35+
},
36+
}
37+
38+
type ServiceManagementServiceConsumersIamUpdater struct {
39+
serviceName string
40+
consumerProject string
41+
d TerraformResourceData
42+
Config *Config
43+
}
44+
45+
func ServiceManagementServiceConsumersIamUpdaterProducer(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
46+
values := make(map[string]string)
47+
48+
if v, ok := d.GetOk("service_name"); ok {
49+
values["service_name"] = v.(string)
50+
}
51+
52+
if v, ok := d.GetOk("consumer_project"); ok {
53+
values["consumer_project"] = v.(string)
54+
}
55+
56+
// We may have gotten either a long or short name, so attempt to parse long name if possible
57+
m, err := getImportIdQualifiers([]string{"services/(?P<service_name>[^/]+)/consumers/(?P<consumer_project>[^/]+)", "(?P<service_name>[^/]+)/(?P<consumer_project>[^/]+)", "(?P<consumer_project>[^/]+)"}, d, config, d.Get("consumer_project").(string))
58+
if err != nil {
59+
return nil, err
60+
}
61+
62+
for k, v := range m {
63+
values[k] = v
64+
}
65+
66+
u := &ServiceManagementServiceConsumersIamUpdater{
67+
serviceName: values["service_name"],
68+
consumerProject: values["consumer_project"],
69+
d: d,
70+
Config: config,
71+
}
72+
73+
if err := d.Set("service_name", u.serviceName); err != nil {
74+
return nil, fmt.Errorf("Error setting service_name: %s", err)
75+
}
76+
if err := d.Set("consumer_project", u.GetResourceId()); err != nil {
77+
return nil, fmt.Errorf("Error setting consumer_project: %s", err)
78+
}
79+
80+
return u, nil
81+
}
82+
83+
func ServiceManagementServiceConsumersIdParseFunc(d *schema.ResourceData, config *Config) error {
84+
values := make(map[string]string)
85+
86+
m, err := getImportIdQualifiers([]string{"services/(?P<service_name>[^/]+)/consumers/(?P<consumer_project>[^/]+)", "(?P<service_name>[^/]+)/(?P<consumer_project>[^/]+)", "(?P<consumer_project>[^/]+)"}, d, config, d.Id())
87+
if err != nil {
88+
return err
89+
}
90+
91+
for k, v := range m {
92+
values[k] = v
93+
}
94+
95+
u := &ServiceManagementServiceConsumersIamUpdater{
96+
serviceName: values["service_name"],
97+
consumerProject: values["consumer_project"],
98+
d: d,
99+
Config: config,
100+
}
101+
if err := d.Set("consumer_project", u.GetResourceId()); err != nil {
102+
return fmt.Errorf("Error setting consumer_project: %s", err)
103+
}
104+
d.SetId(u.GetResourceId())
105+
return nil
106+
}
107+
108+
func (u *ServiceManagementServiceConsumersIamUpdater) GetResourceIamPolicy() (*cloudresourcemanager.Policy, error) {
109+
url, err := u.qualifyServiceConsumersUrl("getIamPolicy")
110+
if err != nil {
111+
return nil, err
112+
}
113+
114+
var obj map[string]interface{}
115+
116+
userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
117+
if err != nil {
118+
return nil, err
119+
}
120+
121+
policy, err := sendRequest(u.Config, "POST", "", url, userAgent, obj)
122+
if err != nil {
123+
return nil, errwrap.Wrapf(fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
124+
}
125+
126+
out := &cloudresourcemanager.Policy{}
127+
err = Convert(policy, out)
128+
if err != nil {
129+
return nil, errwrap.Wrapf("Cannot convert a policy to a resource manager policy: {{err}}", err)
130+
}
131+
132+
return out, nil
133+
}
134+
135+
func (u *ServiceManagementServiceConsumersIamUpdater) SetResourceIamPolicy(policy *cloudresourcemanager.Policy) error {
136+
json, err := ConvertToMap(policy)
137+
if err != nil {
138+
return err
139+
}
140+
141+
obj := make(map[string]interface{})
142+
obj["policy"] = json
143+
144+
url, err := u.qualifyServiceConsumersUrl("setIamPolicy")
145+
if err != nil {
146+
return err
147+
}
148+
149+
userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
150+
if err != nil {
151+
return err
152+
}
153+
154+
_, err = sendRequestWithTimeout(u.Config, "POST", "", url, userAgent, obj, u.d.Timeout(schema.TimeoutCreate))
155+
if err != nil {
156+
return errwrap.Wrapf(fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
157+
}
158+
159+
return nil
160+
}
161+
162+
func (u *ServiceManagementServiceConsumersIamUpdater) qualifyServiceConsumersUrl(methodIdentifier string) (string, error) {
163+
urlTemplate := fmt.Sprintf("{{ServiceManagementBasePath}}%s:%s", fmt.Sprintf("services/%s/consumers/%s", u.serviceName, u.consumerProject), methodIdentifier)
164+
url, err := replaceVars(u.d, u.Config, urlTemplate)
165+
if err != nil {
166+
return "", err
167+
}
168+
return url, nil
169+
}
170+
171+
func (u *ServiceManagementServiceConsumersIamUpdater) GetResourceId() string {
172+
return fmt.Sprintf("services/%s/consumers/%s", u.serviceName, u.consumerProject)
173+
}
174+
175+
func (u *ServiceManagementServiceConsumersIamUpdater) GetMutexKey() string {
176+
return fmt.Sprintf("iam-servicemanagement-serviceconsumers-%s", u.GetResourceId())
177+
}
178+
179+
func (u *ServiceManagementServiceConsumersIamUpdater) DescribeResource() string {
180+
return fmt.Sprintf("servicemanagement serviceconsumers %q", u.GetResourceId())
181+
}

0 commit comments

Comments
 (0)