provider "aws" {
  region = var.aws_region
}

terraform {
  backend "s3" {
    bucket  = "orcd-terraform-state"
    encrypt = "true"
    key     = "prod/lambda/lambda-feed-status-notifierv2/terraform.tfstate"
    region  = "us-east-1"
  }
}

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
}

module "lambda_feed_status_notifierv2" {
  source = "git@github.com:theorchard/terraform-lambda.git?ref=2.11.1"

  application_family       = var.application_family
  environment              = var.environment
  datadog_advanced_enabled = var.datadog_advanced_enabled
  dlq_enabled              = var.dlq_enabled
  lambda_name              = var.lambda_name
  lambda_description       = "Takes alerts from Monty and sends them to Slack and Jira"
  lambda_function_environment_variables = {
    DD_API_KEY        = data.aws_secretsmanager_secret_version.datadog_api.secret_string
    DD_APP_KEY        = data.aws_secretsmanager_secret_version.datadog_app_key.secret_string
    ENVIRONMENT       = var.environment
    MONTY_BASE_URL    = var.monty_base_url
    SLACK_WEBHOOK_URL = var.slack_webhook_url
  }
  lambda_runtime           = var.lambda_runtime
  vpc_id                   = var.vpc_id
  vpc_subnet_ids           = var.vpc_subnet_ids
  use_container_image      = var.use_container_image
}

resource "aws_cloudwatch_event_rule" "lambda_feed_status_notifierv2_event_rule" {
  name = var.lambda_feed_status_notifierv2_event_rule_name
  description = "Monty-Check_At_10AM_EST"
  schedule_expression = var.event_bridge_schedule_expression
}

resource "aws_cloudwatch_event_target" "lambda_feed_status_notifierv2_target" {
  arn = module.lambda_feed_status_notifierv2.lambda_arn
  rule = aws_cloudwatch_event_rule.lambda_feed_status_notifierv2_event_rule.name
}

resource "aws_lambda_permission" "lambda_feed_status_notifierv2_allow_execution" {
  statement_id = var.lambda_feed_status_notifierv2_allow_execution_statement_id
  action = var.aws_lambda_permission_invoke_action
  function_name =module.lambda_feed_status_notifierv2.lambda_name
  principal = var.aws_lambda_permission_principal
  source_arn = aws_cloudwatch_event_rule.lambda_feed_status_notifierv2_event_rule.arn
}
