variable "env" {
  type    = string
  default = "dev"
}

variable "customer_id" {
  type = string
}

variable "byoc_tenant_id" {
  type        = string
  description = "TiDB Cloud BYOC tenant ID used by Observability registration and routing."

  validation {
    condition     = trimspace(var.byoc_tenant_id) != ""
    error_message = "byoc_tenant_id must be the TiDB Cloud BYOC tenant ID."
  }
}

variable "cloud_region" {
  type = string
}

variable "logical_region_name" {
  type    = string
  default = ""
}

variable "onboarding" {
  type = object({
    multi_tenant_app_client_id                 = string
    o11y_deployment_multi_tenant_app_client_id = string
    customer_tenant_id                         = string
    customer_subscription_id                   = string
    aks_control_plane_identity_name            = string
    aks_kubelet_identity_name                  = string
    aks_managed_identity_resource_group        = string
    dataplane_admin_group_object_ids           = list(string)
    customer_acr_resource_id                   = string
    customer_acr_login_server                  = string
    tidb_cluster_dns_domain                    = string
    tidb_cluster_dns_resource_group            = string
    audit_log_storage_account_name             = string
    audit_log_bucket                           = string
    storage_accounts_resource_group            = string
    o11y_aks_resource_group                    = string
    o11y_storage_resource_group                = string
    o11y_identity_resource_group               = string
    o11y_aks_control_plane_identity_name       = string
    o11y_aks_kubelet_identity_name             = string
    o11y_regional_server_identity_name         = optional(string, "")
    o11y_vmbackup_identity_name                = optional(string, "")
    o11y_loki_identity_name                    = optional(string, "")
    o11y_velero_identity_name                  = optional(string, "")
    o11y_agic_identity_name                    = string
    o11y_dns_domain                            = string
    o11y_dns_resource_group                    = string
  })
}

variable "controlplane_domain_name" {
  type    = string
  default = ""
}

variable "controlplane_dns_zone_resource_group" {
  type    = string
  default = ""
}

variable "service_address" {
  type    = string
  default = ""
}

variable "authorized_ip_ranges" {
  type    = list(string)
  default = ["0.0.0.0/0"]
}

variable "api_server_vnet_integration_enabled" {
  type    = bool
  default = false
}

variable "availability_zones" {
  type    = list(string)
  default = []
}

variable "nodepool_size" {
  type    = number
  default = 3
}

variable "nodepool_autoscaling_enabled" {
  type    = bool
  default = true
}

variable "nodepool_min_size" {
  type    = number
  default = 3
}

variable "nodepool_max_size" {
  type    = number
  default = 10
}

variable "vm_size" {
  type    = string
  default = "Standard_DS2_v2"
}

variable "k8s_version" {
  type    = string
  default = "1.36.1"
}

variable "jump_server_tenant_id" {
  type    = string
  default = ""
}

variable "jump_server_subscription_id" {
  type    = string
  default = ""
}

variable "jump_server_env" {
  type    = string
  default = ""
}

variable "jump_server_token_file_path" {
  type    = string
  default = "/var/run/secrets/federated-tokens/token-azure"
}

variable "shoot_tags" {
  description = "Customer-defined tags to apply to shoot (dataplane) resources"
  type        = map(string)
  default     = {}
}

variable "destroy_mode" {
  type    = bool
  default = false
}
