From f1edd79e1317faaf9407515c1628ad7ad0cb623a Mon Sep 17 00:00:00 2001 From: nathan bird Date: Fri, 5 Jan 2024 21:45:23 +0000 Subject: [PATCH 1/3] Add local variables for virtual hub connection resource IDs --- modules/connectivity/locals.tf | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/modules/connectivity/locals.tf b/modules/connectivity/locals.tf index b75ac2ed5..b0bccce6d 100644 --- a/modules/connectivity/locals.tf +++ b/modules/connectivity/locals.tf @@ -1819,6 +1819,29 @@ locals { # Configuration settings for resource type: # - azurerm_virtual_hub_connection locals { + virtual_hub_connection_name = { + for location, virtual_hub_config in local.virtual_hubs_by_location : + location => { + for spoke_resource_id in virtual_hub_config.config.spoke_virtual_network_resource_ids : + spoke_resource_id => try( + local.custom_settings.azurerm_virtual_hub_connection["virtual_wan"][location][spoke_resource_id].name, + "peering-${uuidv5("url", spoke_resource_id)}" + ) + } + } + virtual_hub_connection_resource_id_prefix = { + for location, virtual_hub_config in local.virtual_hubs_by_location : + location => + "${local.virtual_hub_resource_id[location]}/hubVirtualNetworkConnections" + } + virtual_hub_connection_resource_id = { + for location, virtual_hub_config in local.virtual_hubs_by_location : + location => { + for spoke_resource_id, hub_connection_name in local.virtual_hub_connection_name[location] : + spoke_resource_id => + "${local.virtual_hub_connection_resource_id_prefix[location]}/${hub_connection_name}" + } + } azurerm_virtual_hub_connection = flatten( [ for location, virtual_hub_config in local.virtual_hubs_by_location : From 2d5e31067f0a1fc74156a9e25497b1f544bb02ba Mon Sep 17 00:00:00 2001 From: nathan bird Date: Mon, 5 Feb 2024 09:57:05 +0000 Subject: [PATCH 2/3] Refactor virtual hub connection resource ID generation --- modules/connectivity/locals.tf | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/modules/connectivity/locals.tf b/modules/connectivity/locals.tf index b0bccce6d..ef9dc71b0 100644 --- a/modules/connectivity/locals.tf +++ b/modules/connectivity/locals.tf @@ -1829,17 +1829,12 @@ locals { ) } } - virtual_hub_connection_resource_id_prefix = { - for location, virtual_hub_config in local.virtual_hubs_by_location : - location => - "${local.virtual_hub_resource_id[location]}/hubVirtualNetworkConnections" - } virtual_hub_connection_resource_id = { for location, virtual_hub_config in local.virtual_hubs_by_location : location => { for spoke_resource_id, hub_connection_name in local.virtual_hub_connection_name[location] : spoke_resource_id => - "${local.virtual_hub_connection_resource_id_prefix[location]}/${hub_connection_name}" + "${local.virtual_hub_resource_id[location]}/hubVirtualNetworkConnections/${hub_connection_name}" } } azurerm_virtual_hub_connection = flatten( @@ -1849,10 +1844,10 @@ locals { for spoke_resource_id in distinct(concat(virtual_hub_config.config.spoke_virtual_network_resource_ids, virtual_hub_config.config.secure_spoke_virtual_network_resource_ids)) : { # Resource logic attributes - resource_id = "${local.virtual_hub_resource_id[location]}/hubVirtualNetworkConnections/peering-${uuidv5("url", spoke_resource_id)}" + resource_id = local.virtual_hub_connection_resource_id[location][spoke_resource_id] managed_by_module = local.deploy_virtual_hub_connection[location] # Resource definition attributes - name = "peering-${uuidv5("url", spoke_resource_id)}" + name = local.virtual_hub_connection_name[location][spoke_resource_id] virtual_hub_id = local.virtual_hub_resource_id[location] remote_virtual_network_id = spoke_resource_id # Optional definition attributes From cdde43af71e0819dc3a03637a37b0ff25130b35b Mon Sep 17 00:00:00 2001 From: nathan bird Date: Fri, 9 Feb 2024 14:38:19 +0000 Subject: [PATCH 3/3] Refactor virtual hub connection resource ID and name generation --- modules/connectivity/locals.tf | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/modules/connectivity/locals.tf b/modules/connectivity/locals.tf index ef9dc71b0..0c799e1b3 100644 --- a/modules/connectivity/locals.tf +++ b/modules/connectivity/locals.tf @@ -1819,24 +1819,6 @@ locals { # Configuration settings for resource type: # - azurerm_virtual_hub_connection locals { - virtual_hub_connection_name = { - for location, virtual_hub_config in local.virtual_hubs_by_location : - location => { - for spoke_resource_id in virtual_hub_config.config.spoke_virtual_network_resource_ids : - spoke_resource_id => try( - local.custom_settings.azurerm_virtual_hub_connection["virtual_wan"][location][spoke_resource_id].name, - "peering-${uuidv5("url", spoke_resource_id)}" - ) - } - } - virtual_hub_connection_resource_id = { - for location, virtual_hub_config in local.virtual_hubs_by_location : - location => { - for spoke_resource_id, hub_connection_name in local.virtual_hub_connection_name[location] : - spoke_resource_id => - "${local.virtual_hub_resource_id[location]}/hubVirtualNetworkConnections/${hub_connection_name}" - } - } azurerm_virtual_hub_connection = flatten( [ for location, virtual_hub_config in local.virtual_hubs_by_location : @@ -1844,10 +1826,16 @@ locals { for spoke_resource_id in distinct(concat(virtual_hub_config.config.spoke_virtual_network_resource_ids, virtual_hub_config.config.secure_spoke_virtual_network_resource_ids)) : { # Resource logic attributes - resource_id = local.virtual_hub_connection_resource_id[location][spoke_resource_id] + resource_id = try( + "${local.virtual_hub_resource_id[location]}/hubVirtualNetworkConnections/${local.custom_settings.azurerm_virtual_hub_connection["virtual_wan"][location][spoke_resource_id].name}", + "${local.virtual_hub_resource_id[location]}/hubVirtualNetworkConnections/peering-${uuidv5("url", spoke_resource_id)}" + ) managed_by_module = local.deploy_virtual_hub_connection[location] # Resource definition attributes - name = local.virtual_hub_connection_name[location][spoke_resource_id] + name = try( + local.custom_settings.azurerm_virtual_hub_connection["virtual_wan"][location][spoke_resource_id].name, + "peering-${uuidv5("url", spoke_resource_id)}" + ) virtual_hub_id = local.virtual_hub_resource_id[location] remote_virtual_network_id = spoke_resource_id # Optional definition attributes