Skip to content

Commit 6241b93

Browse files
gitmknanonymous
andauthored
fix: modify grafana (#1971)
* fix: modify grafana * feat: add changelog * fix: add is_distroy * fix: modify test --------- Co-authored-by: anonymous <anonymous@mail.org>
1 parent 8e506d1 commit 6241b93

18 files changed

+507
-36
lines changed

.changelog/1971.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
```release-note:enhancement
2+
resource/tencentcloud_monitor_alarm_notice: Support return field `amp_consumer_id`
3+
```
4+
5+
```release-note:enhancement
6+
resource/tencentcloud_monitor_grafana_instance: Support for cleaning up deactivated instances
7+
```
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
resource "tencentcloud_vpc" "vpc" {
2+
cidr_block = "10.0.0.0/16"
3+
name = "tf_monitor_vpc"
4+
}
5+
6+
resource "tencentcloud_subnet" "subnet" {
7+
vpc_id = tencentcloud_vpc.vpc.id
8+
availability_zone = var.availability_zone
9+
name = "tf_monitor_subnet"
10+
cidr_block = "10.0.1.0/24"
11+
}
12+
13+
resource "tencentcloud_monitor_grafana_instance" "foo" {
14+
instance_name = "test-grafana"
15+
vpc_id = tencentcloud_vpc.vpc.id
16+
subnet_ids = [tencentcloud_subnet.subnet.id]
17+
grafana_init_password = "1234567890"
18+
enable_internet = false
19+
20+
tags = {
21+
"createdBy" = "test"
22+
}
23+
}
24+
25+
resource "tencentcloud_monitor_grafana_integration" "grafanaIntegration" {
26+
instance_id = tencentcloud_monitor_grafana_instance.foo.id
27+
kind = "tencentcloud-monitor-app"
28+
content = "{\"kind\":\"tencentcloud-monitor-app\",\"spec\":{\"dataSourceSpec\":{\"authProvider\":{\"__anyOf\":\"使用密钥\",\"useRole\":true,\"secretId\":\"arunma@tencent.com\",\"secretKey\":\"12345678\"},\"name\":\"uint-test\"},\"grafanaSpec\":{\"organizationIds\":[]}}}"
29+
}
30+
31+
resource "tencentcloud_monitor_alarm_notice" "foo" {
32+
name = "tf_alarm_notice"
33+
notice_type = "ALL"
34+
notice_language = "zh-CN"
35+
36+
user_notices {
37+
receiver_type = "USER"
38+
start_time = 0
39+
end_time = 1
40+
notice_way = ["SMS","EMAIL"]
41+
user_ids = [10001]
42+
group_ids = []
43+
phone_order = [10001]
44+
phone_circle_times = 2
45+
phone_circle_interval = 50
46+
phone_inner_interval = 60
47+
need_phone_arrive_notice = 1
48+
phone_call_type = "CIRCLE"
49+
weekday =[1,2,3,4,5,6,7]
50+
}
51+
52+
url_notices {
53+
url = "https://www.mytest.com/validate"
54+
end_time = 0
55+
start_time = 1
56+
weekday = [1,2,3,4,5,6,7]
57+
}
58+
}
59+
60+
resource "tencentcloud_monitor_grafana_notification_channel" "grafanaNotificationChannel" {
61+
instance_id = tencentcloud_monitor_grafana_instance.foo.id
62+
channel_name = "tf-channel"
63+
org_id = 1
64+
receivers = [tencentcloud_monitor_alarm_notice.foo.amp_consumer_id]
65+
extra_org_ids = ["1"]
66+
}
67+
68+
resource "tencentcloud_monitor_grafana_plugin" "grafanaPlugin" {
69+
instance_id = tencentcloud_monitor_grafana_instance.foo.id
70+
plugin_id = "grafana-piechart-panel"
71+
version = "1.6.2"
72+
}
73+
74+
resource "tencentcloud_monitor_grafana_sso_account" "ssoAccount" {
75+
instance_id = tencentcloud_monitor_grafana_instance.foo.id
76+
user_id = var.user_id
77+
notes = "desc12222"
78+
role {
79+
organization = "Main Org."
80+
role = "Admin"
81+
}
82+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
variable "availability_zone" {
2+
default = "ap-guangzhou-6"
3+
}
4+
5+
variable "user_id" {
6+
default = "100027012454"
7+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
terraform {
2+
required_version = ">= 0.12"
3+
}

tencentcloud/resource_tc_monitor_alarm_notice.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,11 @@ func resourceTencentCloudMonitorAlarmNotice() *schema.Resource {
235235
Computed: true,
236236
Description: "Whether it is the system default notification template 0=No 1=Yes.",
237237
},
238+
"amp_consumer_id": {
239+
Type: schema.TypeString,
240+
Computed: true,
241+
Description: "Amp consumer ID.",
242+
},
238243
"policy_ids": {
239244
Type: schema.TypeSet,
240245
Computed: true,
@@ -441,6 +446,9 @@ func resourceTencentMonitorAlarmNoticeRead(d *schema.ResourceData, meta interfac
441446
if err = d.Set("policy_ids", noticesItem.PolicyIds); err != nil {
442447
return err
443448
}
449+
if err = d.Set("amp_consumer_id", noticesItem.AMPConsumerId); err != nil {
450+
return err
451+
}
444452

445453
userNoticesItems := make([]interface{}, 0, 100)
446454
for _, userNotices := range noticesItem.UserNotices {

tencentcloud/resource_tc_monitor_grafana_instance.go

Lines changed: 49 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,29 @@ Provides a resource to create a monitor grafanaInstance
44
Example Usage
55
66
```hcl
7-
resource "tencentcloud_monitor_grafana_instance" "grafanaInstance" {
7+
variable "availability_zone" {
8+
default = "ap-guangzhou-6"
9+
}
10+
11+
resource "tencentcloud_vpc" "vpc" {
12+
cidr_block = "10.0.0.0/16"
13+
name = "tf_monitor_vpc"
14+
}
15+
16+
resource "tencentcloud_subnet" "subnet" {
17+
vpc_id = tencentcloud_vpc.vpc.id
18+
availability_zone = var.availability_zone
19+
name = "tf_monitor_subnet"
20+
cidr_block = "10.0.1.0/24"
21+
}
22+
23+
resource "tencentcloud_monitor_grafana_instance" "foo" {
824
instance_name = "test-grafana"
9-
vpc_id = "vpc-2hfyray3"
10-
subnet_ids = ["subnet-rdkj0agk"]
25+
vpc_id = tencentcloud_vpc.vpc.id
26+
subnet_ids = [tencentcloud_subnet.subnet.id]
1127
grafana_init_password = "1234567890"
12-
enable_internet = false
28+
enable_internet = false
29+
is_distroy = true
1330
1431
tags = {
1532
"createdBy" = "test"
@@ -21,7 +38,7 @@ Import
2138
2239
monitor grafanaInstance can be imported using the id, e.g.
2340
```
24-
$ terraform import tencentcloud_monitor_grafana_instance.grafanaInstance grafanaInstance_id
41+
$ terraform import tencentcloud_monitor_grafana_instance.foo grafanaInstance_id
2542
```
2643
*/
2744
package tencentcloud
@@ -96,6 +113,12 @@ func resourceTencentCloudMonitorGrafanaInstance() *schema.Resource {
96113
Description: "Control whether grafana could be accessed by internet.",
97114
},
98115

116+
"is_distroy": {
117+
Type: schema.TypeBool,
118+
Optional: true,
119+
Description: "Whether to clean up completely, the default is false.",
120+
},
121+
99122
"instance_status": {
100123
Type: schema.TypeInt,
101124
Computed: true,
@@ -380,5 +403,26 @@ func resourceTencentCloudMonitorGrafanaInstanceDelete(d *schema.ResourceData, me
380403
if err != nil {
381404
return err
382405
}
406+
407+
if v, ok := d.GetOk("is_distroy"); ok && v.(bool) {
408+
if err := service.CleanGrafanaInstanceById(ctx, instanceId); err != nil {
409+
return err
410+
}
411+
412+
err = resource.Retry(1*readRetryTimeout, func() *resource.RetryError {
413+
instance, errRet := service.DescribeMonitorGrafanaInstance(ctx, instanceId)
414+
if errRet != nil {
415+
return retryError(errRet, InternalError)
416+
}
417+
if instance == nil {
418+
return nil
419+
}
420+
return resource.RetryableError(fmt.Errorf("grafanaInstance status is %v, retry...", *instance.InstanceStatus))
421+
})
422+
if err != nil {
423+
return err
424+
}
425+
}
426+
383427
return nil
384428
}

tencentcloud/resource_tc_monitor_grafana_instance_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ resource "tencentcloud_monitor_grafana_instance" "grafanaInstance" {
124124
subnet_ids = [var.subnet_id]
125125
grafana_init_password = "1234567890"
126126
enable_internet = false
127+
is_distroy = true
127128
128129
tags = {
129130
"createdBy" = "test"
@@ -138,6 +139,7 @@ resource "tencentcloud_monitor_grafana_instance" "grafanaInstance" {
138139
subnet_ids = [var.subnet_id]
139140
grafana_init_password = "1234567890"
140141
enable_internet = false
142+
is_distroy = true
141143
142144
tags = {
143145
"createdBy" = "test"

tencentcloud/resource_tc_monitor_grafana_integration.go

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,42 @@ Provides a resource to create a monitor grafanaIntegration
33
44
Example Usage
55
6+
Create a grafan instance and integrate the configuration
7+
68
```hcl
7-
resource "tencentcloud_monitor_grafana_integration" "grafanaIntegration" {
8-
instance_id = "grafana-50nj6v00"
9-
kind = "tencentcloud-monitor-app"
10-
content = "{\"kind\":\"tencentcloud-monitor-app\",\"spec\":{\"dataSourceSpec\":{\"authProvider\":{\"__anyOf\":\"使用密钥\",\"useRole\":true,\"secretId\":\"arunma@tencent.com\",\"secretKey\":\"12345678\"},\"name\":\"uint-test\"},\"grafanaSpec\":{\"organizationIds\":[]}}}"
9+
variable "availability_zone" {
10+
default = "ap-guangzhou-6"
1111
}
1212
13-
resource "tencentcloud_monitor_grafana_integration" "grafanaIntegration_update" {
14-
content = "{\"id\":\"integration-9st6kqz6\",\"kind\":\"tencentcloud-monitor-app\",\"spec\":{\"dataSourceSpec\":{\"name\":\"uint-test3\",\"authProvider\":{\"secretId\":\"ROLE\",\"useRole\":true,\"__anyOf\":\"使用服务角色\"}},\"grafanaSpec\":{\"organizationIds\":[]}}}"
15-
instance_id = "grafana-50nj6v00"
16-
kind = "tencentcloud-monitor-app"
13+
resource "tencentcloud_vpc" "vpc" {
14+
cidr_block = "10.0.0.0/16"
15+
name = "tf_monitor_vpc"
1716
}
1817
18+
resource "tencentcloud_subnet" "subnet" {
19+
vpc_id = tencentcloud_vpc.vpc.id
20+
availability_zone = var.availability_zone
21+
name = "tf_monitor_subnet"
22+
cidr_block = "10.0.1.0/24"
23+
}
24+
25+
resource "tencentcloud_monitor_grafana_instance" "foo" {
26+
instance_name = "test-grafana"
27+
vpc_id = tencentcloud_vpc.vpc.id
28+
subnet_ids = [tencentcloud_subnet.subnet.id]
29+
grafana_init_password = "1234567890"
30+
enable_internet = false
31+
32+
tags = {
33+
"createdBy" = "test"
34+
}
35+
}
36+
37+
resource "tencentcloud_monitor_grafana_integration" "grafanaIntegration" {
38+
instance_id = tencentcloud_monitor_grafana_instance.foo.id
39+
kind = "tencentcloud-monitor-app"
40+
content = "{\"kind\":\"tencentcloud-monitor-app\",\"spec\":{\"dataSourceSpec\":{\"authProvider\":{\"__anyOf\":\"使用密钥\",\"useRole\":true,\"secretId\":\"arunma@tencent.com\",\"secretKey\":\"12345678\"},\"name\":\"uint-test\"},\"grafanaSpec\":{\"organizationIds\":[]}}}"
41+
}
1942
```
2043
*/
2144
package tencentcloud

tencentcloud/resource_tc_monitor_grafana_notification_channel.go

Lines changed: 61 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,69 @@ Provides a resource to create a monitor grafanaNotificationChannel
44
Example Usage
55
66
```hcl
7+
variable "availability_zone" {
8+
default = "ap-guangzhou-6"
9+
}
10+
11+
resource "tencentcloud_vpc" "vpc" {
12+
cidr_block = "10.0.0.0/16"
13+
name = "tf_monitor_vpc"
14+
}
15+
16+
resource "tencentcloud_subnet" "subnet" {
17+
vpc_id = tencentcloud_vpc.vpc.id
18+
availability_zone = var.availability_zone
19+
name = "tf_monitor_subnet"
20+
cidr_block = "10.0.1.0/24"
21+
}
22+
23+
resource "tencentcloud_monitor_grafana_instance" "foo" {
24+
instance_name = "test-grafana"
25+
vpc_id = tencentcloud_vpc.vpc.id
26+
subnet_ids = [tencentcloud_subnet.subnet.id]
27+
grafana_init_password = "1234567890"
28+
enable_internet = false
29+
30+
tags = {
31+
"createdBy" = "test"
32+
}
33+
}
34+
35+
resource "tencentcloud_monitor_alarm_notice" "foo" {
36+
name = "tf_alarm_notice"
37+
notice_type = "ALL"
38+
notice_language = "zh-CN"
39+
40+
user_notices {
41+
receiver_type = "USER"
42+
start_time = 0
43+
end_time = 1
44+
notice_way = ["SMS","EMAIL"]
45+
user_ids = [10001]
46+
group_ids = []
47+
phone_order = [10001]
48+
phone_circle_times = 2
49+
phone_circle_interval = 50
50+
phone_inner_interval = 60
51+
need_phone_arrive_notice = 1
52+
phone_call_type = "CIRCLE"
53+
weekday =[1,2,3,4,5,6,7]
54+
}
55+
56+
url_notices {
57+
url = "https://www.mytest.com/validate"
58+
end_time = 0
59+
start_time = 1
60+
weekday = [1,2,3,4,5,6,7]
61+
}
62+
}
63+
764
resource "tencentcloud_monitor_grafana_notification_channel" "grafanaNotificationChannel" {
8-
instance_id = "grafana-50nj6v00"
9-
channel_name = "create-channel"
65+
instance_id = tencentcloud_monitor_grafana_instance.foo.id
66+
channel_name = "tf-channel"
1067
org_id = 1
11-
receivers = ["Consumer-6vkna7pevq"]
12-
extra_org_ids = []
68+
receivers = [tencentcloud_monitor_alarm_notice.foo.amp_consumer_id]
69+
extra_org_ids = ["1"]
1370
}
1471
1572
```

tencentcloud/resource_tc_monitor_grafana_plugin.go

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,36 @@ Provides a resource to create a monitor grafanaPlugin
44
Example Usage
55
66
```hcl
7+
variable "availability_zone" {
8+
default = "ap-guangzhou-6"
9+
}
10+
11+
resource "tencentcloud_vpc" "vpc" {
12+
cidr_block = "10.0.0.0/16"
13+
name = "tf_monitor_vpc"
14+
}
15+
16+
resource "tencentcloud_subnet" "subnet" {
17+
vpc_id = tencentcloud_vpc.vpc.id
18+
availability_zone = var.availability_zone
19+
name = "tf_monitor_subnet"
20+
cidr_block = "10.0.1.0/24"
21+
}
22+
23+
resource "tencentcloud_monitor_grafana_instance" "foo" {
24+
instance_name = "test-grafana"
25+
vpc_id = tencentcloud_vpc.vpc.id
26+
subnet_ids = [tencentcloud_subnet.subnet.id]
27+
grafana_init_password = "1234567890"
28+
enable_internet = false
29+
30+
tags = {
31+
"createdBy" = "test"
32+
}
33+
}
34+
735
resource "tencentcloud_monitor_grafana_plugin" "grafanaPlugin" {
8-
instance_id = "grafana-50nj6v00"
36+
instance_id = tencentcloud_monitor_grafana_instance.foo.id
937
plugin_id = "grafana-piechart-panel"
1038
version = "1.6.2"
1139
}

0 commit comments

Comments
 (0)