Skip to content

Commit 29bfeca

Browse files
tongyimingmikatong
andauthored
Feat/lighthouse (#1687)
* support operate about disk * support create key pair * add changelog && update vendor --------- Co-authored-by: mikatong <mikatong@tencent.com>
1 parent f001450 commit 29bfeca

24 files changed

+4832
-746
lines changed

.changelog/1687.txt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
```release-note:new-resource
2+
tencentcloud_lighthouse_disk_backup
3+
```
4+
5+
```release-note:new-resource
6+
tencentcloud_lighthouse_apply_disk_backup
7+
```
8+
9+
```release-note:new-resource
10+
tencentcloud_lighthouse_disk_attachment
11+
```
12+
13+
```release-note:new-resource
14+
tencentcloud_lighthouse_key_pair
15+
```

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ require (
3838
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.599
3939
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.544
4040
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.412
41-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.638
41+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.644
4242
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624
4343
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.589
4444
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.572
@@ -53,7 +53,7 @@ require (
5353
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/es v1.0.383
5454
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/gaap v1.0.514
5555
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms v1.0.199
56-
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse v1.0.413
56+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse v1.0.644
5757
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live v1.0.535
5858
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb v1.0.532
5959
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mongodb v1.0.638

go.sum

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -540,6 +540,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.634 h1:xSW5
540540
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.634/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
541541
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.638 h1:fm0Wczqg03WmgW2RKyxjV4wKin72vr/nusNbn+B6yiw=
542542
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.638/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
543+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.644 h1:eiyasSC6Fx+BzWQ4PbTMIMfJ3GpnUqOdUt4ZvBa0/4s=
544+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.644/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
543545
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624 h1:nEZqsoqt1pEoaP9JjkHQy3/H00suCfzlHW1qOm2nYD8=
544546
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.624/go.mod h1:+TXSVyeKwt1IhZRqKPbTREteBcP+K07Q846/ilNzLWA=
545547
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cwp v1.0.589 h1:LZihgirMH0vsaGScYexxwY0fTss9vHaSZs/YOQUVESg=
@@ -577,6 +579,8 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms v1.0.199 h1:rSDQeqv
577579
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/kms v1.0.199/go.mod h1:yrBKWhChnDqNz1xuXdSbWXG56XawEq0G5j1lg4VwBD4=
578580
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse v1.0.413 h1:9v95vMBfqvBciwagN+ZqP6Ue3iBFYZRVQga4c1yL5Uc=
579581
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse v1.0.413/go.mod h1:nG/8Iz/MtV4zBxz9ToLJ90O4ocdME9WUKwims/bitr4=
582+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse v1.0.644 h1:Js416dtCowQ4HP089OWrIHNy7t0IPFmnoUPUzWDCPXw=
583+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse v1.0.644/go.mod h1:s1pyOiN+/rTq8CLPBpDa4sYkiQzw/VAbRlpBePrPBOY=
580584
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live v1.0.535 h1:hSwG4ZbcP2Ht+AWHI81EMCvJdDTyTT7zP/qjOe/VcZg=
581585
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/live v1.0.535/go.mod h1:mYKqy56uKaI0aPySeUByymvwDerPTmdMJQPQKC/NU1s=
582586
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/mariadb v1.0.532 h1:3PCI1M2dvfAWVx+5xTqap+8qIsmG8cQ4lpvGfwmO2NM=

tencentcloud/basic_test.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -975,3 +975,28 @@ const (
975975
)
976976

977977
// End of CRS
978+
979+
const (
980+
defaultLighthouseInstanceId = "lhins-hwe21u91"
981+
defaultLighthoustDiskId = "lhdisk-do4p4hz6"
982+
defaultLighthouseBackupDiskId = "lhdisk-cwodsc4q"
983+
defaultLighthouseBackUpId = "lhbak-bpum3ygx"
984+
)
985+
986+
const DefaultLighthoustVariables = `
987+
variable "lighthouse_id" {
988+
default = "` + defaultLighthouseInstanceId + `"
989+
}
990+
991+
variable "lighthouse_disk_id" {
992+
default = "` + defaultLighthoustDiskId + `"
993+
}
994+
995+
variable "lighthouse_backup_disk_id" {
996+
default = "` + defaultLighthouseBackupDiskId + `"
997+
}
998+
999+
variable "lighthouse_backup_id" {
1000+
default = "` + defaultLighthouseBackUpId + `"
1001+
}
1002+
`

tencentcloud/provider.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -763,6 +763,11 @@ TencentCloud Lighthouse(Lighthouse)
763763
tencentcloud_lighthouse_instance
764764
tencentcloud_lighthouse_blueprint
765765
tencentcloud_lighthouse_firewall_rule
766+
tencentcloud_lighthouse_disk_backup
767+
tencentcloud_lighthouse_apply_disk_backup
768+
tencentcloud_lighthouse_disk_attachment
769+
tencentcloud_lighthouse_key_pair
770+
766771
Data Source
767772
tencentcloud_lighthouse_firewall_rules_template
768773
@@ -1907,6 +1912,10 @@ func Provider() terraform.ResourceProvider {
19071912
"tencentcloud_cvm_security_group_attachment": resourceTencentCloudCvmSecurityGroupAttachment(),
19081913
"tencentcloud_cvm_reboot_instance": resourceTencentCloudCvmRebootInstance(),
19091914
"tencentcloud_cvm_chc_config": resourceTencentCloudCvmChcConfig(),
1915+
"tencentcloud_lighthouse_disk_backup": resourceTencentCloudLighthouseDiskBackup(),
1916+
"tencentcloud_lighthouse_apply_disk_backup": resourceTencentCloudLighthouseApplyDiskBackup(),
1917+
"tencentcloud_lighthouse_disk_attachment": resourceTencentCloudLighthouseDiskAttachment(),
1918+
"tencentcloud_lighthouse_key_pair": resourceTencentCloudLighthouseKeyPair(),
19101919
},
19111920

19121921
ConfigureFunc: providerConfigure,
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
/*
2+
Provides a resource to create a lighthouse apply_disk_backup
3+
4+
Example Usage
5+
6+
```hcl
7+
resource "tencentcloud_lighthouse_apply_disk_backup" "apply_disk_backup" {
8+
disk_id = "lhdisk-xxxxxx"
9+
disk_backup_id = "lhbak-xxxxxx"
10+
}
11+
```
12+
*/
13+
package tencentcloud
14+
15+
import (
16+
"log"
17+
"time"
18+
19+
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
20+
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
21+
lighthouse "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/lighthouse/v20200324"
22+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
23+
)
24+
25+
func resourceTencentCloudLighthouseApplyDiskBackup() *schema.Resource {
26+
return &schema.Resource{
27+
Create: resourceTencentCloudLighthouseApplyDiskBackupCreate,
28+
Read: resourceTencentCloudLighthouseApplyDiskBackupRead,
29+
Delete: resourceTencentCloudLighthouseApplyDiskBackupDelete,
30+
Schema: map[string]*schema.Schema{
31+
"disk_id": {
32+
Required: true,
33+
ForceNew: true,
34+
Type: schema.TypeString,
35+
Description: "Disk ID.",
36+
},
37+
38+
"disk_backup_id": {
39+
Required: true,
40+
ForceNew: true,
41+
Type: schema.TypeString,
42+
Description: "Disk backup ID.",
43+
},
44+
},
45+
}
46+
}
47+
48+
func resourceTencentCloudLighthouseApplyDiskBackupCreate(d *schema.ResourceData, meta interface{}) error {
49+
defer logElapsed("resource.tencentcloud_lighthouse_apply_disk_backup.create")()
50+
defer inconsistentCheck(d, meta)()
51+
52+
logId := getLogId(contextNil)
53+
54+
var (
55+
request = lighthouse.NewApplyDiskBackupRequest()
56+
diskBackupId string
57+
diskId string
58+
)
59+
if v, ok := d.GetOk("disk_id"); ok {
60+
diskId = v.(string)
61+
request.DiskId = helper.String(diskId)
62+
}
63+
64+
if v, ok := d.GetOk("disk_backup_id"); ok {
65+
diskBackupId = v.(string)
66+
request.DiskBackupId = helper.String(diskBackupId)
67+
}
68+
69+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
70+
result, e := meta.(*TencentCloudClient).apiV3Conn.UseLighthouseClient().ApplyDiskBackup(request)
71+
if e != nil {
72+
return retryError(e)
73+
} else {
74+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
75+
}
76+
return nil
77+
})
78+
if err != nil {
79+
log.Printf("[CRITAL]%s operate lighthouse applyDiskBackup failed, reason:%+v", logId, err)
80+
return err
81+
}
82+
83+
d.SetId(diskId + FILED_SP + diskBackupId)
84+
85+
service := LightHouseService{client: meta.(*TencentCloudClient).apiV3Conn}
86+
87+
conf := BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 20*readRetryTimeout, time.Second, service.LighthouseApplyDiskBackupStateRefreshFunc(diskBackupId, []string{}))
88+
89+
if _, e := conf.WaitForState(); e != nil {
90+
return e
91+
}
92+
93+
return resourceTencentCloudLighthouseApplyDiskBackupRead(d, meta)
94+
}
95+
96+
func resourceTencentCloudLighthouseApplyDiskBackupRead(d *schema.ResourceData, meta interface{}) error {
97+
defer logElapsed("resource.tencentcloud_lighthouse_apply_disk_backup.read")()
98+
defer inconsistentCheck(d, meta)()
99+
100+
return nil
101+
}
102+
103+
func resourceTencentCloudLighthouseApplyDiskBackupDelete(d *schema.ResourceData, meta interface{}) error {
104+
defer logElapsed("resource.tencentcloud_lighthouse_apply_disk_backup.delete")()
105+
defer inconsistentCheck(d, meta)()
106+
107+
return nil
108+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package tencentcloud
2+
3+
import (
4+
"testing"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
7+
)
8+
9+
func TestAccTencentCloudLighthouseApplyDiskBackupResource_basic(t *testing.T) {
10+
t.Parallel()
11+
resource.Test(t, resource.TestCase{
12+
PreCheck: func() {
13+
testAccPreCheckCommon(t, ACCOUNT_TYPE_PREPAY)
14+
},
15+
Providers: testAccProviders,
16+
Steps: []resource.TestStep{
17+
{
18+
Config: testAccLighthouseApplyDiskBackup,
19+
Check: resource.ComposeTestCheckFunc(resource.TestCheckResourceAttrSet("tencentcloud_lighthouse_apply_disk_backup.apply_disk_backup", "id")),
20+
},
21+
},
22+
})
23+
}
24+
25+
const testAccLighthouseApplyDiskBackup = DefaultLighthoustVariables + `
26+
27+
resource "tencentcloud_lighthouse_apply_disk_backup" "apply_disk_backup" {
28+
disk_id = var.lighthouse_backup_disk_id
29+
disk_backup_id = var.lighthouse_backup_id
30+
}
31+
32+
`

0 commit comments

Comments
 (0)