Skip to content

Commit 5e8100c

Browse files
author
hellertang
authored
resource tencentcloud_monitor_policy_binding_object support import (#749)
1 parent 8b6edcf commit 5e8100c

File tree

2 files changed

+32
-59
lines changed

2 files changed

+32
-59
lines changed

tencentcloud/resource_tc_monitor_policy_binding_object.go

Lines changed: 24 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,14 @@ resource "tencentcloud_monitor_policy_binding_object" "binding" {
5151
dimensions_json = "{\"unInstanceId\":\"${data.tencentcloud_instances.instances.instance_list[0].instance_id}\"}"
5252
}
5353
}
54+
55+
```
56+
Import
57+
58+
Monitor Policy Binding Object can be imported, e.g.
59+
60+
```
61+
$ terraform import tencentcloud_monitor_policy_binding_object.binding policyId
5462
```
5563
5664
*/
@@ -75,6 +83,9 @@ func resourceTencentMonitorPolicyBindingObject() *schema.Resource {
7583
Create: resourceTencentMonitorPolicyBindingObjectCreate,
7684
Read: resourceTencentMonitorPolicyBindingObjectRead,
7785
Delete: resourceTencentMonitorPolicyBindingObjectDelete,
86+
Importer: &schema.ResourceImporter{
87+
State: schema.ImportStatePassthrough,
88+
},
7889
Schema: map[string]*schema.Schema{
7990
"policy_id": {
8091
Type: schema.TypeString,
@@ -169,32 +180,9 @@ func resourceTencentMonitorPolicyBindingObjectCreate(d *schema.ResourceData, met
169180
return err
170181
}
171182

172-
d.SetId(helper.DataResourceIdsHash(idSeeds))
183+
d.SetId(policyId)
173184
time.Sleep(3 * time.Second)
174185

175-
//check if binding success
176-
//objects, err := monitorService.DescribeBindingAlarmPolicyObjectList(ctx, policyId)
177-
//
178-
//if err != nil {
179-
// return err
180-
//}
181-
//
182-
//successDimensionsJsonMap := make(map[string]bool)
183-
//bindingFails := make([]string, 0, len(request.Dimensions))
184-
//for _, v := range objects {
185-
// successDimensionsJsonMap[*v.Dimensions] = true
186-
//}
187-
//for _, v := range request.Dimensions {
188-
// if !successDimensionsJsonMap[*v.Dimensions] {
189-
// bindingFails = append(bindingFails, *v.Dimensions)
190-
// }
191-
//}
192-
//
193-
//if len(bindingFails) > 0 {
194-
// return fmt.Errorf("bind objects to policy has partial failure,Please check if it is an instance of this region `%s`,[%s]",
195-
// monitorService.client.Region, helper.SliceFieldSerialize(bindingFails))
196-
//}
197-
198186
return resourceTencentMonitorPolicyBindingObjectRead(d, meta)
199187
}
200188

@@ -205,9 +193,11 @@ func resourceTencentMonitorPolicyBindingObjectRead(d *schema.ResourceData, meta
205193
logId = getLogId(contextNil)
206194
ctx = context.WithValue(context.TODO(), logIdKey, logId)
207195
monitorService = MonitorService{client: meta.(*TencentCloudClient).apiV3Conn}
208-
policyId = d.Get("policy_id").(string)
196+
policyId = d.Id()
209197
)
210198

199+
d.Set("policy_id", policyId)
200+
211201
info, err := monitorService.DescribeAlarmPolicyById(ctx, policyId)
212202
if err != nil {
213203
return err
@@ -222,35 +212,15 @@ func resourceTencentMonitorPolicyBindingObjectRead(d *schema.ResourceData, meta
222212
return err
223213
}
224214

225-
getUniqueId := func(dimensionsJson string) (has bool, uniqueId string) {
226-
for _, item := range objects {
227-
if *item.Dimensions == dimensionsJson {
228-
uniqueId = *item.UniqueId
229-
has = true
230-
return
231-
}
232-
}
233-
return
234-
}
235-
236-
dimensions := d.Get("dimensions").(*schema.Set).List()
237-
newDimensions := make([]interface{}, 0, len(dimensions))
215+
newDimensions := make([]interface{}, 0, 10)
238216

239-
for _, v := range dimensions {
240-
m := v.(map[string]interface{})
241-
var dimensionsJson = m["dimensions_json"].(string)
242-
var has, uniqueId = getUniqueId(dimensionsJson)
243-
if has {
244-
newDimensions = append(newDimensions, map[string]interface{}{
245-
"dimensions_json": dimensionsJson,
246-
"unique_id": uniqueId,
247-
})
248-
}
249-
}
250-
251-
if len(newDimensions) == 0 {
252-
d.SetId("")
253-
return nil
217+
for _, item := range objects {
218+
dimensionsJson := item.Dimensions
219+
uniqueId := item.UniqueId
220+
newDimensions = append(newDimensions, map[string]interface{}{
221+
"dimensions_json": dimensionsJson,
222+
"unique_id": uniqueId,
223+
})
254224
}
255225

256226
return d.Set("dimensions", newDimensions)
@@ -263,7 +233,7 @@ func resourceTencentMonitorPolicyBindingObjectDelete(d *schema.ResourceData, met
263233
logId = getLogId(contextNil)
264234
ctx = context.WithValue(context.TODO(), logIdKey, logId)
265235
monitorService = MonitorService{client: meta.(*TencentCloudClient).apiV3Conn}
266-
policyId = d.Get("policy_id").(string)
236+
policyId = d.Id()
267237
)
268238

269239
info, err := monitorService.DescribeAlarmPolicyById(ctx, policyId)
@@ -301,11 +271,6 @@ func resourceTencentMonitorPolicyBindingObjectDelete(d *schema.ResourceData, met
301271
}
302272
}
303273

304-
if len(uniqueIds) == 0 {
305-
d.SetId("")
306-
return nil
307-
}
308-
309274
var (
310275
request = monitor.NewUnBindingPolicyObjectRequest()
311276
)

website/docs/r/monitor_policy_binding_object.html.markdown

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,3 +82,11 @@ In addition to all arguments above, the following attributes are exported:
8282

8383

8484

85+
## Import
86+
87+
Monitor Policy Binding Object can be imported, e.g.
88+
89+
```
90+
$ terraform import tencentcloud_monitor_policy_binding_object.binding policyId
91+
```
92+

0 commit comments

Comments
 (0)