locals {
  o11y_name        = var.cluster_name
  resource_group   = var.resource_group_name
  hosted_zone_name = trimsuffix(var.dns_zone_name, ".")

  rs_record_name = "www.rs.${var.logical_region_name}.azure"
  ds_record_name = "www.ds.${var.logical_region_name}.azure"
  rs_address     = "${local.rs_record_name}.${local.hosted_zone_name}"
  ds_address     = "${local.ds_record_name}.${local.hosted_zone_name}"
  rs_url         = "https://${local.rs_address}"
  ds_url         = "https://${local.ds_address}"

  storage_account_name = "o11y${substr(lower(replace(var.env, "-", "")), 0, 4)}${substr(md5(var.logical_region_name), 0, 14)}"

  node_subnet_cidr       = cidrsubnet(var.network.vnet_cidr, 2, 0)
  appgw_subnet_cidr      = cidrsubnet(var.network.vnet_cidr, 4, 4)
  private_subnet_cidr    = cidrsubnet(var.network.vnet_cidr, 4, 5)
  api_server_subnet_cidr = cidrsubnet(var.network.vnet_cidr, 8, 96)

  private_link_service_name = "nginx-write-${local.o11y_name}"

  loki_container                  = "loki-${var.env}-${var.logical_region_name}"
  vmbackup_container              = "vmbackup-${var.env}-${var.logical_region_name}"
  diag_container                  = "diag-${var.env}-${var.logical_region_name}"
  velero_cluster_backup_container = "velero-cluster-backup-${var.env}-${var.logical_region_name}"
  shared_container                = "o11y-${var.env}-shared-${var.logical_region_name}"
  test_shared_container           = "o11y-test-shared-${var.logical_region_name}"

  storage_containers = toset(compact([
    local.loki_container,
    local.vmbackup_container,
    local.diag_container,
    local.velero_cluster_backup_container,
    local.shared_container,
    var.env == "prod" ? local.test_shared_container : "",
  ]))

  # The legacy Azure O11Y deploy job accepts an explicit zone. Auto-deploy does
  # not expose that as a BYOC workflow input, so use the Azure region as the
  # deterministic selector until Observability defines a richer contract.
  azure_zone = var.cloud_region

  o11y_workflow_ref = "main"

  cd_parameters = {
    vendor                     = "azure"
    region                     = var.logical_region_name
    env                        = var.env
    git-ref                    = local.o11y_workflow_ref
    azure-tenant-id            = var.customer_tenant_id
    azure-subscription-id      = var.customer_subscription_id
    azure-deployment-client-id = var.o11y_deployment_multi_tenant_app_client_id
    bootstrap                  = "true"
  }

  metadata_parameters = {
    vendor            = "azure"
    region            = var.cloud_region
    logicalRegionName = var.logical_region_name
    env               = var.env
    cluster           = local.o11y_name
  }

  tags = merge({
    environment                   = var.env
    servicetype                   = "byoc"
    usedby                        = "dbaas-control-plane-shoot"
    tenant                        = "admin"
    "tidbcloud-auto-deploy-owner" = local.o11y_name
  }, var.tags)
}
