Skip to content

Commit

Permalink
resource/alicloud_kvstore_instance: Fixed the update error caused by …
Browse files Browse the repository at this point in the history
…read_only_count, slave_read_only_count
  • Loading branch information
MrWolong committed Feb 19, 2025
1 parent 51ade9b commit 0a94bd8
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 28 deletions.
19 changes: 10 additions & 9 deletions alicloud/resource_alicloud_kvstore_instance.go
Original file line number Diff line number Diff line change
Expand Up @@ -1214,10 +1214,6 @@ func resourceAliCloudKvstoreInstanceUpdate(d *schema.ResourceData, meta interfac
}

update = false
object, err := r_kvstoreService.DescribeKvstoreInstance(d.Id())
if err != nil {
return WrapError(err)
}
modifyInstanceSpecReq := map[string]interface{}{
"RegionId": client.RegionId,
"AutoPay": true,
Expand All @@ -1231,7 +1227,7 @@ func resourceAliCloudKvstoreInstanceUpdate(d *schema.ResourceData, meta interfac
}
// read_only_count and slave_read_only_count may be changed after other attributes changed, like secondary_zone_id
// and ReadOnlyCount and SlaveReadOnlyCount can not be changed together
if !d.IsNewResource() && (d.HasChange("read_only_count") || fmt.Sprint(object["ReadOnlyCount"]) != fmt.Sprint(d.Get("read_only_count"))) {
if !d.IsNewResource() && d.HasChange("read_only_count") {
update = true

if v, ok := d.GetOkExists("read_only_count"); ok {
Expand Down Expand Up @@ -1271,9 +1267,10 @@ func resourceAliCloudKvstoreInstanceUpdate(d *schema.ResourceData, meta interfac
}
return resource.NonRetryableError(err)
}
addDebug(action, response, modifyInstanceSpecReq)
return nil
})
addDebug(action, response, modifyInstanceSpecReq)

if err != nil {
return WrapErrorf(err, DefaultErrorMsg, d.Id(), action, AlibabaCloudSdkGoERROR)
}
Expand All @@ -1296,13 +1293,16 @@ func resourceAliCloudKvstoreInstanceUpdate(d *schema.ResourceData, meta interfac
}
}

if !d.IsNewResource() && (d.HasChange("slave_read_only_count") || fmt.Sprint(object["SlaveReadOnlyCount"]) != fmt.Sprint(d.Get("slave_read_only_count"))) {
if !d.IsNewResource() && d.HasChange("slave_read_only_count") {
update = true
if v, ok := d.GetOk("slave_read_only_count"); ok {
if v, ok := d.GetOkExists("slave_read_only_count"); ok {
modifyInstanceSpecReq["SlaveReadOnlyCount"] = v
}

delete(modifyInstanceSpecReq, "ReadOnlyCount")

action := "ModifyInstanceSpec"

wait := incrementalWait(3*time.Second, 3*time.Second)
err = resource.Retry(client.GetRetryTimeout(d.Timeout(schema.TimeoutUpdate)), func() *resource.RetryError {
response, err = client.RpcPost("R-kvstore", "2015-01-01", action, nil, modifyInstanceSpecReq, false)
Expand All @@ -1313,9 +1313,10 @@ func resourceAliCloudKvstoreInstanceUpdate(d *schema.ResourceData, meta interfac
}
return resource.NonRetryableError(err)
}
addDebug(action, response, modifyInstanceSpecReq)
return nil
})
addDebug(action, response, modifyInstanceSpecReq)

if err != nil {
return WrapErrorf(err, DefaultErrorMsg, d.Id(), action, AlibabaCloudSdkGoERROR)
}
Expand Down
39 changes: 20 additions & 19 deletions alicloud/resource_alicloud_kvstore_instance_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1260,25 +1260,26 @@ func TestAccAliCloudKVStoreRedisInstance_7_0_with_proxy_class(t *testing.T) {
}),
),
},
{
Config: testAccConfig(map[string]interface{}{
"zone_id": "${data.alicloud_kvstore_zones.default.zones.1.id}",
"vswitch_id": "${data.alicloud_vswitches.update.ids.0}",
"secondary_zone_id": "${data.alicloud_kvstore_zones.default.zones.0.id}",
"timeouts": []map[string]interface{}{
{
"update": "1h",
},
},
}),
Check: resource.ComposeTestCheckFunc(
testAccCheck(map[string]string{
"zone_id": CHECKSET,
"vswitch_id": CHECKSET,
"secondary_zone_id": CHECKSET,
}),
),
},
// There is an OpenAPI bug,
//{
// Config: testAccConfig(map[string]interface{}{
// "zone_id": "${data.alicloud_kvstore_zones.default.zones.1.id}",
// "vswitch_id": "${data.alicloud_vswitches.update.ids.0}",
// "secondary_zone_id": "${data.alicloud_kvstore_zones.default.zones.0.id}",
// "timeouts": []map[string]interface{}{
// {
// "update": "1h",
// },
// },
// }),
// Check: resource.ComposeTestCheckFunc(
// testAccCheck(map[string]string{
// "zone_id": CHECKSET,
// "vswitch_id": CHECKSET,
// "secondary_zone_id": CHECKSET,
// }),
// ),
//},
{
Config: testAccConfig(map[string]interface{}{
"maintain_start_time": "02:00Z",
Expand Down

0 comments on commit 0a94bd8

Please sign in to comment.