variable "application_family" {
  type    = string
  default = "devops"
}

variable "team_name" {
  type    = string
  default = "devops"
}

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

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

variable "service_name" {
  default = "datadog-forwarder"
}

variable "lambda_memory_size" {
  default = 1024
}

variable "lambda_timeout" {
  default = 120
}

variable "lambda_reserved_concurrent_executions" {
  default = 250
}

variable "lambda_environment_variables_merge" {
  description = "Add new or update existing environment variables for the lambda function."
  type        = map(string)
  default     = {}
}

variable "lambda_cloudwatch_logs_integration_enabled" {
  description = "Allow triggers from cloudwatch logs."
  default     = true
}

variable "lambda_cloudwatch_events_integration_enabled" {
  description = "Allow triggers from cloudwatch events."
  default     = true
}

variable "lambda_s3_integration_enabled" {
  description = "Allow triggers from S3."
  default     = true
}

variable "lambda_sns_integration_enabled" {
  description = "Allow triggers from SNS."
  default     = true
}

variable "tags_caching_enabled" {
  description = "Use AWS resources tags caching. Requires an S3 bucket to store the cache."
  default     = true
}

variable "tags_caching_bucket" {
  description = "Tags caching storage bucket name."
  default     = "orcd-datadog-forwarder"
}

variable "tags_caching_ttl_seconds" {
  description = "Tags caching time in seconds."
  default     = 300
}

variable "s3_bucket_list" {
  description = "Allow reading objects from the next S3 buckets"
  default = [
    "orch-elb-logs",
    "aws-waf-logs-prod-tf-orcd-bucket",
    "prod-orcd-cloudfront-logs",
    "aws-logs-437795906767-us-east-1",
  ]
}

locals {
  lambda_environment_variables = merge(
    {
      "DD_SITE"                      = "datadoghq.com"
      "DD_API_KEY_SECRET_ARN"        = "arn:aws:secretsmanager:${var.aws_region}:${data.aws_caller_identity.current.account_id}:secret:${var.environment}/datadog/DD_API_KEY"
      "DD_FETCH_LAMBDA_TAGS"         = var.tags_caching_enabled ? "true" : "false"
      "DD_S3_BUCKET_NAME"            = var.tags_caching_enabled ? module.datadog_forwarder_tags_cache_s3_bucket.s3_bucket_name_output : null
      "DD_TAGS_CACHE_TTL_SECONDS"    = var.tags_caching_enabled ? var.tags_caching_ttl_seconds : null
      "DD_ENHANCED_METRICS"          = "false"
      "DD_USE_VPC"                   = "true"
      "DD_FETCH_STEP_FUNCTIONS_TAGS" = "true"
    },
    var.lambda_environment_variables_merge
  )

  lambda_policy_attachments = flatten([
    aws_iam_policy.lambda_secretsmanager_override_policy.arn,
    aws_iam_policy.lambda_tags_policy[*].arn,
    aws_iam_policy.lambda_s3_policy[*].arn
  ])
}
