Skip to content

Commit 06bbb15

Browse files
Eventarc update (#4611) (#3149)
* Update eventarc trigger yaml, markdown to allow setting transport * Update test, add handwritten utils * Update handwritten * Updating eventarc test * Update markdown file * Updating trigger * Update trigger, seems to work * Add GA * Move tests to successful region, * Add more updates * Markdown * Markdown * Update from master' * Move utils back for conversion lib * Fix compile Signed-off-by: Modular Magician <[email protected]>
1 parent ca67a3e commit 06bbb15

File tree

7 files changed

+380
-89
lines changed

7 files changed

+380
-89
lines changed

.changelog/4611.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
```release-note:enhancement
2+
eventarc: added `transport.pubsub.topic` to `google_eventarc_trigger` (beta only)
3+
```
4+
```release-note:new-resource
5+
google_eventarc_trigger (GA only)
6+
```

google-beta/resource_dataproc_cluster_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@ import (
1313
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
1414
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
1515

16-
dataproc "google.golang.org/api/dataproc/v1beta2"
1716
"google.golang.org/api/googleapi"
17+
18+
dataproc "google.golang.org/api/dataproc/v1beta2"
1819
)
1920

2021
func TestDataprocExtractInitTimeout(t *testing.T) {

google-beta/resource_eventarc_trigger.go

Lines changed: 71 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,20 @@ func resourceEventarcTrigger() *schema.Resource {
7373
Description: ``,
7474
},
7575

76-
"project": {
77-
Type: schema.TypeString,
78-
Computed: true,
76+
"labels": {
77+
Type: schema.TypeMap,
7978
Optional: true,
80-
ForceNew: true,
8179
Description: ``,
80+
Elem: &schema.Schema{Type: schema.TypeString},
81+
},
82+
83+
"project": {
84+
Type: schema.TypeString,
85+
Computed: true,
86+
Optional: true,
87+
ForceNew: true,
88+
DiffSuppressFunc: compareSelfLinkOrResourceName,
89+
Description: ``,
8290
},
8391

8492
"service_account": {
@@ -88,23 +96,26 @@ func resourceEventarcTrigger() *schema.Resource {
8896
Description: ``,
8997
},
9098

91-
"create_time": {
92-
Type: schema.TypeString,
99+
"transport": {
100+
Type: schema.TypeList,
93101
Computed: true,
102+
Optional: true,
103+
ForceNew: true,
94104
Description: ``,
105+
MaxItems: 1,
106+
Elem: EventarcTriggerTransportSchema(),
95107
},
96108

97-
"etag": {
109+
"create_time": {
98110
Type: schema.TypeString,
99111
Computed: true,
100112
Description: ``,
101113
},
102114

103-
"transport": {
104-
Type: schema.TypeList,
115+
"etag": {
116+
Type: schema.TypeString,
105117
Computed: true,
106118
Description: ``,
107-
Elem: EventarcTriggerTransportSchema(),
108119
},
109120

110121
"update_time": {
@@ -122,7 +133,6 @@ func EventarcTriggerDestinationSchema() *schema.Resource {
122133
"cloud_run_service": {
123134
Type: schema.TypeList,
124135
Optional: true,
125-
ForceNew: true,
126136
Description: ``,
127137
MaxItems: 1,
128138
Elem: EventarcTriggerDestinationCloudRunServiceSchema(),
@@ -137,23 +147,20 @@ func EventarcTriggerDestinationCloudRunServiceSchema() *schema.Resource {
137147
"service": {
138148
Type: schema.TypeString,
139149
Required: true,
140-
ForceNew: true,
141150
DiffSuppressFunc: compareSelfLinkOrResourceName,
142151
Description: ``,
143152
},
144153

145154
"path": {
146155
Type: schema.TypeString,
147156
Optional: true,
148-
ForceNew: true,
149157
Description: ``,
150158
},
151159

152160
"region": {
153161
Type: schema.TypeString,
154162
Computed: true,
155163
Optional: true,
156-
ForceNew: true,
157164
Description: ``,
158165
},
159166
},
@@ -166,14 +173,12 @@ func EventarcTriggerMatchingCriteriaSchema() *schema.Resource {
166173
"attribute": {
167174
Type: schema.TypeString,
168175
Required: true,
169-
ForceNew: true,
170176
Description: ``,
171177
},
172178

173179
"value": {
174180
Type: schema.TypeString,
175181
Required: true,
176-
ForceNew: true,
177182
Description: ``,
178183
},
179184
},
@@ -185,8 +190,10 @@ func EventarcTriggerTransportSchema() *schema.Resource {
185190
Schema: map[string]*schema.Schema{
186191
"pubsub": {
187192
Type: schema.TypeList,
188-
Computed: true,
193+
Optional: true,
194+
ForceNew: true,
189195
Description: ``,
196+
MaxItems: 1,
190197
Elem: EventarcTriggerTransportPubsubSchema(),
191198
},
192199
},
@@ -196,13 +203,14 @@ func EventarcTriggerTransportSchema() *schema.Resource {
196203
func EventarcTriggerTransportPubsubSchema() *schema.Resource {
197204
return &schema.Resource{
198205
Schema: map[string]*schema.Schema{
199-
"subscription": {
206+
"topic": {
200207
Type: schema.TypeString,
201-
Computed: true,
208+
Optional: true,
209+
ForceNew: true,
202210
Description: ``,
203211
},
204212

205-
"topic": {
213+
"subscription": {
206214
Type: schema.TypeString,
207215
Computed: true,
208216
Description: ``,
@@ -223,8 +231,10 @@ func resourceEventarcTriggerCreate(d *schema.ResourceData, meta interface{}) err
223231
Location: dcl.StringOrNil(d.Get("location").(string)),
224232
MatchingCriteria: expandEventarcTriggerMatchingCriteriaArray(d.Get("matching_criteria")),
225233
Name: dcl.StringOrNil(d.Get("name").(string)),
234+
Labels: checkStringMap(d.Get("labels")),
226235
Project: dcl.String(project),
227236
ServiceAccount: dcl.StringOrNil(d.Get("service_account").(string)),
237+
Transport: expandEventarcTriggerTransport(d.Get("transport")),
228238
}
229239

230240
id, err := replaceVarsForId(d, config, "projects/{{project}}/locations/{{location}}/triggers/{{name}}")
@@ -257,8 +267,10 @@ func resourceEventarcTriggerRead(d *schema.ResourceData, meta interface{}) error
257267
Location: dcl.StringOrNil(d.Get("location").(string)),
258268
MatchingCriteria: expandEventarcTriggerMatchingCriteriaArray(d.Get("matching_criteria")),
259269
Name: dcl.StringOrNil(d.Get("name").(string)),
270+
Labels: checkStringMap(d.Get("labels")),
260271
Project: dcl.String(project),
261272
ServiceAccount: dcl.StringOrNil(d.Get("service_account").(string)),
273+
Transport: expandEventarcTriggerTransport(d.Get("transport")),
262274
}
263275

264276
res, err := config.clientEventarcDCL.GetTrigger(context.Background(), obj)
@@ -280,21 +292,24 @@ func resourceEventarcTriggerRead(d *schema.ResourceData, meta interface{}) error
280292
if err = d.Set("name", res.Name); err != nil {
281293
return fmt.Errorf("error setting name in state: %s", err)
282294
}
295+
if err = d.Set("labels", res.Labels); err != nil {
296+
return fmt.Errorf("error setting labels in state: %s", err)
297+
}
283298
if err = d.Set("project", res.Project); err != nil {
284299
return fmt.Errorf("error setting project in state: %s", err)
285300
}
286301
if err = d.Set("service_account", res.ServiceAccount); err != nil {
287302
return fmt.Errorf("error setting service_account in state: %s", err)
288303
}
304+
if err = d.Set("transport", flattenEventarcTriggerTransport(res.Transport)); err != nil {
305+
return fmt.Errorf("error setting transport in state: %s", err)
306+
}
289307
if err = d.Set("create_time", res.CreateTime); err != nil {
290308
return fmt.Errorf("error setting create_time in state: %s", err)
291309
}
292310
if err = d.Set("etag", res.Etag); err != nil {
293311
return fmt.Errorf("error setting etag in state: %s", err)
294312
}
295-
if err = d.Set("transport", flattenEventarcTriggerTransport(res.Transport)); err != nil {
296-
return fmt.Errorf("error setting transport in state: %s", err)
297-
}
298313
if err = d.Set("update_time", res.UpdateTime); err != nil {
299314
return fmt.Errorf("error setting update_time in state: %s", err)
300315
}
@@ -313,8 +328,10 @@ func resourceEventarcTriggerUpdate(d *schema.ResourceData, meta interface{}) err
313328
Location: dcl.StringOrNil(d.Get("location").(string)),
314329
MatchingCriteria: expandEventarcTriggerMatchingCriteriaArray(d.Get("matching_criteria")),
315330
Name: dcl.StringOrNil(d.Get("name").(string)),
331+
Labels: checkStringMap(d.Get("labels")),
316332
Project: dcl.String(project),
317333
ServiceAccount: dcl.StringOrNil(d.Get("service_account").(string)),
334+
Transport: expandEventarcTriggerTransport(d.Get("transport")),
318335
}
319336
directive := UpdateDirective
320337
res, err := config.clientEventarcDCL.ApplyTrigger(context.Background(), obj, directive...)
@@ -339,8 +356,10 @@ func resourceEventarcTriggerDelete(d *schema.ResourceData, meta interface{}) err
339356
Location: dcl.StringOrNil(d.Get("location").(string)),
340357
MatchingCriteria: expandEventarcTriggerMatchingCriteriaArray(d.Get("matching_criteria")),
341358
Name: dcl.StringOrNil(d.Get("name").(string)),
359+
Labels: checkStringMap(d.Get("labels")),
342360
Project: dcl.String(project),
343361
ServiceAccount: dcl.StringOrNil(d.Get("service_account").(string)),
362+
Transport: expandEventarcTriggerTransport(d.Get("transport")),
344363
}
345364

346365
log.Printf("[DEBUG] Deleting Trigger %q", d.Id())
@@ -487,6 +506,20 @@ func flattenEventarcTriggerMatchingCriteria(obj *eventarc.TriggerMatchingCriteri
487506

488507
}
489508

509+
func expandEventarcTriggerTransport(o interface{}) *eventarc.TriggerTransport {
510+
if o == nil {
511+
return nil
512+
}
513+
objArr := o.([]interface{})
514+
if len(objArr) == 0 {
515+
return nil
516+
}
517+
obj := objArr[0].(map[string]interface{})
518+
return &eventarc.TriggerTransport{
519+
Pubsub: expandEventarcTriggerTransportPubsub(obj["pubsub"]),
520+
}
521+
}
522+
490523
func flattenEventarcTriggerTransport(obj *eventarc.TriggerTransport) interface{} {
491524
if obj == nil {
492525
return nil
@@ -499,13 +532,27 @@ func flattenEventarcTriggerTransport(obj *eventarc.TriggerTransport) interface{}
499532

500533
}
501534

535+
func expandEventarcTriggerTransportPubsub(o interface{}) *eventarc.TriggerTransportPubsub {
536+
if o == nil {
537+
return nil
538+
}
539+
objArr := o.([]interface{})
540+
if len(objArr) == 0 {
541+
return nil
542+
}
543+
obj := objArr[0].(map[string]interface{})
544+
return &eventarc.TriggerTransportPubsub{
545+
Topic: dcl.StringOrNil(obj["topic"].(string)),
546+
}
547+
}
548+
502549
func flattenEventarcTriggerTransportPubsub(obj *eventarc.TriggerTransportPubsub) interface{} {
503550
if obj == nil {
504551
return nil
505552
}
506553
transformed := map[string]interface{}{
507-
"subscription": obj.Subscription,
508554
"topic": obj.Topic,
555+
"subscription": obj.Subscription,
509556
}
510557

511558
return []interface{}{transformed}

0 commit comments

Comments
 (0)