Skip to content

Commit f82808b

Browse files
committed
fix(cynosdb): [] support cynos_version : command not found fields
1 parent 47db7b1 commit f82808b

File tree

4 files changed

+79
-0
lines changed

4 files changed

+79
-0
lines changed

tencentcloud/services/cynosdb/extension_cynosdb.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -483,6 +483,12 @@ func TencentCynosdbClusterBaseInfo() map[string]*schema.Schema {
483483
Computed: true,
484484
Description: "Serverless cluster status. NOTE: This is a readonly attribute, to modify, please set `serverless_status_flag`.",
485485
},
486+
"cynos_version": {
487+
Type: schema.TypeString,
488+
Optional: true,
489+
Computed: true,
490+
Description: "Kernel version, you can enter it when modifying.",
491+
},
486492
}
487493

488494
for k, v := range TencentCynosdbInstanceBaseInfo() {

tencentcloud/services/cynosdb/resource_tc_cynosdb_cluster.go

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,10 @@ func resourceTencentCloudCynosdbClusterCreate(d *schema.ResourceData, meta inter
201201
}
202202
}
203203

204+
if v, ok := d.GetOk("cynos_version"); ok && v != "" {
205+
return fmt.Errorf("Setting cynos_version is not supported when creating a cluster")
206+
}
207+
204208
request.PayMode = &chargeType
205209
var response *cynosdb.CreateClustersResponse
206210
var err error
@@ -588,6 +592,16 @@ func resourceTencentCloudCynosdbClusterRead(d *schema.ResourceData, meta interfa
588592
_ = d.Set("param_items", resultParamItems)
589593
}
590594

595+
if v, ok := d.GetOkExists("force_delete"); ok {
596+
_ = d.Set("force_delete", v)
597+
} else {
598+
_ = d.Set("force_delete", false)
599+
}
600+
601+
if cluster.CynosVersion != nil {
602+
_ = d.Set("cynos_version", cluster.CynosVersion)
603+
}
604+
591605
return nil
592606
}
593607

@@ -944,6 +958,36 @@ func resourceTencentCloudCynosdbClusterUpdate(d *schema.ResourceData, meta inter
944958
}
945959
}
946960

961+
if d.HasChange("cynos_version") {
962+
cynosVersion := d.Get("cynos_version").(string)
963+
flowId, err := cynosdbService.UpgradeClusterVersion(ctx, clusterId, cynosVersion)
964+
if err != nil {
965+
return err
966+
}
967+
968+
service := CynosdbService{client: meta.(tccommon.ProviderMeta).GetAPIV3Conn()}
969+
err = resource.Retry(6*tccommon.ReadRetryTimeout, func() *resource.RetryError {
970+
ok, err := service.DescribeFlow(ctx, flowId)
971+
if err != nil {
972+
if _, ok := err.(*sdkErrors.TencentCloudSDKError); !ok {
973+
return resource.RetryableError(err)
974+
} else {
975+
return resource.NonRetryableError(err)
976+
}
977+
}
978+
979+
if ok {
980+
return nil
981+
} else {
982+
return resource.RetryableError(fmt.Errorf("update cynosdb cynos_version is processing"))
983+
}
984+
})
985+
986+
if err != nil {
987+
return err
988+
}
989+
}
990+
947991
d.Partial(false)
948992

949993
return resourceTencentCloudCynosdbClusterRead(d, meta)

tencentcloud/services/cynosdb/service_tencentcloud_cynosdb.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2927,3 +2927,31 @@ func (me *CynosdbService) DescribeCynosdbBackupConfigById(ctx context.Context, c
29272927
ret = response.Response
29282928
return
29292929
}
2930+
2931+
func (me *CynosdbService) UpgradeClusterVersion(ctx context.Context, clusterId, cynosVersion string) (flowId int64, errRet error) {
2932+
logId := tccommon.GetLogId(ctx)
2933+
request := cynosdb.NewUpgradeClusterVersionRequest()
2934+
response := cynosdb.NewUpgradeClusterVersionResponse()
2935+
2936+
request.ClusterId = &clusterId
2937+
request.CynosVersion = &cynosVersion
2938+
request.UpgradeType = helper.String(CYNOSDB_UPGRADE_IMMEDIATE)
2939+
2940+
errRet = resource.Retry(tccommon.WriteRetryTimeout*2, func() *resource.RetryError {
2941+
ratelimit.Check(request.GetAction())
2942+
response, errRet = me.client.UseCynosdbClient().UpgradeClusterVersion(request)
2943+
if errRet != nil {
2944+
log.Printf("[CRITAL]%s api[%s] fail, reason:%s", logId, request.GetAction(), errRet.Error())
2945+
return tccommon.RetryError(errRet)
2946+
}
2947+
return nil
2948+
})
2949+
if errRet != nil {
2950+
return
2951+
}
2952+
if response != nil && response.Response != nil {
2953+
flowId = *response.Response.FlowId
2954+
}
2955+
2956+
return
2957+
}

website/docs/r/cynosdb_cluster.html.markdown

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,7 @@ The following arguments are supported:
219219
* `auto_pause` - (Optional, String) Specify whether the cluster can auto-pause while `db_mode` is `SERVERLESS`. Values: `yes` (default), `no`.
220220
* `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.
221221
* `charge_type` - (Optional, String, ForceNew) The charge type of instance. Valid values are `PREPAID` and `POSTPAID_BY_HOUR`. Default value is `POSTPAID_BY_HOUR`.
222+
* `cynos_version` - (Optional, String) Kernel version, you can enter it when modifying.
222223
* `db_mode` - (Optional, String) Specify DB mode, only available when `db_type` is `MYSQL`. Values: `NORMAL` (Default), `SERVERLESS`.
223224
* `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.
224225
* `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.

0 commit comments

Comments
 (0)