locals.tf (14 lines of code) (raw):

locals { hub_virtual_networks = { for key, value in var.hub_virtual_networks : key => merge(value.hub_virtual_network, { ddos_protection_plan_id = (local.ddos_protection_plan_enabled ? module.ddos_protection_plan[0].resource_id : merge({ ddos = module.ddos_protection_plan }, { ddos_id = try(value.hub_virtual_network.ddos_protection_plan_id, null) }).ddos_id) # This is building an implicit dependency on the DDOS protection plan for the use case of it being destroyed after initialy being created resource_group_creation_enabled = try(value.hub_virtual_network.resource_group_creation_enabled, false) resource_group_lock_enabled = try(value.hub_virtual_network.resource_group_lock_enabled, false) mesh_peering_enabled = try(value.hub_virtual_network.mesh_peering_enabled, true) firewall = local.firewalls[key] subnets = merge(local.subnets[key], value.hub_virtual_network.subnets) }) } }