Skip to content

Commit 2264509

Browse files
authored
feat(redis): add port and raw IPs to private network endpoint (#3246)
1 parent 95a486c commit 2264509

File tree

5 files changed

+38
-0
lines changed

5 files changed

+38
-0
lines changed

docs/data-sources/redis_cluster.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ In addition to all above arguments, the following attributes are exported:
5050
- `public_network` - Public network details.
5151
- `private_network` - List of private networks endpoints of the Redis Cluster.
5252
- `endpoint_id` - The ID of the endpoint.
53+
- `port` - TCP port of the endpoint.
54+
- `ips` - List of IPv4 addresses of the endpoint.
5355
- `tls_enabled` - Whether TLS is enabled or not.
5456
- `acl` - List of acl rules.
5557
- `settings` - Map of settings for redis cluster.

docs/resources/redis_cluster.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,8 @@ the form `{zone}/{id}`, e.g. `fr-par-1/11111111-1111-1111-1111-111111111111`
194194

195195
- `endpoint_id` - The ID of the endpoint.
196196
- `zone` - The zone of the Private Network.
197+
- `port` - TCP port of the endpoint.
198+
- `ips` - List of IPv4 addresses of the endpoint.
197199

198200
- `private_ips` - The list of private IPv4 addresses associated with the resource.
199201
- `id` - The ID of the IPv4 address resource.

internal/services/redis/cluster.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,19 @@ func ResourceCluster() *schema.Resource {
164164
Computed: true,
165165
Description: "UUID of the endpoint to be connected to the cluster",
166166
},
167+
"port": {
168+
Type: schema.TypeInt,
169+
Computed: true,
170+
Description: "TCP port of the endpoint",
171+
},
172+
"ips": {
173+
Type: schema.TypeList,
174+
Elem: &schema.Schema{
175+
Type: schema.TypeString,
176+
},
177+
Computed: true,
178+
Description: "List of IPv4 addresses of the endpoint",
179+
},
167180
"zone": zonal.ComputedSchema(),
168181
},
169182
},

internal/services/redis/cluster_test.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,8 @@ func TestAccCluster_MigrateClusterSizeWithIPAMEndpoint(t *testing.T) {
185185
resource.TestCheckResourceAttr("scaleway_redis_cluster.main", "cluster_size", "1"),
186186
resource.TestCheckResourceAttr("scaleway_redis_cluster.main", "tls_enabled", "true"),
187187
resource.TestCheckResourceAttrPair("scaleway_redis_cluster.main", "private_network.0.id", "scaleway_vpc_private_network.private_network", "id"),
188+
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.port"),
189+
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.ips.#"),
188190
acctest.CheckResourceIDPersisted("scaleway_redis_cluster.main", &clusterID),
189191
),
190192
},
@@ -215,6 +217,8 @@ func TestAccCluster_MigrateClusterSizeWithIPAMEndpoint(t *testing.T) {
215217
resource.TestCheckResourceAttr("scaleway_redis_cluster.main", "cluster_size", "3"),
216218
resource.TestCheckResourceAttr("scaleway_redis_cluster.main", "tls_enabled", "true"),
217219
resource.TestCheckResourceAttrPair("scaleway_redis_cluster.main", "private_network.0.id", "scaleway_vpc_private_network.private_network", "id"),
220+
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.port"),
221+
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.ips.#"),
218222
acctest.CheckResourceIDChanged("scaleway_redis_cluster.main", &clusterID),
219223
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_ips.0.id"),
220224
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_ips.0.address"),
@@ -421,7 +425,9 @@ func TestAccCluster_Endpoints_Standalone(t *testing.T) {
421425
resource.TestCheckResourceAttr("scaleway_redis_cluster.main", "cluster_size", "1"),
422426
resource.TestCheckResourceAttr("scaleway_redis_cluster.main", "private_network.0.service_ips.0", "10.12.1.0/20"),
423427
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.endpoint_id"),
428+
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.ips.#"),
424429
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.id"),
430+
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.port"),
425431
resource.TestCheckTypeSetElemAttrPair("scaleway_redis_cluster.main", "private_network.0.id", "scaleway_vpc_private_network.pn", "id"),
426432
),
427433
},
@@ -467,8 +473,12 @@ func TestAccCluster_Endpoints_Standalone(t *testing.T) {
467473
resource.TestCheckResourceAttr("scaleway_redis_cluster.main", "cluster_size", "1"),
468474
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.id"),
469475
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.endpoint_id"),
476+
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.port"),
477+
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.ips.#"),
470478
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.1.id"),
471479
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.1.endpoint_id"),
480+
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.1.port"),
481+
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.1.ips.#"),
472482
privateNetworksIpsAreEither("scaleway_redis_cluster.main", "10.12.1.0/20", "192.168.1.0/20"),
473483
privateNetworksIDsAreEither("scaleway_redis_cluster.main", "scaleway_vpc_private_network.pn", "scaleway_vpc_private_network.pn2"),
474484
),
@@ -508,7 +518,9 @@ func TestAccCluster_Endpoints_Standalone(t *testing.T) {
508518
resource.TestCheckResourceAttr("scaleway_redis_cluster.main", "cluster_size", "1"),
509519
resource.TestCheckResourceAttr("scaleway_redis_cluster.main", "private_network.0.service_ips.0", "10.13.1.0/20"),
510520
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.id"),
521+
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.ips.#"),
511522
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.endpoint_id"),
523+
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.port"),
512524
resource.TestCheckTypeSetElemAttrPair("scaleway_redis_cluster.main", "private_network.0.id", "scaleway_vpc_private_network.pn", "id"),
513525
resource.TestCheckNoResourceAttr("scaleway_redis_cluster.main", "private_network.1.service_ips.0"),
514526
resource.TestCheckNoResourceAttr("scaleway_redis_cluster.main", "private_network.1.id"),
@@ -612,7 +624,9 @@ func TestAccCluster_Endpoints_ClusterMode(t *testing.T) {
612624
resource.TestCheckResourceAttr("scaleway_redis_cluster.main", "private_network.0.service_ips.1", "10.12.1.11/24"),
613625
resource.TestCheckResourceAttr("scaleway_redis_cluster.main", "private_network.0.service_ips.2", "10.12.1.12/24"),
614626
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.endpoint_id"),
627+
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.ips.#"),
615628
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.id"),
629+
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.port"),
616630
resource.TestCheckTypeSetElemAttrPair("scaleway_redis_cluster.main", "private_network.0.id", "scaleway_vpc_private_network.pn", "id"),
617631
),
618632
},

internal/services/redis/types.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,10 +130,17 @@ func flattenPrivateNetwork(endpoints []*redis.Endpoint) (any, bool) {
130130
serviceIps = append(serviceIps, ip.String())
131131
}
132132

133+
ips := []any(nil)
134+
for _, ip := range endpoint.IPs {
135+
ips = append(ips, ip.String())
136+
}
137+
133138
pnFlat = append(pnFlat, map[string]any{
134139
"endpoint_id": endpoint.ID,
135140
"zone": pn.Zone,
136141
"id": pnRegionalID,
142+
"port": int(endpoint.Port),
143+
"ips": ips,
137144
"service_ips": serviceIps,
138145
})
139146
}

0 commit comments

Comments
 (0)