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-collector"
}

variable "application_family" {
  default = "data-platform"
}

variable "notification_endpoints" {
  description = "Endpoints for alerts. Can be email, slack, pagerduty, etc"
  default     = "@slack-monitoring @slack-kafka-data-highway-alerts @fumar@theorchard.com"
}

variable "escalation_notification_endpoints" {
  description = "Endpoints for escalations"
  default     = "@slack-kafka-data-highway-alerts"
}

variable "kdh_team_tag" {
  description = "Tag for the KDH team"
  default     = "kdh"
}

variable "team_name" {
  description = "KDH team name"
  default     = "kdh"
}

variable "secrets_manager_secret_names" {
  type = list(string)
  default = [
    "SNOWFLAKE_PASSWORD",
    "SNOWFLAKE_PRIVATE_KEY",
    "SNOWFLAKE_PRIVATE_KEY_PASSPHRASE",
    "AURA_CLIENT_ID",
    "AURA_CLIENT_SECRET",
    "AURA_ENDPOINT_URL",
  ]
}

locals {
  all_dashboard_metrics = {
    # taking a sum of metrics to see if there is a lag/sync failure causing one to increase.
    # some of the individual metrics are too small, so even a small increase can make it 10%
    "Projects" : {
      "notification_endpoints" : "@slack-kafka-data-highway-alerts",
      "warning" : 0.3,  # 30%
      "critical" : 0.5, # 50%
      "metrics" : join(
        " + ",
        formatlist("sum:%s{*}",
          [
            "snowflake.custom.ar_to_neo_sync.project_art_relations_only",
            "snowflake.custom.ar_to_neo_sync.project_neo4j_only",
            "snowflake.custom.ar_to_neo_sync.project_different_metadata",
        ])
      )
    },
    "Products" : {
      "notification_endpoints" : "@slack-kafka-data-highway-alerts",
      "warning" : 0.5,  # 50% since this deviates quiet often.
      "critical" : 0.7, # 70%
      "metrics" : join(
        " + ",
        formatlist("sum:%s{*}",
          [
            "snowflake.custom.ar_to_neo_sync.product_art_relations_only",
            "snowflake.custom.ar_to_neo_sync.product_neo4j_only",
            "snowflake.custom.ar_to_neo_sync.product_different_metadata",
        ])
      )
    },
    "Release Artists" : {
      "notification_endpoints" : "@slack-kafka-data-highway-alerts",
      "warning" : 0.25, # 25%
      "critical" : 0.5, # 50%
      "metrics" : join(
        " + ",
        formatlist("sum:%s{*}",
          [
            "snowflake.custom.ar_to_neo_sync.release_artist_art_relations_only",
            "snowflake.custom.ar_to_neo_sync.release_artist_neo4j_only",
            "snowflake.custom.ar_to_neo_sync.release_artist_different_metadata",
        ])
      )
    },
    "Participation for Release Artists" : {
      "notification_endpoints" : "@slack-kafka-data-highway-alerts",
      "warning" : 0.25, # 25%
      "critical" : 0.5, # 50%
      "metrics" : join(
        " + ",
        formatlist("sum:%s{*}",
          [
            "snowflake.custom.ar_to_neo_sync.release_artist_without_label_participation",
            "snowflake.custom.ar_to_neo_sync.label_participation_without_release_artist",
        ])
      )
    },
    "Tracks" : {
      "notification_endpoints" : "@slack-kafka-data-highway-alerts",
      "warning" : 0.25, # 25%
      "critical" : 0.5, # 50%
      "metrics" : join(
        " + ",
        formatlist("sum:%s{*}",
          [
            "snowflake.custom.ar_to_neo_sync.track_art_relations_only",
            "snowflake.custom.ar_to_neo_sync.track_neo4j_only",
            "snowflake.custom.ar_to_neo_sync.track_different_metadata",
        ])
      )
    },
    "ISRCs" : {
      "notification_endpoints" : "@slack-kafka-data-highway-alerts",
      "warning" : 0.5,  # 50% since this deviates quiet often.
      "critical" : 0.7, # 70%
      "metrics" : join(
        " + ",
        formatlist("sum:%s{*}",
          [
            "snowflake.custom.ar_to_neo_sync.isrc_art_relations_only",
            "snowflake.custom.ar_to_neo_sync.isrc_neo4j_only",
        ])
      )
    },
    "Track Artists" : {
      "notification_endpoints" : "@slack-kafka-data-highway-alerts",
      "warning" : 0.25, # 25%
      "critical" : 0.5, # 50%
      "metrics" : join(
        " + ",
        formatlist("sum:%s{*}",
          [
            "snowflake.custom.ar_to_neo_sync.track_artist_art_relations_only",
            "snowflake.custom.ar_to_neo_sync.track_artist_neo4j_only",
            "snowflake.custom.ar_to_neo_sync.track_artist_different_metadata",
        ])
      )
    },
    "Participant for Track Artists" : {
      "notification_endpoints" : "@slack-kafka-data-highway-alerts",
      "warning" : 0.25, # 25%
      "critical" : 0.5, # 50%
      "metrics" : join(
        " + ",
        formatlist("sum:%s{*}",
          [
            "snowflake.custom.ar_to_neo_sync.track_artist_without_label_participation",
            "snowflake.custom.ar_to_neo_sync.label_participation_without_track_artist",
        ])
      )
    },
    "Track Writers" : {
      "notification_endpoints" : "@slack-kafka-data-highway-alerts",
      "warning" : 0.25, # 25%
      "critical" : 0.5, # 50%
      "metrics" : join(
        " + ",
        formatlist("sum:%s{*}",
          [
            "snowflake.custom.ar_to_neo_sync.track_writer_art_relations_only",
            "snowflake.custom.ar_to_neo_sync.track_writer_neo4j_only",
            "snowflake.custom.ar_to_neo_sync.track_writer_different_metadata",
        ])
      )
    },
    "Participant for Track Writers" : {
      "notification_endpoints" : "@slack-kafka-data-highway-alerts",
      "warning" : 0.25, # 25%
      "critical" : 0.5, # 50%
      "metrics" : join(
        " + ",
        formatlist("sum:%s{*}",
          [
            "snowflake.custom.ar_to_neo_sync.track_writer_without_label_participation",
            "snowflake.custom.ar_to_neo_sync.label_participation_without_track_writer",
        ])
      )
    },
  }
}
