Skip to content
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
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,11 @@ require (
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdb v1.0.199
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cdn v1.0.199
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cfs v1.0.199
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ckafka v1.0.376
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ckafka v1.0.403
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.283
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.199
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cls v1.0.377
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.398
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.403
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.385
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.359
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dayu v1.0.335
Expand Down
8 changes: 8 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -466,6 +466,10 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cfs v1.0.199 h1:VyOKZOl
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cfs v1.0.199/go.mod h1:9ldm0D1ToaztnlD2bFC5yjMMqvQfVeAMhvcoCCVnZb8=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ckafka v1.0.376 h1:q7TNQ/5zalD483Z6ufGtxeZIEgO0eUN+5M9y1qxg/ck=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ckafka v1.0.376/go.mod h1:YVajJ5YZ8YIFtecbXknudDPXLfG1oRwrL6GxZel5rY8=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ckafka v1.0.399 h1:GWa+5s6tbgf5B1AakoirllClfdOmUUSZpb/qso7YiuE=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ckafka v1.0.399/go.mod h1:IvRRjtjGHNzOeH+r0CuyTKeZRZhwqqFzPw6jgAMK9NM=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ckafka v1.0.403 h1:rD9H4dQkULnRpq1BiD2KuDKsd9VEKHun2gMT+V6DNOE=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ckafka v1.0.403/go.mod h1:yWwwGj2gV0hRPfM9GXG4EgDee0cEWYcAwl/M8CTTvzM=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.283 h1:8pML0UtXgui5WZFLLrCv6QdR8e0fUva0V4W5wSgTCSc=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/clb v1.0.283/go.mod h1:zgARzAnsLzpLhdpAHrHTUilOXytH9aEJy5ssCdizVV0=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cloudaudit v1.0.199 h1:o41qFAFJGPDTLNWXs7nLw4fsDxFUCe5gkO2YXI9Ye6Q=
Expand All @@ -489,6 +493,10 @@ github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.397 h1:oYU+
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.397/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.398 h1:+VbaPRPCKAplIvwj9oGEOTbZmYiEX9AeqaTCPqLzwS8=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.398/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.399 h1:iTkEybEo9axJoE7FXnAS1jP6qGdgLi1FMFBNxPk+99k=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.399/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.403 h1:61iPtR+lIVT8BtAaviUx0t5InIHcJ/N51xQdezu2r1s=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.403/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.385 h1:8bwloRxRwSADSK48KxaUeO9JHmmgniNGJbA7Or/HUEk=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cvm v1.0.385/go.mod h1:PMxA0L4o8Fbx/6+ju1cAMAU7x2bV4C6e/LTqVe745yM=
github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/cynosdb v1.0.359 h1:cNKqelPgUxrJkLY0Azd2QHr/UMYOPPnmqs88clt2akk=
Expand Down
57 changes: 44 additions & 13 deletions tencentcloud/resource_tc_ckafka_instance.go
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,6 @@ func resourceTencentCloudCkafkaInstance() *schema.Resource {
"zone_id": {
Type: schema.TypeInt,
Required: true,
ForceNew: true,
Description: "Available zone id.",
DiffSuppressFunc: func(k, old, new string, d *schema.ResourceData) bool {
multiZone := d.Get("multi_zone_flag").(bool)
Expand All @@ -99,19 +98,16 @@ func resourceTencentCloudCkafkaInstance() *schema.Resource {
"period": {
Type: schema.TypeInt,
Optional: true,
ForceNew: true,
Description: "Prepaid purchase time, such as 1, is one month.",
},
"vpc_id": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
Description: "Vpc id.",
},
"subnet_id": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
Description: "Subnet id.",
},
"msg_retention_time": {
Expand All @@ -125,7 +121,6 @@ func resourceTencentCloudCkafkaInstance() *schema.Resource {
"renew_flag": {
Type: schema.TypeInt,
Optional: true,
ForceNew: true,
Computed: true,
Description: "Prepaid automatic renewal mark, 0 means the default state, the initial state," +
" 1 means automatic renewal, 2 means clear no automatic renewal (user setting).",
Expand All @@ -134,50 +129,43 @@ func resourceTencentCloudCkafkaInstance() *schema.Resource {
Type: schema.TypeString,
Optional: true,
Computed: true,
ForceNew: true,
Description: "Kafka version (0.10.2/1.1.1/2.4.1).",
},
"band_width": {
Type: schema.TypeInt,
Optional: true,
Computed: true,
ForceNew: true,
Description: "Instance bandwidth in MBps.",
},
"disk_size": {
Type: schema.TypeInt,
Optional: true,
Computed: true,
ForceNew: true,
Description: "Disk Size. Its interval varies with bandwidth, and the input must be within the interval, which can be viewed through the control. " +
"If it is not within the interval, the plan will cause a change when first created.",
},
"partition": {
Type: schema.TypeInt,
Optional: true,
Computed: true,
ForceNew: true,
Description: "Partition Size. Its interval varies with bandwidth, and the input must be within the interval, which can be viewed through the control. " +
"If it is not within the interval, the plan will cause a change when first created.",
},
"multi_zone_flag": {
Type: schema.TypeBool,
Optional: true,
ForceNew: true,
Description: "Indicates whether the instance is multi zones. NOTE: if set to `true`, `zone_ids` must set together.",
},
"zone_ids": {
Type: schema.TypeSet,
Optional: true,
ForceNew: true,
Description: "List of available zone id. NOTE: this argument must set together with `multi_zone_flag`.",
RequiredWith: []string{"multi_zone_flag"},
Elem: &schema.Schema{Type: schema.TypeInt},
},
"tags": {
Type: schema.TypeList,
Optional: true,
ForceNew: true,
Description: "Partition size, the professional version does not need tag.",
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
Expand All @@ -198,7 +186,6 @@ func resourceTencentCloudCkafkaInstance() *schema.Resource {
Type: schema.TypeString,
Optional: true,
Computed: true,
ForceNew: true,
Description: "Type of disk.",
},
"config": {
Expand Down Expand Up @@ -583,6 +570,15 @@ func resourceTencentCloudCkafkaInstanceUpdate(d *schema.ResourceData, meta inter
service := CkafkaService{
client: meta.(*TencentCloudClient).apiV3Conn,
}

if d.HasChange("zone_id") || d.HasChange("period") || d.HasChange("vpc_id") || d.HasChange("subnet_id") ||
d.HasChange("renew_flag") || d.HasChange("kafka_version") || d.HasChange("multi_zone_flag") || d.HasChange("zone_ids") ||
d.HasChange("tags") || d.HasChange("disk_type") {

return fmt.Errorf("parms like 'zone_id | period | vpc_id | subnet_id | renew_flag | " +
"kafka_version | multi_zone_flag | zone_ids | tags | disk_type', do not support change now.")
}

instanceId := d.Id()
request := ckafka.NewModifyInstanceAttributesRequest()
request.InstanceId = &instanceId
Expand Down Expand Up @@ -654,6 +650,41 @@ func resourceTencentCloudCkafkaInstanceUpdate(d *schema.ResourceData, meta inter
return fmt.Errorf("[API]Set kafka instance attributes fail, reason:%s", error.Error())
}

if d.HasChange("band_width") || d.HasChange("disk_size") || d.HasChange("partition") {
request := ckafka.NewModifyInstancePreRequest()
request.InstanceId = helper.String(instanceId)
if v, ok := d.GetOk("band_width"); ok {
request.BandWidth = helper.Int64(int64(v.(int)))
}
if v, ok := d.GetOk("disk_size"); ok {
request.DiskSize = helper.Int64(int64(v.(int)))
}
if v, ok := d.GetOk("partition"); ok {
request.Partition = helper.Int64(int64(v.(int)))
}

_, err := service.client.UseCkafkaClient().ModifyInstancePre(request)
if err != nil {
return fmt.Errorf("[CRITAL]%s api[%s] fail, request body [%s], reason[%s]", logId,
request.GetAction(), request.ToJsonString(), err.Error())
}

err = resource.Retry(5*readRetryTimeout, func() *resource.RetryError {
_, ready, err := service.CheckCkafkaInstanceReady(ctx, instanceId)
if err != nil {
return resource.NonRetryableError(err)
}
if ready {
return nil
}
return resource.RetryableError(fmt.Errorf("upgrade ckafka instance task is processing"))
})

if err != nil {
return err
}
}

return resourceTencentCloudCkafkaInstanceRead(d, meta)
}

Expand Down
Loading