# General variables
variable "environment" {
  description = "Name of the environment, e.g. dev, qa, prod"
  default     = "dev"
}

variable "service_name" {
  description = "Service name, without environment prefix"
  default     = "ows-service"
}

variable "teams" {
  type        = set(string)
  description = "A set of Datadog Teams to associate the resources with"
  default     = []
}

variable "load_balancer_service_name" {
  description = "Load balancer name. May or may not be the same as var.service_name"
  default     = "ows-service"
}

variable "notification_endpoints" {
  description = "Endpoints for alerts. Can be email, slack, pagerdut, etc"
  default     = "@slack-monitoring"
}

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

# AWS variables
variable "aws_region" {
  description = "AWS region from which to pull metrics"
  default     = "us-east-1"
}

# Monitor variables
variable "service_5xx_monitor_enabled" {
  description = "Whether or not 5xx monitor is enabled"
  default     = true
}

variable "critical_number_5xx" {
  description = "Number of 5xx requests (per 5m) for critical alerts"
  default     = 20
}

variable "critical_recovery_number_5xx" {
  description = "Number of 5xx requests (per 5m) for critical recovery"
  default     = 15
}

variable "warning_number_5xx" {
  description = "Number of 5xx requests (per 5m) for warnings"
  default     = 10
}

variable "warning_recovery_number_5xx" {
  description = "Number of 5xx requests (per 5m) for warning recovery"
  default     = 5
}

variable "ok_number_5xx" {
  description = "Number of 5xx requests (per 5m) that are ok"
  default     = 2
}

variable "service_4xx_monitor_enabled" {
  description = "Whether or not 5xx monitor is enabled"
  default     = true
}

variable "critical_number_4xx" {
  description = "Number of 4xx requests (per 5m) for critical alerts"
  default     = 20
}

variable "critical_recovery_number_4xx" {
  description = "Number of 4xx requests (per 5m) for critical recovery"
  default     = 15
}

variable "warning_number_4xx" {
  description = "Number of 4xx requests (per 5m) for warnings"
  default     = 10
}

variable "warning_recovery_number_4xx" {
  description = "Number of 4xx requests (per 5m) for warning recovery"
  default     = 5
}

variable "ok_number_4xx" {
  description = "Number of 4xx requests (per 5m) that are ok"
  default     = 2
}

variable "healthy_tasks_monitor_enabled" {
  description = "Whether or not healthy tasks monitor is enabled"
  default     = true
}

variable "healthy_tasks_critical_number" {
  description = "Number of healthy_tasks for critical alerts"
  default     = 0.1
}

variable "healthy_tasks_critical_recovery_number" {
  description = "Number of healthy_tasks for critical recovery"
  default     = 1
}

variable "healthy_tasks_warning_number" {
  description = "Number of healthy_tasks for warnings"
  default     = 1
}

variable "healthy_tasks_warning_recovery_number" {
  description = "Number of healthy_tasks for warning recovery"
  default     = 2
}

variable "healthy_tasks_ok_number" {
  description = "Number of healthy_tasks that are ok"
  default     = 2
}

variable "service_cpu_monitor_enabled" {
  description = "Whether or not service cpu monitor is enabled"
  default     = true
}

variable "service_cpu_critical_number" {
  description = "CPU utilization percentage (per 5m) for critical alerts"
  default     = 90
}

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

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

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

variable "service_cpu_ok_number" {
  description = "CPU utilization percentage (per 5m) that are ok"
  default     = 70
}

locals {
  # Only team tags are supported for dashboards
  dashboard_tags = [for team in var.teams : "team:${team}"]

  tags = flatten([
    "env:${var.environment}",
    "environment:${var.environment}",
    "service:${var.service_name}",
    "service_name:${var.service_name}",
    [for team in var.teams : "team:${team}"],
  ])
}
