Files
hunfabric/fast/addons/2-networking-test/context.tf
Ludovico Magnocavallo 44de36905e Allow passing explicit regions in net test addon subnets (#2902)
* allow passing explicit regions in net-test addon subnets

* checkout repo in labeler

* checkout repo in labeler

* revert labeler changes
2025-02-18 10:26:39 +01:00

71 lines
2.4 KiB
HCL

/**
* Copyright 2025 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
# tfdoc:file:description FAST context locals
locals {
# extract the map of all subnet ids and their networks
_subnet_ids = {
for k, v in local._all_instances : v.subnet_id => v.network_id...
}
# extract attributes from subnet ids
_subnet_attrs = {
for k, v in local._subnet_ids : k => merge(
{
id = k
network_id = v[0]
region = split("/", k)[0]
region_alias = lookup(var.regions, split("/", k)[0], split("/", k)[0])
},
!startswith(k, "projects/") ? {} : {
region = split("/", k)[3]
}
)
}
# recompose subnet ids checking for context substitutions
_subnets = {
for k, v in local._subnet_attrs : k => merge(v, v.region_alias == null ? {} : {
id = try(replace(v.id, v.region, v.region_alias))
region = coalesce(v.region_alias, v.region)
})
}
# derive product of instances and zones and expand instance contexts
instances = flatten([
for k, v in local._all_instances : [
for z in v.zones : merge(v, {
name = "${var.name}-${k}-${z}"
network_id = lookup(var.vpc_self_links, v.network_id, v.network_id)
project_id = lookup(var.host_project_ids, v.project_id, v.project_id)
subnet_id = try(
var.subnet_self_links[v.network_id][local._subnets[v.subnet_id].id],
v.subnet_id
)
zone = "${local._subnets[v.subnet_id].region_alias}-${z}"
})
]
])
# extract service account emails for easy reference
service_account_emails = {
for k, v in module.service-accounts : k => v.email
}
# expand service account projects
service_accounts = {
for k, v in local._all_service_accounts : k => merge(v, {
project_id = lookup(var.host_project_ids, v.project_id, v.project_id)
})
}
}