@@ -10,7 +10,7 @@ resource "oci_core_internet_gateway" "ig" {
1010 display_name = var. label_prefix == " none" ? var. internet_gateway_display_name : " ${ var . label_prefix } -${ var . internet_gateway_display_name } "
1111
1212 freeform_tags = var. freeform_tags
13- defined_tags = var. defined_tags
13+ defined_tags = var. defined_tags
1414
1515 vcn_id = oci_core_vcn. vcn . id
1616
@@ -26,7 +26,7 @@ resource "oci_core_route_table" "ig" {
2626 display_name = var. label_prefix == " none" ? " internet-route" : " ${ var . label_prefix } -internet-route"
2727
2828 freeform_tags = var. freeform_tags
29- defined_tags = var. defined_tags
29+ defined_tags = var. defined_tags
3030
3131 route_rules {
3232 # * With this route table, Internet Gateway is always declared as the default gateway
@@ -50,12 +50,12 @@ resource "oci_core_route_table" "ig" {
5050 # * filter var.internet_gateway_route_rules for routes with "drg" as destination
5151 # * and steer traffic to the attached DRG if available
5252 for_each = var. internet_gateway_route_rules != null ? { for k , v in var . internet_gateway_route_rules : k => v
53- if v . network_entity_id == " drg" && var . attached_drg_id != null } : {}
53+ if v . network_entity_id == " drg" && var . attached_drg_id != null } : {}
5454
5555 content {
5656 destination = route_rules. value . destination
5757 destination_type = route_rules. value . destination_type
58- network_entity_id = var. attached_drg_id
58+ network_entity_id = var. attached_drg_id
5959 description = route_rules. value . description
6060 }
6161 }
@@ -115,7 +115,7 @@ resource "oci_core_service_gateway" "service_gateway" {
115115 display_name = var. label_prefix == " none" ? var. service_gateway_display_name : " ${ var . label_prefix } -${ var . service_gateway_display_name } "
116116
117117 freeform_tags = var. freeform_tags
118- defined_tags = var. defined_tags
118+ defined_tags = var. defined_tags
119119 services {
120120 service_id = lookup (data. oci_core_services . all_oci_services [0 ]. services [0 ], " id" )
121121 }
@@ -134,7 +134,7 @@ resource "oci_core_route_table" "service_gw" {
134134 display_name = var. label_prefix == " none" ? " service-gw-route" : " ${ var . label_prefix } -service-gw-route"
135135
136136 freeform_tags = var. freeform_tags
137- defined_tags = var. defined_tags
137+ defined_tags = var. defined_tags
138138
139139 dynamic "route_rules" {
140140 # * If Service Gateway is created with the module, automatically creates a rule to handle traffic for "all services" through Service Gateway
@@ -165,7 +165,7 @@ resource "oci_core_nat_gateway" "nat_gateway" {
165165 display_name = var. label_prefix == " none" ? var. nat_gateway_display_name : " ${ var . label_prefix } -${ var . nat_gateway_display_name } "
166166
167167 freeform_tags = var. freeform_tags
168- defined_tags = var. defined_tags
168+ defined_tags = var. defined_tags
169169
170170 public_ip_id = var. nat_gateway_public_ip_id != " none" ? var. nat_gateway_public_ip_id : null
171171
@@ -178,12 +178,15 @@ resource "oci_core_nat_gateway" "nat_gateway" {
178178 count = var. create_nat_gateway == true ? 1 : 0
179179}
180180
181+ # special fix due to bug introduced in #101 which causes destruction and recreation of subnets
182+ # for existing users
183+
181184resource "oci_core_route_table" "nat" {
182185 compartment_id = var. compartment_id
183186 display_name = var. label_prefix == " none" ? " nat-route" : " ${ var . label_prefix } -nat-route"
184187
185188 freeform_tags = var. freeform_tags
186- defined_tags = var. defined_tags
189+ defined_tags = var. defined_tags
187190
188191 route_rules {
189192 # * With this route table, NAT Gateway is always declared as the default gateway
@@ -193,11 +196,24 @@ resource "oci_core_route_table" "nat" {
193196 description = " Terraformed - Auto-generated at NAT Gateway creation: NAT Gateway as default gateway"
194197 }
195198
199+ # bring this block back to fix #101
200+ dynamic "route_rules" {
201+ # * If Service Gateway is created with the module, automatically creates a rule to handle traffic for "all services" through Service Gateway
202+ for_each = var. create_service_gateway == true ? [1 ] : []
203+
204+ content {
205+ destination = lookup (data. oci_core_services . all_oci_services [0 ]. services [0 ], " cidr_block" )
206+ destination_type = " SERVICE_CIDR_BLOCK"
207+ network_entity_id = oci_core_service_gateway. service_gateway [0 ]. id
208+ description = " Terraformed - Auto-generated at Service Gateway creation: All Services in region to Service Gateway"
209+ }
210+ }
211+
196212 dynamic "route_rules" {
197213 # * filter var.nat_gateway_route_rules for routes with "drg" as destination
198214 # * and steer traffic to the attached DRG if available
199215 for_each = var. nat_gateway_route_rules != null ? { for k , v in var . nat_gateway_route_rules : k => v
200- if v . network_entity_id == " drg" && var . attached_drg_id != null } : {}
216+ if v . network_entity_id == " drg" && var . attached_drg_id != null } : {}
201217
202218 content {
203219 destination = route_rules. value . destination
@@ -238,11 +254,14 @@ resource "oci_core_route_table" "nat" {
238254
239255 vcn_id = oci_core_vcn. vcn . id
240256
257+ # ignore changes to route rules to avoid recreation issues due to #101.
258+ # A fix may still be needed for when new custom route rules are added.
259+
241260 lifecycle {
242- ignore_changes = [defined_tags , freeform_tags ]
261+ ignore_changes = [defined_tags , freeform_tags , route_rules ]
243262 }
244263
245- count = var. create_nat_gateway == true ? 1 : 0
264+ count = var. create_nat_gateway ? 1 : 0
246265}
247266
248267
@@ -257,7 +276,7 @@ resource "oci_core_local_peering_gateway" "lpg" {
257276 display_name = var. label_prefix == " none" ? each. key : " ${ var . label_prefix } -${ each . key } "
258277
259278 freeform_tags = var. freeform_tags
260- defined_tags = var. defined_tags
279+ defined_tags = var. defined_tags
261280
262281 vcn_id = oci_core_vcn. vcn . id
263282
0 commit comments