module "default_tags" {
  source             = "git@github.com:theorchard/terraform-default-tags.git//?ref=2.0.0"
  environment        = var.environment
  application_family = var.application_family
  service_name       = var.service_name
  team_name          = "sony-music-fans"
}

provider "aws" {
  region = var.aws_region

  default_tags {
    tags = module.default_tags.tags
  }
}

# Terraform backends cannot contain interpolations
terraform {
  backend "s3" {
    bucket  = "orcd-terraform-state"
    key     = "prod/sony-music-fans/terraform.tfstate"
    region  = "us-east-1"
    encrypt = "true"
  }
}

data "datadog_synthetics_locations" "sources" {}

resource "datadog_synthetics_test" "check_site_uptime" {
  for_each  = {for site in local.urls_to_check: site.name => site}
  name      = "${var.environment}-${var.service_name}-${each.value.name}-uptime"
  type      = "api"
  subtype   = "http"
  status    = "live"
  message   = lookup(each.value, "message", "Site is unavailable or experiencing issues. Notify: ${var.notification_endpoints}")
  locations = keys(data.datadog_synthetics_locations.sources.locations)
  tags      = ["env:${var.environment}", "service:${var.service_name}"]

  request_definition {
    method  = "GET"
    timeout = 10
    url     = each.value.url
  }
  assertion {
    type     = "statusCode"
    operator = "is"
    target   = each.value.status_code
  }

  options_list {
    tick_every = 900
    retry {
      count    = 2
      interval = 300
    }
    monitor_options {
      renotify_interval = 1800
    }
  }
}

module "multiple_secrets_with_same_settings" {
  source   = "git@github.com:theorchard/terraform-secrets-manager.git//?ref=1.5.1"
  for_each = toset(var.secrets_manager_secret_names)

  environment                    = var.environment
  service_name                   = var.service_name
  secret_name                    = each.value
  application_family             = var.application_family
  secret_recovery_window_in_days = 30
}

data "aws_secretsmanager_secret_version" "sony_music_fans_api_key" {
  secret_id = module.multiple_secrets_with_same_settings["SONY_MUSIC_FANS_API_KEY"].secret_arn

  depends_on = [module.multiple_secrets_with_same_settings]
}
