Skip to content

Commit 6d98ceb

Browse files
authored
fix: support filter (#2390)
* fix: support filter * fix: support groupby filter * fix: fmt * feat: add 2390 changelog
1 parent 4f6196b commit 6d98ceb

File tree

9 files changed

+599
-234
lines changed

9 files changed

+599
-234
lines changed

.changelog/2390.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
resource/tencentcloud_monitor_alarm_policy: Support `filter`, `group_by` field.
3+
```

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ require (
6767
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live v1.0.777
6868
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb v1.0.672
6969
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb v1.0.651
70-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.764
70+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.815
7171
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps v1.0.777
7272
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/organization v1.0.770
7373
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/postgres v1.0.814

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -971,6 +971,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb v1.0.651 h1:Ohb
971971
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb v1.0.651/go.mod h1:HLqsSgUnwgkE+XecQajekinjz1B7S+1U1J66puH4jpQ=
972972
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.764 h1:Od3RTVQMQzeSEwToxUCPzZMF+5TMVH30R2ZLO9h0B8M=
973973
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.764/go.mod h1:K+Jg+65mur5Wq4qFzLcmDfMZdIk95qgarQV+BtarJp4=
974+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.815 h1:wsTtihNYIpnCz+R01imMGrEfahf+J/wF4bivxnUwr8w=
975+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/monitor v1.0.815/go.mod h1:0nU7o/VOMYZ1/xjIsFVivQ3RZkdDeGTdezSlyjyG7GI=
974976
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps v1.0.777 h1:SoH/KkqkEUw8iDmQDZCw5Saf319Ceyt3v8Vqodo8DiY=
975977
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mps v1.0.777/go.mod h1:sBmwqD3GkczHFiArdYpHPp9QriIbzNtO99DueYVyGwE=
976978
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/oceanus v1.0.810 h1:P9eQ4I/cFcLnNGH8tjZsFVNTpJ4iizI5RBEkNfyKbDg=

tencentcloud/resource_tc_monitor_alarm_policy.go

Lines changed: 93 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,38 @@ func resourceTencentCloudMonitorAlarmPolicy() *schema.Resource {
232232
},
233233
},
234234
},
235+
236+
"group_by": {
237+
Type: schema.TypeSet,
238+
Optional: true,
239+
Description: "Aggregate dimension list, specify which dimension keys to use for group by.",
240+
Elem: &schema.Schema{
241+
Type: schema.TypeString,
242+
},
243+
},
244+
245+
"filter": {
246+
Type: schema.TypeList,
247+
Optional: true,
248+
MaxItems: 1,
249+
Description: "Global filters.",
250+
Elem: &schema.Resource{
251+
Schema: map[string]*schema.Schema{
252+
"type": {
253+
Type: schema.TypeString,
254+
Required: true,
255+
Description: "Filter condition type. Valid values: DIMENSION (uses dimensions for filtering).",
256+
},
257+
"dimensions": {
258+
Type: schema.TypeString,
259+
Optional: true,
260+
Description: "JSON string generated by serializing the AlarmPolicyDimension two-dimensional array.",
261+
DiffSuppressFunc: helper.DiffSupressJSON,
262+
},
263+
},
264+
},
265+
},
266+
235267
// compute
236268
"create_time": {
237269
Type: schema.TypeString,
@@ -417,6 +449,25 @@ func resourceTencentMonitorAlarmPolicyCreate(d *schema.ResourceData, meta interf
417449
request.TriggerTasks = tasks
418450
}
419451

452+
if v, ok := d.GetOk("group_by"); ok {
453+
groupBySet := v.(*schema.Set).List()
454+
for i := range groupBySet {
455+
groupBy := groupBySet[i].(string)
456+
request.GroupBy = append(request.GroupBy, &groupBy)
457+
}
458+
}
459+
460+
if dMap, ok := helper.InterfacesHeadMap(d, "filter"); ok {
461+
alarmPolicyFilter := monitor.AlarmPolicyFilter{}
462+
if v, ok := dMap["type"]; ok {
463+
alarmPolicyFilter.Type = helper.String(v.(string))
464+
}
465+
if v, ok := dMap["dimensions"]; ok {
466+
alarmPolicyFilter.Dimensions = helper.String(v.(string))
467+
}
468+
request.Filter = &alarmPolicyFilter
469+
}
470+
420471
var groupId *string
421472
var policyId *string
422473
if err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
@@ -520,6 +571,28 @@ func resourceTencentMonitorAlarmPolicyRead(d *schema.ResourceData, meta interfac
520571
d.Set("project_id", policy.ProjectId),
521572
)
522573

574+
if policy.GroupBy != nil {
575+
groupBy := []string{}
576+
for _, v := range policy.GroupBy {
577+
groupBy = append(groupBy, *v.Id)
578+
}
579+
_ = d.Set("group_by", groupBy)
580+
}
581+
582+
if policy.Filter != nil {
583+
filterMap := map[string]interface{}{}
584+
585+
if policy.Filter.Type != nil {
586+
filterMap["type"] = policy.Filter.Type
587+
}
588+
589+
if policy.Filter.Dimensions != nil {
590+
filterMap["dimensions"] = policy.Filter.Dimensions
591+
}
592+
593+
_ = d.Set("filter", []interface{}{filterMap})
594+
}
595+
523596
//nolint:misspell
524597
if policy.ConditionTemplateId != nil && *policy.ConditionTemplateId != "" {
525598
id, err := strconv.ParseInt(*policy.ConditionTemplateId, 10, 64)
@@ -707,7 +780,7 @@ func resourceTencentMonitorAlarmPolicyUpdate(d *schema.ResourceData, meta interf
707780
}
708781
}
709782

710-
if d.HasChange("conditions") || d.HasChange("event_conditions") {
783+
if d.HasChange("conditions") || d.HasChange("event_conditions") || d.HasChange("group_by") || d.HasChange("filter") {
711784
request := monitor.NewModifyAlarmPolicyConditionRequest()
712785
request.Module = helper.String("monitor")
713786
request.PolicyId = helper.String(d.Id())
@@ -829,6 +902,25 @@ func resourceTencentMonitorAlarmPolicyUpdate(d *schema.ResourceData, meta interf
829902
request.EventCondition = &eventCondition
830903
}
831904

905+
if v, ok := d.GetOk("group_by"); ok {
906+
groupBySet := v.(*schema.Set).List()
907+
for i := range groupBySet {
908+
groupBy := groupBySet[i].(string)
909+
request.GroupBy = append(request.GroupBy, &groupBy)
910+
}
911+
}
912+
913+
if dMap, ok := helper.InterfacesHeadMap(d, "filter"); ok {
914+
alarmPolicyFilter := monitor.AlarmPolicyFilter{}
915+
if v, ok := dMap["type"]; ok {
916+
alarmPolicyFilter.Type = helper.String(v.(string))
917+
}
918+
if v, ok := dMap["dimensions"]; ok {
919+
alarmPolicyFilter.Dimensions = helper.String(v.(string))
920+
}
921+
request.Filter = &alarmPolicyFilter
922+
}
923+
832924
if err := resource.Retry(readRetryTimeout, func() *resource.RetryError {
833925
ratelimit.Check(request.GetAction())
834926
if _, err := monitorService.client.UseMonitorClient().ModifyAlarmPolicyCondition(request); err != nil {

0 commit comments

Comments
 (0)