@@ -14,6 +14,7 @@ module "labels" {
1414# Description :Provides a DigitalOcean database cluster resource.
1515# #-----------------------------------------------------------------------------
1616resource "digitalocean_database_cluster" "cluster" {
17+ count = var. enabled == true ? 1 : 0
1718 name = format (" %s-${ var . cluster_engine } " , module. labels . id )
1819 engine = var. cluster_engine
1920 version = var. cluster_version
@@ -24,6 +25,7 @@ resource "digitalocean_database_cluster" "cluster" {
2425 tags = [module . labels . id ]
2526 eviction_policy = var. redis_eviction_policy
2627 sql_mode = var. mysql_sql_mode
28+ project_id = var. project_id
2729
2830 dynamic "maintenance_window" {
2931 for_each = var. cluster_maintenance != null ? [var . cluster_maintenance ] : []
@@ -32,23 +34,32 @@ resource "digitalocean_database_cluster" "cluster" {
3234 day = maintenance_window. value . maintenance_day
3335 }
3436 }
37+ dynamic "backup_restore" {
38+ for_each = var. backup_restore != null ? [var . backup_restore ] : []
39+ content {
40+ database_name = backup_restore. value . database_name
41+ backup_created_at = lookup (backup_restore. value , " backup_created_at" , null )
42+ }
43+ }
3544}
3645
46+
3747# #-----------------------------------------------------------------------------
3848# Description :Provides a DigitalOcean database resource.
3949# #-----------------------------------------------------------------------------
4050resource "digitalocean_database_db" "database" {
41- for_each = toset (var. databases )
42- cluster_id = digitalocean_database_cluster. cluster . id
43- name = each. value
51+ depends_on = [digitalocean_database_cluster . cluster ]
52+ count = var. enabled == true ? length (var. databases ) : 0
53+ cluster_id = join (" " , digitalocean_database_cluster. cluster [* ]. id )
54+ name = var. databases [count . index ]
4455}
4556
4657# #-----------------------------------------------------------------------------
4758# Description : Provides a DigitalOcean database user resource.
4859# #-----------------------------------------------------------------------------
4960resource "digitalocean_database_user" "user" {
50- for_each = var. users != null ? { for u in var . users : u . name => u } : {}
51- cluster_id = digitalocean_database_cluster. cluster . id
61+ for_each = var. enabled == true && var . users != null ? { for u in var . users : u . name => u } : {}
62+ cluster_id = join ( " " , digitalocean_database_cluster. cluster [ * ] . id )
5263 name = each. value . name
5364 mysql_auth_plugin = lookup (each. value , " mysql_auth_plugin" , null )
5465}
@@ -57,8 +68,8 @@ resource "digitalocean_database_user" "user" {
5768# Description : Provides a DigitalOcean database connection pool resource.
5869# #-----------------------------------------------------------------------------
5970resource "digitalocean_database_connection_pool" "connection_pool" {
60- for_each = var. create_pools ? { for p in var . pools : p . name => p } : {}
61- cluster_id = digitalocean_database_cluster. cluster . id
71+ for_each = var. enabled == true && var . create_pools ? { for p in var . pools : p . name => p } : {}
72+ cluster_id = join ( " " , digitalocean_database_cluster. cluster [ * ] . id )
6273 name = each. value . name
6374 mode = each. value . mode
6475 size = each. value . size
@@ -70,8 +81,37 @@ resource "digitalocean_database_connection_pool" "connection_pool" {
7081# Description :Provides a DigitalOcean database firewall resource.
7182# #-----------------------------------------------------------------------------
7283resource "digitalocean_database_firewall" "firewall" {
73- count = var. create_firewall ? 1 : 0
74- cluster_id = digitalocean_database_cluster. cluster . id
84+ count = var. enabled == true && var. create_firewall ? 1 : 0
85+ cluster_id = join (" " , digitalocean_database_cluster. cluster [* ]. id )
86+ dynamic "rule" {
87+ for_each = var. firewall_rules
88+ content {
89+ type = rule. value . type
90+ value = rule. value . value
91+ }
92+ }
93+ depends_on = [digitalocean_database_cluster . cluster ]
94+ }
95+
96+ # #-----------------------------------------------------------------------------
97+ # Description: Provides a DigitalOcean database replica resource.
98+ # #-----------------------------------------------------------------------------
99+ resource "digitalocean_database_replica" "replica-example" {
100+ count = var. enabled == true && var. replica_enable ? 1 : 0
101+ cluster_id = join (" " , digitalocean_database_cluster. cluster [* ]. id )
102+ name = format (" %s-${ var . cluster_engine } -replica" , module. labels . id )
103+ size = var. replica_size
104+ region = var. region
105+ tags = [module . labels . id ]
106+ private_network_uuid = var. cluster_private_network_uuid
107+ }
108+
109+ # #-----------------------------------------------------------------------------
110+ # Description :Provides a DigitalOcean database firewall resource.
111+ # #-----------------------------------------------------------------------------
112+ resource "digitalocean_database_firewall" "replica-firewall" {
113+ count = var. enabled == true && var. create_firewall && var. replica_enable ? 1 : 0
114+ cluster_id = join (" " , digitalocean_database_cluster. cluster [* ]. id )
75115 dynamic "rule" {
76116 for_each = var. firewall_rules
77117 content {
0 commit comments