variable "aws_region" {
  default     = "us-east-1"
  description = "AWS region"
}

variable "environment" {
  description = "Available values:  dev, qa, prod."
  default     = "prod"
}

variable "application_family" {
  default = "vector"
}

# Notification settings
variable "notification_endpoints" {
  type        = string
  description = "Endpoints for alerts. Can be email, slack, pagerduty, etc"
  default     = "@slack-ecs-anywhere-alerts"
}

variable "escalation_notification_endpoints" {
  type        = string
  description = "Endpoints for escalation alerts. Can be email, slack, pagerduty, etc"
  default     = "@slack-ecs-anywhere-alerts"
}

# Memory utilization monitor settings
variable "memory_critical_number" {
  description = "Memory utilization percentage (per 5m) for critical status"
  default     = 95
}

variable "memory_critical_recovery_number" {
  description = "Memory utilization percentage (per 5m) for critical recovery"
  default     = 94
}

variable "memory_warning_number" {
  description = "Memory utilization percentage (per 5m) for warnings"
  default     = 91
}

variable "memory_warning_recovery_number" {
  description = "Memory utilization percentage (per 5m) for warning recovery"
  default     = 90
}

# CPU utilization monitor settings
variable "cpu_critical_number" {
  description = "CPU utilization percentage (per 5m) for critical status"
  default     = 90
}

variable "cpu_critical_recovery_number" {
  description = "CPU utilization percentage (per 5m) for critical recovery"
  default     = 85
}

variable "cpu_warning_number" {
  description = "CPU utilization percentage (per 5m) for warnings"
  default     = 80
}

variable "cpu_warning_recovery_number" {
  description = "CPU utilization percentage (per 5m) for warning recovery"
  default     = 75
}

# Disk space utilization monitor settings
variable "disk_space_critical_number" {
  description = "Disk space utilization percentage (per 5m) for critical status"
  default     = 90
}

variable "disk_space_critical_recovery_number" {
  description = "Disk space utilization percentage (per 5m) for critical recovery"
  default     = 85
}

variable "disk_space_warning_number" {
  description = "Disk space utilization percentage (per 5m) for warnings"
  default     = 80
}

variable "disk_space_warning_recovery_number" {
  description = "Disk space utilization percentage (per 5m) for warning recovery"
  default     = 75
}

# Cluster memory reservation monitor settings
variable "cluster_memory_reservation_critical_number" {
  description = "Cluster memory reservation percentage (per 5m) for critical status"
  default     = 95
}

variable "cluster_memory_reservation_critical_recovery_number" {
  description = "Cluster memory reservation percentage (per 5m) for critical recovery"
  default     = 94
}

variable "cluster_memory_reservation_warning_number" {
  description = "Cluster memory reservation percentage (per 5m) for warning status"
  default     = 91
}

variable "cluster_memory_reservation_warning_recovery_number" {
  description = "Cluster memory reservation percentage (per 5m) for warning recovery"
  default     = 90
}

# Cluster CPU reservation monitor settings
variable "cluster_cpu_reservation_critical_number" {
  description = "Cluster CPU reservation percentage (per 5m) for critical status"
  default     = 95
}

variable "cluster_cpu_reservation_critical_recovery_number" {
  description = "Cluster CPU reservation percentage (per 5m) for critical recovery"
  default     = 94
}

variable "cluster_cpu_reservation_warning_number" {
  description = "Cluster CPU reservation percentage (per 5m) for warning status"
  default     = 91
}

variable "cluster_cpu_reservation_warning_recovery_number" {
  description = "Cluster CPU reservation percentage (per 5m) for warning recovery"
  default     = 90
}

# ECS Agent service check monitor settings
variable "ecs_agent_service_check_critical_number" {
  description = "The number of consecutive checks required to trigger the ECS agent service check monitor"
  default     = 3
}

variable "ecs_agent_service_check_ok_number" {
  description = "The number of consecutive checks required to resolve the ECS agent service check monitor"
  default     = 1
}

locals {
  # List of names of ECS clusters to create
  ecs_cluster_names = [
    "${var.environment}-ecs-anywhere-avl",
    "${var.environment}-ecs-anywhere-ny",
  ]
}

locals {
  process_names = [
    "amazon-ecs-init",
    "amazon-ssm-agent",
    "dockerd",
    "ssm-agent-worker"
  ]

  ecs_clusters_process_monitor = merge([
    for cluster in local.ecs_cluster_names : {
      for process in local.process_names : "${process}_${cluster}" => {
        cluster = cluster
        process = process
      }
    }
  ]...)
}
