@@ -133,6 +133,30 @@ https://cloud.google.com/memorystore/docs/cluster/supported-instance-configurati
133
133
If not provided, encryption is disabled for the cluster. Default value: "TRANSIT_ENCRYPTION_MODE_DISABLED" Possible values: ["TRANSIT_ENCRYPTION_MODE_UNSPECIFIED", "TRANSIT_ENCRYPTION_MODE_DISABLED", "TRANSIT_ENCRYPTION_MODE_SERVER_AUTHENTICATION"]` ,
134
134
Default : "TRANSIT_ENCRYPTION_MODE_DISABLED" ,
135
135
},
136
+ "zone_distribution_config" : {
137
+ Type : schema .TypeList ,
138
+ Optional : true ,
139
+ ForceNew : true ,
140
+ Description : `Immutable. Zone distribution config for Memorystore Redis cluster.` ,
141
+ MaxItems : 1 ,
142
+ Elem : & schema.Resource {
143
+ Schema : map [string ]* schema.Schema {
144
+ "mode" : {
145
+ Type : schema .TypeString ,
146
+ Computed : true ,
147
+ Optional : true ,
148
+ ValidateFunc : verify .ValidateEnum ([]string {"MULTI_ZONE" , "SINGLE_ZONE" , "" }),
149
+ Description : `Immutable. The mode for zone distribution for Memorystore Redis cluster.
150
+ If not provided, MULTI_ZONE will be used as default Possible values: ["MULTI_ZONE", "SINGLE_ZONE"]` ,
151
+ },
152
+ "zone" : {
153
+ Type : schema .TypeString ,
154
+ Optional : true ,
155
+ Description : `Immutable. The zone for single zone Memorystore Redis cluster.` ,
156
+ },
157
+ },
158
+ },
159
+ },
136
160
"create_time" : {
137
161
Type : schema .TypeString ,
138
162
Computed : true ,
@@ -299,6 +323,12 @@ func resourceRedisClusterCreate(d *schema.ResourceData, meta interface{}) error
299
323
} else if v , ok := d .GetOkExists ("node_type" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (nodeTypeProp )) && (ok || ! reflect .DeepEqual (v , nodeTypeProp )) {
300
324
obj ["nodeType" ] = nodeTypeProp
301
325
}
326
+ zoneDistributionConfigProp , err := expandRedisClusterZoneDistributionConfig (d .Get ("zone_distribution_config" ), d , config )
327
+ if err != nil {
328
+ return err
329
+ } else if v , ok := d .GetOkExists ("zone_distribution_config" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (zoneDistributionConfigProp )) && (ok || ! reflect .DeepEqual (v , zoneDistributionConfigProp )) {
330
+ obj ["zoneDistributionConfig" ] = zoneDistributionConfigProp
331
+ }
302
332
pscConfigsProp , err := expandRedisClusterPscConfigs (d .Get ("psc_configs" ), d , config )
303
333
if err != nil {
304
334
return err
@@ -448,6 +478,9 @@ func resourceRedisClusterRead(d *schema.ResourceData, meta interface{}) error {
448
478
if err := d .Set ("node_type" , flattenRedisClusterNodeType (res ["nodeType" ], d , config )); err != nil {
449
479
return fmt .Errorf ("Error reading Cluster: %s" , err )
450
480
}
481
+ if err := d .Set ("zone_distribution_config" , flattenRedisClusterZoneDistributionConfig (res ["zoneDistributionConfig" ], d , config )); err != nil {
482
+ return fmt .Errorf ("Error reading Cluster: %s" , err )
483
+ }
451
484
if err := d .Set ("discovery_endpoints" , flattenRedisClusterDiscoveryEndpoints (res ["discoveryEndpoints" ], d , config )); err != nil {
452
485
return fmt .Errorf ("Error reading Cluster: %s" , err )
453
486
}
@@ -685,6 +718,29 @@ func flattenRedisClusterNodeType(v interface{}, d *schema.ResourceData, config *
685
718
return v
686
719
}
687
720
721
+ func flattenRedisClusterZoneDistributionConfig (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
722
+ if v == nil {
723
+ return nil
724
+ }
725
+ original := v .(map [string ]interface {})
726
+ if len (original ) == 0 {
727
+ return nil
728
+ }
729
+ transformed := make (map [string ]interface {})
730
+ transformed ["mode" ] =
731
+ flattenRedisClusterZoneDistributionConfigMode (original ["mode" ], d , config )
732
+ transformed ["zone" ] =
733
+ flattenRedisClusterZoneDistributionConfigZone (original ["zone" ], d , config )
734
+ return []interface {}{transformed }
735
+ }
736
+ func flattenRedisClusterZoneDistributionConfigMode (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
737
+ return v
738
+ }
739
+
740
+ func flattenRedisClusterZoneDistributionConfigZone (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
741
+ return v
742
+ }
743
+
688
744
func flattenRedisClusterDiscoveryEndpoints (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
689
745
if v == nil {
690
746
return v
@@ -918,6 +974,40 @@ func expandRedisClusterNodeType(v interface{}, d tpgresource.TerraformResourceDa
918
974
return v , nil
919
975
}
920
976
977
+ func expandRedisClusterZoneDistributionConfig (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
978
+ l := v .([]interface {})
979
+ if len (l ) == 0 || l [0 ] == nil {
980
+ return nil , nil
981
+ }
982
+ raw := l [0 ]
983
+ original := raw .(map [string ]interface {})
984
+ transformed := make (map [string ]interface {})
985
+
986
+ transformedMode , err := expandRedisClusterZoneDistributionConfigMode (original ["mode" ], d , config )
987
+ if err != nil {
988
+ return nil , err
989
+ } else if val := reflect .ValueOf (transformedMode ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
990
+ transformed ["mode" ] = transformedMode
991
+ }
992
+
993
+ transformedZone , err := expandRedisClusterZoneDistributionConfigZone (original ["zone" ], d , config )
994
+ if err != nil {
995
+ return nil , err
996
+ } else if val := reflect .ValueOf (transformedZone ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
997
+ transformed ["zone" ] = transformedZone
998
+ }
999
+
1000
+ return transformed , nil
1001
+ }
1002
+
1003
+ func expandRedisClusterZoneDistributionConfigMode (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
1004
+ return v , nil
1005
+ }
1006
+
1007
+ func expandRedisClusterZoneDistributionConfigZone (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
1008
+ return v , nil
1009
+ }
1010
+
921
1011
func expandRedisClusterPscConfigs (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
922
1012
l := v .([]interface {})
923
1013
req := make ([]interface {}, 0 , len (l ))
0 commit comments