# Variable definitions for Terraform configuration

variable "environment" {
  description = "Environment (prod, dev, test, staging)"
  type        = string
  default     = "prod"
  validation {
    condition     = contains(["prod", "dev", "test", "staging"], var.environment)
    error_message = "Environment must be one of: prod, dev, test, staging"
  }
}

variable "resource_group_name" {
  description = "Name of the Azure Resource Group (legacy single RG deployment). If empty and use_well_architected is false, will use default naming."
  type        = string
  default     = ""
}

variable "location" {
  description = "Azure region for resources"
  type        = string
  default     = "westeurope"
}

variable "cluster_name" {
  description = "Name of the AKS cluster"
  type        = string
  default     = "defi-oracle-aks"
}

variable "kubernetes_version" {
  description = "Kubernetes version"
  type        = string
  default     = "1.28"
}

variable "node_count" {
  description = "Number of nodes per node pool"
  type        = map(number)
  default = {
    system     = 3
    validators = 4
    sentries   = 3
    rpc        = 3
  }
}

variable "vm_size" {
  description = "VM size for node pools"
  type        = map(string)
  default = {
    system     = "Standard_D2s_v3"
    validators = "Standard_D4s_v3"
    sentries   = "Standard_D4s_v3"
    rpc        = "Standard_D8s_v3"
  }
}

variable "enable_multi_region" {
  description = "Enable multi-region deployment using different VM families per region"
  type        = bool
  default     = false
}

# Legacy/experimental multi-region (Dv2/Dsv6) deployment.
# NOTE: The active, quota-safe 37-region Dplsv6 design uses `enable_multi_region`
# together with `multi-region-global.tf`. This legacy flag is kept only for
# historical/testing purposes and should remain false in production.
variable "enable_multi_region_legacy" {
  description = "Enable legacy multi-region deployment defined in multi-region.tf (Dv2/Dsv6 experiment)"
  type        = bool
  default     = false
}

variable "use_well_architected" {
  description = "Use Well-Architected Framework structure (multi-resource-group)"
  type        = bool
  default     = false
}

variable "network_resource_group_name" {
  description = "Name of the network resource group (Well-Architected Framework)"
  type        = string
  default     = ""
}

variable "compute_resource_group_name" {
  description = "Name of the compute resource group (Well-Architected Framework)"
  type        = string
  default     = ""
}

variable "storage_resource_group_name" {
  description = "Name of the storage resource group (Well-Architected Framework)"
  type        = string
  default     = ""
}

variable "security_resource_group_name" {
  description = "Name of the security resource group (Well-Architected Framework)"
  type        = string
  default     = ""
}

variable "key_vault_name" {
  description = "Name of the Key Vault"
  type        = string
  default     = ""
}

variable "tags" {
  description = "Tags to apply to resources"
  type        = map(string)
  default = {
    Environment = "production"
    Project     = "DeFi Oracle Meta Mainnet"
    ChainID     = "138"
    ManagedBy   = "Terraform"
    CostCenter  = "Blockchain"
    Owner       = "DevOps Team"
  }
}
