Skip to content

Commit 9636994

Browse files
committed
add mount point
1 parent 3614ab5 commit 9636994

8 files changed

+367
-1
lines changed

tencentcloud/provider.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -955,6 +955,7 @@ Cloud HDFS(CHDFS)
955955
tencentcloud_chdfs_access_rule
956956
tencentcloud_chdfs_file_system
957957
tencentcloud_chdfs_life_cycle_rule
958+
tencentcloud_chdfs_mount_point
958959
959960
*/
960961
package tencentcloud
@@ -1704,6 +1705,7 @@ func Provider() terraform.ResourceProvider {
17041705
"tencentcloud_chdfs_access_rule": resourceTencentCloudChdfsAccessRule(),
17051706
"tencentcloud_chdfs_file_system": resourceTencentCloudChdfsFileSystem(),
17061707
"tencentcloud_chdfs_life_cycle_rule": resourceTencentCloudChdfsLifeCycleRule(),
1708+
"tencentcloud_chdfs_mount_point": resourceTencentCloudChdfsMountPoint(),
17071709
},
17081710

17091711
ConfigureFunc: providerConfigure,

tencentcloud/resource_tc_chdfs_life_cycle_rule.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ func resourceTencentCloudChdfsLifeCycleRule() *schema.Resource {
5555
"file_system_id": {
5656
Required: true,
5757
Type: schema.TypeString,
58+
ForceNew: true,
5859
Description: "file system id.",
5960
},
6061

Lines changed: 204 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,204 @@
1+
/*
2+
Provides a resource to create a chdfs mount_point
3+
4+
Example Usage
5+
6+
```hcl
7+
resource "tencentcloud_chdfs_mount_point" "mount_point" {
8+
file_system_id = "f14mpfy5lh4e"
9+
mount_point_name = "terraform-test"
10+
mount_point_status = 1
11+
}
12+
```
13+
14+
Import
15+
16+
chdfs mount_point can be imported using the id, e.g.
17+
18+
```
19+
terraform import tencentcloud_chdfs_mount_point.mount_point mount_point_id
20+
```
21+
*/
22+
package tencentcloud
23+
24+
import (
25+
"context"
26+
"log"
27+
28+
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
29+
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
30+
chdfs "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/chdfs/v20201112"
31+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
32+
)
33+
34+
func resourceTencentCloudChdfsMountPoint() *schema.Resource {
35+
return &schema.Resource{
36+
Create: resourceTencentCloudChdfsMountPointCreate,
37+
Read: resourceTencentCloudChdfsMountPointRead,
38+
Update: resourceTencentCloudChdfsMountPointUpdate,
39+
Delete: resourceTencentCloudChdfsMountPointDelete,
40+
Importer: &schema.ResourceImporter{
41+
State: schema.ImportStatePassthrough,
42+
},
43+
Schema: map[string]*schema.Schema{
44+
"mount_point_name": {
45+
Required: true,
46+
Type: schema.TypeString,
47+
Description: "mount point name.",
48+
},
49+
50+
"file_system_id": {
51+
Required: true,
52+
ForceNew: true,
53+
Type: schema.TypeString,
54+
Description: "file system id you want to mount.",
55+
},
56+
57+
"mount_point_status": {
58+
Required: true,
59+
Type: schema.TypeInt,
60+
Description: "mount status 1:open, 2:close.",
61+
},
62+
},
63+
}
64+
}
65+
66+
func resourceTencentCloudChdfsMountPointCreate(d *schema.ResourceData, meta interface{}) error {
67+
defer logElapsed("resource.tencentcloud_chdfs_mount_point.create")()
68+
defer inconsistentCheck(d, meta)()
69+
70+
logId := getLogId(contextNil)
71+
72+
var (
73+
request = chdfs.NewCreateMountPointRequest()
74+
response = chdfs.NewCreateMountPointResponse()
75+
mountPointId string
76+
)
77+
if v, ok := d.GetOk("mount_point_name"); ok {
78+
request.MountPointName = helper.String(v.(string))
79+
}
80+
81+
if v, ok := d.GetOk("file_system_id"); ok {
82+
request.FileSystemId = helper.String(v.(string))
83+
}
84+
85+
if v, _ := d.GetOk("mount_point_status"); v != nil {
86+
request.MountPointStatus = helper.IntUint64(v.(int))
87+
}
88+
89+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
90+
result, e := meta.(*TencentCloudClient).apiV3Conn.UseChdfsClient().CreateMountPoint(request)
91+
if e != nil {
92+
return retryError(e)
93+
} else {
94+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
95+
}
96+
response = result
97+
return nil
98+
})
99+
if err != nil {
100+
log.Printf("[CRITAL]%s create chdfs mountPoint failed, reason:%+v", logId, err)
101+
return err
102+
}
103+
104+
mountPointId = *response.Response.MountPoint.MountPointId
105+
d.SetId(mountPointId)
106+
107+
return resourceTencentCloudChdfsMountPointRead(d, meta)
108+
}
109+
110+
func resourceTencentCloudChdfsMountPointRead(d *schema.ResourceData, meta interface{}) error {
111+
defer logElapsed("resource.tencentcloud_chdfs_mount_point.read")()
112+
defer inconsistentCheck(d, meta)()
113+
114+
logId := getLogId(contextNil)
115+
116+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
117+
118+
service := ChdfsService{client: meta.(*TencentCloudClient).apiV3Conn}
119+
120+
mountPointId := d.Id()
121+
122+
mountPoint, err := service.DescribeChdfsMountPointById(ctx, mountPointId)
123+
if err != nil {
124+
return err
125+
}
126+
127+
if mountPoint == nil {
128+
d.SetId("")
129+
log.Printf("[WARN]%s resource `ChdfsMountPoint` [%s] not found, please check if it has been deleted.\n", logId, d.Id())
130+
return nil
131+
}
132+
133+
if mountPoint.MountPointName != nil {
134+
_ = d.Set("mount_point_name", mountPoint.MountPointName)
135+
}
136+
137+
if mountPoint.FileSystemId != nil {
138+
_ = d.Set("file_system_id", mountPoint.FileSystemId)
139+
}
140+
141+
if mountPoint.Status != nil {
142+
_ = d.Set("mount_point_status", mountPoint.Status)
143+
}
144+
145+
return nil
146+
}
147+
148+
func resourceTencentCloudChdfsMountPointUpdate(d *schema.ResourceData, meta interface{}) error {
149+
defer logElapsed("resource.tencentcloud_chdfs_mount_point.update")()
150+
defer inconsistentCheck(d, meta)()
151+
152+
logId := getLogId(contextNil)
153+
154+
request := chdfs.NewModifyMountPointRequest()
155+
156+
mountPointId := d.Id()
157+
158+
request.MountPointId = &mountPointId
159+
160+
if d.HasChange("mount_point_name") {
161+
if v, ok := d.GetOk("mount_point_name"); ok {
162+
request.MountPointName = helper.String(v.(string))
163+
}
164+
}
165+
166+
if d.HasChange("mount_point_status") {
167+
if v, _ := d.GetOk("mount_point_status"); v != nil {
168+
request.MountPointStatus = helper.IntUint64(v.(int))
169+
}
170+
}
171+
172+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
173+
result, e := meta.(*TencentCloudClient).apiV3Conn.UseChdfsClient().ModifyMountPoint(request)
174+
if e != nil {
175+
return retryError(e)
176+
} else {
177+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
178+
}
179+
return nil
180+
})
181+
if err != nil {
182+
log.Printf("[CRITAL]%s update chdfs mountPoint failed, reason:%+v", logId, err)
183+
return err
184+
}
185+
186+
return resourceTencentCloudChdfsMountPointRead(d, meta)
187+
}
188+
189+
func resourceTencentCloudChdfsMountPointDelete(d *schema.ResourceData, meta interface{}) error {
190+
defer logElapsed("resource.tencentcloud_chdfs_mount_point.delete")()
191+
defer inconsistentCheck(d, meta)()
192+
193+
logId := getLogId(contextNil)
194+
ctx := context.WithValue(context.TODO(), logIdKey, logId)
195+
196+
service := ChdfsService{client: meta.(*TencentCloudClient).apiV3Conn}
197+
mountPointId := d.Id()
198+
199+
if err := service.DeleteChdfsMountPointById(ctx, mountPointId); err != nil {
200+
return err
201+
}
202+
203+
return nil
204+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package tencentcloud
2+
3+
import (
4+
"testing"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
7+
)
8+
9+
func TestAccTencentCloudChdfsMountPointResource_basic(t *testing.T) {
10+
t.Parallel()
11+
resource.Test(t, resource.TestCase{
12+
PreCheck: func() {
13+
testAccPreCheck(t)
14+
},
15+
Providers: testAccProviders,
16+
Steps: []resource.TestStep{
17+
{
18+
Config: testAccChdfsMountPoint,
19+
Check: resource.ComposeTestCheckFunc(resource.TestCheckResourceAttrSet("tencentcloud_chdfs_mount_point.mount_point", "id")),
20+
},
21+
{
22+
Config: testAccChdfsMountPointUpdate,
23+
Check: resource.ComposeTestCheckFunc(
24+
resource.TestCheckResourceAttrSet("tencentcloud_chdfs_mount_point.mount_point", "id"),
25+
resource.TestCheckResourceAttr("tencentcloud_chdfs_mount_point.mount_point", "mount_point_name", "terraform-for-test"),
26+
resource.TestCheckResourceAttr("tencentcloud_chdfs_mount_point.mount_point", "mount_point_status", "2"),
27+
),
28+
},
29+
{
30+
ResourceName: "tencentcloud_chdfs_mount_point.mount_point",
31+
ImportState: true,
32+
ImportStateVerify: true,
33+
},
34+
},
35+
})
36+
}
37+
38+
const testAccChdfsMountPoint = `
39+
40+
resource "tencentcloud_chdfs_mount_point" "mount_point" {
41+
file_system_id = "f14mpfy5lh4e"
42+
mount_point_name = "terraform-test"
43+
mount_point_status = 1
44+
}
45+
46+
`
47+
48+
const testAccChdfsMountPointUpdate = `
49+
50+
resource "tencentcloud_chdfs_mount_point" "mount_point" {
51+
file_system_id = "f14mpfy5lh4e"
52+
mount_point_name = "terraform-for-test"
53+
mount_point_status = 2
54+
}
55+
56+
`

tencentcloud/service_tencentcloud_chdfs.go

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,3 +285,56 @@ func (me *ChdfsService) DeleteChdfsLifeCycleRuleById(ctx context.Context, lifeCy
285285

286286
return
287287
}
288+
289+
func (me *ChdfsService) DescribeChdfsMountPointById(ctx context.Context, mountPointId string) (mountPoint *chdfs.MountPoint, errRet error) {
290+
logId := getLogId(ctx)
291+
292+
request := chdfs.NewDescribeMountPointRequest()
293+
request.MountPointId = &mountPointId
294+
295+
defer func() {
296+
if errRet != nil {
297+
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error())
298+
}
299+
}()
300+
301+
ratelimit.Check(request.GetAction())
302+
303+
response, err := me.client.UseChdfsClient().DescribeMountPoint(request)
304+
if err != nil {
305+
errRet = err
306+
return
307+
}
308+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
309+
310+
if response.Response.MountPoint == nil {
311+
return
312+
}
313+
314+
mountPoint = response.Response.MountPoint
315+
return
316+
}
317+
318+
func (me *ChdfsService) DeleteChdfsMountPointById(ctx context.Context, mountPointId string) (errRet error) {
319+
logId := getLogId(ctx)
320+
321+
request := chdfs.NewDeleteMountPointRequest()
322+
request.MountPointId = &mountPointId
323+
324+
defer func() {
325+
if errRet != nil {
326+
log.Printf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]\n", logId, request.GetAction(), request.ToJsonString(), errRet.Error())
327+
}
328+
}()
329+
330+
ratelimit.Check(request.GetAction())
331+
332+
response, err := me.client.UseChdfsClient().DeleteMountPoint(request)
333+
if err != nil {
334+
errRet = err
335+
return
336+
}
337+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), response.ToJsonString())
338+
339+
return
340+
}

website/docs/r/chdfs_life_cycle_rule.html.markdown

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ resource "tencentcloud_chdfs_life_cycle_rule" "life_cycle_rule" {
3434

3535
The following arguments are supported:
3636

37-
* `file_system_id` - (Required, String) file system id.
37+
* `file_system_id` - (Required, String, ForceNew) file system id.
3838
* `life_cycle_rule` - (Required, List) life cycle rule.
3939

4040
The `life_cycle_rule` object supports the following:
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
---
2+
subcategory: "Cloud HDFS(CHDFS)"
3+
layout: "tencentcloud"
4+
page_title: "TencentCloud: tencentcloud_chdfs_mount_point"
5+
sidebar_current: "docs-tencentcloud-resource-chdfs_mount_point"
6+
description: |-
7+
Provides a resource to create a chdfs mount_point
8+
---
9+
10+
# tencentcloud_chdfs_mount_point
11+
12+
Provides a resource to create a chdfs mount_point
13+
14+
## Example Usage
15+
16+
```hcl
17+
resource "tencentcloud_chdfs_mount_point" "mount_point" {
18+
file_system_id = "f14mpfy5lh4e"
19+
mount_point_name = "terraform-test"
20+
mount_point_status = 1
21+
}
22+
```
23+
24+
## Argument Reference
25+
26+
The following arguments are supported:
27+
28+
* `file_system_id` - (Required, String, ForceNew) file system id you want to mount.
29+
* `mount_point_name` - (Required, String) mount point name.
30+
* `mount_point_status` - (Required, Int) mount status 1:open, 2:close.
31+
32+
## Attributes Reference
33+
34+
In addition to all arguments above, the following attributes are exported:
35+
36+
* `id` - ID of the resource.
37+
38+
39+
40+
## Import
41+
42+
chdfs mount_point can be imported using the id, e.g.
43+
44+
```
45+
terraform import tencentcloud_chdfs_mount_point.mount_point mount_point_id
46+
```
47+

0 commit comments

Comments
 (0)