Skip to content

fix(monitor): [118133981] update tencentcloud_monitor_tmp_instance document #2704

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jul 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .changelog/2704.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:enhancement
resource/tencentcloud_monitor_tmp_instance: update document
```
74 changes: 42 additions & 32 deletions tencentcloud/services/tmp/resource_tc_monitor_tmp_instance.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ import (

func ResourceTencentCloudMonitorTmpInstance() *schema.Resource {
return &schema.Resource{
Read: resourceTencentCloudMonitorTmpInstanceRead,
Create: resourceTencentCloudMonitorTmpInstanceCreate,
Read: resourceTencentCloudMonitorTmpInstanceRead,
Update: resourceTencentCloudMonitorTmpInstanceUpdate,
Delete: resourceTencentCloudMonitorTmpInstanceDelete,
Importer: &schema.ResourceImporter{
Expand Down Expand Up @@ -47,7 +47,7 @@ func ResourceTencentCloudMonitorTmpInstance() *schema.Resource {
"data_retention_time": {
Type: schema.TypeInt,
Required: true,
Description: "Data retention time.",
Description: "Data retention time(in days). Value range: 15, 30, 45, 90, 180, 360, 720.",
},

"zone": {
Expand Down Expand Up @@ -93,9 +93,8 @@ func resourceTencentCloudMonitorTmpInstanceCreate(d *schema.ResourceData, meta i
defer tccommon.LogElapsed("resource.tencentcloud_monitor_tmp_instance.create")()
defer tccommon.InconsistentCheck(d, meta)()

logId := tccommon.GetLogId(tccommon.ContextNil)

var (
logId = tccommon.GetLogId(tccommon.ContextNil)
request = monitor.NewCreatePrometheusMultiTenantInstancePostPayModeRequest()
response *monitor.CreatePrometheusMultiTenantInstancePostPayModeResponse
)
Expand All @@ -112,7 +111,7 @@ func resourceTencentCloudMonitorTmpInstanceCreate(d *schema.ResourceData, meta i
request.SubnetId = helper.String(v.(string))
}

if v, ok := d.GetOk("data_retention_time"); ok {
if v, ok := d.GetOkExists("data_retention_time"); ok {
request.DataRetentionTime = helper.IntInt64(v.(int))
}

Expand All @@ -128,6 +127,7 @@ func resourceTencentCloudMonitorTmpInstanceCreate(d *schema.ResourceData, meta i
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
}

response = result
return nil
})
Expand All @@ -138,7 +138,6 @@ func resourceTencentCloudMonitorTmpInstanceCreate(d *schema.ResourceData, meta i
}

tmpInstanceId := *response.Response.InstanceId

service := svcmonitor.NewMonitorService(meta.(tccommon.ProviderMeta).GetAPIV3Conn())
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)

Expand All @@ -147,14 +146,18 @@ func resourceTencentCloudMonitorTmpInstanceCreate(d *schema.ResourceData, meta i
if errRet != nil {
return tccommon.RetryError(errRet, tccommon.InternalError)
}

if *instance.InstanceStatus == 2 {
return nil
}

if *instance.InstanceStatus == 3 {
return resource.NonRetryableError(fmt.Errorf("tmpInstance status is %v, operate failed.", *instance.InstanceStatus))
}

return resource.RetryableError(fmt.Errorf("tmpInstance status is %v, retry...", *instance.InstanceStatus))
})

if err != nil {
return err
}
Expand All @@ -167,6 +170,7 @@ func resourceTencentCloudMonitorTmpInstanceCreate(d *schema.ResourceData, meta i
return err
}
}

d.SetId(tmpInstanceId)
return resourceTencentCloudMonitorTmpInstanceRead(d, meta)
}
Expand All @@ -175,15 +179,14 @@ func resourceTencentCloudMonitorTmpInstanceRead(d *schema.ResourceData, meta int
defer tccommon.LogElapsed("resource.tencentcloud_monitor_tmpInstance.read")()
defer tccommon.InconsistentCheck(d, meta)()

logId := tccommon.GetLogId(tccommon.ContextNil)
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)

service := svcmonitor.NewMonitorService(meta.(tccommon.ProviderMeta).GetAPIV3Conn())
var (
logId = tccommon.GetLogId(tccommon.ContextNil)
ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
service = svcmonitor.NewMonitorService(meta.(tccommon.ProviderMeta).GetAPIV3Conn())
)

tmpInstanceId := d.Id()

tmpInstance, err := service.DescribeMonitorTmpInstance(ctx, tmpInstanceId)

if err != nil {
return err
}
Expand Down Expand Up @@ -236,25 +239,20 @@ func resourceTencentCloudMonitorTmpInstanceRead(d *schema.ResourceData, meta int
if err != nil {
return err
}
_ = d.Set("tags", tags)

_ = d.Set("tags", tags)
return nil
}

func resourceTencentCloudMonitorTmpInstanceUpdate(d *schema.ResourceData, meta interface{}) error {
defer tccommon.LogElapsed("resource.tencentcloud_monitor_tmp_instance.update")()
defer tccommon.InconsistentCheck(d, meta)()

logId := tccommon.GetLogId(tccommon.ContextNil)
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)

request := monitor.NewModifyPrometheusInstanceAttributesRequest()

request.InstanceId = helper.String(d.Id())

if v, ok := d.GetOk("instance_name"); ok {
request.InstanceName = helper.String(v.(string))
}
var (
logId = tccommon.GetLogId(tccommon.ContextNil)
ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
request = monitor.NewModifyPrometheusInstanceAttributesRequest()
)

if d.HasChange("vpc_id") {
return fmt.Errorf("`vpc_id` do not support change now.")
Expand All @@ -264,16 +262,21 @@ func resourceTencentCloudMonitorTmpInstanceUpdate(d *schema.ResourceData, meta i
return fmt.Errorf("`subnet_id` do not support change now.")
}

if d.HasChange("zone") {
return fmt.Errorf("`zone` do not support change now.")
}

request.InstanceId = helper.String(d.Id())
if v, ok := d.GetOk("instance_name"); ok {
request.InstanceName = helper.String(v.(string))
}

if d.HasChange("data_retention_time") {
if v, ok := d.GetOk("data_retention_time"); ok {
request.DataRetentionTime = helper.IntInt64(v.(int))
}
}

if d.HasChange("zone") {
return fmt.Errorf("`zone` do not support change now.")
}

err := resource.Retry(tccommon.WriteRetryTimeout, func() *resource.RetryError {
result, e := meta.(tccommon.ProviderMeta).GetAPIV3Conn().UseMonitorClient().ModifyPrometheusInstanceAttributes(request)
if e != nil {
Expand All @@ -282,6 +285,7 @@ func resourceTencentCloudMonitorTmpInstanceUpdate(d *schema.ResourceData, meta i
log.Printf("[DEBUG]%s api[%s] success, request body [%s], response body [%s]\n",
logId, request.GetAction(), request.ToJsonString(), result.ToJsonString())
}

return nil
})

Expand All @@ -307,11 +311,12 @@ func resourceTencentCloudMonitorTmpInstanceDelete(d *schema.ResourceData, meta i
defer tccommon.LogElapsed("resource.tencentcloud_monitor_tmp_instance.delete")()
defer tccommon.InconsistentCheck(d, meta)()

logId := tccommon.GetLogId(tccommon.ContextNil)
ctx := context.WithValue(context.TODO(), tccommon.LogIdKey, logId)

service := svcmonitor.NewMonitorService(meta.(tccommon.ProviderMeta).GetAPIV3Conn())
tmpInstanceId := d.Id()
var (
logId = tccommon.GetLogId(tccommon.ContextNil)
ctx = context.WithValue(context.TODO(), tccommon.LogIdKey, logId)
service = svcmonitor.NewMonitorService(meta.(tccommon.ProviderMeta).GetAPIV3Conn())
tmpInstanceId = d.Id()
)

if err := service.IsolateMonitorTmpInstanceById(ctx, tmpInstanceId); err != nil {
return err
Expand All @@ -322,20 +327,25 @@ func resourceTencentCloudMonitorTmpInstanceDelete(d *schema.ResourceData, meta i
if errRet != nil {
return tccommon.RetryError(errRet, tccommon.InternalError)
}

if *instance.InstanceStatus == 6 {
return nil
}

if *instance.InstanceStatus == 3 {
return resource.NonRetryableError(fmt.Errorf("tmpInstance status is %v, operate failed.", *instance.InstanceStatus))
}

return resource.RetryableError(fmt.Errorf("tmpInstance status is %v, retry...", *instance.InstanceStatus))
})

if err != nil {
return err
}

if err := service.DeleteMonitorTmpInstanceById(ctx, tmpInstanceId); err != nil {
return err
}

return nil
}
7 changes: 3 additions & 4 deletions tencentcloud/services/tmp/resource_tc_monitor_tmp_instance.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ resource "tencentcloud_subnet" "subnet" {
cidr_block = "10.0.1.0/24"
}

resource "tencentcloud_monitor_tmp_instance" "foo" {
resource "tencentcloud_monitor_tmp_instance" "example" {
instance_name = "tf-tmp-instance"
vpc_id = tencentcloud_vpc.vpc.id
subnet_id = tencentcloud_subnet.subnet.id
Expand All @@ -29,11 +29,10 @@ resource "tencentcloud_monitor_tmp_instance" "foo" {
"createdBy" = "terraform"
}
}

```
Import

monitor tmpInstance can be imported using the id, e.g.
```
$ terraform import tencentcloud_monitor_tmp_instance.tmpInstance tmpInstance_id
```
$ terraform import tencentcloud_monitor_tmp_instance.example prom-1uvo0tjm
```
111 changes: 72 additions & 39 deletions tencentcloud/services/tmp/resource_tc_monitor_tmp_instance_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
)

// go test -i; go test -test.run TestAccTencentCloudMonitorInstance_basic -v
func TestAccTencentCloudMonitorInstance_basic(t *testing.T) {
t.Parallel()
resource.Test(t, resource.TestCase{
Expand All @@ -25,24 +26,30 @@ func TestAccTencentCloudMonitorInstance_basic(t *testing.T) {
{
Config: testInstance_basic,
Check: resource.ComposeTestCheckFunc(
testAccCheckInstanceExists("tencentcloud_monitor_tmp_instance.basic"),
resource.TestCheckResourceAttr("tencentcloud_monitor_tmp_instance.basic", "instance_name", "demo-test"),
resource.TestCheckResourceAttr("tencentcloud_monitor_tmp_instance.basic", "data_retention_time", "30"),
testAccCheckInstanceExists("tencentcloud_monitor_tmp_instance.example"),
resource.TestCheckResourceAttr("tencentcloud_monitor_tmp_instance.example", "instance_name", "tf-tmp-instance"),
resource.TestCheckResourceAttrSet("tencentcloud_monitor_tmp_instance.example", "vpc_id"),
resource.TestCheckResourceAttrSet("tencentcloud_monitor_tmp_instance.example", "subnet_id"),
resource.TestCheckResourceAttr("tencentcloud_monitor_tmp_instance.example", "data_retention_time", "30"),
resource.TestCheckResourceAttrSet("tencentcloud_monitor_tmp_instance.example", "zone"),
),
},
{
Config: testInstance_update,
Check: resource.ComposeTestCheckFunc(
testAccCheckInstanceExists("tencentcloud_monitor_tmp_instance.update"),
resource.TestCheckResourceAttr("tencentcloud_monitor_tmp_instance.update", "instance_name", "demo-test-update"),
resource.TestCheckResourceAttr("tencentcloud_monitor_tmp_instance.update", "data_retention_time", "30"),
testAccCheckInstanceExists("tencentcloud_monitor_tmp_instance.example"),
resource.TestCheckResourceAttr("tencentcloud_monitor_tmp_instance.example", "instance_name", "tf-tmp-instance-update"),
resource.TestCheckResourceAttrSet("tencentcloud_monitor_tmp_instance.example", "vpc_id"),
resource.TestCheckResourceAttrSet("tencentcloud_monitor_tmp_instance.example", "subnet_id"),
resource.TestCheckResourceAttr("tencentcloud_monitor_tmp_instance.example", "data_retention_time", "90"),
resource.TestCheckResourceAttrSet("tencentcloud_monitor_tmp_instance.example", "zone"),
),
},
//{
// ResourceName: "tencentcloud_monitor_tmp_instance.basic",
// ImportState: true,
// ImportStateVerify: true,
//},
{
ResourceName: "tencentcloud_monitor_tmp_instance.example",
ImportState: true,
ImportStateVerify: true,
},
},
})
}
Expand Down Expand Up @@ -103,34 +110,60 @@ func testAccCheckInstanceExists(r string) resource.TestCheckFunc {
}
}

const testInstanceVar = tcacctest.DefaultAzVariable + `
variable "vpc_id" {
default = "` + tcacctest.DefaultTmpVpcId + `"
const testInstance_basic = `
variable "availability_zone" {
default = "ap-guangzhou-4"
}

resource "tencentcloud_vpc" "vpc" {
cidr_block = "10.0.0.0/16"
name = "tf_monitor_vpc"
}

resource "tencentcloud_subnet" "subnet" {
vpc_id = tencentcloud_vpc.vpc.id
availability_zone = var.availability_zone
name = "tf_monitor_subnet"
cidr_block = "10.0.1.0/24"
}

resource "tencentcloud_monitor_tmp_instance" "example" {
instance_name = "tf-tmp-instance"
vpc_id = tencentcloud_vpc.vpc.id
subnet_id = tencentcloud_subnet.subnet.id
data_retention_time = 30
zone = var.availability_zone
tags = {
"createdBy" = "terraform"
}
}
variable "subnet_id" {
default = "` + tcacctest.DefaultTmpSubnetId + `"
`

const testInstance_update = `
variable "availability_zone" {
default = "ap-guangzhou-4"
}

resource "tencentcloud_vpc" "vpc" {
cidr_block = "10.0.0.0/16"
name = "tf_monitor_vpc"
}

resource "tencentcloud_subnet" "subnet" {
vpc_id = tencentcloud_vpc.vpc.id
availability_zone = var.availability_zone
name = "tf_monitor_subnet"
cidr_block = "10.0.1.0/24"
}

resource "tencentcloud_monitor_tmp_instance" "example" {
instance_name = "tf-tmp-instance-update"
vpc_id = tencentcloud_vpc.vpc.id
subnet_id = tencentcloud_subnet.subnet.id
data_retention_time = 90
zone = var.availability_zone
tags = {
"createdBy" = "terraformUpdate"
}
}
`
const testInstance_basic = testInstanceVar + `
resource "tencentcloud_monitor_tmp_instance" "basic" {
instance_name = "demo-test"
vpc_id = var.vpc_id
subnet_id = var.subnet_id
data_retention_time = 30
zone = var.default_az
tags = {
"createdBy" = "terraform"
}
}`

const testInstance_update = testInstanceVar + `
resource "tencentcloud_monitor_tmp_instance" "update" {
instance_name = "demo-test-update"
vpc_id = var.vpc_id
subnet_id = var.subnet_id
data_retention_time = 30
zone = var.default_az
tags = {
"createdBy" = "terraform"
}
}`
Loading
Loading