# locals =====================================================================

data "aws_availability_zones" "available" {
  state = "available"
}

data "aws_subnet" "instance" {
  for_each = { for k, v in var.instances : k => v.subnet_id }

  id = each.value
}

locals {
  region_abbr = split("-", data.aws_availability_zones.available.zone_ids[0])[0]

  az_name_to_zone_id = zipmap(
    data.aws_availability_zones.available.names,
    data.aws_availability_zones.available.zone_ids
  )

  instance_zone_id = {
    for k, v in data.aws_subnet.instance : k => local.az_name_to_zone_id[v.availability_zone]
  }

  instance_names = {
    for k, v in var.instances :
    k => "${var.name_prefix}-${local.instance_zone_id[k]}-${v.name_suffix}"
  }

  module_tags = {
    managed-by  = "terraform"
    module-name = "compute:ec2-node"
  }

  data_volume_map = {
    for item in flatten([
      for k, v in var.instances : [
        for idx, vol in v.data_volumes : {
          key          = "${k}-data-vol-${format("%02d", idx + 1)}"
          instance_key = k
          idx          = idx
          vol          = vol
        }
      ]
    ]) : item.key => item
  }
}
