Skip to content

Commit b4ef0f5

Browse files
authored
add transform (#1769)
* add transform * add changelog
1 parent 71b883c commit b4ef0f5

File tree

6 files changed

+195
-0
lines changed

6 files changed

+195
-0
lines changed

.changelog/1769.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:new-resource
2+
tencentcloud_eip_address_transform
3+
```

tencentcloud/provider.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,7 @@ Cloud Virtual Machine(CVM)
322322
tencentcloud_instance_set
323323
tencentcloud_eip
324324
tencentcloud_eip_association
325+
tencentcloud_eip_address_transform
325326
tencentcloud_key_pair
326327
tencentcloud_placement_group
327328
tencentcloud_reserved_instance
@@ -1613,6 +1614,7 @@ func Provider() *schema.Provider {
16131614
"tencentcloud_nat_gateway_snat": resourceTencentCloudNatGatewaySnat(),
16141615
"tencentcloud_eip": resourceTencentCloudEip(),
16151616
"tencentcloud_eip_association": resourceTencentCloudEipAssociation(),
1617+
"tencentcloud_eip_address_transform": resourceTencentCloudEipAddressTransform(),
16161618
"tencentcloud_eni": resourceTencentCloudEni(),
16171619
"tencentcloud_eni_attachment": resourceTencentCloudEniAttachment(),
16181620
"tencentcloud_ccn": resourceTencentCloudCcn(),
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 eip address_transform
3+
4+
Example Usage
5+
6+
```hcl
7+
resource "tencentcloud_eip_address_transform" "address_transform" {
8+
instance_id = ""
9+
}
10+
```
11+
12+
Import
13+
14+
eip address_transform can be imported using the id, e.g.
15+
16+
```
17+
terraform import tencentcloud_eip_address_transform.address_transform address_transform_id
18+
```
19+
*/
20+
package tencentcloud
21+
22+
import (
23+
"log"
24+
"time"
25+
26+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
27+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
28+
eip "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/vpc/v20170312"
29+
"github.com/tencentcloudstack/terraform-provider-tencentcloud/tencentcloud/internal/helper"
30+
)
31+
32+
func resourceTencentCloudEipAddressTransform() *schema.Resource {
33+
return &schema.Resource{
34+
Create: resourceTencentCloudEipAddressTransformCreate,
35+
Read: resourceTencentCloudEipAddressTransformRead,
36+
Delete: resourceTencentCloudEipAddressTransformDelete,
37+
Importer: &schema.ResourceImporter{
38+
State: schema.ImportStatePassthrough,
39+
},
40+
Schema: map[string]*schema.Schema{
41+
"instance_id": {
42+
Required: true,
43+
ForceNew: true,
44+
Type: schema.TypeString,
45+
Description: "the instance ID of a normal public network IP to be operated. eg:ins-23mk45jn.",
46+
},
47+
},
48+
}
49+
}
50+
51+
func resourceTencentCloudEipAddressTransformCreate(d *schema.ResourceData, meta interface{}) error {
52+
defer logElapsed("resource.tencentcloud_eip_address_transform.create")()
53+
defer inconsistentCheck(d, meta)()
54+
55+
logId := getLogId(contextNil)
56+
57+
var (
58+
request = eip.NewTransformAddressRequest()
59+
response = eip.NewTransformAddressResponse()
60+
instanceId string
61+
)
62+
if v, ok := d.GetOk("instance_id"); ok {
63+
instanceId = v.(string)
64+
request.InstanceId = helper.String(v.(string))
65+
}
66+
67+
err := resource.Retry(writeRetryTimeout, func() *resource.RetryError {
68+
result, e := meta.(*TencentCloudClient).apiV3Conn.UseVpcClient().TransformAddress(request)
69+
if e != nil {
70+
return retryError(e)
71+
} else {
72+
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n", logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
73+
}
74+
response = result
75+
return nil
76+
})
77+
if err != nil {
78+
log.Printf("[CRITAL]%s operate eip addressTransform failed, reason:%+v", logId, err)
79+
return err
80+
}
81+
82+
taskId := *response.Response.TaskId
83+
d.SetId(instanceId)
84+
85+
service := VpcService{client: meta.(*TencentCloudClient).apiV3Conn}
86+
87+
conf := BuildStateChangeConf([]string{}, []string{"SUCCESS"}, 1*readRetryTimeout, time.Second, service.VpcIpv6AddressStateRefreshFunc(helper.UInt64ToStr(taskId), []string{}))
88+
89+
if _, e := conf.WaitForState(); e != nil {
90+
return e
91+
}
92+
93+
return resourceTencentCloudEipAddressTransformRead(d, meta)
94+
}
95+
96+
func resourceTencentCloudEipAddressTransformRead(d *schema.ResourceData, meta interface{}) error {
97+
defer logElapsed("resource.tencentcloud_eip_address_transform.read")()
98+
defer inconsistentCheck(d, meta)()
99+
100+
return nil
101+
}
102+
103+
func resourceTencentCloudEipAddressTransformDelete(d *schema.ResourceData, meta interface{}) error {
104+
defer logElapsed("resource.tencentcloud_eip_address_transform.delete")()
105+
defer inconsistentCheck(d, meta)()
106+
107+
return nil
108+
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package tencentcloud
2+
3+
import (
4+
"testing"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
7+
)
8+
9+
func TestAccTencentCloudNeedFixEipAddressTransformResource_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: testAccEipAddressTransform,
19+
Check: resource.ComposeTestCheckFunc(resource.TestCheckResourceAttrSet("tencentcloud_eip_address_transform.address_transform", "id")),
20+
},
21+
{
22+
ResourceName: "tencentcloud_eip_address_transform.address_transform",
23+
ImportState: true,
24+
ImportStateVerify: true,
25+
},
26+
},
27+
})
28+
}
29+
30+
const testAccEipAddressTransform = `
31+
32+
resource "tencentcloud_eip_address_transform" "address_transform" {
33+
instance_id = "ins-2kcdugsq"
34+
}
35+
36+
`
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
---
2+
subcategory: "Cloud Virtual Machine(CVM)"
3+
layout: "tencentcloud"
4+
page_title: "TencentCloud: tencentcloud_eip_address_transform"
5+
sidebar_current: "docs-tencentcloud-resource-eip_address_transform"
6+
description: |-
7+
Provides a resource to create a eip address_transform
8+
---
9+
10+
# tencentcloud_eip_address_transform
11+
12+
Provides a resource to create a eip address_transform
13+
14+
## Example Usage
15+
16+
```hcl
17+
resource "tencentcloud_eip_address_transform" "address_transform" {
18+
instance_id = ""
19+
}
20+
```
21+
22+
## Argument Reference
23+
24+
The following arguments are supported:
25+
26+
* `instance_id` - (Required, String, ForceNew) the instance ID of a normal public network IP to be operated. eg:ins-23mk45jn.
27+
28+
## Attributes Reference
29+
30+
In addition to all arguments above, the following attributes are exported:
31+
32+
* `id` - ID of the resource.
33+
34+
35+
36+
## Import
37+
38+
eip address_transform can be imported using the id, e.g.
39+
40+
```
41+
terraform import tencentcloud_eip_address_transform.address_transform address_transform_id
42+
```
43+

website/tencentcloud.erb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1112,6 +1112,9 @@
11121112
<li>
11131113
<a href="/docs/providers/tencentcloud/r/eip.html">tencentcloud_eip</a>
11141114
</li>
1115+
<li>
1116+
<a href="/docs/providers/tencentcloud/r/eip_address_transform.html">tencentcloud_eip_address_transform</a>
1117+
</li>
11151118
<li>
11161119
<a href="/docs/providers/tencentcloud/r/eip_association.html">tencentcloud_eip_association</a>
11171120
</li>

0 commit comments

Comments
 (0)