Skip to content

Commit e936296

Browse files
Terraform Team Automationravinitp
authored andcommitted
Added - Support for OCI Cache with Redis
1 parent 06c3458 commit e936296

11 files changed

+595
-87
lines changed

examples/redis/redis_cluster/main.tf

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ variable "redis_cluster_display_name" {
1414
default = "test-tf-redis-example"
1515
}
1616

17+
variable "redis_sharded_cluster_display_name" {
18+
type = string
19+
default = "test-tf-redis-sharded_example"
20+
}
21+
1722
variable "redis_cluster_freeform_tags" {
1823
default = { "bar-key" = "value" }
1924
}
@@ -88,6 +93,22 @@ resource "oci_redis_redis_cluster" "test_redis_cluster" {
8893
freeform_tags = var.redis_cluster_freeform_tags
8994
}
9095

96+
// create a 3 shard 2 node per shard
97+
resource "oci_redis_redis_cluster" "test_redis_sharded_cluster" {
98+
#Required
99+
compartment_id = var.compartment_id
100+
display_name = var.redis_sharded_cluster_display_name
101+
node_count = 2
102+
node_memory_in_gbs = var.redis_cluster_node_memory_in_gbs
103+
software_version = var.redis_cluster_software_version
104+
subnet_id = oci_core_subnet.test_subnet.id
105+
106+
#Optional
107+
cluster_mode = "SHARDED"
108+
shard_count = 3
109+
freeform_tags = var.redis_cluster_freeform_tags
110+
}
111+
91112
data "oci_redis_redis_clusters" "test_redis_clusters" {
92113

93114
#Optional
@@ -96,3 +117,12 @@ data "oci_redis_redis_clusters" "test_redis_clusters" {
96117
id = oci_redis_redis_cluster.test_redis_cluster.id
97118
state = var.redis_cluster_state
98119
}
120+
121+
data "oci_redis_redis_cluster" "test_redis_cluster_data" {
122+
redis_cluster_id = oci_redis_redis_cluster.test_redis_sharded_cluster.id
123+
}
124+
125+
126+
data "oci_redis_redis_cluster_nodes" "test_redis_cluster_nodes" {
127+
redis_cluster_id = oci_redis_redis_cluster.test_redis_sharded_cluster.id
128+
}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
// Copyright (c) 2017, 2024, Oracle and/or its affiliates. All rights reserved.
2+
// Licensed under the Mozilla Public License v2.0
3+
4+
package integrationtest
5+
6+
import (
7+
"fmt"
8+
"testing"
9+
10+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
11+
12+
"github.com/oracle/terraform-provider-oci/httpreplay"
13+
"github.com/oracle/terraform-provider-oci/internal/acctest"
14+
15+
"github.com/oracle/terraform-provider-oci/internal/utils"
16+
)
17+
18+
var (
19+
RedisRedisClusterNodeDataSourceRepresentation = map[string]interface{}{
20+
"redis_cluster_id": acctest.Representation{RepType: acctest.Required, Create: `${oci_redis_redis_cluster.test_sharded_redis_cluster.id}`},
21+
}
22+
23+
RedisRedisClusterNodeResourceConfig = acctest.GenerateResourceFromRepresentationMap("oci_core_network_security_group", "test_network_security_group", acctest.Required, acctest.Create, CoreNetworkSecurityGroupRepresentation) +
24+
acctest.GenerateResourceFromRepresentationMap("oci_core_vcn", "test_vcn", acctest.Required, acctest.Create, CoreVcnRepresentation) +
25+
acctest.GenerateResourceFromRepresentationMap("oci_core_security_list", "redis_security_list", acctest.Required, acctest.Create,
26+
acctest.RepresentationCopyWithNewProperties(CoreSecurityListRepresentation, map[string]interface{}{
27+
"display_name": acctest.Representation{RepType: acctest.Required, Create: `redis-security-list`},
28+
})) +
29+
acctest.GenerateResourceFromRepresentationMap("oci_core_subnet", "test_subnet", acctest.Required, acctest.Create,
30+
acctest.RepresentationCopyWithNewProperties(CoreSubnetRepresentation, map[string]interface{}{
31+
"security_list_ids": acctest.Representation{RepType: acctest.Required, Create: []string{`${oci_core_security_list.redis_security_list.id}`}}})) +
32+
DefinedTagsDependencies +
33+
acctest.GenerateResourceFromRepresentationMap("oci_redis_redis_cluster", "test_sharded_redis_cluster", acctest.Required, acctest.Create, RedisRedisShardedClusterRepresentation)
34+
)
35+
36+
// issue-routing-tag: redis/default
37+
func TestRedisRedisClusterNodeResource_basic(t *testing.T) {
38+
httpreplay.SetScenario("TestRedisRedisClusterNodeResource_basic")
39+
defer httpreplay.SaveScenario()
40+
41+
config := acctest.ProviderTestConfig()
42+
43+
compartmentId := utils.GetEnvSettingWithBlankDefault("compartment_ocid")
44+
compartmentIdVariableStr := fmt.Sprintf("variable \"compartment_id\" { default = \"%s\" }\n", compartmentId)
45+
46+
datasourceName := "data.oci_redis_redis_cluster_nodes.test_redis_cluster_nodes"
47+
48+
acctest.SaveConfigContent("", "", "", t)
49+
50+
acctest.ResourceTest(t, nil, []resource.TestStep{
51+
// verify datasource
52+
{
53+
Config: config +
54+
acctest.GenerateDataSourceFromRepresentationMap("oci_redis_redis_cluster_nodes", "test_redis_cluster_nodes", acctest.Required, acctest.Create, RedisRedisClusterNodeDataSourceRepresentation) +
55+
compartmentIdVariableStr + RedisRedisClusterNodeResourceConfig,
56+
Check: acctest.ComposeAggregateTestCheckFuncWrapper(
57+
resource.TestCheckResourceAttrSet(datasourceName, "redis_cluster_id"),
58+
resource.TestCheckResourceAttrSet(datasourceName, "redis_node_collection.#"),
59+
resource.TestCheckResourceAttr(datasourceName, "redis_node_collection.0.items.#", "6"),
60+
resource.TestCheckResourceAttrSet(datasourceName, "redis_node_collection.0.items.0.display_name"),
61+
resource.TestCheckResourceAttrSet(datasourceName, "redis_node_collection.0.items.0.private_endpoint_fqdn"),
62+
resource.TestCheckResourceAttrSet(datasourceName, "redis_node_collection.0.items.0.shard_number"),
63+
resource.TestCheckResourceAttrSet(datasourceName, "redis_node_collection.0.items.0.private_endpoint_ip_address"),
64+
resource.TestCheckResourceAttrSet(datasourceName, "redis_node_collection.0.items.0.redis_cluster_id"),
65+
),
66+
},
67+
})
68+
}

0 commit comments

Comments
 (0)