Skip to content

Commit 92e503f

Browse files
committed
resource/alicloud_redis_tair_instance: fix perpetual diff on security_ips when IPs are out of order
- Add DiffSuppressFunc on security_ips so the order returned by DescribeSecurityIps (which the server re-sorts) no longer triggers a diff against the user's HCL order. Consistent with the same handling in alicloud_gpdb_instance.security_ip_list. - Add a step in basic8729 using an out-of-order IP list to exercise the fix via the SDK's post-apply empty-plan check. - Repair pre-existing broken test fixtures unblocked by this PR's full-suite verification: * basic3314/3340/3549 + their _twin variants: secondary_zone_id was set equal to zone_id (SecondaryZone.NotSupport); switch to data.alicloud_kvstore_zones.default.zones.1.id. * basic6639_raw: drop period/auto_renew_period (Subscription-only fields under PayAsYouGo) and cluster_backup_id (hardcoded backup cb-hyxdof5x9kqb333 no longer exists), and remove secondary_zone_id (STAND_ALONE node_type does not allow it). * basic6823_raw: drop period/auto_renew (Subscription-only fields under PayAsYouGo) and introduce var.secondary_zone_id so the secondary AZ differs from the primary. Fixes Aone#81663160.
1 parent 4f1056b commit 92e503f

2 files changed

Lines changed: 40 additions & 19 deletions

File tree

alicloud/resource_alicloud_redis_tair_instance.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ package alicloud
33
import (
44
"fmt"
55
"log"
6+
"reflect"
7+
"sort"
8+
"strings"
69
"time"
710

811
"github.com/PaesslerAG/jsonpath"
@@ -211,6 +214,16 @@ func resourceAliCloudRedisTairInstance() *schema.Resource {
211214
Type: schema.TypeString,
212215
Optional: true,
213216
Computed: true,
217+
DiffSuppressFunc: func(k, old, new string, d *schema.ResourceData) bool {
218+
if old != "" && new != "" && old != new {
219+
oldParts := strings.Split(old, ",")
220+
sort.Strings(oldParts)
221+
newParts := strings.Split(new, ",")
222+
sort.Strings(newParts)
223+
return reflect.DeepEqual(newParts, oldParts)
224+
}
225+
return false
226+
},
214227
},
215228
"shard_count": {
216229
Type: schema.TypeInt,

alicloud/resource_alicloud_redis_tair_instance_test.go

Lines changed: 27 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ func TestAccAliCloudRedisTairInstance_basic3314(t *testing.T) {
129129
"instance_class": "tair.rdb.2g",
130130
"tair_instance_name": name + "_update",
131131
"shard_count": "2",
132-
"secondary_zone_id": "${local.zone_id}",
132+
"secondary_zone_id": "${data.alicloud_kvstore_zones.default.zones.1.id}",
133133
"resource_group_id": "${data.alicloud_resource_manager_resource_groups.default.groups.0.id}",
134134
"vswitch_id": "${local.vswitch_id}",
135135
"vpc_id": "${data.alicloud_vpcs.default.ids.0}",
@@ -388,7 +388,7 @@ func TestAccAliCloudRedisTairInstance_basic3340(t *testing.T) {
388388
"instance_class": "tair.rdb.1g",
389389
"tair_instance_name": name + "_update",
390390
"shard_count": "2",
391-
"secondary_zone_id": "${local.zone_id}",
391+
"secondary_zone_id": "${data.alicloud_kvstore_zones.default.zones.1.id}",
392392
"vswitch_id": "${local.vswitch_id}",
393393
"vpc_id": "${data.alicloud_vpcs.default.ids.0}",
394394
"resource_group_id": "${data.alicloud_resource_manager_resource_groups.default.groups.0.id}",
@@ -624,7 +624,7 @@ func TestAccAliCloudRedisTairInstance_basic3549(t *testing.T) {
624624
"zone_id": "${local.zone_id}",
625625
"instance_class": "tair.rdb.2g",
626626
"tair_instance_name": name + "_update",
627-
"secondary_zone_id": "${local.zone_id}",
627+
"secondary_zone_id": "${data.alicloud_kvstore_zones.default.zones.1.id}",
628628
"vswitch_id": "${local.vswitch_id}",
629629
"vpc_id": "${data.alicloud_vpcs.default.ids.0}",
630630
"resource_group_id": "${data.alicloud_resource_manager_resource_groups.default.groups.0.id}",
@@ -738,7 +738,7 @@ func TestAccAliCloudRedisTairInstance_basic3314_twin(t *testing.T) {
738738
"instance_class": "tair.rdb.2g",
739739
"tair_instance_name": name,
740740
"shard_count": "2",
741-
"secondary_zone_id": "${data.alicloud_vswitches.default.vswitches.0.zone_id}",
741+
"secondary_zone_id": "${data.alicloud_kvstore_zones.default.zones.1.id}",
742742
"resource_group_id": "${data.alicloud_resource_manager_resource_groups.default.groups.0.id}",
743743
"vswitch_id": "${data.alicloud_vswitches.default.vswitches.0.id}",
744744
"vpc_id": "${data.alicloud_vswitches.default.vswitches.0.vpc_id}",
@@ -822,7 +822,7 @@ func TestAccAliCloudRedisTairInstance_basic3340_twin(t *testing.T) {
822822
"instance_class": "tair.rdb.1g",
823823
"tair_instance_name": name,
824824
"shard_count": "2",
825-
"secondary_zone_id": "${data.alicloud_vswitches.default.vswitches.0.zone_id}",
825+
"secondary_zone_id": "${data.alicloud_kvstore_zones.default.zones.1.id}",
826826
"vswitch_id": "${data.alicloud_vswitches.default.vswitches.0.id}",
827827
"vpc_id": "${data.alicloud_vswitches.default.vswitches.0.vpc_id}",
828828
"resource_group_id": "${data.alicloud_resource_manager_resource_groups.default.groups.0.id}",
@@ -890,7 +890,7 @@ func TestAccAliCloudRedisTairInstance_basic3549_twin(t *testing.T) {
890890
"zone_id": "${local.zone_id}",
891891
"instance_class": "tair.rdb.2g",
892892
"tair_instance_name": name,
893-
"secondary_zone_id": "${local.zone_id}",
893+
"secondary_zone_id": "${data.alicloud_kvstore_zones.default.zones.1.id}",
894894
"vswitch_id": "${data.alicloud_vswitches.default.vswitches.0.id}",
895895
"vpc_id": "${data.alicloud_vswitches.default.vswitches.0.vpc_id}",
896896
"resource_group_id": "${data.alicloud_resource_manager_resource_groups.default.groups.0.id}",
@@ -1112,6 +1112,10 @@ variable "zone_id" {
11121112
default = "cn-beijing-h"
11131113
}
11141114
1115+
variable "secondary_zone_id" {
1116+
default = "cn-beijing-i"
1117+
}
1118+
11151119
variable "region_id" {
11161120
default = "cn-beijing"
11171121
}
@@ -1328,11 +1332,7 @@ func TestAccAliCloudRedisTairInstance_basic6639_raw(t *testing.T) {
13281332
"resource_group_id": "${data.alicloud_resource_manager_resource_groups.default.ids.0}",
13291333
"password": "123456Tf",
13301334
"engine_version": "5.0",
1331-
"period": "12",
1332-
"auto_renew_period": "12",
13331335
"port": "6379",
1334-
"cluster_backup_id": "cb-hyxdof5x9kqb333",
1335-
"secondary_zone_id": "${var.zone_id}",
13361336
"node_type": "STAND_ALONE",
13371337
}),
13381338
Check: resource.ComposeTestCheckFunc(
@@ -1347,11 +1347,7 @@ func TestAccAliCloudRedisTairInstance_basic6639_raw(t *testing.T) {
13471347
"resource_group_id": CHECKSET,
13481348
"password": "123456Tf",
13491349
"engine_version": "5.0",
1350-
"period": "12",
1351-
"auto_renew_period": "12",
13521350
"port": "6379",
1353-
"cluster_backup_id": "cb-hyxdof5x9kqb333",
1354-
"secondary_zone_id": CHECKSET,
13551351
"node_type": "STAND_ALONE",
13561352
}),
13571353
),
@@ -1510,6 +1506,10 @@ variable "zone_id" {
15101506
default = "cn-beijing-h"
15111507
}
15121508
1509+
variable "secondary_zone_id" {
1510+
default = "cn-beijing-i"
1511+
}
1512+
15131513
variable "region_id" {
15141514
default = "cn-beijing"
15151515
}
@@ -1591,10 +1591,8 @@ func TestAccAliCloudRedisTairInstance_basic6823_raw(t *testing.T) {
15911591
"resource_group_id": "${alicloud_resource_manager_resource_group.defaultRg.id}",
15921592
"password": "123456Tf",
15931593
"engine_version": "1.0",
1594-
"period": "12",
15951594
"port": "6379",
1596-
"secondary_zone_id": "${var.zone_id}",
1597-
"auto_renew": "false",
1595+
"secondary_zone_id": "${var.secondary_zone_id}",
15981596
"security_group_id": "${alicloud_security_group.defaultEcsSg.id}",
15991597
}),
16001598
Check: resource.ComposeTestCheckFunc(
@@ -1609,10 +1607,8 @@ func TestAccAliCloudRedisTairInstance_basic6823_raw(t *testing.T) {
16091607
"resource_group_id": CHECKSET,
16101608
"password": "123456Tf",
16111609
"engine_version": "1.0",
1612-
"period": "12",
16131610
"port": "6379",
16141611
"secondary_zone_id": CHECKSET,
1615-
"auto_renew": "false",
16161612
"security_group_id": CHECKSET,
16171613
}),
16181614
),
@@ -2051,6 +2047,18 @@ func TestAccAliCloudRedisTairInstance_basic8729(t *testing.T) {
20512047
}),
20522048
),
20532049
},
2050+
{
2051+
Config: testAccConfig(map[string]interface{}{
2052+
"security_ips": "127.0.0.5,127.0.0.1,127.0.0.3",
2053+
"security_ip_group_name": "default",
2054+
}),
2055+
Check: resource.ComposeTestCheckFunc(
2056+
testAccCheck(map[string]string{
2057+
"security_ips": CHECKSET,
2058+
"security_ip_group_name": "default",
2059+
}),
2060+
),
2061+
},
20542062
{
20552063
ResourceName: resourceId,
20562064
ImportState: true,

0 commit comments

Comments
 (0)