provider "aws" {
  region = var.aws_region
}

locals {
  encoding_lag_threshold_seconds = 300
}

data "aws_secretsmanager_secret" "datadog_api" {
  name = "${var.environment}/datadog/DD_API_KEY"
}

data "aws_secretsmanager_secret_version" "datadog_api" {
  secret_id = data.aws_secretsmanager_secret.datadog_api.id
}

data "aws_secretsmanager_secret" "datadog_app_key" {
  name = "${var.environment}/datadog/DD_APP_KEY"
}

data "aws_secretsmanager_secret_version" "datadog_app_key" {
  secret_id = data.aws_secretsmanager_secret.datadog_app_key.id
}

provider "datadog" {
  api_key = data.aws_secretsmanager_secret_version.datadog_api.secret_string
  app_key = data.aws_secretsmanager_secret_version.datadog_app_key.secret_string
}

terraform {
  backend "s3" {
    bucket  = "orcd-terraform-state"
    key     = "prod/ows-assets/datadog/terraform.tfstate"
    region  = "us-east-1"
    encrypt = true
  }
}

data "datadog_role" "datadog_admin_role" {
  filter = "Datadog Admin Role"
}


resource "datadog_monitor" "prod-asset-encoding-lag-monitor" {
  name    = "${var.environment}-ows_assets_encoding_lag_snowflake_monitor"
  type    = "metric alert"
  message = "Lag noticed between last asset uploaded and last asset encoded. Notify: ${var.notification_endpoints}"
  query   = "max(last_5m):max:snowflake.custom.ows_assets_reporting.time_difference_seconds{*} > ${local.encoding_lag_threshold_seconds}"

  notify_no_data      = false
  notify_audit        = false
  renotify_interval   = 60
  timeout_h           = 0
  require_full_window = false
  no_data_timeframe   = 0
  restricted_roles    = [data.datadog_role.datadog_admin_role.id]

  monitor_thresholds {
    critical = local.encoding_lag_threshold_seconds
  }

  tags = [
    "environment:${var.environment}",
    "application_family:${var.application_family}",
    "service_name:${var.service_name}",
    "terraformed:true",
  ]
}
