@@ -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