Skip to content

Commit 73d746d

Browse files
committed
fix: generifiying region data to be returned and fixing tests
1 parent cb706a6 commit 73d746d

File tree

2 files changed

+42
-20
lines changed

2 files changed

+42
-20
lines changed

provider/datasource_rediscloud_active_active_subscription_regions.go

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package provider
22

33
import (
44
"context"
5+
"fmt"
56
"github.com/RedisLabs/rediscloud-go-api/redis"
67
"github.com/RedisLabs/rediscloud-go-api/service/subscriptions"
78
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
@@ -21,7 +22,7 @@ func dataSourceRedisCloudActiveActiveSubscriptionRegions() *schema.Resource {
2122
},
2223
"regions": {
2324
Description: "A list of regions from an active active subscription",
24-
Type: schema.TypeSet,
25+
Type: schema.TypeList,
2526
Computed: true,
2627
Elem: &schema.Resource{
2728
Schema: map[string]*schema.Schema{
@@ -122,11 +123,41 @@ func dataSourceRedisCloudActiveActiveRegionsRead(ctx context.Context, d *schema.
122123
return diag.Errorf("Your query returned no results. Please change your search criteria and try again.")
123124
}
124125

125-
// TODO: may have to manipulate regions to be output in a friendly way here
126+
var genericRegions = flattenActiveActiveRegions(regions)
126127

127-
if err := d.Set("regions", regions); err != nil {
128+
id := fmt.Sprintf("%d-regions", *sub.ID)
129+
d.SetId(id)
130+
131+
if err := d.Set("regions", genericRegions); err != nil {
128132
return diag.FromErr(err)
129133
}
130134

131135
return diags
132136
}
137+
138+
// generifies the region/db data so it can be put into the terraform schema
139+
func flattenActiveActiveRegions(regionList []*subscriptions.ActiveActiveRegion) []map[string]interface{} {
140+
var rl []map[string]interface{}
141+
for _, currentRegion := range regionList {
142+
143+
var dbs []map[string]interface{}
144+
for _, db := range currentRegion.Databases {
145+
dbMap := map[string]interface{}{
146+
"database_id": db.DatabaseId,
147+
"database_name": db.DatabaseName,
148+
"write_operations_per_second": db.WriteOperationsPerSecond,
149+
"read_operations_per_second": db.ReadOperationsPerSecond,
150+
}
151+
dbs = append(dbs, dbMap)
152+
}
153+
154+
regionMap := map[string]interface{}{
155+
"region": currentRegion.Region,
156+
"networking_deployment_cidr": currentRegion.DeploymentCIDR,
157+
"vpc_id": currentRegion.VpcId,
158+
"databases": dbs,
159+
}
160+
rl = append(rl, regionMap)
161+
}
162+
return rl
163+
}

provider/rediscloud_active_active_subscription_test.go

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func TestAccResourceRedisCloudActiveActiveSubscription_CRUDI(t *testing.T) {
2626
name := acctest.RandomWithPrefix(testResourcePrefix)
2727
const resourceName = "rediscloud_active_active_subscription.example"
2828
const datasourceSubscriptionName = "data.rediscloud_active_active_subscription.example"
29-
const datasourceRegionName = "data.rediscloud_active_active_subscription_region.regions"
29+
const datasourceRegionName = "data.rediscloud_active_active_subscription_regions.foo"
3030

3131
var subId int
3232

@@ -163,21 +163,12 @@ func TestAccResourceRedisCloudActiveActiveSubscription_CRUDI(t *testing.T) {
163163
// Test the region datasource
164164

165165
resource.TestCheckResourceAttr(datasourceRegionName, "subscription_name", name),
166-
resource.TestCheckResourceAttr(datasourceRegionName, "regions.1.region", ""),
167-
resource.TestCheckResourceAttr(datasourceRegionName, "regions.1.networking_deployment_cidr", ""),
168-
resource.TestCheckResourceAttr(datasourceRegionName, "regions.1.vpc_id", ""),
169-
resource.TestCheckResourceAttr(datasourceRegionName, "regions.1.databases.database_id", ""),
170-
resource.TestCheckResourceAttr(datasourceRegionName, "regions.1.databases.database_name", ""),
171-
resource.TestCheckResourceAttr(datasourceRegionName, "regions.1.databases.write_operations_per_second", ""),
172-
resource.TestCheckResourceAttr(datasourceRegionName, "regions.1.databases.read_operations_per_second", ""),
173-
174-
resource.TestCheckResourceAttr(datasourceRegionName, "regions.2.region", ""),
175-
resource.TestCheckResourceAttr(datasourceRegionName, "regions.2.networking_deployment_cidr", ""),
176-
resource.TestCheckResourceAttr(datasourceRegionName, "regions.2.vpc_id", ""),
177-
resource.TestCheckResourceAttr(datasourceRegionName, "regions.2.databases.database_id", ""),
178-
resource.TestCheckResourceAttr(datasourceRegionName, "regions.2.databases.database_name", ""),
179-
resource.TestCheckResourceAttr(datasourceRegionName, "regions.2.databases.write_operations_per_second", ""),
180-
resource.TestCheckResourceAttr(datasourceRegionName, "regions.2.databases.read_operations_per_second", ""),
166+
resource.TestCheckResourceAttr(datasourceRegionName, "regions.0.region", "us-east-1"),
167+
resource.TestCheckResourceAttr(datasourceRegionName, "regions.0.networking_deployment_cidr", "10.0.1.0/24"),
168+
resource.TestCheckResourceAttrSet(datasourceRegionName, "regions.0.vpc_id"),
169+
resource.TestCheckResourceAttr(datasourceRegionName, "regions.1.region", "us-east-2"),
170+
resource.TestCheckResourceAttr(datasourceRegionName, "regions.1.networking_deployment_cidr", "10.0.1.0/24"),
171+
resource.TestCheckResourceAttrSet(datasourceRegionName, "regions.1.vpc_id"),
181172
),
182173
},
183174
{
@@ -390,7 +381,7 @@ data "rediscloud_active_active_subscription" "example" {
390381
name = rediscloud_active_active_subscription.example.name
391382
}
392383
393-
data "rediscloud_active_active_subscription_regions" "regions" {
384+
data "rediscloud_active_active_subscription_regions" "foo" {
394385
subscription_name = rediscloud_active_active_subscription.example.name
395386
}
396387
`

0 commit comments

Comments
 (0)