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

variable "backup_port" {
  description = "Port used for backups"
  default     = 6362
}

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

variable "application_family" {
  default = "devops"
}

variable "service_name" {
  description = "Name of service"
  default     = "neo4j-cluster"
}

variable "service_name_v5" {
  description = "Name of the v5 service"
  default     = "neo4j-5-cluster"
}

variable "efs_volume_container_path" {
  description = "Path inside container to mount EFS volume"
  default     = "/tmp"
}

# Backup settings
variable "backup_enabled" {
  default = true
}

variable "backup_aws_instance_type" {
  default = "m5.2xlarge"
}

variable "backup_root_volume_size" {
  default = 1000
}

variable "backup_enabled_metrics" {
  description = "Enabled metrics for ASG"
  type        = list(string)
  default = [
    "GroupMinSize",
    "GroupMaxSize",
    "GroupDesiredCapacity",
    "GroupInServiceInstances",
    "GroupPendingInstances",
    "GroupStandbyInstances",
    "GroupTerminatingInstances",
    "GroupTotalInstances",
  ]
}

variable "route53_hosted_zone" {
  description = "Route53 hosted zone"
  default     = "Z2RSKZ9M7TJ9Z"
}

variable "external_id" {
  description = "External ID for cross-account access"
  default     = "FB3oPIFg9VXtFurYDgPnSe9DspG1PZIU"
}

variable "neo4j_slack_channel" {
  description = "Slack channel for Neo4j notifications"
  default     = "@slack-neo4j-db"
}

variable "neo4j_user_secrets_manager" {
  description = "Secrets manager secrets for Neo4j initial user credentials"
  type        = list(string)
  default = [
    "NEO4J_USER",
    "NEO4J_PASSWORD",
  ]
}

variable "dependent_applications" {
  description = "List of dependent applications"
  default = [
    "content", "settings", "moneyhub", "podcast", "insights", "fansifter",
    "documents", "distribution-suite", "royalties", "collaborator-suite",
    "workstation", "oa", "abacus", "publishing"
  ]
}

variable "neo4j_session_errors_critical_number" {
  type        = number
  description = "Number of neo4j session errors that represent critical status"
  default     = "25000" # This number is just high enough to clear the noise floor and not notify during neo4j backups, which cause errors.
}

variable "neo4j_escalation_endpoints" {
  type        = string
  description = "Endpoints for escalation alerts. Can be email, slack, pagerduty, etc"
  default     = "@slack-neo4j-db @oncall-devops"
}

variable "dns_updater_secret_names" {
  default = ["NEO4J_PASSWORD", "NEO4J_USERNAME"]
  type    = set(string)
}

variable "dns_updater_lambda_name" {
  default = "lambda-neo4j-dns-update"
}

variable "dns_lambda_notification_endpoints" {
  type        = string
  description = "Endpoints for DNS updater Lambda. Can be email, slack, pagerduty, etc"
  default     = "@slack-neo4j-db"
}
