Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions docs/data-sources/redis_cluster.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ In addition to all above arguments, the following attributes are exported:
- `public_network` - Public network details.
- `private_network` - List of private networks endpoints of the Redis Cluster.
- `endpoint_id` - The ID of the endpoint.
- `port` - TCP port of the endpoint.
- `ips` - List of IPv4 addresses of the endpoint.
- `tls_enabled` - Whether TLS is enabled or not.
- `acl` - List of acl rules.
- `settings` - Map of settings for redis cluster.
Expand Down
2 changes: 2 additions & 0 deletions docs/resources/redis_cluster.md
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,8 @@ the form `{zone}/{id}`, e.g. `fr-par-1/11111111-1111-1111-1111-111111111111`

- `endpoint_id` - The ID of the endpoint.
- `zone` - The zone of the Private Network.
- `port` - TCP port of the endpoint.
- `ips` - List of IPv4 addresses of the endpoint.

- `private_ips` - The list of private IPv4 addresses associated with the resource.
- `id` - The ID of the IPv4 address resource.
Expand Down
13 changes: 13 additions & 0 deletions internal/services/redis/cluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,19 @@ func ResourceCluster() *schema.Resource {
Computed: true,
Description: "UUID of the endpoint to be connected to the cluster",
},
"port": {
Type: schema.TypeInt,
Computed: true,
Description: "TCP port of the endpoint",
},
"ips": {
Type: schema.TypeList,
Elem: &schema.Schema{
Type: schema.TypeString,
},
Computed: true,
Description: "List of IPv4 addresses of the endpoint",
},
"zone": zonal.ComputedSchema(),
},
},
Expand Down
14 changes: 14 additions & 0 deletions internal/services/redis/cluster_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,8 @@ func TestAccCluster_MigrateClusterSizeWithIPAMEndpoint(t *testing.T) {
resource.TestCheckResourceAttr("scaleway_redis_cluster.main", "cluster_size", "1"),
resource.TestCheckResourceAttr("scaleway_redis_cluster.main", "tls_enabled", "true"),
resource.TestCheckResourceAttrPair("scaleway_redis_cluster.main", "private_network.0.id", "scaleway_vpc_private_network.private_network", "id"),
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.port"),
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.ips.#"),
acctest.CheckResourceIDPersisted("scaleway_redis_cluster.main", &clusterID),
),
},
Expand Down Expand Up @@ -215,6 +217,8 @@ func TestAccCluster_MigrateClusterSizeWithIPAMEndpoint(t *testing.T) {
resource.TestCheckResourceAttr("scaleway_redis_cluster.main", "cluster_size", "3"),
resource.TestCheckResourceAttr("scaleway_redis_cluster.main", "tls_enabled", "true"),
resource.TestCheckResourceAttrPair("scaleway_redis_cluster.main", "private_network.0.id", "scaleway_vpc_private_network.private_network", "id"),
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.port"),
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.ips.#"),
acctest.CheckResourceIDChanged("scaleway_redis_cluster.main", &clusterID),
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_ips.0.id"),
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_ips.0.address"),
Expand Down Expand Up @@ -421,7 +425,9 @@ func TestAccCluster_Endpoints_Standalone(t *testing.T) {
resource.TestCheckResourceAttr("scaleway_redis_cluster.main", "cluster_size", "1"),
resource.TestCheckResourceAttr("scaleway_redis_cluster.main", "private_network.0.service_ips.0", "10.12.1.0/20"),
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.endpoint_id"),
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.ips.#"),
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.id"),
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.port"),
resource.TestCheckTypeSetElemAttrPair("scaleway_redis_cluster.main", "private_network.0.id", "scaleway_vpc_private_network.pn", "id"),
),
},
Expand Down Expand Up @@ -467,8 +473,12 @@ func TestAccCluster_Endpoints_Standalone(t *testing.T) {
resource.TestCheckResourceAttr("scaleway_redis_cluster.main", "cluster_size", "1"),
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.id"),
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.endpoint_id"),
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.port"),
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.ips.#"),
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.1.id"),
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.1.endpoint_id"),
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.1.port"),
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.1.ips.#"),
privateNetworksIpsAreEither("scaleway_redis_cluster.main", "10.12.1.0/20", "192.168.1.0/20"),
privateNetworksIDsAreEither("scaleway_redis_cluster.main", "scaleway_vpc_private_network.pn", "scaleway_vpc_private_network.pn2"),
),
Expand Down Expand Up @@ -508,7 +518,9 @@ func TestAccCluster_Endpoints_Standalone(t *testing.T) {
resource.TestCheckResourceAttr("scaleway_redis_cluster.main", "cluster_size", "1"),
resource.TestCheckResourceAttr("scaleway_redis_cluster.main", "private_network.0.service_ips.0", "10.13.1.0/20"),
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.id"),
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.ips.#"),
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.endpoint_id"),
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.port"),
resource.TestCheckTypeSetElemAttrPair("scaleway_redis_cluster.main", "private_network.0.id", "scaleway_vpc_private_network.pn", "id"),
resource.TestCheckNoResourceAttr("scaleway_redis_cluster.main", "private_network.1.service_ips.0"),
resource.TestCheckNoResourceAttr("scaleway_redis_cluster.main", "private_network.1.id"),
Expand Down Expand Up @@ -612,7 +624,9 @@ func TestAccCluster_Endpoints_ClusterMode(t *testing.T) {
resource.TestCheckResourceAttr("scaleway_redis_cluster.main", "private_network.0.service_ips.1", "10.12.1.11/24"),
resource.TestCheckResourceAttr("scaleway_redis_cluster.main", "private_network.0.service_ips.2", "10.12.1.12/24"),
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.endpoint_id"),
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.ips.#"),
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.id"),
resource.TestCheckResourceAttrSet("scaleway_redis_cluster.main", "private_network.0.port"),
resource.TestCheckTypeSetElemAttrPair("scaleway_redis_cluster.main", "private_network.0.id", "scaleway_vpc_private_network.pn", "id"),
),
},
Expand Down
7 changes: 7 additions & 0 deletions internal/services/redis/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -130,10 +130,17 @@ func flattenPrivateNetwork(endpoints []*redis.Endpoint) (any, bool) {
serviceIps = append(serviceIps, ip.String())
}

ips := []any(nil)
for _, ip := range endpoint.IPs {
ips = append(ips, ip.String())
}

pnFlat = append(pnFlat, map[string]any{
"endpoint_id": endpoint.ID,
"zone": pn.Zone,
"id": pnRegionalID,
"port": int(endpoint.Port),
"ips": ips,
"service_ips": serviceIps,
})
}
Expand Down
Loading