Skip to content

fix(cynosdb): [122484248] support cynos_version fields #3240

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 2 commits into from
Mar 26, 2025
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/3240.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:enhancement
resource/tencentcloud_cynosdb_cluster: support `cynos_version` fileds.
```
6 changes: 6 additions & 0 deletions tencentcloud/services/cynosdb/extension_cynosdb.go
Original file line number Diff line number Diff line change
Expand Up @@ -483,6 +483,12 @@ func TencentCynosdbClusterBaseInfo() map[string]*schema.Schema {
Computed: true,
Description: "Serverless cluster status. NOTE: This is a readonly attribute, to modify, please set `serverless_status_flag`.",
},
"cynos_version": {
Type: schema.TypeString,
Optional: true,
Computed: true,
Description: "Kernel version, you can enter it when modifying.",
},
}

for k, v := range TencentCynosdbInstanceBaseInfo() {
Expand Down
44 changes: 44 additions & 0 deletions tencentcloud/services/cynosdb/resource_tc_cynosdb_cluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,10 @@ func resourceTencentCloudCynosdbClusterCreate(d *schema.ResourceData, meta inter
}
}

if v, ok := d.GetOk("cynos_version"); ok && v != "" {
return fmt.Errorf("Setting cynos_version is not supported when creating a cluster")
}

request.PayMode = &chargeType
var response *cynosdb.CreateClustersResponse
var err error
Expand Down Expand Up @@ -588,6 +592,16 @@ func resourceTencentCloudCynosdbClusterRead(d *schema.ResourceData, meta interfa
_ = d.Set("param_items", resultParamItems)
}

if v, ok := d.GetOkExists("force_delete"); ok {
_ = d.Set("force_delete", v)
} else {
_ = d.Set("force_delete", false)
}

if cluster.CynosVersion != nil {
_ = d.Set("cynos_version", cluster.CynosVersion)
}

return nil
}

Expand Down Expand Up @@ -944,6 +958,36 @@ func resourceTencentCloudCynosdbClusterUpdate(d *schema.ResourceData, meta inter
}
}

if d.HasChange("cynos_version") {
cynosVersion := d.Get("cynos_version").(string)
flowId, err := cynosdbService.UpgradeClusterVersion(ctx, clusterId, cynosVersion)
if err != nil {
return err
}

service := CynosdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
err = resource.Retry(6*tccommon.ReadRetryTimeout, func() *resource.RetryError {
ok, err := service.DescribeFlow(ctx, flowId)
if err != nil {
if _, ok := err.(*sdkErrors.TencentCloudSDKError); !ok {
return resource.RetryableError(err)
} else {
return resource.NonRetryableError(err)
}
}

if ok {
return nil
} else {
return resource.RetryableError(fmt.Errorf("update cynosdb cynos_version is processing"))
}
})

if err != nil {
return err
}
}

d.Partial(false)

return resourceTencentCloudCynosdbClusterRead(d, meta)
Expand Down
28 changes: 28 additions & 0 deletions tencentcloud/services/cynosdb/service_tencentcloud_cynosdb.go
Original file line number Diff line number Diff line change
Expand Up @@ -2927,3 +2927,31 @@ func (me *CynosdbService) DescribeCynosdbBackupConfigById(ctx context.Context, c
ret = response.Response
return
}

func (me *CynosdbService) UpgradeClusterVersion(ctx context.Context, clusterId, cynosVersion string) (flowId int64, errRet error) {
logId := tccommon.GetLogId(ctx)
request := cynosdb.NewUpgradeClusterVersionRequest()
response := cynosdb.NewUpgradeClusterVersionResponse()

request.ClusterId = &clusterId
request.CynosVersion = &cynosVersion
request.UpgradeType = helper.String(CYNOSDB_UPGRADE_IMMEDIATE)

errRet = resource.Retry(tccommon.WriteRetryTimeout*2, func() *resource.RetryError {
ratelimit.Check(request.GetAction())
response, errRet = me.client.UseCynosdbClient().UpgradeClusterVersion(request)
if errRet != nil {
log.Printf("[CRITAL]%s api[%s] fail, reason:%s", logId, request.GetAction(), errRet.Error())
return tccommon.RetryError(errRet)
}
return nil
})
if errRet != nil {
return
}
if response != nil && response.Response != nil {
flowId = *response.Response.FlowId
}

return
}
1 change: 1 addition & 0 deletions website/docs/r/cynosdb_cluster.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,7 @@ The following arguments are supported:
* `auto_pause` - (Optional, String) Specify whether the cluster can auto-pause while `db_mode` is `SERVERLESS`. Values: `yes` (default), `no`.
* `auto_renew_flag` - (Optional, Int) Auto renew flag. Valid values are `0`(MANUAL_RENEW), `1`(AUTO_RENEW). Default value is `0`. Only works for PREPAID cluster.
* `charge_type` - (Optional, String, ForceNew) The charge type of instance. Valid values are `PREPAID` and `POSTPAID_BY_HOUR`. Default value is `POSTPAID_BY_HOUR`.
* `cynos_version` - (Optional, String) Kernel version, you can enter it when modifying.
* `db_mode` - (Optional, String) Specify DB mode, only available when `db_type` is `MYSQL`. Values: `NORMAL` (Default), `SERVERLESS`.
* `force_delete` - (Optional, Bool) Indicate whether to delete cluster instance directly or not. Default is false. If set true, the cluster and its `All RELATED INSTANCES` will be deleted instead of staying recycle bin. Note: works for both `PREPAID` and `POSTPAID_BY_HOUR` cluster.
* `instance_cpu_core` - (Optional, Int) The number of CPU cores of read-write type instance in the CynosDB cluster. Required while creating normal cluster. Note: modification of this field will take effect immediately, if want to upgrade on maintenance window, please upgrade from console.
Expand Down
Loading